From nobody Fri Oct 30 17:39:01 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4jGSyG4S1wz6xGJ8 for ; Fri, 30 Oct 2026 17:39:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4jGSyG2NXtz4dxG for ; Fri, 30 Oct 2026 17:39:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793381942; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=T3mGsWZ26uvzRXlwAjdPiKvkxvtYSwByfF7SVGVo+6Q=; b=hnv2Dp9UH+oqyLd9CUNww0YfPBuCvWPjWufiUIhH8FlsaGd0P3dKlQdH1IPEMZtzCj6Oma RpK9/zChUhRkcpm0J3DSIJIT43ainyOuTMVlTpdbVoTM4vEy6Svh/NePriRpQ9Dm1+SgG8 5zZKSAfcjKRlQ0d/W33928KsArH6M5DxXX85kDgPVFgeNWBq/aQJc/22q1YVdVQUEXRU/G IbJ6vXVwBp1DTqlRWEWKLj+CjBfPBGM5wqNmeLAHwCuqBOU27ModXWzCbz/iQ+nBsZppJC enUIhj3n57sLeEWV17CG3beFwnE6WM56VKhLH7FZhuKYN2zGdQmFgPfPzBcQZw== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1793381942; b=xy3Ietual8U5LctpHhDtprR2cw4dsIAhuZe3yfS56FEI0mZ9x1EtNZw5uLOXrAbhMIvtIA ZyOUD4S8e3vrDiVjZbBHBd2v3v/+/5aTlmlbyEifSw/hw8FSLyAclWI+89L4MPG+649OPv uA+30+OZu4PjvsAMZuVTt1kdafQ+Vz7VXCip9ngCZPjOgWS8sHkv4b9zefV2JHJpNgpG1p 8eOFAdBQp4B2JUBZVkFQrIO2WTA6Ol1yVCosAKZsQ+eFlVz/yxcmf/u1YsLfr084t5pEwG PhO2ObFURTLWPjCANflMMZUtvHARQyoeN53EqQh5qz5pXROpBhaW8Cr70IUb3A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793381942; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=T3mGsWZ26uvzRXlwAjdPiKvkxvtYSwByfF7SVGVo+6Q=; b=aAwcL9ZGlIJuTCi3U3HYPFAs4w6uGPz8kZkuTZLhoIPStr2bg2H0B+zAsB56gADLrH6uAx TSFvAVQRfGB9UlPKX1d8Tu2a1iYeBSFp+8RQMWUm3y/R+w8wKI2DgFTANrVYEDXwPM5/Ou /PskYyGK+22MY1BGfZ6WyH6P5Fj7Qh4RP5btBoCHf0d2KnAB3Ty4RErx6tyaMSF0WIXi7C wk7YBgQlVZBZ9EQSB8dfUFU7UBaWMZItUKFDJykun/bE620trk+QfnnVQm6h1pvV89WgR0 IavurByg7e/PsGiNl1ELMyuqQShDAT5CQ+a0o6WaM078o6ikwl0NDu0ahAwNFA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4jGSyF5VVJzdtk for ; Fri, 30 Oct 2026 17:39:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 40032 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 30 Oct 2026 17:39:01 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Adrian Chadd From: Kevin Bowling Subject: git: 349288bc0fbd - stable/15 - iwn: fix TX QoS AC -> TID mapping for A-MPDU selection List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: Commit messages for all branches of the src repository List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kbowling X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 349288bc0fbd6e7887ed58f85247cefed3e7dc1f Auto-Submitted: auto-generated Date: Fri, 30 Oct 2026 17:39:01 +0000 Message-Id: <6ae4d635.40032.7173c645@gitrepo.freebsd.org> The branch stable/15 has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=349288bc0fbd6e7887ed58f85247cefed3e7dc1f commit 349288bc0fbd6e7887ed58f85247cefed3e7dc1f Author: Adrian Chadd AuthorDate: 2026-10-19 00:34:46 +0000 Commit: Kevin Bowling CommitDate: 2026-10-30 17:38:43 +0000 iwn: fix TX QoS AC -> TID mapping for A-MPDU selection Map the packet QoS value to a TID before looking it up in the per node + TID AMPDU state array. The TX A-MPDU state used to be per-AC, but I changed it to be per-TID because it /is/ negotiated per-TID. However this is not aligned correctly and A-MPDU on eg the voice queue would cause a mismatch and thus packets to get dropped. (TIDs 8..15 are special and session based, not traffic QoS based.) I noticed this because "ssh host" failed after a while, but "telnet host 22" succeeded. It turned out that frames weren't making it to the driver transmit path and I traced it back to being dropped here. Traffic worked for a while until A-MPDU TX was negotiated, and then all traffic on a TID would fail until the 802.11 association was re-established. Locally tested: * iwn 6205, STA mode - forced traffic into VO AC/TID Differential Revision: https://reviews.freebsd.org/D60848 (cherry picked from commit c78d70298edef4c599b503536d193caeb8204784) --- sys/dev/iwn/if_iwn.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/sys/dev/iwn/if_iwn.c b/sys/dev/iwn/if_iwn.c index b7c452a4f074..f553a6f320d9 100644 --- a/sys/dev/iwn/if_iwn.c +++ b/sys/dev/iwn/if_iwn.c @@ -4579,9 +4579,19 @@ iwn_tx_data(struct iwn_softc *sc, struct mbuf *m, struct ieee80211_node *ni) * assigned from net80211. */ + /* + * Ok, this is a bit "fun" and could do with some cleanup. + * 'ac' here is (mostly) the AC, not TID. It's actually used + * as the destination txq. + * + * For A-MPDU enabled queues, 'ac' becomes the private queue + * allocated for this TID. However, ni_tx_ampdu[] is now per + * TID, not per AC. So a little twisty logic is done here. + */ ac = M_WME_GETAC(m); if (m->m_flags & M_AMPDU_MPDU) { - struct ieee80211_tx_ampdu *tap = &ni->ni_tx_ampdu[ac]; + struct ieee80211_tx_ampdu *tap = + &ni->ni_tx_ampdu[WME_AC_TO_TID(ac)]; if (!IEEE80211_AMPDU_RUNNING(tap)) return (EINVAL);