From nobody Mon Oct 19 00:36:27 2026 X-Original-To: dev-commits-src-main@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 4j7GnS118Jz6wmwG for ; Mon, 19 Oct 2026 00:36:28 +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 4j7GnS0F4Qz4VB3 for ; Mon, 19 Oct 2026 00:36:28 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1792370188; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=k8a6MWpmipr3j8Gaqf+dA2c76CvDKpA2BHxRq1dFmWE=; b=w9TtzYf484oRrNFdBxlBaxPolCKObk6oo7ozlZnEDlXBJ+2ZxIv0Blj8/DYTIIErGI1/tr 2kEqNYh8zbt+S3DGuj4vmXoYQu1/ZxlMcWU/tjgvsLIPxo/PcyqWEGzkMMgsb5pZvSZ8VF nCh71gDKxNY1lVZmzKteJbwNesyev1OCdDZJqL18Wl35kSPdNKE25PsPLIfxhmd/ni5XrD 8KaL2z/0MK2PM9iD+RprY3fnJVrm13WFAsQkucbnLxkZl4ORsnrq0I6EOVN9QKIqXJXixL +btjpYjLS8vJTFAa9Siq0gSprIQREhxKpmyp6k3U3F/++RMrbgNYdgRklUyTQw== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1792370188; b=Xo6cw46nTsuOO+Dl7azM7GLNBH3poZBfuu+lnpqF1YBVz0/hAb++OChnyIUANnH0ZQuPLN C0YpduPjO+zjP3ToD5RL/+AHm0w0Ont4NVkeXoJjFxda3joQI6PsSGc8qNUmJArmc9Ve6q l5Fj9P+EPtIqciFb8HVjlt1XrGJHU7kNLWfJ6Kf7WPD+m+Gs9A3FzNVpyKOiSCeQSMSN4T adgSM7DBCaH4zXyKrKukjN2OB3uXV6p9nSNQcH1DbTpsJc8aqHh33UuF4LYdcot6n3Axhl 4UKIEVOnJKMgrzLAOdM0OrL7vy6vCAz0tN3oq3/8Fyw7cZptvlf/niRng3OngA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1792370188; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=k8a6MWpmipr3j8Gaqf+dA2c76CvDKpA2BHxRq1dFmWE=; b=aVymcS4GJ7BqXfxCqwVRNzrcrNvaRfUFz5beK+SFTaCpcocLazUNBaoKytCSYz72vYKUkL GBWRGcXmSuoP86QtW6I5XDQ6pEe4yOmu+0NNlV59tHlYLJeEzaAEF/wDmW2D4K4i1e4bsF 9xj5C+tn6hCUMAM2tO1csjQ9f+kDM5C/+dwgnadXseZKq+wpQiQ6uNlj7meWYTuxXrC37h n67V/JxVzS+y328UL1iEUwMj9/C+CvmlVGw8IKcXmaaH/FAqI0MoGQJNB1b5ZF1LMbBiGB 6E3aaWvMimC/rBMV9Xxj7N6GNtlbMl4wIKInWyMfrVw6fphTKLKXEcOV2O2jtA== 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 4j7GnR6hpKz1CPQ for ; Mon, 19 Oct 2026 00:36:27 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 25986 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 19 Oct 2026 00:36:27 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Adrian Chadd Subject: git: c78d70298ede - main - iwn: fix TX QoS AC -> TID mapping for A-MPDU selection List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: Commit messages for the main branch 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: adrian X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c78d70298edef4c599b503536d193caeb8204784 Auto-Submitted: auto-generated Date: Mon, 19 Oct 2026 00:36:27 +0000 Message-Id: <6ad5660b.25986.3e06a047@gitrepo.freebsd.org> The branch main has been updated by adrian: URL: https://cgit.FreeBSD.org/src/commit/?id=c78d70298edef4c599b503536d193caeb8204784 commit c78d70298edef4c599b503536d193caeb8204784 Author: Adrian Chadd AuthorDate: 2026-10-19 00:34:46 +0000 Commit: Adrian Chadd CommitDate: 2026-10-19 00:34:46 +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 MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D60848 --- 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 7fc013704253..0a5e608c8071 100644 --- a/sys/dev/iwn/if_iwn.c +++ b/sys/dev/iwn/if_iwn.c @@ -4587,9 +4587,19 @@ iwn_tx_data(struct iwn_softc *sc, struct mbuf *m, struct ieee80211_node *ni) * anyway ourselves (and should stub out / warn / etc.) */ + /* + * 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);