| 00b4d712 | 13-Nov-2025 |
Adrian Chadd <adrian@FreeBSD.org> |
iwx: clean up TX AMPDU session establishment and checking
* Send a TX A-MPDU exchange successfully; we were allocating the A-MPDU TX queue but returning 0 to net80211 was telling it to not estab
iwx: clean up TX AMPDU session establishment and checking
* Send a TX A-MPDU exchange successfully; we were allocating the A-MPDU TX queue but returning 0 to net80211 was telling it to not establish the TX A-MPDU session and none of the BA session tracking stuff would work.
* Clean up the TX A-MPDU queue lookup in the transmit path - only QoS data frames are allowed, not qos null-data, cf/ack/etc frames; only send them if the A-MPDU session is established.
* Tell net80211 that we've established the TX A-MPDU session once the firmware queue has been created.
* Check to make sure we're not double (or more) creating TX AMDPU sessions - only allocate a qid if we're not doing A-MPDU yet.
* Delete IWX_FLAG_A-MPDUTX - it's now being properly tracked!
Locally tested:
* AX210, STA mode - gets 50/50mbit on 2GHz HT20, and 100/100mbit on 5GHz VHT/40.
Differential Revision: https://reviews.freebsd.org/D53725 Reviewed by: thj
show more ...
|
| b4c35d46 | 12-Nov-2025 |
Adrian Chadd <adrian@FreeBSD.org> |
iwx: fix and clean up suspend/resume path
I noticed a couple of things were happening:
* during suspend, I'd get a timeout in the NIC lock path (which sets a bit on the NIC to say that the host w
iwx: fix and clean up suspend/resume path
I noticed a couple of things were happening:
* during suspend, I'd get a timeout in the NIC lock path (which sets a bit on the NIC to say that the host wants to talk to it); * resume wouldn't come back - scan commands would fail, and you'd have to reinit the NIC again for it to work.
The thing is:
* the suspend path should already shut down the NIC by shutting down all the VAPs (and the last VAP should call ic_parent to bring it down), and * the resume path should already bring up the NIC by bringing up each VAP, and the first VAP to be brought up calls ic_parent to bring it up.
So instead, I've shuffled around the code to just double check the hardware state is consistent /before/ ieee80211_suspend_all() and ieee80211_resume_all() is called.
This both fixes the errant hardware timeout during suspend, and it fixes resume to work.
Locally tested:
* AX210, STA mode, both hardware ACPI suspend/resume and devctl suspend and devctl resume
Differential Revision: https://reviews.freebsd.org/D53721 Reviewed by: thj
show more ...
|
| 4a5a884c | 28-Sep-2025 |
Adrian Chadd <adrian@FreeBSD.org> |
iwx: rewrite iwx_rs_update() to be VHT aware, refactor it a bit
The current iwx_rs_update() code doesn't handle setting VHT rates at all.
So:
* write a routine - iwx_rs_update_node_txrate() - whic
iwx: rewrite iwx_rs_update() to be VHT aware, refactor it a bit
The current iwx_rs_update() code doesn't handle setting VHT rates at all.
So:
* write a routine - iwx_rs_update_node_txrate() - which will update the given node txrate info with the given notification * .. which is based on the print_ratenflags() logic and decoding * migrate iwx_rs_update() to use this routine, only on the STA BSS node.
This only handles decoding the version 2 rate_n_flags format response - same as print_ratenflags() - so print if someone somehow sees a version 1 response.
It's shown a few things that deserve some later follow-up work:
* I really should have net80211 APIs that operate on the txrate struct itself, not on the ieee80211_node, but I'll use what I have. Changing it later is easy.
* the current net80211 txrate API doesn't include channel width, LDPC/STBC and such. I didn't need it for the earlier tx rate representation migration, but it would be nice to add it. (The reason is that those choices are currently made in the drivers using rate control, rather than the rate control module, which is again what the older code did as well.)
This means that the displayed rate isn't EXACTLY what the NIC has chosen - eg the NIC could quite happily decide to transmit a 20MHz or 40MHz frame to an 80MHz STA if that actually works out better. So just add TODOs for those.
Locally tested:
* AX210, STA mode
Differential Revision: https://reviews.freebsd.org/D52767 Reviewed by: thj
show more ...
|
| 88f467bd | 28-Sep-2025 |
Adrian Chadd <adrian@FreeBSD.org> |
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
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
show more ...
|
| 262172de | 21-Sep-2025 |
Adrian Chadd <adrian@FreeBSD.org> |
iwx: add some lock assertions in the TX start path
The locking paths into these routines LOOK correct, but I figured it'd be good to at least enforce we're not doing concurrent entry into iwx_start(
iwx: add some lock assertions in the TX start path
The locking paths into these routines LOOK correct, but I figured it'd be good to at least enforce we're not doing concurrent entry into iwx_start() / iwx_tx() without the lock held.
Differential Revision: https://reviews.freebsd.org/D52655 Reviewed by: thj
show more ...
|
| 8d51f2ab | 19-Jun-2025 |
Bjoern A. Zeeb <bz@FreeBSD.org> |
iwx: correct rx status reporting
We are currently not reporting any per-chain S:N values so remove IEEE80211_R_C_RSSI and IEEE80211_R_RSSI along with it as it is set already in the line above.
Spon
iwx: correct rx status reporting
We are currently not reporting any per-chain S:N values so remove IEEE80211_R_C_RSSI and IEEE80211_R_RSSI along with it as it is set already in the line above.
Sponsored by: The FreeBSD Foundation Reviewed by: thj Differential Revision: https://reviews.freebsd.org/D50927
show more ...
|
| 969f6c63 | 28-May-2025 |
Tom Jones <thj@FreeBSD.org> |
if_iwx: use net80211 suspend and resume methods
Use net80211 suspend and resume methods when entering and leaving suspend. Move the resume action outside of the IWX_LOCK.
Re-assert disabling the PC
if_iwx: use net80211 suspend and resume methods
Use net80211 suspend and resume methods when entering and leaving suspend. Move the resume action outside of the IWX_LOCK.
Re-assert disabling the PCI timeout, this is copied from OpenBSD (and a common pattern), but it doesn't seem to hurt.
PR: 286059 Reviewed by: adrian Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D50462
show more ...
|
| 71baab40 | 11-Apr-2025 |
Tom Jones <thj@FreeBSD.org> |
iwx: Remove debug logging code
This debugging code was added this log as part of an effort to diagnose firmware crashes in an earlier version of the driver. It hasn't been used for a while and I'm n
iwx: Remove debug logging code
This debugging code was added this log as part of an effort to diagnose firmware crashes in an earlier version of the driver. It hasn't been used for a while and I'm not sure how useful it is for this compared to other methods.
While reorganisation move strings for print mappings into if_iwx_debug.c to reduce their scope.
Suggested by: bz Reviewed by: bz Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D49783
show more ...
|