qcacld-3.0: Add print log for new roam scan type

Firmware sends the roam scan info tlv to driver during roaming.
Currently, in this tlv, firmware fills scan type as (0-3) and
driver log this as "PARTIAL", "FULL", "NO SCAN" and "Higher Band"
But with new requirement, idle roaming shall only roam to higher band
(2.4 GHz < 5 GHz < 6 GHz) than current band.
1. If current band is 2.4 GHz, it cannot roam to 2.4 GHz.
It can roam to 5 GHz and 6 GHz.
2. If current band is 5 GHz, it cannot roam to 2.4 GHz and 5 GHz.
It can roam to 6 GHz.
So, to add this requirement, firmware introduces new scan type 4 for
which driver need to log.

Change-Id: I80d1c47a434da5009aed4cab08c6eae91bda5b0e
CRs-Fixed: 3379468
这个提交包含在:
Rahul Gusain
2023-01-11 23:27:41 +05:30
提交者 Madan Koyyalamudi
父节点 81ba2c92d4
当前提交 4d22da60ff
修改 5 个文件,包含 36 行新增31 行删除

查看文件

@@ -2891,15 +2891,6 @@ wlan_mlme_get_ignore_fw_reg_offload_ind(struct wlan_objmgr_psoc *psoc,
*/
char *mlme_get_roam_trigger_str(uint32_t roam_scan_trigger);
/**
* mlme_get_roam_scan_type_str() - Get the string for roam sacn type
* @roam_scan_type: roam scan type coming from fw via
* wmi_roam_scan_info tlv
*
* Return: Meaningful string for roam sacn type
*/
char *mlme_get_roam_scan_type_str(uint32_t roam_scan_type);
/**
* mlme_get_roam_status_str() - Get the string for roam status
* @roam_status: roam status coming from fw via

查看文件

@@ -4513,22 +4513,6 @@ char *mlme_get_roam_status_str(uint32_t roam_status)
}
}
char *mlme_get_roam_scan_type_str(uint32_t roam_scan_type)
{
switch (roam_scan_type) {
case 0:
return "PARTIAL";
case 1:
return "FULL";
case 2:
return "NO SCAN";
case 3:
return "Higher Band";
default:
return "UNKNOWN";
}
}
char *mlme_get_roam_trigger_str(uint32_t roam_scan_trigger)
{
switch (roam_scan_trigger) {

查看文件

@@ -215,13 +215,17 @@ enum roam_trigger_sub_reason {
* @ROAM_STATS_SCAN_TYPE_FULL: Full scan
* @ROAM_STATS_SCAN_TYPE_NO_SCAN: No roam scan was triggered. This is generally
* used in BTM events to indicate BTM frame exchange logs.
* @ROAM_STATS_SCAN_TYPE_HIGHER_BAND: Higher band roam scan
* @ROAM_STATS_SCAN_TYPE_HIGHER_BAND_5GHZ_6GHZ: Higher band roam scan from 2 GHz
* to 5 GHz or 6 GHz
* @ROAM_STATS_SCAN_TYPE_HIGHER_BAND_6GHZ: Higher band roam scan from 5 GHz to
* 6 GHz
*/
enum roam_stats_scan_type {
ROAM_STATS_SCAN_TYPE_PARTIAL = 0,
ROAM_STATS_SCAN_TYPE_FULL = 1,
ROAM_STATS_SCAN_TYPE_NO_SCAN = 2,
ROAM_STATS_SCAN_TYPE_HIGHER_BAND = 3,
ROAM_STATS_SCAN_TYPE_HIGHER_BAND_5GHZ_6GHZ = 3,
ROAM_STATS_SCAN_TYPE_HIGHER_BAND_6GHZ = 4,
};
/**

查看文件

@@ -2940,6 +2940,31 @@ cm_stats_log_roam_scan_candidates(struct wmi_roam_candidate_info *ap,
}
}
/**
* cm_get_roam_scan_type_str() - Get the string for roam scan type
* @roam_scan_type: roam scan type coming from fw via
* wmi_roam_scan_info tlv
*
* Return: Meaningful string for roam scan type
*/
static char *cm_get_roam_scan_type_str(uint32_t roam_scan_type)
{
switch (roam_scan_type) {
case ROAM_STATS_SCAN_TYPE_PARTIAL:
return "PARTIAL";
case ROAM_STATS_SCAN_TYPE_FULL:
return "FULL";
case ROAM_STATS_SCAN_TYPE_NO_SCAN:
return "NO SCAN";
case ROAM_STATS_SCAN_TYPE_HIGHER_BAND_5GHZ_6GHZ:
return "Higher Band: 5 GHz + 6 GHz";
case ROAM_STATS_SCAN_TYPE_HIGHER_BAND_6GHZ:
return "Higher Band : 6 GHz";
default:
return "UNKNOWN";
}
}
/**
* cm_roam_stats_print_scan_info - Print the roam scan details and candidate AP
* details
@@ -2974,7 +2999,7 @@ cm_roam_stats_print_scan_info(struct wlan_objmgr_psoc *psoc,
tmp = buf;
/* For partial scans, print the channel info */
if (!scan->type) {
if (scan->type == ROAM_STATS_SCAN_TYPE_PARTIAL) {
buf_cons = qdf_snprint(tmp, buf_left, "{");
buf_left -= buf_cons;
tmp += buf_cons;
@@ -3004,7 +3029,7 @@ cm_roam_stats_print_scan_info(struct wlan_objmgr_psoc *psoc,
mlme_get_converted_timestamp(timestamp, time);
mlme_nofl_info("%s [ROAM_SCAN]: VDEV[%d] Scan_type: %s %s %s",
time, vdev_id, mlme_get_roam_scan_type_str(scan->type),
time, vdev_id, cm_get_roam_scan_type_str(scan->type),
buf1, buf);
cm_stats_log_roam_scan_candidates(scan->ap, scan->num_ap);

查看文件

@@ -4168,7 +4168,7 @@ hdd_get_roam_rt_stats_event_len(struct roam_stats_event *roam_stats,
if (roam_stats->scan[idx].present) {
if (roam_stats->scan[idx].num_chan &&
!roam_stats->scan[idx].type)
roam_stats->scan[idx].type == ROAM_STATS_SCAN_TYPE_PARTIAL)
for (i = 0; i < roam_stats->scan[idx].num_chan;)
i++;
@@ -4242,7 +4242,8 @@ roam_rt_stats_fill_scan_freq(struct sk_buff *vendor_event, uint8_t idx,
kfree_skb(vendor_event);
return;
}
if (roam_stats->scan[idx].num_chan && !roam_stats->scan[idx].type) {
if (roam_stats->scan[idx].num_chan &&
roam_stats->scan[idx].type == ROAM_STATS_SCAN_TYPE_PARTIAL) {
for (i = 0; i < roam_stats->scan[idx].num_chan; i++) {
if (nla_put_u32(vendor_event, i,
roam_stats->scan[idx].chan_freq[i])) {