aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArik Nemtsov <arik@wizery.com>2010-10-25 05:17:44 -0400
committerLuciano Coelho <coelho@ti.com>2011-01-24 15:11:47 -0500
commit203c903cbfbdf23bbb3020b9344dd1ffabcfcb53 (patch)
tree27ee7a1930b6b0067eb69ffbc6852c652d2548d5
parent79b223f4c7ce35fba145c504de12be030cc0007e (diff)
wl12xx: AP mode - add AP specific event
Add STA-remove completion event. Unmask it during boot if operating in AP-mode. Ignore unrelated events in AP-mode. Signed-off-by: Arik Nemtsov <arik@wizery.com> Reviewed-by: Luciano Coelho <coelho@ti.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
-rw-r--r--drivers/net/wireless/wl12xx/boot.c3
-rw-r--r--drivers/net/wireless/wl12xx/event.c7
-rw-r--r--drivers/net/wireless/wl12xx/event.h1
3 files changed, 8 insertions, 3 deletions
diff --git a/drivers/net/wireless/wl12xx/boot.c b/drivers/net/wireless/wl12xx/boot.c
index 4df04f84d7f1..b504367f281f 100644
--- a/drivers/net/wireless/wl12xx/boot.c
+++ b/drivers/net/wireless/wl12xx/boot.c
@@ -431,6 +431,9 @@ static int wl1271_boot_run_firmware(struct wl1271 *wl)
431 PSPOLL_DELIVERY_FAILURE_EVENT_ID | 431 PSPOLL_DELIVERY_FAILURE_EVENT_ID |
432 SOFT_GEMINI_SENSE_EVENT_ID; 432 SOFT_GEMINI_SENSE_EVENT_ID;
433 433
434 if (wl->bss_type == BSS_TYPE_AP_BSS)
435 wl->event_mask |= STA_REMOVE_COMPLETE_EVENT_ID;
436
434 ret = wl1271_event_unmask(wl); 437 ret = wl1271_event_unmask(wl);
435 if (ret < 0) { 438 if (ret < 0) {
436 wl1271_error("EVENT mask setting failed"); 439 wl1271_error("EVENT mask setting failed");
diff --git a/drivers/net/wireless/wl12xx/event.c b/drivers/net/wireless/wl12xx/event.c
index f9146f5242fb..3376a5de09d7 100644
--- a/drivers/net/wireless/wl12xx/event.c
+++ b/drivers/net/wireless/wl12xx/event.c
@@ -186,6 +186,7 @@ static int wl1271_event_process(struct wl1271 *wl, struct event_mailbox *mbox)
186 int ret; 186 int ret;
187 u32 vector; 187 u32 vector;
188 bool beacon_loss = false; 188 bool beacon_loss = false;
189 bool is_ap = (wl->bss_type == BSS_TYPE_AP_BSS);
189 190
190 wl1271_event_mbox_dump(mbox); 191 wl1271_event_mbox_dump(mbox);
191 192
@@ -218,21 +219,21 @@ static int wl1271_event_process(struct wl1271 *wl, struct event_mailbox *mbox)
218 * BSS_LOSE_EVENT, beacon loss has to be reported to the stack. 219 * BSS_LOSE_EVENT, beacon loss has to be reported to the stack.
219 * 220 *
220 */ 221 */
221 if (vector & BSS_LOSE_EVENT_ID) { 222 if ((vector & BSS_LOSE_EVENT_ID) && !is_ap) {
222 wl1271_info("Beacon loss detected."); 223 wl1271_info("Beacon loss detected.");
223 224
224 /* indicate to the stack, that beacons have been lost */ 225 /* indicate to the stack, that beacons have been lost */
225 beacon_loss = true; 226 beacon_loss = true;
226 } 227 }
227 228
228 if (vector & PS_REPORT_EVENT_ID) { 229 if ((vector & PS_REPORT_EVENT_ID) && !is_ap) {
229 wl1271_debug(DEBUG_EVENT, "PS_REPORT_EVENT"); 230 wl1271_debug(DEBUG_EVENT, "PS_REPORT_EVENT");
230 ret = wl1271_event_ps_report(wl, mbox, &beacon_loss); 231 ret = wl1271_event_ps_report(wl, mbox, &beacon_loss);
231 if (ret < 0) 232 if (ret < 0)
232 return ret; 233 return ret;
233 } 234 }
234 235
235 if (vector & PSPOLL_DELIVERY_FAILURE_EVENT_ID) 236 if ((vector & PSPOLL_DELIVERY_FAILURE_EVENT_ID) && !is_ap)
236 wl1271_event_pspoll_delivery_fail(wl); 237 wl1271_event_pspoll_delivery_fail(wl);
237 238
238 if (vector & RSSI_SNR_TRIGGER_0_EVENT_ID) { 239 if (vector & RSSI_SNR_TRIGGER_0_EVENT_ID) {
diff --git a/drivers/net/wireless/wl12xx/event.h b/drivers/net/wireless/wl12xx/event.h
index 6cce0143adb5..fd955f31cec4 100644
--- a/drivers/net/wireless/wl12xx/event.h
+++ b/drivers/net/wireless/wl12xx/event.h
@@ -59,6 +59,7 @@ enum {
59 BSS_LOSE_EVENT_ID = BIT(18), 59 BSS_LOSE_EVENT_ID = BIT(18),
60 REGAINED_BSS_EVENT_ID = BIT(19), 60 REGAINED_BSS_EVENT_ID = BIT(19),
61 ROAMING_TRIGGER_MAX_TX_RETRY_EVENT_ID = BIT(20), 61 ROAMING_TRIGGER_MAX_TX_RETRY_EVENT_ID = BIT(20),
62 STA_REMOVE_COMPLETE_EVENT_ID = BIT(21), /* AP */
62 SOFT_GEMINI_SENSE_EVENT_ID = BIT(22), 63 SOFT_GEMINI_SENSE_EVENT_ID = BIT(22),
63 SOFT_GEMINI_PREDICTION_EVENT_ID = BIT(23), 64 SOFT_GEMINI_PREDICTION_EVENT_ID = BIT(23),
64 SOFT_GEMINI_AVALANCHE_EVENT_ID = BIT(24), 65 SOFT_GEMINI_AVALANCHE_EVENT_ID = BIT(24),