In roam sync handling, pmksa memory is freed right after
set pmka entry is updated in crypto priv params instead
allocate separate buffer for crypto.
Change-Id: I337efcb29d2233b016f93cae7f4f23d3203786a6
CRs-Fixed: 2931162
When the AP channel is changed, fw reports a suitable AP.
But it's skipped by host as it has same bssid as the one
currently associated. The same process repeats continually,
which result in fail to reconnect with the AP. To avoid this,
send BMISS indication to upper layer and restart roam.
Change-Id: Idfcb69f81ce72a4ab7ef0c105f3af40cb92c53d5
CRs-Fixed: 2913663
Consider two APs: AP1, AP2
Both APs configured with EAP 802.1x security mode
and OKC is enabled in both APs by default. Initially
DUT successfully associated with AP1, and generated
PMK1 by performing full EAP and added an entry for AP1
in pmk table. At this stage, pmk table has only one
entry for PMK1 (1. AP1-->PMK1).
Now DUT roams to AP2 using PMK1 (as OKC is enabled)
but session timeout happens on AP2 just before 4 way
handshake completion in FW. At this point of time DUT not
in authenticated state. Due to this DUT performs full EAP
with AP2 and generates PMK2. As there is no previous
entry of AP2 (AP2-->PMK1) in pmk table. When host gets
pmk delete command for BSSID of AP2, the BSSID match
fails. Hence host will not delete pmk entry of AP1 as well.
At this point of time, the PMK table has two entry
1. AP1-->PMK1 and 2. AP2 --> PMK2.
Ideally, if OKC is enabled then whenever timeout occurs in
a mobility domain, then the driver should clear all APs
cache entries related to that domain but as the BSSID
doesn't exist yet in the driver cache there is no way of
clearing the cache entries, without disturbing the legacy
roaming. Now security profile for both APs changed to FT-RSN.
DUT first disassociate with AP2 and successfully associated
with AP2 and perform full EAP and generates PMK3. DUT first
deletes PMK entry for AP2 and then adds a new entry for AP2.
At this point of time pmk table has two entry AP2--> PMK3
and AP1-->PMK1. Now DUT roamed to AP1 using
PMK3 but sends stale entry of AP1 (PMK1) to fw via RSO
command. This override PMK for both APs with PMK1
(as FW uses mlme session PMK for both APs in case of FT
roaming) and next time when FW try to roam to AP2 using
PMK1, AP2 rejects PMK1 (As AP2 is expecting PMK3) and
initiates full EAP with AP2, which is wrong.
Fix is to update pmk table entry for roamed AP1 with PMK3 value
comes to host via roam sync indication event.. By this host
override stale entry (if any) with the latest valid pmk for
that AP at a point of time.
Also add new api to get the sae single pmk ini value and
update the bss desc of single_pmk cap after intersecting the ini
value.
Change-Id: I12fecbae69d0d2a11f2a39eee6be960752d831bd
CRs-Fixed: 2889847
Address below corner scenarios for dual sta roaming:
1. Initialize primary interface vdev id
with WLAN_UMAC_VDEV_ID_MAX.
2. Enable roaming while processing set primary interface
vendor command irrespective of dual sta roam policy.
3. Disable mcc_adaptive_scheduler before sending
WMI_RESMGR_ADAPTIVE_OCS_ENABLE_DISABLE_CMDID to FW and
enable it if host receives dual sta policy as unbiased.
Change-Id: I8e5254c6f9053bd5fe7f925af4b577e76c9b9a2e
CRs-Fixed: 2928870
Presently the roaming design is to support roaming on
both the STA in DBS mode (with different bands).
With commit I60f6bdb7df4d9eece4fd14abe1fab2d5644d47f1,
Driver allow STA2 connection to any available AP(s).
So in case if STA2 connectes in MCC mode then host
should not allow roaming on non primary STA iface.
Change-Id: I84c77644c6023322ac77e307b06be70ec0f58ed5
CRs-Fixed: 2928804
If there is more than one STA iface concurrently active
and one of them is marked as a primary iface. The host
received CONCURRENT_DUAL_STA_POLICY vendor command with
policy PREFER_PRIMARY. Then Don’t consider PCL weightage
for an STA connection. Due to this host/fw allows a new
connection either in DBS, SCC or in MCC.
Change-Id: I400165f8dd3ab7b94b2cb808f8b34b34d6d42fee
CRs-Fixed: 2929015
Reset scan reject params on roam abort and also if connect
lead to roam invoke release the wake lock as we do in legacy
case, if required roam invoke can use new wake lock.
Change-Id: Ieb870e2598687a1418e896d761f19a198a03a98f
CRs-Fixed: 2929311
Currently below implementation is missing in the driver. So driver
is failing to associate in 11be. Add this implementation to support
11be association in the driver
- Filling EHT IEs in probe response
- Sending EHT mcs capabilities while creating the peer
- Fix compilation issues when 11BE feature is enabled
- Add the the 320MHZ to wma_chan_phy_mode
Change-Id: Ib535db413d5578840feed7fd18bb00e5e28cfb6f
CRs-Fixed: 2926471
Currently, the driver restricts the connection of the 2nd
STA to channels on the other band of the 1st STA connected
band. As per the new requirement, the host should allow STA2
connection to any available AP(s), if primary iface is
configured.
Change-Id: I60f6bdb7df4d9eece4fd14abe1fab2d5644d47f1
CRs-Fixed: 2915733
Add logic similar to I5d8ec9e9d4f8a44178b113d370799fe2bc0373fb
in connection manager to flush PMID on HB failure.
Change-Id: Id87b5774a18a377719c56d3f34dc31284f0a39a3
CRs-Fixed: 2928282
As part of I418be56d452389a9f7b8d48e28f793567e81767a due to copy
paste error in cm_roam_scan_offload_fill_lfr3_config the pmk was
copied to rso_11i_info instead of rso_11r_info.
Fix this by copying pmk to rso_11r_info.
Change-Id: If4d1ea23ab4b4c43db3fac78fbfd43ad74a7e1b4
CRs-Fixed: 2920206
The userspace doesn't expect TWT teardown or notify events after
roaming. So to clear the driver internal TWT context, for old
peer, call the mlme_init_twt_context() on roam synch complete.
Change-Id: If1e4fe2d79561885052caf8d5231d1c943f10c96
CRs-Fixed: 2912872
Change I588a56f4c96d137d3283b2dc57274de069ecb4ab changed
wlan_cm_abort_rso() return status from BUSY to FAILURE when roaming
in progress, it caused disconnect command not wait for roaming
complete/abort, and lead to abnormal data access.
Change-Id: I16004b006283c05ed94fb3ca4bc0e9376485aca7
CRs-Fixed: 2910443
Fix to pass assoc_info instead of address of assoc_info
to sme_qos_csr_event_ind() and cm_remove_cmd()
Change-Id: I9f6c12870954c42f2b1e6250e7547c45a593cae8
CRs-Fixed: 2911027
Add change to support roam ho fail and roam invoke fail
indication in connection manager.
Change-Id: I8e4fed2ca4b9c6e95da86b0c37e39da8f2bc4953
CRs-Fixed: 2906319
When host driver receives RSO_STOP from userspace, HDD sends the
RSO_STOP down to lower layers and starts a wait for response upon
success status.
Below layers(connection mgr/CSR) ignore the RSO_STOP request and
return success if the current state is not RSO_ENABLED or
IN_PROGRESS. This keeps the HDD waiting for response and a timeout
happens after 2 seconds.
So, wait for RSO stop response only if roaming is in enabled state
to avoid this wait and timeout.
Change-Id: I3ed81c5da26ebe05d17fc37dc43665f1f7b7c8b2
CRs-Fixed: 2901494
Some legacy Helium firmware doesn't support SAE roaming, but btm cap is set
in associate request of DUT, then connected SAE AP thinks DUT supports btm,
AP will send btm request to DUT, DUT triggers roaming, but fails and
disconnects from current AP, users will complain this unexpected
disconnect.
Change-Id: Ife9860addef6898a518618f555158e7888ac74db
CRs-Fixed: 2884694
When "wmi_service_configure_roam_trigger_param_support" service
bit is set populate roam score delta and min rssi parameters
and send via WMI_ROAM_ENABLE_DISABLE_TRIGGER_REASON_CMDID.
Change-Id: I3c7fc56a95c28c43992763be3351d91d9fd44041
CRs-Fixed: 2890148
Move prev ap info and connected bss in connection manager
macro in csr session.
Change-Id: Ie2b8ecdbcf7134f93f908ba596c0398712da7ac8
CRs-Fixed: 2895259
Fill operational and extended rates in LIM
instead of CSR as part of connection manager.
Change-Id: I9197e835703059d61bc67897a9670ff166460318
CRs-Fixed: 2892415
Currently driver fills unicast, multicast & auth mode values from
csr session which is not updated after roaming to AP with different
security profile. This causes incorrect values in AP profile command.
Send correct authmode/unicast and multicast ciphers in AP profile
command to firmware.
Also modify the below 2 ini default values as:
candidate_min_rssi_for_beacon_miss=-75
candidate_min_rssi_for_disconnect=-75
Change-Id: I33cc9f516447071e977768f01738eea7a2ecd99c
CRs-Fixed: 2879943
Cache roam_fail_reason, roam_invoke_fail_reason and
roam_trigger_reason in mlme value for the vdev.
Host sends these values to userspace via a vendor
command after disconnection.
Change-Id: Ief7d027f69b0449254de3615b39829f346589095
CRs-Fixed: 2877230
Currently when SAE single pmk lifetime expires, the userspace
issues disconnect. To avoid this, on reaching a threshold value
of the total pmk lifetime, the firmware will clear the single
PMK and initiate a roam scan to perform full SAE and derive
new pmk.
Add changes to:
1. Send the remaining single pmk timeout value in seconds to
firmware.
this is calculated as the diffence in pmk timeout configured by
userspace and the time passed after set_pmksa was done (which is
system timestamp between the set_pmksa timestamp and timestamp at
which RSO command is filled).
2. Add internal roam trigger for SPMK timeout trigger.
3. Set the roam score delta value as 0 for SPMK timeout roam
trigger.
Change-Id: I62c2ddbbfeb2811a4342d41f2bdaa8d988568bcc
CRs-Fixed: 2869665
Add RSO lock and use it to send RSO commands. Also
avoid calling the cm_disconnect API while holding
SME global lock to avoid race.
Change-Id: I588a56f4c96d137d3283b2dc57274de069ecb4ab
CRs-Fixed: 2870603
Use is wps/osen from the connect req/rsp, instead of parsing
the assoc ie and deciding the value.
Change-Id: I628c8aab22d1e842219b8d38fd025299d91cc68f
CRs-Fixed: 2868657