qcacmn: Process ML Channel Measurement request
Host parse newely added vendor command QCA_NL80211_VENDOR_SUBCMD_CONNECTED_CHANNEL_STATS and trigger scan to get connected channel stats from FW in case of MLO connection. On scan done host sends scan done indication to upper layer via QCA_NL80211_VENDOR_SUBCMD_CONNECTED_CHANNEL_STATS vendor command. Change-Id: I92dbd779c5fbdb1652a37cfa54c177bd13de4f28 CRs-Fixed: 3491060
This commit is contained in:

committed by
Madan Koyyalamudi

parent
4bb252b2a3
commit
058889e6a0
@@ -1198,7 +1198,9 @@ scm_scan_req_update_params(struct wlan_objmgr_vdev *vdev,
|
||||
*/
|
||||
pdev = wlan_vdev_get_pdev(vdev);
|
||||
pdev_id = wlan_objmgr_pdev_get_pdev_id(pdev);
|
||||
if (ucfg_scan_get_wide_band_scan(pdev))
|
||||
/* Trigger wide band scan also if pause_home_channel scan flag is set */
|
||||
if (ucfg_scan_get_wide_band_scan(pdev) ||
|
||||
req->scan_req.scan_f_pause_home_channel)
|
||||
req->scan_req.scan_f_wide_band = true;
|
||||
else
|
||||
req->scan_req.scan_f_wide_band = false;
|
||||
@@ -1224,11 +1226,11 @@ static inline void scm_print_scan_req_info(struct scan_req_params *req)
|
||||
uint32_t buff_len;
|
||||
char *chan_buff;
|
||||
uint32_t len = 0;
|
||||
uint8_t idx, count = 0;
|
||||
uint8_t buff_size, idx, count = 0;
|
||||
struct chan_list *chan_lst;
|
||||
#define MAX_SCAN_FREQ_TO_PRINT 25
|
||||
|
||||
scm_nofl_debug("Scan start: scan id %d vdev %d Dwell time: act %d pass %d act_2G %d act_6G %d pass_6G %d, probe time %d n_probes %d flags %x ext_flag %x events %x policy %d wide_bw %d pri %d",
|
||||
scm_nofl_debug("Scan start: scan id %d vdev %d Dwell time: act %d pass %d act_2G %d act_6G %d pass_6G %d, probe time %d n_probes %d flags %x ext_flag %x events %x policy %d is_wb: %d pri %d",
|
||||
req->scan_id, req->vdev_id, req->dwell_time_active,
|
||||
req->dwell_time_passive, req->dwell_time_active_2g,
|
||||
req->dwell_time_active_6g, req->dwell_time_passive_6g,
|
||||
@@ -1246,21 +1248,39 @@ static inline void scm_print_scan_req_info(struct scan_req_params *req)
|
||||
|
||||
if (!chan_lst->num_chan)
|
||||
return;
|
||||
|
||||
/*
|
||||
* Buffer of (num channel * 11) + 1 to consider the 4 char freq, 6 char
|
||||
* flags and 1 space after it for each channel and 1 to end the string
|
||||
* with NULL.
|
||||
* Buffer of (num channel * buff_size) + 1 to consider the 4 char freq,
|
||||
* 6 char flags and 1 space after it for each channel and 1 to end the
|
||||
* string with NULL.
|
||||
* In case of wide band scan extra 4 char for phymode.
|
||||
*/
|
||||
buff_len =
|
||||
(QDF_MIN(MAX_SCAN_FREQ_TO_PRINT, chan_lst->num_chan) * 11) + 1;
|
||||
if (req->scan_f_wide_band)
|
||||
buff_size = 15;
|
||||
else
|
||||
buff_size = 11;
|
||||
|
||||
buff_len = (QDF_MIN(MAX_SCAN_FREQ_TO_PRINT,
|
||||
chan_lst->num_chan) * buff_size) + 1;
|
||||
|
||||
chan_buff = qdf_mem_malloc(buff_len);
|
||||
if (!chan_buff)
|
||||
return;
|
||||
|
||||
scm_nofl_debug("Total freq %d", chan_lst->num_chan);
|
||||
for (idx = 0; idx < chan_lst->num_chan; idx++) {
|
||||
len += qdf_scnprintf(chan_buff + len, buff_len - len,
|
||||
"%d(0x%02x) ", chan_lst->chan[idx].freq,
|
||||
chan_lst->chan[idx].flags);
|
||||
if (req->scan_f_wide_band)
|
||||
len += qdf_scnprintf(chan_buff + len, buff_len - len,
|
||||
"%d(0x%02x)[%d] ",
|
||||
chan_lst->chan[idx].freq,
|
||||
chan_lst->chan[idx].flags,
|
||||
chan_lst->chan[idx].phymode);
|
||||
else
|
||||
len += qdf_scnprintf(chan_buff + len, buff_len - len,
|
||||
"%d(0x%02x) ",
|
||||
chan_lst->chan[idx].freq,
|
||||
chan_lst->chan[idx].flags);
|
||||
|
||||
count++;
|
||||
if (count >= MAX_SCAN_FREQ_TO_PRINT) {
|
||||
/* Print the MAX_SCAN_FREQ_TO_PRINT channels */
|
||||
|
@@ -830,6 +830,16 @@ enum scan_priority {
|
||||
* @SCAN_PHY_MODE_11AX_HE20_2G: 2GHz 11ax he20 mode
|
||||
* @SCAN_PHY_MODE_11AX_HE40_2G: 2GHz 11ax he40 mode
|
||||
* @SCAN_PHY_MODE_11AX_HE80_2G: 2GHz 11ax he80 mode
|
||||
* @SCAN_PHY_MODE_11BE_EHT20: 11be EHT 20 mode
|
||||
* @SCAN_PHY_MODE_11BE_EHT40: 11be EHT 40 mode
|
||||
* @SCAN_PHY_MODE_11BE_EHT80: 11be EHT 80 mode
|
||||
* @SCAN_PHY_MODE_11BE_EHT80_80: 11be EHT 80+80 mode
|
||||
* @SCAN_PHY_MODE_11BE_EHT160: 11be EHT 160 mode
|
||||
* @SCAN_PHY_MODE_11BE_EHT160_160: 11be EHT 160+160 mode
|
||||
* @SCAN_PHY_MODE_11BE_EHT320: 11be EHT 320 mode
|
||||
* @SCAN_PHY_MODE_11BE_EHT20_2G: 2GHz 11be EHT 20 mode
|
||||
* @SCAN_PHY_MODE_11BE_EHT40_2G: 2GHz 11be EHT 40 mode
|
||||
* @SCAN_PHY_MODE_11BE_EHT80_2G: 2GHz 11be EHT 80 mode
|
||||
* @SCAN_PHY_MODE_UNKNOWN: unknown phy mode
|
||||
* @SCAN_PHY_MODE_MAX: max valid phymode
|
||||
*/
|
||||
@@ -858,8 +868,20 @@ enum scan_phy_mode {
|
||||
SCAN_PHY_MODE_11AX_HE20_2G = 21,
|
||||
SCAN_PHY_MODE_11AX_HE40_2G = 22,
|
||||
SCAN_PHY_MODE_11AX_HE80_2G = 23,
|
||||
SCAN_PHY_MODE_UNKNOWN = 24,
|
||||
SCAN_PHY_MODE_MAX = 24
|
||||
#ifdef WLAN_FEATURE_11BE
|
||||
SCAN_PHY_MODE_11BE_EHT20 = 24,
|
||||
SCAN_PHY_MODE_11BE_EHT40 = 25,
|
||||
SCAN_PHY_MODE_11BE_EHT80 = 26,
|
||||
SCAN_PHY_MODE_11BE_EHT80_80 = 27,
|
||||
SCAN_PHY_MODE_11BE_EHT160 = 28,
|
||||
SCAN_PHY_MODE_11BE_EHT160_160 = 29,
|
||||
SCAN_PHY_MODE_11BE_EHT320 = 30,
|
||||
SCAN_PHY_MODE_11BE_EHT20_2G = 31,
|
||||
SCAN_PHY_MODE_11BE_EHT40_2G = 32,
|
||||
SCAN_PHY_MODE_11BE_EHT80_2G = 33,
|
||||
#endif
|
||||
SCAN_PHY_MODE_UNKNOWN = 34,
|
||||
SCAN_PHY_MODE_MAX = 34
|
||||
};
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user