qcacmn: Always update OSIF/HDD connect info
Driver tries to fetch BSS info from kernel to update connect results and at the same time updates HDD/OSIF of the current link's BSSID and link ID. OSIF/HDD will not be updated, if BSS info is not found in kernel. This will leave MLO manager and OSIF/HDD to go out-of-sync. This can later lead to link switch failure as HDD is not having all link's information. To keep MLO manager and OSIF/HDD in sync, always update OSIF/HDD even if BSS info fetch from kernel fails. Change-Id: Ie2e67317256cc2d9edaa7663d3902b63a45cbaaa CRs-Fixed: 3729709
This commit is contained in:

committed by
Ravindra Konda

parent
f4dda761c5
commit
f3d3f64f12
@@ -491,11 +491,14 @@ void osif_populate_connect_response_for_link(struct wlan_objmgr_vdev *vdev,
|
||||
uint8_t *link_addr,
|
||||
struct cfg80211_bss *bss)
|
||||
{
|
||||
osif_debug("Link_id :%d", link_id);
|
||||
conn_rsp_params->valid_links |= BIT(link_id);
|
||||
conn_rsp_params->links[link_id].bssid = bss->bssid;
|
||||
conn_rsp_params->links[link_id].bss = bss;
|
||||
conn_rsp_params->links[link_id].addr = link_addr;
|
||||
if (bss) {
|
||||
osif_debug("Link_id :%d", link_id);
|
||||
conn_rsp_params->valid_links |= BIT(link_id);
|
||||
conn_rsp_params->links[link_id].bssid = bss->bssid;
|
||||
conn_rsp_params->links[link_id].bss = bss;
|
||||
conn_rsp_params->links[link_id].addr = link_addr;
|
||||
}
|
||||
|
||||
mlo_mgr_osif_update_connect_info(vdev, link_id);
|
||||
}
|
||||
|
||||
@@ -546,8 +549,6 @@ osif_populate_partner_links_mlo_params(struct wlan_objmgr_vdev *vdev,
|
||||
|
||||
bss = osif_get_chan_bss_from_kernel(vdev, rsp_partner_info,
|
||||
rsp);
|
||||
if (!bss)
|
||||
continue;
|
||||
|
||||
osif_populate_connect_response_for_link(vdev, conn_rsp_params,
|
||||
link_id,
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2012-2015,2020-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
@@ -79,11 +79,13 @@ osif_roam_populate_mlo_info_for_link(struct wlan_objmgr_vdev *roamed_vdev,
|
||||
uint8_t link_id, struct cfg80211_bss *bss,
|
||||
uint8_t *self_link_addr)
|
||||
{
|
||||
osif_debug("Link_id :%d", link_id);
|
||||
roam_info->valid_links |= BIT(link_id);
|
||||
roam_info->links[link_id].bssid = bss->bssid;
|
||||
roam_info->links[link_id].bss = bss;
|
||||
roam_info->links[link_id].addr = self_link_addr;
|
||||
if (bss) {
|
||||
osif_debug("Link_id :%d", link_id);
|
||||
roam_info->valid_links |= BIT(link_id);
|
||||
roam_info->links[link_id].bssid = bss->bssid;
|
||||
roam_info->links[link_id].bss = bss;
|
||||
roam_info->links[link_id].addr = self_link_addr;
|
||||
}
|
||||
|
||||
mlo_mgr_osif_update_connect_info(roamed_vdev, link_id);
|
||||
}
|
||||
@@ -131,11 +133,6 @@ osif_populate_partner_links_roam_mlo_params(struct wlan_objmgr_vdev *roamed_vdev
|
||||
|
||||
bss = osif_get_chan_bss_from_kernel(roamed_vdev,
|
||||
rsp_partner_info, rsp);
|
||||
if (!bss) {
|
||||
osif_debug("kernel bss not found for link_id:%d",
|
||||
link_id);
|
||||
continue;
|
||||
}
|
||||
|
||||
osif_roam_populate_mlo_info_for_link(roamed_vdev,
|
||||
roam_info_params,
|
||||
|
Reference in New Issue
Block a user