From: Grazvydas Ignotas Date: Sat, 19 Apr 2014 18:06:09 +0000 (+0300) Subject: wl1251: improve PS report handling X-Git-Tag: sz_161~6 X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-kernel.git;a=commitdiff_plain;h=48f7897661fb92e22369766cdf6729fff74f9139;ds=sidebyside wl1251: improve PS report handling --- diff --git a/drivers/net/wireless/wl1251/event.c b/drivers/net/wireless/wl1251/event.c index bd1e90f113fb..8c70b14b9191 100644 --- a/drivers/net/wireless/wl1251/event.c +++ b/drivers/net/wireless/wl1251/event.c @@ -109,12 +109,17 @@ static int wl1251_event_process(struct wl1251 *wl, struct event_mailbox *mbox) if (ret < 0) wl1251_error("beacon filter enable failed"); - } else if (mbox->ps_status == ENTER_POWER_SAVE_FAIL) - wl->station_mode = STATION_ACTIVE_MODE; - else if (mbox->ps_status == EXIT_POWER_SAVE_FAIL) - wl->station_mode = STATION_POWER_SAVE_MODE; + } else if (wl->ps_transitioning) { + if (mbox->ps_status == ENTER_POWER_SAVE_FAIL) + wl->station_mode = STATION_ACTIVE_MODE; + /* always happens on exit from idle - ignore for now + else if (mbox->ps_status == EXIT_POWER_SAVE_FAIL) + wl->station_mode = STATION_POWER_SAVE_MODE; + */ + } - //wl1251_error("ps_status %d", mbox->ps_status); + //wl1251_error("ps_status %d, mode %d", + // mbox->ps_status, wl->station_mode); wl->ps_transitioning = false; } diff --git a/drivers/net/wireless/wl1251/ps.c b/drivers/net/wireless/wl1251/ps.c index c449857b2313..0dbdd24aa01a 100644 --- a/drivers/net/wireless/wl1251/ps.c +++ b/drivers/net/wireless/wl1251/ps.c @@ -177,8 +177,9 @@ int wl1251_ps_set_mode(struct wl1251 *wl, enum wl1251_station_mode mode) break; } + if (mode != wl->station_mode) + wl->ps_transitioning = true; wl->station_mode = mode; - wl->ps_transitioning = true; wl->ps_change_jiffies = jiffies; return ret;