qcacld-3.0: Enable full scan logging in cm_roam_scan_info_event
In the api cm_roam_scan_info_event(), only for partial roam scan the frequencies are logged in logcat. For full scan, the expectation is to print the frequency count as the number of characters for scanning all frequencies exceed 255. Enable Roam full scan logging in api cm_roam_scan_info_event() Change-Id: Ib644a4e8d85e434e8b826c7656cda1251134c4fa CRs-Fixed: 3131791
This commit is contained in:

committed by
Madan Koyyalamudi

parent
d7dc1883ba
commit
ebe3c21573
@@ -47,6 +47,9 @@
|
||||
#include "wlan_roam_debug.h"
|
||||
#include "wlan_mlo_mgr_roam.h"
|
||||
#include "wlan_mlo_mgr_sta.h"
|
||||
#include "wlan_mlme_api.h"
|
||||
#include "wlan_policy_mgr_api.h"
|
||||
|
||||
|
||||
#ifdef WLAN_FEATURE_SAE
|
||||
#define CM_IS_FW_FT_SAE_SUPPORTED(fw_akm_bitmap) \
|
||||
@@ -5261,11 +5264,36 @@ send_evt:
|
||||
|
||||
#if defined(WLAN_FEATURE_CONNECTIVITY_LOGGING) && \
|
||||
defined(WLAN_FEATURE_ROAM_OFFLOAD)
|
||||
void cm_roam_scan_info_event(struct wmi_roam_scan_data *scan, uint8_t vdev_id)
|
||||
static
|
||||
bool wlan_is_valid_frequency(uint32_t freq, uint32_t band_capability,
|
||||
uint32_t band_mask)
|
||||
{
|
||||
if ((band_capability == BIT(REG_BAND_5G) ||
|
||||
band_mask == BIT(REG_BAND_5G) ||
|
||||
band_capability == BIT(REG_BAND_6G) ||
|
||||
band_mask == BIT(REG_BAND_6G)) &&
|
||||
WLAN_REG_IS_24GHZ_CH_FREQ(freq))
|
||||
return false;
|
||||
|
||||
if ((band_capability == BIT(REG_BAND_2G) ||
|
||||
band_mask == BIT(REG_BAND_2G)) &&
|
||||
!WLAN_REG_IS_24GHZ_CH_FREQ(freq))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void cm_roam_scan_info_event(struct wlan_objmgr_psoc *psoc,
|
||||
struct wmi_roam_scan_data *scan, uint8_t vdev_id)
|
||||
{
|
||||
int i;
|
||||
struct wlan_log_record *log_record = NULL;
|
||||
struct wmi_roam_candidate_info *ap = scan->ap;
|
||||
uint32_t chan_freq[NUM_CHANNELS];
|
||||
uint8_t count = 0, status, num_chan;
|
||||
uint32_t band_capability = 0, band_mask = 0;
|
||||
bool is_full_scan;
|
||||
struct wlan_objmgr_vdev *vdev = NULL;
|
||||
|
||||
log_record = qdf_mem_malloc(sizeof(*log_record));
|
||||
if (!log_record)
|
||||
@@ -5286,13 +5314,47 @@ void cm_roam_scan_info_event(struct wmi_roam_scan_data *scan, uint8_t vdev_id)
|
||||
if (scan->num_ap)
|
||||
log_record->roam_scan.cand_ap_count = scan->num_ap - 1;
|
||||
|
||||
if (scan->num_chan > MAX_ROAM_SCAN_CHAN)
|
||||
scan->num_chan = MAX_ROAM_SCAN_CHAN;
|
||||
|
||||
log_record->roam_scan.num_scanned_freq = scan->num_chan;
|
||||
for (i = 0; i < scan->num_chan; i++)
|
||||
log_record->roam_scan.scan_freq[i] = scan->chan_freq[i];
|
||||
is_full_scan = scan->type & scan->present;
|
||||
|
||||
if (is_full_scan) {
|
||||
status = mlme_get_fw_scan_channels(psoc, chan_freq, &num_chan);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
goto out;
|
||||
|
||||
status = wlan_mlme_get_band_capability(psoc, &band_capability);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
goto out;
|
||||
|
||||
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id,
|
||||
WLAN_MLME_OBJMGR_ID);
|
||||
if (!vdev)
|
||||
goto out;
|
||||
|
||||
band_mask = policy_mgr_get_connected_vdev_band_mask(vdev);
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_OBJMGR_ID);
|
||||
|
||||
for (i = 0; i < num_chan; i++) {
|
||||
if (!wlan_is_valid_frequency(chan_freq[i],
|
||||
band_capability,
|
||||
band_mask))
|
||||
continue;
|
||||
|
||||
log_record->roam_scan.scan_freq[count] = chan_freq[i];
|
||||
count++;
|
||||
}
|
||||
|
||||
log_record->roam_scan.num_scanned_freq = count;
|
||||
} else {
|
||||
if (scan->num_chan > MAX_ROAM_SCAN_CHAN)
|
||||
scan->num_chan = MAX_ROAM_SCAN_CHAN;
|
||||
|
||||
log_record->roam_scan.num_scanned_freq = scan->num_chan;
|
||||
for (i = 0; i < scan->num_chan; i++)
|
||||
log_record->roam_scan.scan_freq[i] = scan->chan_freq[i];
|
||||
}
|
||||
|
||||
out:
|
||||
wlan_connectivity_log_enqueue(log_record);
|
||||
qdf_mem_free(log_record);
|
||||
}
|
||||
|
@@ -33,12 +33,14 @@
|
||||
defined(WLAN_FEATURE_ROAM_OFFLOAD)
|
||||
/**
|
||||
* cm_roam_scan_info_event() - send scan info to userspace
|
||||
* @psoc: psoc common object
|
||||
* @scan: roam scan data
|
||||
* @vdev_id: vdev id
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void cm_roam_scan_info_event(struct wmi_roam_scan_data *scan, uint8_t vdev_id);
|
||||
void cm_roam_scan_info_event(struct wlan_objmgr_psoc *psoc,
|
||||
struct wmi_roam_scan_data *scan, uint8_t vdev_id);
|
||||
|
||||
/**
|
||||
* cm_roam_trigger_info_event() - send trigger info to userspace
|
||||
@@ -80,7 +82,8 @@ void cm_roam_result_info_event(struct wlan_objmgr_psoc *psoc,
|
||||
uint8_t vdev_id);
|
||||
#else
|
||||
static inline void
|
||||
cm_roam_scan_info_event(struct wmi_roam_scan_data *scan, uint8_t vdev_id)
|
||||
cm_roam_scan_info_event(struct wlan_objmgr_psoc *psoc,
|
||||
struct wmi_roam_scan_data *scan, uint8_t vdev_id)
|
||||
{
|
||||
}
|
||||
|
||||
|
@@ -2844,6 +2844,7 @@ cm_stats_log_roam_scan_candidates(struct wmi_roam_candidate_info *ap,
|
||||
/**
|
||||
* cm_roam_stats_print_scan_info - Print the roam scan details and candidate AP
|
||||
* details
|
||||
* @psoc: psoc common object
|
||||
* @scan: Pointer to the received tlv after sanitization
|
||||
* @vdev_id: Vdev ID
|
||||
* @trigger: Roam scan trigger reason
|
||||
@@ -2855,7 +2856,8 @@ cm_stats_log_roam_scan_candidates(struct wmi_roam_candidate_info *ap,
|
||||
* Return: None
|
||||
*/
|
||||
static void
|
||||
cm_roam_stats_print_scan_info(struct wmi_roam_scan_data *scan, uint8_t vdev_id,
|
||||
cm_roam_stats_print_scan_info(struct wlan_objmgr_psoc *psoc,
|
||||
struct wmi_roam_scan_data *scan, uint8_t vdev_id,
|
||||
uint32_t trigger, uint32_t timestamp)
|
||||
{
|
||||
uint16_t num_ch = scan->num_chan;
|
||||
@@ -2865,7 +2867,7 @@ cm_roam_stats_print_scan_info(struct wmi_roam_scan_data *scan, uint8_t vdev_id,
|
||||
char time[TIME_STRING_LEN];
|
||||
|
||||
/* Update roam scan info to userspace */
|
||||
cm_roam_scan_info_event(scan, vdev_id);
|
||||
cm_roam_scan_info_event(psoc, scan, vdev_id);
|
||||
|
||||
buf = qdf_mem_malloc(ROAM_CHANNEL_BUF_SIZE);
|
||||
if (!buf)
|
||||
@@ -3169,7 +3171,8 @@ cm_roam_stats_event_handler(struct wlan_objmgr_psoc *psoc,
|
||||
|
||||
if (stats_info->scan[i].present &&
|
||||
stats_info->trigger[i].present)
|
||||
cm_roam_stats_print_scan_info(&stats_info->scan[i],
|
||||
cm_roam_stats_print_scan_info(psoc,
|
||||
&stats_info->scan[i],
|
||||
stats_info->vdev_id,
|
||||
stats_info->trigger[i].trigger_reason,
|
||||
stats_info->trigger[i].timestamp);
|
||||
@@ -3251,7 +3254,8 @@ cm_roam_stats_event_handler(struct wlan_objmgr_psoc *psoc,
|
||||
|
||||
if (stats_info->scan[0].present &&
|
||||
stats_info->trigger[0].present)
|
||||
cm_roam_stats_print_scan_info(&stats_info->scan[0],
|
||||
cm_roam_stats_print_scan_info(psoc,
|
||||
&stats_info->scan[0],
|
||||
stats_info->vdev_id,
|
||||
stats_info->trigger[0].trigger_reason,
|
||||
stats_info->trigger[0].timestamp);
|
||||
|
Reference in New Issue
Block a user