|
@@ -50,6 +50,7 @@
|
|
#ifdef CONNECTIVITY_DIAG_EVENT
|
|
#ifdef CONNECTIVITY_DIAG_EVENT
|
|
#include "wlan_connectivity_logging.h"
|
|
#include "wlan_connectivity_logging.h"
|
|
#endif
|
|
#endif
|
|
|
|
+#include "wlan_mlme_api.h"
|
|
|
|
|
|
void
|
|
void
|
|
cm_fill_failure_resp_from_cm_id(struct cnx_mgr *cm_ctx,
|
|
cm_fill_failure_resp_from_cm_id(struct cnx_mgr *cm_ctx,
|
|
@@ -2956,23 +2957,30 @@ static void cm_update_link_channel_info(struct wlan_objmgr_vdev *vdev,
|
|
struct wlan_channel channel;
|
|
struct wlan_channel channel;
|
|
|
|
|
|
pdev = wlan_vdev_get_pdev(vdev);
|
|
pdev = wlan_vdev_get_pdev(vdev);
|
|
-
|
|
|
|
cache_entry = wlan_scan_get_scan_entry_by_mac_freq(pdev, mac_addr,
|
|
cache_entry = wlan_scan_get_scan_entry_by_mac_freq(pdev, mac_addr,
|
|
freq);
|
|
freq);
|
|
if (!cache_entry) {
|
|
if (!cache_entry) {
|
|
mlme_debug("not found the mac_addr from scan entry");
|
|
mlme_debug("not found the mac_addr from scan entry");
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- link_id = wlan_vdev_get_link_id(vdev);
|
|
|
|
|
|
|
|
|
|
+ link_id = wlan_vdev_get_link_id(vdev);
|
|
channel.ch_freq = cache_entry->channel.chan_freq;
|
|
channel.ch_freq = cache_entry->channel.chan_freq;
|
|
channel.ch_ieee = wlan_reg_freq_to_chan(pdev, channel.ch_freq);
|
|
channel.ch_ieee = wlan_reg_freq_to_chan(pdev, channel.ch_freq);
|
|
channel.ch_phymode = cache_entry->phy_mode;
|
|
channel.ch_phymode = cache_entry->phy_mode;
|
|
channel.ch_cfreq1 = cache_entry->channel.cfreq0;
|
|
channel.ch_cfreq1 = cache_entry->channel.cfreq0;
|
|
channel.ch_cfreq2 = cache_entry->channel.cfreq1;
|
|
channel.ch_cfreq2 = cache_entry->channel.cfreq1;
|
|
|
|
+ channel.ch_width =
|
|
|
|
+ wlan_mlme_get_ch_width_from_phymode(cache_entry->phy_mode);
|
|
|
|
+ /*
|
|
|
|
+ * Supplicant needs non zero center_freq1 in case of 20 MHz connection
|
|
|
|
+ * also as a response of get_channel request. In case of 20 MHz channel
|
|
|
|
+ * width central frequency is same as channel frequency
|
|
|
|
+ */
|
|
|
|
+ if (channel.ch_width == CH_WIDTH_20MHZ)
|
|
|
|
+ channel.ch_cfreq1 = channel.ch_freq;
|
|
|
|
|
|
util_scan_free_cache_entry(cache_entry);
|
|
util_scan_free_cache_entry(cache_entry);
|
|
-
|
|
|
|
mlo_mgr_update_ap_channel_info(vdev, link_id, (uint8_t *)mac_addr,
|
|
mlo_mgr_update_ap_channel_info(vdev, link_id, (uint8_t *)mac_addr,
|
|
channel);
|
|
channel);
|
|
}
|
|
}
|