提交線圖

246 次程式碼提交

作者 SHA1 備註 日期
Shiva Krishna Pittala
91485c3e97 qcacmn: Don't return failure in MLO disconnect path for NULL assoc case
With MLO AP removal procedure, AP MLD can remove a link that happens to be
the assoc link for a given Non-AP MLD and the Non-AP MLD can continue to
function after that. In the existing implementation, Non-AP MLD is
returning failure in the MLO disconnect path if the assoc link is NULL, fix
the same.

Change-Id: Ib14c87da083a99f5350c9b73df2b31d08749ff0a
CRs-Fixed: 3604869
2023-09-03 14:41:13 -07:00
Abhinav Kumar
88fa8a3f0b qcacmn: Send proper control mode value to upper layer
1. Upper layer sends QCA_WLAN_VENDOR_ATTR_LINK_STATE_CONTROL_MODE
vendor command to configure control mode in host/fw.
2. Host receives GET_ML_LINK_STATE driver command to return
control mode (configured at step 1) to upper layer.

Host should reply as a response of GET_ML_LINK_STATE with same
value of control mode configured at step 1 to upper layer.

Change-Id: I3b5cb3bec31957ee8479d7f366d1e360421a7573
CRs-Fixed: 3601735
2023-08-31 11:02:29 -07:00
Amruta Kulkarni
1684c8ceac qcacmn: T2LM timer changes
Currently the T2LM timer is maintained by host.
Code change made to add support to run the T2LM timer in FW.

CRs-Fixed: 3594141
Change-Id: I7eee4800f68b07d5492a0336e3fe8e0db17d2020
2023-08-31 11:02:17 -07:00
Pragaspathi Thilagaraj
7f18f6e441 qcacmn: Update self link address also after roaming
When updating the AP link address and channel info after
roaming, update the self link address also to the link switch
context on each vdev. This information will be fetched while
sending roam + auth event to userspace after roaming.

Change-Id: I363a5ee8d65bb21d84c15879996369f4e397f2a6
CRs-Fixed: 3589401
2023-08-30 01:37:59 -07:00
Aditya Kodukula
16020acc91 qcacmn: Include structures having qdf_bitmap member
Currently kernel-doc script doesn't support qdf_bitmap
struct member. So, all structure which has qdf_bitmap
member are excluded.

Support for qdf_bitmap has been added to kernel-doc script.
So, include all structures which have qdf_bitmap.

Change-Id: I95095d458152a0285a24fba398b46effd94525db
CRs-Fixed: 3598814
2023-08-25 15:15:15 -07:00
Vinod Kumar Pirla
9e3a7ecb78 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
2023-08-21 15:05:50 -07:00
Vinod Kumar Pirla
15b56b62e4 qcacmn: Move frame control values to header file
Move the frame control values used for link specific rsp
generation to a header file to access in other source files.

Change-Id: Ib531b9ae88604e98b9119efa610757dc5f399596
CRs-Fixed: 3586052
2023-08-21 10:58:03 -07:00
Rakesh Boyina
64dc3a4199 qcacmn: Add Max ML Peer ID support from target capability exchange
Add support to parse the Max ML Peer ID's parameter received from target
capabilities and update the parameter in global MLO context.

Change-Id: I4118d288a312dc4a18182caf765b0ded014b985a
CRs-Fixed: 3556542
2023-08-18 18:11:11 -07:00
Uraj Sasan
85dafccb66 qcacmn: Handle bridge peer creation in WDS station
Handle case where device topology needs bridge peer.
So if the device have connection on two opposite links
create bridge peer on the central vap.
Sample topology:
AP
2 GHz<-->6 GHz MLO Links
STA topology
       (5 GHz Low VAP)
         chip0
      /         \
 (2 GHz VAP)chip1    chip2 (6 GHz VAP)
      \         /
         chip3
       (5 GHz High VAP)
In the above case we will have Bridge peer on either
5 GHz Low or 5 GHz High VAP

CRs-Fixed: 3575939
Change-Id: I923cc01b3c6e23099436a25565cbabab5a08d93c
2023-08-18 18:10:58 -07:00
Vinod Kumar Pirla
9319e99df8 qcacmn: Notify link switch status to FW in all error cases
Currently if host receives invalid link switch params from FW,
the request is dropped in host and reject status is not sent to FW.

Update link switch status to FW in all error cases.

