mac80211: Reset the power save timer from master_start_xmit.
PATCH 1/1 mac80211: Reset the power save timer from master_start_xmit.
When a null data frame is generated from mac80211, it goes through master_start_xmit and not through subif_start_xmit. Hence for the power save timer to be triggered while sending this null data frame also, the timer has to be reset from master_start_xmit.
Signed-off-by Vivek Natarajan <[email protected]>
--- net/mac80211/tx.c | 26 +++++++++++++------------- 1 files changed, 13 insertions(+), 13 deletions(-)
net/mac80211/tx.c +13 -13
@@ -1298,6 +1298,19 @@ int ieee80211_master_start_xmit(struct sk_buff *skb, struct net_device *dev)return 0 ; } +if (!(local->hw.flags &IEEE80211_HW_NO_STACK_DYNAMIC_PS ) && + local->dynamic_ps_timeout >0 ) { +if (local->hw.conf.flags &IEEE80211_CONF_PS ) { +ieee80211_stop_queues_by_reason (&local->hw, +IEEE80211_QUEUE_STOP_REASON_PS ); +queue_work (local->hw.workqueue, + &local->dynamic_ps_disable_work); + } + +mod_timer (&local->dynamic_ps_timer, jiffies + +msecs_to_jiffies (local->dynamic_ps_timeout)); + } +memset (info,0 ,sizeof (*info)); info->flags |=IEEE80211_TX_CTL_REQ_TX_STATUS ;
@@ -1475,19 +1488,6 @@ int ieee80211_subif_start_xmit(struct sk_buff *skb, goto fail; } -if (!(local->hw.flags &IEEE80211_HW_NO_STACK_DYNAMIC_PS ) && - local->dynamic_ps_timeout >0 ) { -if (local->hw.conf.flags &IEEE80211_CONF_PS ) { -ieee80211_stop_queues_by_reason (&local->hw, -IEEE80211_QUEUE_STOP_REASON_PS ); -queue_work (local->hw.workqueue, - &local->dynamic_ps_disable_work); - } - -mod_timer (&local->dynamic_ps_timer, jiffies + -msecs_to_jiffies (local->dynamic_ps_timeout)); - } - nh_pos =skb_network_header (skb) - skb->data; h_pos =skb_transport_header (skb) - skb->data;
Signature · 1 line
1.6.0.1