summaryrefslogtreecommitdiff
path: root/drivers/net/wireless
AgeCommit message (Collapse)Author
11 daysMerge tag 'net-next-7.4' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next Pull networking updates from Paolo Abeni: "This includes a significant number of low-priority fixes - especially in the NIC drivers area - that we deferred from the last few RCs in the previous cycle, which can't be easily outlined in the synopsis below. Core & protocols: - Continue the work on removing rtnl_lock dependencies: - per-netns ARP and ND neighbour tables, with the default settings now configurable per netns (inheritance from init_net is controlled by the new net.core.neigh_inherit_init_net sysctl) - RCU-protected configuration and rtnl_lock-less fill_info() for hsr, netkit, sit, vlan and vxlan devices - per-netns device unregistration for ip tunnel and gre devices - use the netdev instance lock instead of rtnl_lock when reading speed and duplex via sysfs - batch the flushing of uncached routes at device unregistration time, relieving rtnl_lock contention on netns dismantle. - Add hardware pacing offload support, admin-controlled via a new rtnetlink attribute, with sch_fq integration (implemented in idpf). - Re-segment BIG TCP GSO packets into GSO packets fitting the egress device limits instead of plain MSS-sized segments, improving throughput for mixed BIG TCP / non-BIG TCP paths by up to 70%. - Generate RSS keys that spread flows over all the RX queues; the previous random keys could leave some queues unused. - Optimize the bridge VLAN forwarding paths: cache the port-VLAN in fdb entries and consider only VLAN members when flooding, for ~10% more Mpps in the fdb forwarding path. - A few TCP/IP performance improvements aimed at efficient cache usage and reducing contention. - Add the TCP ROCCET congestion control, a CUBIC variant aimed at avoiding bufferbloat in cellular networks. - Continue the conversion of getsockopt callbacks to sockopt_t. - Add an ethtool command to list the front-facing ports of an interface, including SFP cages and modules, using the phy_port representation. - Enable BIG TCP support for bareudp tunnels. - Remove the IPV6_ADDRFORM socket option and disallow buggy TCP state transitions (listen() + shutdown() + connect() and connect() + connect(AF_UNSPEC) + listen()). - Remove most BUG_ON()s from core packet processing, replacing them with error paths. Wireless: - Latency improvements, including lockless station get/dump and beacon updates, plus RTNL reduction and locking cleanups. - Infrastructure for non-station TX/RX with MLO. - NAN (Wi-Fi Aware) Instant Communication support and other NAN improvements. - Control frame Integrity Protocol (CIP) and protected TWT support. - Improvements for AP regulatory checks. Netfilter: - Disable br_netfilter in user namespaces and schedule it for removal in 2027. - Restrict the raw table in nft_compat to the specific family, hook and priority. - Prepare the flowtable for mixed IPv4-over-IPv6 tunneling (and vice versa). - Use GFP_KERNEL_ACCOUNT for most netfilter allocations, for better integration with memcg. - Allow discovering conntrack zone filtering support in ctnetlink dumps, and fix nfnetlink_hook handling of large dumps. Deletions: - Move the LLC type 2 sockets out of tree. There are no known users and the code attracts a never-ending stream of LLM-driven fixes. Device drivers: - New drivers: - Meta Platforms NIC (mpnic), the second-generation NIC from Meta - initial skeleton of the Nebula-matrix NICs driver (nbl) - X-Powers AC200/AC300 Fast Ethernet PHYs - Ethernet high-speed NICs: - Intel: - i40e: XDP metadata support for RX hash and VLAN tag - ice: expose the E825 TSPLL state via the DPLL subsystem - nVidia/Mellanox: - move the data direct infrastructure from IB to core, in preparation for netdev support. - reduce the memory used per offloaded TC rule - Meta (fbnic): - support large io_uring zero-copy RX buffers - Microsoft vNIC (mana): - add BQL support - Ethernet NICs consumer, and embedded: - Airoha: - LRO offload support - Cadence (macb): - context swapping for ringparam and MTU changes, avoiding buffer loss under memory pressure - Mucse (rnpgbe): - TX/RX and link status support - NXP (enetc): - SR-IOV improvements and VF support for ENETC v4 - Qualcomm (ppe): - IPQ5424 support - Realtek PCI (r8169): - phylink support - RSS support for RTL8127 - Renesas (ravb): - gPTP support for R-Car Gen4 - Synopsys (stmmac): - XDP multi-buffer support on the TX side - tc mqprio hw queue priority offload - support for RK3568 SGMII, Allwinner H616 EMAC1, UltraRISC DP1000 and Qualcomm sa8255p - Ethernet switches: - Mediatek (mt7530): - fast age and change conduit support - Microchip (ksz): - support for KSZ8995XA/KS8995XA - Microchip (lan966x): - PCIe FDMA support, ~20x throughput increase in PCIe endpoint - Microchip (sparx5): - Time Aware Shaper (taprio) offload - Motorcomm (yt921x): - LED and SerDes PCS support - Realtek (rtl8365mb): - EEE support - Ethernet PHYs: - Broadcom: - enable jumbo frames on BCM54xx - Realtek: - support for RTL8261CE_CG and RTL8261D_VM - MDIO support for RTL838x and RTL839x - WiFi drivers: - Broadcom (brcmfmac): - FT/OKC roaming offload - Intel (iwlwifi): - UHR sniffer support - support for newer UEFI/BIOS tables - MediaTek (mt76): - mt7925 NAN improvements - offchannel/scan improvements and MLO fixes - Morse Micro (mm81x): - monitor mode support - Qualcomm (ath12k): - IPQ5332 platform infrastructure - Realtek (rtw88): - RTL8723BS support - SDIO TX performance improvements - Realtek (rtw89): - P2P_DEVICE support - BT-coex updates for RTL8922D - Bluetooth: - move H:4 reassembly into the Bluetooth core - add generic support for vendor packets - MGMT: add security level changed event - Bluetooth drivers: - btusb: support Bulk Serialization Mode - Intel: support Draco and Titan Lake, allow unsigned firmware - Mediatek: MT7928 support - Qualcomm: QCC2072 support - Broadcom: Synaptics 4384 support" * tag 'net-next-7.4' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next: (2126 commits) Bluetooth: btusb: disable by default Qualcomm multi-subsystem tipc: fix broadcast sender hang on last acker departure tipc: fix use-after-free of broadcast reception link at node release r8169: clear TX LPI on RTL8168h at link up after phylink conversion tun: Require CAP_NET_ADMIN to attach to an ownerless device net/sched/sch_cake: drop dead nla_nest_end() error check net/sched/sch_cake: widen buffer_used to u64 net/sched/sch_cake: reduce parent backlog when clearing a tin net/sched/sch_cake: serialize reconfiguration with the datapath tg3: Add Datto SIRIS 5 1U Server to restart AER quirk table net/mlx5e: Stop asserting for RTNL when closing channels net: shrink the payload-only part of skb dataref to one bit net: wwan: iosm: validate msg_head before indexing msg_ring net: bgmac: rate limit RX error messages selftests: net: veth: test XDP_TX to a peer with GRO enabled veth: schedule the peer's NAPI after XDP_TX when only GRO is enabled pppoe: delete session hash entries by pointer match net: lan969x: don't disable hardirqs in fdma tx clear net: sparx5/lan969x: do not clobber the PSFP cycle timer update period net: lan969x: fix DSM calendar for empty taxis ...
13 daysnet: change netdev_hw_addr_list count through helpersYuyang Huang
The count of a netdev_hw_addr_list is changed in several places of dev_addr_lists.c and a few drivers read it directly. The next patch needs to account every change of the count of dev->mc. Add __hw_addr_count_add(), __hw_addr_count_inc(), __hw_addr_count_dec() and __hw_addr_count_reset(), use them for every change of the count and rename the field to _count so that a direct write stands out. Readers keep using netdev_hw_addr_list_count() and the netdev_uc_count() and netdev_mc_count() helpers, the few that read the field directly are converted. No functional change. Signed-off-by: Yuyang Huang <sigefriedhyy@gmail.com> Reviewed-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> Link: https://patch.msgid.link/20261012011707.3378-3-sigefriedhyy@gmail.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2026-10-16wifi: atk9k: Revert "wifi: ath9k: reject short WMI command responses"Toke Høiland-Jørgensen
This reverts commit 93ce8ea70451e800601bc9444aa33043de15d67b. Mehmet reported that the offending commit breaks his AR9271 USB adapter which uses zero-length replies to commands that don't return a value. Revert the whole thing to restore the functionality. Cc: stable@vger.kernel.org # the offending commit is in 6.12.113 Reported-by: Mehmet Fide <mehmet.fide@gmail.com> Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2026-10-14Merge tag 'iwlwifi-next-2026-10-14' of ↵Johannes Berg
https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-next Miri Korenblit says: ==================== wifi: iwlwifi: updates - 2026-10-14 This contains our usual development commits, notably: - UHR sniffer support - Transport refactor: avoid indirection, bring virtualization back - A UEFI lock for UEFI tables security - New BIOS tables support ==================== Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2026-10-14wifi: iwlwifi: mld: include VI packets in low latency detectionEndrik Einberg
iwl_mld_is_vo_vi_pkt() checks whether the mapped access category is less than IEEE80211_AC_VI. Since mac80211 defines IEEE80211_AC_VO as 0 and IEEE80211_AC_VI as 1, this only matches voice traffic and excludes video traffic. Synthetic video-priority UDP traffic does not automatically activate low-latency mode, whereas voice-priority traffic does Include IEEE80211_AC_VI as intended. Fixes: d1e879ec600f ("wifi: iwlwifi: add iwlmld sub-driver") Signed-off-by: Endrik Einberg <git@endrik.dev> Link: https://patch.msgid.link/20261005144225.170280-1-git@endrik.dev Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: trans: remove the unused write8 operationMiri Korenblit
Unlike the other bus operations, write8 has no generic wrapper and is never dispatched through trans->ops: all the callers are in the pcie code and call iwl_trans_pcie_write8() directly. Remove it. Assisted-by: LLM Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://patch.msgid.link/20261011140453.fecac6ba37d1.Icf8e741c8ccc6eff1abd046223b575c07f69aff5@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: support SCD_QUEUE_CONFIG_CMD version 4Johannes Berg
This version has a new flags field that must be set to indicate which other fields are valid, in preparation for moving queue pointers during SMD transition. Only set the IWL_SCD_QUEUE_MODIFY_FLAG_STA_MSK flag on the existing users of the command for now. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://patch.msgid.link/20261011140453.534cc32f2ac6.I394c38c58ad6619e3e52b52c3bc686acbbd2e4f1@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: mvm: uninline iwl_mvm_ftm_start versionsJohannes Berg
This is not a performance-critical path, and with clang and KASAN it can use a lot of stack space. Uninline the various versions to avoid that. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://patch.msgid.link/20261011140453.97f5c8503204.Ib88f908b0638889e84753ae334525c4c52064838@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: mvm: fix beacon flags compiler warningJohannes Berg
With clang we can hit warnings here due to different enum types on the different sides of the ternary, but we don't really need to care because they're plain integer variables. Cast them to avoid the warnings. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://patch.msgid.link/20261011140453.6ea24eaa784d.I91bab31db441f9e230228c3893ff13fd7fc3e7bf@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: mld: fix const in iwl_mld_mu_mimo_iface_iteratorJohannes Berg
ieee80211_update_mu_groups() takes const u8 * pointers, and we have const values, but remove the const which can lead to some warnings with clang. Leave it const throughout. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://patch.msgid.link/20261011140453.6acceb79b0ef.Ia22765206364220b115dd84eb1a16b5a979d9340@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: mld: avoid const in iwl_mld_chan_load_update_iter()Johannes Berg
The phy pointer here isn't really const, and if it were we'd need container_of_const() (which can do both), but as it's just non-const anyway drop the const. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://patch.msgid.link/20261011140453.ccd4dbfffb5f.Id15631e4372d9495282634f89bd73e7f526ce2ce@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: pcie: correctly read WFPM_OTP_CFG1_ADDRJohannes Berg
We shouldn't read this without having NIC access, which I had broken in the past. Enabling clang's context analysis now surfaced this bug. Luckily, it only applies to blank OTP devices, which aren't really common/shipping at all. Keep the value from earlier, and use zero (as in the past before I broke it) if it can't be read at all. Fixes: 0b205d0f0f50 ("wifi: iwlwifi: trans: remove hw_wfpm_id") Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://patch.msgid.link/20261011140453.74912aba718d.I9568d08c280c0ca148c3918439c6beb8c4647a40@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: mvm: remove dead sta check in rx_monitor_no_dataEmmanuel Grumbach
sta is never assigned in iwl_mvm_rx_monitor_no_data(), so the sta ? &sta->deflink : NULL expression is dead code. Drop the variable and pass NULL directly. Drop the unneeded RCU read lock, ieee80211_rx_napi() takes the RCU read lock on its own. Spotted by Coverity. Assisted-by: LLM Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://patch.msgid.link/20261011140453.2d0a56daefed.I2bd50c74f1f50e0fd87996333b804d2731dbd0fa@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: mld: don't enable RSS if there is one queue.Miri Korenblit
There is no point in RSS when we have only one rxq. Don't send the command in this case - RSS will be disabled by default. Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://patch.msgid.link/20261011140453.dbeea799293f.I1c37945a248f101e0bca2cd723ce6551871926ab@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: move context info APIs to a separate fileMiri Korenblit
Context info structures and enums are APIs. While they have only been used in pcie bus until now, part of those will be used for future bus types as well. Extract the APIs from pcie/iwl-context-info*.h to fw/api/context-info*.h. Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://patch.msgid.link/20261011140453.87b73a7de1e5.I5e526d01b560a277bc363b3f1b42dcb63d51c574@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: fw: api: fix D3 sequence counter docsJohannes Berg
Most sequence counters in WoWLAN are documented as "to use next", but in reality firmware treats them as "last used". Fix the docs accordingly, while at it noting that for newer versions it only applies to the offload TID. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://patch.msgid.link/20261011140453.5d17b80be44c.Ia3ec5e1f714029561b08ab659b116bc20a60beb3@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: mvm: fix the VHT MCS sent to a v1 firmwareEmmanuel Grumbach
When converting a v3 rate to the v1 format, the MCS index was read from the mask of the NSS field and written into the mask of the MCS field. This is obviously wrong, we must not mix the NSS and the MCS. Fixes: 3592c0083fb2 ("wifi: iwlwifi: mvm: fix beacon template/fixed rate") Assisted-by: LLM Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://patch.msgid.link/20261011140453.dfca0c8b560a.I7a3e1f0e91f0d0c6f4c5f1e6a33dc7c0c5e9ad11@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: bump maximum core version for BZ/SC/DR to 109Miri Korenblit
Start supporting Core 109 FW on these devices. Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://patch.msgid.link/20261011140453.603d3010fb29.I53bc9bf1f5931e573fd55b62eef8be16270e6a92@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: dbg: validate the index before accessing an arrayJohannes Berg
If the worker index is bad, then the pointer to the containing array cannot be determined. Avoid it, and just make it a WARN_ONCE() since it should never happen. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Link: https://patch.msgid.link/20261001161715.dd857cfe0d6b.I8162af7b34d03b1b30be5914cde6248ad84b6a9f@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: don't mask ucode_ver in iwl_sar_geo_support()Emmanuel Grumbach
All the firmwares used by iwlmvm and iwlmld set IWL_UCODE_TLV_API_NEW_VERSION. Since iwl_sar_geo_support is not called by iwldvm, simplify the ucode_ver check. No functional change intended. Assisted-by: LLM Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Link: https://patch.msgid.link/20261001161715.5e290d456f51.Ic33c983411e93201e5e05a9d3df5af524de09b9a@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: mld: add support for WoWLAN CIGTK APIEmmanuel Grumbach
The firmware added CIGTK rekey support for D3: - KEK_KCK_MATERIAL_CMD version 5 has a new cigtk_cipher field. - WOWLAN_INFO_NOTIFICATION version 7 reports the CIGTK material of the active link, and MLO keys can now be of type CIGTK. The CIGTK material itself is not used yet, this is done in a separate patch. Assisted-by: LLM Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Link: https://patch.msgid.link/20261001161715.45aa7d3f2421.I1c53d0b8f1a1f1b3a4e35a86b5a6a5c04ff5f1a2@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: advertise UHR Co-BF supportJohannes Berg
This is supported by hardware, advertise it. We'll have to separately work on enabling it in firmware if the AP supports it. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Link: https://patch.msgid.link/20261001161715.6c5fc579f2d8.I0cdf7516e95181e31c33fde374216fb6bc8f4aa1@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: mld: set RX_FLAG_FAILED_PLCP_CRC for bad U-SIG CRCJohannes Berg
There are a number of places checking for the U-SIG CRC and then reporting if it failed, but we should set the failed PLCP CRC top-level radiotap flag for easier discarding of such packets in users such as wireshark. Do that with a new helper function, to avoid doing it in so many places. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Link: https://patch.msgid.link/20261001161715.cda01742eff8.I824c410fefd4022973403c1cf18f47459e34c4b2@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: mld: report the guard interval for UHRJohannes Berg
We didn't report the guard interval for UHR to mac80211, fix that by refactoring the EHT function and using it. The LTF is reported only in radiotap (differently), so the code for UHR doesn't need it. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Link: https://patch.msgid.link/20261001161715.9f728be36075.Ic46d2234d03fdf3b098a8b25f607bd3559e6a2db@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: mld: detect UHR sounding packetsJohannes Berg
Detect UHR sounding packets by checking their data length just like for EHT and reporting them to the sniffer immediately. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Reviewed-by: Benjamin Berg <benjamin.berg@intel.com> Link: https://patch.msgid.link/20261001161715.1c6817d2205b.Icc0cb8f2ef738bba6105f7b909c47d6d0cf12491@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: mld: remove UHR TB U-SIG2 B2 validate bitJohannes Berg
Clearly the existing code is wrong. Since it's not clear that the value is reported by hardware, and we probably won't need it, remove it for now. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Link: https://patch.msgid.link/20261001161715.56c9dd83eb39.I4482c69e48aa4661d11aecc23aab03fb9fef5ead@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: correctly report TB sounding PPDUs in snifferJohannes Berg
Sounding PPDUs are currently reported as "not for us" in the sniffer, since PHY reports that aren't detected as sounding immediately by a zero-length indication (which doesn't exist for trigger-based) are released only on the next PHY sniffer notification, when no MPDU was received. The "not for us" indication is, however, wrong in both cases: for TB sounding PPDUs it should be sounding, for others it should be some unspecified (DSP?) error. Fix both cases. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Link: https://patch.msgid.link/20261001161715.f8f6a08851a8.I8689a2a1599578aea53dda62cffc7f012d1d10f7@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: mld: report beamforming in UHR snifferJohannes Berg
In per-user information for UHR sniffer, report whether or not beamforming was used, according to rate_n_flags. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Link: https://patch.msgid.link/20261001161715.3f8de2b3592b.Ie21d26e1a25a117515907e9577a51de3bc29692b@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: mld: report UHR per-user NSSJohannes Berg
Given that the sniffer only receives a single user's data and only reports such in radiotap, simply add the NSS value. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Link: https://patch.msgid.link/20261001161715.72614c2740f4.I34ad1e61e97e410eae7aa36018876277440da12f@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: mld: fix some radiotap field reportsJohannes Berg
For non-trigger-based UHR frames, the RU/DRU allocation is only valid for OFDMA PPDUs, and the non-OFDMA users and interference mitigation (IM) is only valid for non-OFDMA. Fix the reporting accordingly. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Link: https://patch.msgid.link/20261001161715.1c9e8d8a9176.I4f67f80fc962187dbe488506a7d90ffaf78585c4@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: mld: report UHR LTF symbols for non-TB PPDUsJohannes Berg
For TB (trigger-based) PPDUs we were already reporting this, but I missed it in the non-TB PPDU case. Add it now. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Link: https://patch.msgid.link/20261001161715.a8228ab59708.I6c58f3e4f30bb0fb7e57a6c49782bf79d280371d@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: mld: add UHR sniffer supportJohannes Berg
Add UHR sniffer support as supported by the hardware. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Link: https://patch.msgid.link/20261001161715.a1e1090ec775.I47fb568ddcd9d6aca634400b2d4850c1fef035ca@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: mld: add STA_CONFIG_CMD version 4Emmanuel Grumbach
Version 4 replaces the unused trig_rnd_alloc field with cip_defer and epp_robust: - cip_defer tells the firmware to delay the usage of the unicast control frame protection key until after association. - epp_robust tells the firmware that EPP robust individually addressed management frame support was negotiated, so that the protected action categories are used for specific unicast action frames. Add the matching EPP_ROBUST_CONNECTION flag to the WoWLAN config command flags for the D3 path. Assisted-by: LLM Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Link: https://patch.msgid.link/20261001161715.b62474b1ccef.I51756391283ec42a40dd38a3586ad89759fb82d1@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: mld: remove unused fields from the firmware APIEmmanuel Grumbach
ENABLE_STORE_BEACON is not defined in the firmware API and is never set by the driver. STA_CONFIG_CMD's trig_rnd_alloc was never used by the firmware either. Remove both. Assisted-by: LLM Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Link: https://patch.msgid.link/20260930121740.157e71ac8641.Iac2bd1f57b2c4bbdfe33efab31111a7de02bdf16@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: trans: bring virtualization backMiri Korenblit
We removed virtualization because PCIe is the only bus. The problem with the if-else approach is that it causes a dual dependency: the generic trans needs to include the bus specific, and vice-versa. Besides being a bad design, it also has pratical problems: 1. small functions that could be static inline ones - can't, because only iwl-trans.c has the bus specific include. 2. while in pcie we have one giant header file, ironically called internal.h, that has all the declarations needed by the generic trans, in USB there will be several ones, and including them means including all the USB internal logic, which should not be exposed. This commit brings back the virtualization. Since gen1 and gen2 were never split properly, and since they share almost all the callbacks, pcie registers with a single ops struct. This also fixed the debug code to call a generic API for fw reset handshake, instead of calling the pcie directly. Assisted-by: GitHubCopilot:claude-opus-4.8 Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Link: https://patch.msgid.link/20260930121740.c0dde34db029.I0b53f83df3faad21c0c39b3e709896e7dde6ac35@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: mld: test TX gp2 timestampsDaniel Gabay
Add KUnit tests for the gp2 estimate: timestamp arithmetic and u32 wraparounds, zero offsets, zero timestamp handling, and the expiry and refresh thresholds driven by valid_until. Exercise the thresholds with jiffies near wraparound. Signed-off-by: Daniel Gabay <daniel.gabay@intel.com> Assisted-by: LLM Link: https://patch.msgid.link/20260930121740.16628072486e.Ia0ead71cdc521a3c5db80bfd2e11a718692b3ab2@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: call generic trans API and not pcie oneMiri Korenblit
iwl_trans_pcie_reset is currently called from outside of pcie, like in mvm opmode. This is wrong and contradicts the architecture. Add a generic trans API which will call the PCIE implementation. Link: https://patch.msgid.link/20260930121740.444e257d5a49.I4c4892ca6bcae0095639341f3c2aba76bcd1ee86@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: move iwl-io functions to iwl-transMiri Korenblit
This commit completes the removal of iwl-io. Now that all io helpers use the iwl_trans_ prefix, move them to iwl-trans.h/c. Includers are updated to pull in iwl-trans.h No functional change. Assisted-by: GitHubCopilot:claude-opus-4.8 Link: https://patch.msgid.link/20260930121740.28c8b1af4303.I93a06977d9f5affa16c699d32e0e0577e49a534e@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: rename io helpers to iwl_trans_ prefixMiri Korenblit
The iwl-io is a wrapper layer for all the device memory access operations. But all it really does is either a combination of other operations, or tracing and calling the trans function, which calls the bus-specific implementation. This makes the code hard to follow. Those helpers are really part of the transports functionality, so there is no reason to keep this complexity. This and the following commit will remove iwl-io.c/h: this renames the functions to have the trans prefix, and a next one will move them to iwl-trans. No functional change. Assisted-by: GitHubCopilot:claude-opus-4.8 Link: https://patch.msgid.link/20260930121740.96f5fe1d78b9.Ie580d7156b6b0175bf45e24c93dd4cce1da065ea@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: pcie: rename pcie-internal functionsMiri Korenblit
Functions that are in pcie level should have the pcie prefix. In particular, the functions renamed in this commit are easy to be confused with the generic trans ones. Rename those functions to have a pcie prefix. Assisted-by: GitHubCopilot:claude-opus-4.8 Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Link: https://patch.msgid.link/20260930121740.09af8a4d712b.I5867c6f937d569349e1950733361bf83a5e49fbb@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: collapse iwl_read_prph_no_grab() into the transport APIMiri Korenblit
iwl_read_prph_no_grab() was a thin wrapper that read via iwl_trans_read_prph_no_grab() and emitted the ioread_prph32 tracepoint. Fold the tracepoint into the bus-specific implementation (iwl_trans_pcie_read_prph()) and remove the wrapper, so callers use the transport API (or the pcie primitive from within pcie) directly. No functional change intended. Assisted-by: GitHubCopilot:claude-opus-4.8 Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Link: https://patch.msgid.link/20260930121740.592c74d42694.I329ccec5de9d0a6ec87538aceabce17149258841@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: rename iwl_trans_read_prphMiri Korenblit
Functions that assume that nic access was acquired should have a _no_grab postfix, so the caller will know that he is responsible to have access when calling it. Add the postfix. Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Link: https://patch.msgid.link/20260930121740.3441b513bd7f.If88dcac92f705918b550fd3e524196be1f8d92d0@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: avoid unnecessary indirectionMiri Korenblit
Some helpers in iwl-io are no more than thin wrappers that do tracing and call the underlying iwl_trans_* function, which in turn calls the bus specific implementation. This forces an unneeded indirection for calls from within pcie, and in general makes the code harder to follow. Move the tracing to the pcie implementation and get rid of those wrappers: change the pcie callers to call the pcie implementation directly, and the callers outside the transport - to call the iwl_trans_* API. This also improves the current callers of the pcie specific implementations to include tracing, which they didn't have before this commit. Assisted-by: GitHubCopilot:claude-opus-4.8 Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Link: https://patch.msgid.link/20260930121740.8a85afed9cd7.If4806e645949ec73b8c734486605d7d4ea8ada4e@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: mld: report RX time from channel surveyBenjamin Berg
Newer firmware versions will start reporting a separate RX time value that represents for how long the channel was busy with Wi-Fi frames. Previously the reported value for RX time was equal to the busy time. As such, report the information as it will be useful in the future. Signed-off-by: Benjamin Berg <benjamin.berg@intel.com> Link: https://patch.msgid.link/20260930121740.727c05ab3c58.I9509587622fa7c6493b6baee53372c548bf60ed8@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: mld: add gp2 timestamps to TX commandsDaniel Gabay
TX command v12 adds a driver timestamp in the gp2 clock domain. Firmware uses it to age out frames deferred by CCA for more than four seconds. Without it, a blocked queue can stall until the datapath monitor fires LMAC assert 0x4433. Reading the gp2 register per frame is too expensive for the TX path. Instead, use a worker to measure its offset from host boottime and publish the offset and validity deadline using atomic stores. TX then estimates gp2 without allocation or locking for timestamp reads. TX requests a refresh after five seconds, while the estimate remains valid for ten seconds to tolerate worker delays and bound clock drift. Successful refreshes require no periodic work while traffic is idle. A failed read invalidates the estimate and schedules a retry after roughly one second, rounded for timer coalescing, even without traffic. Invalidate the estimate before D3 entry and firmware shutdown, and refresh it on resume or reload because gp2 restarts with firmware. Frames without a valid estimate carry a zero timestamp, which firmware ignores. Signed-off-by: Daniel Gabay <daniel.gabay@intel.com> Assisted-by: LLM Link: https://patch.msgid.link/20260930121740.a5016741a467.Ie4d4af8d7100a656a8469edc0c38ec81b0b58860@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: mld: fake a valid NSS field when neededEmmanuel Grumbach
We hit a WARNING in mac80211 in sniffer that complains that rx_status->nss is 0. This happens on frames that the firmware doesn't really understand and when that happens, somehow the STBC bit is set. The driver divides the number of antennas by 2 to get the NSS with STBC set because each stream requires 2 antennas. Since NSTS=1, NSS end up being 0. Since we don't have devices with more than 2 antennas, just consider that when we receive STBC traffic, we have one spatial stream. Since this problem has been seen on HE traffic only, don't apply this logic on VHT / HT code paths. Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Reviewed-by: Johannes Berg <johannes.berg@intel.com> Link: https://patch.msgid.link/20260930121740.2589668e377b.Ib41003bd4e10f0fe6d7f4aa1038291be330c3175@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: move pcie-only functions to pcieMiri Korenblit
There are several helpers that exported to the opmodes but are really only called from the pcie transport. Define those functions there. No functional change intended. Assisted-by: GitHubCopilot:claude-opus-4.8 Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Link: https://patch.msgid.link/20260930121740.480246f9b623.I88de3ad2bbd8a8444ff2a154f7eb1f08ecb7b7ea@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: add _no_grab postfix to some functionsMiri Korenblit
A function that accesses the nic memory without grabbing nic access first, needs to have a _no_grab postfix. It makes it clear to the caller that he is responsible for grabbing it. Add it to iwl_trans_write_prph and iwl_trans_pcie_write_prph as well. Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Link: https://patch.msgid.link/20260930121740.68337f23f322.I38ed9c92bf6358158974b0af025d8bf8fdd7e4f5@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: disable HE ER modeShahar Tzarfati
HE ER mode (~3 Mbps) provides marginal range benefit over legacy rates, while effective coverage remains constrained by beacon reception. In addition, ~3 Mbps is insufficient for laptop connectivity. Furthermore, any range benefit in 5 and 6 GHz is more easily achieved by roaming to 2.4 GHz, while avoiding degrading 5 and 6 GHz aggregate network capacity with low-rate links. Therefore, disable HE ER mode. Signed-off-by: Shahar Tzarfati <shahar.tzarfati@intel.com> Link: https://patch.msgid.link/20260926201527.aac48f46b60e.I5dcf9ed88b2b73bc09c81c0d9c841dc624447faf@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: drop the orphaned nic_access annotationsMiri Korenblit
commit 5b63d0ae94cc ("compiler-context-analysis: Remove Sparse support") deleted the Sparse implementation of the lock annotations. __acquires()/__releases()/__acquire()/__release() are gone; the macros now only map onto clang's context analysis and expand to nothing for gcc. The nic_access annotations describe nothing anymore: - Every one of them is a __releases() with no matching __acquires(). The acquire side was the __cond_lock() wrapper around _iwl_trans_grab_nic_access(), which went away together with __cond_lock() itself. The names don't even agree - PCIe releases nic_access_nobh while the generic wrapper calling it claims nic_access. - The __acquire()/__release(reg_lock) pairs only existed to silence Sparse Use lockdep_assert_held() instead, which unlike the annotations actually runs, and add the missing assertion to iwl_trans_pcie_resched_with_nic_access(). Reviewed-by: Johannes Berg <johannes.berg@intel.com> Link: https://patch.msgid.link/20260926201527.f818a7e09def.Iccecaabe0f37525430377ae1c0db6fd7bbf7625a@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>