Revision Date Author Comments
# eaf52f45 18-Jun-2024 Jianmin Zhu <quic_jianminz@quicinc.com>

qcacmn: Fix RSO stopped after roam from MLO to SLO

When roamed from MLO to SLO, clean up vdev1 link, and disable RSO,
but RSO isn't re-enabled when disconnect completed for vdev0 link in
same MLD ex

qcacmn: Fix RSO stopped after roam from MLO to SLO

When roamed from MLO to SLO, clean up vdev1 link, and disable RSO,
but RSO isn't re-enabled when disconnect completed for vdev0 link in
same MLD existed, can't roam until next reconnect.

To fix it, When roamed from MLO to SLO, clean up vdev1 link, don't
disable RSO since it's internal disconnect, no wmi like vdev stop is
sent to F/W too, vdev1 is stopped by F/W already.

Change-Id: Ib83b15352e91cb8ef73fd42bc9a5e1c6181f4ea9
CRs-Fixed: 3844460
(cherry picked from commit ecbd818bb610eea4358b713f9c64c131ec612a8a)

show more ...


# b47081bd 17-Jun-2024 Jianmin Zhu <quic_jianminz@quicinc.com>

qcacmn: Send RSO stop to assoc vdev before link vdev stop

RSO stop isn't sent to F/W before link vdev stop when MLO
disconnect, F/W will assert later

To fix it, Send RSO stop to assoc vdev before l

qcacmn: Send RSO stop to assoc vdev before link vdev stop

RSO stop isn't sent to F/W before link vdev stop when MLO
disconnect, F/W will assert later

To fix it, Send RSO stop to assoc vdev before link vdev stop when MLO
disconnect.

RSO stop for internal link cleanup has no side effect, only RSO disable
clears the RCL in firmware.

Change-Id: Id11da42ebebf0d9966974cc913cf6618cea0cfbb
CRs-Fixed: 3835214
(cherry picked from commit b03b971b86c533a19b563c6ab706592248f236f2)

show more ...


# 63ba7afb 28-May-2024 Pragaspathi Thilagaraj <quic_tpragasp@quicinc.com>

qcacmn: Complete disconnect sequence during HO failure

For MLO link vdev, during HO failure the disconnect sequence
is not completed resulting in disconnect command timeout.

Proceed to complete the

qcacmn: Complete disconnect sequence during HO failure

For MLO link vdev, during HO failure the disconnect sequence
is not completed resulting in disconnect command timeout.

Proceed to complete the disconnect sequence if RSO stop is
not sent in case of HO failure disconnect handling of the
MLO link vdev.

CRs-Fixed: 3825174
Change-Id: I5e7984928a8d175ae13e344dd442d868a0171e2d

show more ...


# d3ac1050 01-Apr-2024 Pragaspathi Thilagaraj <quic_tpragasp@quicinc.com>

qcacmn: Send RSO stop during HO failure disconnect

RSO stop is skipped if disconnect reason is
REASON_FW_TRIGGERED_ROAM_FAILURE. It was done to avoid RSO stop
command for internal disconnect. But fo

qcacmn: Send RSO stop during HO failure disconnect

RSO stop is skipped if disconnect reason is
REASON_FW_TRIGGERED_ROAM_FAILURE. It was done to avoid RSO stop
command for internal disconnect. But for HO failure also
same reason code is used with different source value.
In HO failure case firmware expects RSO stop and
roam deinit. Disconnect should continue after RSO stop response
is received.

Send RSO stop during HO failure disconnect.

CRs-Fixed: 3756884
Change-Id: Ia0300f3cf9f260c894a98845447885f62a67c8c3

show more ...


# d2815cb9 11-Jan-2024 Vinod Kumar Pirla <quic_vpirla@quicinc.com>

qcacmn: Remove serialization command priority on HO fail

On HO failure driver triggers internal disconnect and if
the existing connection is two link MLO, then disconnect
is issued first on partner

qcacmn: Remove serialization command priority on HO fail

On HO failure driver triggers internal disconnect and if
the existing connection is two link MLO, then disconnect
is issued first on partner VDEV and later on assoc VDEV.

To avoid STA+STA roaming conflict where STA2 roamed to
STA1's BSSID and STA1 resulted in HO failure and to
prioritize STA1 cleanup so that STA2 will not fail during
peer create.
The original change I379c03138b70580f44c2b96489ada030ec6fc20e

This is leading to cleaning up assoc VDEV first followed by
partner VDEV, but DP component removes the entry of DP peer
on assoc VDEV cleanup as the expectation is partner VDEV
gets cleaned first followed by assoc VDEV. This is causes
reference leak on the peer.

To address this issue don't prioritize disconnect for
HO Fail case.

