During link add, since the vdev would be down, it won't have scan
entries.
Hence, remove scan entry search from link add API
Change-Id: Ifd45b546124739e6c31b2a3691cdb90a3f624ecf
CRs-Fixed: 3377283
- To invoke the API wlan_send_tid_to_link_mapping from other
files, change its static definition and add a function
declaration.
- Remove repetitive logging of T2LM params in
wlan_mlo_parse_t2lm_info API.
- HMT STA host needs to send T2LM mapping info to FW only
on one peer instead of both peers in case of WKK.
Thus, add new API under MCC flag to address this issue.
The original changes will remain under else case.
Change-Id: I2495fddca7dc5da253a6d10ab41b70cf7f627156
CRs-Fixed: 3373326
- Replace T2LM array in wlan_t2lm_context structure with established_t2lm
and upcoming_t2lm structures
- Mapping switch time is different for each AP vdevs. Hence, store the
value in vdev_mlme_proto_ap structure.
- Fix a few issues seen in mapping switch time expiry and expected duration
expiry.
Change-Id: Id69badc3f4bf5e5e741691348488369008ffc4e9
CRs-Fixed: 3369279
In MLO scenario where start response for partner ML AP vdevs are
processed simultaneously on different CPU cores, the order in which
the vdev sm lock is acquired may lead to deadlock.
To fix add change to dispatch the MLO_SYNC_COMPLETE under mlo_dev_ctx.
Change-Id: I86ef51fcc8d51277163fcc5a6afdee6d873f2e63
CRs-Fixed: 3368033
Add API to check state of all mlo vdev to avoid roaming and disconnect
race issue.
Change-Id: Idc9a9a57f433aeff185fe78826faa84e08c09ddb
CRs-Fixed: 3372132
Add support for mlo groups in mlo soc/link setup and teardown
sequence participating in mlo.
Change-Id: I2b431b0ee1e5816b92ad183b52ad2998eb5bb46c
CRs-Fixed: 3343170
Non-assoc link might be superior in features compared to assoc
link and the per-STA profile info may carry corresponding IEs.
These IEs are extracted and added to IE list of link probe
response while generating it. So, the link probe response
generated from assoc link probe response might be of more size
than assoc link probe rsp. It's caller responsibility to allocate
buffer for the derived scan entry considering the copied IEs from
ML per STA profile.
Add a check to validate the available buffer while copying the
ML IE (as it's copied after deriving IEs from per STA profile) as
this is missing currently.
Change-Id: Ieafc9730ad098abb80fb1f3c14eb22b6b590ff20
CRs-Fixed: 3364159
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
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
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
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
In the driver, add support to get the Link information from a given
reconfig variant Multi-link element.
Change-Id: Ia23b26ddb4195da21c071ee5f3c198e0492ef952
CRs-Fixed: 3348524
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
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
If the connect req from supplicant is non-mlo, ignore mlo related
operations and continue with connect req
Change-Id: If30df0a7dc195c2cbafc60f1e4c999b0c5689998
CRs-Fixed: 3360070
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
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
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
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
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
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
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
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
Supplicant will send add key once EAPOL exchange is successful
on assoc link. The keys added for the partner link will get
cleared if connect active event on partner link is not received
but add key is received on that link.
To avoid a race condition, for MLO assoc vdev clear the
existing crypto keys in connect active state and for link vdev
clear the crypto keys before sending to connect.
Change-Id: I0f40a4d00bea7d8829b1a3b4b90cdb59234b97c4
CRs-Fixed: 3345714
Based on the ML IE variant, add new API to find the first
Multi-Link element or the start of the first Multi-Link
element fragment sequence in a given buffer containing
elements, if a Multi-Link element or element fragment
sequence exists in the given buffer.
Change-Id: I89535f67aeb012c872216c8971b29f5afa359d07
CRs-Fixed: 3326673
Add API to parse the TID-to-link mapping event ID for the AP vaps.
As part of this event,
- Update the mapping switch time TSF value in host data structures.
- When mapping switch time or expected duration expires in the FW,
update the host data structure.
Change-Id: I93232429fe5c2aa12dc4bf9f6a2f014761b7df15
CRs-Fixed: 3350697
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
In scenario where the last ML-AP vdev of the MLD receives start response,
then in the same context mlo_sync_complete is dispatched to all the
partner ML AP vdevs.
But for the partner vdevs, VDEV SM event should be dispatched in
non-sync mode with lock held. If not it can lead to event being
dispatched when the VDEV is in intermediate transition state.
For partner vdevs dispatch event as part of callback and based on return
value, dispatch event in sync context for self vdev.
This is to avoid usage of mlme vdev sm sync event dispatch outside VDEV SM
Change-Id: Ib9220c04377985b700138127695a02a5e29952c2
CRs-Fixed: 3317097
Add support to include mapping switch time and expected duration in T2LM
IE.
Removed the below functions as MCC uses ieee_link_id instead of hw_link_id.
Do this conversion in the WIN only code.
wlan_mlo_get_hw_link_id_mask, wlan_get_ieee_link_id_mask
wlan_mlo_parse_t2lm_provisioned_links, wlan_mlo_add_t2lm_provisioned_links
Change-Id: Icc36ff318de4177bf0941235243298baef83d1e6
CRs-Fixed: 3341502
Initialize the MLO T2LM context with the default values.
- Set the direction to WLAN_T2LM_BIDI_DIRECTION
- Set default_link_mapping to 1
- Set the number of T2LM IE as 1
Change-Id: Icb5a576f14db616bf67a302f3e4666a0303a4c5b
CRs-Fixed: 3345808
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
- Renamed t2lm_provisioned_links as hw_link_map_tid in the T2LM
data structures.
- Renamed wlan_t2lm_of_tids structure as wlan_t2lm_info.
Hence, added this change to fix the compilation errors.
Change-Id: I969202137adbd5bfb5e910d45514ea9074e9b1b1
CRs-Fixed: 3337530