diff mbox

[v1,3/6] mac80211: move flag IEEE80211_TX_CTL_NO_PS_BUFFER into info->control.flags

Message ID 1393164527-13800-4-git-send-email-thomas@net.t-labs.tu-berlin.de (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Thomas Huehn Feb. 23, 2014, 2:08 p.m. UTC
Flag IEEE80211_TX_CTL_NO_PS_BUFFER is only used within the tx path while
ieee80211_tx_info->control is valid. Therefore this patch moves this flag
from info->flags structure into the info->control.flags and renames it to
IEEE80211_TX_CTRL_NO_PS_BUFFER.

Signed-off-by: Benjamin Vahl <bvahl@net.t-labs.tu-berlin.de>
Signed-off-by: Thomas Huehn <thomas@net.t-labs.tu-berlin.de>
---
 drivers/net/wireless/ath/carl9170/tx.c      |    4 +--
 drivers/net/wireless/iwlegacy/4965-mac.c    |    2 +-
 drivers/net/wireless/iwlwifi/dvm/tx.c       |    2 +-
 drivers/net/wireless/iwlwifi/mvm/mac80211.c |    2 +-
 drivers/net/wireless/p54/txrx.c             |    2 +-
 include/net/mac80211.h                      |   48 ++++++++++++---------------
 net/mac80211/mesh_ps.c                      |    6 ++--
 net/mac80211/sta_info.c                     |   13 ++++----
 net/mac80211/tx.c                           |    5 +--
 9 files changed, 41 insertions(+), 43 deletions(-)
diff mbox

Patch

diff --git a/drivers/net/wireless/ath/carl9170/tx.c b/drivers/net/wireless/ath/carl9170/tx.c
index 3c70cc0..37e218f 100644
--- a/drivers/net/wireless/ath/carl9170/tx.c
+++ b/drivers/net/wireless/ath/carl9170/tx.c
@@ -1295,8 +1295,8 @@  static bool carl9170_tx_ps_drop(struct ar9170 *ar, struct sk_buff *skb)
 	tx_info = IEEE80211_SKB_CB(skb);
 
 	if (unlikely(sta_info->sleeping) &&
-	    !(tx_info->flags & (IEEE80211_TX_CTL_NO_PS_BUFFER |
-				IEEE80211_TX_CTL_CLEAR_PS_FILT))) {
+	    !(tx_info->flags & IEEE80211_TX_CTL_CLEAR_PS_FILT) &&
+	    !(tx_info->control.flags & IEEE80211_TX_CTRL_NO_PS_BUFFER)) {
 		rcu_read_unlock();
 
 		if (tx_info->flags & IEEE80211_TX_CTL_AMPDU)
diff --git a/drivers/net/wireless/iwlegacy/4965-mac.c b/drivers/net/wireless/iwlegacy/4965-mac.c
index 43f488a..647a678 100644
--- a/drivers/net/wireless/iwlegacy/4965-mac.c
+++ b/drivers/net/wireless/iwlegacy/4965-mac.c
@@ -1721,7 +1721,7 @@  il4965_tx_skb(struct il_priv *il,
 		sta_priv = (void *)sta->drv_priv;
 
 	if (sta_priv && sta_priv->asleep &&
-	    (info->flags & IEEE80211_TX_CTL_NO_PS_BUFFER)) {
+	    (info->control.flags & IEEE80211_TX_CTRL_NO_PS_BUFFER)) {
 		/*
 		 * This sends an asynchronous command to the device,
 		 * but we can rely on it being processed before the
diff --git a/drivers/net/wireless/iwlwifi/dvm/tx.c b/drivers/net/wireless/iwlwifi/dvm/tx.c
index dbab1d5..4030f97 100644
--- a/drivers/net/wireless/iwlwifi/dvm/tx.c
+++ b/drivers/net/wireless/iwlwifi/dvm/tx.c
@@ -344,7 +344,7 @@  int iwlagn_tx_skb(struct iwl_priv *priv,
 		sta_priv = (void *)sta->drv_priv;
 
 	if (sta_priv && sta_priv->asleep &&
-	    (info->flags & IEEE80211_TX_CTL_NO_PS_BUFFER)) {
+	    (info->control.flags & IEEE80211_TX_CTRL_NO_PS_BUFFER)) {
 		/*
 		 * This sends an asynchronous command to the device,
 		 * but we can rely on it being processed before the
diff --git a/drivers/net/wireless/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/iwlwifi/mvm/mac80211.c
index 7492fc0..2582e3f 100644
--- a/drivers/net/wireless/iwlwifi/mvm/mac80211.c
+++ b/drivers/net/wireless/iwlwifi/mvm/mac80211.c
@@ -439,7 +439,7 @@  static void iwl_mvm_mac_tx(struct ieee80211_hw *hw,
 		goto drop;
 
 	/* treat non-bufferable MMPDUs as broadcast if sta is sleeping */
-	if (unlikely(info->flags & IEEE80211_TX_CTL_NO_PS_BUFFER &&
+	if (unlikely(info->control.flags & IEEE80211_TX_CTRL_NO_PS_BUFFER &&
 		     ieee80211_is_mgmt(hdr->frame_control) &&
 		     !ieee80211_is_deauth(hdr->frame_control) &&
 		     !ieee80211_is_disassoc(hdr->frame_control) &&
diff --git a/drivers/net/wireless/p54/txrx.c b/drivers/net/wireless/p54/txrx.c
index 1b1f0a2..dafed1b 100644
--- a/drivers/net/wireless/p54/txrx.c
+++ b/drivers/net/wireless/p54/txrx.c
@@ -694,7 +694,7 @@  static void p54_tx_80211_header(struct p54_common *priv, struct sk_buff *skb,
 	if (!(info->control.flags & IEEE80211_TX_CTRL_ASSIGN_SEQ))
 		*flags |= P54_HDR_FLAG_DATA_OUT_SEQNR;
 
-	if (info->flags & IEEE80211_TX_CTL_NO_PS_BUFFER)
+	if (info->control.flags & IEEE80211_TX_CTRL_NO_PS_BUFFER)
 		*flags |= P54_HDR_FLAG_DATA_OUT_NOCANCEL;
 
 	if (info->flags & IEEE80211_TX_CTL_CLEAR_PS_FILT)
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index e51190e..352e2629 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -413,9 +413,6 @@  struct ieee80211_bss_conf {
  *	used to indicate that a frame was already retried due to PS
  * @IEEE80211_TX_INTFL_DONT_ENCRYPT: completely internal to mac80211,
  *	used to indicate frame should not be encrypted
- * @IEEE80211_TX_CTL_NO_PS_BUFFER: This frame is a response to a poll
- *	frame (PS-Poll or uAPSD) or a non-bufferable MMPDU and must
- *	be sent although the station is in powersave mode.
  * @IEEE80211_TX_CTL_MORE_FRAMES: More frames will be passed to the
  *	transmit function after the current frame, this can be used
  *	by drivers to kick the DMA queue only if unset or when the
@@ -475,23 +472,22 @@  enum mac80211_tx_info_flags {
 	IEEE80211_TX_INTFL_NEED_TXPROCESSING	= BIT(12),
 	IEEE80211_TX_INTFL_RETRIED		= BIT(13),
 	IEEE80211_TX_INTFL_DONT_ENCRYPT		= BIT(14),
-	IEEE80211_TX_CTL_NO_PS_BUFFER		= BIT(15),
-	IEEE80211_TX_CTL_MORE_FRAMES		= BIT(16),
-	IEEE80211_TX_INTFL_RETRANSMISSION	= BIT(17),
-	IEEE80211_TX_INTFL_MLME_CONN_TX		= BIT(18),
-	IEEE80211_TX_INTFL_NL80211_FRAME_TX	= BIT(19),
-	IEEE80211_TX_CTL_LDPC			= BIT(20),
-	IEEE80211_TX_CTL_STBC			= BIT(21) | BIT(22),
-	IEEE80211_TX_CTL_TX_OFFCHAN		= BIT(23),
-	IEEE80211_TX_INTFL_TKIP_MIC_FAILURE	= BIT(24),
-	IEEE80211_TX_CTL_NO_CCK_RATE		= BIT(25),
-	IEEE80211_TX_STATUS_EOSP		= BIT(26),
-	IEEE80211_TX_CTL_USE_MINRATE		= BIT(27),
-	IEEE80211_TX_CTL_DONTFRAG		= BIT(28),
-	IEEE80211_TX_CTL_PS_RESPONSE		= BIT(29),
+	IEEE80211_TX_CTL_MORE_FRAMES		= BIT(15),
+	IEEE80211_TX_INTFL_RETRANSMISSION	= BIT(16),
+	IEEE80211_TX_INTFL_MLME_CONN_TX		= BIT(17),
+	IEEE80211_TX_INTFL_NL80211_FRAME_TX	= BIT(18),
+	IEEE80211_TX_CTL_LDPC			= BIT(19),
+	IEEE80211_TX_CTL_STBC			= BIT(20) | BIT(21),
+	IEEE80211_TX_CTL_TX_OFFCHAN		= BIT(22),
+	IEEE80211_TX_INTFL_TKIP_MIC_FAILURE	= BIT(23),
+	IEEE80211_TX_CTL_NO_CCK_RATE		= BIT(24),
+	IEEE80211_TX_STATUS_EOSP		= BIT(25),
+	IEEE80211_TX_CTL_USE_MINRATE		= BIT(26),
+	IEEE80211_TX_CTL_DONTFRAG		= BIT(27),
+	IEEE80211_TX_CTL_PS_RESPONSE		= BIT(28),
 };
 
-#define IEEE80211_TX_CTL_STBC_SHIFT		21
+#define IEEE80211_TX_CTL_STBC_SHIFT		20
 
 /**
  * enum mac80211_tx_control_flags - flags to describe transmit control
@@ -517,6 +513,7 @@  enum mac80211_tx_control_flags {
 	IEEE80211_TX_CTRL_PORT_CTRL_PROTO	= BIT(0),
 	IEEE80211_TX_CTRL_ASSIGN_SEQ		= BIT(1),
 	IEEE80211_TX_CTRL_FIRST_FRAGMENT        = BIT(3),
+	IEEE80211_TX_CTRL_NO_PS_BUFFER          = BIT(4),
 };
 
 /*
@@ -528,17 +525,16 @@  enum mac80211_tx_control_flags {
 	IEEE80211_TX_CTL_SEND_AFTER_DTIM | IEEE80211_TX_CTL_AMPDU |	      \
 	IEEE80211_TX_STAT_TX_FILTERED |	IEEE80211_TX_STAT_ACK |		      \
 	IEEE80211_TX_STAT_AMPDU | IEEE80211_TX_STAT_AMPDU_NO_BACK |	      \
-	IEEE80211_TX_CTL_RATE_CTRL_PROBE | IEEE80211_TX_CTL_NO_PS_BUFFER |    \
-	IEEE80211_TX_CTL_MORE_FRAMES | IEEE80211_TX_CTL_LDPC |		      \
-	IEEE80211_TX_CTL_STBC)
+	IEEE80211_TX_CTL_RATE_CTRL_PROBE | IEEE80211_TX_CTL_STBC |	      \
+	IEEE80211_TX_CTL_MORE_FRAMES | IEEE80211_TX_CTL_LDPC)
 
 /*
  * This definition is used to clear all temporary flags, which are only used
  * within the tx path as long as ieee80211_tx_info control is valid and 
  * info->control.flags is used.
  */
-#define IEEE80211_TX_TEMPORARY_CTRL_FLAGS (IEEE80211_TX_CTRL_FIRST_FRAGMENT)
-
+#define IEEE80211_TX_TEMPORARY_CTRL_FLAGS (IEEE80211_TX_CTRL_FIRST_FRAGMENT |  \
+	IEEE80211_TX_CTRL_NO_PS_BUFFER)
 
 /**
  * enum mac80211_rate_control_flags - per-rate flags set by the
@@ -2066,7 +2062,7 @@  void ieee80211_free_txskb(struct ieee80211_hw *hw, struct sk_buff *skb);
  * the station sends a PS-Poll or a uAPSD trigger frame, mac80211
  * will inform the driver of this with the @allow_buffered_frames
  * callback; this callback is optional. mac80211 will then transmit
- * the frames as usual and set the %IEEE80211_TX_CTL_NO_PS_BUFFER
+ * the frames as usual and set the %IEEE80211_TX_CTRL_NO_PS_BUFFER
  * on each frame. The last frame in the service period (or the only
  * response to a PS-Poll) also has %IEEE80211_TX_STATUS_EOSP set to
  * indicate that it ends the service period; as this frame must have
@@ -2075,7 +2071,7 @@  void ieee80211_free_txskb(struct ieee80211_hw *hw, struct sk_buff *skb);
  * marked has having ended and a new one can be started by the peer.
  *
  * Additionally, non-bufferable MMPDUs can also be transmitted by
- * mac80211 with the %IEEE80211_TX_CTL_NO_PS_BUFFER set in them.
+ * mac80211 with the %IEEE80211_TX_CTRL_NO_PS_BUFFER set in them.
  *
  * Another race condition can happen on some devices like iwlwifi
  * when there are frames queued for the station and it wakes up
@@ -2683,7 +2679,7 @@  enum ieee80211_roc_type {
  * @allow_buffered_frames: Prepare device to allow the given number of frames
  *	to go out to the given station. The frames will be sent by mac80211
  *	via the usual TX path after this call. The TX information for frames
- *	released will also have the %IEEE80211_TX_CTL_NO_PS_BUFFER flag set
+ *	released will also have the %IEEE80211_TX_CTRL_NO_PS_BUFFER flag set
  *	and the last one will also have %IEEE80211_TX_STATUS_EOSP set. In case
  *	frames from multiple TIDs are released and the driver might reorder
  *	them between the TIDs, it must set the %IEEE80211_TX_STATUS_EOSP flag
diff --git a/net/mac80211/mesh_ps.c b/net/mac80211/mesh_ps.c
index 2802f9d..6bd9bef 100644
--- a/net/mac80211/mesh_ps.c
+++ b/net/mac80211/mesh_ps.c
@@ -391,8 +391,8 @@  static void mpsp_trigger_send(struct sta_info *sta, bool rspi, bool eosp)
 
 	info = IEEE80211_SKB_CB(skb);
 
-	info->flags |= IEEE80211_TX_CTL_NO_PS_BUFFER |
-		       IEEE80211_TX_CTL_REQ_TX_STATUS;
+	info->flags |= IEEE80211_TX_CTL_REQ_TX_STATUS;
+	info->control.flags |= IEEE80211_TX_CTRL_NO_PS_BUFFER;
 
 	mps_dbg(sdata, "sending MPSP trigger%s%s to %pM\n",
 		rspi ? " RSPI" : "", eosp ? " EOSP" : "", sta->sta.addr);
@@ -499,7 +499,7 @@  static void mps_frame_deliver(struct sta_info *sta, int n_frames)
 		 * STA may still remain is PS mode after this frame
 		 * exchange.
 		 */
-		info->flags |= IEEE80211_TX_CTL_NO_PS_BUFFER;
+		info->control.flags |= IEEE80211_TX_CTRL_NO_PS_BUFFER;
 
 		if (more_data || !skb_queue_is_last(&frames, skb))
 			hdr->frame_control |=
diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c
index decd30c..ca0ca1b 100644
--- a/net/mac80211/sta_info.c
+++ b/net/mac80211/sta_info.c
@@ -1207,10 +1207,11 @@  static void ieee80211_send_null_response(struct ieee80211_sub_if_data *sdata,
 	 * exchange. Also set EOSP to indicate this packet
 	 * ends the poll/service period.
 	 */
-	info->flags |= IEEE80211_TX_CTL_NO_PS_BUFFER |
-		       IEEE80211_TX_CTL_PS_RESPONSE |
-		       IEEE80211_TX_STATUS_EOSP |
-		       IEEE80211_TX_CTL_REQ_TX_STATUS;
+	info->flags |= IEEE80211_TX_CTL_PS_RESPONSE |
+		IEEE80211_TX_STATUS_EOSP |
+		IEEE80211_TX_CTL_REQ_TX_STATUS;
+	
+	info->control.flags |= IEEE80211_TX_CTRL_NO_PS_BUFFER;
 
 	if (call_driver)
 		drv_allow_buffered_frames(local, sta, BIT(tid), 1,
@@ -1359,8 +1360,8 @@  ieee80211_sta_ps_deliver_response(struct sta_info *sta,
 			 * STA may still remain is PS mode after this frame
 			 * exchange.
 			 */
-			info->flags |= IEEE80211_TX_CTL_NO_PS_BUFFER |
-				       IEEE80211_TX_CTL_PS_RESPONSE;
+			info->flags |= IEEE80211_TX_CTL_PS_RESPONSE;
+			info->control.flags |= IEEE80211_TX_CTRL_NO_PS_BUFFER;
 
 			/*
 			 * Use MoreData flag to indicate whether there are
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 28ef21d..4d4c48e 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -470,7 +470,8 @@  ieee80211_tx_h_unicast_ps_buf(struct ieee80211_tx_data *tx)
 
 	if (unlikely((test_sta_flag(sta, WLAN_STA_PS_STA) ||
 		      test_sta_flag(sta, WLAN_STA_PS_DRIVER)) &&
-		     !(info->flags & IEEE80211_TX_CTL_NO_PS_BUFFER))) {
+		     !(info->control.flags &
+		       IEEE80211_TX_CTRL_NO_PS_BUFFER))) {
 		int ac = skb_get_queue_mapping(tx->skb);
 
 		ps_dbg(sta->sdata, "STA %pM aid %d: PS buffer for AC %d\n",
@@ -525,7 +526,7 @@  ieee80211_tx_h_ps_buf(struct ieee80211_tx_data *tx)
 	if (ieee80211_is_mgmt(hdr->frame_control) &&
 	    !ieee80211_is_bufferable_mmpdu(hdr->frame_control)) {
 		if (tx->flags & IEEE80211_TX_UNICAST)
-			info->flags |= IEEE80211_TX_CTL_NO_PS_BUFFER;
+			info->control.flags |= IEEE80211_TX_CTRL_NO_PS_BUFFER;
 		return TX_CONTINUE;
 	}