The fw sends the CHANGE_AUTO_MODE_TIMEOUT_EVENT_ID event when it wants the driver to increase the dynamic ps (auto-mode) timeout (or restore the original timeout). unmask CHANGE_AUTO_MODE_TIMEOUT_EVENT_ID, and increase/restore the dynamic ps default timeout upon getting this event. Signed-off-by: Eliad Peller <eliad@xxxxxxxxxx> --- drivers/net/wireless/wl12xx/boot.c | 1 + drivers/net/wireless/wl12xx/event.c | 8 ++++++++ 2 files changed, 9 insertions(+), 0 deletions(-) diff --git a/drivers/net/wireless/wl12xx/boot.c b/drivers/net/wireless/wl12xx/boot.c index 6d5664b..13798a3 100644 --- a/drivers/net/wireless/wl12xx/boot.c +++ b/drivers/net/wireless/wl12xx/boot.c @@ -496,6 +496,7 @@ static int wl1271_boot_run_firmware(struct wl1271 *wl) RSSI_SNR_TRIGGER_0_EVENT_ID | PSPOLL_DELIVERY_FAILURE_EVENT_ID | SOFT_GEMINI_SENSE_EVENT_ID | + CHANGE_AUTO_MODE_TIMEOUT_EVENT_ID | PERIODIC_SCAN_REPORT_EVENT_ID | PERIODIC_SCAN_COMPLETE_EVENT_ID | DUMMY_PACKET_EVENT_ID | diff --git a/drivers/net/wireless/wl12xx/event.c b/drivers/net/wireless/wl12xx/event.c index c73fe4c..79ff3bb 100644 --- a/drivers/net/wireless/wl12xx/event.c +++ b/drivers/net/wireless/wl12xx/event.c @@ -258,6 +258,14 @@ static int wl1271_event_process(struct wl1271 *wl, struct event_mailbox *mbox) wl12xx_event_soft_gemini_sense(wl, mbox->soft_gemini_sense_info); + if (vector & CHANGE_AUTO_MODE_TIMEOUT_EVENT_ID && + wl->bss_type == BSS_TYPE_STA_BSS) { + int timeout = -1; + if (mbox->change_auto_mode_timeout) + timeout = 500; + ieee80211_set_dyn_ps_timeout(wl->vif, timeout); + } + /* * The BSS_LOSE_EVENT_ID is only needed while psm (and hence beacon * filtering) is enabled. Without PSM, the stack will receive all -- 1.7.6.401.g6a319 -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html