Commit Graph

3772 Commits

Author SHA1 Message Date
Arun Kumar Khandavalli
c3fd408a86 qcacmn: Deinitialize t2lm context correctly
Deinitialize the t2lm context so that locks/timer will get
freed correctly.

Change-Id: I392f5c89f5c144413ed6144f499fadf054c547c5
CRs-Fixed: 3359134
2023-01-03 09:40:24 -08:00
Asutosh Mohapatra
1ade380fc3 qcacmn: Use mac_addr pointer as constant
Use mac_addr pointer as constant in wlan_hdd_ml_sap_get_peer,
hdd_set_mld_address and use the same for consecutive APIs.

Change-Id: I3ab7b0f3c03e9175c62179029efb53fb9fe75277
CRs-Fixed: 3342115
2023-01-02 15:01:22 -08:00
Santosh Anbu
001bc02d42 qcacmn: Avoid deadlock in back to back connect for MLO
When mlo_connect is posted, mlo_dev_ctx lock is acquired.
As part of which is CM is not in init state, disconnection is posted
before processing of connect request.

In disconnect, mlo_sta_vdev_list is fetched which internally takes the
same mlo_dev_ctx lock leading to deadlock

Add fix to avoid deadlock in back to back connect handling.

Change-Id: Ic88229a7709e11edc790fb66401bb0336d8a1e27
CRs-Fixed: 3365031
2023-01-02 07:29:53 -08:00
Himanshu Batra
fcba5ea249 qcacmn: Add API with flag to validate disconnect request
In case of ml_activate_pend_disconn_req_cb, mlo_disconnect is called
which validates disconnect request. If the disconnect was deferred due
to race in mlo connect notify event and disconnect received by mlo
manager, then ml_activate_pend_disconn_req_cb will end up in a deadloop
where it will always defer any disconnect due to above race.
Hence, add API with flag to validate disconnect request.

Change-Id: Ifa434a2f2f5e7a4d17d25349cb7ab86fa50ce043
CRs-Fixed: 3361387
2022-12-29 22:06:03 -08:00
Deeksha Gupta
61aaf2474b qcacmn: Add MLD Address and no of link print in scan entry
Print MLD address and number of links info in scan entry
in case of ML AP.

Change-Id: I3ed5d1d311a9f498fae0881e3de8720d907199e1
CRs-Fixed: 3355435
2022-12-29 18:34:24 -08:00
Santosh Anbu
31a73b18df qcacmn: Avoid ml_ap_ctx access on STA vap
In scenario where mbssid is enabled (is_mbssid_enabled) on STA ML VAP,
if ML STA is trying to assoc to Non-ML AP, on freeing AID at the STA
ml_ap_ctx is referred which is not set for STA vap leading to null
pointer access.

Check for validity of ml_ap_ctx before access.

Change-Id: Ib8b924cfc035c1e3aeeb5154ef6d736aee6ba077
CRs-Fixed: 3357392
2022-12-28 11:44:09 -08:00
Himanshu Batra
fccca888fc qcacmn: Fix to avoid invalid mlo dev lock release
Fix to avoid invalid mlo dev lock release

Change-Id: I09da203114dcf8832c2e464b09f58691f52c0458
CRs-Fixed: 3368215
2022-12-28 08:12:02 -08:00
Surya Prakash Sivaraj
f8f148db6a qcacmn: Fix unwanted vdev ref release
In reg_compute_indoor_list_on_cc_change(), vdev
release is not needed if the vdev is not found.
Therefore, proceed with the loop instead of release
of the vdev reference.

Change-Id: I92c909d0f7e6e262e64e5d1dc01481dc452da194
CRs-Fixed: 3363892
2022-12-28 00:47:54 -08:00
Deeksha Gupta
f1acd4d6d6 qcacmn: Add support to get Link info from reconfig ML IE
In the driver, add support to get the Link information from a given
reconfig variant Multi-link element.

Change-Id: Ia23b26ddb4195da21c071ee5f3c198e0492ef952
CRs-Fixed: 3348524
2022-12-27 11:09:13 -08:00
Himanshu Batra
b23b9551cc 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
2022-12-27 11:09:04 -08:00
Himanshu Batra
5ea3ebf775 qcacmn: Change to handle ML reconfig link delete
Change to handle ML reconfig link delete

Change-Id: Iaf743a1a61534f2f4bb12be7fccad48e67b81c12
CRs-Fixed: 3346537
2022-12-27 11:08:54 -08:00
Deeksha Gupta
3c3a62b04b qcacmn: Add support to get MLD mac address from reconfig ML IE
In the driver, add support to get the MLD mac address from a given
reconfig variant Multi-link element.

Change-Id: I8c54f58f05a89cd5624ea5dc34b6630c06777013
CRs-Fixed: 3348125
2022-12-27 11:08:44 -08:00
Deeksha Gupta
de6b627426 qcacmn: Add support to parse reconfig ML IE
Add support to parse Reconifg ML IE and fill ml info in the scan
cache entry.

Change-Id: Ieb7ba1731d82474fbead1d6edbe1584fbdb42e0d
CRs-Fixed: 3347362
2022-12-27 11:08:35 -08:00
Chetan Kumar Sanga
176650cce4 qcacmn: Add Bitmap support for Multi-Vdev-Restart
Update MVR handlers and init to setup/use MVR bitmap
depending on bitmap MVR support by FW.

Change-Id: I3a73ddefeae85d8f6b4fc31f9c1f1164fa5346c7
CRs-Fixed: 3355001
2022-12-26 22:50:00 -08:00
Shreedhar Parande
08c3b4d0b8 qcacmn: Fix dead lock in connection completion handler
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
2022-12-26 13:37:00 -08:00
Vijay Raj
af69acd432 qcacmn: Modify ucfg_green_ap_ll_ps() api to send cookie id
In ucfg_green_ap_ll_ps() api, the cookie is not returned to hdd
layer as part of vendor command response.

Modify ucfg_green_ap_ll_ps() api, in order to return cookie id
to userspace application through hdd layer

Change-Id: I72e98fb24af986ae57216db9ae3c786486fc1173
CRs-Fixed: 3357287
2022-12-26 03:24:33 -08:00
Vijay Raj
2413e83ebd qcacmn: Add event response for green ap low latency pwer save mode
Add low latency power save mode event response for xpan
profile.

Change-Id: If3271c8a0ed649cd04b9060060706de9ec5764c1
CRs-Fixed: 3267486
2022-12-26 03:24:24 -08:00
Vijay Raj
f0578f5bdb qcacmn: Add ucfg and wmi changes for green ap low latency ps mode
Add ucfg and wmi changes to support for green ap low latency
power mode enable/disable command.

Change-Id: Ib9112e384c8354f1eff0f15610301225d51ef3ac
CRs-Fixed: 3265649
2022-12-26 03:24:14 -08:00
Qun Zhang
1eafc7e4d9 qcacmn: Return real result for setting key request
Currently in function wlan_crypto_set_key_req(), as long as
WLAN_CRYPTO_TX_OPS_SET_KEY() isn't NULL, it always returns
QDF_STATUS_SUCCESS irrespective of the real processing result
of setting key request and causes FW assert in below test:
1. DUT work as SAP role
2. Peer STA repeatedly do connect/deauth with very short
time interval
3. When SAP just finish 4-way handshake and supplicant don't
add key to wlan host yet, peer STA send deauth again. Once
deauth is received, wlan host will free peer STA related info.
Just after this, supplicant key setting is arrived, and wlan
host return QDF_STATUS_SUCCESS and wait for completion event
of key setting, like below log:
 target_if_crypto_set_key: key_type 0, mac: 7c:c2:c6:32:cb:90
 target_if_crypto_set_key: Invalid peer
