Shaul Triebitz
c4302c0f2d
wifi: iwlwifi: mvm: always update keys in D3 exit
...
If during D3 there was both a GTK rekey and a
disconnection, when waking up, we must first
update the new keys and then disconnect.
The reason is that when disconnecting we first need
to remove the keys.
Trying to remove invalid keys results in firmware
assert.
Signed-off-by: Shaul Triebitz <shaul.triebitz@intel.com >
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com >
Link: https://msgid.link/20240205211151.68cf3974b5d7.Iac9b71a1906ab973aba9baadc9e923b63c0b4945@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:48 +01:00
Johannes Berg
1b3741ea40
wifi: iwlwifi: mvm: limit pseudo-D3 to 60 seconds
...
With unlimited pseudo-D3, we can get stuck here in the read if
the firmware never wakes up. All of our testing infrastructure
however will anyway give up after at most a minute, so there's
no value in that.
Limit this to about a minute to avoid getting stuck with the
RTNL held forever, which basically makes the machine unusable
and then we can't even understand what caused the failure.
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com >
Link: https://msgid.link/20240205211151.ca55b3a7fa8d.Id746846f187442ebc689416d2688f2bd9278c0e9@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:48 +01:00
Johannes Berg
066425b6c8
wifi: iwlwifi: mvm: combine condition/warning
...
WARN() returns the value of the condition, so it's
nicer to combine the warning and the if.
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com >
Link: https://msgid.link/20240205211151.44f63334760e.If0a2cf347a8676a3830c5c3183a257fe11f31419@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:47 +01:00
Shaul Triebitz
f05ef3497f
wifi: iwlwifi: mvm: fix the key PN index
...
When waking from D3 (and a GTK rekey happened during
D3), the key itself is saved in iwl_wowlan_status_data::gtk
array, but the PN is saved in iwl_wowlan_status_data::gtk_seq
array.
The indices (of the same key) might differ in both arrays.
Fix using the gtk array index in the gtk_seq array.
Rather, iterate and search for the correct key in the
gtk_seq array.
Signed-off-by: Shaul Triebitz <shaul.triebitz@intel.com >
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com >
Link: https://msgid.link/20240205211151.bdd0511c007d.I3325288c64c010a4d008ac4429de1c2b14ef764c@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:47 +01:00
Daniel Amosi
b7acc059a7
wifi: iwlwifi: mvm: Keep connection in case of missed beacons during RX
...
The client needs to disconnect from AP in case of more than 19 missed
beacons only if no data is coming from that AP, otherwise it needs to
stay connected.
Signed-off-by: Daniel Amosi <amosi.daniel@intel.com >
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com >
Link: https://msgid.link/20240205211151.080195242c18.Ib166fc4e46666165a88e673a4a196cb8f18fdec4@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:47 +01:00
Miri Korenblit
556c7cd721
wifi: iwlwifi: properly check if link is active
...
Before sending SESSION PROTECTION cmd the driver verifies that the
link for which the cmd is going to be sent is active.
The existing code is checking it only for MLD vifs,
but also the deflink (in non-MLD vifs) needs to be active in order
the have a session protection for it.
Fix this by checking if the link is active also for non-MLD vifs
Fixes: 1350658373 ("wifi: iwlwifi: support link_id in SESSION_PROTECTION cmd")
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com >
Reviewed-by: Johannes Berg <johannes.berg@intel.com >
Link: https://msgid.link/20240205211151.c61820f14ca6.Ibbe0f848f3e71f64313d21642650b6e4bfbe4b39@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:47 +01:00
Miri Korenblit
74f4cd7107
wifi: iwlwifi: take SGOM and UATS code out of ACPI ifdef
...
The BIOS tables SGOM and UATS are read from UEFI, but require
additional tables (WGDS and DSM func 3, respectively) which used to be
read from ACPI only, so the code handling those tables had to be under
ifdef ACPI. But now the driver reads those tables (WGDS and DSM) from
both ACPI and UEFI, so SGOM and UATS code shouldn't be under ifdef ACPI
anymore.
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com >
Link: https://msgid.link/20240205211151.dcaa3325773f.I649079c842369dcae3a362842322deca422a61d5@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:47 +01:00
Johannes Berg
0dd2b42c2c
wifi: iwlwifi: mvm: don't abort queue sync in CT-kill
...
CT kill should stop doing a lot of TX etc. to cool down the
NIC, but we don't stop all commands from going to the NIC,
and as such we shouldn't abort queue sync, since it can get
confused if we do, warning that we do it twice at the same
time etc. Only stop it when we'd also not send it in the
first place.
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com >
Link: https://msgid.link/20240205211151.4e0745e2cd97.I311dc623ce68de6a2da3c21c8d84a387844f714a@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:47 +01:00
Shaul Triebitz
87f690f5a9
wifi: iwlwifi: mvm: define RX queue sync timeout as a macro
...
define the timeout on RX queues notification as a macro so it will be
clearer.
Signed-off-by: Shaul Triebitz <shaul.triebitz@intel.com >
Reviewed-by: Luciano Coelho <luciano.coelho@intel.com >
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com >
Link: https://msgid.link/20240205211151.a6985ea87751.Iafb7ae13aa58d66512e4b3fa6c75149c75cbc305@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:47 +01:00
Johannes Berg
f4eedfd88b
wifi: iwlwifi: mvm: expand queue sync warning messages
...
It's a bit tricky to understand what's going on here, add
more data to the warning messages to make that clearer.
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com >
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com >
Link: https://msgid.link/20240205211151.1df82a509636.I2f71811569a5c48eb166c4caa779af2d6160ad33@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:47 +01:00
Ilan Peer
4d951e265c
wifi: iwlwifi: mvm: Declare support for secure LTF measurement
...
Declare support for secure LTF measurement if the FW supports it.
Signed-off-by: Ilan Peer <ilan.peer@intel.com >
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com >
Link: https://msgid.link/20240204235836.f20d2437c06f.I479df8ab543db2d05c413119ad3eb3936cc86294@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:47 +01:00
Avraham Stern
8b720901d9
wifi: iwlwifi: mvm: advertise support for protected ranging negotiation
...
Advertise support for protected ranging negotiation if the firmware
supports it.
Signed-off-by: Avraham Stern <avraham.stern@intel.com >
Reviewed-by: Luciano Coelho <luciano.coelho@intel.com >
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com >
Link: https://msgid.link/20240206135637.9bb7e13ad18c.I578af1c9836e91069ce318b265bd221f42955992@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:46 +01:00
Johannes Berg
f863afbd30
wifi: iwlwifi: mvm: remove one queue sync on BA session stop
...
As documented in the comment, this queue sync was here to
ensure that an async IWL_MVM_RXQ_NSSN_SYNC queue sync won't
race with setting up a new BA session with the same BAID.
However, we no longer do IWL_MVM_RXQ_NSSN_SYNC queue sync,
so we can remove this as well.
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
Reviewed-by: Grumbach, Emmanuel <emmanuel.grumbach@intel.com >
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com >
Link: https://msgid.link/20240204235836.0a09ab337b54.I0dfe239dc30577a2ff23f910b10e9957364ccc78@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:46 +01:00
Miri Korenblit
f51d643182
wifi: iwlwifi: support EHT for WH
...
sku_cap_11be_enable should be set to true also for WH.
Fixes: e1374ed253 ("wifi: iwlwifi: Add support for new CNVi (SC)")
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com >
Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com >
Link: https://msgid.link/20240204235836.a6d4097cbaca.I8b00fa7b6226b4116cd91f70fb0b15e79b4dee5a@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:46 +01:00
Emmanuel Grumbach
449619744d
wifi: iwlwifi: mvm: don't support reduced tx power on ack for new devices
...
This is no longer supported by the firmware.
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com >
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com >
Link: https://msgid.link/20240204235836.768d56206093.I737872ff19f0dbeefca42a239d673f05b9ac06f0@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:46 +01:00
Johannes Berg
318b3fac34
wifi: iwlwifi: use system_unbound_wq for debug dump
...
This can take some time, so it's better to use the unbound
workqueue.
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com >
Link: https://msgid.link/20240204235836.75c8d2286f81.I478e9faf422f22ae66c0a113003fea83565c5692@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:46 +01:00
Johannes Berg
83f57c936b
wifi: iwlwifi: mvm: remove EHT code from mac80211.c
...
The code here is the pre-MLD API, but of course older FW
that doesn't support MLD APIs cannot support EHT. Remove
some code that shouldn't be there.
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com >
Link: https://msgid.link/20240204235836.bde5a9d87759.I4c69dd94416f92b0f1f53dd57dafecbec643600d@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:46 +01:00
Miri Korenblit
814cdd7c37
wifi: iwlwifi: read mac step from aux register
...
in BZ, the mac step is not updated to the HW REV CSR.
For BZ-I, read it from the CNVI aux register
For BZ-U always take B step.
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com >
Link: https://msgid.link/20240204235836.dcc18b533f13.I0a6267fa0a142744bcf7500b45f667b596b492c5@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:46 +01:00
Miri Korenblit
f94c24386d
wifi: iwlwifi: adjust rx_phyinfo debugfs to MLO
...
This debugfs entry is used to configure the rx_phyinfo.
Currently we are sending the phy cmd only for the deflink.
Change it to send the cmd for all active links of the vif
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com >
Reviewed-by: Gregory Greenman <gregory.greenman@intel.com >
Link: https://msgid.link/20240204235836.a68ee2b6cb58.Iddc47c608ec990b12be0ae5b1ee89bcf6beb0f6a@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:46 +01:00
Johannes Berg
e047e0e3cc
wifi: iwlwifi: mvm: const-ify chandef pointers
...
In much of the PHY context handling code the chandef
coming from mac80211 is read-only, mark them const
to make that clearer.
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com >
Link: https://msgid.link/20240204235836.e7fbd3e26d85.I72d72e61dc5f5fc76c53e32cb60b66237eaedec3@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:46 +01:00
Anjaneyulu
3d801a7591
wifi: iwlwifi: Add support for PPAG cmd v5 and PPAG revision 3
...
Add support for
- PPAG revision 3 in BIOS to enable PPAG in UHB
- PPAG command version 5, this command allows OEM to control
enablement of PPAG for LPI for UHB mode in USA and ETSI countries.
Signed-off-by: Anjaneyulu <pagadala.yesu.anjaneyulu@intel.com >
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com >
Link: https://msgid.link/20240204235836.d17425824b11.If2c1b29e3c579f4135383681af2d625cfe2cffcd@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:45 +01:00
Johannes Berg
a20ac99b5f
wifi: iwlwifi: pcie: don't allow hw-rfkill to stop device on gen2
...
On new devices the HW rfkill shutdown doesn't need to be handled
"as fast as possible", so disallow the immediate shutdown mode
here via documentation and a warning.
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com >
Link: https://msgid.link/20240204235836.794c5387e67e.I064365428815ec3135afa345fbbde78449b60203@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:45 +01:00
Miri Korenblit
80b0c88033
wifi: iwlwifi: add HONOR to PPAG approved list
...
Add HONOR to the list of the OEMs that are allowed to use
the PPAG feature
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com >
Reviewed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com >
Link: https://msgid.link/20240204235836.3498abc62910.I156c34206c58ff26e73f705cbda6f1a49b88edda@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:45 +01:00
Aditya Kumar Singh
04ada8599c
wifi: mac80211: add support to call csa_finish on a link
...
Currently ieee80211_csa_finish() function finalizes CSA by scheduling a
finalizing worker using the deflink. With MLO, there is a need to do it
on a given link basis.
Pass link ID of the link on which CSA needs to be finalized.
Signed-off-by: Aditya Kumar Singh <quic_adisi@quicinc.com >
Link: https://msgid.link/20240130140918.1172387-6-quic_adisi@quicinc.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:45 +01:00
Aditya Kumar Singh
1a96bb4e8a
wifi: mac80211: start and finalize channel switch on link basis
...
Add changes to start a channel switch as well as finalize it on link basis
in order to support CSA with MLO as well.
Signed-off-by: Aditya Kumar Singh <quic_adisi@quicinc.com >
Link: https://msgid.link/20240130140918.1172387-5-quic_adisi@quicinc.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:45 +01:00
Aditya Kumar Singh
a3a637a6c0
wifi: mac80211: handle set csa/after_csa beacon on per link basis
...
In order to support CSA with MLO, there is a need to handle the functions
ieee80211_set_csa_beacon() and ieee80211_set_after_csa_beacon() on a per
link basis.
Implement this by making the function argument accept the the link data
instead of the sdata.
Currently, deflink would only be passed. Proper link data will be passed in
a subsequent patch.
Signed-off-by: Aditya Kumar Singh <quic_adisi@quicinc.com >
Link: https://msgid.link/20240130140918.1172387-4-quic_adisi@quicinc.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:45 +01:00
Aditya Kumar Singh
480e7048aa
wifi: mac80211: update beacon counters per link basis
...
Currently, function to update beacon counter uses deflink to fetch
the beacon and then update the counter. However, with MLO, there is
a need to update the counter for the beacon in a particular link.
Add support to use link_id in order to fetch the beacon from a particular
link data during beacon update counter.
Signed-off-by: Aditya Kumar Singh <quic_adisi@quicinc.com >
Link: https://msgid.link/20240130140918.1172387-3-quic_adisi@quicinc.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:45 +01:00
Aditya Kumar Singh
4ace04c0bd
wifi: cfg80211: send link id in channel_switch ops
...
Currently, during channel switch, no link id information is passed down.
In order to support channel switch during Multi Link Operation, it is
required to pass link id as well.
Add changes to pass link id in the channel_switch cfg80211_ops.
Signed-off-by: Aditya Kumar Singh <quic_adisi@quicinc.com >
Link: https://msgid.link/20240130140918.1172387-2-quic_adisi@quicinc.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:45 +01:00
Michael-CY Lee
21c3f8f955
wifi: mac80211: refactor STA CSA parsing flows
...
The new Wi-Fi Standard (IEEE Std 802.11-2020 9.4.2.160) specifies that
the Wide Bandwidth Channel Switch (WBCS) Element subfields have the same
definitions as VHT operation information if the operating band is not
S1G.
The problem comes when the BSS is in 6 GHz band, the STA parses the WBCS
Element by ieee80211_chandef_vht_oper(), which checks the capabilities for
HT/VHT mode, not HE/EHT mode.
This patch refactors STA CSA parsing flow so that the corresponding
capabilities can be checked. Also, it adds the way to use op_class in ECSA
Element to build a new chandef.
In summary, the new steps for STA to handle CSA event are:
1. build the new chandef from one of the CSA-related (Sub)Elements in
following order,
- Bandwidth Indication (Sub)Element
- Wide Bandwidth Channel Switch (Sub)Element
- Operating class in Extended Channel Switch Announcement Element
- Channel Switch Announcement Element
2. convert the new chandef into operation information according to the
operating band in order to check if the new chandef fits STA's
capabilities.
3. downgrade the bandwidth until current bandwidth is not disabled.
Co-developed-by: Money Wang <money.wang@mediatek.com >
Signed-off-by: Michael-CY Lee <michael-cy.lee@mediatek.com >
Link: https://msgid.link/20231222010914.6521-3-michael-cy.lee@mediatek.com
[rebase on top of the changes with struct ieee80211_conn_settings,
prefer leXY_encode_bits()]
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:45 +01:00
Michael-CY Lee
68de13028b
wifi: cfg80211: Add utility for converting op_class into chandef
...
This utility is used in STA CSA handling. The op_class in the ECSA
Element can be converted into chandef.
Co-developed-by: Money Wang <money.wang@mediatek.com >
Signed-off-by: Michael-CY Lee <michael-cy.lee@mediatek.com >
Link: https://msgid.link/20231222010914.6521-2-michael-cy.lee@mediatek.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:44 +01:00
Dan Carpenter
f29a8be886
wifi: iwlwifi: return negative -EINVAL instead of positive EINVAL
...
The '-' character is missing in -EINVAL.
Fixes: fc7214c3c9 ("wifi: iwlwifi: read DSM functions from UEFI")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org >
Link: https://msgid.link/f0391316-ab30-4664-96ac-03445ab2aeba@moroto.mountain
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:44 +01:00
Johannes Berg
37c37096ad
wifi: mac80211: don't use sband->band early
...
Some drivers may (notably mt76 does) not set up sband->band
before registering, and cfg80211 will fill it in later. But
since the HT/HE capability check mac80211 required it to be
initialized already, otherwise failing things. This really
isn't necessary though since the code is iterating the list
of bands, and has the 'band' variable available. Fix it to
not require the sband->band to be initialized already.
Fixes: f04d2c247e ("wifi: mac80211: disallow drivers with HT wider than HE")
Reported-by: Bert Karwatzki <spasswolf@web.de >
Debugged-by: Bert Karwatzki <spasswolf@web.de >
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218466
Link: https://msgid.link/20240207115920.43cbedffb5c3.I4968e12275a3f95926e3f3ccae81e50f23fe4d4d@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:44 +01:00
Johannes Berg
84d3776ef7
wifi: mac80211_hwsim: add missing kernel-doc
...
Some kernel-doc is missing here, add it.
Link: https://msgid.link/20240206134555.eb95c1dfc1f0.Ibaf8b3249d9de59358bf6503fe4a186d9ac6544d@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:44 +01:00
Johannes Berg
03145a1d5d
wifi: mac80211: add missing kernel-doc for fast_tx_check
...
This was added earlier, add kernel-doc for it.
Link: https://msgid.link/20240206134555.6354b0ac8610.Ib90d3651834c556b73697388f59bd396a1f6f9b0@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:44 +01:00
Johannes Berg
91cdcbbcde
wifi: mac80211: clarify vif handling in TX dequeue
...
The vif pointer at least looks like it can actually be NULL
in some cases such as the monitor-mode vif, causing static
checkers to complain with the immediate derefence. In these
cases the sta pointer will also be NULL, but clarify it in
the code anyway.
Link: https://msgid.link/20240131164910.60066625a239.Idfb6a5a9876f9f631eae760055e1c4018259a971@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:44 +01:00
Johannes Berg
55167a3eed
wifi: mac80211: allow CSA to same channel
...
This could be used e.g. for temporarily sending quiet
(mode=1 in CSA/ECSA), or updating bandwidth. This is
also useful for testing, since it's something that an
AP may do and the client needs to be prepared. Simply
allow it.
Link: https://msgid.link/20240129203544.ef7258d5790d.Idafe22e41621757458d4960659b9621853f7104d@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:44 +01:00
Johannes Berg
ea8af8be42
wifi: mac80211: convert ieee80211_ie_build_eht_cap() to SKB use
...
Convert ieee80211_ie_build_eht_cap() to the SKB-put function
style, renaming it to ieee80211_put_eht_cap().
Link: https://msgid.link/20240129202041.ece9769e3c94.Ibd17bea6311f0c7ba56f6c1803fa3208abaaebb9@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:44 +01:00
Johannes Berg
28aa895bb0
wifi: mac80211: convert ieee80211_ie_build_he_cap() to SKB use
...
Convert ieee80211_ie_build_he_cap() to the SKB-put function
style, renaming it to ieee80211_put_he_cap().
Link: https://msgid.link/20240129202041.e6ef888980d9.Ied9e014314b5d27611e693e3d4cb63bdc8d7de17@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:44 +01:00
Johannes Berg
9d0480a7c0
wifi: mac80211: move element parsing to a new file
...
This code got really big, move it to a new file.
Pure code move.
Link: https://msgid.link/20240129202041.7f27f7c895e4.I0adfc28bd656a4d44c2bf47966277eecf56cbaa0@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:43 +01:00
Johannes Berg
07095d1677
wifi: mac80211: start building elements in SKBs
...
The building of elements is really mess, and really the only
reason we're not doing it in SKBs in the first place is that
the scan code in ieee80211_build_preq_ies() doesn't.
Convert ieee80211_build_preq_ies() to use an SKB internally
so that we can gradually convert other things to ..._put_*()
style interfaces.
Link: https://msgid.link/20240129202041.c3a8e3c2cc99.I9d9920858c30ae5154719783933de0d7bc2a2cb9@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:43 +01:00
Johannes Berg
147ceae205
wifi: mac80211: simplify adding supported rates
...
Make this a new-style "put" function, and change the
parameters to pass more information directly, this
makes it usable also for the MLME code.
Link: https://msgid.link/20240129202041.f604a03bd728.I8c798ea45b8479ac9982e77d0378af11a09ccdaf@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:43 +01:00
Johannes Berg
e0b5ee9187
wifi: mac80211: tdls: use ieee80211_put_he_6ghz_cap()
...
We don't need to use the write function here since we already
have an SKB, so use ieee80211_put_he_6ghz_cap() with the SMPS
mode taken from the link we're using.
Link: https://msgid.link/20240129202041.6454ac78ff8c.I7152e3c27645105478c68d40ca493feb27cac6bf@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:43 +01:00
Johannes Berg
552a26b385
wifi: mac80211: rename ieee80211_ie_build_he_6ghz_cap()
...
The term 'IE' isn't really in use in the spec, and I want
to rework all of this to use SKBs as the primary method
for building elements. Rename this one already.
Link: https://msgid.link/20240129202041.b8064a4e73b5.I8d2f4526562029107c6414c6cda378b300b1b0b0@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:43 +01:00
Johannes Berg
06b4c8665d
wifi: mac80211: limit HE RU capabilities when limiting bandwidth
...
When limiting a station's supported bandwidth while connecting,
also limit various other HE capabilities according to the bandwidth
needed for them.
Link: https://msgid.link/20240129202041.34be99efca25.I02a695961bc6aadd37768b17c50fcdec4427d460@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:43 +01:00
Johannes Berg
6239da18d2
wifi: mac80211: adjust EHT capa when lowering bandwidth
...
If intending to associate with a lower bandwidth, remove capabilities
related to 320 MHz from the EHT capabilities element. Also change the
EHT MCS-NSS set accordingly: if just reducing 320->160 or similar the
format doesn't change, just cut off the last bytes. If changing from
higher bandwidth to 20 MHz only EHT STA, adjust the format.
Note that this also requires adjusting the caller in mlme.c since the
data written can now be shorter than it determined. We need to clean
all that up. Since the other callers pass NULL for the conn limit, we
don't need to change things there.
Link: https://msgid.link/20240129202041.b5f6df108c77.I0d8ea04079c61cb3744cc88625eeaf0d4776dc2b@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:43 +01:00
Johannes Berg
90233160d7
wifi: mac80211: simplify HE/EHT element length functions
...
We don't need to pass the iftype there, we already have it
in the sdata. Simplify this code.
Link: https://msgid.link/20240129202041.5890eb1d4184.Ibce7e5abcc7887630da03ac2263d8004ec541418@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:43 +01:00
Johannes Berg
a57944d1ee
wifi: mac80211: disallow basic multi-link element in per-STA profile
...
There really shouldn't be a basic multi-link element in any
per-STA profile in an association response, it's not clear
what that would really mean. Refuse connecting in this case
since the AP isn't following the spec.
Link: https://msgid.link/20240129200652.23f1e3b337f1.Idd2e43cdbfe3ba15b3e9b8aeb54c8115587177a0@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:43 +01:00
Johannes Berg
3552a22880
wifi: mac80211: disambiguate element parsing errors
...
Let the element parsing function return what kind of error
was encountered, as a bitmap, even if nothing currently
checks for which specific error it was, we'll use it later.
Link: https://msgid.link/20240129200652.1a69f2a31ec7.I55b86561d64e7ef1504c73f6f2813c33030c8136@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:42 +01:00
Johannes Berg
676259100c
wifi: mac80211: implement MLO multicast deduplication
...
If the vif is an MLD then it may receive multicast from
different links, and should drop those frames according
to the SN. Implement that.
Link: https://msgid.link/20240129200456.693b77d14b44.I491846f2bea0058c14eab6422962c10bfae9b675@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:42 +01:00
Johannes Berg
b1344b1399
wifi: mac80211: add/use ieee80211_get_sn()
...
This will also be useful for MLO duplicate multicast
detection, but add it already here and use it in one
place that trivially converts.
Link: https://msgid.link/20240129200456.f0ff49c80006.I850d2785ab1640e56e262d3ad7343b87f6962552@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com >
2024-02-08 15:00:42 +01:00