> @@ -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); This code should be in ieee80211_frame_acked() where it doesn't need to check the ACK status. And the mod_timer case is completely useless there anyway, at least the way you've done this now. johannes
Attachment:
signature.asc
Description: This is a digitally signed message part