Change-Id: I8d5abd0bb5ded49527ce851b9155ad22d7dcf5a8
CRs-Fixed: 3708018

show more ...


# f4b53caa 11-Dec-2023 Asutosh Mohapatra <quic_asutmoha@quicinc.com>

qcacmn: Handle ho failure for STA + STA roaming

Currently for STA + STA case, consider the below scenario:
1. Roam start received on vdev 2 & vdev 0. Vdev 2 roam
serialization command becomes act

qcacmn: Handle ho failure for STA + STA roaming

Currently for STA + STA case, consider the below scenario:
1. Roam start received on vdev 2 & vdev 0. Vdev 2 roam
serialization command becomes active and vdev 0 roam
command is on the pending queue.
2. HO failure with AP0 received on vdev 2. This dequeues
the vdev2 roam serialization command. Vdev0 roam command
becomes active.
3. Roam synch indication received on vdev0 with peer AP as
AP0 (which is the peer on vdev 2). So duplicate detection
logic prevents same peer creation, so roam synch fails but
its not indicated properly to firmware. This leads to
disconnection of both the STAs.

To address the issue, first enqueue disconnect with high
priority set before removing roam command from serialization
so disconnect gets activated if roam was active for the
vdev.
Also while processing roam synch indication, check if peer is
found on different STA and send roam stop to fw so fw also
cleans up and initiates HO failure.

Change-Id: I379c03138b70580f44c2b96489ada030ec6fc20e
CRs-Fixed: 3686660

show more ...


# 4bf1baae 25-Oct-2023 Vinod Kumar Pirla <quic_vpirla@quicinc.com>

qcacmn: Include PID in SM history

Add PID name where SM events and transition
happened to help debug issues where the info
about which task started a certain event to
happen are crucial to rootcause

qcacmn: Include PID in SM history

Add PID name where SM events and transition
happened to help debug issues where the info
about which task started a certain event to
happen are crucial to rootcause the problem.

Change-Id: I208b46c6d0ec725ab0d9713bf2dd562c40719a24
CRs-Fixed: 3624811

show more ...


# 0d9d0c46 05-Oct-2023 Santosh Anbu <quic_sanbu@quicinc.com>

qcacmn: Initialize struct before using

Add change to initialize all members of the struct, as one of the member
is not updated in the callee function.
Coverity issue fix.

Change-Id: Ic0c2d70fa540fd

qcacmn: Initialize struct before using

Add change to initialize all members of the struct, as one of the member
is not updated in the callee function.
Coverity issue fix.

Change-Id: Ic0c2d70fa540fd81ae9094e49c2240ebd9b691b5
CRs-Fixed: 3632788

show more ...


# b1f923bc 21-Sep-2023 Vinod Kumar Pirla <quic_vpirla@quicinc.com>

qcacmn: New substate for VDEV in INIT due to link switch

If connection fails, CM state will be moved to INIT state and
kernel will not be made aware of this connection failure in case
of link switch

qcacmn: New substate for VDEV in INIT due to link switch

If connection fails, CM state will be moved to INIT state and
kernel will not be made aware of this connection failure in case
of link switch and treats the interface as if it is connected.
In such case kernel and host will be out of sync and because of
this if any disconnect request is received host will drop them
immediately as VDEV is in INIT state.

Introduce new substate of VDEV for INIT state. If VDEV moves to
INIT state either due to link switch disconnect or link switch
connect failure, instead of being in INIT-IDLE state move VDEV
to INIT-IDLE_DUE_TO_LINK_SWITCH. If any disconnect request is
received in INIT-IDLE_DUE_TO_LINK_SWITCH state then instead of
dropping the request forcefully queue the disconnect and proceed
for disconnect to notify kernel.

Drop link switch connect will be dropped if VDEV is not in
INIT-IDLE_DUE_TO_LINK_SWITCH state.

Change-Id: Ifb6b72f0720b95cf862e9a4ff756b6577a3e45fd
CRs-Fixed: 3617919

show more ...


# 7fd1499c 04-Sep-2023 Abhinav Kumar <quic_abhikuma@quicinc.com>

qcacmn: Don't issue RSO stop in case of MLO roam internal diss

In case when DUT Roamed to single link MLO, Driver triggers MLO
roam internal disconnection wlan_cm_disconnect() with reason
"REASON_FW

qcacmn: Don't issue RSO stop in case of MLO roam internal diss

In case when DUT Roamed to single link MLO, Driver triggers MLO
roam internal disconnection wlan_cm_disconnect() with reason
"REASON_FW_TRIGGERED_ROAM_FAILURE" and source
CM_MLO_ROAM_INTERNAL_DISCONNECT on second link
for internal cleanup without informing the FW.
In this case, If Host issue RSO stop command to FW, RCL get
clean up in FW.

