Search Linux Wireless

[RFC PATCH v4 4/5] mac80211: move dynamic_ps_timeout to hw.conf

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Signed-off-by: Kalle Valo <kalle.valo@xxxxxxxxx>
---

 include/net/mac80211.h     |    5 +++++
 net/mac80211/ieee80211_i.h |    1 -
 net/mac80211/mlme.c        |    4 ++--
 net/mac80211/tx.c          |    4 ++--
 net/mac80211/wext.c        |    8 ++++----
 5 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 89affd8..047b20d 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -546,6 +546,10 @@ enum ieee80211_conf_changed {
  * @power_level: requested transmit power (in dBm)
  * @channel: the channel to tune to
  * @ht: the HT configuration for the device
+ * @dynamic_ps_timeout: Length of the tranmission idle period after the
+ *    power save mode should be enabled. The timeout should be enabled only
+ *    when %IEEE80211_CONF_PS is enabled. If zero, there should be no timeout.
+ *    Unit is millisecond.
  * @long_frame_max_tx_count: Maximum number of transmissions for a "long" frame
  *    (a frame not RTS protected), called "dot11LongRetryLimit" in 802.11,
  *    but actually means the number of transmissions not the number of retries
@@ -560,6 +564,7 @@ struct ieee80211_conf {
 
 	u16 listen_interval;
 	bool radio_enabled;
+	int dynamic_ps_timeout;
 
 	u8 long_frame_max_tx_count, short_frame_max_tx_count;
 
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index 83b4b08..f03261b 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -690,7 +690,6 @@ struct ieee80211_local {
 	unsigned int wmm_acm; /* bit field of ACM bits (BIT(802.1D tag)) */
 
 	bool powersave;
-	int dynamic_ps_timeout;
 	struct work_struct dynamic_ps_enable_work;
 	struct work_struct dynamic_ps_disable_work;
 	struct timer_list dynamic_ps_timer;
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index ee71b12..add3553 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -747,9 +747,9 @@ static void ieee80211_set_associated(struct ieee80211_sub_if_data *sdata,
 	ieee80211_bss_info_change_notify(sdata, bss_info_changed);
 
 	if (local->powersave) {
-		if (local->dynamic_ps_timeout > 0)
+		if (local->hw.conf.dynamic_ps_timeout > 0)
 			mod_timer(&local->dynamic_ps_timer, jiffies +
-				  msecs_to_jiffies(local->dynamic_ps_timeout));
+				  msecs_to_jiffies(local->hw.conf.dynamic_ps_timeout));
 		else {
 			conf->flags |= IEEE80211_CONF_PS;
 			ieee80211_hw_config(local,
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 9444a06..de3283b 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -1477,7 +1477,7 @@ int ieee80211_subif_start_xmit(struct sk_buff *skb,
 	}
 
 	if ((local->hw.flags & IEEE80211_HW_NO_DYNAMIC_PS) &&
-	    local->dynamic_ps_timeout > 0) {
+	    local->hw.conf.dynamic_ps_timeout > 0) {
 		if (local->hw.conf.flags & IEEE80211_CONF_PS) {
 			netif_tx_stop_all_queues(local->mdev);
 			queue_work(local->hw.workqueue,
@@ -1485,7 +1485,7 @@ int ieee80211_subif_start_xmit(struct sk_buff *skb,
 		}
 
 		mod_timer(&local->dynamic_ps_timer, jiffies +
-			  msecs_to_jiffies(local->dynamic_ps_timeout));
+			  msecs_to_jiffies(local->hw.conf.dynamic_ps_timeout));
 	}
 
 	nh_pos = skb_network_header(skb) - skb->data;
diff --git a/net/mac80211/wext.c b/net/mac80211/wext.c
index a666ced..c4319cc 100644
--- a/net/mac80211/wext.c
+++ b/net/mac80211/wext.c
@@ -979,20 +979,20 @@ static int ieee80211_ioctl_siwpower(struct net_device *dev,
 		timeout = wrq->value / 1000;
 
 set:
-	if (ps == local->powersave && timeout == local->dynamic_ps_timeout)
+	if (ps == local->powersave && timeout == conf->dynamic_ps_timeout)
 		return ret;
 
 	local->powersave = ps;
-	local->dynamic_ps_timeout = timeout;
+	conf->dynamic_ps_timeout = timeout;
 
 	if (sdata->vif.type != NL80211_IFTYPE_STATION)
 		return ret;
 
 	if (sdata->u.sta.flags & IEEE80211_STA_ASSOCIATED) {
 		if ((local->hw.flags & IEEE80211_HW_NO_DYNAMIC_PS) &&
-		    local->dynamic_ps_timeout > 0)
+		    conf->dynamic_ps_timeout > 0)
 			mod_timer(&local->dynamic_ps_timer, jiffies +
-				  msecs_to_jiffies(local->dynamic_ps_timeout));
+				  msecs_to_jiffies(conf->dynamic_ps_timeout));
 		else {
 			if (local->powersave)
 				conf->flags |= IEEE80211_CONF_PS;

--
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

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux