git: 88f467bd1a11 - main - iwx: don't log VHT rate lookups in iwx_tx_fill_cmd() for data frames
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 04 Oct 2025 03:02:30 UTC
The branch main has been updated by adrian: URL: https://cgit.FreeBSD.org/src/commit/?id=88f467bd1a113b65cebcb6eca145dbd3bea72adc commit 88f467bd1a113b65cebcb6eca145dbd3bea72adc Author: Adrian Chadd <adrian@FreeBSD.org> AuthorDate: 2025-09-28 03:13:06 +0000 Commit: Adrian Chadd <adrian@FreeBSD.org> CommitDate: 2025-10-04 02:55:40 +0000 iwx: don't log VHT rate lookups in iwx_tx_fill_cmd() for data frames iwx is now logging a lot of stuff to the kernel when associated at VHT rates. It's my fault; the replacement tx rate APIs print out a warning when you're handing the legacy rate /HT rate APIs a VHT rate. However all of the supported chipsets in iwx will be pushing the rate control entirely into firmware. We don't need to do per-frame TX rate control like in previous chips. So for now, just put in an if (rate == VHT) into the path and a TODO comment. A few lines later the function will just skip the rate assignment stuff for data frames, thus saving us the logging. The other paths (control traffic, multicast traffic) uses legacy rates / HT rates by default and won't trigger a warning log. Yes, iwx_tx_fill_cmd() really does deserve a rate control logic rewrite, but I want to fix this particular issue first. Locally tested: * AX210, STA mode, HT and VHT associations Differential Revision: https://reviews.freebsd.org/D52766 Reviewed by: thj --- sys/dev/iwx/if_iwx.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sys/dev/iwx/if_iwx.c b/sys/dev/iwx/if_iwx.c index 557b5a7a1ca2..d2d435545e27 100644 --- a/sys/dev/iwx/if_iwx.c +++ b/sys/dev/iwx/if_iwx.c @@ -5501,6 +5501,9 @@ iwx_tx_fill_cmd(struct iwx_softc *sc, struct iwx_node *in, /* for non-data, use the lowest supported rate */ ridx = min_ridx; *flags |= IWX_TX_FLAGS_CMD_RATE; + } else if (ni->ni_flags & IEEE80211_NODE_VHT) { + /* TODO: VHT - the ridx / rate array doesn't have VHT rates yet */ + ridx = iwx_min_basic_rate(ic); } else if (ni->ni_flags & IEEE80211_NODE_HT) { ridx = iwx_mcs2ridx[ieee80211_node_get_txrate_dot11rate(ni) & ~IEEE80211_RATE_MCS];