|
@@ -420,21 +420,26 @@ void lim_objmgr_update_emlsr_caps(struct wlan_objmgr_psoc *psoc,
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- ap_emlsr_cap =
|
|
|
- assoc_rsp->mlo_ie.mlo_ie.eml_capabilities_info.emlsr_support;
|
|
|
-
|
|
|
- if (!(wlan_vdev_mlme_cap_get(vdev, WLAN_VDEV_C_EMLSR_CAP) &&
|
|
|
- ap_emlsr_cap)) {
|
|
|
- if (!wlan_vdev_mlme_cap_get(vdev, WLAN_VDEV_C_EMLSR_CAP) &&
|
|
|
- ap_emlsr_cap)
|
|
|
- pe_debug("No eMLSR STA supp but recvd EML caps in assc rsp");
|
|
|
- else
|
|
|
- pe_debug("EML caps not present in assoc rsp");
|
|
|
- wlan_vdev_obj_lock(vdev);
|
|
|
- wlan_vdev_mlme_cap_clear(vdev, WLAN_VDEV_C_EMLSR_CAP);
|
|
|
- wlan_vdev_obj_unlock(vdev);
|
|
|
+ /* Check for assoc link vdev to extract emlsr cap from assoc rsp */
|
|
|
+ if (!wlan_vdev_mlme_is_mlo_link_vdev(vdev)) {
|
|
|
+ ap_emlsr_cap =
|
|
|
+ assoc_rsp->mlo_ie.mlo_ie.eml_capabilities_info.emlsr_support;
|
|
|
+
|
|
|
+ if (!(wlan_vdev_mlme_cap_get(vdev, WLAN_VDEV_C_EMLSR_CAP) &&
|
|
|
+ ap_emlsr_cap)) {
|
|
|
+ if (!wlan_vdev_mlme_cap_get(vdev, WLAN_VDEV_C_EMLSR_CAP)
|
|
|
+ && ap_emlsr_cap)
|
|
|
+ pe_debug("No eMLSR STA supp but recvd EML caps in assc rsp");
|
|
|
+ else
|
|
|
+ pe_debug("EML caps not present in assoc rsp");
|
|
|
+ wlan_vdev_obj_lock(vdev);
|
|
|
+ wlan_vdev_mlme_cap_clear(vdev, WLAN_VDEV_C_EMLSR_CAP);
|
|
|
+ wlan_vdev_obj_unlock(vdev);
|
|
|
+ } else {
|
|
|
+ pe_debug("EML caps present in assoc rsp");
|
|
|
+ }
|
|
|
} else {
|
|
|
- pe_debug("EML caps present in assoc rsp");
|
|
|
+ pe_debug("no change required for link vdev");
|
|
|
}
|
|
|
|
|
|
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_MAC_ID);
|