Commit d063ed0f authored by Vivek Natarajan's avatar Vivek Natarajan Committed by John W. Linville
Browse files

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: default avatarVivek Natarajan <vnatarajan@atheros.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent eb46936b
Loading
Loading
Loading
Loading
+13 −13
Original line number Diff line number Diff line
@@ -1296,6 +1296,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;