aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/net/cfg80211.h117
-rw-r--r--include/net/mac80211.h4
2 files changed, 90 insertions, 31 deletions
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 0c3c214772e7..22ab9d88cf4a 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -37,6 +37,7 @@
37 * 37 *
38 * @IEEE80211_BAND_2GHZ: 2.4GHz ISM band 38 * @IEEE80211_BAND_2GHZ: 2.4GHz ISM band
39 * @IEEE80211_BAND_5GHZ: around 5GHz band (4.9-5.7) 39 * @IEEE80211_BAND_5GHZ: around 5GHz band (4.9-5.7)
40 * @IEEE80211_NUM_BANDS: number of defined bands
40 */ 41 */
41enum ieee80211_band { 42enum ieee80211_band {
42 IEEE80211_BAND_2GHZ = NL80211_BAND_2GHZ, 43 IEEE80211_BAND_2GHZ = NL80211_BAND_2GHZ,
@@ -188,6 +189,7 @@ struct ieee80211_sta_ht_cap {
188 * in this band. Must be sorted to give a valid "supported 189 * in this band. Must be sorted to give a valid "supported
189 * rates" IE, i.e. CCK rates first, then OFDM. 190 * rates" IE, i.e. CCK rates first, then OFDM.
190 * @n_bitrates: Number of bitrates in @bitrates 191 * @n_bitrates: Number of bitrates in @bitrates
192 * @ht_cap: HT capabilities in this band
191 */ 193 */
192struct ieee80211_supported_band { 194struct ieee80211_supported_band {
193 struct ieee80211_channel *channels; 195 struct ieee80211_channel *channels;
@@ -225,6 +227,7 @@ struct vif_params {
225 * @seq: sequence counter (IV/PN) for TKIP and CCMP keys, only used 227 * @seq: sequence counter (IV/PN) for TKIP and CCMP keys, only used
226 * with the get_key() callback, must be in little endian, 228 * with the get_key() callback, must be in little endian,
227 * length given by @seq_len. 229 * length given by @seq_len.
230 * @seq_len: length of @seq.
228 */ 231 */
229struct key_params { 232struct key_params {
230 u8 *key; 233 u8 *key;
@@ -237,6 +240,8 @@ struct key_params {
237/** 240/**
238 * enum survey_info_flags - survey information flags 241 * enum survey_info_flags - survey information flags
239 * 242 *
243 * @SURVEY_INFO_NOISE_DBM: noise (in dBm) was filled in
244 *
240 * Used by the driver to indicate which info in &struct survey_info 245 * Used by the driver to indicate which info in &struct survey_info
241 * it has filled in during the get_survey(). 246 * it has filled in during the get_survey().
242 */ 247 */
@@ -247,13 +252,13 @@ enum survey_info_flags {
247/** 252/**
248 * struct survey_info - channel survey response 253 * struct survey_info - channel survey response
249 * 254 *
250 * Used by dump_survey() to report back per-channel survey information.
251 *
252 * @channel: the channel this survey record reports, mandatory 255 * @channel: the channel this survey record reports, mandatory
253 * @filled: bitflag of flags from &enum survey_info_flags 256 * @filled: bitflag of flags from &enum survey_info_flags
254 * @noise: channel noise in dBm. This and all following fields are 257 * @noise: channel noise in dBm. This and all following fields are
255 * optional 258 * optional
256 * 259 *
260 * Used by dump_survey() to report back per-channel survey information.
261 *
257 * This structure can later be expanded with things like 262 * This structure can later be expanded with things like
258 * channel duty cycle etc. 263 * channel duty cycle etc.
259 */ 264 */
@@ -288,7 +293,7 @@ struct beacon_parameters {
288 * 293 *
289 * @PLINK_ACTION_INVALID: action 0 is reserved 294 * @PLINK_ACTION_INVALID: action 0 is reserved
290 * @PLINK_ACTION_OPEN: start mesh peer link establishment 295 * @PLINK_ACTION_OPEN: start mesh peer link establishment
291 * @PLINK_ACTION_BLOCL: block traffic from this mesh peer 296 * @PLINK_ACTION_BLOCK: block traffic from this mesh peer
292 */ 297 */
293enum plink_actions { 298enum plink_actions {
294 PLINK_ACTION_INVALID, 299 PLINK_ACTION_INVALID,
@@ -311,6 +316,8 @@ enum plink_actions {
311 * (bitmask of BIT(NL80211_STA_FLAG_...)) 316 * (bitmask of BIT(NL80211_STA_FLAG_...))
312 * @listen_interval: listen interval or -1 for no change 317 * @listen_interval: listen interval or -1 for no change
313 * @aid: AID or zero for no change 318 * @aid: AID or zero for no change
319 * @plink_action: plink action to take
320 * @ht_capa: HT capabilities of station
314 */ 321 */
315struct station_parameters { 322struct station_parameters {
316 u8 *supported_rates; 323 u8 *supported_rates;
@@ -448,13 +455,13 @@ enum monitor_flags {
448 * Used by the driver to indicate which info in &struct mpath_info it has filled 455 * Used by the driver to indicate which info in &struct mpath_info it has filled
449 * in during get_station() or dump_station(). 456 * in during get_station() or dump_station().
450 * 457 *
451 * MPATH_INFO_FRAME_QLEN: @frame_qlen filled 458 * @MPATH_INFO_FRAME_QLEN: @frame_qlen filled
452 * MPATH_INFO_SN: @sn filled 459 * @MPATH_INFO_SN: @sn filled
453 * MPATH_INFO_METRIC: @metric filled 460 * @MPATH_INFO_METRIC: @metric filled
454 * MPATH_INFO_EXPTIME: @exptime filled 461 * @MPATH_INFO_EXPTIME: @exptime filled
455 * MPATH_INFO_DISCOVERY_TIMEOUT: @discovery_timeout filled 462 * @MPATH_INFO_DISCOVERY_TIMEOUT: @discovery_timeout filled
456 * MPATH_INFO_DISCOVERY_RETRIES: @discovery_retries filled 463 * @MPATH_INFO_DISCOVERY_RETRIES: @discovery_retries filled
457 * MPATH_INFO_FLAGS: @flags filled 464 * @MPATH_INFO_FLAGS: @flags filled
458 */ 465 */
459enum mpath_info_flags { 466enum mpath_info_flags {
460 MPATH_INFO_FRAME_QLEN = BIT(0), 467 MPATH_INFO_FRAME_QLEN = BIT(0),
@@ -587,6 +594,7 @@ struct cfg80211_ssid {
587 * @ie_len: length of ie in octets 594 * @ie_len: length of ie in octets
588 * @wiphy: the wiphy this was for 595 * @wiphy: the wiphy this was for
589 * @dev: the interface 596 * @dev: the interface
597 * @aborted: (internal) scan request was notified as aborted
590 */ 598 */
591struct cfg80211_scan_request { 599struct cfg80211_scan_request {
592 struct cfg80211_ssid *ssids; 600 struct cfg80211_ssid *ssids;
@@ -623,6 +631,7 @@ enum cfg80211_signal_type {
623 * This structure describes a BSS (which may also be a mesh network) 631 * This structure describes a BSS (which may also be a mesh network)
624 * for use in scan results and similar. 632 * for use in scan results and similar.
625 * 633 *
634 * @channel: channel this BSS is on
626 * @bssid: BSSID of the BSS 635 * @bssid: BSSID of the BSS
627 * @tsf: timestamp of last received update 636 * @tsf: timestamp of last received update
628 * @beacon_interval: the beacon interval as from the frame 637 * @beacon_interval: the beacon interval as from the frame
@@ -826,8 +835,8 @@ struct cfg80211_ibss_params {
826 * @ssid: SSID 835 * @ssid: SSID
827 * @ssid_len: Length of ssid in octets 836 * @ssid_len: Length of ssid in octets
828 * @auth_type: Authentication type (algorithm) 837 * @auth_type: Authentication type (algorithm)
829 * @assoc_ie: IEs for association request 838 * @ie: IEs for association request
830 * @assoc_ie_len: Length of assoc_ie in octets 839 * @ie_len: Length of assoc_ie in octets
831 * @privacy: indicates whether privacy-enabled APs should be used 840 * @privacy: indicates whether privacy-enabled APs should be used
832 * @crypto: crypto settings 841 * @crypto: crypto settings
833 * @key_len: length of WEP key for shared key authentication 842 * @key_len: length of WEP key for shared key authentication
@@ -850,10 +859,11 @@ struct cfg80211_connect_params {
850 859
851/** 860/**
852 * enum wiphy_params_flags - set_wiphy_params bitfield values 861 * enum wiphy_params_flags - set_wiphy_params bitfield values
853 * WIPHY_PARAM_RETRY_SHORT: wiphy->retry_short has changed 862 * @WIPHY_PARAM_RETRY_SHORT: wiphy->retry_short has changed
854 * WIPHY_PARAM_RETRY_LONG: wiphy->retry_long has changed 863 * @WIPHY_PARAM_RETRY_LONG: wiphy->retry_long has changed
855 * WIPHY_PARAM_FRAG_THRESHOLD: wiphy->frag_threshold has changed 864 * @WIPHY_PARAM_FRAG_THRESHOLD: wiphy->frag_threshold has changed
856 * WIPHY_PARAM_RTS_THRESHOLD: wiphy->rts_threshold has changed 865 * @WIPHY_PARAM_RTS_THRESHOLD: wiphy->rts_threshold has changed
866 * @WIPHY_PARAM_COVERAGE_CLASS: coverage class changed
857 */ 867 */
858enum wiphy_params_flags { 868enum wiphy_params_flags {
859 WIPHY_PARAM_RETRY_SHORT = 1 << 0, 869 WIPHY_PARAM_RETRY_SHORT = 1 << 0,
@@ -949,10 +959,16 @@ struct cfg80211_pmksa {
949 * @del_beacon: Remove beacon configuration and stop sending the beacon. 959 * @del_beacon: Remove beacon configuration and stop sending the beacon.
950 * 960 *
951 * @add_station: Add a new station. 961 * @add_station: Add a new station.
952 *
953 * @del_station: Remove a station; @mac may be NULL to remove all stations. 962 * @del_station: Remove a station; @mac may be NULL to remove all stations.
954 *
955 * @change_station: Modify a given station. 963 * @change_station: Modify a given station.
964 * @get_station: get station information for the station identified by @mac
965 * @dump_station: dump station callback -- resume dump at index @idx
966 *
967 * @add_mpath: add a fixed mesh path
968 * @del_mpath: delete a given mesh path
969 * @change_mpath: change a given mesh path
970 * @get_mpath: get a mesh path for the given parameters
971 * @dump_mpath: dump mesh path callback -- resume dump at index @idx
956 * 972 *
957 * @get_mesh_params: Put the current mesh parameters into *params 973 * @get_mesh_params: Put the current mesh parameters into *params
958 * 974 *
@@ -960,8 +976,6 @@ struct cfg80211_pmksa {
960 * The mask is a bitfield which tells us which parameters to 976 * The mask is a bitfield which tells us which parameters to
961 * set, and which to leave alone. 977 * set, and which to leave alone.
962 * 978 *
963 * @set_mesh_cfg: set mesh parameters (by now, just mesh id)
964 *
965 * @change_bss: Modify parameters for a given BSS. 979 * @change_bss: Modify parameters for a given BSS.
966 * 980 *
967 * @set_txq_params: Set TX queue parameters 981 * @set_txq_params: Set TX queue parameters
@@ -1002,6 +1016,8 @@ struct cfg80211_pmksa {
1002 * @get_tx_power: store the current TX power into the dbm variable; 1016 * @get_tx_power: store the current TX power into the dbm variable;
1003 * return 0 if successful 1017 * return 0 if successful
1004 * 1018 *
1019 * @set_wds_peer: set the WDS peer for a WDS interface
1020 *
1005 * @rfkill_poll: polls the hw rfkill line, use cfg80211 reporting 1021 * @rfkill_poll: polls the hw rfkill line, use cfg80211 reporting
1006 * functions to adjust rfkill hw state 1022 * functions to adjust rfkill hw state
1007 * 1023 *
@@ -1019,6 +1035,8 @@ struct cfg80211_pmksa {
1019 * 1035 *
1020 * @testmode_cmd: run a test mode command 1036 * @testmode_cmd: run a test mode command
1021 * 1037 *
1038 * @set_bitrate_mask: set the bitrate mask configuration
1039 *
1022 * @set_pmksa: Cache a PMKID for a BSSID. This is mostly useful for fullmac 1040 * @set_pmksa: Cache a PMKID for a BSSID. This is mostly useful for fullmac
1023 * devices running firmwares capable of generating the (re) association 1041 * devices running firmwares capable of generating the (re) association
1024 * RSN IE. It allows for faster roaming between WPA2 BSSIDs. 1042 * RSN IE. It allows for faster roaming between WPA2 BSSIDs.
@@ -1231,8 +1249,6 @@ struct mac_address {
1231 1249
1232/** 1250/**
1233 * struct wiphy - wireless hardware description 1251 * struct wiphy - wireless hardware description
1234 * @idx: the wiphy index assigned to this item
1235 * @class_dev: the class device representing /sys/class/ieee80211/<wiphy-name>
1236 * @reg_notifier: the driver's regulatory notification callback 1252 * @reg_notifier: the driver's regulatory notification callback
1237 * @regd: the driver's regulatory domain, if one was requested via 1253 * @regd: the driver's regulatory domain, if one was requested via
1238 * the regulatory_hint() API. This can be used by the driver 1254 * the regulatory_hint() API. This can be used by the driver
@@ -1246,7 +1262,7 @@ struct mac_address {
1246 * @frag_threshold: Fragmentation threshold (dot11FragmentationThreshold); 1262 * @frag_threshold: Fragmentation threshold (dot11FragmentationThreshold);
1247 * -1 = fragmentation disabled, only odd values >= 256 used 1263 * -1 = fragmentation disabled, only odd values >= 256 used
1248 * @rts_threshold: RTS threshold (dot11RTSThreshold); -1 = RTS/CTS disabled 1264 * @rts_threshold: RTS threshold (dot11RTSThreshold); -1 = RTS/CTS disabled
1249 * @net: the network namespace this wiphy currently lives in 1265 * @_net: the network namespace this wiphy currently lives in
1250 * @perm_addr: permanent MAC address of this device 1266 * @perm_addr: permanent MAC address of this device
1251 * @addr_mask: If the device supports multiple MAC addresses by masking, 1267 * @addr_mask: If the device supports multiple MAC addresses by masking,
1252 * set this to a mask with variable bits set to 1, e.g. if the last 1268 * set this to a mask with variable bits set to 1, e.g. if the last
@@ -1259,6 +1275,28 @@ struct mac_address {
1259 * by default for perm_addr. In this case, the mask should be set to 1275 * by default for perm_addr. In this case, the mask should be set to
1260 * all-zeroes. In this case it is assumed that the device can handle 1276 * all-zeroes. In this case it is assumed that the device can handle
1261 * the same number of arbitrary MAC addresses. 1277 * the same number of arbitrary MAC addresses.
1278 * @debugfsdir: debugfs directory used for this wiphy, will be renamed
1279 * automatically on wiphy renames
1280 * @dev: (virtual) struct device for this wiphy
1281 * @wext: wireless extension handlers
1282 * @priv: driver private data (sized according to wiphy_new() parameter)
1283 * @interface_modes: bitmask of interfaces types valid for this wiphy,
1284 * must be set by driver
1285 * @flags: wiphy flags, see &enum wiphy_flags
1286 * @bss_priv_size: each BSS struct has private data allocated with it,
1287 * this variable determines its size
1288 * @max_scan_ssids: maximum number of SSIDs the device can scan for in
1289 * any given scan
1290 * @max_scan_ie_len: maximum length of user-controlled IEs device can
1291 * add to probe request frames transmitted during a scan, must not
1292 * include fixed IEs like supported rates
1293 * @coverage_class: current coverage class
1294 * @fw_version: firmware version for ethtool reporting
1295 * @hw_version: hardware version for ethtool reporting
1296 * @max_num_pmkids: maximum number of PMKIDs supported by device
1297 * @privid: a pointer that drivers can use to identify if an arbitrary
1298 * wiphy is theirs, e.g. in global notifiers
1299 * @bands: information about bands/channels supported by this device
1262 */ 1300 */
1263struct wiphy { 1301struct wiphy {
1264 /* assign these fields before you register the wiphy */ 1302 /* assign these fields before you register the wiphy */
@@ -1472,13 +1510,14 @@ struct cfg80211_cached_keys;
1472 * @ssid: (private) Used by the internal configuration code 1510 * @ssid: (private) Used by the internal configuration code
1473 * @ssid_len: (private) Used by the internal configuration code 1511 * @ssid_len: (private) Used by the internal configuration code
1474 * @wext: (private) Used by the internal wireless extensions compat code 1512 * @wext: (private) Used by the internal wireless extensions compat code
1475 * @wext_bssid: (private) Used by the internal wireless extensions compat code
1476 * @use_4addr: indicates 4addr mode is used on this interface, must be 1513 * @use_4addr: indicates 4addr mode is used on this interface, must be
1477 * set by driver (if supported) on add_interface BEFORE registering the 1514 * set by driver (if supported) on add_interface BEFORE registering the
1478 * netdev and may otherwise be used by driver read-only, will be update 1515 * netdev and may otherwise be used by driver read-only, will be update
1479 * by cfg80211 on change_interface 1516 * by cfg80211 on change_interface
1480 * @action_registrations: list of registrations for action frames 1517 * @action_registrations: list of registrations for action frames
1481 * @action_registrations_lock: lock for the list 1518 * @action_registrations_lock: lock for the list
1519 * @mtx: mutex used to lock data in this struct
1520 * @cleanup_work: work struct used for cleanup that can't be done directly
1482 */ 1521 */
1483struct wireless_dev { 1522struct wireless_dev {
1484 struct wiphy *wiphy; 1523 struct wiphy *wiphy;
@@ -1552,11 +1591,13 @@ static inline void *wdev_priv(struct wireless_dev *wdev)
1552 1591
1553/** 1592/**
1554 * ieee80211_channel_to_frequency - convert channel number to frequency 1593 * ieee80211_channel_to_frequency - convert channel number to frequency
1594 * @chan: channel number
1555 */ 1595 */
1556extern int ieee80211_channel_to_frequency(int chan); 1596extern int ieee80211_channel_to_frequency(int chan);
1557 1597
1558/** 1598/**
1559 * ieee80211_frequency_to_channel - convert frequency to channel number 1599 * ieee80211_frequency_to_channel - convert frequency to channel number
1600 * @freq: center frequency
1560 */ 1601 */
1561extern int ieee80211_frequency_to_channel(int freq); 1602extern int ieee80211_frequency_to_channel(int freq);
1562 1603
@@ -1571,6 +1612,8 @@ extern struct ieee80211_channel *__ieee80211_get_channel(struct wiphy *wiphy,
1571 int freq); 1612 int freq);
1572/** 1613/**
1573 * ieee80211_get_channel - get channel struct from wiphy for specified frequency 1614 * ieee80211_get_channel - get channel struct from wiphy for specified frequency
1615 * @wiphy: the struct wiphy to get the channel for
1616 * @freq: the center frequency of the channel
1574 */ 1617 */
1575static inline struct ieee80211_channel * 1618static inline struct ieee80211_channel *
1576ieee80211_get_channel(struct wiphy *wiphy, int freq) 1619ieee80211_get_channel(struct wiphy *wiphy, int freq)
@@ -1631,9 +1674,6 @@ struct ieee80211_radiotap_vendor_namespaces {
1631 * @is_radiotap_ns: indicates whether the current namespace is the default 1674 * @is_radiotap_ns: indicates whether the current namespace is the default
1632 * radiotap namespace or not 1675 * radiotap namespace or not
1633 * 1676 *
1634 * @overrides: override standard radiotap fields
1635 * @n_overrides: number of overrides
1636 *
1637 * @_rtheader: pointer to the radiotap header we are walking through 1677 * @_rtheader: pointer to the radiotap header we are walking through
1638 * @_max_length: length of radiotap header in cpu byte ordering 1678 * @_max_length: length of radiotap header in cpu byte ordering
1639 * @_arg_index: next argument index 1679 * @_arg_index: next argument index
@@ -1949,10 +1989,12 @@ int cfg80211_wext_giwap(struct net_device *dev,
1949void cfg80211_scan_done(struct cfg80211_scan_request *request, bool aborted); 1989void cfg80211_scan_done(struct cfg80211_scan_request *request, bool aborted);
1950 1990
1951/** 1991/**
1952 * cfg80211_inform_bss - inform cfg80211 of a new BSS 1992 * cfg80211_inform_bss_frame - inform cfg80211 of a received BSS frame
1953 * 1993 *
1954 * @wiphy: the wiphy reporting the BSS 1994 * @wiphy: the wiphy reporting the BSS
1955 * @bss: the found BSS 1995 * @channel: The channel the frame was received on
1996 * @mgmt: the management frame (probe response or beacon)
1997 * @len: length of the management frame
1956 * @signal: the signal strength, type depends on the wiphy's signal_type 1998 * @signal: the signal strength, type depends on the wiphy's signal_type
1957 * @gfp: context flags 1999 * @gfp: context flags
1958 * 2000 *
@@ -1965,6 +2007,23 @@ cfg80211_inform_bss_frame(struct wiphy *wiphy,
1965 struct ieee80211_mgmt *mgmt, size_t len, 2007 struct ieee80211_mgmt *mgmt, size_t len,
1966 s32 signal, gfp_t gfp); 2008 s32 signal, gfp_t gfp);
1967 2009
2010/**
2011 * cfg80211_inform_bss - inform cfg80211 of a new BSS
2012 *
2013 * @wiphy: the wiphy reporting the BSS
2014 * @channel: The channel the frame was received on
2015 * @bssid: the BSSID of the BSS
2016 * @timestamp: the TSF timestamp sent by the peer
2017 * @capability: the capability field sent by the peer
2018 * @beacon_interval: the beacon interval announced by the peer
2019 * @ie: additional IEs sent by the peer
2020 * @ielen: length of the additional IEs
2021 * @signal: the signal strength, type depends on the wiphy's signal_type
2022 * @gfp: context flags
2023 *
2024 * This informs cfg80211 that BSS information was found and
2025 * the BSS should be updated/added.
2026 */
1968struct cfg80211_bss* 2027struct cfg80211_bss*
1969cfg80211_inform_bss(struct wiphy *wiphy, 2028cfg80211_inform_bss(struct wiphy *wiphy,
1970 struct ieee80211_channel *channel, 2029 struct ieee80211_channel *channel,
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index e3c1d4794003..abb3b1a9ddc9 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -313,9 +313,10 @@ enum mac80211_tx_control_flags {
313 IEEE80211_TX_INTFL_NL80211_FRAME_TX = BIT(21), 313 IEEE80211_TX_INTFL_NL80211_FRAME_TX = BIT(21),
314 IEEE80211_TX_CTL_LDPC = BIT(22), 314 IEEE80211_TX_CTL_LDPC = BIT(22),
315 IEEE80211_TX_CTL_STBC = BIT(23) | BIT(24), 315 IEEE80211_TX_CTL_STBC = BIT(23) | BIT(24),
316#define IEEE80211_TX_CTL_STBC_SHIFT 23
317}; 316};
318 317
318#define IEEE80211_TX_CTL_STBC_SHIFT 23
319
319/** 320/**
320 * enum mac80211_rate_control_flags - per-rate flags set by the 321 * enum mac80211_rate_control_flags - per-rate flags set by the
321 * Rate Control algorithm. 322 * Rate Control algorithm.
@@ -813,7 +814,6 @@ enum ieee80211_key_flags {
813 * encrypted in hardware. 814 * encrypted in hardware.
814 * @alg: The key algorithm. 815 * @alg: The key algorithm.
815 * @flags: key flags, see &enum ieee80211_key_flags. 816 * @flags: key flags, see &enum ieee80211_key_flags.
816 * @ap_addr: AP's MAC address
817 * @keyidx: the key index (0-3) 817 * @keyidx: the key index (0-3)
818 * @keylen: key material length 818 * @keylen: key material length
819 * @key: key material. For ALG_TKIP the key is encoded as a 256-bit (32 byte) 819 * @key: key material. For ALG_TKIP the key is encoded as a 256-bit (32 byte)