diff options
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/cfg80211.h | 38 | ||||
-rw-r--r-- | include/net/mac80211.h | 80 |
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 | */ |
1272 | struct cfg80211_bss_ies { | 1274 | struct 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 | */ |
1298 | struct cfg80211_bss { | 1307 | struct 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 | */ |
1408 | struct cfg80211_deauth_request { | 1419 | struct 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 | */ |
3173 | void cfg80211_ref_bss(struct cfg80211_bss *bss); | 3184 | void 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 | */ |
3181 | void cfg80211_put_bss(struct cfg80211_bss *bss); | 3193 | void 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 | */ |
1375 | enum ieee80211_hw_flags { | 1386 | enum 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); | |||
3909 | void ieee80211_resume_disconnect(struct ieee80211_vif *vif); | 3929 | void 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 | */ | ||
3927 | void 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 | */ | ||
3939 | void 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 | * |