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
Cette révision appartient à :

révisé par
Madan Koyyalamudi

Parent
81ba2c92d4
révision
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);
|
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
|
* mlme_get_roam_status_str() - Get the string for roam status
|
||||||
* @roam_status: roam status coming from fw via
|
* @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)
|
char *mlme_get_roam_trigger_str(uint32_t roam_scan_trigger)
|
||||||
{
|
{
|
||||||
switch (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_FULL: Full scan
|
||||||
* @ROAM_STATS_SCAN_TYPE_NO_SCAN: No roam scan was triggered. This is generally
|
* @ROAM_STATS_SCAN_TYPE_NO_SCAN: No roam scan was triggered. This is generally
|
||||||
* used in BTM events to indicate BTM frame exchange logs.
|
* 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 {
|
enum roam_stats_scan_type {
|
||||||
ROAM_STATS_SCAN_TYPE_PARTIAL = 0,
|
ROAM_STATS_SCAN_TYPE_PARTIAL = 0,
|
||||||
ROAM_STATS_SCAN_TYPE_FULL = 1,
|
ROAM_STATS_SCAN_TYPE_FULL = 1,
|
||||||
ROAM_STATS_SCAN_TYPE_NO_SCAN = 2,
|
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
|
* cm_roam_stats_print_scan_info - Print the roam scan details and candidate AP
|
||||||
* details
|
* details
|
||||||
@@ -2974,7 +2999,7 @@ cm_roam_stats_print_scan_info(struct wlan_objmgr_psoc *psoc,
|
|||||||
|
|
||||||
tmp = buf;
|
tmp = buf;
|
||||||
/* For partial scans, print the channel info */
|
/* 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_cons = qdf_snprint(tmp, buf_left, "{");
|
||||||
buf_left -= buf_cons;
|
buf_left -= buf_cons;
|
||||||
tmp += 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_get_converted_timestamp(timestamp, time);
|
||||||
mlme_nofl_info("%s [ROAM_SCAN]: VDEV[%d] Scan_type: %s %s %s",
|
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);
|
buf1, buf);
|
||||||
cm_stats_log_roam_scan_candidates(scan->ap, scan->num_ap);
|
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].present) {
|
||||||
if (roam_stats->scan[idx].num_chan &&
|
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;)
|
for (i = 0; i < roam_stats->scan[idx].num_chan;)
|
||||||
i++;
|
i++;
|
||||||
|
|
||||||
@@ -4242,7 +4242,8 @@ roam_rt_stats_fill_scan_freq(struct sk_buff *vendor_event, uint8_t idx,
|
|||||||
kfree_skb(vendor_event);
|
kfree_skb(vendor_event);
|
||||||
return;
|
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++) {
|
for (i = 0; i < roam_stats->scan[idx].num_chan; i++) {
|
||||||
if (nla_put_u32(vendor_event, i,
|
if (nla_put_u32(vendor_event, i,
|
||||||
roam_stats->scan[idx].chan_freq[i])) {
|
roam_stats->scan[idx].chan_freq[i])) {
|
||||||
|
Référencer dans un nouveau ticket
Bloquer un utilisateur