Clean up code for sme_get_empty_scan_refresh_period_global() and
sme_get_neighbor_scan_refresh_period() apis
and replace it with ucfg api.
Change-Id: Iaa511024467f45dc408da3db202b25f9b5276453
CRs-Fixed: 3335898
Clean up code for sme_get_roam_opportunistic_scan_threshold_diff() and
sme_get_roam_scan_home_away_time() apis and replace it with ucfg api.
Change-Id: I7de3bf3faff990cbf667cb8106044a33f16f3a46
CRs-Fixed: 3335898
Clean up code for sme_get_wes_mode(), sme_get_is_lfr_feature_enabled()
and sme_get_is_ft_feature_enabled() apis and
replace it with ucfg api.
Change-Id: I7715ba361264fcb2c0c93d8d073813538347dd31
CRs-Fixed: 3335898
Clean up code for sme_get_neighbor_scan_max_chan_time() and
sme_get_neighbor_scan_max_chan_time() apis and replace it with ucfg api.
Change-Id: I8a9de18f22e352ed8c64f415fd0455f64227a857
CRs-Fixed: 3335898
Clean up code for sme_get_roam_rssi_diff() and
sme_get_is_ese_feature_enabled() apis and replace it with ucfg api.
Change-Id: I226efbcf8ecd44b08684a3e17e2db987c169946d
CRs-Fixed: 3335898
Clean up code for sme_get_empty_scan_refresh_period() and
sme_get_neighbor_scan_min_chan_time() apis and
replace it with ucfg api.
Change-Id: I372fcbcf4f96af2c642a5fe93c0f8e2ce98174ea
CRs-Fixed: 3335898
Clean up the code for sme_get_neighbor_lookup_rssi_threshold() and
sme_get_roam_rescan_rssi_diff() apis and
replace it with ucfg api.
Change-Id: Idc7503eaa316d68dc05aba8345970ace7bc8ad45
CRs-Fixed: 3335898
Clean up code for sme_get_valid_channels() and
sme_get_roam_intra_band() apis and
replace it with ucfg api.
Change-Id: Ic2f07e2193186d1e1ac81f6e5909417c10ab9c89
CRs-Fixed: 3335898
To avoid assignment before null check for vdev.
First check null vdev and then assign operational
mode value.
Change-Id: Ifbff1f79f04d51dddf6a6c1aec27793389516045
CRs-Fixed: 3340858
When dual sta connected as SBS mode instead of dbs mode, driver didn't set
pcl per vdev, so dual sta had same PCL in firmware, MCC may happened after
roaming.
Fix:
1. Host pass roaming MCC disallow flag to F/W by checking primary vdev id.
2. For platform SBS supported, when doing dbs or sbs, send PCL from table
to F/W directly, allow SCC and SBS<->DBS roaming, don't limit to intra
band, only avoid mcc case if no primary vdev.
3. Use policy_mgr_concurrent_sta_on_different_mac to replace
policy_mgr_concurrent_sta_doing_dbs, add logic to consider SBS when set
PCL to F/W.
4. Change dual sta PCL table to remove mcc channels.
5. When STA channel switch, also update PCL to F/W.
6. For roaming case, do vdev level PCL update for all sta after connection
update in policy mgr, or wrong PCL is got.
Change-Id: I631c84c96da2bba4011b69e4c076db174205c874
CRs-Fixed: 3336768
User can configure roam hand-off delay value using the new vendor
attribute introduced as part roam vendor command.
This change gets the configured value and sends it to firmware.
And firmware delays the roam Hand-off (in msec) by the specified
duration to receive pending RX frames from the current BSS.
Change-Id: Ic328c077cba06532ee8ffed12cde072c816b92e0
CRs-Fixed: 3329964
When firmware attempts roaming to an MLO AP, it tries to find
the complete ML info(all links info) either through ML probe
response or beacons from all the links. It forwards all link
beacons(or ML probe response) to host as part of roam sync
indication through roam sync frame event.
Add support to fetch both link beacons and add them to scan db.
If firmware sends ML probe response, generate link probe response
as well and add it to the scan db.
The link scan result can be used in link connect in case of
hybrid roaming like OWE, 1x,..
Change-Id: Ic8457a5630441d6fd3faeb4791c79422db787f94
CRs-Fixed: 3335225
In the api cm_roam_mgmt_frame_event(), the rssi is logged
as a positive value.
Modify cm_roam_mgmt_frame_event() to log rssi value as
a negative value.
Change-Id: I1af7827beda23381e89880cf7ef73c24a7e38a15
CRs-Fixed: 3327027
Firmware may send two consecutive roam sync frame indications when
it supports MLO roaming. The first event carries link beacon and
second event carries assoc beacon. This is to let host driver have
both the link scan results if host has to take care of link
connect(e.g. OWE MLO roaming, EAP MLO roaming,.. ).
If host driver doesn't have support/doesn't need link beacon,
it would be overwritten by assoc beacon(e.g. wpa2 MLO roaming,
SAE MLO roaming, ..).
This results in a memleak as the previous cached beacon is
not freed(vdev->rso_cfg->roam_sync_frame_ind->bcn_probe_rsp).
Free the existing beacon if new one is received. Also, remove the
current free's from extract_roam_sync_frame_event_tlv() which
doesn't need any such freeing as the copy always happens to a
freshly allocated buffer.
Change-Id: If3b4d6e4b8e1e2af5306171ad7eda28e744da64e
CRs-Fixed: 3322094
If link beacon is not scanned, host driver will send ML probe request
and generate link scan entry from ML probe response. The ML probe
response does not include RNR IE. This is causing failure in the link
vdev connect path as the partner information is updated from rnr ie.
To fix this, for link vdev connection get partner link information from
connect request.
Change-Id: Id22f57cefbf28cb20fa7e17b4b71b362b1ba0ae5
CRs-Fixed: 3312421
In case of MLO to SLO roaming, the connected links
bitmap is not reset for link vdev correctly.
To solve this post roaming, clear and then set the connected links bitmap.
Change-Id: I9e63593fe3452d0c2075360432dfaddc81999ae0
CRs-Fixed: 3317229
Currently, this MLO flag is being set/clear without regard for
concurrency. We need to lock the vdev when updating these values to
prevent race condition.
Change-Id: I7b1e6424d6fcedc6934a9f6aa1d01068a2b43277
CRs-Fixed: 3305564
SPMK global cache in the vdev private is persistent
across connections. Therefore, in cross-ssid roaming
cases with different AKMs, SPMK in the global cache
will always be sent to the firmware in RSO start, even
for non-SAE connections. This causes roam failure.
Reset the spmk global cache for every new connection.
Change-Id: I03deefe16242ef79d0985a8c05881914e6f7af01
CRs-Fixed: 3310182
Add changes to enhance the debugs in the RSO path,
to identify the current pmk stored in the rso config.
Also, restrict the PMK dumps to a minimum size of 2.
Change-Id: I6e89afed45f5d43b45508ae43b59400a6e24e5ef
CRs-Fixed: 3312677
Handle twt renegotiation failure scenario when there is
error reported by firmware as part of
wmi_twt_ack_complete_event_id event.
Change-Id: I91e4bfd8f08ae81b474354c90ab8c770dcdfe19b
CRs-Fixed: 3297783
To protect user privacy, print SSID with QDF_SSID_FMT
and QDF_SSID_REF, then SSID will be hide in logs if
anonymization is enabled.
Change-Id: I3dd129b52c85c84e666f4f07b28a1e58f81259b7
CRs-Fixed: 3291841
For STA mlo connection the AP might send M1 right after assoc
response on assoc link which can result in keys sent down to FW
for mlo links before host has sent wmi_peer_assoc for link vdev.
Current code does not have handling for this case.
To solve this, store the keys and once connection is completed
on link vdev send keys.
Change-Id: I3675451ef0e047caf8c77d256ea67f0eac6ed797
CRs-Fixed: 3289589
Build failed once WLAN_TRACE_HIDE_MAC_ADDR is enabled,
due to 'error: type mismatch in conditional expression'.
To fix it, correct the parameter for QDF_MAC_ADDR_REF.
Change-Id: Ifd89b02ab5fb2e3b59291c303ad93b691616dc57
CRs-Fixed: 3308193
Currently for mlo roaming if roam sync event is not
handled roaming is aborted only on that vdev,
other vdevs are not cleaned up.
Another issue is link vdev is added to connection manager
list but not removed.
To fix this code change made to abort roaming on all links.
Also remove request from connection manager list.
Change-Id: Ib6e9db21b64e5c44ab7d51ebf795b169c5e7eb29
CRs-Fixed: 3305685
Host driver sends ROAM enable to firmware by setting the
vdev param WMI_VDEV_PARAM_ROAM_FW_OFFLOAD and the internal
state is moved from WLAN_ROAM_DEINIT to WLAN_ROAM_INIT.
Then host driver can send ROAM SCAN OFFLOAD enable and firmware
honors it. Firmware drops the RSO enable command if ROAM enable
vdev param is not sent. Host tracks RSO enable through the states
WLAN_ROAM_RSO_ENABLED/WLAN_ROAMING_IN_PROG/
WLAN_ROAM_SYNCH_IN_PROG/WLAN_MLO_ROAM_SYNCH_IN_PROG.
Have different APIs to track ROAM enable and RSO enable which can
help to cleanup the corresponding params/states.
It's observed that ROAM enable/disable vdev param is not sent
to firmware properly when RSO is stopped in some other path
than disconnect (e.g. SAP concurrency, fast_roaming_disable
through wpa_supplicant). Check if the roam state is INIT and
send ROAM DISABLE to firmware while disconnect.
Change-Id: I1074c8f93e21f02086dfbcfae61fa6deb91c7d9d
CRs-Fixed: 3305563
Add the logs for the mld address of the self and peer mld as
part of the current connection info.
Change-Id: Ie73a9b94cb13cf0f4c70eb4ad212e2fc3bd7ff22
CRs-Fixed: 3300168
Replace all occurrences of
wlan_reg_get_channel_state_for_freq with
wlan_reg_get_channel_state_for_pwrmode and use extra
parameter as REG_CURRENT_PWR_MODE.
Change-Id: I7f7e4e700091918eeebc87ccbbc85ececdd9bf52
CRs-Fixed: 3145011
Roam trigger bitmap is configured to enable few specific
triggers when SETNCHOMODE command is issued. But if disconnect
happens without NCHO disable, then the roam_trigger_bitmap
per vdev doesn't reflect the ini configuration. This causes
some roam triggers not getting triggered.
Reset per vdev roam trigger configuration.
Change-Id: I3dc008a58a2a20c4f0820fe43aa4b6406ba8dd2a
CRs-Fixed: 3300488
As part of upgrading legacy code
with 6 GHz power APIs, replace
all ocurrances of
wlan_reg_is_disable_for_freq with
wlan_reg_is_disable_for_pwrmode.
Change-Id: Id18e48e27eb118945d56205797882874eb552153
CRs-Fixed: 3145764
Update channel frequency to partner infor from scan entry.
And correct debug print to show correct channel frequency value.
Change-Id: I3fc3a04b3ef0a4e627e724ad88c5038d35cd8e4a
CRs-Fixed: 3303855
Disable "twt_responder" ini by default. TWT responder
configuration comes from hostapd.
Change-Id: Id094a72f70e71bac23295221dc6d12c2e7685803
CRs-Fixed: 3298565
Current issue:
When roam from legacy to MLO, set vdev MLO flags but not increase the
mlo_vdev count, when disconnect, decrease mlo_vdev count, assert will
happen.
Solution:
Use API wlan_vdev_mlme_set_mlo_vdev and wlan_vdev_mlme_clear_mlo_vdev to
set MLO vdev flag.
Change-Id: Ib6fc2e479f222dca2f1c30df6d5fcf27fd07ae29
CRs-Fixed: 3299156
When roam from MLO to SLO, don't clear assoc link MLO flag.
Remove 1 useless vdev parameter of mlo_cleanup_link.
Change-Id: I3e3dff0ad3f3fef8f955eaae8af1a3c564248432
CRs-Fixed: 3298471
During Deauth/Disassoc event logging, reason code is being
logged as '0' irrespective of the real reason code.
Modified the api wlan_connectivity_mgmt_event() and
api cm_roam_mgmt_frame_event() to og correct value of
the reason code.
Change-Id: I6d5ba65a9ae312dc82e70202fe598da27a033ff3
CRs-Fixed: 3297871
TWT responder should be enabled based on the hostapd
configuration and self capability.
But when SAP is started, the TWT concurrency work is
scheduled and its enabling the TWT responder without
checking the hostapd configuration. This causes TWT
responder to be enabled even though the hostapd configuration
disables the responder.
Check the TWT responder configuration from TWT component before
sending enable command for TWT responder
Change-Id: Ia6755299421f00b2a1a69fc2e19fac3d39ab95f6
CRs-Fixed: 3291939
When roam from MLO to SLO, partner link vdev1 keeps UP wrongly.
To fixe it, clean up partner link vdev1, but keep assoc link vdev0
MLO flag.
Change-Id: I13d256e9f05755f01cea668456f00bf33c8862b4
CRs-Fixed: 3290015
When roam from SAE legacy to SAE MLO, pre-auth TA is MLD address,
while peer AP expects link address, pre-auth fails.
Parse transmit address field from firmware roam_preauth_start_event and
include it when send NL80211_EXTERNAL_AUTH_START to wpa supplicant for
SAE roaming cases.
If transmit address is all zeros, wpa_supplicant will not do ML sae
auth, use MLD address as TA.
If transmit address is not zeros, wpa_supplicant will do ML sae auth,
use 'transmit address' as TA.
Since self peer is created with mld address, when roam from legacy to
MLO, try to get peer by mld address during pre-auth tx since bss peer
absent, or TX fails for no peer.
Change-Id: I99ed846e94165bfe01e1d1e8c620f035751c7056
CRs-Fixed: 3289987
Rename wlan_cm_ese_populate_addtional_ies() to fix misspelling in the
name: addtional ==> additional
Change-Id: I3a5528d09804628cc665ee882ced3af2581b0f34
CRs-Fixed: 3281750
Send MLO Roam config to target, including:
support_link_num: Configure max number of link mlo connection supports.
support_link_band: Configure the band bitmap of mlo connection supports
Bit 0: 2.4 GHz band support if 1
Bit 1: 5 GHz band support if 1
Bit 2: 6 GHz band support if 1
Change-Id: Id59fc93cc271266ff794702d997ffc5113de5bc1
CRs-Fixed: 3273012
After roam sync is recevied the phymode will be updated for bss peer.
For MLO roaming use link address and channel to find the bss peer and
update the phymode.
Change-Id: Ic181fdb73ceeb8dfb980a4121a7569b12d3361dd
CRs-Fixed: 3280059
Host driver sends RSO stop request to firmware as part of
disconnect and waits for RSO stop response. It pauses the
disconnection and resumes once RSO stop response is received
from the firmware.
But cm_lock is not taken when disconnection is resumed from RSO
stop response path. This causes synchronization issues with
north bound thread which issued the disconnection.
Acquire cm_lock by using cm_sm_deliver_event() API to avoid
this issue.
Disconnect initiator thread and scheduler thread are
synchronized with this change. So, no need to set the RSO
state to STOPPED before sending RSO stop command to
firmware. So the change: I4d43508bdee2b33caba28579939fffdebfab121d
can be reverted.
Change-Id: Id29cd992ecd1bd75cb1b32eebb9e46ca5dcc728d
CRs-Fixed: 3285154
When disconnect from wpa_supplicant and cm event from F/W happen at same
time, supplicant holds cm cm_req_lock and wait rsp of p2p cleanup roc from
scheduler thread until 2 sec timeout, sheduler thread is blocked to wait
for cm_req_lock.
When wmi peer delete of vdev0 is not sent within 1.2 sec after host send
wmi peer delete of vdev1, firmware will assert.
To fix it, don't wait rsp of p2p cleanup roc when disconnect by async way.
Change-Id: I877b7a446dfd12f621dad5049a67574359bdd322
CRs-Fixed: 3285115
Currently, link entry is not added to connection_list of
policy_mgr in case of legacy to MLO roaming. This causes
policy_mgr to miss track of the MLO link.
Check if the connection entry is present in the policy mgr
for the link vdev id and add an entry if it's not present.
Change-Id: Ib19f3616a3384670f1faef20c39476a2bcac2588
CRs-Fixed: 3274435
There is a race condition issue between supplicant and driver thread.
1. Suppliant disable F/W roaming.
2. Supplicant Invoked roaming.
3. Driver reported roam completed to supplicant before EV_ROAM_DONE.
4. Supplicant tried to enabled roaming, failed for vdev ROAMING state.
5. Roaming completed, but RSO kept disabled for supplicant disabled
roaming flag not cleared.
6. F/W roaming kept disabled until next disconnect and reconnect.
To fix it, driver don't report roam completed event to supplicant until
vdev changed from ROAMING to CONNECTED.
Change-Id: I8f0db74b5dce69ea355fde2c43edaf6419c87eb0
CRs-Fixed: 3280727
For mlo AP, bssid in wmi_roam_synch_event_fixed_param of
WMI_ROAM_SYNCH_EVENT is AP MLD addr, when use it as link addr,
failed to register peer and set peer as connected, so all Tx
are not allowed including EAPOL.
Fix it by getting AP link addr and frequency of each link from
setup_links_param array of WMI_ROAM_SYNCH_EVENT.
Copy link info from roam sync event to connect response before notify
os_if roam complete, os_if will send link info from connect response
to wpa_supplicant, supplicant will use it to add MLO Link KDE(s) into
EAPOL-Key 2/4.
Change-Id: I87833784a4e0b9240725223069c55fb0db3bc88f
CRs-Fixed: 3277878