Change-Id: If1ce5e30517d98c38e869baa1cfc620302b839b2
CRs-Fixed: 3588204
2023-08-17 01:39:49 -07:00
Krishna Rao
a1c589112a qcacmn: Update ML Reconfig TBTT docs and print per 11be D3.0
IEEE802.11be D3.0 has renamed the 'Delete Timer' subfield to 'AP
Removal Timer' in the STA Info field in per-STA profile in
Reconfiguration Multi-Link element. The earlier name did not correctly
reflect the AP removal operation and was a source of confusion.
Update documentation related to the erstwhile Delete Timer to indicate
the new name. Similarly, update a print related to this timer.

CRs-Fixed: 3589907
Change-Id: Ie5c9c4c8756057791095e87532e0e14bcf7ef133
2023-08-17 01:39:39 -07:00
Guru Pratap Sharma
84562049b6 qcacmn: Adding lock in epcs info structure
Adding lock in epcs info structure to achieve synchronization
in epcs state etc

Change-Id: I76b35075f2ecdfba64d4df5ea06c898f5be059e8
CRs-Fixed: 3583860
2023-08-11 14:59:35 -07:00
Amruta Kulkarni
712aff4786 qcacmn: Add check for frame boundary check in t2lm api
While parsing t2lm ie pass the frame length and add
check for frame boundary.

Change-Id: Iebb2cb5f0756785e4698613b80bfb31d60a2ed80
CRs-Fixed: 3577156
2023-08-11 04:36:05 -07:00
Pragaspathi Thilagaraj
5a0e761ce4 qcacmn: Reset Roam state for link vdev after link switch
After link switch, the assoc vdev and link vdev could change.
So once the link switch is complete, change the roam state to
DEINIT for the link vdevs

Change-Id: I3e583fc1cb5be8d17d8680dab96461b058740c0a
CRs-Fixed: 3581730
2023-08-11 01:24:31 -07:00
Uraj Sasan
082bbef13c qcacmn: WDS STATION send bridge partner details
Send bridge partner details during peer create and peer
assoc. The partner of bridge peer are saved which are used later
during bridge peer create and assoc. Also add bridge peer partner
details while sending peer create and assoc on actual links.

CRs-Fixed: 3574656
Change-Id: I755614a131f6552ac28377d2c7648db4fd87b8df
2023-08-10 18:22:50 -07:00
Aasir Rasheed
33f9c6eb46 qcacmn: Fix typographical errors
Currently, the host driver interprets an active link
status as 0 and an inactive link status as 1.
To comply with updated requirements, the change will
switch active links to be represented as 1 and inactive
links as 0, aligning with the correct status interpretation.

Change-Id: I5342e85106b4623ed4c79a4841884bfa8cd9d638
CRs-Fixed: 3581454
2023-08-09 17:26:11 -07:00
Srinivas Pitla
4251e4ac67 qcacmn: Add/Remove VDEV from MLD
This change adds APIs
1) remove VDEV from MLD
2) add VDEV to MLD

CRs-Fixed: 3579048
Change-Id: I5a81d7a50b0c3865c3ab914a3e10906e3010cb91
2023-08-08 06:10:53 -07:00
Rahul Gusain
ba9a0f4a3d qcacmn: Add EMLSR caps in ML STA context
Currently, driver extracts EMLSR caps info from association response
for assoc vdev but this info is not present in link vdev.
Thus, driver should cache this EMLSR caps info in ML STA context while
extracting for assoc vdev and use these values for link vdev.

So, for this, add EMLSR caps struct in ML STA context.

Change-Id: I0ecf32ed4af9fb07624498f2753c12c5420edec1
CRs-Fixed: 3578371
2023-08-07 16:29:14 -07:00
Liangwei Dong
796501841d qcacmn: Add link removal flag in link info struct
Previously, the link removal state is in vdev object, but
the standby link has no vdev and vdev maybe repurposed
to other link, so link removal flag has to be in link info
struct to record the link removal state of corresponding link.

Change-Id: I435a8910897b099cffcccb0e435b70efb896eb8a
CRs-Fixed: 3572873
2023-08-04 06:53:48 -07:00
Shreedhar Parande
15f840d145 qcacmn: Create bridge peer under bridge vdev
Create and attach bridge peer under bridge vdev for 4-link
MLD.

If there are no bridge VDEVs, fall back to existing mechanism.

Change-Id: I32187bcc849fbe36200967bb7f88dfa56c22c3dc
CRs-Fixed: 3574491
2023-08-03 10:03:49 -07:00
Vinod Kumar Pirla
35ea97c560 qcacmn: Enhancements for link switch connect
Introduce following for link switch disconnect:
    1) Connect request source.
    2) Connect request reason.

