qcacmn: AID manager fixes for MBSSID vaps
1) Do not free Tx VAP's AID manager, if AID manager of non-Tx vap and Tx vap doesn't match 2) Do not allocate AID manager for MLD vaps, if AID manager is already allocated Change-Id: I08b19397540f364503eaa1c269c6d0679a9a9fc0 CRs-Fixed: 3212368
This commit is contained in:

committato da
Madan Koyyalamudi

parent
ddad8e0543
commit
34c16f4118
@@ -857,6 +857,12 @@ QDF_STATUS wlan_mlo_vdev_deinit_mbss_aid_mgr(struct wlan_mlo_dev_context *mldev,
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
if (aid_mgr != txvdev_aid_mgr) {
|
||||
mlo_err("AID mgr of VDEV%d and tx vdev(%d) aid mgr doesn't match",
|
||||
wlan_vdev_get_id(vdev), wlan_vdev_get_id(tx_vdev));
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
for (i = 0; i < WLAN_UMAC_MLO_MAX_VDEVS; i++) {
|
||||
vdev_iter = mldev->wlan_vdev_list[i];
|
||||
if (!vdev_iter)
|
||||
@@ -936,6 +942,12 @@ QDF_STATUS wlan_mlme_vdev_deinit_mbss_aid_mgr(struct wlan_objmgr_vdev *vdev,
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
if (aid_mgr != txvdev_aid_mgr) {
|
||||
mlo_err("AID mgr of VDEV%d and tx vdev(%d) aid mgr doesn't match",
|
||||
wlan_vdev_get_id(vdev), wlan_vdev_get_id(tx_vdev));
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
aid_mgr = wlan_vdev_aid_mgr_init(txvdev_aid_mgr->max_aid);
|
||||
if (!aid_mgr) {
|
||||
mlo_err("AID bitmap allocation failed for VDEV%d",
|
||||
@@ -960,6 +972,7 @@ QDF_STATUS wlan_mlo_vdev_alloc_aid_mgr(struct wlan_mlo_dev_context *ml_dev,
|
||||
uint8_t i;
|
||||
struct wlan_objmgr_vdev *vdev_iter;
|
||||
struct wlan_ml_vdev_aid_mgr *ml_aidmgr;
|
||||
struct wlan_vdev_aid_mgr *aid_mgr = NULL;
|
||||
uint16_t max_aid = WLAN_UMAC_MAX_AID;
|
||||
|
||||
if (!ml_dev->ap_ctx) {
|
||||
@@ -981,13 +994,20 @@ QDF_STATUS wlan_mlo_vdev_alloc_aid_mgr(struct wlan_mlo_dev_context *ml_dev,
|
||||
if (vdev != vdev_iter)
|
||||
continue;
|
||||
|
||||
ml_aidmgr->aid_mgr[i] = wlan_vdev_aid_mgr_init(max_aid);
|
||||
if (!ml_aidmgr->aid_mgr[i]) {
|
||||
mlo_err("AID bitmap allocation failed for VDEV%d",
|
||||
wlan_vdev_get_id(vdev));
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
/* if it is already allocated, assign it to ML AID mgr */
|
||||
aid_mgr = wlan_vdev_mlme_get_aid_mgr(vdev);
|
||||
if (!aid_mgr) {
|
||||
aid_mgr = wlan_vdev_aid_mgr_init(max_aid);
|
||||
if (aid_mgr) {
|
||||
wlan_vdev_mlme_set_aid_mgr(vdev, aid_mgr);
|
||||
} else {
|
||||
mlo_err("AID bitmap allocation failed for VDEV%d",
|
||||
wlan_vdev_get_id(vdev));
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
}
|
||||
}
|
||||
wlan_vdev_mlme_set_aid_mgr(vdev, ml_aidmgr->aid_mgr[i]);
|
||||
|
||||
ml_aidmgr->aid_mgr[i] = aid_mgr;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1022,6 +1042,7 @@ QDF_STATUS wlan_mlo_vdev_free_aid_mgr(struct wlan_mlo_dev_context *ml_dev,
|
||||
|
||||
wlan_vdev_aid_mgr_free(ml_aidmgr->aid_mgr[i]);
|
||||
ml_aidmgr->aid_mgr[i] = NULL;
|
||||
wlan_vdev_mlme_set_aid_mgr(vdev, NULL);
|
||||
break;
|
||||
}
|
||||
|
||||
|
Fai riferimento in un nuovo problema
Block a user