4. During the waiting time, peer STA trigger connection again,
due to previous key setting isn't still done, it will block
new key setting. And when completion event timeout happen, it
will still call wma_update_set_key() to notify successful key
setting. So when wlan host send WMI_PEER_SET_PARAM_CMDID to
update authenticate state, FW find key isn't still installed
and trigger assert.

Change-Id: Ice1c5dcfbbde394e1271b900ba783fea98493647
CRs-Fixed: 3364767
2022-12-22 10:44:58 -08:00
Jianmin Zhu
4e0c4422cf qcacmn: Enable static puncture
Driver receive NL80211_CMD_START_AP to get fixed freq, width and
apply puncture_bitmap from EHT ie, disable punctured 20 MHz sub channels
in regulatory component, and send to F/W by vdev start,  update eht op/he
op/vht op in beacon template.

When start ap, apply puncture to regulatory, set is_static_punctured flag
for all 20 MHz sub channels of current bonded channel in master channel
list of pdev, and disable 20 MHz sub channel in current channel list if
is_static_punctured is set.

When stop ap, remove puncture to regulatory, clear is_static_punctured flag
for all 20 MHz sub channels in master channel list of pdev, and don't
disable 20 MHz sub channel in current channel list if is_static_punctured
is not set.

change-Id: Ia97e7a4fa56a66f343bd648b62216347787ba6d0
CRs-Fixed: 3356755
2022-12-22 10:44:46 -08:00
Himanshu Batra
826d4f9717 qcacmn: Add MLO check for connect req
If the connect req from supplicant is non-mlo, ignore mlo related
operations and continue with connect req

Change-Id: If30df0a7dc195c2cbafc60f1e4c999b0c5689998
CRs-Fixed: 3360070
2022-12-22 07:04:33 -08:00
Surya Prakash Raajen
49ca504dbd qcacmn: Maintain dp_mlo_ctxt per each MLO group
As per current design, dp_mlo_ctxt is allocated during the
initialization of module while the MLO grouping information is
understood after WMI_READY_EVENT. The same is deinitialized while
unregistering the module.
To ensure dp_mlo_ctxt exists per MLO group, bring the dp_handle
a layer below in the hierarchy into the mlo_setup_info and allocate
dp_mlo_ctxt after the WMI_READY_EVENT is received from all the SOCs
for a given group. Deallocate it after the WMI_MLO_TEARDOWN_COMPLETE
event is received.

CRs-Fixed: 3355405
Change-Id: Ic3102a34a8d44877827e2ff1f7da2e414b2b463f
2022-12-21 06:33:27 -08:00
Vulupala Shashank Reddy
faa15884e0 qcacmn: Fix FILS Discovery rx frames capture in packet capture mode
Currently the FILS Discovery rx frames are dropped in
tgt_mgmt_txrx_rx_frame_handler considering them as unspecified
packets as action category for FILS Discovery is not defined.

Define FILS Discovery action category so that the FILS Discovery
will not be considered as unspecified frames and dropped while
processing.

Change-Id: I72398caf3cbb1f7d53d5f97da9d1997af2b33595
CRs-Fixed: 3346195
2022-12-20 20:30:38 -08:00
Nidhi Jain
800dddec55 qcacmn: Registration function for link disablement
This change is to allow other modules to register for
link disablement.
It includes below functions:
1- Notify link update
2- Register to handler to get link update notification
3- Unregister T2LM handlers

Added the below changes as well,
- Move T2LM related data structures to wlan_mlo_t2lm.h file
- Host receives the expected duration from FW for multiple vdevs.
  Hence, add support to extract the expected duration for multiple vdevs.

Change-Id: Ie8e77d5d3b4351a8551ecd7da50786b58dad3b2e
CRs-Fixed: 3346432
2022-12-19 22:17:49 -08:00
Edayilliam Jayadev
d757a64784 qcacmn: Update fields of management Rx REO snapshot
Update the fields in management Rx reorder snapshot
structure.

