diff mbox

[v2] mac80211: send {ADD,DEL}BA on AC_VO like other mgmt frames, as per spec

Message ID 1390503994-13496-1-git-send-email-karl.beldan@gmail.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Karl Beldan Jan. 23, 2014, 7:06 p.m. UTC
From: Karl Beldan <karl.beldan@rivierawaves.com>

ATM, {ADD,DEL}BA and BAR frames are sent on the AC matching the TID of
the BA parameters. Johannes recalled [1] that it fixed some races with
the DELBA and indeed this behavior was introduced in [2].
While [2] is right for the BARs, the part queueing the {ADD,DEL}BAs on
their BA params TID AC violates the spec and is more a workaround for
some drivers. Helmut expressed [2] some concerns wrt such drivers, in
particular DELBAs in rt2x00.
ATM, DELBAs are sent after a driver has called (hence "purposely")
ieee80211_start_tx_ba_cb_irqsafe and Johannes and Emmanuel gave [2] some
details wrt intentions behind the split of the IEEE80211_AMPDU_TX_STOP_*
given to the drv ampdu_action supposed to call this function, which
could prove handy to people trying to do the right thing in faulty
drivers (if their fw/hw don't get in their way).

[1] Message-Id: http://mid.gmane.org/1390391564-18481-1-git-send-email-karl.beldan@gmail.com
[2] Commit: cf6bb79ad8287cd9fe87 ("mac80211: Use appropriate TID for sending BAR, ADDBA and DELBA frames")

Signed-off-by: Karl Beldan <karl.beldan@rivierawaves.com>
Cc: Helmut Schaa <helmut.schaa@googlemail.com>
Cc: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
---
 net/mac80211/agg-tx.c | 2 +-
 net/mac80211/ht.c     | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

Comments

Johannes Berg Jan. 23, 2014, 7:15 p.m. UTC | #1
On Thu, 2014-01-23 at 20:06 +0100, Karl Beldan wrote:
> From: Karl Beldan <karl.beldan@rivierawaves.com>
> 
> ATM, {ADD,DEL}BA and BAR frames are sent on the AC matching the TID of
> the BA parameters. Johannes recalled [1] that it fixed some races with
> the DELBA and indeed this behavior was introduced in [2].

Applied. I made some minor edits to the commit log, notably to fix that
you had too many [2] (I guess originally you wanted to link to all the
different emails?)

johannes

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Karl Beldan Jan. 23, 2014, 7:38 p.m. UTC | #2
On Thu, Jan 23, 2014 at 08:15:24PM +0100, Johannes Berg wrote:
> On Thu, 2014-01-23 at 20:06 +0100, Karl Beldan wrote:
> > From: Karl Beldan <karl.beldan@rivierawaves.com>
> > 
> > ATM, {ADD,DEL}BA and BAR frames are sent on the AC matching the TID of
> > the BA parameters. Johannes recalled [1] that it fixed some races with
> > the DELBA and indeed this behavior was introduced in [2].
> 
> Applied. I made some minor edits to the commit log, notably to fix that
> you had too many [2] (I guess originally you wanted to link to all the
> different emails?)
> 
Yes, only the 2 first [2]s were intended [2]s .. in the very end of the
day I had to struggle to write this, I guess it shows.
 
Karl
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/net/mac80211/agg-tx.c b/net/mac80211/agg-tx.c
index 13b7683..ce9633a 100644
--- a/net/mac80211/agg-tx.c
+++ b/net/mac80211/agg-tx.c
@@ -107,7 +107,7 @@  static void ieee80211_send_addba_request(struct ieee80211_sub_if_data *sdata,
 	mgmt->u.action.u.addba_req.start_seq_num =
 					cpu_to_le16(start_seq_num << 4);
 
-	ieee80211_tx_skb_tid(sdata, skb, tid);
+	ieee80211_tx_skb(sdata, skb);
 }
 
 void ieee80211_send_bar(struct ieee80211_vif *vif, u8 *ra, u16 tid, u16 ssn)
diff --git a/net/mac80211/ht.c b/net/mac80211/ht.c
index fab7b91..dc3c280 100644
--- a/net/mac80211/ht.c
+++ b/net/mac80211/ht.c
@@ -375,7 +375,7 @@  void ieee80211_send_delba(struct ieee80211_sub_if_data *sdata,
 	mgmt->u.action.u.delba.params = cpu_to_le16(params);
 	mgmt->u.action.u.delba.reason_code = cpu_to_le16(reason_code);
 
-	ieee80211_tx_skb_tid(sdata, skb, tid);
+	ieee80211_tx_skb(sdata, skb);
 }
 
 void ieee80211_process_delba(struct ieee80211_sub_if_data *sdata,