qcacld-3.0: Fetch link freq based on link mac addr from roam sync
Currently, link frequency is fetched from roam sync indication based on vdev_id. But the vdev_id is of assoc link in OWE/1x cases(where link vdev would be down as part of roam sync handling) but it would of non-assoc link in case of other modes like SAE/WPA2/.. So current fetching of frequency based vdev_id may give invalid frequency in SAE case as non-assoc link vdev_id is passed. Fetch the frequency based on link mac addr to avoid such failures. Change-Id: I0a5748ac351473d85b21f2da8d8f124715c4d595 CRs-Fixed: 3358448
This commit is contained in:

committed by
Madan Koyyalamudi

parent
fbbcbd919c
commit
f3438c702a
@@ -92,18 +92,17 @@ mlo_roam_get_chan_freq(uint8_t vdev_id,
|
||||
struct roam_offload_synch_ind *sync_ind);
|
||||
|
||||
/**
|
||||
* mlo_roam_get_link_freq - get given link frequency
|
||||
*
|
||||
* @vdev_id: vdev id
|
||||
* mlo_roam_get_link_freq_from_mac_addr - get given link frequency
|
||||
* @sync_ind: roam sync ind pointer
|
||||
* @link_mac_addr: Link mac address
|
||||
*
|
||||
* This api will be called to get the link frequency.
|
||||
*
|
||||
* Return: channel frequency
|
||||
*/
|
||||
uint32_t
|
||||
mlo_roam_get_link_freq(uint8_t vdev_id,
|
||||
struct roam_offload_synch_ind *sync_ind);
|
||||
mlo_roam_get_link_freq_from_mac_addr(struct roam_offload_synch_ind *sync_ind,
|
||||
uint8_t *link_mac_addr);
|
||||
|
||||
/**
|
||||
* mlo_roam_get_link_id - get link id
|
||||
|
@@ -426,18 +426,19 @@ bool is_multi_link_roam(struct roam_offload_synch_ind *sync_ind)
|
||||
}
|
||||
|
||||
uint32_t
|
||||
mlo_roam_get_link_freq(uint8_t vdev_id,
|
||||
struct roam_offload_synch_ind *sync_ind)
|
||||
mlo_roam_get_link_freq_from_mac_addr(struct roam_offload_synch_ind *sync_ind,
|
||||
uint8_t *link_mac_addr)
|
||||
{
|
||||
uint8_t i;
|
||||
|
||||
if (!sync_ind || !sync_ind->num_setup_links)
|
||||
if (!sync_ind || !sync_ind->num_setup_links || !link_mac_addr)
|
||||
return 0;
|
||||
|
||||
for (i = 0; i < sync_ind->num_setup_links; i++) {
|
||||
if (sync_ind->ml_link[i].vdev_id != vdev_id)
|
||||
for (i = 0; i < sync_ind->num_setup_links; i++)
|
||||
if (!qdf_mem_cmp(sync_ind->ml_link[i].link_addr.bytes,
|
||||
link_mac_addr,
|
||||
QDF_MAC_ADDR_SIZE))
|
||||
return sync_ind->ml_link[i].channel.mhz;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user