Fix is to avoid issuing RSO stop in cm_disconnect_active() if
source = CM_MLO_ROAM_INTERNAL_DISCONNECT and roam reason =
REASON_FW_TRIGGERED_ROAM_FAILURE.

Change-Id: I13ae95114f2a3134b39b3db7fefc6a24c408c484
CRs-Fixed: 3577024

show more ...


# 9e3a7ecb 17-Aug-2023 Vinod Kumar Pirla <quic_vpirla@quicinc.com>

qcacmn: Allow disconnect req in INIT state for link switch

VDEV is moved to INIT state as part of link switch disconnect,
before set MAC address response is received, any disconnect
request on this

qcacmn: Allow disconnect req in INIT state for link switch

VDEV is moved to INIT state as part of link switch disconnect,
before set MAC address response is received, any disconnect
request on this VDEV will not be handled as VDEV is in INIT
state, if link switch is in progress then it will abort link
switch and starts link switch dequeue process.

If the new disconnect request is from userspace it will
increment the OSIF ops, but if link switch is on assoc VDEV
OSIF is notified to restore the adapter deflink as part of
link switch complete where it wait for all OSIF ops to
complete. This is a deadlock case where driver is waiting
for ops completion on same thread where ops is initiated.

To fix this issue, do not handle link switch dequeue on the
same thread, instead move the link switch state to abort
and when actual link switch thread comes it will flush from
serialization.

If userspace disconnect is not queued as VDEV is in INIT
state due to link switch, kernel won't be notified about
the disconnect as this notification is only done on assoc
VDEV and any further connect requests from supplicant gets
dropped in kernel saying already connected and supplicant
will immediately try disconnect which driver will again
drop as VDEV is in INIT state. To avoid this kernel-driver
out of sync, forcefully move VDEV to disconnecting state
and queue the disconnect request.

Change-Id: I116859601ebba21d44797e74e160b56532ef833c
CRs-Fixed: 3588936

show more ...


# b41d1405 05-Jul-2023 Vinod Kumar Pirla <quic_vpirla@quicinc.com>

qcacmn: Enhancements for link switch disconnect

Introduce following for link switch disconnect:
1) Disconnect source.
2) Disconnect reason.
3) Link switch BIT in CM_ID to identify link swit

qcacmn: Enhancements for link switch disconnect

Introduce following for link switch disconnect:
1) Disconnect source.
2) Disconnect reason.
3) Link switch BIT in CM_ID to identify link switch request

Don't notify link switch disconnect to initiate disconnect on
other connect VDEV of MLO mgr.

Don't notify userspace if the disconnect request is due to
link switch.

Don't notify netdev to stop queues on link switch disconnect.

Don't flush any pending disconnect/connect request on complete
of link switch disconnect request.

Don't attempt to serialize/deserialize disconnect command
if it is a link switch command ID due to either disconnect request,
disconnect complete or disconnect request flush.

Before start of link switch set the VDEV flag as MLO link VDEV
to leverage the disconnect/connect checks for link VDEV and
restore the flag at the end of link switch. This will impact
when link switch on assoc VDEV is received for which initially
the flag is not set.

Check status of link switch disconnect done API to either
proceed further in link switch or terminate the link switch.
If any userspace disconnect and link switch disconnect race
condition, always abort link switch disconnect and notify
failure to FW.

Change-Id: I6ec2a850d49f5ec6df2ec868c290f19203cd8c88
CRs-Fixed: 3556481

show more ...


# 9b7258ff 08-Jun-2023 Deeksha Gupta <quic_deegupta@quicinc.com>

qcacmn: update mlme info for standby link

update AP link information for standby link.

Change-Id: Ie5ff52e2ecea4548f738965efcfee54e08f63eb5
CRs-Fixed: 3530713


# b22f3252 12-Jun-2023 Abhishek Singh <quic_absingh@quicinc.com>

qcacmn: Fix connection manager logs by adding CM_PREFIX_FMT

Fix connection manager logs by adding missing CM_PREFIX_FMT.

Change-Id: I043bf571006279dfcbec70e1d4fac564d6a20b6b
CRs-Fixed: 3527590


# c847ddd9 08-Mar-2023 Vinay Adella <quic_vadella@quicinc.com>

qcacmn: Clear partner link state before starting to connect

This is needed in case the STA is configured with more MLO links
than the AP. It will make sure only links that the AP allows
are in use i

qcacmn: Clear partner link state before starting to connect

This is needed in case the STA is configured with more MLO links
than the AP. It will make sure only links that the AP allows
are in use in the STA MLO as well.
Also check for mlo flag on vdev before sending link connect and
updating partner bitmap.

