X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=drivers%2Fnet%2Fwireless%2Fwl1251%2Fps.c;h=5c5c3ff76f950b4d5c32d0d0675b0f38578f22cc;hb=fc9d1882a7b4ca1182f1b6f12aa87281a2a54f17;hp=0dbdd24aa01a181a1a84c1785cf0326cf12b6052;hpb=43ec2237a263b793fdc1e741c37b1362441183c2;p=pandora-kernel.git diff --git a/drivers/net/wireless/wl1251/ps.c b/drivers/net/wireless/wl1251/ps.c index 0dbdd24aa01a..5c5c3ff76f95 100644 --- a/drivers/net/wireless/wl1251/ps.c +++ b/drivers/net/wireless/wl1251/ps.c @@ -112,11 +112,13 @@ int wl1251_ps_set_mode(struct wl1251 *wl, enum wl1251_station_mode mode) case STATION_POWER_SAVE_MODE: wl1251_debug(DEBUG_PSM, "entering psm"); - ret = wl1251_acx_wake_up_conditions(wl, - WAKE_UP_EVENT_DTIM_BITMAP, - wl->listen_int); - if (ret < 0) - return ret; + if (wl->long_doze_mode != wl->long_doze_mode_set) { + wl1251_acx_wake_up_conditions(wl, wl->long_doze_mode + ? WAKE_UP_EVENT_DTIM_BITMAP + : WAKE_UP_EVENT_BEACON_BITMAP, + wl->listen_int); + wl->long_doze_mode_set = wl->long_doze_mode; + } #if 0 /* problems seen on one router */ ret = wl1251_acx_bet_enable(wl, WL1251_ACX_BET_ENABLE, @@ -140,7 +142,7 @@ int wl1251_ps_set_mode(struct wl1251 *wl, enum wl1251_station_mode mode) if (ret < 0) return ret; - ret = wl1251_cmd_template_set(wl, CMD_DISCONNECT, NULL, 0); + ret = wl1251_cmd_disconnect(wl); if (ret < 0) return ret; break; @@ -165,12 +167,6 @@ int wl1251_ps_set_mode(struct wl1251 *wl, enum wl1251_station_mode mode) if (ret < 0) return ret; - ret = wl1251_acx_wake_up_conditions(wl, - WAKE_UP_EVENT_DTIM_BITMAP, - wl->listen_int); - if (ret < 0) - return ret; - ret = wl1251_cmd_ps_mode(wl, CHIP_ACTIVE_MODE); if (ret < 0) return ret;