On Wed, 2008-03-19 at 14:25 +0100, Holger Schurig wrote: > * firmware for the CF card supports power saving > * the driver currenly only accept "iwconfig ethX power on|off", so > I fixed what the range wext ioctl reports. > * initialize value/flags in lbs_get_power() > * get rid of unused parameter psmode in lbs_ps_confirm_sleep() > * some minor debug output tweaks > > Signed-off-by: Holger Schurig <hs4233@xxxxxxxxxxxxxxxxxxxx> Acked-by: Dan Williams <dcbw@xxxxxxxxxx> > Index: wireless-testing/drivers/net/wireless/libertas/if_cs.c > =================================================================== > --- wireless-testing.orig/drivers/net/wireless/libertas/if_cs.c 2008-03-19 12:42:12.000000000 +0100 > +++ wireless-testing/drivers/net/wireless/libertas/if_cs.c 2008-03-19 12:44:06.000000000 +0100 > @@ -882,6 +882,9 @@ static int if_cs_probe(struct pcmcia_dev > goto out3; > } > > + /* The firmware for the CF card supports powersave */ > + priv->ps_supported = 1; > + > ret = 0; > goto out; > > Index: wireless-testing/drivers/net/wireless/libertas/wext.c > =================================================================== > --- wireless-testing.orig/drivers/net/wireless/libertas/wext.c 2008-03-19 12:42:12.000000000 +0100 > +++ wireless-testing/drivers/net/wireless/libertas/wext.c 2008-03-19 12:44:06.000000000 +0100 > @@ -656,13 +656,10 @@ static int lbs_get_range(struct net_devi > 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 > @@ -784,21 +781,14 @@ static int lbs_get_power(struct net_devi > 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; > } > Index: wireless-testing/drivers/net/wireless/libertas/cmd.c > =================================================================== > --- wireless-testing.orig/drivers/net/wireless/libertas/cmd.c 2008-03-19 12:42:12.000000000 +0100 > +++ wireless-testing/drivers/net/wireless/libertas/cmd.c 2008-03-19 12:44:06.000000000 +0100 > @@ -1940,10 +1940,6 @@ static int sendconfirmsleep(struct lbs_p > 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); > @@ -1966,8 +1962,6 @@ static int sendconfirmsleep(struct lbs_p > 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); > @@ -2019,10 +2013,10 @@ void lbs_ps_wakeup(struct lbs_private *p > * @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); > > Index: wireless-testing/drivers/net/wireless/libertas/decl.h > =================================================================== > --- wireless-testing.orig/drivers/net/wireless/libertas/decl.h 2008-03-19 12:42:12.000000000 +0100 > +++ wireless-testing/drivers/net/wireless/libertas/decl.h 2008-03-19 12:44:06.000000000 +0100 > @@ -49,7 +49,7 @@ int lbs_set_regiontable(struct lbs_priva > 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( > Index: wireless-testing/drivers/net/wireless/libertas/main.c > =================================================================== > --- wireless-testing.orig/drivers/net/wireless/libertas/main.c 2008-03-19 12:42:12.000000000 +0100 > +++ wireless-testing/drivers/net/wireless/libertas/main.c 2008-03-19 12:44:06.000000000 +0100 > @@ -802,7 +802,7 @@ static int lbs_thread(void *data) > 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 > Index: wireless-testing/drivers/net/wireless/libertas/cmdresp.c > =================================================================== > --- wireless-testing.orig/drivers/net/wireless/libertas/cmdresp.c 2008-03-19 12:42:12.000000000 +0100 > +++ wireless-testing/drivers/net/wireless/libertas/cmdresp.c 2008-03-19 12:44:06.000000000 +0100 > @@ -613,11 +613,9 @@ int lbs_process_event(struct lbs_private > 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: > @@ -636,7 +634,7 @@ int lbs_process_event(struct lbs_private > 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) { > @@ -646,17 +644,17 @@ int lbs_process_event(struct lbs_private > } > 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( > @@ -687,14 +685,16 @@ int lbs_process_event(struct lbs_private > 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; -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html