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
Šī revīzija ir iekļauta:

revīziju iesūtīja
Madan Koyyalamudi

vecāks
81ba2c92d4
revīzija
4d22da60ff
@@ -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])) {
|
||||
|
Atsaukties uz šo jaunā problēmā
Block a user