cfg80211: comprehensively check station changes
The station change API isn't being checked properly before drivers are called, and as a result it is difficult to see what should be allowed and what not. In order to comprehensively check the API parameters parse everything first, and then have the driver call a function (cfg80211_check_station_change()) with the additionally information about the kind of station that is being changed; this allows the function to make better decisions than the old code could. While at it, also add a few checks, particularly in mesh and clarify the TDLS station lifetime in documentation. To be able to reduce a few checks, ignore any flag set bits when the mask isn't set, they shouldn't be applied then. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
@@ -36,7 +36,21 @@
|
||||
* The station is still assumed to belong to the AP interface it was added
|
||||
* to.
|
||||
*
|
||||
* TODO: need more info?
|
||||
* Station handling varies per interface type and depending on the driver's
|
||||
* capabilities.
|
||||
*
|
||||
* For drivers supporting TDLS with external setup (WIPHY_FLAG_SUPPORTS_TDLS
|
||||
* and WIPHY_FLAG_TDLS_EXTERNAL_SETUP), the station lifetime is as follows:
|
||||
* - a setup station entry is added, not yet authorized, without any rate
|
||||
* or capability information, this just exists to avoid race conditions
|
||||
* - when the TDLS setup is done, a single NL80211_CMD_SET_STATION is valid
|
||||
* to add rate and capability information to the station and at the same
|
||||
* time mark it authorized.
|
||||
* - %NL80211_TDLS_ENABLE_LINK is then used
|
||||
* - after this, the only valid operation is to remove it by tearing down
|
||||
* the TDLS link (%NL80211_TDLS_DISABLE_LINK)
|
||||
*
|
||||
* TODO: need more info for other interface types
|
||||
*/
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user