| Age | Commit message (Collapse) | Author |
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|