CRs-Fixed: 3346508
Change-Id: I52e8245dfdfa40ea566756b6378a00e08993ab5c
2022-12-19 11:38:36 -08:00
Shashikala Prabhu
b723172ec9 qcacmn: Register T2LM event handlers
Register and unregister the T2LM WMI event handler.

Change-Id: I870b72618fa39c5b7ba271c5a58e3d3bbe1f44a7
CRs-Fixed: 3360463
2022-12-18 12:13:13 -08:00
Neha Bisht
f27e31059b qcacmn: Add an API to get number of station mld device contexts
Add an API to get number of station mld device contexts

Change-Id: I91bdbfda36e596b7456482f5f0480a341d4e6ed5
CRs-Fixed: 3361088
2022-12-18 05:54:30 -08:00
Aakanksha Doda
ea0e2133b3 qcacmn: Add changes to support MLO+Mesh
Add changes to support MLO+Mesh.

Change-Id: I52df040ef44846e525a1c0a1acf131cb8cac0bf2
CRs-Fixed: 3350795
2022-12-17 23:22:38 -08:00
VIJAY RAJ
8c6ace7bdb qcacmn: Add ini for Green AP low latency power save mode
Introduce  ini gGAPLowBeaconMult for Low beacon
multiplier for Green AP low latency power save mode.

Change-Id: Ifc03e1acaf640bb55e0ae3465b38762f54f0eeea
CRs-Fixed: 3264938
2022-12-15 12:40:21 -08:00
Surya Prakash Sivaraj
210ee60f2f qcacmn: Add support for SAE EXT key AKM
Add support for SAE EXT key (0x0fac18) AKM.

Change-Id: If4b493d99561360aba50e1d1a7d1e5553e84acb0
CRs-Fixed: 3355394
2022-12-14 15:46:58 -08:00
Surya Prakash Sivaraj
3c3b18baaa qcacmn: Update indoor concurrency on cc change
On every country change, the master channel list and
the current channel list is recomputed. Therefore,
recompute the indoor concurrency list on every country
change and update the list with STA interfaces operating
in the indoor channels of the new country.

Change-Id: Ia7f73820a054e0d89248f3408e2e71b2c1c41959
CRs-Fixed: 3345389
2022-12-14 11:57:34 -08:00
Edayilliam Jayadev
d81b28c2ed qcacmn: Add INI to enable/disable non MLO 11be AP operation
Add INI variable to enable/disable non MLO 11be AP operation.

CRs-Fixed: 3260964
Change-Id: Ic84859244fc30d5f7c5ccd42d4a89334dbbf4890
2022-12-14 09:51:39 -08:00
abhinav kumar
19ae8a535e qcacmn: Abort connection for next candidate if SAP stop/start is pending
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
2022-12-13 05:48:27 -08:00
Chaoli Zhou
91036d45ac qcacmn: Fix compile issue for wifi pos
Fix below compile issues:
1.error: no previous prototype for wifi_pos_get_vdev_priv_obj()
and wifi_pos_get_psoc_priv_obj().
2. error: incompatible integer to pointer conversion assigning
to 'struct wifi_pos_vdev_priv_obj *' or 'struct wifi_pos_psoc_priv_obj *'
from 'int'.
3. error: declaration of 'struct wifi_pos_osif_ops' will not be visible
outside of wifi_pos_register_osif_callbacks();

Change-Id: I6946f6240ed5adff291871c75ca85f848d955f4d
CRs-Fixed: 3356150
2022-12-12 22:35:18 -08:00
Jyoti Kumari
44b33e8326 qcacmn: Add WMI interface to configure EDCA/PIFS param
Add WMI interface(WMI_VDEV_SET_TWT_EDCA_PARAMS_CMDID) to
configure EDCA/PIFS param for LL SAP.

This configuration depends on edca_param_type.
If edca_param_type is 0 then host will configure EDCA param and
send it to firmware via WMI interface.
If edca_param_type is 0 then host will configure PIFS param and
send it to firmware via WMI interface.

