diff options
author | Arik Nemtsov <arik@wizery.com> | 2010-10-25 05:17:44 -0400 |
---|---|---|
committer | Luciano Coelho <coelho@ti.com> | 2011-01-24 15:11:47 -0500 |
commit | 203c903cbfbdf23bbb3020b9344dd1ffabcfcb53 (patch) | |
tree | 27ee7a1930b6b0067eb69ffbc6852c652d2548d5 | |
parent | 79b223f4c7ce35fba145c504de12be030cc0007e (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.c | 3 | ||||
-rw-r--r-- | drivers/net/wireless/wl12xx/event.c | 7 | ||||
-rw-r--r-- | drivers/net/wireless/wl12xx/event.h | 1 |
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), |