Currently, driver check peer mac address to filter out duplicate
command in serialization queue. This peer mac address will be
peer MLD address from North bound and link address from the south
bound. For multi-link SAP, if disassociation or deauthentication
request received for two links of same STA (MLD address is same but
link address is different), then driver queue disassociation or
deauthentication command in the serialization for both links.
This will lead to duplicate disassociation or DE authentication commands
in the serialization for same STA.
So, to fix this, add check for MLD address and link address in the
serialization filter.
Change-Id: I2619e3009b28ceba6af4383e36ae40af82020b5f
CRs-Fixed: 3790148
Add support to handle GET_KEEP_ALIVE_INETRVAL command.
If received command in connected state return keep alive
period configured to firmware but if command received in
disconnected state, if user space has set keep alive
period then return the user space configured value or
else return INI configured value.
Change-Id: I5d386ecd141531795b471198bd70afa20210bdc5
CRs-Fixed: 3818096
When connect 2 + 6 GHz MLO AP, 2 GHz is assoc link, when populate per
sta profile of 6 GHz in assoc req, use BW of current 2 GHz session
wrongly, so 320M is disabled wrongly in EHT cap.
To fix it, when populate per sta profile for assoc req, pass
pe_session as NULL since partner link pe session isn't created at that
time, don't clear 320M cap for 6 GHz link.
When config EPCS, update eht cap at same time.
Change-Id: I7422f0353cc087a24575f9be1d5b30a032cc7b8e
CRs-Fixed: 3821390
If host founds below all conditions are true:
1. Connected AP sends CCX IE in beacon/probe response
2. single PMK feature enabled via ini
"sae_single_pmk_feature_enabled"
3. And current connection is SAE with AKM type
WLAN_CRYPTO_KEY_MGMT_SAE_EXT_KEY or
WLAN_CRYPTO_KEY_MGMT_SAE
Then host should mark connected AP supports
"single PMK feature" and update same to FW via RSO
command.
Change-Id: I831cfefb60271b03e5c5cbdfde0bd5277ee116e0
CRs-Fixed: 3795133
In the case of of 5 GHz + non-tx 6 GHz MLO connection, the scan entry
generated from the ML-probe might not carry MBSSID information of the
non-tx partner. The RNR of the assoc link will also not be inherited.
Therefore, the mbssid info is not generated for this non-tx 6 GHz scan
entry. In such cases, if there is a vdev restart, host driver sends zero
mac address in trans bssid, leading to issues with connection.
To fix this:
1. Look up the RNR db for the 6 GHz link, and determine if the bss param
corresponding to the bssid is non-tx MBSSID.
2. If it is a non-tx MBSSID and there is no mbssid info in the scan cache,
then configure the tx-bssid as broadcast mac.
3. This allows the firmware to auto-detect the tx bssid from the upcoming
beacons.
4. Also, save the neighbor entries from the beacon/probes received from
the firmware during roam sync and other events to facilitate the look-up.
5. If there is no existing entry for the roamed non-tx link, then caching
the neighbor info from the assoc partner link would store the valid entry
into the rnr db.
Change-Id: Ie5ef03fc8504cd63f6db98d2ce4af7eb5c2d7e00
CRs-Fixed: 3789675
Change the default connection dot11mode behavior of APs with
following security configuration which can support MLO:
1) WPA2 with PMF
2) WPA3-SAE with HnP (or H2E cap equals false)
Currently User has to force allow connection in MLO via INI or
else driver downgrades such candidates to 11ax.
Change-Id: I4ff232fc920e19e4f158eba3038abd57b045e705
CRs-Fixed: 3779433
Any MLD peer setup call to cdp shall happen only after
clearing the existing MLD peer otherwise the MLD peer's
VDEV reference is lost on recreation. This leads to
VDEV reference leak.
Add history to track the peer setup and destroy sequence,
to understand the CP peer create/destroy sequence when
any such leak happens.
Change-Id: If338bc26e086490a3cc2bb4de32efa6a762ee0e6
CRs-Fixed: 3736548
As per FW, value of gEnable2x2 and gEnableHtSMPS are
independent.
Remove dependency of INI "gEnable2x2: used to enables/
disables VHT Tx/Rx MCS values for 2x2" and INI
"gEnableHtSMPS : used to enable SM Power Save".
Initialize ht_cap_info.mimo_power_save bit as per INI
"gHtSMPS: used to set default SM Power Save Antenna mode"
Update SMPS HT cap as per FW capability
WMI_HT_CAP_DYNAMIC_SMPS and ini gHtSMPS.
Change-Id: I79ad8f060adb550c738c58259fa65f073ad9b42d
CRs-Fixed: 3771123
Currently, firmware-reported unsafe channels are ignored
and userspace configured channels are honored when
coex_unsafe_chan_nb_user_prefer ini is set. This is supported for
SAP mode only.
But some platforms may want driver to ignore the firmware-
reported coex channels for P2P-GO also.
Enhance the ini to allow user to configure mode specific
bit as mentioned below,
BIT 0: Don't honor fw coex/unsafe channel info for SAP mode
BIT 1: Don't honor fw coex/unsafe channel info for P2P-GO mode
Change-Id: I91a2c6b2da9aba411d081f6ae3b23d374fe53159
CRs-Fixed: 3766393
Host update “UL MU-MIMO” bit as HE cap in assoc request
based on below 2 things:
1. "enable_ul_mimo" INI
2. FW capability WMI_HECAP_PHY_ULMUMIMOOFDMA_GET
Fix is to overwrite he_cap->ul_mu feature in assoc request
configured via above FW capability with value of ini
"enable_ul_mimo".
Change-Id: I6ede13ec107a194f11a094ccd954155e859c02ec
CRs-Fixed: 3750038
For Dual SAP(legacy SAP + 6 GHz SAP), WFA HE-4.1.1 cert
case requires the following:
a) If Dual SAP is enabled, the 6 GHz SSID should be
discovered via the RNR IE of the colocated legacy SAP.
b) If a co-located neighbor is present, the 6 GHz SAP
should not send FD or unsolicited probe responses.
Add support for the above the cert case by configuring the
FD support for the 6 GHz SAP based on the operation of the
co-located SAP.
Change-Id: I045911cd34bceccdb08248ae7b99beb8454a2c98
CRs-Fixed: 3732649
User/wpa_supplicant disable roaming flag is only effective for current
connection, it will be cleared during new connection.
APP/wpa_supplicant can uses QCA_NL80211_VENDOR_SUBCMD_ROAMING to change
roaming behavior for current connection.
Change-Id: If9f439f51e25e3d67f5db5557c0d8f468b071596
CRs-Fixed: 3737996
AP sends "Operating Mode Notification" IE having max supported
channel width (say ap operating bw) via beacon/probe response/
association/re-association response frame.
When datapath detect leaky AP, to enable/disable, userspace
sends ch_width update to host.
Step 1. If STA founds OMN IE present in above frame, host
sends update channel width (say new AP operating BW is
80 MHz) ind via WMI_PEER_SET_PARAM_CMDID with param id 4
(WMI_HOST_PEER_CHWIDTH).
Step 2: After ch_width update to 80 MHz in FW at step 1,
if host receives a update ch_width (to 160 MHz) request
from userspace on leaky AP detection disable. Host updates
its internal channel info structure with new BW and sends
update indication to FW via WMI_VDEV_SET_PARAM_CMDID
with param id WMI_VDEV_PARAM_CHWIDTH_WITH_NOTIFY.
In case, if host allows ch_width update greater than ch_width
present in OMN IE (ap operating bw), FW only disable leaky
detection but did not update Rx/Tx BW as per new ch_width as
ap operating bw is still 80 MHz (configured at step 1).
This leads to out of sync for value of ch_width in host and
FW and IOT issues.
To keep host and FW in sync with current AP's operating BW,
add a sanity check and reject request before updating internal
channel info structure in host if new ch_width (coming from
user space) is greater than ap operating bw present OMN IE.
Change-Id: Iedc1706e32b9e08512ca6c9b98162902cd32f976
CRs-Fixed: 3732557
Force single link on 2 GHz:
mlo_support_link_num=1, mlo_support_link_band=1
Force single link on 5 GHz:
mlo_support_link_num=1, mlo_support_link_band=2
Force single link on 6 GHz:
mlo_support_link_num=1, mlo_support_link_band=4
Force 2 links on 2+5 GHz, force assoc link 2 GHz:
mlo_support_link_num=2, mlo_support_link_band=0x13
Force 2 links on 2+5 GHz, force assoc link 5 GHz:
mlo_support_link_num=2, mlo_support_link_band=0x23
Force 2 links on 5+6 GHz, force assoc link 6 GHz:
mlo_support_link_num=2, mlo_support_link_band=0x46
Change-Id: Id6f56421528a42aa7059693845fe71a206bded93
CRs-Fixed: 3722009
Some solutions may not have HS-2.0 certification and there is
no need to forward the BTM frame to wpa_supplicant in such
solutions. Let firmware handle the frame in such cases by
enabling btm_offload so that it doesn't wakeup the host.
Firmware may roam to another AP upon BTM reception.
To enable/disable BTM offload add hs20_btm_offload_disable INI.
If this INI is enable BTM offload will be disable and if INI
is disable BTM offload will be enabled.
Change-Id: Id6e18404cc3a12a23b213c0f858c943715285932
CRs-Fixed: 3718776
Currently whenever the userspace is trying to reset the previously
configured max mlo links for association, set wifi config command
with "SET_NUM_ALLOWED_MLO_LINK 0" is issued, this always
resets the max mlo value to the ini default value which is 2
rather than defaulting to the firmware/ini intersected value.
Fix is to default to the firmware/ini intersected value rather than
the default value.
CRs-Fixed: 3707990
Change-Id: Iaa7cbe32613102ccffbcf92fcb7ef0a39f96a705
Introduce INI to allow OEM vendor to configure driver
to connect to various EHT/MLO configuration APs which
are not allowed by default.
The vendor has to specify which APs to be allowed to
connect in EHT/MLO as a bitmap.
The list of configuration allowed are:
1) Connect to WPA2-PSK APs without PMF in EHT only
2) Connect to WPA2-PSK APs without PMF in MLO
3) Connect to WPA2-PSK APs with PMF in EHT only
4) Connect to WPA2-PSK APs with PMF in MLO
5) Connect to WPA2-SAE APs without H2E in EHT only
6) Connect to WPA2-SAE APs without H2E in MLO
Vendors may chose to connect in 802.11be without MLO
and to facilitate such configuration, the following
API is enhanced to take additional argument on whether
the given candidate can allow MLO or only EHT.
API: wlan_cm_is_eht_allowed_for_current_security()
Change-Id: I3ea1cc0b2c7ba96d1b25aba7bc851773edf27bd8
CRs-Fixed: 3693810
Suppose INI gDot11Mode is configured as 1 dot11mode_11a, but
the enum MLME_DOT11_MODE_ABG is defined at the last, which is
causing STA to connect in dot11mode_11ac.
So, lower dot11modes should be defined first. Change the order
of dot11mode_11abg to the initial enum value.
Change MLME dot11mode mapping to CSR dot11mode, passing to
csr_convert_mode_to_nw_type function.
Change-Id: I71972bed1b6ac25f809c980e9fff4829fae7e4ff
CRs-Fixed: 3686458
Add ini to disable mcs 12 13 for SAP operating in
2.4 GHz with 40 MHz bandwidth.
Change-Id: I78ed90bf6bab80a8f81f7a0640b9aca9d2736f4d
CRs-Fixed: 3672437
Send periodic fw stats to get chan noise floor when monitor mode
start, but not stop it when monitor mode stop,
pdev stats event is received even when event handler unregistered,
race condition lead to assert.
To fix it, when monitor mode stop, stop periodical pdev stats report
first.
Change-Id: I58a0ced84aca74a7228064067bb096803cf952fd
CRs-Fixed: 3667212
Currently, mlo_link_agnostic is set to true without validating
destination address which means FW is free to choose
transmission link L0 or L1 due to which GAS frame TX is failing.
Fix is to set mlo_link_agnostic to false when dest address is not
AP address, so that FW can choose freq as per channel which is
sent as part of mgmt frame.
Change-Id: Icacc4ce06b0eda341342ac1cdcf347de74e59e39
CRs-Fixed: 3666152
(cherry picked from commit d3cbd7154a31479cb79230643a0a8818b41d2a67)
Add support for QCA_NL80211_VENDOR_SUBCMD_REGULATORY_TPC_INFO vendor
command to return the STA TPC information used within the BSS.
If STA is ML STA, multiple link TPC information will be returned to
userspace.
Change-Id: I6fd30893c057c876e9a01e112595e5cb0c906a70
CRs-Fixed: 3665538
As part of set feature set command, update STA_P2P,
STA_SAP, STA_NAN, STA_TDLS, STA_SAP_P2P, STA_SAP_NAN,
STA_P2P_NAN, STA_P2P_TDLS, STA_SAP_TDLS, STA_NAN_TDLS,
STA_SAP_P2P_TDLS, STA_SAP_NAN_TDLS, STA_P2P_P2P_TDLS,
STA_P2P_NAN_TDLS iface combinations to fw.
Also use WLAN_FEATURE_NO_P2P_CONCURRENCY sta dual p2p
support combination.
Change-Id: I315c219f79995dedb0c2856d326838351d8a3d5e
CRs-Fixed: 3674696
Driver cache all links channel bandwidth config from user space,
when link switch happened, and connect complete, send bandwidth
of the link id to fw.
CRs-Fixed: 3625801
Change-Id: I7d4a13075b62c9c8928d2c33bd309e9c5b085171
Currently, chan_switch_in_progress flag is maintained per vdev.
This info is needed at MLD level also to differentiate between
current MLD STA and concurrent STA. This can be used to decide
whether to allow link switch or not.
Also, don't process session beacon if link switch is in
progress to avoid CSA upon detecting any change in the Operation
IEs(HT_INFO/VHT_OP/HE_OP/EHT_OP, etc..).
Change-Id: I9cca40f4953a390c71758896097c6a119951abe7
CRs-Fixed: 3660868
Currently, the expected range of sae_auth_failure_timeout
is 500-1000ms. DUT sta retries SAE authentication frame if it
hasn't received response within the configured time. But there
can be APs where there might be a timeout at AP and AP proceeds
with next frame(SAE confirm response) if the previous frame
is not acked by STA or SAE confirm request is not received
within this time.
Custom platforms may want to address this by retrying more
aggressively, e.g. retry within 100ms.
Add provision for the same by making min value as 100 ms.
Change-Id: I09fa57808edc6c00bda2dbe5d988558c7ef48e17
CRs-Fixed: 3662150
Add support for INI update_cw_allowed to enable or
disable update channel width via vendor command
QCA_WLAN_VENDOR_ATTR_CONFIG_CHANNEL_WIDTH
Change-Id: I1f4ab2c7ca8dacb93442803336d59a4a5ffb1b47
CRs-Fixed: 3659655
Return status of the wlan_mlme_get_sta_ch_width is always
returning error resulting in caller not updating with
the phymode correct the vdev object.
When the kernel is querying phymode via cfg80211_get_channel driver is
returning invalid bandwidth post roam resulting in kernel warning.
Fix this by returning proper status in wlan_mlme_get_sta_ch_width
CRs-Fixed: 3641158
Change-Id: I013f75a3e06768127ffc72776eef6885633e927a
Currently the ini "enable_responder_11az_support" is a boolean
value and applicable for enabling all the RSTA operations- 11az
TB and NTB ranging. Change the usage of existing ini
"enable_responder_11az_support" into a bitmap as below:
BIT 0 - 11az NTB
BIT 1 - 11az TB
Change-Id: I744e614eae4d89d9ff5d0e86398c0c94c8160d77
CRs-Fixed: 3651115
If "override_ht20_40_24g" ini is set, the host driver disables
the HT40/HE40 caps for 2.4 GHz after connection via SET IE. The
firmware uses this for roam. However, if reassoc comes from userspace
with the HT40 cap different from the initial connect, then host
does not update the IEs based on new cap. This leads to mismatch
between user configuration and firmware roam.
To fix this, modify and send the HE40/HT40 caps via SET IE for
every connect request. Reset it after disconnection to the default
self cap.
Change-Id: I58e14e8ae8e8842e1d79a0284c4240ac7d279272
CRs-Fixed: 3651600
Add new dot11mode in MLME and update the utility functions to
derive the dot11mode based on the INI config and AP dot11 mode.
Change-Id: Ic53ab0cdd94dce75d6928270bc8bf4f8539ac96f
CRs-Fixed: 3653767
To trigger wide band scan in case of 320 MHz initial connection,
Host should use value of cen320_freq at the time of initial
connection.
Fix is to use value of cen320_freq present in struct
mlme_priv->connect_info.assoc_chan_info.cen320_freq.
Change-Id: Ia6b823e88d50a33259621a0cd564ae9fa06ced13
CRs-Fixed: 3651649
Use default link info is incorrect for mlo link.
Fetch link info by link id and update the bss rate flag.
Change-Id: I72a6747308b9873e18ea2bcb1b95cb915e668970
CRs-Fixed: 3643925
Add cfg to disable puncture in US LPI mode per FCC requirement,
set to false by default.
Change-Id: Id01f952b2a74ad64216a66d2d292166211440c4b
CRs-Fixed: 3649640
User space need roam AP BSSID info to analyse roam issue.
Driver cache AP BSSID during roam and update to user space when
get roam stats info by QCA_WLAN_VENDOR_ATTR_ROAM_STATS_INFO.
Change the roam frame number from 6 to 54, means update all
roam failed and successful frame to user space.
Change-Id: I22b3d917e7e0b4f322142ab359fa135cd588d8f7
CRs-Fixed: 3611826
When update channel width of current vdev, need update puncture bitmap
to avoid mismatch.
Change-Id: I0487b251524421611cee2ec33f036a037efa42ea
CRs-Fixed: 3646904
SAP restart happens when a concurrent STA comes up in the
same band. Currently, the new bw is calculated based on channel
supported max bw. If SAP moves from one 6 GHz channel to another
6 GHz channel, the new bw would be calculated as 320 MHz even if
the current SAP operating bw is 160 MHz. But SAP bw should be
limited to current operating bw as it might have got downgraded
to 160 MHz as part of sap_bw_update algo.
Considered current operating bw when SAP restart happens as part
of sap_bw_update.
Change-Id: If310b0ad9f914b438ae3c1968ca8f1ee26d57589
CRs-Fixed: 3637263
Disable puncture in US LPI mode per FCC request.
If bad FCC AP is detected, send WMI_VDEV_PARAM_CHWIDTH_WITH_NOTIFY with
reduced bw after setkey is done.
Also add the same bad FCC AP detection logic in HDD where bw increase req
from SS framework is handled.
When handle beacon update, also FCC AP detection logic to avoid wrong
channel switch.
If the AP removes or reduces puncturing pattern in new beacon, send
WMI_VDEV_PARAM_CHWIDTH_WITH_NOTIFY with increased bw.
For roaming case, after roaming, host will receive new beacon with new
bpcc, same as beacon update, use the same bad FCC AP detection logic and
send WMI_VDEV_PARAM_CHWIDTH_WITH_NOTIFY with updted bw right away or after
setkey is done (in case of hybrid roaming like OWE).
Change-Id: I6e85de879575d5c0a1960527f9018b4b33bf18d6
CRs-Fixed: 3631634
AP can send channel width and related information via below OPIE:
1. Wide Bandwidth Channel Switch (Subelement ID 163)
2. Bandwidth Indication (Subelement ID 164)
Trigger wide band scan as per values present for above IEs present
in channel load request.
Change-Id: I013389972f0f72395488a2405e4b0dcbff39dd42
CRs-Fixed: 3629109
Currently the roam scan high RSSI delta is configured via INI.
Define an attribute to allow user configure high RSSI roam
trigger threshold. STA is expected to trigger roam if the current
connected AP's RSSI gets above this high RSSI threshold. STA's
roam attempt on high RSSI threshold aims to find candidates from
other better Wi-Fi bands.
This attribute value is given priority over the INI.
Use a new service bit WMI_SERVICE_5GHZ_HI_RSSI_ROAM_SUPPORT to
enable high RSSI roam trigger in 5 GHz as well.
Change-Id: Ide48ad2261b603de36bd1b31114b91c3a9d6606f
CRs-Fixed: 3586170
Add callback mlme_vdev_reconfig_notify_standby to cld code to
handle standby link removal.
For standby link, it is going to be removed by AP, so don't
start link removal timer for it. Force inactive it to avoid
link switch to it.
Change-Id: Ib28e6b043f582e0fff2f4702e32ff222fc3428d3
CRs-Fixed: 3629633
MLD is applicable for infrasture modes(STA/SAP) and is mandatory to
operate in 11BE for these modes. NAN/NDI(NDP) may want to use EHT
rates and it's not mandatory to support MLO.
Currently, host driver sets vdev dot11mode as 11AX when MLD address
is zero. But this is applicable for STA/SAP only. So, exempt NAN/NDI
modes from this dot11mode downgrade operation to allow these to use
EHT rates.
Change-Id: Ie43811eb7bd12dbf286617cebe194ced8c28c3f0
CRs-Fixed: 3635961
Userspace can dynamically modify association BW and as part of
disconnect need to reset the BW to original value, if not the
next connection will might happen with downgraded BW.
Currently the restore is happening on deflink VDEV instead of
actual disconnecting VDEV.
Fix this by changing function argument to accept link info
pointer in HDD adapter of that corresponding VDEV.
Additionally, the driver capability for 6 GHz-320 MHz is not
properly restored and further connections to 320 MHz are
happening on 160 MHz.
To fix the 160 MHz downgrade, use original EHT capabilities in
global MAC context instead of using modified EHT cap where
320 MHz support got reset on userspace dynamic BW update.
Change-Id: If2badb0a234f45d57dc186729bc529137d7a5131
CRs-Fixed: 3628940