If the set MAC address response for new link is successful, post
connection on new link and transition the link switch state to
connecting. If the status of connection is successful, update
the state to link switch complete or else directly go for
deserializing link switch command and posting response to FW.

Based on the final state of link switch at the time of sending
FW response, send the appropirate status of link switch and reset
the state of link switch to idle post FW notify.

Don't unlink BSS incase of failure in connection.

Don't indicate connect results to userspace.

As we are already in serialization due to link switch,
don't serialize/deserialize connection command if it
is due to link switch.

Incase of race condition between link switch connect and
userspace connect/disconnect always abort link switch connect.

Change-Id: Ie350b52021c36802b82d6cb5f6f441fe1bd10458
CRs-Fixed: 3556529
2023-08-02 04:55:17 -07:00
Vinod Kumar Pirla
a61df6019c qcacmn: Update VDEV MAC addr after link switch disconnect
After receiving link switch disconnect completion indication
from connection manager, update the VDEV's MAC address to new
link's address to support link specific OTA frames exchange.

Introduce new dispatcher API to call from VDEV MLME, if the
VDEV for which MAC address response received is in link
switch in progress, then deliver the response to MLO mgr,
or else deliver it directly to OSIF.

Handle the FW response for link switch set MAC address in
MLO manager and if the set MAC addr response is successful,
update OSIF about the new MAC address to perform cleanup on
old link and initialize fields in new link.

If the response is successful, transition the link switch to
initiate connection or else abort link switch.

Change-Id: Ic330dca84e602909cc5ddf7e134809c0e0345a17
CRs-Fixed: 3556506
2023-08-02 04:54:52 -07:00
Vinod Kumar Pirla
b41d140574 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
2023-08-02 04:54:41 -07:00
Vinod Kumar Pirla
cbf4cdb23c qcacmn: Link Switch start notifier callback registration
Move the MLO MGR in UMAC to core and dispatcher directories.
Introduce function prototype of callback and provide
dispatcher API for components interested in link switch
to register callback.
Introduce API to register and unregister callback for
link switch.

Change-Id: I14a64f61ab1269f1d46b7aff03d20b820d1cd8d9
CRs-Fixed: 3556465
2023-08-02 04:54:30 -07:00
Liangwei Dong
adb0ec3b16 qcacmn: Fix duplicate process of link set event
Add flag in event response struct to indicate event processed
or not.
Use scheduler thread to process set link active event same as
other link switch and vdev event to avoid race condition.

Change-Id: I963f9106e296a59cff5078c85a4accf63c7026dc
CRs-Fixed: 3572868
2023-08-01 09:38:15 -07:00
Liangwei Dong
5a23527cfd qcacmn: Extract current active/inactive link bitmap
FW will report current active/inactive link bitmap for
each set link command. Extract them and save to respone
data struct.

Change-Id: I8513391fbf3b181c6182d6568d0ce8e83c627bc6
CRs-Fixed: 3564785
2023-07-31 23:55:45 -07:00
Vinod Kumar Pirla
af6cf93a07 qcacmn: FW Link switch request event handler and cnf resp
Once the FW sends the link switch request to host handle
the request from scheduler thread and send confirmation
back on completion of link switch process with status of
link switch (success/failure).

Add new serialization command type for link switch.

Introduce flags to get the current state of link switch
request, set the state to idle when no link switch in
progress or once the current link switch is completed.
Access to state is protected with MLO dev context lock.
Implement various helper API to:
    a) Transition link switch to next state.
    b) Get current state of link switch.
    c) To check whether any link switch is in progress.
    c) To check whether link switch is happening
       on assoc VDEV or not.

Introduce a new VDEV flag to suggest the VDEV is in
link switch process and also implement helper APIs to
set/get/clear this VDEV flag.
   a) The flag is set at start of link switch, once
      the FW request params are validated and before
      proceeding for link switch disconnect on VDEV.
   b) Clear the flag once the Link switch confirmation
      is sent to FW.

Validate the link switch request params:
     a) IEEE link ID's received.
     b) Check if new connection is part of MLO connection.
     c) Check if VDEV is MLO STA VDEV or not.
     d) Is VDEV in connected state or not, that means
        VDEV is not in transitioning state due to disconnect.
     e) Check if any link switch in progress on this MLD
     f) Current link ID of VDEV equals the FW params.

