aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/mac80211.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net/mac80211.h')
-rw-r--r--include/net/mac80211.h149
1 files changed, 131 insertions, 18 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 45d7d44d7cbe..5be900d19660 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -144,6 +144,8 @@ struct ieee80211_low_level_stats {
144 * new beacon (beaconing modes) 144 * new beacon (beaconing modes)
145 * @BSS_CHANGED_BEACON_ENABLED: Beaconing should be 145 * @BSS_CHANGED_BEACON_ENABLED: Beaconing should be
146 * enabled/disabled (beaconing modes) 146 * enabled/disabled (beaconing modes)
147 * @BSS_CHANGED_CQM: Connection quality monitor config changed
148 * @BSS_CHANGED_IBSS: IBSS join status changed
147 */ 149 */
148enum ieee80211_bss_change { 150enum ieee80211_bss_change {
149 BSS_CHANGED_ASSOC = 1<<0, 151 BSS_CHANGED_ASSOC = 1<<0,
@@ -156,6 +158,10 @@ enum ieee80211_bss_change {
156 BSS_CHANGED_BSSID = 1<<7, 158 BSS_CHANGED_BSSID = 1<<7,
157 BSS_CHANGED_BEACON = 1<<8, 159 BSS_CHANGED_BEACON = 1<<8,
158 BSS_CHANGED_BEACON_ENABLED = 1<<9, 160 BSS_CHANGED_BEACON_ENABLED = 1<<9,
161 BSS_CHANGED_CQM = 1<<10,
162 BSS_CHANGED_IBSS = 1<<11,
163
164 /* when adding here, make sure to change ieee80211_reconfig */
159}; 165};
160 166
161/** 167/**
@@ -165,6 +171,8 @@ enum ieee80211_bss_change {
165 * to that BSS) that can change during the lifetime of the BSS. 171 * to that BSS) that can change during the lifetime of the BSS.
166 * 172 *
167 * @assoc: association status 173 * @assoc: association status
174 * @ibss_joined: indicates whether this station is part of an IBSS
175 * or not
168 * @aid: association ID number, valid only when @assoc is true 176 * @aid: association ID number, valid only when @assoc is true
169 * @use_cts_prot: use CTS protection 177 * @use_cts_prot: use CTS protection
170 * @use_short_preamble: use 802.11b short preamble; 178 * @use_short_preamble: use 802.11b short preamble;
@@ -183,13 +191,19 @@ enum ieee80211_bss_change {
183 * the current band. 191 * the current band.
184 * @bssid: The BSSID for this BSS 192 * @bssid: The BSSID for this BSS
185 * @enable_beacon: whether beaconing should be enabled or not 193 * @enable_beacon: whether beaconing should be enabled or not
194 * @channel_type: Channel type for this BSS -- the hardware might be
195 * configured for HT40+ while this BSS only uses no-HT, for
196 * example.
186 * @ht_operation_mode: HT operation mode (like in &struct ieee80211_ht_info). 197 * @ht_operation_mode: HT operation mode (like in &struct ieee80211_ht_info).
187 * This field is only valid when the channel type is one of the HT types. 198 * This field is only valid when the channel type is one of the HT types.
199 * @cqm_rssi_thold: Connection quality monitor RSSI threshold, a zero value
200 * implies disabled
201 * @cqm_rssi_hyst: Connection quality monitor RSSI hysteresis
188 */ 202 */
189struct ieee80211_bss_conf { 203struct ieee80211_bss_conf {
190 const u8 *bssid; 204 const u8 *bssid;
191 /* association related data */ 205 /* association related data */
192 bool assoc; 206 bool assoc, ibss_joined;
193 u16 aid; 207 u16 aid;
194 /* erp related data */ 208 /* erp related data */
195 bool use_cts_prot; 209 bool use_cts_prot;
@@ -202,6 +216,9 @@ struct ieee80211_bss_conf {
202 u64 timestamp; 216 u64 timestamp;
203 u32 basic_rates; 217 u32 basic_rates;
204 u16 ht_operation_mode; 218 u16 ht_operation_mode;
219 s32 cqm_rssi_thold;
220 u32 cqm_rssi_hyst;
221 enum nl80211_channel_type channel_type;
205}; 222};
206 223
207/** 224/**
@@ -267,6 +284,9 @@ struct ieee80211_bss_conf {
267 * @IEEE80211_TX_INTFL_NL80211_FRAME_TX: Frame was requested through nl80211 284 * @IEEE80211_TX_INTFL_NL80211_FRAME_TX: Frame was requested through nl80211
268 * MLME command (internal to mac80211 to figure out whether to send TX 285 * MLME command (internal to mac80211 to figure out whether to send TX
269 * status to user space) 286 * status to user space)
287 * @IEEE80211_TX_CTL_LDPC: tells the driver to use LDPC for this frame
288 * @IEEE80211_TX_CTL_STBC: Enables Space-Time Block Coding (STBC) for this
289 * frame and selects the maximum number of streams that it can use.
270 */ 290 */
271enum mac80211_tx_control_flags { 291enum mac80211_tx_control_flags {
272 IEEE80211_TX_CTL_REQ_TX_STATUS = BIT(0), 292 IEEE80211_TX_CTL_REQ_TX_STATUS = BIT(0),
@@ -290,6 +310,9 @@ enum mac80211_tx_control_flags {
290 IEEE80211_TX_INTFL_RETRANSMISSION = BIT(19), 310 IEEE80211_TX_INTFL_RETRANSMISSION = BIT(19),
291 IEEE80211_TX_INTFL_HAS_RADIOTAP = BIT(20), 311 IEEE80211_TX_INTFL_HAS_RADIOTAP = BIT(20),
292 IEEE80211_TX_INTFL_NL80211_FRAME_TX = BIT(21), 312 IEEE80211_TX_INTFL_NL80211_FRAME_TX = BIT(21),
313 IEEE80211_TX_CTL_LDPC = BIT(22),
314 IEEE80211_TX_CTL_STBC = BIT(23) | BIT(24),
315#define IEEE80211_TX_CTL_STBC_SHIFT 23
293}; 316};
294 317
295/** 318/**
@@ -388,11 +411,11 @@ struct ieee80211_tx_rate {
388 * @status: union for status data 411 * @status: union for status data
389 * @driver_data: array of driver_data pointers 412 * @driver_data: array of driver_data pointers
390 * @ampdu_ack_len: number of acked aggregated frames. 413 * @ampdu_ack_len: number of acked aggregated frames.
391 * relevant only if IEEE80211_TX_STATUS_AMPDU was set. 414 * relevant only if IEEE80211_TX_STAT_AMPDU was set.
392 * @ampdu_ack_map: block ack bit map for the aggregation. 415 * @ampdu_ack_map: block ack bit map for the aggregation.
393 * relevant only if IEEE80211_TX_STATUS_AMPDU was set. 416 * relevant only if IEEE80211_TX_STAT_AMPDU was set.
394 * @ampdu_len: number of aggregated frames. 417 * @ampdu_len: number of aggregated frames.
395 * relevant only if IEEE80211_TX_STATUS_AMPDU was set. 418 * relevant only if IEEE80211_TX_STAT_AMPDU was set.
396 * @ack_signal: signal strength of the ACK frame 419 * @ack_signal: signal strength of the ACK frame
397 */ 420 */
398struct ieee80211_tx_info { 421struct ieee80211_tx_info {
@@ -543,7 +566,6 @@ enum mac80211_rx_flags {
543 * @signal: signal strength when receiving this frame, either in dBm, in dB or 566 * @signal: signal strength when receiving this frame, either in dBm, in dB or
544 * unspecified depending on the hardware capabilities flags 567 * unspecified depending on the hardware capabilities flags
545 * @IEEE80211_HW_SIGNAL_* 568 * @IEEE80211_HW_SIGNAL_*
546 * @noise: noise when receiving this frame, in dBm.
547 * @antenna: antenna used 569 * @antenna: antenna used
548 * @rate_idx: index of data rate into band's supported rates or MCS index if 570 * @rate_idx: index of data rate into band's supported rates or MCS index if
549 * HT rates are use (RX_FLAG_HT) 571 * HT rates are use (RX_FLAG_HT)
@@ -554,7 +576,6 @@ struct ieee80211_rx_status {
554 enum ieee80211_band band; 576 enum ieee80211_band band;
555 int freq; 577 int freq;
556 int signal; 578 int signal;
557 int noise;
558 int antenna; 579 int antenna;
559 int rate_idx; 580 int rate_idx;
560 int flag; 581 int flag;
@@ -580,11 +601,15 @@ struct ieee80211_rx_status {
580 * may turn the device off as much as possible. Typically, this flag will 601 * may turn the device off as much as possible. Typically, this flag will
581 * be set when an interface is set UP but not associated or scanning, but 602 * be set when an interface is set UP but not associated or scanning, but
582 * it can also be unset in that case when monitor interfaces are active. 603 * it can also be unset in that case when monitor interfaces are active.
604 * @IEEE80211_CONF_QOS: Enable 802.11e QoS also know as WMM (Wireless
605 * Multimedia). On some drivers (iwlwifi is one of know) we have
606 * to enable/disable QoS explicitly.
583 */ 607 */
584enum ieee80211_conf_flags { 608enum ieee80211_conf_flags {
585 IEEE80211_CONF_MONITOR = (1<<0), 609 IEEE80211_CONF_MONITOR = (1<<0),
586 IEEE80211_CONF_PS = (1<<1), 610 IEEE80211_CONF_PS = (1<<1),
587 IEEE80211_CONF_IDLE = (1<<2), 611 IEEE80211_CONF_IDLE = (1<<2),
612 IEEE80211_CONF_QOS = (1<<3),
588}; 613};
589 614
590 615
@@ -599,6 +624,7 @@ enum ieee80211_conf_flags {
599 * @IEEE80211_CONF_CHANGE_RETRY_LIMITS: retry limits changed 624 * @IEEE80211_CONF_CHANGE_RETRY_LIMITS: retry limits changed
600 * @IEEE80211_CONF_CHANGE_IDLE: Idle flag changed 625 * @IEEE80211_CONF_CHANGE_IDLE: Idle flag changed
601 * @IEEE80211_CONF_CHANGE_SMPS: Spatial multiplexing powersave mode changed 626 * @IEEE80211_CONF_CHANGE_SMPS: Spatial multiplexing powersave mode changed
627 * @IEEE80211_CONF_CHANGE_QOS: Quality of service was enabled or disabled
602 */ 628 */
603enum ieee80211_conf_changed { 629enum ieee80211_conf_changed {
604 IEEE80211_CONF_CHANGE_SMPS = BIT(1), 630 IEEE80211_CONF_CHANGE_SMPS = BIT(1),
@@ -609,6 +635,7 @@ enum ieee80211_conf_changed {
609 IEEE80211_CONF_CHANGE_CHANNEL = BIT(6), 635 IEEE80211_CONF_CHANGE_CHANNEL = BIT(6),
610 IEEE80211_CONF_CHANGE_RETRY_LIMITS = BIT(7), 636 IEEE80211_CONF_CHANGE_RETRY_LIMITS = BIT(7),
611 IEEE80211_CONF_CHANGE_IDLE = BIT(8), 637 IEEE80211_CONF_CHANGE_IDLE = BIT(8),
638 IEEE80211_CONF_CHANGE_QOS = BIT(9),
612}; 639};
613 640
614/** 641/**
@@ -649,6 +676,9 @@ enum ieee80211_smps_mode {
649 * @dynamic_ps_timeout: The dynamic powersave timeout (in ms), see the 676 * @dynamic_ps_timeout: The dynamic powersave timeout (in ms), see the
650 * powersave documentation below. This variable is valid only when 677 * powersave documentation below. This variable is valid only when
651 * the CONF_PS flag is set. 678 * the CONF_PS flag is set.
679 * @dynamic_ps_forced_timeout: The dynamic powersave timeout (in ms) configured
680 * by cfg80211 (essentially, wext) If set, this value overrules the value
681 * chosen by mac80211 based on ps qos network latency.
652 * 682 *
653 * @power_level: requested transmit power (in dBm) 683 * @power_level: requested transmit power (in dBm)
654 * 684 *
@@ -668,7 +698,7 @@ enum ieee80211_smps_mode {
668 */ 698 */
669struct ieee80211_conf { 699struct ieee80211_conf {
670 u32 flags; 700 u32 flags;
671 int power_level, dynamic_ps_timeout; 701 int power_level, dynamic_ps_timeout, dynamic_ps_forced_timeout;
672 int max_sleep_period; 702 int max_sleep_period;
673 703
674 u16 listen_interval; 704 u16 listen_interval;
@@ -682,6 +712,28 @@ struct ieee80211_conf {
682}; 712};
683 713
684/** 714/**
715 * struct ieee80211_channel_switch - holds the channel switch data
716 *
717 * The information provided in this structure is required for channel switch
718 * operation.
719 *
720 * @timestamp: value in microseconds of the 64-bit Time Synchronization
721 * Function (TSF) timer when the frame containing the channel switch
722 * announcement was received. This is simply the rx.mactime parameter
723 * the driver passed into mac80211.
724 * @block_tx: Indicates whether transmission must be blocked before the
725 * scheduled channel switch, as indicated by the AP.
726 * @channel: the new channel to switch to
727 * @count: the number of TBTT's until the channel switch event
728 */
729struct ieee80211_channel_switch {
730 u64 timestamp;
731 bool block_tx;
732 struct ieee80211_channel *channel;
733 u8 count;
734};
735
736/**
685 * struct ieee80211_vif - per-interface data 737 * struct ieee80211_vif - per-interface data
686 * 738 *
687 * Data in this structure is continually present for driver 739 * Data in this structure is continually present for driver
@@ -779,6 +831,7 @@ struct ieee80211_key_conf {
779 u8 iv_len; 831 u8 iv_len;
780 u8 hw_key_idx; 832 u8 hw_key_idx;
781 u8 flags; 833 u8 flags;
834 u8 *ap_addr;
782 s8 keyidx; 835 s8 keyidx;
783 u8 keylen; 836 u8 keylen;
784 u8 key[0]; 837 u8 key[0];
@@ -907,10 +960,6 @@ enum ieee80211_tkip_key_type {
907 * one milliwatt. This is the preferred method since it is standardized 960 * one milliwatt. This is the preferred method since it is standardized
908 * between different devices. @max_signal does not need to be set. 961 * between different devices. @max_signal does not need to be set.
909 * 962 *
910 * @IEEE80211_HW_NOISE_DBM:
911 * Hardware can provide noise (radio interference) values in units dBm,
912 * decibel difference from one milliwatt.
913 *
914 * @IEEE80211_HW_SPECTRUM_MGMT: 963 * @IEEE80211_HW_SPECTRUM_MGMT:
915 * Hardware supports spectrum management defined in 802.11h 964 * Hardware supports spectrum management defined in 802.11h
916 * Measurement, Channel Switch, Quieting, TPC 965 * Measurement, Channel Switch, Quieting, TPC
@@ -954,6 +1003,17 @@ enum ieee80211_tkip_key_type {
954 * Hardware can provide ack status reports of Tx frames to 1003 * Hardware can provide ack status reports of Tx frames to
955 * the stack. 1004 * the stack.
956 * 1005 *
1006 * @IEEE80211_HW_CONNECTION_MONITOR:
1007 * The hardware performs its own connection monitoring, including
1008 * periodic keep-alives to the AP and probing the AP on beacon loss.
1009 * When this flag is set, signaling beacon-loss will cause an immediate
1010 * change to disassociated state.
1011 *
1012 * @IEEE80211_HW_SUPPORTS_CQM_RSSI:
1013 * Hardware can do connection quality monitoring - i.e. it can monitor
1014 * connection quality related parameters, such as the RSSI level and
1015 * provide notifications if configured trigger levels are reached.
1016 *
957 */ 1017 */
958enum ieee80211_hw_flags { 1018enum ieee80211_hw_flags {
959 IEEE80211_HW_HAS_RATE_CONTROL = 1<<0, 1019 IEEE80211_HW_HAS_RATE_CONTROL = 1<<0,
@@ -963,7 +1023,7 @@ enum ieee80211_hw_flags {
963 IEEE80211_HW_2GHZ_SHORT_PREAMBLE_INCAPABLE = 1<<4, 1023 IEEE80211_HW_2GHZ_SHORT_PREAMBLE_INCAPABLE = 1<<4,
964 IEEE80211_HW_SIGNAL_UNSPEC = 1<<5, 1024 IEEE80211_HW_SIGNAL_UNSPEC = 1<<5,
965 IEEE80211_HW_SIGNAL_DBM = 1<<6, 1025 IEEE80211_HW_SIGNAL_DBM = 1<<6,
966 IEEE80211_HW_NOISE_DBM = 1<<7, 1026 /* use this hole */
967 IEEE80211_HW_SPECTRUM_MGMT = 1<<8, 1027 IEEE80211_HW_SPECTRUM_MGMT = 1<<8,
968 IEEE80211_HW_AMPDU_AGGREGATION = 1<<9, 1028 IEEE80211_HW_AMPDU_AGGREGATION = 1<<9,
969 IEEE80211_HW_SUPPORTS_PS = 1<<10, 1029 IEEE80211_HW_SUPPORTS_PS = 1<<10,
@@ -975,6 +1035,8 @@ enum ieee80211_hw_flags {
975 IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS = 1<<16, 1035 IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS = 1<<16,
976 IEEE80211_HW_SUPPORTS_UAPSD = 1<<17, 1036 IEEE80211_HW_SUPPORTS_UAPSD = 1<<17,
977 IEEE80211_HW_REPORTS_TX_ACK_STATUS = 1<<18, 1037 IEEE80211_HW_REPORTS_TX_ACK_STATUS = 1<<18,
1038 IEEE80211_HW_CONNECTION_MONITOR = 1<<19,
1039 IEEE80211_HW_SUPPORTS_CQM_RSSI = 1<<20,
978}; 1040};
979 1041
980/** 1042/**
@@ -1591,6 +1653,11 @@ enum ieee80211_ampdu_mlme_action {
1591 * @flush: Flush all pending frames from the hardware queue, making sure 1653 * @flush: Flush all pending frames from the hardware queue, making sure
1592 * that the hardware queues are empty. If the parameter @drop is set 1654 * that the hardware queues are empty. If the parameter @drop is set
1593 * to %true, pending frames may be dropped. The callback can sleep. 1655 * to %true, pending frames may be dropped. The callback can sleep.
1656 *
1657 * @channel_switch: Drivers that need (or want) to offload the channel
1658 * switch operation for CSAs received from the AP may implement this
1659 * callback. They must then call ieee80211_chswitch_done() to indicate
1660 * completion of the channel switch.
1594 */ 1661 */
1595struct ieee80211_ops { 1662struct ieee80211_ops {
1596 int (*tx)(struct ieee80211_hw *hw, struct sk_buff *skb); 1663 int (*tx)(struct ieee80211_hw *hw, struct sk_buff *skb);
@@ -1606,7 +1673,7 @@ struct ieee80211_ops {
1606 struct ieee80211_bss_conf *info, 1673 struct ieee80211_bss_conf *info,
1607 u32 changed); 1674 u32 changed);
1608 u64 (*prepare_multicast)(struct ieee80211_hw *hw, 1675 u64 (*prepare_multicast)(struct ieee80211_hw *hw,
1609 int mc_count, struct dev_addr_list *mc_list); 1676 struct netdev_hw_addr_list *mc_list);
1610 void (*configure_filter)(struct ieee80211_hw *hw, 1677 void (*configure_filter)(struct ieee80211_hw *hw,
1611 unsigned int changed_flags, 1678 unsigned int changed_flags,
1612 unsigned int *total_flags, 1679 unsigned int *total_flags,
@@ -1621,7 +1688,7 @@ struct ieee80211_ops {
1621 struct ieee80211_key_conf *conf, 1688 struct ieee80211_key_conf *conf,
1622 struct ieee80211_sta *sta, 1689 struct ieee80211_sta *sta,
1623 u32 iv32, u16 *phase1key); 1690 u32 iv32, u16 *phase1key);
1624 int (*hw_scan)(struct ieee80211_hw *hw, 1691 int (*hw_scan)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
1625 struct cfg80211_scan_request *req); 1692 struct cfg80211_scan_request *req);
1626 void (*sw_scan_start)(struct ieee80211_hw *hw); 1693 void (*sw_scan_start)(struct ieee80211_hw *hw);
1627 void (*sw_scan_complete)(struct ieee80211_hw *hw); 1694 void (*sw_scan_complete)(struct ieee80211_hw *hw);
@@ -1646,13 +1713,16 @@ struct ieee80211_ops {
1646 struct ieee80211_vif *vif, 1713 struct ieee80211_vif *vif,
1647 enum ieee80211_ampdu_mlme_action action, 1714 enum ieee80211_ampdu_mlme_action action,
1648 struct ieee80211_sta *sta, u16 tid, u16 *ssn); 1715 struct ieee80211_sta *sta, u16 tid, u16 *ssn);
1649 1716 int (*get_survey)(struct ieee80211_hw *hw, int idx,
1717 struct survey_info *survey);
1650 void (*rfkill_poll)(struct ieee80211_hw *hw); 1718 void (*rfkill_poll)(struct ieee80211_hw *hw);
1651 void (*set_coverage_class)(struct ieee80211_hw *hw, u8 coverage_class); 1719 void (*set_coverage_class)(struct ieee80211_hw *hw, u8 coverage_class);
1652#ifdef CONFIG_NL80211_TESTMODE 1720#ifdef CONFIG_NL80211_TESTMODE
1653 int (*testmode_cmd)(struct ieee80211_hw *hw, void *data, int len); 1721 int (*testmode_cmd)(struct ieee80211_hw *hw, void *data, int len);
1654#endif 1722#endif
1655 void (*flush)(struct ieee80211_hw *hw, bool drop); 1723 void (*flush)(struct ieee80211_hw *hw, bool drop);
1724 void (*channel_switch)(struct ieee80211_hw *hw,
1725 struct ieee80211_channel_switch *ch_switch);
1656}; 1726};
1657 1727
1658/** 1728/**
@@ -1802,7 +1872,10 @@ void ieee80211_restart_hw(struct ieee80211_hw *hw);
1802 * ieee80211_rx - receive frame 1872 * ieee80211_rx - receive frame
1803 * 1873 *
1804 * Use this function to hand received frames to mac80211. The receive 1874 * Use this function to hand received frames to mac80211. The receive
1805 * buffer in @skb must start with an IEEE 802.11 header. 1875 * buffer in @skb must start with an IEEE 802.11 header. In case of a
1876 * paged @skb is used, the driver is recommended to put the ieee80211
1877 * header of the frame on the linear part of the @skb to avoid memory
1878 * allocation and/or memcpy by the stack.
1806 * 1879 *
1807 * This function may not be called in IRQ context. Calls to this function 1880 * This function may not be called in IRQ context. Calls to this function
1808 * for a single hardware must be synchronized against each other. Calls to 1881 * for a single hardware must be synchronized against each other. Calls to
@@ -2364,12 +2437,52 @@ void ieee80211_sta_block_awake(struct ieee80211_hw *hw,
2364 * 2437 *
2365 * @vif: &struct ieee80211_vif pointer from the add_interface callback. 2438 * @vif: &struct ieee80211_vif pointer from the add_interface callback.
2366 * 2439 *
2367 * When beacon filtering is enabled with IEEE80211_HW_BEACON_FILTERING and 2440 * When beacon filtering is enabled with %IEEE80211_HW_BEACON_FILTERING and
2368 * IEEE80211_CONF_PS is set, the driver needs to inform whenever the 2441 * %IEEE80211_CONF_PS is set, the driver needs to inform whenever the
2369 * hardware is not receiving beacons with this function. 2442 * hardware is not receiving beacons with this function.
2370 */ 2443 */
2371void ieee80211_beacon_loss(struct ieee80211_vif *vif); 2444void ieee80211_beacon_loss(struct ieee80211_vif *vif);
2372 2445
2446/**
2447 * ieee80211_connection_loss - inform hardware has lost connection to the AP
2448 *
2449 * @vif: &struct ieee80211_vif pointer from the add_interface callback.
2450 *
2451 * When beacon filtering is enabled with %IEEE80211_HW_BEACON_FILTERING, and
2452 * %IEEE80211_CONF_PS and %IEEE80211_HW_CONNECTION_MONITOR are set, the driver
2453 * needs to inform if the connection to the AP has been lost.
2454 *
2455 * This function will cause immediate change to disassociated state,
2456 * without connection recovery attempts.
2457 */
2458void ieee80211_connection_loss(struct ieee80211_vif *vif);
2459
2460/**
2461 * ieee80211_cqm_rssi_notify - inform a configured connection quality monitoring
2462 * rssi threshold triggered
2463 *
2464 * @vif: &struct ieee80211_vif pointer from the add_interface callback.
2465 * @rssi_event: the RSSI trigger event type
2466 * @gfp: context flags
2467 *
2468 * When the %IEEE80211_HW_SUPPORTS_CQM_RSSI is set, and a connection quality
2469 * monitoring is configured with an rssi threshold, the driver will inform
2470 * whenever the rssi level reaches the threshold.
2471 */
2472void ieee80211_cqm_rssi_notify(struct ieee80211_vif *vif,
2473 enum nl80211_cqm_rssi_threshold_event rssi_event,
2474 gfp_t gfp);
2475
2476/**
2477 * ieee80211_chswitch_done - Complete channel switch process
2478 * @vif: &struct ieee80211_vif pointer from the add_interface callback.
2479 * @success: make the channel switch successful or not
2480 *
2481 * Complete the channel switch post-process: set the new operational channel
2482 * and wake up the suspended queues.
2483 */
2484void ieee80211_chswitch_done(struct ieee80211_vif *vif, bool success);
2485
2373/* Rate control API */ 2486/* Rate control API */
2374 2487
2375/** 2488/**