From nobody Sat Sep 6 06:23:13 2025 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 4cJjns75dxz65qTx; Sat, 06 Sep 2025 06:23:13 +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 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cJjns589Pz3pjF; Sat, 06 Sep 2025 06:23:13 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1757139793; 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=UBPEGZIBnM3KLSsAOJ6U4Dej0a85O20tf2S4m4x8MR4=; b=mavw+CifmEnOUkRfXLLqF/UdBvUcPoaLxd7ax2gWNoqH7kRxm4aCuUm3PDP/5v5ZPoWtsN OXnovXtBQDFsoB4OWNfd15Msz//IBiyxbx9jaOokWUYbqWtci/5FjVL1mlMxU0wEAqmvCr pPOImi1El7QttZOwVTyOImsrSkvZ5U7rmFrNXX/SHfGp0U9hpB6P4etoxAC3nErBeO769W W7UYiTUH4/yKnNcLrDgR7B3pLo8JyJ/4/4fTINxHoEuHqgP6wFN/2rGF5zSd3cPjztQuJl j1NOvEe97VtFNXSBGqylDomoQRjSDl8zwiuhF4zOfZD8Y5HhAsR/eUqPlwBTzg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1757139793; 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=UBPEGZIBnM3KLSsAOJ6U4Dej0a85O20tf2S4m4x8MR4=; b=rQpkEKiY93i/QXvlgPZKDZW1RDkQRrynz8GL+hn+DtfzCJ7TKD5Uy6ftELC7go7Mu9MyRf dPRKX/SyxObC2mx4ezNL4GHnpqIHTnPBI+zrCpPfYBKfQuuXX0Z5TM7TTmzF7EXKqTZhTO 88TSHq5gIHKtf+1KhY5z0o2504v+QQV7/LJ48varGAj6zRX0y83ByXzqpDnDKhGzSnjrnC O8tZQTo8tEoyYMFd4jfKAdzKkxkfF5bS4DUkJk/3AhMmoX/PuksnY4uTg20VdQpDmo6noN 0pUqD4Rj/PjJF01OlP926JhqjeZRZdXggsUlGXOYQPh3tFyFymLDZpraqnlKuw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1757139793; a=rsa-sha256; cv=none; b=to5+zy59i6F26PzPfuSKHAjzEpNl9rARQs6jM8I8lLqYWp6+cZ+3gCrABPxYgjt3I8p0oU nYHZP7oquc0ROJmhaCvYHWTiOZYEMTZ7TaeGOXpT6mmtPAzZaFA8Qp4BuGgP5644zqx12y XI997vUoCGVkdjqujWFlC9bV9kviNcXWwWWbcRSQQeo0fu/ayO+MAgFQFk7KZxSPUBUtt4 GBqiHKZ+J0G1qtNsefy/IBEimdmWZ31rXulefVynETSi+4wULYtbm/bg3eA250tqxyIXRw e4xucLKCaQ1NjO6VV0v25Cn1TtbRiVw+LprGOfO2DmbZwJrlpB0Qc4G82cIxrg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cJjns4Yxhz7jG; Sat, 06 Sep 2025 06:23:13 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5866NDfZ016371; Sat, 6 Sep 2025 06:23:13 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5866NDZS016368; Sat, 6 Sep 2025 06:23:13 GMT (envelope-from git) Date: Sat, 6 Sep 2025 06:23:13 GMT Message-Id: <202509060623.5866NDZS016368@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Adrian Chadd Subject: git: dff11c4f8007 - main - rtwn: enable seqno offload; migrate to use ieee80211_output_seqno_assign() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org 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: dff11c4f8007841484748af08e11e110c541fd7d Auto-Submitted: auto-generated The branch main has been updated by adrian: URL: https://cgit.FreeBSD.org/src/commit/?id=dff11c4f8007841484748af08e11e110c541fd7d commit dff11c4f8007841484748af08e11e110c541fd7d Author: Adrian Chadd AuthorDate: 2025-06-05 00:47:14 +0000 Commit: Adrian Chadd CommitDate: 2025-09-06 06:15:47 +0000 rtwn: enable seqno offload; migrate to use ieee80211_output_seqno_assign() This should both enable the sequence number offloading and disable the net80211 TX lock from being acquired/released/checked. Locally tested: * RTL8812AU, STA mode Reviewed by: bz Differential Revision: https://reviews.freebsd.org/D52301 Differential Revision: https://reviews.freebsd.org/D50693 --- sys/dev/rtwn/if_rtwn.c | 3 +++ sys/dev/rtwn/if_rtwn_tx.c | 8 ++++++++ sys/dev/rtwn/rtl8192c/r92c_tx.c | 11 +++++------ sys/dev/rtwn/rtl8812a/r12a_tx.c | 12 ++++-------- 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/sys/dev/rtwn/if_rtwn.c b/sys/dev/rtwn/if_rtwn.c index 7a547e13cafa..25287f222270 100644 --- a/sys/dev/rtwn/if_rtwn.c +++ b/sys/dev/rtwn/if_rtwn.c @@ -268,6 +268,9 @@ rtwn_attach(struct rtwn_softc *sc) ic->ic_flags_ext |= IEEE80211_FEXT_WATCHDOG; #endif + /* Enable seqno offload */ + ic->ic_flags_ext |= IEEE80211_FEXT_SEQNO_OFFLOAD; + /* Adjust capabilities. */ rtwn_adj_devcaps(sc); diff --git a/sys/dev/rtwn/if_rtwn_tx.c b/sys/dev/rtwn/if_rtwn_tx.c index 2c9c246dfbb4..fa7f35f2de83 100644 --- a/sys/dev/rtwn/if_rtwn_tx.c +++ b/sys/dev/rtwn/if_rtwn_tx.c @@ -183,6 +183,10 @@ rtwn_tx_data(struct rtwn_softc *sc, struct ieee80211_node *ni, } } + /* seqno allocate, only if AMPDU isn't running */ + if ((m->m_flags & M_AMPDU_MPDU) == 0) + ieee80211_output_seqno_assign(ni, -1, m); + cipher = IEEE80211_CIPHER_NONE; if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { k = ieee80211_crypto_encap(ni, m); @@ -229,6 +233,10 @@ rtwn_tx_raw(struct rtwn_softc *sc, struct ieee80211_node *ni, uint8_t type; u_int cipher; + /* seqno allocate, only if AMPDU isn't running */ + if ((m->m_flags & M_AMPDU_MPDU) == 0) + ieee80211_output_seqno_assign(ni, -1, m); + /* Encrypt the frame if need be. */ cipher = IEEE80211_CIPHER_NONE; if (params->ibp_flags & IEEE80211_BPF_CRYPTO) { diff --git a/sys/dev/rtwn/rtl8192c/r92c_tx.c b/sys/dev/rtwn/rtl8192c/r92c_tx.c index 6b013de0c536..ba2f60bd9295 100644 --- a/sys/dev/rtwn/rtl8192c/r92c_tx.c +++ b/sys/dev/rtwn/rtl8192c/r92c_tx.c @@ -452,11 +452,10 @@ r92c_fill_tx_desc(struct rtwn_softc *sc, struct ieee80211_node *ni, } else { uint16_t seqno; - if (m->m_flags & M_AMPDU_MPDU) { - seqno = ni->ni_txseqs[tid] % IEEE80211_SEQ_RANGE; - ni->ni_txseqs[tid]++; - } else - seqno = M_SEQNO_GET(m) % IEEE80211_SEQ_RANGE; + if (m->m_flags & M_AMPDU_MPDU) + ieee80211_output_seqno_assign(ni, -1, m); + + seqno = M_SEQNO_GET(m); /* Set sequence number. */ txd->txdseq = htole16(seqno); @@ -511,7 +510,7 @@ r92c_fill_tx_desc_raw(struct rtwn_softc *sc, struct ieee80211_node *ni, rtwn_r92c_tx_setup_hwseq(sc, txd); } else { /* Set sequence number. */ - txd->txdseq |= htole16(M_SEQNO_GET(m) % IEEE80211_SEQ_RANGE); + txd->txdseq |= htole16(M_SEQNO_GET(m)); } } diff --git a/sys/dev/rtwn/rtl8812a/r12a_tx.c b/sys/dev/rtwn/rtl8812a/r12a_tx.c index 0ca1ebd37757..6a7af0a9b674 100644 --- a/sys/dev/rtwn/rtl8812a/r12a_tx.c +++ b/sys/dev/rtwn/rtl8812a/r12a_tx.c @@ -433,12 +433,9 @@ r12a_fill_tx_desc(struct rtwn_softc *sc, struct ieee80211_node *ni, } else { uint16_t seqno; - if (m->m_flags & M_AMPDU_MPDU) { - seqno = ni->ni_txseqs[tid]; - ni->ni_txseqs[tid]++; - } else - seqno = M_SEQNO_GET(m) % IEEE80211_SEQ_RANGE; - + if (m->m_flags & M_AMPDU_MPDU) + ieee80211_output_seqno_assign(ni, -1, m); + seqno = M_SEQNO_GET(m); /* Set sequence number. */ txd->txdw9 |= htole32(SM(R12A_TXDW9_SEQ, seqno)); } @@ -493,8 +490,7 @@ r12a_fill_tx_desc_raw(struct rtwn_softc *sc, struct ieee80211_node *ni, txd->txdw3 |= htole32(SM(R12A_TXDW3_SEQ_SEL, uvp->id)); } else { /* Set sequence number. */ - txd->txdw9 |= htole32(SM(R12A_TXDW9_SEQ, - M_SEQNO_GET(m) % IEEE80211_SEQ_RANGE)); + txd->txdw9 |= htole32(SM(R12A_TXDW9_SEQ, M_SEQNO_GET(m))); } }