qcacmn: Clear the bridge context properly

Bridge context was not getting cleared properly which
was causing issue in connection of WDS STA. Make sure
to clear the bridge_sta_ctx and reset central vdev.

Change-Id: I397e5ffc1223bb0e60e67d8bc3e8c4d8bbbf7808
CRs-Fixed: 3618063
此提交包含在:
Uraj Sasan
2023-09-21 18:28:36 +05:30
提交者 Rahul Choudhary
父節點 7379485714
當前提交 3ed0c49f5e

查看文件

@@ -26,6 +26,7 @@
#include <wlan_mlo_mgr_cmn.h>
#ifdef WLAN_FEATURE_11BE_MLO
#include <wlan_mlo_mgr_public_structs.h>
#include <wlan_mlo_mgr_peer.h>
/**
* mlo_connect - Start the connection process
@@ -294,14 +295,30 @@ static inline
void mlo_clear_bridge_sta_ctx(struct wlan_objmgr_vdev *vdev)
{
struct wlan_mlo_dev_context *ml_dev = NULL;
struct wlan_objmgr_vdev *tmp_vdev = NULL;
uint8_t bridge_umac_id = -1;
if (!vdev || !vdev->mlo_dev_ctx)
return;
ml_dev = vdev->mlo_dev_ctx;
if (ml_dev->bridge_sta_ctx)
if (ml_dev->bridge_sta_ctx) {
bridge_umac_id = ml_dev->bridge_sta_ctx->bridge_umac_id;
qdf_mem_zero(ml_dev->bridge_sta_ctx,
sizeof(ml_dev->bridge_sta_ctx));
sizeof(struct wlan_mlo_bridge_sta));
}
if (mlo_is_force_central_primary(vdev)) {
tmp_vdev = mlo_get_link_vdev_from_psoc_id(ml_dev,
bridge_umac_id,
false);
if (!tmp_vdev) {
mlo_err("VDEV derivation failed for %u psoc wds bridge",
bridge_umac_id);
return;
}
tmp_vdev->vdev_objmgr.mlo_central_vdev = false;
wlan_objmgr_vdev_release_ref(tmp_vdev, WLAN_MLO_MGR_ID);
}
}
#else