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
Add link switch notifier callback to check concurrency
allow or disallow for link switch request.
If the target link is force inactive, disallow the link switch
to it.
Change-Id: Iac8b443c85bbf7c4b714b62e8f3d0968a3ad6226
CRs-Fixed: 3579454
If disconnect/connect is for link switch, do not notify
the link switch disconnect and connect event to link force
handler. That is not ML STA connection down. After link
switch connect completion, driver will re-evaluate the
link force state.
Change-Id: Id7463fa9ba80c4cf150ca069c297e226e8208010
CRs-Fixed: 3567072
roam_band_bitmap is updated based on the vendor command from
userspace, when NCHO band configuration is received.
Update the MLO support_link_band sent to firmware as part of the
RSO commands to intersect the user configured roam_band_bitmap
value.
This will restrict the firmware to advertise only those bands
sent in the WMI_ROAM_MLO_CONFIG_CMDID command, and firmware
will advertise only links corresponding to the configured
bands in the reassociation request.
WMI_ROAM_MLO_CONFIG_CMDID will be sent when
QCA_ATTR_ROAM_CONTROL_BAND_MASK attribute is received in roaming
subcmd: QCA_WLAN_VENDOR_ROAMING_SUBCMD_CONTROL_SET as part of
NCHO set band, since RSO stop, followed by start is sent during
set band to update PCL to firmware
Change-Id: Iba34411956bdb09502623bac9a51fb4663c632a8
CRs-Fixed: 3580693
At present, the link removal flag is in vdev object, but vdev may
repurpose to other link, the link removal flag has to be in link
info struct.
Add link removal flag in link info data struct and remove
it from vdev struct.
Change-Id: I6116e89f2bb065979f4e405ef0fac386abebcf17
CRs-Fixed: 3572836
If no active vdev links are left after force inactive for concurrency,
then do not send the force command. Add standby link check for this.
Add handle special 3 Ports case to force inactive potential MCC ML STA
link.
Change-Id: If35c19b554bd1a4725c3498f9228e0273a031b6c
CRs-Fixed: 3572829
For link switch disconnect do not send the deauth/disassoc frame
OTA and avoid flow pool unmap as to avoid flushing the memory
allocated for the packets sent OTA for which status is not yet
received.
Once the status is received DP flushes them via the
non-transitioning link.
Change-Id: If2ec024f19730f6ebebf0428f912bfa8dbbddea9
CRs-Fixed: 3557779
If the connected monitor is configured and then legacy STA is trying to
associate to Access point, check is enforced to reject the connection
request if STA + Monitor concurrency is in place.
Legacy STA + monitor mode is not allowed, whereas Legacy STA +
connected monitor should be allowed.
Hence, Fix this issue by checking for STA + Monitor mode concurrency
only if local_packet_capture (Connected monitor) is not enabled.
Change-Id: Ia4fc74ab2ec91e6d66ebba23614268173da1e7bb
CRs-Fixed: 3574577
In 3 Port concurrency, if standby link is MCC with existing legacy
interface then force inactive the link to avoid link switching
to it.
Change-Id: I3373715940eab949542528cce66d87a0646e1e5a
CRs-Fixed: 3572695
With force link inactive cmd rsp, FW will always send a current
active/inactive link bitmap. Host will select one link from current
inactive bitmap, and update the policy mgr table. But FW can
still switch the active/inactive between the links in force num bitmap.
When SAP coming up on same MAC and MCC with the dynamic inactive link,
host will send force inactive the link to FW. Then FW will not try
to active the link even in dynamic mode.
Change-Id: Ib4e438ca4c8e6945b3d7db42cd92d0393fcc1fc9
CRs-Fixed: 3564737
Currently, host driver updates only assoc link channel to
firmware through roam_scan_chan list. Firmware may issue
an additional scan if it finds partner link channels in
the RNR info but not present in the roam scan channel list.
To avoid additional scan, send all link channels to the firmware.
Change-Id: Icfd9dac77f98a208b35d47060aab7cf2c5e4c885
CRs-Fixed: 3536183
Since driver support special roaming and common roaming,
support common BTM roaming update to userspace, and we
can fetch the info by vendor_cmd_tool.
Change-Id: I753ded47d650ae4c9c579265485f081c16581c25
CRs-Fixed: 3568450
Currently, we are storing all the keys based on vdev
object. However, with n link mlo there is a need to
add all the keys based on psoc level.
This change is to add pairwise key based on psoc level.
Change-Id: Ib2b53f800eeec0694514239a5d87052accadbc33
CRs-Fixed: 3565190
In case of new candidate selection or another connect request,
reset the previous AP link info and later add new AP link info.
Change-Id: Id80ed2cb7b2a02af06492dedf9a9d07baf906cf4
CRs-Fixed: 3530705
Store TWT SI and SP in twt peer private object. This info will be
use in LL_LT_SAP to decide CSA via GATT message or ECSA action
frame.
Change-Id: I163b38a46267a2f1453cdb91d90dc97d0e6265e4
CRs-Fixed: 3517009
Currently, during disconnection vdev level T2LM established
mapping set as 0.
Add changes to reset it to default mapping T2LM mapping
instead to 0.
Change-Id: I4590045a65d3e715ceddcbf73252ec853abc7cb3
CRs-Fixed: 3560022
When MLO sta disconnected, sta_ctx->wlan_connected_links is cleared,
mlo_check_if_all_vdev_up return true, RSO can be enabled on this stopped
vdev, F/W assert will happen for roam struct is absent.
To fix it, for MLO vdev, don't enable roam if current vdev is not up like
legacy vdev.
Change-Id: I32e1b50525edcc4e7f6b42078e4fda9f415c9841
CRs-Fixed: 3555349
When EPCS priority access flag changed, it needs to update
the EHT CAP IE to firmware for the probe request when offload
scan happens.
Change-Id: I37ed8edcbc05ec4e6fe5edec7cfe20de0d64b7bb
CRs-Fixed: 3552311
Save EPCS Capability in psoc instead of vdev to avoid the value
lost when random MAC setting happends.
Change-Id: I35299da59156dc1197adaa3350b0d11255b76c2e
CRs-Fixed: 3551773
In current scenario mlo_free_connect_ies() and qdf_mem_free()
use to free up connect request and sub memory.
Similarly wlan_cm_free_connect_req_param() also free up the
connect request and its sub memory.
So replace mlo_free_connect_ies() and qdf_mem_free() with
wlan_cm_free_connect_req(). Also replace mlo_free_connect_ies()
with wlan_cm_free_connect_req_param() to avoid code duplication.
Change-Id: I37a930c3b7e63eaa8b9df9433fdc25b25d562a3c
CRs-Fixed: 3554198
Notify connection state change event to policy mgr
to change force link mode accordingly.
Change-Id: I2da0f453ee1af67c95346f2dc23e9e757aa491b6
CRs-Fixed: 3525191
Add APIs to handle force link active/inactive by link id
bitmap. For N-link mlo STA (N > 2), some link may have no
vdev attached, we have to use link id bitmap to do force
active/inactive.
If the service WMI_SERVICE_N_LINK_MLO_SUPPORT is not enabled,
vdev based handler will be invoked.
Change-Id: I1c48a7227185923a38f3e2b75f1274df9a186437
CRs-Fixed: 3525174
"mlo_vdev_get_by_link_id" may return NULL in failure case.
Add NULL check and release the vdev after process in
function: epcs_handle_rx_req and epcs_handle_rx_resp.
Change-Id: Ia1575b4fbcfde326d8e9b5c7b0562852ca23912b
CRs-Fixed: 3547906
The issue is host always uses assoc link channel width
to calculate the list of the channel(s) to trigger
wide band scan for both links.
In the case of N link MLO connection, the associated
channel and associated channel width may be different
for assoc link and non-assoc link(s).
Fix is to choose the proper associated channel width
and prepare the channel list for each link(s).
Change-Id: I2fce5d1153d396f1bfc9575572d90d2cfec0ac8a
CRs-Fixed: 3539444
Convert link id bitmap to vdev bitmap and update policy mgr
connection table.
Record the current force link command state to mlo context.
Change-Id: I0b28222de10a9493a153ee00189b87e4275a4231
CRs-Fixed: 3515467
CPU min frequency is boosted to maximum once roam start is received.
Add API to reset CPU frequency in case of HO failure.
Change-Id: Ib59d4d69a68f311dbb01609e7f5f64c307fcedc2
CRs-Fixed: 3522942
The roam candidate frame event gives the beacon of
the roam candidate. The SSID IE check expects minimum
size of the SSID to be 2 bytes. Because of this, the
candidate with ssid size 2 or less is not cached to
the scan table.
Fix this by not considering the size of the SSID IE.
Change-Id: Ifbe36ac8cf0f9c75a3830a2826f5330fa300df5b
CRs-Fixed: 3512310
Driver doesn't enable RSO currently for SL + Open auth cases.
Enable the RSO from connect complete path for open auth. Add changes
to enable the RSO only after all the ML links are up in case of
N-link MLO.
Change-Id: Ie3540493660e3605fe6739dc6d7706782b8a78ea
CRs-Fixed: 3509724
When roamed from mlo to single link, link vdev1 disconnected, assoc vdev0
RSO is disabled, after vdev1 disconnected, even vdev0 RSO is enabled again,
roam scan channel list is trimmed.
To fix it, when link vdev disconnect, just stop RSO, don't disable RSO,
roam scan channel list won't be trimmed.
Disable RSO only when assoc vdev disconnect.
Change-Id: Ie624cffa3acaebcd73abb7be54ce1016e88447f6
CRs-Fixed: 3522793
In current scenario during OWE roaming when HB failure occurs, it
should clean copied reassoc response and roaming info. But it is not
getting freed which leads to host driver crash while on idle shutdown.
In mlo_roam_copy_reassoc_rsp() memory is allocated for
sta_ctx->cpied_reassoc_rsp, sta_ctx->cpied_reassoc_rsp->roaming_info
and connect_ies->assoc_rsp.ptr but if memory allocation fails for
these it directly retuning without feeing previously allocated memory.
Add change to free the prevoiusly allocated memory if memory
sta_ctx->cpied_reassoc_rsp->roaming_info and connect_ies->assoc_rsp.ptr
fails to allocate memory which avoid the memory leak issue.
Change-Id: I7ca6ee526bf08c614ff25e4c3457db0dd58fc9aa
CRs-Fixed: 3507296
Currently there is no feature capability support for ll_lt_sap
and host driver and user space assumes that support for ll_lt_sap
is always present which not always true.
This may result in unexpected behavior if firmware does not
support ll_lt_sap.
To address this issue, add a feature capability to indicate
to userspace if host driver and firmware supports ll_lt_sap.
Change-Id: I7fbdb1996cab473f7a89761a35b6859fd2729c0a
CRs-Fixed: 3521091
In MLO STA case, even though twt_responder ini is disable but
still this bit is getting populated in he_cap for non assoc link.
Reason:
1. twt_res is getting set from populate_dot11f_twt_he_cap()
for assoc link. For non assoc link, it's getting set from
mac context.
2. populate_dot11f_twt_he_cap() api doesn't have the interseted
value of ini and firmware caps according to twt component api.
As part of fix,
1. twt_req and twt_res should have intersected value in
populate_dot11f_twt_he_cap()
2. Update twt_res from populate_dot11f_twt_he_cap() for non
assoc link also as it will update the intersection of ini and
fw caps
Change-Id: I6ef34723f879aead4517c28cf6cfad2fa11165fe
CRs-Fixed: 3524903