|
@@ -6189,141 +6189,6 @@ void cm_roam_result_info_event(struct wlan_objmgr_psoc *psoc,
|
|
|
|
|
|
#elif defined(WLAN_FEATURE_CONNECTIVITY_LOGGING) && \
|
|
|
defined(WLAN_FEATURE_ROAM_OFFLOAD)
|
|
|
-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)
|
|
|
- return;
|
|
|
-
|
|
|
- log_record->vdev_id = vdev_id;
|
|
|
- log_record->timestamp_us = qdf_get_time_of_the_day_us();
|
|
|
- log_record->fw_timestamp_us = (uint64_t)scan->ap->timestamp * 1000;
|
|
|
- log_record->ktime_us = qdf_ktime_to_us(qdf_ktime_get());
|
|
|
- log_record->log_subtype = WLAN_ROAM_SCAN_DONE;
|
|
|
-
|
|
|
- qdf_copy_macaddr(&log_record->bssid, &ap->bssid);
|
|
|
-
|
|
|
- /*
|
|
|
- * scan->num_ap includes current connected AP also
|
|
|
- * so subtract 1 from the count to get total candidate APs
|
|
|
- */
|
|
|
- if (scan->num_ap)
|
|
|
- log_record->roam_scan.cand_ap_count = scan->num_ap - 1;
|
|
|
-
|
|
|
-
|
|
|
- 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_roaming_vdev_band_mask(psoc, vdev_id);
|
|
|
- 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];
|
|
|
- }
|
|
|
-
|
|
|
- log_record->roam_scan.is_btcoex_active = scan->is_btcoex_active;
|
|
|
-
|
|
|
-out:
|
|
|
- wlan_connectivity_log_enqueue(log_record);
|
|
|
- qdf_mem_free(log_record);
|
|
|
-}
|
|
|
-
|
|
|
-void cm_roam_trigger_info_event(struct wmi_roam_trigger_info *data,
|
|
|
- struct wmi_roam_scan_data *scan_data,
|
|
|
- uint8_t vdev_id, bool is_full_scan)
|
|
|
-{
|
|
|
- struct wlan_log_record *log_record = NULL;
|
|
|
- uint8_t i;
|
|
|
-
|
|
|
- log_record = qdf_mem_malloc(sizeof(*log_record));
|
|
|
- if (!log_record)
|
|
|
- return;
|
|
|
-
|
|
|
- log_record->vdev_id = vdev_id;
|
|
|
- log_record->timestamp_us = qdf_get_time_of_the_day_us();
|
|
|
- log_record->ktime_us = qdf_ktime_to_us(qdf_ktime_get());
|
|
|
- log_record->log_subtype = WLAN_ROAM_SCAN_START;
|
|
|
- log_record->roam_trig.trigger_reason = data->trigger_reason;
|
|
|
- log_record->roam_trig.trigger_sub_reason = data->trigger_sub_reason;
|
|
|
-
|
|
|
- log_record->roam_trig.current_rssi = 0;
|
|
|
- log_record->roam_trig.cu_load = 0;
|
|
|
-
|
|
|
- /*
|
|
|
- * Get the current AP rssi & CU load from the
|
|
|
- * wmi_roam_ap_info tlv in roam scan results
|
|
|
- */
|
|
|
- if (scan_data->present) {
|
|
|
- for (i = 0; i < scan_data->num_ap; i++) {
|
|
|
- if (i >= MAX_ROAM_CANDIDATE_AP)
|
|
|
- break;
|
|
|
-
|
|
|
- if (scan_data->ap[i].type ==
|
|
|
- WLAN_ROAM_SCAN_CURRENT_AP) {
|
|
|
- log_record->roam_trig.current_rssi =
|
|
|
- (-1) * scan_data->ap[i].rssi;
|
|
|
- log_record->roam_trig.cu_load =
|
|
|
- scan_data->ap[i].cu_load;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (data->trigger_reason == ROAM_TRIGGER_REASON_PERIODIC ||
|
|
|
- data->trigger_reason == ROAM_TRIGGER_REASON_LOW_RSSI) {
|
|
|
- if (data->common_roam)
|
|
|
- log_record->roam_trig.rssi_threshold =
|
|
|
- (-1) * data->low_rssi_trig_data.roam_rssi_threshold;
|
|
|
- else
|
|
|
- log_record->roam_trig.rssi_threshold =
|
|
|
- (-1) * data->rssi_trig_data.threshold;
|
|
|
- }
|
|
|
-
|
|
|
- log_record->roam_trig.is_full_scan = is_full_scan;
|
|
|
- log_record->fw_timestamp_us = (uint64_t)data->timestamp * 1000;
|
|
|
-
|
|
|
- wlan_connectivity_log_enqueue(log_record);
|
|
|
- qdf_mem_free(log_record);
|
|
|
-}
|
|
|
|
|
|
#define ETP_MAX_VALUE 10000000
|
|
|
|