If validation is successful, serialize the link switch
command and in the serialization activation start the
actual link switch process.

Change-Id: Ie582650541054c8cf39aaa8316e86a7a40256a15
CRs-Fixed: 3556422
2023-07-31 19:38:48 -07:00
Shreedhar Parande
b4db727551 qcacmn: Add API for bridge vdev handing
Add APIs to populate, destroy and get bridge vdev count.

Also send bridge VDEV details in partner link info via
VDEV START command to target.

Change-Id: Iea155b09051b6724d07cf2b6052a07c1d3beb7e8
CRs-Fixed: 3567098
2023-07-30 22:45:14 -07:00
Uraj Sasan
329a080940 qcacmn: Add bridge sta link id
Store linkid used by vdev in bridge sta ctx

CRs-Fixed: 3562149
Change-Id: Ib6550b65abfaae71c7f021640fa3f93bc1ad967c
2023-07-30 19:07:56 -07:00
Uraj Sasan
2fce323cb6 qcacmn: API's to check topology and total links
1. APIs to check topology to see if the bridge vap/peer will be used.
2. API to check the max number of links supported.

Also check if we can have the primary and assoc links to be different
for WDS STATION. Based on the topology allow/block
connection to a particular AP.

CRs-Fixed: 3562149
Change-Id: Icf3b32036199f39b0d567ac88795dc07760ac1a5
2023-07-30 19:07:45 -07:00
Aasir Rasheed
8f15871d98 qcacmn: Use WLAN_MAX_ML_BSS_LINKS to check max number of links
Currently, We are using WLAN_MLO_MAX_VDEVS to check
max number of links, However with n link mlo we need
WLAN_MAX_ML_BSS_LINKS to check max number link.

Change-Id: Idd8a96ae80030c813bbdcebcdc4c76d2f93bea5d
CRs-Fixed: 3567342
2023-07-28 05:33:05 -07:00
Shreedhar Parande
10000aedc1 qcacmn: Add API to get primary VDEV from ML peer
Add API to get primary VDEV using primary link peer.

Change-Id: I309070bf33bdae017f174b00ae5eea3d34292a97
CRs-Fixed: 3570511
2023-07-26 21:25:03 -07:00
Vinod Kumar Pirla
160f06923c qcacmn: Call OSIF callback to update BSS info on each link
Notify OSIF about each connected link once assoc VDEV connection
is completed, call the ops callback registered while filling
kernel data structure for each link.

Earlier post connection each VDEV's OSIF callback is called to notify
individually, but this leaves the OSIF unaware of standby link details
as the standby link doesn't have VDEV associated with it.

Change-Id: I027b91d02bdc4412400a7e66f11911da149e672b
CRs-Fixed: 3556378
2023-07-26 10:53:07 -07:00
Vinod Kumar Pirla
1049b376f7 qcacmn: Introduce OSIF ops callback handler pointers
The ops are called on BSS info to be updated to OSIF and
to call for MAC address update on particular VDEV

Change-Id: Ib7b07e6ea2927c365298555ed6f24377127ddd4a
CRs-Fixed: 3556338
2023-07-26 10:52:56 -07:00
Shreedhar Parande
5daab8f6cd qcacmn: Add APIs to get EML and STR capabilities from ML Peer
Add APIs to retrieve eMLSR, eMLMR and STR capabilities of
connected non-AP MLD.

Change-Id: I1c4b11cfebef6a9b315baf9044355caab1b112de
CRs-Fixed: 3525298
2023-07-25 15:22:25 -07:00
Balaganapathy Palanisamy
9d048b9e4d qcacmn: Add MLO bridge vdev APIs
Add MLO bridge vdev APIs to support 4 chip
RDP STA associations.

Change-Id: Iea4c4e3301bc29d470144d5ae0964bb80f2ae68d
CRs-Fixed: 3560194
2023-07-25 03:19:04 -07:00
Guru Pratap Sharma
25d2ff265a qcacmn: Adding lock in case of epcs context
Adding lock in case of epcs context to achieve mutual exclusion

Change-Id: Ib3e99b5f39eca01c62d32927942e99958320007a
CRs-Fixed: 3568561
2023-07-25 00:19:15 -07:00
Aasir Rasheed
a78a9c13e0 qcacmn: Remove unnecessary code
This change is to remove unnecessary
code. Earlier this change was required for
partner link.
Change-Id: I8a217d3e81d395ae2eaf3d7b1641af83f3e95526
CRs-Fixed: 3565193
2023-07-21 16:50:34 -07:00
Venkateswara Swamy Bandaru
ba8e167b7a qcacmn: Add API get vdevs of peer
Add API to get vdevs per link of MLO peer.

