From nobody Tue Jan 14 04:34:55 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 4YXGWN29P4z5j6vt; Tue, 14 Jan 2025 04:34:56 +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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4YXGWN0pcLz3ct8; Tue, 14 Jan 2025 04:34:56 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1736829296; 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=ou3YgW3WP9hLafYOdfCfZM8Z0NuBZSqLBDeg6pFw/U4=; b=Icvqt9W4YR2rcGBS8t3/806+k4HYxMJQNqeLqCgpgkRpKQ6WGV82dXOzl9QiIn/7Ewrmkw hmB5+NWghiyio5aOIWUGuD3beMipF+c+gkyZTfqAQIx1AhxIE78wJLZ3ZHfY/fGqbkJw+z VrvsuX3ye9PnvZKsmOpBCJMWvLHZiPS2TsVK18Hx4kwNglyjim1Pedq9kVbIWJsUjYnMWu jNMyK5+bebwCrP3rpwNLsj2t/lQJmNqf+I6XSCEZ3/Mjr+agAwQE0NWw7Q1ctp6sMVFrtE RbvYPsijEgUlrLIKJ1/9fzgCXGfg4gqG3p8hkFAxyNj3VYSiNe2BIPaGxFGYEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1736829296; 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=ou3YgW3WP9hLafYOdfCfZM8Z0NuBZSqLBDeg6pFw/U4=; b=DNzO2e69jdOkiMBoaYcY/8OBlXSMiIdoEHbfhxdAYKzwEyA6opYPPYmla6OMgK438quuGI mK40oHTxR1ejH03O2cjk00ZgpGM1mL2K9JnO3rwCU/05uinm46IVBmQ/zlCC7jvbWtPz4a 2/CAbr5frDdf+DD8j45ZeY25mb0WU2hUtIl4b02rGZCzpDnlDNVz/swgDnqH6cHM1fZd67 zZMBwHO51mjw7gcBD325eltnkqbUW1+8iOZaIqV643DGlgNcjkk2rnjHC3La2laX33sgqp 5Mv80aXYQwIhGZ0yT06m1Nn49CfE2CtDC0qTR+NJu9E64Tn/0UbMU3fITSfwNA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1736829296; a=rsa-sha256; cv=none; b=Qcs/8J88e5O2KP/U4GZMy0RTDIGefejVup7wLR2xPOjrpTDh2mtqt1Ya9CSMH0+ak2HXe5 AXzuLTz7Hh0onxnTw5kiCsrHAdtXJpTLSP6O18+Ed9BCo3WzKPhXg/lIWMKf+klJcOc+UJ BV+NJ3uPH1nbvlUGmwuCHAN3BkID1gsThmo4rA61M1Rfblp09Z6BE5zMaFdhGNF+d1LMg/ YuNsi3IwkVVUEC8l1qwboGYsqG8+/QFqPKRVZ+kcW4JDKtYDi21H1knlgIoCjRwGYftTMM lwH930OEurv/o3nfz7rN8R5GH6RvEt7LWN7jb+IkmiBwRl9T9Vwl1R55S6O3vg== 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 4YXGWN0D7lz11d5; Tue, 14 Jan 2025 04:34:56 +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 50E4YtXo072558; Tue, 14 Jan 2025 04:34:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 50E4Ytvl072555; Tue, 14 Jan 2025 04:34:55 GMT (envelope-from git) Date: Tue, 14 Jan 2025 04:34:55 GMT Message-Id: <202501140434.50E4Ytvl072555@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: ea347b7fda20 - main - rtwn: refactor out datarate and short preamble setup 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: ea347b7fda20e1437c1b2c363e12a4f29d8ca8f0 Auto-Submitted: auto-generated The branch main has been updated by adrian: URL: https://cgit.FreeBSD.org/src/commit/?id=ea347b7fda20e1437c1b2c363e12a4f29d8ca8f0 commit ea347b7fda20e1437c1b2c363e12a4f29d8ca8f0 Author: Adrian Chadd AuthorDate: 2024-12-19 02:43:47 +0000 Commit: Adrian Chadd CommitDate: 2025-01-14 04:33:56 +0000 rtwn: refactor out datarate and short preamble setup Refactor out the datarate setup and short preamble setup. These will eventually be slightly different based on whether firmware rate control is being performed or not. Locally tested: * RTL8192CU, STA mode Differential Revision: https://reviews.freebsd.org/D48141 --- sys/dev/rtwn/rtl8192c/r92c_tx.c | 47 +++++++++++++++++++++++++++++------------ 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/sys/dev/rtwn/rtl8192c/r92c_tx.c b/sys/dev/rtwn/rtl8192c/r92c_tx.c index d5cbc3ad9db9..9d975e98d95b 100644 --- a/sys/dev/rtwn/rtl8192c/r92c_tx.c +++ b/sys/dev/rtwn/rtl8192c/r92c_tx.c @@ -257,6 +257,34 @@ r92c_check_enable_ccx_report(struct rtwn_softc *sc, int macid) return true; } +static void +r92c_fill_tx_desc_datarate(struct rtwn_softc *sc, struct r92c_tx_desc *txd, + uint8_t ridx, bool force_rate) +{ + + /* Force this rate if needed. */ + if (sc->sc_ratectl == RTWN_RATECTL_FW && !force_rate) { + txd->txdw5 |= htole32(SM(R92C_TXDW5_DATARATE, 0)); + } else { + txd->txdw5 |= htole32(SM(R92C_TXDW5_DATARATE, ridx)); + txd->txdw4 |= htole32(R92C_TXDW4_DRVRATE); + } + + /* Data rate fallback limit (max). */ + txd->txdw5 |= htole32(SM(R92C_TXDW5_DATARATE_FB_LMT, 0x1f)); +} + +static void +r92c_fill_tx_desc_shpreamble(struct rtwn_softc *sc, struct r92c_tx_desc *txd, + uint8_t ridx, bool force_rate) +{ + const struct ieee80211com *ic = &sc->sc_ic; + + if (RTWN_RATE_IS_CCK(ridx) && ridx != RTWN_RIDX_CCK1 && + (ic->ic_flags & IEEE80211_F_SHPREAMBLE)) + txd->txdw4 |= htole32(R92C_TXDW4_DATA_SHPRE); +} + void r92c_fill_tx_desc(struct rtwn_softc *sc, struct ieee80211_node *ni, struct mbuf *m, void *buf, uint8_t ridx, bool force_rate, int maxretry) @@ -327,9 +355,7 @@ r92c_fill_tx_desc(struct rtwn_softc *sc, struct ieee80211_node *ni, #endif } - if (RTWN_RATE_IS_CCK(ridx) && ridx != RTWN_RIDX_CCK1 && - (ic->ic_flags & IEEE80211_F_SHPREAMBLE)) - txd->txdw4 |= htole32(R92C_TXDW4_DATA_SHPRE); + r92c_fill_tx_desc_shpreamble(sc, txd, ridx, force_rate); prot = IEEE80211_PROT_NONE; if (RTWN_RATE_IS_HT(ridx)) { @@ -359,16 +385,13 @@ r92c_fill_tx_desc(struct rtwn_softc *sc, struct ieee80211_node *ni, txd->txdw1 |= htole32(SM(R92C_TXDW1_QSEL, qsel)); rtwn_r92c_tx_setup_macid(sc, txd, macid); - txd->txdw5 |= htole32(SM(R92C_TXDW5_DATARATE, ridx)); - /* Data rate fallback limit (max). */ - txd->txdw5 |= htole32(SM(R92C_TXDW5_DATARATE_FB_LMT, 0x1f)); + + /* Fill in data rate, data retry */ + r92c_fill_tx_desc_datarate(sc, txd, ridx, force_rate); + txd->txdw4 |= htole32(SM(R92C_TXDW4_PORT_ID, uvp->id)); r92c_tx_raid(sc, txd, ni, ismcast); - /* Force this rate if needed. */ - if (sc->sc_ratectl != RTWN_RATECTL_FW) - txd->txdw4 |= htole32(R92C_TXDW4_DRVRATE); - if (!hasqos) { /* Use HW sequence numbering for non-QoS frames. */ rtwn_r92c_tx_setup_hwseq(sc, txd); @@ -423,10 +446,8 @@ r92c_fill_tx_desc_raw(struct rtwn_softc *sc, struct ieee80211_node *ni, txd->txdw1 |= htole32(SM(R92C_TXDW1_QSEL, R92C_TXDW1_QSEL_MGNT)); /* Set TX rate index. */ - txd->txdw5 |= htole32(SM(R92C_TXDW5_DATARATE, ridx)); - txd->txdw5 |= htole32(SM(R92C_TXDW5_DATARATE_FB_LMT, 0x1f)); + r92c_fill_tx_desc_datarate(sc, txd, ridx, true); /* force rate */ txd->txdw4 |= htole32(SM(R92C_TXDW4_PORT_ID, uvp->id)); - txd->txdw4 |= htole32(R92C_TXDW4_DRVRATE); r92c_tx_raid(sc, txd, ni, ismcast); if (!IEEE80211_QOS_HAS_SEQ(wh)) {