qcacmn: WDS STATION send bridge partner details

Send bridge partner details during peer create and peer
assoc. The partner of bridge peer are saved which are used later
during bridge peer create and assoc. Also add bridge peer partner
details while sending peer create and assoc on actual links.

CRs-Fixed: 3574656
Change-Id: I755614a131f6552ac28377d2c7648db4fd87b8df
This commit is contained in:
Uraj Sasan
2023-07-31 12:33:02 +05:30
committed by Rahul Choudhary
parent ea44c5ab75
commit 082bbef13c
4 changed files with 126 additions and 19 deletions

View File

@@ -461,11 +461,17 @@ void osif_update_partner_vdev_info(struct wlan_objmgr_vdev *vdev,
struct mlo_partner_info partner_info)
{
struct wlan_objmgr_vdev *tmp_vdev;
struct wlan_mlo_dev_context *ml_dev = NULL;
uint8_t i;
uint8_t link_id;
if (!vdev)
return;
ml_dev = vdev->mlo_dev_ctx;
if (!ml_dev)
return;
for (i = 0; i < partner_info.num_partner_links; i++) {
tmp_vdev = mlo_get_ml_vdev_by_mac(
vdev,
@@ -474,9 +480,14 @@ void osif_update_partner_vdev_info(struct wlan_objmgr_vdev *vdev,
mlo_update_connect_req_links(tmp_vdev, 1);
wlan_vdev_mlme_set_mlo_vdev(tmp_vdev);
wlan_vdev_mlme_set_mlo_link_vdev(tmp_vdev);
wlan_vdev_set_link_id(
tmp_vdev,
partner_info.partner_link_info[i].link_id);
/* Set link id for bridge sta vap */
if (mlo_is_sta_bridge_vdev(tmp_vdev)) {
link_id = ml_dev->bridge_sta_ctx->bridge_link_id;
wlan_vdev_set_link_id(tmp_vdev, link_id);
} else
wlan_vdev_set_link_id(
tmp_vdev,
partner_info.partner_link_info[i].link_id);
osif_debug("link id %d",
tmp_vdev->vdev_mlme.mlo_link_id);
}
@@ -501,11 +512,13 @@ QDF_STATUS osif_update_mlo_partner_info(
QDF_STATUS status = QDF_STATUS_SUCCESS;
struct wlan_objmgr_pdev *pdev = NULL;
struct wlan_objmgr_psoc *psoc;
struct wlan_mlo_dev_context *ml_dev = NULL;
if (!vdev || !connect_req || !req)
return status;
if (!vdev->mlo_dev_ctx) {
ml_dev = vdev->mlo_dev_ctx;
if (!ml_dev) {
osif_debug("ML ctx is NULL, ignore ML IE");
return QDF_STATUS_SUCCESS;
}
@@ -591,6 +604,10 @@ QDF_STATUS osif_update_mlo_partner_info(
osif_err("Topology check failed prevent association\n");
return QDF_STATUS_E_FAILURE;
}
if (mlo_sta_bridge_exists(vdev))
mlo_update_partner_bridge_info(ml_dev, &partner_info);
mlo_update_connect_req_links(vdev, 1);
osif_update_partner_vdev_info(vdev, partner_info);
mlo_mlme_sta_op_class(vdev, ml_ie);