aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/wl12xx/event.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/wl12xx/event.c')
-rw-r--r--drivers/net/wireless/wl12xx/event.c23
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
171static 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
171static void wl1271_event_mbox_dump(struct event_mailbox *mbox) 186static 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)