wl1251: Prepare for idle mode support
[pandora-wifi.git] / drivers / net / wireless / wl12xx / wl1251_ps.c
index 4e4c661..7f14467 100644 (file)
@@ -41,7 +41,7 @@ void wl1251_elp_work(struct work_struct *work)
 
        mutex_lock(&wl->mutex);
 
 
        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");
                goto out;
 
        wl1251_debug(DEBUG_PSM, "chip to elp");
@@ -59,7 +59,7 @@ void wl1251_ps_elp_sleep(struct wl1251 *wl)
 {
        unsigned long delay;
 
 {
        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);
        }
                delay = msecs_to_jiffies(ELP_ENTRY_DELAY);
                ieee80211_queue_delayed_work(wl->hw, &wl->elp_work, delay);
        }
@@ -119,7 +119,7 @@ err:
        return ret;
 }
 
        return ret;
 }
 
-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;
 
 {
        int ret;
 
@@ -143,15 +143,13 @@ int wl1251_ps_set_mode(struct wl1251 *wl, enum wl1251_cmd_ps_mode mode)
                if (ret < 0)
                        return ret;
 
                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;
                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:
                break;
        case STATION_ACTIVE_MODE:
        default:
@@ -178,13 +176,13 @@ int wl1251_ps_set_mode(struct wl1251 *wl, enum wl1251_cmd_ps_mode mode)
                if (ret < 0)
                        return ret;
 
                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;
 
                if (ret < 0)
                        return ret;
 
-               wl->psm = 0;
                break;
        }
                break;
        }
+       wl->station_mode = mode;
 
        return ret;
 }
 
        return ret;
 }