[PATCH v4 8/8] wifi: brcmsmac: ampdu: document IEEE 802.11n TID requirement

From: Shivesh

Date: Fri Jul 31 2026 - 12:23:25 EST


An XXX comment in brcmsmac_ampdu_tx_add() questioned whether it is
necessary to reject frames whose QoS priority differs from the current
A-MPDU session. IEEE 802.11n (IEEE Std 802.11-2012, section 9.10.1)
requires that all MPDUs within an A-MPDU carry the same TID; mixing
TIDs would violate the Block ACK agreement and cause receiver-side
reassembly failures.

The existing behaviour of returning -ENOSPC to close the current
aggregate and start a new one is therefore required by the standard.
Replace the questioning XXX with a comment referencing the standard.

Signed-off-by: Shivesh <chanelshivesh@xxxxxxxxx>
---
.../wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 1 -
.../net/wireless/broadcom/brcm80211/brcmsmac/ampdu.c | 11 +++++------
2 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
index 2375c2f9d97a..dc4228fb31c1 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -4464,7 +4464,6 @@ brcmf_pmksa_v2_op(struct brcmf_cfg80211_info *cfg, struct brcmf_if *ifp,
return brcmf_fil_iovar_data_set(ifp, "pmkid_info", list, sizeof(*list));
}

-
static __used s32
brcmf_update_pmklist(struct brcmf_cfg80211_info *cfg, struct brcmf_if *ifp)
{
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/ampdu.c b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/ampdu.c
index fc7a5dd2e5d8..3fd8bdbd35e5 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/ampdu.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/ampdu.c
@@ -516,12 +516,11 @@ int brcms_c_ampdu_add_frame(struct brcms_ampdu_session *session,
return -ENOSPC;

/*
- * We aren't really out of space if the new frame is of
- * a different priority, but we want the same behaviour
- * so return -ENOSPC anyway.
- *
- * XXX: The old AMPDU code did this, but is it really
- * necessary?
+ * IEEE 802.11n standard requires that all MPDUs within an
+ * A-MPDU belong to the same TID (Traffic Identifier).
+ * Since priority maps to TID, a different priority means
+ * we must close the current aggregate and start a new one,
+ * so we return -ENOSPC here.
*/
first = skb_peek(&session->skb_list);
if (p->priority != first->priority)
--
2.53.0