CRs-Fixed: 3423668
Change-Id: Iceec3cf7e8dc7e5bc0a29c56b990faef4f741158

show more ...


# b2e038a2 02-Mar-2023 Jianmin Zhu <quic_jianminz@quicinc.com>

qcacmn: Fix mlo assoc vdev disconnect before link dev issue

Assoc dev disconnect happened before link vdev for following sequence
1) SB disconnect followed by NB disconnect.
2) SB disconnect queue d

qcacmn: Fix mlo assoc vdev disconnect before link dev issue

Assoc dev disconnect happened before link vdev for following sequence
1) SB disconnect followed by NB disconnect.
2) SB disconnect queue disconnect on both link and assoc same time.
3) NB disconnect queue link disconnect first and wait for it to complete.

Fix in mlo_sync_disconnect by using sync API only for assoc vdev, for link
vdevs, let the non-sync API post the disconnect, thus all disconnect goes
in 1 instance and wait for assoc disconnect (last) to complete, similar to
SB disconnect.
With this both vdev1 and vdev0 disconnect will be queued at same time, thus
maintain the sequence.

Also optimize the wait time of the assoc vdev in
cm_disconnect_start_req_sync, to include all link disconnect time as well
(DISCONNECT_TIMEOUT * 2 + 5000).

Flush old disconnect only for non-MLO and assoc link, do not flush for link
vdev.

Change-Id: Ibaf4051d6e06a8e8354571e87883ac72b6ac07f0
CRs-Fixed: 3420508

show more ...


# 2cd3406a 05-Sep-2022 Amruta Kulkarni <quic_amrukulk@quicinc.com>

qcacmn: Add handling 1x roaming case

- Add osif callback api to get scan ie params
- Made few mlo manager api's public

CRs-Fixed: 3288038
Change-Id: I15a764682b8164eb1b66adeff44d7e344f2563c3


# b23b9551 16-Dec-2022 Himanshu Batra <quic_hbatra@quicinc.com>

qcacmn: Changes to handle dynamic link add for non-AP MLD

Changes to handle dynamic link add for non-AP MLD.
Also add change to clear mlo cap for link removal of vdev.

Change-Id: I47e0bb77b7f32296e

qcacmn: Changes to handle dynamic link add for non-AP MLD

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

show more ...


# a4660a05 28-Nov-2022 Paul Zhang <quic_paulz@quicinc.com>

qcacmn: Fix race condition of mlo disconnect/connect

Currently, link vdev is triggered to connect process
after assoc vdev connects successfully in function
mlo_send_link_connect. If osif_cm_disconn

qcacmn: Fix race condition of mlo disconnect/connect

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

show more ...


# 1aaeca79 18-Nov-2022 Jianmin Zhu <quic_jianminz@quicinc.com>

qcacmn: Fix link peer is deleted before assoc peer

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

qcacmn: Fix link peer is deleted before assoc peer

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

show more ...


# 6d26ba1f 30-Sep-2022 Jeff Johnson <quic_jjohnson@quicinc.com>

qcacmn: umac: mlme: Fix misspellings

Fix misspellings in umac/mlme/...

Change-Id: I3d9a890676ab15e250e283727b23bea6d10320e1
CRs-Fixed: 3304698


# 4b20a115 19-Sep-2022 Liangwei Dong <quic_liangwei@quicinc.com>

qcacmn: Fix scan entry assoc state update issue

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

qcacmn: Fix scan entry assoc state update issue

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

show more ...


# be121546 08-Sep-2022 Srinivas Dasari <quic_dasaris@quicinc.com>

qcacmn: Synchronize disconnect in RSO stop req-resp path

Host driver sends RSO stop request to firmware as part of
disconnect and waits for RSO stop response. It pauses the
disconnection and resumes

qcacmn: Synchronize disconnect in RSO stop req-resp path

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

show more ...


# 65f2d8d0 25-Jul-2022 Liangwei Dong <quic_liangwei@quicinc.com>

qcacmn: Fix MLO flag lost on assoc vdev during link vdev disconnecting

When the disconnect is pending in CM for assoc vdev, new disconnect request
will flush and clear the MLO flag by cm_notify_disc

qcacmn: Fix MLO flag lost on assoc vdev during link vdev disconnecting

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

show more ...


# 46468556 09-Jun-2022 David Oladunjoye <quic_doladunj@quicinc.com>

qcacmn: umac: Replace fallthrough comment with attribute

-Wimplicit-fallthrough is being enabled by default. Some compilers
such as clang require the attribute instead of just a fallthrough comment.

qcacmn: umac: Replace fallthrough comment with attribute

-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

show more ...


1234