aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/net/cfg80211.h38
-rw-r--r--include/net/mac80211.h80
2 files changed, 60 insertions, 58 deletions
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 3ec70e1681d3..77686ca28948 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -535,7 +535,7 @@ struct mac_address {
535 * struct cfg80211_acl_data - Access control list data 535 * struct cfg80211_acl_data - Access control list data
536 * 536 *
537 * @acl_policy: ACL policy to be applied on the station's 537 * @acl_policy: ACL policy to be applied on the station's
538 entry specified by mac_addr 538 * entry specified by mac_addr
539 * @n_acl_entries: Number of MAC address entries passed 539 * @n_acl_entries: Number of MAC address entries passed
540 * @mac_addrs: List of MAC addresses of stations to be used for ACL 540 * @mac_addrs: List of MAC addresses of stations to be used for ACL
541 */ 541 */
@@ -666,6 +666,8 @@ struct station_parameters {
666 * @STATION_INFO_INACTIVE_TIME: @inactive_time filled 666 * @STATION_INFO_INACTIVE_TIME: @inactive_time filled
667 * @STATION_INFO_RX_BYTES: @rx_bytes filled 667 * @STATION_INFO_RX_BYTES: @rx_bytes filled
668 * @STATION_INFO_TX_BYTES: @tx_bytes filled 668 * @STATION_INFO_TX_BYTES: @tx_bytes filled
669 * @STATION_INFO_RX_BYTES64: @rx_bytes filled with 64-bit value
670 * @STATION_INFO_TX_BYTES64: @tx_bytes filled with 64-bit value
669 * @STATION_INFO_LLID: @llid filled 671 * @STATION_INFO_LLID: @llid filled
670 * @STATION_INFO_PLID: @plid filled 672 * @STATION_INFO_PLID: @plid filled
671 * @STATION_INFO_PLINK_STATE: @plink_state filled 673 * @STATION_INFO_PLINK_STATE: @plink_state filled
@@ -674,8 +676,6 @@ struct station_parameters {
674 * (tx_bitrate, tx_bitrate_flags and tx_bitrate_mcs) 676 * (tx_bitrate, tx_bitrate_flags and tx_bitrate_mcs)
675 * @STATION_INFO_RX_PACKETS: @rx_packets filled with 32-bit value 677 * @STATION_INFO_RX_PACKETS: @rx_packets filled with 32-bit value
676 * @STATION_INFO_TX_PACKETS: @tx_packets filled with 32-bit value 678 * @STATION_INFO_TX_PACKETS: @tx_packets filled with 32-bit value
677 * @STATION_INFO_RX_PACKETS64: @rx_packets filled with 64-bit value
678 * @STATION_INFO_TX_PACKETS64: @tx_packets filled with 64-bit value
679 * @STATION_INFO_TX_RETRIES: @tx_retries filled 679 * @STATION_INFO_TX_RETRIES: @tx_retries filled
680 * @STATION_INFO_TX_FAILED: @tx_failed filled 680 * @STATION_INFO_TX_FAILED: @tx_failed filled
681 * @STATION_INFO_RX_DROP_MISC: @rx_dropped_misc filled 681 * @STATION_INFO_RX_DROP_MISC: @rx_dropped_misc filled
@@ -1226,6 +1226,7 @@ struct cfg80211_match_set {
1226 * @n_match_sets: number of match sets 1226 * @n_match_sets: number of match sets
1227 * @wiphy: the wiphy this was for 1227 * @wiphy: the wiphy this was for
1228 * @dev: the interface 1228 * @dev: the interface
1229 * @scan_start: start time of the scheduled scan
1229 * @channels: channels to scan 1230 * @channels: channels to scan
1230 * @rssi_thold: don't report scan results below this threshold (in s32 dBm) 1231 * @rssi_thold: don't report scan results below this threshold (in s32 dBm)
1231 */ 1232 */
@@ -1265,11 +1266,13 @@ enum cfg80211_signal_type {
1265 1266
1266/** 1267/**
1267 * struct cfg80211_bss_ie_data - BSS entry IE data 1268 * struct cfg80211_bss_ie_data - BSS entry IE data
1269 * @tsf: TSF contained in the frame that carried these IEs
1268 * @rcu_head: internal use, for freeing 1270 * @rcu_head: internal use, for freeing
1269 * @len: length of the IEs 1271 * @len: length of the IEs
1270 * @data: IE data 1272 * @data: IE data
1271 */ 1273 */
1272struct cfg80211_bss_ies { 1274struct cfg80211_bss_ies {
1275 u64 tsf;
1273 struct rcu_head rcu_head; 1276 struct rcu_head rcu_head;
1274 int len; 1277 int len;
1275 u8 data[]; 1278 u8 data[];
@@ -1283,27 +1286,33 @@ struct cfg80211_bss_ies {
1283 * 1286 *
1284 * @channel: channel this BSS is on 1287 * @channel: channel this BSS is on
1285 * @bssid: BSSID of the BSS 1288 * @bssid: BSSID of the BSS
1286 * @tsf: timestamp of last received update
1287 * @beacon_interval: the beacon interval as from the frame 1289 * @beacon_interval: the beacon interval as from the frame
1288 * @capability: the capability field in host byte order 1290 * @capability: the capability field in host byte order
1289 * @ies: the information elements (Note that there 1291 * @ies: the information elements (Note that there is no guarantee that these
1290 * is no guarantee that these are well-formed!); this is a pointer to 1292 * are well-formed!); this is a pointer to either the beacon_ies or
1291 * either the beacon_ies or proberesp_ies depending on whether Probe 1293 * proberesp_ies depending on whether Probe Response frame has been
1292 * Response frame has been received 1294 * received. It is always non-%NULL.
1293 * @beacon_ies: the information elements from the last Beacon frame 1295 * @beacon_ies: the information elements from the last Beacon frame
1296 * (implementation note: if @hidden_beacon_bss is set this struct doesn't
1297 * own the beacon_ies, but they're just pointers to the ones from the
1298 * @hidden_beacon_bss struct)
1294 * @proberesp_ies: the information elements from the last Probe Response frame 1299 * @proberesp_ies: the information elements from the last Probe Response frame
1300 * @hidden_beacon_bss: in case this BSS struct represents a probe response from
1301 * a BSS that hides the SSID in its beacon, this points to the BSS struct
1302 * that holds the beacon data. @beacon_ies is still valid, of course, and
1303 * points to the same data as hidden_beacon_bss->beacon_ies in that case.
1295 * @signal: signal strength value (type depends on the wiphy's signal_type) 1304 * @signal: signal strength value (type depends on the wiphy's signal_type)
1296 * @priv: private area for driver use, has at least wiphy->bss_priv_size bytes 1305 * @priv: private area for driver use, has at least wiphy->bss_priv_size bytes
1297 */ 1306 */
1298struct cfg80211_bss { 1307struct cfg80211_bss {
1299 u64 tsf;
1300
1301 struct ieee80211_channel *channel; 1308 struct ieee80211_channel *channel;
1302 1309
1303 const struct cfg80211_bss_ies __rcu *ies; 1310 const struct cfg80211_bss_ies __rcu *ies;
1304 const struct cfg80211_bss_ies __rcu *beacon_ies; 1311 const struct cfg80211_bss_ies __rcu *beacon_ies;
1305 const struct cfg80211_bss_ies __rcu *proberesp_ies; 1312 const struct cfg80211_bss_ies __rcu *proberesp_ies;
1306 1313
1314 struct cfg80211_bss *hidden_beacon_bss;
1315
1307 s32 signal; 1316 s32 signal;
1308 1317
1309 u16 beacon_interval; 1318 u16 beacon_interval;
@@ -1404,6 +1413,8 @@ struct cfg80211_assoc_request {
1404 * @ie: Extra IEs to add to Deauthentication frame or %NULL 1413 * @ie: Extra IEs to add to Deauthentication frame or %NULL
1405 * @ie_len: Length of ie buffer in octets 1414 * @ie_len: Length of ie buffer in octets
1406 * @reason_code: The reason code for the deauthentication 1415 * @reason_code: The reason code for the deauthentication
1416 * @local_state_change: if set, change local state only and
1417 * do not set a deauth frame
1407 */ 1418 */
1408struct cfg80211_deauth_request { 1419struct cfg80211_deauth_request {
1409 const u8 *bssid; 1420 const u8 *bssid;
@@ -2629,7 +2640,6 @@ struct cfg80211_cached_keys;
2629 * the user-set AP, monitor and WDS channel 2640 * the user-set AP, monitor and WDS channel
2630 * @preset_chan: (private) Used by the internal configuration code to 2641 * @preset_chan: (private) Used by the internal configuration code to
2631 * track the channel to be used for AP later 2642 * track the channel to be used for AP later
2632 * @preset_chantype: (private) the corresponding channel type
2633 * @bssid: (private) Used by the internal configuration code 2643 * @bssid: (private) Used by the internal configuration code
2634 * @ssid: (private) Used by the internal configuration code 2644 * @ssid: (private) Used by the internal configuration code
2635 * @ssid_len: (private) Used by the internal configuration code 2645 * @ssid_len: (private) Used by the internal configuration code
@@ -3166,19 +3176,21 @@ cfg80211_get_ibss(struct wiphy *wiphy,
3166 3176
3167/** 3177/**
3168 * cfg80211_ref_bss - reference BSS struct 3178 * cfg80211_ref_bss - reference BSS struct
3179 * @wiphy: the wiphy this BSS struct belongs to
3169 * @bss: the BSS struct to reference 3180 * @bss: the BSS struct to reference
3170 * 3181 *
3171 * Increments the refcount of the given BSS struct. 3182 * Increments the refcount of the given BSS struct.
3172 */ 3183 */
3173void cfg80211_ref_bss(struct cfg80211_bss *bss); 3184void cfg80211_ref_bss(struct wiphy *wiphy, struct cfg80211_bss *bss);
3174 3185
3175/** 3186/**
3176 * cfg80211_put_bss - unref BSS struct 3187 * cfg80211_put_bss - unref BSS struct
3188 * @wiphy: the wiphy this BSS struct belongs to
3177 * @bss: the BSS struct 3189 * @bss: the BSS struct
3178 * 3190 *
3179 * Decrements the refcount of the given BSS struct. 3191 * Decrements the refcount of the given BSS struct.
3180 */ 3192 */
3181void cfg80211_put_bss(struct cfg80211_bss *bss); 3193void cfg80211_put_bss(struct wiphy *wiphy, struct cfg80211_bss *bss);
3182 3194
3183/** 3195/**
3184 * cfg80211_unlink_bss - unlink BSS from internal data structures 3196 * cfg80211_unlink_bss - unlink BSS from internal data structures
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 7da11211825d..0eaa9092364b 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -277,9 +277,16 @@ enum ieee80211_rssi_event {
277 * valid in station mode only if after the driver was notified 277 * valid in station mode only if after the driver was notified
278 * with the %BSS_CHANGED_DTIM_PERIOD flag, will be non-zero then. 278 * with the %BSS_CHANGED_DTIM_PERIOD flag, will be non-zero then.
279 * @sync_tsf: last beacon's/probe response's TSF timestamp (could be old 279 * @sync_tsf: last beacon's/probe response's TSF timestamp (could be old
280 * as it may have been received during scanning long ago) 280 * as it may have been received during scanning long ago). If the
281 * HW flag %IEEE80211_HW_TIMING_BEACON_ONLY is set, then this can
282 * only come from a beacon, but might not become valid until after
283 * association when a beacon is received (which is notified with the
284 * %BSS_CHANGED_DTIM flag.)
281 * @sync_device_ts: the device timestamp corresponding to the sync_tsf, 285 * @sync_device_ts: the device timestamp corresponding to the sync_tsf,
282 * the driver/device can use this to calculate synchronisation 286 * the driver/device can use this to calculate synchronisation
287 * (see @sync_tsf)
288 * @sync_dtim_count: Only valid when %IEEE80211_HW_TIMING_BEACON_ONLY
289 * is requested, see @sync_tsf/@sync_device_ts.
283 * @beacon_int: beacon interval 290 * @beacon_int: beacon interval
284 * @assoc_capability: capabilities taken from assoc resp 291 * @assoc_capability: capabilities taken from assoc resp
285 * @basic_rates: bitmap of basic rates, each bit stands for an 292 * @basic_rates: bitmap of basic rates, each bit stands for an
@@ -331,6 +338,7 @@ struct ieee80211_bss_conf {
331 u16 assoc_capability; 338 u16 assoc_capability;
332 u64 sync_tsf; 339 u64 sync_tsf;
333 u32 sync_device_ts; 340 u32 sync_device_ts;
341 u8 sync_dtim_count;
334 u32 basic_rates; 342 u32 basic_rates;
335 int mcast_rate[IEEE80211_NUM_BANDS]; 343 int mcast_rate[IEEE80211_NUM_BANDS];
336 u16 ht_operation_mode; 344 u16 ht_operation_mode;
@@ -391,6 +399,9 @@ struct ieee80211_bss_conf {
391 * @IEEE80211_TX_CTL_RATE_CTRL_PROBE: internal to mac80211, can be 399 * @IEEE80211_TX_CTL_RATE_CTRL_PROBE: internal to mac80211, can be
392 * set by rate control algorithms to indicate probe rate, will 400 * set by rate control algorithms to indicate probe rate, will
393 * be cleared for fragmented frames (except on the last fragment) 401 * be cleared for fragmented frames (except on the last fragment)
402 * @IEEE80211_TX_INTFL_OFFCHAN_TX_OK: Internal to mac80211. Used to indicate
403 * that a frame can be transmitted while the queues are stopped for
404 * off-channel operation.
394 * @IEEE80211_TX_INTFL_NEED_TXPROCESSING: completely internal to mac80211, 405 * @IEEE80211_TX_INTFL_NEED_TXPROCESSING: completely internal to mac80211,
395 * used to indicate that a pending frame requires TX processing before 406 * used to indicate that a pending frame requires TX processing before
396 * it can be sent out. 407 * it can be sent out.
@@ -456,6 +467,7 @@ enum mac80211_tx_control_flags {
456 IEEE80211_TX_STAT_AMPDU = BIT(10), 467 IEEE80211_TX_STAT_AMPDU = BIT(10),
457 IEEE80211_TX_STAT_AMPDU_NO_BACK = BIT(11), 468 IEEE80211_TX_STAT_AMPDU_NO_BACK = BIT(11),
458 IEEE80211_TX_CTL_RATE_CTRL_PROBE = BIT(12), 469 IEEE80211_TX_CTL_RATE_CTRL_PROBE = BIT(12),
470 IEEE80211_TX_INTFL_OFFCHAN_TX_OK = BIT(13),
459 IEEE80211_TX_INTFL_NEED_TXPROCESSING = BIT(14), 471 IEEE80211_TX_INTFL_NEED_TXPROCESSING = BIT(14),
460 IEEE80211_TX_INTFL_RETRIED = BIT(15), 472 IEEE80211_TX_INTFL_RETRIED = BIT(15),
461 IEEE80211_TX_INTFL_DONT_ENCRYPT = BIT(16), 473 IEEE80211_TX_INTFL_DONT_ENCRYPT = BIT(16),
@@ -1355,10 +1367,6 @@ struct ieee80211_tx_control {
1355 * setup strictly in HW. mac80211 should not attempt to do this in 1367 * setup strictly in HW. mac80211 should not attempt to do this in
1356 * software. 1368 * software.
1357 * 1369 *
1358 * @IEEE80211_HW_SCAN_WHILE_IDLE: The device can do hw scan while
1359 * being idle (i.e. mac80211 doesn't have to go idle-off during the
1360 * the scan).
1361 *
1362 * @IEEE80211_HW_WANT_MONITOR_VIF: The driver would like to be informed of 1370 * @IEEE80211_HW_WANT_MONITOR_VIF: The driver would like to be informed of
1363 * a virtual monitor interface when monitor interfaces are the only 1371 * a virtual monitor interface when monitor interfaces are the only
1364 * active interfaces. 1372 * active interfaces.
@@ -1371,6 +1379,9 @@ struct ieee80211_tx_control {
1371 * @IEEE80211_HW_P2P_DEV_ADDR_FOR_INTF: Use the P2P Device address for any 1379 * @IEEE80211_HW_P2P_DEV_ADDR_FOR_INTF: Use the P2P Device address for any
1372 * P2P Interface. This will be honoured even if more than one interface 1380 * P2P Interface. This will be honoured even if more than one interface
1373 * is supported. 1381 * is supported.
1382 *
1383 * @IEEE80211_HW_TIMING_BEACON_ONLY: Use sync timing from beacon frames
1384 * only, to allow getting TBTT of a DTIM beacon.
1374 */ 1385 */
1375enum ieee80211_hw_flags { 1386enum ieee80211_hw_flags {
1376 IEEE80211_HW_HAS_RATE_CONTROL = 1<<0, 1387 IEEE80211_HW_HAS_RATE_CONTROL = 1<<0,
@@ -1397,8 +1408,8 @@ enum ieee80211_hw_flags {
1397 IEEE80211_HW_SUPPORTS_PER_STA_GTK = 1<<21, 1408 IEEE80211_HW_SUPPORTS_PER_STA_GTK = 1<<21,
1398 IEEE80211_HW_AP_LINK_PS = 1<<22, 1409 IEEE80211_HW_AP_LINK_PS = 1<<22,
1399 IEEE80211_HW_TX_AMPDU_SETUP_IN_HW = 1<<23, 1410 IEEE80211_HW_TX_AMPDU_SETUP_IN_HW = 1<<23,
1400 IEEE80211_HW_SCAN_WHILE_IDLE = 1<<24,
1401 IEEE80211_HW_P2P_DEV_ADDR_FOR_INTF = 1<<25, 1411 IEEE80211_HW_P2P_DEV_ADDR_FOR_INTF = 1<<25,
1412 IEEE80211_HW_TIMING_BEACON_ONLY = 1<<26,
1402}; 1413};
1403 1414
1404/** 1415/**
@@ -1683,15 +1694,6 @@ void ieee80211_free_txskb(struct ieee80211_hw *hw, struct sk_buff *skb);
1683 * dynamic PS feature in stack and will just keep %IEEE80211_CONF_PS 1694 * dynamic PS feature in stack and will just keep %IEEE80211_CONF_PS
1684 * enabled whenever user has enabled powersave. 1695 * enabled whenever user has enabled powersave.
1685 * 1696 *
1686 * Some hardware need to toggle a single shared antenna between WLAN and
1687 * Bluetooth to facilitate co-existence. These types of hardware set
1688 * limitations on the use of host controlled dynamic powersave whenever there
1689 * is simultaneous WLAN and Bluetooth traffic. For these types of hardware, the
1690 * driver may request temporarily going into full power save, in order to
1691 * enable toggling the antenna between BT and WLAN. If the driver requests
1692 * disabling dynamic powersave, the @dynamic_ps_timeout value will be
1693 * temporarily set to zero until the driver re-enables dynamic powersave.
1694 *
1695 * Driver informs U-APSD client support by enabling 1697 * Driver informs U-APSD client support by enabling
1696 * %IEEE80211_HW_SUPPORTS_UAPSD flag. The mode is configured through the 1698 * %IEEE80211_HW_SUPPORTS_UAPSD flag. The mode is configured through the
1697 * uapsd paramater in conf_tx() operation. Hardware needs to send the QoS 1699 * uapsd paramater in conf_tx() operation. Hardware needs to send the QoS
@@ -2167,6 +2169,18 @@ enum ieee80211_rate_control_changed {
2167 * MAC address of the device going away. 2169 * MAC address of the device going away.
2168 * Hence, this callback must be implemented. It can sleep. 2170 * Hence, this callback must be implemented. It can sleep.
2169 * 2171 *
2172 * @add_interface_debugfs: Drivers can use this callback to add debugfs files
2173 * when a vif is added to mac80211. This callback and
2174 * @remove_interface_debugfs should be within a CONFIG_MAC80211_DEBUGFS
2175 * conditional. @remove_interface_debugfs must be provided for cleanup.
2176 * This callback can sleep.
2177 *
2178 * @remove_interface_debugfs: Remove the debugfs files which were added using
2179 * @add_interface_debugfs. This callback must remove all debugfs entries
2180 * that were added because mac80211 only removes interface debugfs when the
2181 * interface is destroyed, not when it is removed from the driver.
2182 * This callback can sleep.
2183 *
2170 * @config: Handler for configuration requests. IEEE 802.11 code calls this 2184 * @config: Handler for configuration requests. IEEE 802.11 code calls this
2171 * function to change hardware configuration, e.g., channel. 2185 * function to change hardware configuration, e.g., channel.
2172 * This function should never fail but returns a negative error code 2186 * This function should never fail but returns a negative error code
@@ -2580,6 +2594,12 @@ struct ieee80211_ops {
2580 struct ieee80211_vif *vif, 2594 struct ieee80211_vif *vif,
2581 struct ieee80211_sta *sta, 2595 struct ieee80211_sta *sta,
2582 struct dentry *dir); 2596 struct dentry *dir);
2597 void (*add_interface_debugfs)(struct ieee80211_hw *hw,
2598 struct ieee80211_vif *vif,
2599 struct dentry *dir);
2600 void (*remove_interface_debugfs)(struct ieee80211_hw *hw,
2601 struct ieee80211_vif *vif,
2602 struct dentry *dir);
2583#endif 2603#endif
2584 void (*sta_notify)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, 2604 void (*sta_notify)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
2585 enum sta_notify_cmd, struct ieee80211_sta *sta); 2605 enum sta_notify_cmd, struct ieee80211_sta *sta);
@@ -3909,36 +3929,6 @@ void ieee80211_connection_loss(struct ieee80211_vif *vif);
3909void ieee80211_resume_disconnect(struct ieee80211_vif *vif); 3929void ieee80211_resume_disconnect(struct ieee80211_vif *vif);
3910 3930
3911/** 3931/**
3912 * ieee80211_disable_dyn_ps - force mac80211 to temporarily disable dynamic psm
3913 *
3914 * @vif: &struct ieee80211_vif pointer from the add_interface callback.
3915 *
3916 * Some hardware require full power save to manage simultaneous BT traffic
3917 * on the WLAN frequency. Full PSM is required periodically, whenever there are
3918 * burst of BT traffic. The hardware gets information of BT traffic via
3919 * hardware co-existence lines, and consequentially requests mac80211 to
3920 * (temporarily) enter full psm.
3921 * This function will only temporarily disable dynamic PS, not enable PSM if
3922 * it was not already enabled.
3923 * The driver must make sure to re-enable dynamic PS using
3924 * ieee80211_enable_dyn_ps() if the driver has disabled it.
3925 *
3926 */
3927void ieee80211_disable_dyn_ps(struct ieee80211_vif *vif);
3928
3929/**
3930 * ieee80211_enable_dyn_ps - restore dynamic psm after being disabled
3931 *
3932 * @vif: &struct ieee80211_vif pointer from the add_interface callback.
3933 *
3934 * This function restores dynamic PS after being temporarily disabled via
3935 * ieee80211_disable_dyn_ps(). Each ieee80211_disable_dyn_ps() call must
3936 * be coupled with an eventual call to this function.
3937 *
3938 */
3939void ieee80211_enable_dyn_ps(struct ieee80211_vif *vif);
3940
3941/**
3942 * ieee80211_cqm_rssi_notify - inform a configured connection quality monitoring 3932 * ieee80211_cqm_rssi_notify - inform a configured connection quality monitoring
3943 * rssi threshold triggered 3933 * rssi threshold triggered
3944 * 3934 *