Change-Id: I4f2e4120a258cc4a20aabeed503709aa2ceb8ec9
CRs-Fixed: 3349467
2022-12-12 11:49:38 -08:00
Shiva Krishna Pittala
06d17f4e3d qcacmn: Populate mlo_link_add in VDEV_START WMI command
When a VDEV is dynamically getting added to an MLD,
WLAN_VDEV_OP_MLO_LINK_ADD op flag will be set on that VDEV during its
start_ap() sequence. Use that flag to update the mlo_link_add flag in
the VDEV_START WMI command.

CRs-Fixed: 3352057
Change-Id: Ie83a15f47d5cb4e54af410ebb68567694f38ccc7
2022-12-11 23:52:19 -08:00
Shiva Krishna Pittala
11fa724d8a qcacmn: Add support to extract link removal TLVs from MGMT Rx event
To assist the Host in ML reconfiguration element construction for probe
responses, FW sends MLO link removal information as part of the MGMT Rx
event containing the corresponding probe request. This information is an
array of TLVs, one TLV for each link that is undergoing link removal from
the MLD for which this probe request is intended. The TLV carries the link
removal TBTT countdown value maintained by the FW for that link.
Add support to extract the same.

CRs-Fixed: 3335361
Change-Id: I16c6791a443ddb166da596d404a52ff2a38da291
2022-12-11 23:52:12 -08:00
Shiva Krishna Pittala
22be442546 qcacmn: Add supoprt to process WMI_MLO_LINK_REMOVAL_EVENTID
WMI_MLO_LINK_REMOVAL_EVENTID will be sent by FW to update the Host on the
progress of the link removal operation. Add support to process this event.

Change-Id: I0c4d5b047cf062b421380f85717fac5a9bdea9c2
CRs-Fixed: 3334950
2022-12-11 23:52:04 -08:00
Shiva Krishna Pittala
11dccd8fac qcacmn: Add support to extract wmi_mlo_link_removal_tbtt_update TLV
WMI_MLO_LINK_REMOVAL_EVENTID will be sent by FW to update the Host with the
progress of the link delete operation. Add support to extract the TBTT
update TLV sent in this event.

Change-Id: I01ce710d282f16e7a7cf4fb767279661558d129f
CRs-Fixed: 3322714
2022-12-11 23:51:54 -08:00
Shiva Krishna Pittala
b24b3a7e25 qcacmn: Add support to extract wmi_mlo_link_removal_evt_fixed_param TLV
WMI_MLO_LINK_REMOVAL_EVENTID will be sent by FW to update the Host with the
progress of the link delete operation. Add support to extract the fixed
params TLV sent in this event.

Change-Id: Ic42a822339363b1347ae174926a4dac19eef3f99
CRs-Fixed: 3318005
2022-12-11 23:51:45 -08:00
Shiva Krishna Pittala
c1231d0824 qcacmn: Add support to populate and send WMI_MLO_LINK_REMOVAL_CMDID
WMI_MLO_LINK_REMOVAL_CMDID is to be sent by the Host to initiate the
removal procedure for a given link from its MLD. This command will be sent
on the impacted link only. Add support to populate and send this command.

Change-Id: I8485d8c8897bb2bb891d50546d5fbfac2a69a4ce
CRs-Fixed: 3314430
2022-12-11 23:51:35 -08:00
Edayilliam Jayadev
7385e3c88a qcacmn: Enhance the snapshot invalidation logic
Enhance the snapshot invalidation by adding following conditions.

