diff options
Diffstat (limited to 'drivers/net/wireless/wl12xx/event.c')
-rw-r--r-- | drivers/net/wireless/wl12xx/event.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/net/wireless/wl12xx/event.c b/drivers/net/wireless/wl12xx/event.c index c3c554cd6580..94bbd00ec31b 100644 --- a/drivers/net/wireless/wl12xx/event.c +++ b/drivers/net/wireless/wl12xx/event.c | |||
@@ -168,6 +168,21 @@ static void wl1271_event_rssi_trigger(struct wl1271 *wl, | |||
168 | wl->last_rssi_event = event; | 168 | wl->last_rssi_event = event; |
169 | } | 169 | } |
170 | 170 | ||
171 | static void wl1271_stop_ba_event(struct wl1271 *wl, u8 ba_allowed) | ||
172 | { | ||
173 | /* Convert the value to bool */ | ||
174 | wl->ba_allowed = !!ba_allowed; | ||
175 | |||
176 | /* | ||
177 | * Return in case: | ||
178 | * there are not BA open or the event indication is to allowed BA | ||
179 | */ | ||
180 | if ((!wl->ba_rx_bitmap) || (wl->ba_allowed)) | ||
181 | return; | ||
182 | |||
183 | ieee80211_stop_rx_ba_session(wl->vif, wl->ba_rx_bitmap, wl->bssid); | ||
184 | } | ||
185 | |||
171 | static void wl1271_event_mbox_dump(struct event_mailbox *mbox) | 186 | static void wl1271_event_mbox_dump(struct event_mailbox *mbox) |
172 | { | 187 | { |
173 | wl1271_debug(DEBUG_EVENT, "MBOX DUMP:"); | 188 | wl1271_debug(DEBUG_EVENT, "MBOX DUMP:"); |
@@ -252,6 +267,14 @@ static int wl1271_event_process(struct wl1271 *wl, struct event_mailbox *mbox) | |||
252 | wl1271_event_rssi_trigger(wl, mbox); | 267 | wl1271_event_rssi_trigger(wl, mbox); |
253 | } | 268 | } |
254 | 269 | ||
270 | if ((vector & BA_SESSION_RX_CONSTRAINT_EVENT_ID) && !is_ap) { | ||
271 | wl1271_debug(DEBUG_EVENT, "BA_SESSION_RX_CONSTRAINT_EVENT_ID. " | ||
272 | "ba_allowed = 0x%x", mbox->ba_allowed); | ||
273 | |||
274 | if (wl->vif) | ||
275 | wl1271_stop_ba_event(wl, mbox->ba_allowed); | ||
276 | } | ||
277 | |||
255 | if ((vector & DUMMY_PACKET_EVENT_ID) && !is_ap) { | 278 | if ((vector & DUMMY_PACKET_EVENT_ID) && !is_ap) { |
256 | wl1271_debug(DEBUG_EVENT, "DUMMY_PACKET_ID_EVENT_ID"); | 279 | wl1271_debug(DEBUG_EVENT, "DUMMY_PACKET_ID_EVENT_ID"); |
257 | if (wl->vif) | 280 | if (wl->vif) |