Change-Id: I02aab17424b1f6b98868347291de98f082b267a5
CRs-Fixed: 3560163
2023-07-20 01:12:05 -07:00
Deeksha Gupta
9b7258ffff qcacmn: update mlme info for standby link
update  AP link information for standby link.

Change-Id: Ie5ff52e2ecea4548f738965efcfee54e08f63eb5
CRs-Fixed: 3530713
2023-07-18 12:50:10 -07:00
Shreedhar Parande
3177c12082 qcacmn: Define new list for bridge VDEVs
Declare new list to hold bridge VDEVs in MLD context.

Change-Id: I0cfe563708462faca272f9e7d4c8489a8fd9dfc0
CRs-Fixed: 3554509
2023-07-18 09:51:59 -07:00
Shreedhar Parande
86ee88bd0d qcacmn: Send bridge peer flag to target
Add and send bridge peer flag to fw.

Change-Id: I15ab04a8646975ad4cc85a66b632f85e359a9158
CRs-Fixed: 3554509
2023-07-18 09:51:47 -07:00
Himanshu Batra
444fa57930 qcacmn: Add force flag support for PTQM migration
Add force flag support for PTQM migration.
This flag will be used to allow migration to vdevs which are not
allowed to be selected as primary by using the ini config.
This will be helpful in scenarios where if the current primary link is
going down and peer ptqm needs to be migrated but the partner links of
that mld are the user disabled links for ptqm.
Also add skip_pumac_cnt to mark a link to be skipped from being selected
as new primary

Change-Id: Ia8c7881f37d32211a732c5c7394c4a608099b62a
CRs-Fixed: 3548552
2023-07-14 01:12:15 -07:00
Deeksha Gupta
a886fa16eb qcacmn: Add new API to reset AP link info from mlo_mgr
Add new API to reset AP link info from mlo_mgr.

Change-Id: I806859456a435ba09b0def26ca58fe04759d04f5
CRs-Fixed: 3530707
2023-07-13 11:24:58 -07:00
Deeksha Gupta
2799299d9e qcacmn: send ml_partner info during assoc vdev peer assoc cmd
Send ml_partner info during assoc vdev peer assoc cmd

Change-Id: Icd69a513dbaeed7ca334a8627fb4b8a9b28d01c3
CRs-Fixed: 3530674
2023-07-13 11:24:47 -07:00
Arun Kumar Khandavalli
0ef7402a2b qcacmn: Link switch initial checkin
Add new file wlan_mlo_mgr_link_switch.h and .c
which contains MLO manager public file containing
link switch functionality.

Change-Id: I2bce76e7de09a1c9ba4a4cdd83855db41166739b
CRs-Fixed: 3530571
2023-07-12 19:03:47 -07:00
Himanshu Batra
fe2cdfb7a9 qcacmn: Modify failure handling of PTQM migration WMI command
In PTQM migration WMI command, multiple peer entries can be sent.
If the number of entries are more than WMI buffer size limit, then
multiple WMI commands are sent. If there are some WMI PTQM cmd sent
successfully followed by a failure, reset peer flags only the failed
entries instead of all the entries

Change-Id: I1031f1ac700e05e651a2488827cb6b6cda195bac
CRs-Fixed: 3556179
2023-07-12 07:49:07 -07:00
Sai Rupesh Chevuru
219a541da6 qcacmn: API to get the bridge peer
API to get the bridge peer if available

Change-Id: Ib93df6f95ad4bff4cb628be637799a5b40d20272
CRs-Fixed: 3552648
2023-07-10 12:14:02 -07:00
Himanshu Batra
6ebded7a71 qcacmn: Use qdf_list APIs instead of TAILQ APIs
Use qdf_list APIs instead of TAILQ APIs.

Change-Id: Ie82fe6450013838f4125073d1f9a6da41b8516ed
CRs-Fixed: 3545385
2023-07-03 12:54:05 -07:00
Liangwei Dong
7280363bff qcacmn: Add force link state API by link id bitmap
Add send_mlo_link_set_active_id_cmd_tlv API to send
force link bitmap to target.

Change-Id: Ie3a41bd2c82b6d10c8d82e4afa83621969c01798
CRs-Fixed: 3515441
2023-06-28 05:05:18 -07:00