|
@@ -39,7 +39,7 @@ void wl1251_elp_work(struct work_struct *work)
|
|
|
|
|
|
mutex_lock(&wl->mutex);
|
|
|
|
|
|
- if (wl->elp || !wl->psm)
|
|
|
+ if (wl->elp || wl->station_mode == STATION_ACTIVE_MODE)
|
|
|
goto out;
|
|
|
|
|
|
wl1251_debug(DEBUG_PSM, "chip to elp");
|
|
@@ -57,7 +57,7 @@ void wl1251_ps_elp_sleep(struct wl1251 *wl)
|
|
|
{
|
|
|
unsigned long delay;
|
|
|
|
|
|
- if (wl->psm) {
|
|
|
+ if (wl->station_mode != STATION_ACTIVE_MODE) {
|
|
|
delay = msecs_to_jiffies(ELP_ENTRY_DELAY);
|
|
|
ieee80211_queue_delayed_work(wl->hw, &wl->elp_work, delay);
|
|
|
}
|
|
@@ -104,7 +104,7 @@ int wl1251_ps_elp_wakeup(struct wl1251 *wl)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-int wl1251_ps_set_mode(struct wl1251 *wl, enum wl1251_cmd_ps_mode mode)
|
|
|
+int wl1251_ps_set_mode(struct wl1251 *wl, enum wl1251_station_mode mode)
|
|
|
{
|
|
|
int ret;
|
|
|
|
|
@@ -128,15 +128,13 @@ int wl1251_ps_set_mode(struct wl1251 *wl, enum wl1251_cmd_ps_mode mode)
|
|
|
if (ret < 0)
|
|
|
return ret;
|
|
|
|
|
|
- ret = wl1251_cmd_ps_mode(wl, STATION_POWER_SAVE_MODE);
|
|
|
+ ret = wl1251_cmd_ps_mode(wl, CHIP_POWER_SAVE_MODE);
|
|
|
if (ret < 0)
|
|
|
return ret;
|
|
|
|
|
|
ret = wl1251_acx_sleep_auth(wl, WL1251_PSM_ELP);
|
|
|
if (ret < 0)
|
|
|
return ret;
|
|
|
-
|
|
|
- wl->psm = 1;
|
|
|
break;
|
|
|
case STATION_ACTIVE_MODE:
|
|
|
default:
|
|
@@ -163,13 +161,13 @@ int wl1251_ps_set_mode(struct wl1251 *wl, enum wl1251_cmd_ps_mode mode)
|
|
|
if (ret < 0)
|
|
|
return ret;
|
|
|
|
|
|
- ret = wl1251_cmd_ps_mode(wl, STATION_ACTIVE_MODE);
|
|
|
+ ret = wl1251_cmd_ps_mode(wl, CHIP_ACTIVE_MODE);
|
|
|
if (ret < 0)
|
|
|
return ret;
|
|
|
|
|
|
- wl->psm = 0;
|
|
|
break;
|
|
|
}
|
|
|
+ wl->station_mode = mode;
|
|
|
|
|
|
return ret;
|
|
|
}
|