1. (FW consumed snapshot's time stamp, packet counter >= Host snapshot's
   time stamp, packet counter) || (FW consumed snapshot's time stamp,
   packet counter < Host snapshot's time stamp, packet counter).
2. (FW forwarded snapshot's time stamp, packet counter >= Host snapshot's
   time stamp, packet counter) || (FW forwarded snapshot's time stamp,
   packet counter < Host snapshot's time stamp, packet counter).

CRs-Fixed: 3341353
Change-Id: I2ddb715ded8c830b2bdbe702ce6dbfd1facec97e
2022-12-11 11:02:23 -08:00
Jianmin Zhu
2b43c860f6 qcacmn: Validate AP ML IE length before parse it
One bad AP Multi-Link IE length is 5, have no MLD addr, BSS peer MLD
addr is set as zero, connect fails, and bss peer leak happens.
DUT STA can't connect other AP any more if bss peer leak happen 2 times.
At last, if wifi is disabled, vdev delete fails for ref count leak, assert
happens.

To fix it, validate AP ML IE length before parse it, if it's actual length
is less than expected length, set ML IE as NULL, downgrade the AP to legacy
mode.

Change-Id: I7d6b27f0816f3169c8802f67b64e5561ffdde6ed
CRs-Fixed: 3351189
2022-12-09 15:50:51 -08:00
Surya Prakash Sivaraj
dda3f7844b qcacmn: Add support for AKM 24
Add support for AKM 24

Change-Id: I7bd483afbe1659c56b6708085f0bfd1e1d5dd261
CRs-Fixed: 3299891
2022-12-09 07:32:52 -08:00
Vijay Raj
af28913edf qcacmn: Modify KEK and KCK length in WMI_GTK_OFFLOAD_CMDID for AKM24
In order to support AKM24, the max length of KCK is modified to
24 bytes and KEK max length is modified to 32 bytes for
cmd WMI_GTK_OFFLOAD_CMDID.

Change-Id: Ia504a1ce92c80793fc1302fdf03b8d93471d9322
CRs-Fixed: 3305317
2022-12-09 07:32:32 -08:00
Pragaspathi Thilagaraj
489c00957c qcacmn: Fix FILS realm scan filter implementation
The FILS realm scan filter validates the fils realm
provided in connect request against the realm present in the
fils indication element. But according to the 802.11 standard
the AP can advertise the realm count as 0 and choose not
to advertise any realm ID. So the connection to that AP
fails as the BSSID gets filtered from scan results during
candidate selection due to realm mismatch.

Allow connection with FILS AP when the AP doesn't advertise
realm

Change-Id: I7fbaf27a9ba346e105af44d77318c485f55a74ab
CRs-Fixed: 3341993
2022-12-09 01:06:56 -08:00
Amruta Kulkarni
8759cf1c1e qcacmn: Add support for T2LM timer handling
Adds api's to handle t2lm timer functionality.
Api's added are timer initialize, start, stop, expiry handler.

Change-Id: If52453135921067d04f8349ece64c33cd524af00
CRs-Fixed: 3342822
2022-12-08 11:01:09 -08:00
Srinivas Pitla
3bae1f975c qcacmn: add MLME changes for ML reconfig
1) add op flags to indicate Link removal in progress
2) update API to include link removal check for ML peer create
3) add API to check whether all link peers to be deleted.

CRs-Fixed: 3341256
Change-Id: I8fabd19d3321315eb13d874a7e9b2e93392a7886
2022-12-07 16:19:21 -08:00
Amruta Kulkarni
52bd685515 qcacmn: TID to Link IE scan db changes
Change done to parse TID to Link IE in scan database.

Change-Id: I391c2f9939b43fd6bb21cd713e323ddb04e4bb79
CRs-Fixed: 3344664
2022-12-07 02:24:30 -08:00
Vinod Kumar Pirla
a780b76595 qcacmn: Introduce API to find ML peer with same MAC
Introduce an API which iterates on each MLD dev context in the
global MLO device manager and the ML peers in each dev context,
the API returns true if any entity's MLD address matches with
the MAC address received or else returns false.

Change-Id: If98fb9667b797d7d2fcfe40f66afb2a44daf4874
CRs-Fixed: 3349575
2022-12-07 00:20:30 -08:00