On Fri, Feb 5, 2010 at 7:32 PM, Johannes Berg <johannes@xxxxxxxxxxxxxxxx> wrote: > On Fri, 2010-02-05 at 19:29 +0530, Vivek Natarajan wrote: >> On Fri, Feb 5, 2010 at 7:11 PM, Johannes Berg <johannes@xxxxxxxxxxxxxxxx> wrote: >> > >> >> @@ -275,6 +274,19 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb) >> >> local->dot11FailedCount++; >> >> } >> >> >> >> + if (ieee80211_is_nullfunc(fc) && ieee80211_has_pm(fc) && >> >> + (local->hw.flags & IEEE80211_HW_TX_STATUS) && >> >> + (local->hw.conf.flags & IEEE80211_CONF_PS)) { >> >> + if (info->flags & IEEE80211_TX_STAT_ACK) { >> >> + local->ps_sdata->u.mgd.flags |= >> >> + IEEE80211_STA_NULLFUNC_ACKED; >> >> + ieee80211_queue_work(&local->hw, >> >> + &local->dynamic_ps_enable_work); >> >> + } else >> >> + mod_timer(&local->dynamic_ps_timer, jiffies + >> >> + msecs_to_jiffies(10)); >> >> + } >> >> + >> >> /* this was a transmitted frame, but now we want to reuse it */ >> >> skb_orphan(skb); >> > And the mod_timer case is completely useless there anyway, at least the >> > way you've done this now. >> Ah, right! Thanks for pointing it out. > > I htink you should only set CONF_PS after the frame is ACKed, otherwise > internal stuff might be confused too? I thought about that. But we may not be able to differentiate if the null frame is for power save or for fake_sleep during scannig. Vivek. -- 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