int ret = 0;
 
        lbs_deb_enter(LBS_DEB_HOST);
-
-       lbs_deb_host("SEND_SLEEPC_CMD: before download, cmd size %d\n",
-              size);
-
        lbs_deb_hex(LBS_DEB_HOST, "sleep confirm command", cmdptr, size);
 
        ret = priv->hw_host_to_card(priv, MVMS_CMD, cmdptr, size);
                               priv->intcounter);
                }
                spin_unlock_irqrestore(&priv->driver_lock, flags);
-
-               lbs_deb_host("SEND_SLEEPC_CMD: sent confirm sleep\n");
        }
 
        lbs_deb_leave_args(LBS_DEB_HOST, "ret %d", ret);
  *  @param psmode      Power Saving mode
  *  @return            n/a
  */
-void lbs_ps_confirm_sleep(struct lbs_private *priv, u16 psmode)
+void lbs_ps_confirm_sleep(struct lbs_private *priv)
 {
        unsigned long flags =0;
-       u8 allowed = 1;
+       int allowed = 1;
 
        lbs_deb_enter(LBS_DEB_HOST);
 
 
        eventcause = priv->eventcause >> SBI_EVENT_CAUSE_SHIFT;
        spin_unlock_irq(&priv->driver_lock);
 
-       lbs_deb_cmd("event cause %d\n", eventcause);
-
        switch (eventcause) {
        case MACREG_INT_CODE_LINK_SENSED:
-               lbs_deb_cmd("EVENT: MACREG_INT_CODE_LINK_SENSED\n");
+               lbs_deb_cmd("EVENT: link sensed\n");
                break;
 
        case MACREG_INT_CODE_DEAUTHENTICATED:
                break;
 
        case MACREG_INT_CODE_PS_SLEEP:
-               lbs_deb_cmd("EVENT: sleep\n");
+               lbs_deb_cmd("EVENT: ps sleep\n");
 
                /* handle unexpected PS SLEEP event */
                if (priv->psstate == PS_STATE_FULL_POWER) {
                }
                priv->psstate = PS_STATE_PRE_SLEEP;
 
-               lbs_ps_confirm_sleep(priv, (u16) priv->psmode);
+               lbs_ps_confirm_sleep(priv);
 
                break;
 
        case MACREG_INT_CODE_HOST_AWAKE:
-               lbs_deb_cmd("EVENT: HOST_AWAKE\n");
+               lbs_deb_cmd("EVENT: host awake\n");
                lbs_send_confirmwake(priv);
                break;
 
        case MACREG_INT_CODE_PS_AWAKE:
-               lbs_deb_cmd("EVENT: awake\n");
+               lbs_deb_cmd("EVENT: ps awake\n");
                /* handle unexpected PS AWAKE event */
                if (priv->psstate == PS_STATE_FULL_POWER) {
                        lbs_deb_cmd(
                lbs_deb_cmd("EVENT: MULTICAST MIC ERROR\n");
                handle_mic_failureevent(priv, MACREG_INT_CODE_MIC_ERR_MULTICAST);
                break;
+
        case MACREG_INT_CODE_MIB_CHANGED:
+               lbs_deb_cmd("EVENT: MIB CHANGED\n");
+               break;
        case MACREG_INT_CODE_INIT_DONE:
+               lbs_deb_cmd("EVENT: INIT DONE\n");
                break;
-
        case MACREG_INT_CODE_ADHOC_BCN_LOST:
                lbs_deb_cmd("EVENT: ADHOC beacon lost\n");
                break;
-
        case MACREG_INT_CODE_RSSI_LOW:
                lbs_pr_alert("EVENT: rssi low\n");
                break;
 
 int lbs_process_rxed_packet(struct lbs_private *priv, struct sk_buff *);
 
 void lbs_ps_sleep(struct lbs_private *priv, int wait_option);
-void lbs_ps_confirm_sleep(struct lbs_private *priv, u16 psmode);
+void lbs_ps_confirm_sleep(struct lbs_private *priv);
 void lbs_ps_wakeup(struct lbs_private *priv, int wait_option);
 
 struct chan_freq_power *lbs_find_cfp_by_band_and_channel(
 
                goto out3;
        }
 
+       /* The firmware for the CF card supports powersave */
+       priv->ps_supported = 1;
+
        ret = 0;
        goto out;
 
 
                                lbs_deb_thread("main_thread: PRE_SLEEP--intcounter=%d currenttxskb=%p dnld_sent=%d cur_cmd=%p, confirm now\n",
                                               priv->intcounter, priv->currenttxskb, priv->dnld_sent, priv->cur_cmd);
 
-                               lbs_ps_confirm_sleep(priv, (u16) priv->psmode);
+                               lbs_ps_confirm_sleep(priv);
                        } else {
                                /* workaround for firmware sending
                                 * deauth/linkloss event immediately
 
        range->num_encoding_sizes = 2;
        range->max_encoding_tokens = 4;
 
-       range->min_pmp = 1000000;
-       range->max_pmp = 120000000;
-       range->min_pmt = 1000;
-       range->max_pmt = 1000000;
-       range->pmp_flags = IW_POWER_PERIOD;
-       range->pmt_flags = IW_POWER_TIMEOUT;
-       range->pm_capa = IW_POWER_PERIOD | IW_POWER_TIMEOUT | IW_POWER_ALL_R;
+       /*
+        * Right now we support only "iwconfig ethX power on|off"
+        */
+       range->pm_capa = IW_POWER_ON;
 
        /*
         * Minimum version we recommend
                          struct iw_param *vwrq, char *extra)
 {
        struct lbs_private *priv = dev->priv;
-       int mode;
 
        lbs_deb_enter(LBS_DEB_WEXT);
 
-       mode = priv->psmode;
-
-       if ((vwrq->disabled = (mode == LBS802_11POWERMODECAM))
-           || priv->connect_status == LBS_DISCONNECTED)
-       {
-               goto out;
-       }
-
        vwrq->value = 0;
+       vwrq->flags = 0;
+       vwrq->disabled = priv->psmode == LBS802_11POWERMODECAM
+               || priv->connect_status == LBS_DISCONNECTED;
 
-out:
        lbs_deb_leave(LBS_DEB_WEXT);
        return 0;
 }