qcacld-3.0: For MLO link vdev get partner link info from connect req
If link beacon is not scanned, host driver will send ML probe request and generate link scan entry from ML probe response. The ML probe response does not include RNR IE. This is causing failure in the link vdev connect path as the partner information is updated from rnr ie. To fix this, for link vdev connection get partner link information from connect request. Change-Id: Id22f57cefbf28cb20fa7e17b4b71b362b1ba0ae5 CRs-Fixed: 3312421
This commit is contained in:
@@ -1165,14 +1165,28 @@ static void cm_fill_ml_info(struct cm_vdev_join_req *join_req)
|
||||
mlme_debug("Assoc link ID:%d", join_req->assoc_link_id);
|
||||
}
|
||||
}
|
||||
|
||||
static void cm_copy_join_req_info_from_cm_connect_req(struct cm_vdev_join_req *join_req,
|
||||
struct wlan_cm_vdev_connect_req *req)
|
||||
{
|
||||
qdf_mem_copy(&(join_req->partner_info), &(req->ml_parnter_info), sizeof(struct mlo_partner_info));
|
||||
mlme_debug("Num of partner links %d", join_req->partner_info.num_partner_links);
|
||||
}
|
||||
|
||||
#else
|
||||
static void cm_fill_ml_info(struct cm_vdev_join_req *join_req)
|
||||
{
|
||||
}
|
||||
|
||||
static void cm_copy_join_req_info_from_cm_connect_req(struct cm_vdev_join_req *join_req,
|
||||
struct wlan_cm_vdev_connect_req *req)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
static QDF_STATUS
|
||||
cm_copy_join_params(struct cm_vdev_join_req *join_req,
|
||||
cm_copy_join_params(struct wlan_objmgr_vdev *vdev,
|
||||
struct cm_vdev_join_req *join_req,
|
||||
struct wlan_cm_vdev_connect_req *req)
|
||||
{
|
||||
if (req->assoc_ie.len) {
|
||||
@@ -1195,7 +1209,11 @@ cm_copy_join_params(struct cm_vdev_join_req *join_req,
|
||||
if (!join_req->entry)
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
|
||||
cm_fill_ml_info(join_req);
|
||||
if (wlan_vdev_mlme_is_mlo_link_vdev(vdev)) {
|
||||
cm_copy_join_req_info_from_cm_connect_req(join_req, req);
|
||||
} else {
|
||||
cm_fill_ml_info(join_req);
|
||||
}
|
||||
|
||||
if (req->owe_trans_ssid.length)
|
||||
join_req->owe_trans_ssid = req->owe_trans_ssid;
|
||||
@@ -1311,7 +1329,7 @@ cm_handle_connect_req(struct wlan_objmgr_vdev *vdev,
|
||||
if (!join_req)
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
|
||||
status = cm_copy_join_params(join_req, req);
|
||||
status = cm_copy_join_params(vdev ,join_req, req);
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
mlme_err(CM_PREFIX_FMT "Failed to copy join req",
|
||||
CM_PREFIX_REF(req->vdev_id, req->cm_id));
|
||||
|
Reference in New Issue
Block a user