qcacld-3.0: Fetch bcn/prb rsp received freq based on source addr

Firmware sends beacon/probe rsp received to host as part of roam
sync(frame) indication. Frame received frequency is same as
re-association frequency in case of non-ML or single link ML
roaming.
But the ML probe response might come from non-assoc link in case
of multi link roaming. Probe response received frequency and
reassociation frequency are different in such cases. Some
IEs(e.g. HT_INFO) expect frame received frequency to match with
the frequency mentioned in the IE.
So, fetch the probe response received frequency from source
address of the frame and the ml_info of roam sync indication.

Change-Id: Ife96aa46de10d4cd6882e6d04479dfdd481582d4
CRs-Fixed: 3412842
Dieser Commit ist enthalten in:
Srinivas Dasari
2023-02-21 14:08:41 +05:30
committet von Madan Koyyalamudi
Ursprung b607e016e8
Commit 8f1170af29
7 geänderte Dateien mit 54 neuen und 34 gelöschten Zeilen

Datei anzeigen

@@ -860,37 +860,50 @@ cm_update_scan_db_on_roam_success(struct wlan_objmgr_vdev *vdev,
wlan_cm_id cm_id)
{
struct cnx_mgr *cm_ctx;
qdf_freq_t link_freq;
qdf_freq_t frame_freq;
struct wlan_connect_rsp_ies *ies = &resp->connect_ies;
cm_ctx = cm_get_cm_ctx(vdev);
if (!cm_ctx)
return;
link_freq = mlo_roam_get_chan_freq(wlan_vdev_get_id(vdev),
roam_synch_ind);
if (roam_synch_ind->auth_status == ROAM_AUTH_STATUS_CONNECTED) {
if (ies->link_bcn_probe_rsp.len)
if (ies->link_bcn_probe_rsp.len) {
frame_freq = mlo_roam_get_link_freq_from_mac_addr(
roam_synch_ind,
wlan_mlme_get_src_addr_from_frame(
&ies->link_bcn_probe_rsp));
cm_inform_bcn_probe(cm_ctx,
ies->link_bcn_probe_rsp.ptr,
ies->link_bcn_probe_rsp.len,
link_freq,
frame_freq,
roam_synch_ind->rssi,
cm_id);
}
frame_freq = mlo_roam_get_link_freq_from_mac_addr(
roam_synch_ind,
wlan_mlme_get_src_addr_from_frame(
&ies->bcn_probe_rsp));
cm_inform_bcn_probe(cm_ctx,
ies->bcn_probe_rsp.ptr,
ies->bcn_probe_rsp.len,
resp->freq,
frame_freq,
roam_synch_ind->rssi,
cm_id);
} else if (wlan_vdev_mlme_is_mlo_link_vdev(vdev)) {
if (ies->link_bcn_probe_rsp.len)
if (ies->link_bcn_probe_rsp.len) {
frame_freq = mlo_roam_get_link_freq_from_mac_addr(
roam_synch_ind,
wlan_mlme_get_src_addr_from_frame(
&ies->link_bcn_probe_rsp));
cm_inform_bcn_probe(cm_ctx,
ies->link_bcn_probe_rsp.ptr,
ies->link_bcn_probe_rsp.len,
link_freq,
frame_freq,
roam_synch_ind->rssi,
cm_id);
}
} else {
cm_inform_bcn_probe(cm_ctx,
ies->bcn_probe_rsp.ptr,

Datei anzeigen

@@ -517,5 +517,11 @@ mlo_get_link_mac_addr_from_reassoc_rsp(struct wlan_objmgr_vdev *vdev,
return QDF_STATUS_E_NOSUPPORT;
}
static inline uint32_t
mlo_roam_get_link_freq_from_mac_addr(struct roam_offload_synch_ind *sync_ind,
uint8_t *link_mac_addr)
{
return 0;
}
#endif /* WLAN_FEATURE_11BE_MLO */
#endif