diff options
Diffstat (limited to 'include/net/mac80211.h')
-rw-r--r-- | include/net/mac80211.h | 54 |
1 files changed, 52 insertions, 2 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 936bc410d061..1a8f50af49a0 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -144,6 +144,7 @@ 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 | ||
147 | */ | 148 | */ |
148 | enum ieee80211_bss_change { | 149 | enum ieee80211_bss_change { |
149 | BSS_CHANGED_ASSOC = 1<<0, | 150 | BSS_CHANGED_ASSOC = 1<<0, |
@@ -156,6 +157,7 @@ enum ieee80211_bss_change { | |||
156 | BSS_CHANGED_BSSID = 1<<7, | 157 | BSS_CHANGED_BSSID = 1<<7, |
157 | BSS_CHANGED_BEACON = 1<<8, | 158 | BSS_CHANGED_BEACON = 1<<8, |
158 | BSS_CHANGED_BEACON_ENABLED = 1<<9, | 159 | BSS_CHANGED_BEACON_ENABLED = 1<<9, |
160 | BSS_CHANGED_CQM = 1<<10, | ||
159 | }; | 161 | }; |
160 | 162 | ||
161 | /** | 163 | /** |
@@ -185,6 +187,9 @@ enum ieee80211_bss_change { | |||
185 | * @enable_beacon: whether beaconing should be enabled or not | 187 | * @enable_beacon: whether beaconing should be enabled or not |
186 | * @ht_operation_mode: HT operation mode (like in &struct ieee80211_ht_info). | 188 | * @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. | 189 | * This field is only valid when the channel type is one of the HT types. |
190 | * @cqm_rssi_thold: Connection quality monitor RSSI threshold, a zero value | ||
191 | * implies disabled | ||
192 | * @cqm_rssi_hyst: Connection quality monitor RSSI hysteresis | ||
188 | */ | 193 | */ |
189 | struct ieee80211_bss_conf { | 194 | struct ieee80211_bss_conf { |
190 | const u8 *bssid; | 195 | const u8 *bssid; |
@@ -202,6 +207,8 @@ struct ieee80211_bss_conf { | |||
202 | u64 timestamp; | 207 | u64 timestamp; |
203 | u32 basic_rates; | 208 | u32 basic_rates; |
204 | u16 ht_operation_mode; | 209 | u16 ht_operation_mode; |
210 | s32 cqm_rssi_thold; | ||
211 | u32 cqm_rssi_hyst; | ||
205 | }; | 212 | }; |
206 | 213 | ||
207 | /** | 214 | /** |
@@ -954,6 +961,17 @@ enum ieee80211_tkip_key_type { | |||
954 | * Hardware can provide ack status reports of Tx frames to | 961 | * Hardware can provide ack status reports of Tx frames to |
955 | * the stack. | 962 | * the stack. |
956 | * | 963 | * |
964 | * @IEEE80211_HW_CONNECTION_MONITOR: | ||
965 | * The hardware performs its own connection monitoring, including | ||
966 | * periodic keep-alives to the AP and probing the AP on beacon loss. | ||
967 | * When this flag is set, signaling beacon-loss will cause an immediate | ||
968 | * change to disassociated state. | ||
969 | * | ||
970 | * @IEEE80211_HW_SUPPORTS_CQM_RSSI: | ||
971 | * Hardware can do connection quality monitoring - i.e. it can monitor | ||
972 | * connection quality related parameters, such as the RSSI level and | ||
973 | * provide notifications if configured trigger levels are reached. | ||
974 | * | ||
957 | */ | 975 | */ |
958 | enum ieee80211_hw_flags { | 976 | enum ieee80211_hw_flags { |
959 | IEEE80211_HW_HAS_RATE_CONTROL = 1<<0, | 977 | IEEE80211_HW_HAS_RATE_CONTROL = 1<<0, |
@@ -975,6 +993,8 @@ enum ieee80211_hw_flags { | |||
975 | IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS = 1<<16, | 993 | IEEE80211_HW_SUPPORTS_DYNAMIC_SMPS = 1<<16, |
976 | IEEE80211_HW_SUPPORTS_UAPSD = 1<<17, | 994 | IEEE80211_HW_SUPPORTS_UAPSD = 1<<17, |
977 | IEEE80211_HW_REPORTS_TX_ACK_STATUS = 1<<18, | 995 | IEEE80211_HW_REPORTS_TX_ACK_STATUS = 1<<18, |
996 | IEEE80211_HW_CONNECTION_MONITOR = 1<<19, | ||
997 | IEEE80211_HW_SUPPORTS_CQM_RSSI = 1<<20, | ||
978 | }; | 998 | }; |
979 | 999 | ||
980 | /** | 1000 | /** |
@@ -2364,12 +2384,42 @@ void ieee80211_sta_block_awake(struct ieee80211_hw *hw, | |||
2364 | * | 2384 | * |
2365 | * @vif: &struct ieee80211_vif pointer from the add_interface callback. | 2385 | * @vif: &struct ieee80211_vif pointer from the add_interface callback. |
2366 | * | 2386 | * |
2367 | * When beacon filtering is enabled with IEEE80211_HW_BEACON_FILTERING and | 2387 | * When beacon filtering is enabled with %IEEE80211_HW_BEACON_FILTERING and |
2368 | * IEEE80211_CONF_PS is set, the driver needs to inform whenever the | 2388 | * %IEEE80211_CONF_PS is set, the driver needs to inform whenever the |
2369 | * hardware is not receiving beacons with this function. | 2389 | * hardware is not receiving beacons with this function. |
2370 | */ | 2390 | */ |
2371 | void ieee80211_beacon_loss(struct ieee80211_vif *vif); | 2391 | void ieee80211_beacon_loss(struct ieee80211_vif *vif); |
2372 | 2392 | ||
2393 | /** | ||
2394 | * ieee80211_connection_loss - inform hardware has lost connection to the AP | ||
2395 | * | ||
2396 | * @vif: &struct ieee80211_vif pointer from the add_interface callback. | ||
2397 | * | ||
2398 | * When beacon filtering is enabled with %IEEE80211_HW_BEACON_FILTERING, and | ||
2399 | * %IEEE80211_CONF_PS and %IEEE80211_HW_CONNECTION_MONITOR are set, the driver | ||
2400 | * needs to inform if the connection to the AP has been lost. | ||
2401 | * | ||
2402 | * This function will cause immediate change to disassociated state, | ||
2403 | * without connection recovery attempts. | ||
2404 | */ | ||
2405 | void ieee80211_connection_loss(struct ieee80211_vif *vif); | ||
2406 | |||
2407 | /** | ||
2408 | * ieee80211_cqm_rssi_notify - inform a configured connection quality monitoring | ||
2409 | * rssi threshold triggered | ||
2410 | * | ||
2411 | * @vif: &struct ieee80211_vif pointer from the add_interface callback. | ||
2412 | * @rssi_event: the RSSI trigger event type | ||
2413 | * @gfp: context flags | ||
2414 | * | ||
2415 | * When the %IEEE80211_HW_SUPPORTS_CQM_RSSI is set, and a connection quality | ||
2416 | * monitoring is configured with an rssi threshold, the driver will inform | ||
2417 | * whenever the rssi level reaches the threshold. | ||
2418 | */ | ||
2419 | void ieee80211_cqm_rssi_notify(struct ieee80211_vif *vif, | ||
2420 | enum nl80211_cqm_rssi_threshold_event rssi_event, | ||
2421 | gfp_t gfp); | ||
2422 | |||
2373 | /* Rate control API */ | 2423 | /* Rate control API */ |
2374 | 2424 | ||
2375 | /** | 2425 | /** |