- Add osif callback api to get scan ie params
- Made few mlo manager api's public
CRs-Fixed: 3288038
Change-Id: I15a764682b8164eb1b66adeff44d7e344f2563c3
As part of VDEV SM history only vdev id is logged.
In multi psoc scenario it's difficult to differentiate vdevs across
psoc as vdevs share same id across psoc.
Hence add change to log psoc id along with vdev id.
CM-PS_0-VD_1: Connection SM PSOC:1 VDEV:2
Change-Id: I83f6b69e1ea308032ad8a58e4c81b74b76a277d3
CRs-Fixed: 3364875
Currently, host driver notifies the last connect failure to upper
layers. But some customer needs the first connect failure response.
So, in this change, cache the first connect failure response in connect
request structure and it retrieves it when all candidates are failed
to connect and notify it to upper layer.
Change-Id: I850c20cdfeb0c8423d074094f97c83599e43b409
CRs-Fixed: 3378788
Currently, driver only sorts the BSSID according to scoring algo.
But some customer need to prioritize the BSSID HINT and filter out
BSSID (except BSSID HINT) which have RSSI value lower than value
defined in INI parameter.
For this, add new INI parameter to configure RSSI value
and check this RSSI value for all BSSID expect BSSID HINT.
Change-Id: Ib942f32878b35cbdb20ba669808f4a5c8820ebd7
CRs-Fixed: 3378781
Currently host drops an AP from scan list if host country is set to
US and AP country is non-US. This implementation violates our
standard regulatory scan policy.
To address this issue, introduce a new INI to differentiate
between our standard regulatory policy with others.
Change-Id: Id72f871653e31969c4d1b147cb3c557f90a6c8f6
CRs-Fixed: 3361720
The current channel list alone is not enough to represent the
capability of the chip or device. Given a channel, in many
cases it may be required to know all the power modes that are
supported by this channel.
Remove wlan_reg_fill_channel_list to use the super channel API
wlan_reg_fill_channel_list_for_pwrmode.
Change-Id: I9645caff236af786b6376608be2aa56a28fe689c
CRs-Fixed: 3357161
Currently, BSS beamformee score is calculated from vht_cap or
eht caps, so for 6 GHz HE capable BSS it will calculated to zero.
Due to this 5 GHz will always get selected compared to 6 GHz BSS with
all other capabilities and conditions same in both BSS as 5 GHz
will have more total candidate score.
Fix this issue by correct calculation of AP beamformer capability
in case of 6 GHz HE BSS.
Change-Id: I0f3285ce1c5c1aeeba624c5371ff0f884ae78c58
CRs-Fixed: 3351991
Changes to handle dynamic link add for non-AP MLD.
Also add change to clear mlo cap for link removal of vdev.
Change-Id: I47e0bb77b7f32296e5745ffd53ce3a34ec35a63a
CRs-Fixed: 3346538
Connection completion handler is called from two scenarios.
Scenario 1: Called via connection flush with lock held
cm_disconnect_complete()-->
cm_flush_pending_request() acquired lock here-->
cm_handle_connect_flush()-->
cm_notify_connect_complete()
Scenario 2: Called via connection response without lock held
In first scenario, cm_notify_connect_complete() calls
cm_is_connect_id_reassoc_in_non_connected() to check if connect
request is a reassoc req and received in not connected state.
This function tries to auqire same lock which leads to dead lock.
To fix this issue, check if cm_notify_connect_complete() is called
with lock held or not. If not, acquire lock and call
cm_is_connect_id_reassoc_in_non_connected().
This prevents dead lock in scenario 1 and allows calling
cm_is_connect_id_reassoc_in_non_connected() with lock held for
scenario 2.
CRs-Fixed: 3351119
Change-Id: I192090777cb2cf0d604e2670a317aaf6f320d086
In the case of STA/CLI + STA/CLI, if an STA/CLI is in connecting state
and a disconnect is received on any other STA/CLI, the disconnect can
timeout waiting for the connection on the first STA/CLI to get completed.
This is because the connection is a blocking serialization command and
it can try multiple candidates and thus can take up to 30+ sec to
complete.
Same way if an SAP/GO has a start/stop command or peer disconnect in
pending queue, the delay is processing it can cause timeouts and other
issues.
So abort the next connection attempt if any of the vdev is waiting
for vdev operation to avoid timeouts.
Change-Id: I6570b8213c9008d8fea26febb49d0e40d9180d12
CRs-Fixed: 3354561
Supplicant will send add key once EAPOL exchange is successful
on assoc link. The keys added for the partner link will get
cleared if connect active event on partner link is not received
but add key is received on that link.
To avoid a race condition, for MLO assoc vdev clear the
existing crypto keys in connect active state and for link vdev
clear the crypto keys before sending to connect.
Change-Id: I0f40a4d00bea7d8829b1a3b4b90cdb59234b97c4
CRs-Fixed: 3345714
Currently, link vdev is triggered to connect process
after assoc vdev connects successfully in function
mlo_send_link_connect. If osif_cm_disconnect_sync is
invoked during assoc vdev connection, the disconnect
command for link vdev is dropped since it is in INIT
state. Then it only queues the disconnect command for
assoc vdev. After link vdev connects successfully, it
process the disconnect command for assoc vdev, and F/W
assert happens because deleting assoc peer before link
peer.
To resolve the issue, invoking wlan_cm_disconnect with
source CM_MLO_LINK_VDEV_DISCONNECT for each link vdev
in function cm_disconnect_start for assoc vdev.
Change-Id: Id0d0607d4374ed48513f15e5e3f5dfe499087935
CRs-Fixed: 3346737
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. The link beacon frame
needs to be fetched from roam sync indication and cache it in
connect resp to use it while link connect in roaming cases.
Add a new param in connect response structure to facilitate this.
Change-Id: Ib015728c8ee880337c4d1fdadc373c9e52247b55
CRs-Fixed: 3342433
Currently join timeout is retried 2 extra time which can lead
to unsuccessful connect time of about 9+ sec, this lead to
beacon miss on the MCC concurrency.
So reduce it to 1 try to limit connect time to around 3+ sec in
case of candidate freq can lead to MCC concurrency.
Change-Id: I642a7acd1e2a49308836bd1bb6c77ab1aeb110e4
CRs-Fixed: 3328642
When vdev1 connected, if find vdev0 isn't connected, disconnect vdev1 in
async way by sending msg to scheduler thread, and disconnect vdev0 cmd is
enqueued to serialization before disconnect vdev1 cmd, so vdev0 assoc peer
delete happens before vdev1 link peer, F/W assert happens.
To fix it, when vdev1 connected, if find vdev0 isn't connected, disconnect
vdev1 in sync way, and let disconnect vdev1 cmd enqueue to serialization
queue header instead of tail, make sure it is activated befored disconnect
vdev0 cmd.
Change-Id: I80b1c8f6528bdd58e953851e164e5bfce2b3bd4a
CRs-Fixed: 3339030
To check the allowed dot11 mode of the VDEV, add new member to
struct vdev_mlme_proto hold this value.
Change-Id: I5bfbff0ab3056013a997744b8e9ce0b4d0a3d43b
CRs-Fixed: 3314403
Extract new channel parameter generating including puncture from
wlan_cm_sta_update_bw_puncture as a new API, so that other module
can use the new API.
Change-Id: I20190168c9228fa97e32583bc8db79c98b3b7918
CRs-Fixed: 3326723
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: Ifad0ccd76bd1184a9b1d20f3d7fa4455df924843
CRs-Fixed: 3291826
Add ACTION_OUI_11BE_OUI_ALLOW enum to support new WMI action
oui type WMI_VENDOR_OUI_ACTION_ALLOW_11BE.
Add scan entry to candidate validation struct.
Change-Id: I502a246584cd5ee6b4759d8fbb67629628314560
CRs-Fixed: 3301859
Currently the driver is trying to notify the userspace
upon disconnect on partner link. If initial connection on
partner link fails and a NB disconnect was triggered at the
same time, moving the state machine to disconnecting, the driver
is clearing the mlo vdev flags.
To address this issue, check for the connection state
and clean up the mlo vdev flags after disconnect is complete.
CRs-Fixed: 3309091
Change-Id: I2e52ae225d33f3ff7be06e0a3abe8709f42012ee
On disconnecting, the bssid may not be filled in cm_req->discon_req.
Zero bssid will fail to update the scan entry to non association
state which may block the scan entry age out.
Move disconnect bssid fill before update the scan entry for
disconnecting.
Change-Id: Id8a36d8a37c212af727c7b61a24b51f2782c4a2c
CRs-Fixed: 3291599
Use def_tx_keyid for Mcast wep key.
Also reset all the key index in wlan_crypto_free_key once igtk,
bigtk and Ucast/Mcast are freed, so that their values are not
carried to next connection.
Change-Id: I9a1e8715c54f47905889511f983b3127b9b5cfcd
CRs-Fixed: 3297270
Reproduce steps:
1. Connect from OSIF success, wdev->connected = true;
2. Disconnect from target if and reassoc from OSIF happens back to
back.
3. Disconnect event is not sent to kernel, wdev->connected keeps
true, isn't cleared.
4. Connect from OSIF failed too, wdev->connected keeps true, isn't
cleared.
5. Scan with random address failed since wdev->connected is true.
To fix it, if connect req was a reassoc req and received in not connected
state for race between disconnect from target if and reassoc connect from
OSIF, set reassoc_in_non_connected to send disconnect instead of
connect rsp to kernel to cleanup kernel flags like: wdev->connected.
change-Id: Ibbe38da14e9339b49589216250453b76c7387b57
CRs-Fixed: 3290496
If get scan filter for link vdev, that means the MLO STA has
more than 1 link, do not filter the link vdev's scan filter
channel list. Link that is causing MCC with legacy STA can
be disabled in post conenction.
Change-Id: I4aafb7168e60bf158904d3b1c4a4c42d4eaeb126
CRs-Fixed: 3285312
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 provide
synchronization between disconnect initiator thread and
scheduler thread.
Change-Id: I3c287a020e0a12abab2ad6237594e022adc904a7
CRs-Fixed: 3287190
There are two different name with different range of value for
aliasing INI's. So, it should pick the valid range of value wrt INI
name.
Change-Id: I1b3f8b276a65f2e1659dd4e3ede8512513e3da71
CRs-Fixed: 3268728
Add a flag to indicate assoc req is used for this roaming,
don't treat assoc req as reassoc req.
Change-Id: I58f357b5581ca71e97841f1d7e0f3daad5d60970
CRs-Fixed: 3273877
In per vdev cm_id, same ids may get used across vdev's,
leading to confusion.
So add vdev id info in cm_id to avoid same cm_id across
vdev's.
How to read new id
Command_type vdev_id req_id
0c 01 0001 = 0x0c010001
=> connect on vdev 1 req_id 1
0d 00 0002 = 0x0d000002
=> disconnect on vdev 0 req_id 2
Change-Id: If526ea31a3d792a31c44ad607e1878691120dd7c
CRs-Fixed: 3263910
Currently, Active command id is reset during memory release,
but a new command will become active before memory release
of serialization command, and if it try to check the active
cm_id (using cm_get_active_req_type) it will be valid, which
is incorrect.
Fix is, reset the cm id for active command before calling
release active command.
Change-Id: I6f4844c61349a00af5967f9c757844473244d737
CRs-Fixed: 3263863
Currently, legacy driver sends only one connected BSS entry to
kernel while sending the connect response. But in case of MLO
connection, kernel will not have the BSS entry for the partner
link which may leads to connect response failure.
Fix is, in case of MLO, driver should send all partner BSS
entries to kernel before sending connect result.
Change-Id: Icf2c75f8029c44270c4b51e2ab3fcf861d221747
CRs-Fixed: 3240332
When the disconnect is pending in CM for assoc vdev, new disconnect request
will flush and clear the MLO flag by cm_notify_disconnect_complete.
That will cause link vdev run into invalid path during RSO stop event
handling. Fix this by:
1) Avoid calling cm_notify_disconnect_complete from
cm_handle_disconnect_flush
2) Move cm_clear_vdev_mlo_cap() at the end of
cm_disconnect_complete() when all disconnect are actually
completed.
Change-Id: I6f3c08dcae1aa5acf8c073c0055616d8f7988494
CRs-Fixed: 3250990
Since 6 GHz bss doesn't support vht, can't get beamformer cap from vht cap,
beamformee score is always 0. 5 GHz bss has vht and beamformee score, so
always win 6 GHz bss of same mld if other conditions are same when select
candidate by score.
To fix it, for 6 GHz bss, get beamformer cap from eht cap.
Change-Id: Ic057928876a6ee58a96c3881d004886d0ac0d3fa
CRs-Fixed: 3249097
Some operating class like 81, channel spacing is 25, need convert
channel width to 20 to get right score when select candidate.
Fix some code style issues too.
Change-Id: I15795d016cae74b7596a199ae2883aeababaf081
CRs-Fixed: 3250207
In case if cm ctx is NULL, the disconnect state check API is returning
false which makes the caller assume vdev is not disconnected.
Hence, change the return value to true in this case.
Change-Id: Iadd52d94d6f561974101aa245ddbfdb1eb301b06
CRs-Fixed: 3246161
Select best candidate by mlo score algorithm.
Check bss mlo type first by mlo info, mlo config, partner frequency and
dbs/sbs cap, calculate candidate score for SLO/MLMR/EMLSR bss types.
For SLO case, same as before except:
Decrease percent of legacy band and nss to include 320M and 8x8.
Decrease max percent of congestion from 100 to 80 to include MLMR joint
congestion.
Increase weight of both band width and nss to 20.
For EMLSR case, same as SLO except adding EMLSR boost score.
For MLMR case, besides adding MLMR boost score,
calculate joint RSSI/band width/congestion score for combination of
scan entry + each partner link by new mlo algorithm, select partner with
highest total joint score as candidate combination, only activate that
partner link.
Change-Id: I640c6825d945caf5fab504a77717195c2eac0c93
CRs-Fixed: 3234912
-Wimplicit-fallthrough is being enabled by default. Some compilers
such as clang require the attribute instead of just a fallthrough comment.
Change-Id: Idc7c80891aed551db5b6b87eba7b44b6c75ecad3
CRs-Fixed: 3217348
If WLAN_FEATURE_11BE_MLO defined, cm_calculate_raw_rssi_score return 0,
cm_calculate_eht_score return 0 too if eht cap isn't supported,
so rssi score is always 0 if candidate doesn't support eht cap.
Change-Id: Id0a3e92d9255178511cfdfea8649cf6e184b16c2
CRs-Fixed: 3234156
WMI_ROAM_GET_VENDOR_CONTROL_PARAM_CMDID: Add support
for a new roam command to get vendor control parameters
from FW. Host needs to send proper param ID in command
(from enum WMI_ROAM_GET_VENDOR_CONTROL_PARAM_ID)
to get corresponding INI value from FW.
WMI_ROAM_GET_VENDOR_CONTROL_PARAM_EVENTID:
Add support for a new roam event to get param value
from FW. FW sends this event upon receiving
WMI_ROAM_GET_VENDOR_CONTROL_PARAM_CMDID command.
Change-Id: Ic7b3badb14daff183dd36927b4dae6bbc036e6cd
CRs-Fixed: 3225166
Move roaming related SM handling under WLAN_FEATURE_HOST_ROAM and
WLAN_FEATURE_ROAM_OFFLOAD macros.
So that if neither of them is enabled connection manager
SM don't move SM to roaming specific states.
With this if roaming macro WLAN_FEATURE_HOST_ROAM and
WLAN_FEATURE_ROAM_OFFLOAD both are disabled OR
WLAN_FEATURE_ROAM_OFFLOAD is enabled but INI gRoamOffloadEnabled
is disabled, driver will not try to roam, instead, it
will do a internal disconnect followed by connect to new BSSID
Change-Id: Ic61d3badd451f426db8b9925e2b4dd0b2f9ff307
CRs-Fixed: 3216546