summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/intel
AgeCommit message (Collapse)Author
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>
2026-10-14wifi: iwlwifi: support RX BAID modify command version 3Emmanuel Grumbach
Version 3 of the RX BAID allocation modify command shrinks the tid field to a u8 and adds a window size field, so that the window size can be updated while moving a BAID to a new AP. A window size of 0 tells the firmware to keep the current one, which is what we need for now. Add the new layout and pick it based on the command version. Assisted-by: LLM Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Link: https://patch.msgid.link/20260926201527.46c77de75c0b.Ie41b1d43f945a0c5e2bb68981a0cec0c62111233@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: add support for the new MPDU descriptorEmmanuel Grumbach
The firmware now reports in DW-12 bits 31:24 the RU/MRU/DRU that was used for the received frame, in trigger-like format. The MAC context byte moved to bits 31:24 of DW-10. It isn't used by the driver, so just follow the new layout. Assisted-by: LLM Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Link: https://patch.msgid.link/20260926201527.cf236c23d1aa.Ie2d919c884f7db8cd76b4cb6a9f4584eb285eea5@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: move iwl_force_nmi() to where it belongsMiri Korenblit
iwl_force_nmi() forces a firmware NMI and has nothing to do with the register I/O helpers in iwl-io.c. Move it to iwl-trans.c and rename it to iwl_trans_force_nmi() to match the transport API naming. Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Link: https://patch.msgid.link/20260926201527.c3312fb2f2cc.Ie0d3ea9b23e35d7ff4b67e129c7b97ccb7c6c453@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
2026-10-14wifi: iwlwifi: open code iwl_trans_sync_nmi_with_addr()Miri Korenblit
iwl_trans_sync_nmi_with_addr() had a single caller, iwl_trans_pcie_sync_nmi(). There is no reason to keep it as a separate exported function in iwl-io.c, so embed its body directly in the caller and drop the now-unused declaration. Link: https://patch.msgid.link/20260926201527.a2048732f45f.I23611eb40d875c6a69df0c08add3834f6f7d8528@changeid Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>