aboutsummaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2010-06-11 14:34:06 -0400
committerDavid S. Miller <davem@davemloft.net>2010-06-11 14:34:06 -0400
commit14599f1e341ee219abdd15f4eee5872d6f2d29f1 (patch)
tree3875181429010e58416ab34e6c06ef42de52e756 /include/net
parentd8d1f30b95a635dbd610dcc5eb641aca8f4768cf (diff)
parent832c10fd733893f86c63bde1c65b005d5a2fe346 (diff)
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6
Conflicts: drivers/net/wireless/wl12xx/wl1271.h drivers/net/wireless/wl12xx/wl1271_cmd.h
Diffstat (limited to 'include/net')
-rw-r--r--include/net/cfg80211.h120
-rw-r--r--include/net/mac80211.h35
2 files changed, 110 insertions, 45 deletions
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index e7ebeb8bdf71..a56bac1e69e0 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,
@@ -89,7 +90,7 @@ enum ieee80211_channel_flags {
89 * @max_power: maximum transmission power (in dBm) 90 * @max_power: maximum transmission power (in dBm)
90 * @beacon_found: helper to regulatory code to indicate when a beacon 91 * @beacon_found: helper to regulatory code to indicate when a beacon
91 * has been found on this channel. Use regulatory_hint_found_beacon() 92 * has been found on this channel. Use regulatory_hint_found_beacon()
92 * to enable this, this is is useful only on 5 GHz band. 93 * to enable this, this is useful only on 5 GHz band.
93 * @orig_mag: internal use 94 * @orig_mag: internal use
94 * @orig_mpwr: internal use 95 * @orig_mpwr: internal use
95 */ 96 */
@@ -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.
@@ -1168,6 +1186,7 @@ struct cfg80211_ops {
1168 int (*action)(struct wiphy *wiphy, struct net_device *dev, 1186 int (*action)(struct wiphy *wiphy, struct net_device *dev,
1169 struct ieee80211_channel *chan, 1187 struct ieee80211_channel *chan,
1170 enum nl80211_channel_type channel_type, 1188 enum nl80211_channel_type channel_type,
1189 bool channel_type_valid,
1171 const u8 *buf, size_t len, u64 *cookie); 1190 const u8 *buf, size_t len, u64 *cookie);
1172 1191
1173 int (*set_power_mgmt)(struct wiphy *wiphy, struct net_device *dev, 1192 int (*set_power_mgmt)(struct wiphy *wiphy, struct net_device *dev,
@@ -1230,8 +1249,6 @@ struct mac_address {
1230 1249
1231/** 1250/**
1232 * struct wiphy - wireless hardware description 1251 * struct wiphy - wireless hardware description
1233 * @idx: the wiphy index assigned to this item
1234 * @class_dev: the class device representing /sys/class/ieee80211/<wiphy-name>
1235 * @reg_notifier: the driver's regulatory notification callback 1252 * @reg_notifier: the driver's regulatory notification callback
1236 * @regd: the driver's regulatory domain, if one was requested via 1253 * @regd: the driver's regulatory domain, if one was requested via
1237 * the regulatory_hint() API. This can be used by the driver 1254 * the regulatory_hint() API. This can be used by the driver
@@ -1245,7 +1262,7 @@ struct mac_address {
1245 * @frag_threshold: Fragmentation threshold (dot11FragmentationThreshold); 1262 * @frag_threshold: Fragmentation threshold (dot11FragmentationThreshold);
1246 * -1 = fragmentation disabled, only odd values >= 256 used 1263 * -1 = fragmentation disabled, only odd values >= 256 used
1247 * @rts_threshold: RTS threshold (dot11RTSThreshold); -1 = RTS/CTS disabled 1264 * @rts_threshold: RTS threshold (dot11RTSThreshold); -1 = RTS/CTS disabled
1248 * @net: the network namespace this wiphy currently lives in 1265 * @_net: the network namespace this wiphy currently lives in
1249 * @perm_addr: permanent MAC address of this device 1266 * @perm_addr: permanent MAC address of this device
1250 * @addr_mask: If the device supports multiple MAC addresses by masking, 1267 * @addr_mask: If the device supports multiple MAC addresses by masking,
1251 * 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
@@ -1258,6 +1275,28 @@ struct mac_address {
1258 * 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
1259 * 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
1260 * 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
1261 */ 1300 */
1262struct wiphy { 1301struct wiphy {
1263 /* assign these fields before you register the wiphy */ 1302 /* assign these fields before you register the wiphy */
@@ -1460,13 +1499,14 @@ struct cfg80211_cached_keys;
1460 * @ssid: (private) Used by the internal configuration code 1499 * @ssid: (private) Used by the internal configuration code
1461 * @ssid_len: (private) Used by the internal configuration code 1500 * @ssid_len: (private) Used by the internal configuration code
1462 * @wext: (private) Used by the internal wireless extensions compat code 1501 * @wext: (private) Used by the internal wireless extensions compat code
1463 * @wext_bssid: (private) Used by the internal wireless extensions compat code
1464 * @use_4addr: indicates 4addr mode is used on this interface, must be 1502 * @use_4addr: indicates 4addr mode is used on this interface, must be
1465 * set by driver (if supported) on add_interface BEFORE registering the 1503 * set by driver (if supported) on add_interface BEFORE registering the
1466 * netdev and may otherwise be used by driver read-only, will be update 1504 * netdev and may otherwise be used by driver read-only, will be update
1467 * by cfg80211 on change_interface 1505 * by cfg80211 on change_interface
1468 * @action_registrations: list of registrations for action frames 1506 * @action_registrations: list of registrations for action frames
1469 * @action_registrations_lock: lock for the list 1507 * @action_registrations_lock: lock for the list
1508 * @mtx: mutex used to lock data in this struct
1509 * @cleanup_work: work struct used for cleanup that can't be done directly
1470 */ 1510 */
1471struct wireless_dev { 1511struct wireless_dev {
1472 struct wiphy *wiphy; 1512 struct wiphy *wiphy;
@@ -1540,11 +1580,13 @@ static inline void *wdev_priv(struct wireless_dev *wdev)
1540 1580
1541/** 1581/**
1542 * ieee80211_channel_to_frequency - convert channel number to frequency 1582 * ieee80211_channel_to_frequency - convert channel number to frequency
1583 * @chan: channel number
1543 */ 1584 */
1544extern int ieee80211_channel_to_frequency(int chan); 1585extern int ieee80211_channel_to_frequency(int chan);
1545 1586
1546/** 1587/**
1547 * ieee80211_frequency_to_channel - convert frequency to channel number 1588 * ieee80211_frequency_to_channel - convert frequency to channel number
1589 * @freq: center frequency
1548 */ 1590 */
1549extern int ieee80211_frequency_to_channel(int freq); 1591extern int ieee80211_frequency_to_channel(int freq);
1550 1592
@@ -1559,6 +1601,8 @@ extern struct ieee80211_channel *__ieee80211_get_channel(struct wiphy *wiphy,
1559 int freq); 1601 int freq);
1560/** 1602/**
1561 * ieee80211_get_channel - get channel struct from wiphy for specified frequency 1603 * ieee80211_get_channel - get channel struct from wiphy for specified frequency
1604 * @wiphy: the struct wiphy to get the channel for
1605 * @freq: the center frequency of the channel
1562 */ 1606 */
1563static inline struct ieee80211_channel * 1607static inline struct ieee80211_channel *
1564ieee80211_get_channel(struct wiphy *wiphy, int freq) 1608ieee80211_get_channel(struct wiphy *wiphy, int freq)
@@ -1619,9 +1663,6 @@ struct ieee80211_radiotap_vendor_namespaces {
1619 * @is_radiotap_ns: indicates whether the current namespace is the default 1663 * @is_radiotap_ns: indicates whether the current namespace is the default
1620 * radiotap namespace or not 1664 * radiotap namespace or not
1621 * 1665 *
1622 * @overrides: override standard radiotap fields
1623 * @n_overrides: number of overrides
1624 *
1625 * @_rtheader: pointer to the radiotap header we are walking through 1666 * @_rtheader: pointer to the radiotap header we are walking through
1626 * @_max_length: length of radiotap header in cpu byte ordering 1667 * @_max_length: length of radiotap header in cpu byte ordering
1627 * @_arg_index: next argument index 1668 * @_arg_index: next argument index
@@ -1937,10 +1978,12 @@ int cfg80211_wext_giwap(struct net_device *dev,
1937void cfg80211_scan_done(struct cfg80211_scan_request *request, bool aborted); 1978void cfg80211_scan_done(struct cfg80211_scan_request *request, bool aborted);
1938 1979
1939/** 1980/**
1940 * cfg80211_inform_bss - inform cfg80211 of a new BSS 1981 * cfg80211_inform_bss_frame - inform cfg80211 of a received BSS frame
1941 * 1982 *
1942 * @wiphy: the wiphy reporting the BSS 1983 * @wiphy: the wiphy reporting the BSS
1943 * @bss: the found BSS 1984 * @channel: The channel the frame was received on
1985 * @mgmt: the management frame (probe response or beacon)
1986 * @len: length of the management frame
1944 * @signal: the signal strength, type depends on the wiphy's signal_type 1987 * @signal: the signal strength, type depends on the wiphy's signal_type
1945 * @gfp: context flags 1988 * @gfp: context flags
1946 * 1989 *
@@ -1953,6 +1996,23 @@ cfg80211_inform_bss_frame(struct wiphy *wiphy,
1953 struct ieee80211_mgmt *mgmt, size_t len, 1996 struct ieee80211_mgmt *mgmt, size_t len,
1954 s32 signal, gfp_t gfp); 1997 s32 signal, gfp_t gfp);
1955 1998
1999/**
2000 * cfg80211_inform_bss - inform cfg80211 of a new BSS
2001 *
2002 * @wiphy: the wiphy reporting the BSS
2003 * @channel: The channel the frame was received on
2004 * @bssid: the BSSID of the BSS
2005 * @timestamp: the TSF timestamp sent by the peer
2006 * @capability: the capability field sent by the peer
2007 * @beacon_interval: the beacon interval announced by the peer
2008 * @ie: additional IEs sent by the peer
2009 * @ielen: length of the additional IEs
2010 * @signal: the signal strength, type depends on the wiphy's signal_type
2011 * @gfp: context flags
2012 *
2013 * This informs cfg80211 that BSS information was found and
2014 * the BSS should be updated/added.
2015 */
1956struct cfg80211_bss* 2016struct cfg80211_bss*
1957cfg80211_inform_bss(struct wiphy *wiphy, 2017cfg80211_inform_bss(struct wiphy *wiphy,
1958 struct ieee80211_channel *channel, 2018 struct ieee80211_channel *channel,
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index de22cbfef232..abb3b1a9ddc9 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -19,6 +19,7 @@
19#include <linux/wireless.h> 19#include <linux/wireless.h>
20#include <linux/device.h> 20#include <linux/device.h>
21#include <linux/ieee80211.h> 21#include <linux/ieee80211.h>
22#include <linux/inetdevice.h>
22#include <net/cfg80211.h> 23#include <net/cfg80211.h>
23 24
24/** 25/**
@@ -312,9 +313,10 @@ enum mac80211_tx_control_flags {
312 IEEE80211_TX_INTFL_NL80211_FRAME_TX = BIT(21), 313 IEEE80211_TX_INTFL_NL80211_FRAME_TX = BIT(21),
313 IEEE80211_TX_CTL_LDPC = BIT(22), 314 IEEE80211_TX_CTL_LDPC = BIT(22),
314 IEEE80211_TX_CTL_STBC = BIT(23) | BIT(24), 315 IEEE80211_TX_CTL_STBC = BIT(23) | BIT(24),
315#define IEEE80211_TX_CTL_STBC_SHIFT 23
316}; 316};
317 317
318#define IEEE80211_TX_CTL_STBC_SHIFT 23
319
318/** 320/**
319 * enum mac80211_rate_control_flags - per-rate flags set by the 321 * enum mac80211_rate_control_flags - per-rate flags set by the
320 * Rate Control algorithm. 322 * Rate Control algorithm.
@@ -412,8 +414,6 @@ struct ieee80211_tx_rate {
412 * @driver_data: array of driver_data pointers 414 * @driver_data: array of driver_data pointers
413 * @ampdu_ack_len: number of acked aggregated frames. 415 * @ampdu_ack_len: number of acked aggregated frames.
414 * relevant only if IEEE80211_TX_STAT_AMPDU was set. 416 * relevant only if IEEE80211_TX_STAT_AMPDU was set.
415 * @ampdu_ack_map: block ack bit map for the aggregation.
416 * relevant only if IEEE80211_TX_STAT_AMPDU was set.
417 * @ampdu_len: number of aggregated frames. 417 * @ampdu_len: number of aggregated frames.
418 * relevant only if IEEE80211_TX_STAT_AMPDU was set. 418 * relevant only if IEEE80211_TX_STAT_AMPDU was set.
419 * @ack_signal: signal strength of the ACK frame 419 * @ack_signal: signal strength of the ACK frame
@@ -448,10 +448,9 @@ struct ieee80211_tx_info {
448 struct { 448 struct {
449 struct ieee80211_tx_rate rates[IEEE80211_TX_MAX_RATES]; 449 struct ieee80211_tx_rate rates[IEEE80211_TX_MAX_RATES];
450 u8 ampdu_ack_len; 450 u8 ampdu_ack_len;
451 u64 ampdu_ack_map;
452 int ack_signal; 451 int ack_signal;
453 u8 ampdu_len; 452 u8 ampdu_len;
454 /* 7 bytes free */ 453 /* 15 bytes free */
455 } status; 454 } status;
456 struct { 455 struct {
457 struct ieee80211_tx_rate driver_rates[ 456 struct ieee80211_tx_rate driver_rates[
@@ -815,7 +814,6 @@ enum ieee80211_key_flags {
815 * encrypted in hardware. 814 * encrypted in hardware.
816 * @alg: The key algorithm. 815 * @alg: The key algorithm.
817 * @flags: key flags, see &enum ieee80211_key_flags. 816 * @flags: key flags, see &enum ieee80211_key_flags.
818 * @ap_addr: AP's MAC address
819 * @keyidx: the key index (0-3) 817 * @keyidx: the key index (0-3)
820 * @keylen: key material length 818 * @keylen: key material length
821 * @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)
@@ -881,16 +879,12 @@ struct ieee80211_sta {
881 * enum sta_notify_cmd - sta notify command 879 * enum sta_notify_cmd - sta notify command
882 * 880 *
883 * Used with the sta_notify() callback in &struct ieee80211_ops, this 881 * Used with the sta_notify() callback in &struct ieee80211_ops, this
884 * indicates addition and removal of a station to station table, 882 * indicates if an associated station made a power state transition.
885 * or if a associated station made a power state transition.
886 * 883 *
887 * @STA_NOTIFY_ADD: (DEPRECATED) a station was added to the station table
888 * @STA_NOTIFY_REMOVE: (DEPRECATED) a station being removed from the station table
889 * @STA_NOTIFY_SLEEP: a station is now sleeping 884 * @STA_NOTIFY_SLEEP: a station is now sleeping
890 * @STA_NOTIFY_AWAKE: a sleeping station woke up 885 * @STA_NOTIFY_AWAKE: a sleeping station woke up
891 */ 886 */
892enum sta_notify_cmd { 887enum sta_notify_cmd {
893 STA_NOTIFY_ADD, STA_NOTIFY_REMOVE,
894 STA_NOTIFY_SLEEP, STA_NOTIFY_AWAKE, 888 STA_NOTIFY_SLEEP, STA_NOTIFY_AWAKE,
895}; 889};
896 890
@@ -1535,6 +1529,16 @@ enum ieee80211_ampdu_mlme_action {
1535 * of the bss parameters has changed when a call is made. The callback 1529 * of the bss parameters has changed when a call is made. The callback
1536 * can sleep. 1530 * can sleep.
1537 * 1531 *
1532 * @configure_arp_filter: Configuration function for hardware ARP query filter.
1533 * This function is called with all the IP addresses configured to the
1534 * interface as argument - all ARP queries targeted to any of these
1535 * addresses must pass through. If the hardware filter does not support
1536 * enought addresses, hardware filtering must be disabled. The ifa_list
1537 * argument may be NULL, indicating that filtering must be disabled.
1538 * This function is called upon association complete with current
1539 * address(es), and while associated whenever the IP address(es) change.
1540 * The callback can sleep.
1541 *
1538 * @prepare_multicast: Prepare for multicast filter configuration. 1542 * @prepare_multicast: Prepare for multicast filter configuration.
1539 * This callback is optional, and its return value is passed 1543 * This callback is optional, and its return value is passed
1540 * to configure_filter(). This callback must be atomic. 1544 * to configure_filter(). This callback must be atomic.
@@ -1674,6 +1678,9 @@ struct ieee80211_ops {
1674 struct ieee80211_vif *vif, 1678 struct ieee80211_vif *vif,
1675 struct ieee80211_bss_conf *info, 1679 struct ieee80211_bss_conf *info,
1676 u32 changed); 1680 u32 changed);
1681 int (*configure_arp_filter)(struct ieee80211_hw *hw,
1682 struct ieee80211_vif *vif,
1683 struct in_ifaddr *ifa_list);
1677 u64 (*prepare_multicast)(struct ieee80211_hw *hw, 1684 u64 (*prepare_multicast)(struct ieee80211_hw *hw,
1678 struct netdev_hw_addr_list *mc_list); 1685 struct netdev_hw_addr_list *mc_list);
1679 void (*configure_filter)(struct ieee80211_hw *hw, 1686 void (*configure_filter)(struct ieee80211_hw *hw,
@@ -2334,16 +2341,14 @@ void ieee80211_start_tx_ba_cb_irqsafe(struct ieee80211_vif *vif, const u8 *ra,
2334 * ieee80211_stop_tx_ba_session - Stop a Block Ack session. 2341 * ieee80211_stop_tx_ba_session - Stop a Block Ack session.
2335 * @sta: the station whose BA session to stop 2342 * @sta: the station whose BA session to stop
2336 * @tid: the TID to stop BA. 2343 * @tid: the TID to stop BA.
2337 * @initiator: if indicates initiator DELBA frame will be sent.
2338 * 2344 *
2339 * Return: error if no sta with matching da found, success otherwise 2345 * Return: negative error if the TID is invalid, or no aggregation active
2340 * 2346 *
2341 * Although mac80211/low level driver/user space application can estimate 2347 * Although mac80211/low level driver/user space application can estimate
2342 * the need to stop aggregation on a certain RA/TID, the session level 2348 * the need to stop aggregation on a certain RA/TID, the session level
2343 * will be managed by the mac80211. 2349 * will be managed by the mac80211.
2344 */ 2350 */
2345int ieee80211_stop_tx_ba_session(struct ieee80211_sta *sta, u16 tid, 2351int ieee80211_stop_tx_ba_session(struct ieee80211_sta *sta, u16 tid);
2346 enum ieee80211_back_parties initiator);
2347 2352
2348/** 2353/**
2349 * ieee80211_stop_tx_ba_cb - low level driver ready to stop aggregate. 2354 * ieee80211_stop_tx_ba_cb - low level driver ready to stop aggregate.