whenever the STA is roaming to the same AP and there is a
HO failure, that AP is getting to the avoid list, resulting in
subsequent connections failing to the same AP
Do not add the AP to avoid list if the HO failure is to the same AP.
Change-Id: I7e375c8dab3e0f22eaf99a1d9117c719c14caba3
CRs-Fixed: 3620443
MLO parameter is not observed in association/reassociation
request/response logs when connected to MLO AP.
Call api wlan_populate_mlo_mgmt_event_param() in the
api cm_roam_mgmt_frame_event() in order to populate
MLO parameter in MGMT frame logs after roaming.
Change-Id: I9dbd1a224ec861964a78883088440d79ae80cdd6
CRs-Fixed: 3620741
Currently, host driver uses CM_ROAMING_HOST for ROAM_INVOKE for
both host initiated(e.g. connect on connect, qos,..) and user
initiated requests(e.g. REASSOC ioctl).
The expectations are different for these cases upon ROAM_INVOKE
failure as explained below,
1. connect-on-connect/FASTREASSOC case: Expectation upon
ROAM_INVOKE failure is to disconnect from current AP as this
status needs to be sent to kernel.
2. REASSOC ioctl: Expectation upon ROAM_INVOKE failure is to stay
connected to the current AP.
So, define a new source CM_ROAMING_USER for REASSOC and use it to
differentiate from CM_ROAMING_HOST to avoid disconnection.
Also, pass right cm_id to WLAN_CM_SM_EV_ROAM_INVOKE_FAIL to
gracefully remove the ROAM command from SER queue.
Change-Id: I0d48d4773c659e667d87c9583ce6530543998e19
CRs-Fixed: 3621341
If any force active link bitmap is present, we have
to clear the force active bitmap from target. Otherwise
that will be conflict with the force inactive num bitmap,
then target can't handle force inactive num 1 command to
exit EMLSR.
Change-Id: Ia3fbcc3ca188ce1e1c93f4d0b0439ac126aeb8cb
CRs-Fixed: 3616604
Add support for T2LM status event for connectivity
logging.
For T2LM status event, band, tid_ul and tid_dl are
the parameter used for connectivity logging.
Change-Id: Ifdb763185af88617b90ea761e7d10cc35c628808
CRs-Fixed: 3609648
Currently, when host driver attempting to send the keys
during a link switch, the absence of a key was not handled,
resulting in firmware crashes.
This change is to assert host driver in the event that
no key is found during a link switch.
Change-Id: I7abe452c7dfa1e203c6af563163cf2d5589ab929
CRs-Fixed: 3604274
Currently, even if dual sta roam support is not present, RSO
is being enabled for both the STA connections. This leads to
asserts in firmware.
To fix, do not initialize RSO state machine for the second STA
connection, if RSO is enabled for the first STA.
CRs-Fixed: 3612478
Change-Id: I9b7698770dd05139f6323846d78e931db58ce4a8
Introduce support to add frequency to peer in
order to enable Connectivity diag logging for
datapath related events
Change-Id: I634ddc0206530f1039a37fd60643877b2fdf7e87
CRs-Fixed: 3596250
Add support for T2LM request/response event for
connectivity logging.
For T2LM request/response band, token, status, tx_status and
is_rx parameter are logged for the event.
Change-Id: I5d65c99896ec26b67b763679b105036975a938d5
CRs-Fixed: 3607151
Currently, host receive the key in one thread
while simultaneously installing keys in a scheduler thread.
This change aims to resolve the synchronization issue by allowing key
installation only in one thread.
Change-Id: Ia2429db2a48eadf00574eaec99fb0c47f39c6d42
CRs-Fixed: 3609681
When link switch happens internal disconnect sequence happens on
that vdev, but RSO stop is not sent for assoc vdev during below
scenario:
1. Disconnect gets triggered from userspace when VDEV-0 is in
middle of link switch.
2. At the time of the disconnect, vdev-1 is assoc vdev and vdev-0
is link vdev.
3. For the disconnect request, first disconnect serialization is
posted for assoc vdev(0) and then for link vdev(1).
4. After the serialization is posted, link switch connection
succeeds and vdev-0 again becomes assoc vdev and vdev-1 becomes
link.
5. Now, serialization posted in #4 gets dequeued and assoc vdev
gets cleaned up first.
6. Link vdev-1 gets cleaned up next, and it posts RSO STOP for
assoc vdev and waits for response. However, vdev-0 is already
cleaned up.
7. Therefore, vdev-1 gets stuck in wait-for-rso-stop response
and leads to active command timeout.
RSO start for this assoc vdev will be sent after link switch
is complete when keys are installed.
So send RSO stop for assoc vdev during link switch start
Change-Id: I5563dacef6610fc7039b1d05798edf4b6364eebd
CRs-Fixed: 3612704
If FW roams with 3-links, assoc beacon and link beacons
are sent by the firmware in roam sync frame event.
However, driver parses the per-sta link info of the
assoc beacon and caches the individual per-link probe
responses only if the link beacon is not present.
Therefore, in 3-link roaming cases, if both assoc link
ML probe response(assoc link + one partner link) and link
probe/beacon are received, then the per-sta profile present
in the ML assoc link probe is not saved to the scan cache
and this leads to bss retrieval failures.
To fix this, parse per-sta profile and generate individual
probe responses directly from the roam sync frame event for
both link and assoc beacon/ML probe responses. This caches
all the partner links individually.
Also, set the assoc state for the standby link bss after the
completion of roam sync processing on assoc vdev. This prevents
the age out of the standby link scan entry.
Change-Id: Ib349aedb826d5037c6015434557d909477e87e5a
CRs-Fixed: 3613058
Currently the user configured MFP state that comes from the
userspace in connect request is not handled or processed.
Instead the RSN caps from assoc IE of connect request is inter-
sected with AP RSN caps and sent to Firmware using RSO command.
This RSN caps is used in FW in selecting a roam candidate, which
was causing the cross AKM (eg:SAE -> PSK) roam fail.
Hence, use the user configured MFP value in sending the RSN caps
to Firmware.
CRs-Fixed: 3604149
Change-Id: Ibf2d7bfba6cd17a98b9e4b1c8c468046ab2e7e62
Currently, in some API such as
"wlan_cfg80211_tdls_add_peer_mlo", when driver gets vdev, it is
MLO vdev, so it uses WLAN_MLO_MGR_ID ID, but when it tries to put
the vdev, since disconnection happens and mlo flag is cleared,
so it uses WLAN_OSIF_TDLS_ID ID which is non-ML vdev.
This causes release of vdev reference from different id for which
it never takes reference and result in crash.
To fix this, use same debug id throughout function. For that,
generalize the get_ml_vdev API by passing the debug id as
argument to the function.
Change-Id: I903185ec9b64cc67cc2e0c595ba88b7b0ca8ded2
CRs-Fixed: 3603012
For BTM certification cases, FW is unable to roam to
testbed AP BSS due to scoring logic. Reset the BTM
abridge flag that is used to enable FW to select
candidates based on score.
Change-Id: I29b6e1b5dea969263eb263103c6d2c10d5047f20
CRs-Fixed: 3591574
Add support to add band info for Neighbor report request,
Neighbor request response, Beacon report request and
Beacon report response logging for MLO usecase.
Band info will indicate the band of the link involved
in MLO connection.
Change-Id: I758be63f085be46244f727a842806fb27660e8dd
CRs-Fixed: 3583958
Introduce support for MLO setup event for connectivity
logging.
For MLO setup event bssid, band, link_id and status
are sent as part of logging.
Change-Id: Idd16b4ec7eeb245a5ce99b383bd40f169f579ebc
CRs-Fixed: 3605678
Add support to add band info for BTM Query, BTM request
and BTM response logging for MLO usecase.
Band info will indicate the band of the link involved
in MLO conenection.
Change-Id: I5ba9fff874da52aa36af6ced97f065d9976665e2
CRs-Fixed: 3583657
For certain cert cases, roaming is disabled through
CAPI. Supplicant sends RSO disable to Host and the Host
disables BTM offload as well as part of roam disable.
But, for cases like load balancing, Firmware has the
logic to handle BTM requests with disassociation
imminent bit set to 1, by sending an event to Host to
trigger a T2LM request action frame rather than a BTM
response. Thus, set BTM offload bit even when roaming
is disabled to allow FW to handle BTM request frames
instead of supplicant.
Change-Id: Iaa0cbbce62dbb76518880ef2470d6d0819c501db
CRs-Fixed: 3590733
Modify the api cm_roam_trigger_info_event() in order to add
band info for Roam scan diag logging for MLO usecase.
Modify the api cm_roam_candidate_info_event() to indicate
MLO connection during Roam candidate logging.
Change-Id: Ib42e8362ee091716110c2aa3513a6f6b5653681f
CRs-Fixed: 3582383
Link switch request received on assoc VDEV(V0) and to process it
MLO manager will change this to link VDEV and another VDEV(V1) to
assoc VDEV. If AP sends deauth while link switch is in progress
then it will gets serialized first on partner VDEV (V0 - which is
the VDEV on which link switch is in progress) and then on
assoc VDEV(V1).
Upon link switch completion MLO manager will restore the VDEV
flags to original state and disconnect queued to serialization
will be activated and it first processes assoc VDEV(V0) as
when it is queued to serialization flags are not restored.
As part of disconnect complete on assoc VDEV(V0) kernel is notified
and this leads to framework sending set MAC address. Though assoc
VDEV(V0) is disconnected, partner VDEV (V1) is still not in INIT
state. So sending set MAC address while in non-INIT state will lead
to FW assert.
Defer any SB disconnects while link switch in progress, MLO manager
will queue these disconnects when link switch is completed and flags
are properly restored so that assoc VDEV is not serialized first.
Change-Id: Idd8afbdc74177eda429256b4761512e0d1caa949
CRs-Fixed: 3601964
Existing code for sending set link request to FW will
get VDEV list from MLO manager and sets the VDEV's
MAC address matching userspace request to active and
non-matching as inactive. However for three link
connection this misses the third link which doesn't
have any VDEV so userspace control for this link is
not available.
Enhance the logic to allow userspace to send MAC addr
of the standby link to manage link active/inactive.
Change-Id: Iba5d976349917b1b4f7146381cb0f49218cf4ed8
CRs-Fixed: 3600291
Introduce MLO support for Management event logging.
Add band info to indicate the bands of the link
requested for setup during Association/Disassociation
request frame.
Modify bssid info to send only the bssid of the AP
associated to the frame exchange link.
Add MLD mac address support during Association/disassociation
event logs.
Change-Id: I84e53a486ae5ae3f4f2f3f9c42658e1392e64b13
CRs-Fixed: 3603786
Currently, roam stats don't cache Roam AP BSSID and don't update
to user space.
If roam successful, save R_AP and P_AP, if roam failed, save P_AP
and save C_AP if exist, then update to user space.
CRs-Fixed: 3580957
Change-Id: Ib0048c34701a7750f9261ba5cbd1bc65eb41582c
In certain conditions, AP can send T2LM IE in assoc response
frame. Clear this T2LM mapping information during
disconnection to avoid run to run variations.
Change-Id: Iace0e615481c143bb22dcda1d9f97deb15f44009
CRs-Fixed: 3591466
After roaming to 3 Link MLO AP, the link info context is updated
based on link id, but this will cause issue if roamed AP has
different link ids.
So reset the link info context upon roaming and update the link_id
and vdev_id for all the links.
Change-Id: I6e88ed623fa6d068fe7a5ec572cfa132ec72ea6a
CRs-Fixed: 3603945
If power save disable command commes, implicitly driver
teardown the existing TWT session by sending out
TWT_DEL_DIALOG command to fw. In firmware if
command fails due to firmware scan_in_progress or
chan_switch_in_progress then driver should retries
TWT_DEL_DIALOG implicitly.
In driver, add retries logic to the twt del dialog command in
case of power save disable.
CRs-Fixed: 3584286
Change-Id: I71299ea8239f33d194d2b55499f2d8e5946c42ba
Add comments for the fix added to validate security
for 11be connection and Reject partner link based on
security check.
Change-Id: I1b8d5e91e0e07c6c311b8c6ca6427c3fabd6b219
CRs-Fixed: 3605255
Check if the roamed channels lead to DBS/SBS with existing
320 MHz SAP after handling roam sync indication.
Change-Id: I3c816378f93b505c59da7aa9c4cfcc6352f5dbb3
CRs-Fixed: 3601348
Based on the new requirement, add support for vendor command
to switch the audio transport bearer.
Change-Id: I1d3b74c18976b0927ebba228b73af5a10cc67391
CRs-Fixed: 3582788
If disconnection event is for link switch, do not trigger SAP
force SCC check. And if link switch is in progress, skip
the force SCC workqueue.
And if link is in middle of switching, do not run link force logic.
Change-Id: I4a8bf59ff16dca2caf560eb36e1bc58f7d6a919b
CRs-Fixed: 3590814
Currently mlo sta context is accessed without null
check in mlo api's.
Add null check for mlo sta context in mlo_check_if_all_links_up
and mlo_check_if_all_vdev_up api's.
CRs-Fixed: 3601823
Change-Id: Iea3f1daf1d9aef40efdff21a02e8a3c23494bfad
After roaming to 3 link AP, update the MLO manager with the
self link address received from the roam synch indication.
Change-Id: I6258abe7bb9e140307c30fee8701ef12a618d9f1
CRs-Fixed: 3591487
When link switch is in progress, the assoc vdev mlo link flags
get toggled and the flag is reset to actual value once the link
switch is complete.
During this time, if concurrent SAP channel switch happens, then
the RSO init/start happens on link vdev. This causes invalid
sequence of state changes on assoc vdev & roam commands get
sent on link vdev.
So avoid any RSO state changes on MLO vdev when link switch is
in progress.
Change-Id: I46af3ee511e2156ce1be032852aebdb18d4c7c02
CRs-Fixed: 3588178
Currently, if AP is sending T2LM action frame with standby
link mapping then STA host is rejecting the T2LM mapping and
sending status as WLAN_T2LM_RESP_TYPE_DENIED_TID_TO_LINK_MAPPING
to AP.
Fix is, STA handles T2Lm mapping if AP sends on standby link.
Change-Id: I8492fbaff7bffb32afa142bb11767e6202137cf5
CRs-Fixed: 3589843
For multi link connection there might be the case where
rsnxe of the AP is not present on the link vdev.
This causes the link vdev alone to downgrade to 11ax
mode and assoc vdev is in 11be dot11 mode.
So for vdev with ML peer, the dot11mode is 11ax,
which causes abnormal firmware behavior.
Reject the partner link that doesn’t pass the security
check and validate the next available partner link.
if none of the partner link passes the security check,
proceed connection with single link.
Change-Id: I07239f06e2fa166cb472e1f24d66b44929d58cbf
CRs-Fixed: 3583522
Flush TWT commands when cfg80211 suspend is in progress
and schedule them for execution when cfg80211 resumes.
This prevents WMI from crashing due to concurrent
WMI_WOW_ENABLE_CMDID and twt requester enable commands
during suspend.
Change-Id: I505b789805d8a83564bf25d3f6c5c28d6d390966
CRs-Fixed: 3567817
After roaming TDLS is enabled only on associated vdev and
it remains disabled on link vdev. This causes TDLS peer
update to be sent with TDLS disabled on that vdev.
Enable TDLS on link vdev after roaming.
Change-Id: I7fe42ea2eebe02ae282965cfa6116f1e35de4490
CRs-Fixed: 3583163
Clear the current connected ML AP keys for all the links
including standby links after roaming to new AP.
Change-Id: I9cc548ba21648d1a1c123d15d1c8524dba141ea5
CRs-Fixed: 3581733
Currently while processing roam synch indication event, the
setup links info is filled for WLAN_UMAC_MLO_MAX_VDEVS(2). But
with 3 Link MLO support, it will reject the roam synch
indication event.
So allow 3 Link roam synch based on fw capability and ini
intersection for number of links supported. Use
wlan_mlme_get_sta_mlo_conn_max_num() API to get max allowed
links for connection.
Also replace array length declaration for setup_links having
WLAN_UMAC_MLO_MAX_VDEVS and use WLAN_MAX_ML_BSS_LINKS instead.
Change-Id: I1982e50f5036ba4eacbab50044444a7238cd1073
CRs-Fixed: 3573066
Register event handler for WMI_ROAM_SYNCH_KEY_EVENTID.
Store the roamed AP keys for all links in crypto module
Add CM function pointers to iterate and store the parsed
keys for each link.
Change-Id: Icee5eeea23724a7d69cf895023e75e856d88a685
CRs-Fixed: 3577927
During link switch, as part of the disconnect sequence, roaming
is enabled on the other connected vdev and this causes RSO start
to be sent before vdev up is sent on that vdev. This causes
abnormal firmware behavior.
So don't send enable roaming till the vdev is up in case of link
switch. RSO start will be sent as part of the install key sequence.
Change-Id: Ib9fe520ec3d2b5c91fdba192934418e235082a31
CRs-Fixed: 3581618
Use link bitmap to update inactive link bitmap instead of
link id in Roam indication.
Change-Id: Ibdffbf7a4ab06f34affb0f4b1876c9dbbe95c395
CRs-Fixed: 3583587
For mlo initial connect, vdev0 connected first, when received assoc rsp,
then up vdev0 at last trigger vdev1 connect, set wlan_connected_links
bitmap for vdev1.
For owe 1x roaming, vdev1 link is set up on host side, when handle roam
sync, we need stop RSO first to finish EAPOL, then trigger vdev1 connect,
set wlan_connected_links bitmap for vdev1.
Above design has race condition issue:
vdev0 becomes up (T1) before set wlan_connected_links bitmap for vdev1
(T2), if enable RSO for vdev0 happens between T1 and T2 for some reason
like vdev2 connect/disconnect, mlo_check_if_all_vdev_up return true, so
mlo vdev0 RSO is enabled in F/W before vdev1 up, which is unexpected.
Fix proposal for both initial connect and roaming:
For mlo initial connect, vdev0 connected first, when received assoc rsp,
we know whether other links need set up, can set wlan_connected_links
bitmap at that time, then up vdev0, at last trigger vdev1 connect.
For owe 1x roaming, vdev1 link is set up on host side, when handle roam
sync, we need stop RSO first to finish EAPOL, then set
wlan_connected_links bitmap for vdev1, at last trigger vdev1 connect.
Change-Id: I9abe48dbf7781be80ab5ec99ec42e6324a676283
CRs-Fixed: 3576584
Check wmi_service_n_link_mlo_support bit enabled for
API ml_is_nlink_service_supported.
Change-Id: I0f2a3cb55f84549ac064c43d8b0a2f00738a0ddd
CRs-Fixed: 3572844