|
@@ -3263,256 +3263,6 @@ int wma_roam_auth_offload_event_handler(WMA_HANDLE handle, uint8_t *event,
|
|
|
}
|
|
|
|
|
|
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
|
|
-
|
|
|
-#ifdef FEATURE_WLAN_DIAG_SUPPORT
|
|
|
-/**
|
|
|
- * wma_diag_log_roam_trigger_info - Send diag log for roam trigger related
|
|
|
- * data
|
|
|
- * @src: Source roam trigger related data
|
|
|
- * @vdev_id: Vdev id
|
|
|
- *
|
|
|
- * Return: None
|
|
|
- */
|
|
|
-static void
|
|
|
-wma_diag_log_roam_trigger_info(struct wmi_roam_trigger_info *src,
|
|
|
- uint8_t vdev_id)
|
|
|
-{
|
|
|
- struct host_log_wlan_roam_trigger_info *roam_trigger_evt = NULL;
|
|
|
-
|
|
|
- WLAN_HOST_DIAG_LOG_ALLOC(roam_trigger_evt,
|
|
|
- struct host_log_wlan_roam_trigger_info,
|
|
|
- LOG_WLAN_ROAM_TRIGGER_INFO_C);
|
|
|
- if (!roam_trigger_evt)
|
|
|
- return;
|
|
|
-
|
|
|
- roam_trigger_evt->version = 1;
|
|
|
- roam_trigger_evt->vdev_id = vdev_id;
|
|
|
- roam_trigger_evt->trigger_reason = src->trigger_reason;
|
|
|
- roam_trigger_evt->trigger_sub_reason = src->trigger_sub_reason;
|
|
|
- roam_trigger_evt->current_rssi = src->current_rssi;
|
|
|
- roam_trigger_evt->timestamp = src->timestamp;
|
|
|
-
|
|
|
- switch (src->trigger_reason) {
|
|
|
- case WMI_ROAM_TRIGGER_REASON_PER:
|
|
|
- case WMI_ROAM_TRIGGER_REASON_BMISS:
|
|
|
- case WMI_ROAM_TRIGGER_REASON_HIGH_RSSI:
|
|
|
- case WMI_ROAM_TRIGGER_REASON_PERIODIC:
|
|
|
- case WMI_ROAM_TRIGGER_REASON_MAWC:
|
|
|
- case WMI_ROAM_TRIGGER_REASON_DENSE:
|
|
|
- case WMI_ROAM_TRIGGER_REASON_BACKGROUND:
|
|
|
- case WMI_ROAM_TRIGGER_REASON_IDLE:
|
|
|
- case WMI_ROAM_TRIGGER_REASON_FORCED:
|
|
|
- case WMI_ROAM_TRIGGER_REASON_UNIT_TEST:
|
|
|
- break;
|
|
|
- case WMI_ROAM_TRIGGER_REASON_BTM:
|
|
|
- roam_trigger_evt->btm_trig_data.btm_request_mode =
|
|
|
- src->btm_trig_data.btm_request_mode;
|
|
|
- roam_trigger_evt->btm_trig_data.disassoc_timer =
|
|
|
- src->btm_trig_data.disassoc_timer;
|
|
|
- roam_trigger_evt->btm_trig_data.validity_interval =
|
|
|
- src->btm_trig_data.validity_interval;
|
|
|
- roam_trigger_evt->btm_trig_data.candidate_list_count =
|
|
|
- src->btm_trig_data.candidate_list_count;
|
|
|
- roam_trigger_evt->btm_trig_data.btm_resp_status =
|
|
|
- src->btm_trig_data.btm_resp_status;
|
|
|
- break;
|
|
|
- case WMI_ROAM_TRIGGER_REASON_DEAUTH:
|
|
|
- roam_trigger_evt->deauth_trig_data.type =
|
|
|
- src->deauth_trig_data.type;
|
|
|
- roam_trigger_evt->deauth_trig_data.reason =
|
|
|
- src->deauth_trig_data.reason;
|
|
|
- break;
|
|
|
- case WMI_ROAM_TRIGGER_REASON_BSS_LOAD:
|
|
|
- roam_trigger_evt->cu_load_data.cu_load =
|
|
|
- src->cu_trig_data.cu_load;
|
|
|
- break;
|
|
|
- case WMI_ROAM_TRIGGER_REASON_LOW_RSSI:
|
|
|
- roam_trigger_evt->rssi_trig_data.threshold =
|
|
|
- src->rssi_trig_data.threshold;
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- WLAN_HOST_DIAG_LOG_REPORT(roam_trigger_evt);
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * wma_diag_log_roam_scan_info - Send diag log for roam scan related info
|
|
|
- * @scan: Pointer to source roam scan data
|
|
|
- * @vdev_id: vdev id
|
|
|
- * @trigger_reason: Roaming trigger reason
|
|
|
- * @timestamp: Time of the day in millisecs
|
|
|
- *
|
|
|
- * Return: None
|
|
|
- */
|
|
|
-static void
|
|
|
-wma_diag_log_roam_scan_info(struct wmi_roam_scan_data *scan, uint8_t vdev_id,
|
|
|
- uint32_t trigger_reason, uint32_t timestamp)
|
|
|
-{
|
|
|
- struct host_log_wlan_roam_scan_data *scan_data = NULL;
|
|
|
- uint8_t i;
|
|
|
-
|
|
|
- WLAN_HOST_DIAG_LOG_ALLOC(scan_data,
|
|
|
- struct host_log_wlan_roam_scan_data,
|
|
|
- LOG_WLAN_ROAM_SCAN_INFO_C);
|
|
|
- if (!scan_data)
|
|
|
- return;
|
|
|
-
|
|
|
- scan_data->version = 1;
|
|
|
- scan_data->type = scan->type;
|
|
|
- scan_data->num_chan = scan->num_chan;
|
|
|
- scan_data->next_rssi_threshold = scan->next_rssi_threshold;
|
|
|
- scan_data->vdev_id = vdev_id;
|
|
|
- scan_data->timestamp = timestamp;
|
|
|
- for (i = 0; i < scan_data->num_chan; i++)
|
|
|
- scan_data->chan_freq[i] = scan->chan_freq[i];
|
|
|
-
|
|
|
- scan_data->num_ap = scan->num_ap;
|
|
|
- if (scan->num_ap > MAX_ROAM_CANDIDATE_AP)
|
|
|
- scan_data->num_ap = MAX_ROAM_CANDIDATE_AP;
|
|
|
-
|
|
|
- for (i = 0; i < scan_data->num_ap; i++) {
|
|
|
- scan_data->ap[i].version = 1;
|
|
|
- scan_data->ap[i].timestamp = scan->ap[i].timestamp;
|
|
|
- scan_data->ap[i].type = scan->ap[i].type;
|
|
|
- scan_data->ap[i].freq = scan->ap[i].freq;
|
|
|
- scan_data->ap[i].cu_load = scan->ap[i].cu_load;
|
|
|
- scan_data->ap[i].cu_score = scan->ap[i].cu_score;
|
|
|
- scan_data->ap[i].rssi = scan->ap[i].rssi;
|
|
|
- scan_data->ap[i].rssi_score = scan->ap[i].rssi_score;
|
|
|
- scan_data->ap[i].total_score = scan->ap[i].total_score;
|
|
|
- scan_data->ap[i].etp = scan->ap[i].etp;
|
|
|
- qdf_mem_copy(scan_data->ap[i].bssid, scan->ap[i].bssid.bytes,
|
|
|
- QDF_MAC_ADDR_SIZE);
|
|
|
- }
|
|
|
-
|
|
|
- WLAN_HOST_DIAG_LOG_REPORT(scan_data);
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * wma_diag_log_roam_result - Send diag log for roaming result
|
|
|
- * @res: Pointer to the source roam result data
|
|
|
- * @vdev_id: vdev id
|
|
|
- *
|
|
|
- * Return: None
|
|
|
- */
|
|
|
-static void
|
|
|
-wma_diag_log_roam_result(struct wmi_roam_result *res, uint8_t vdev_id)
|
|
|
-{
|
|
|
- struct host_log_wlan_roam_result_info *roam_result = NULL;
|
|
|
-
|
|
|
- WLAN_HOST_DIAG_LOG_ALLOC(roam_result,
|
|
|
- struct host_log_wlan_roam_result_info,
|
|
|
- LOG_WLAN_ROAM_RESULT_INFO_C);
|
|
|
- if (!roam_result)
|
|
|
- return;
|
|
|
-
|
|
|
- roam_result->version = 1;
|
|
|
- roam_result->vdev_id = vdev_id;
|
|
|
- if (res->status)
|
|
|
- roam_result->status = true;
|
|
|
- else
|
|
|
- roam_result->status = false;
|
|
|
-
|
|
|
- roam_result->timestamp = res->timestamp;
|
|
|
- roam_result->fail_reason = res->fail_reason;
|
|
|
-
|
|
|
- WLAN_HOST_DIAG_LOG_REPORT(roam_result);
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * wma_diag_log_11kv_info - Send diag log for 11kv neighbor/btm
|
|
|
- * report/request.
|
|
|
- * @neigh_rpt: Pointer to the source 11kv data structure
|
|
|
- * @vdev_id: Vdev id
|
|
|
- * @is_roam_success: Roaming success or failure
|
|
|
- *
|
|
|
- * Return: None
|
|
|
- */
|
|
|
-static void
|
|
|
-wma_diag_log_11kv_info(struct wmi_neighbor_report_data *neigh_rpt,
|
|
|
- uint8_t vdev_id, bool is_roam_success)
|
|
|
-{
|
|
|
- struct host_log_wlan_rrm_tx_rx_info *rrm_tx = NULL;
|
|
|
- struct host_log_wlan_rrm_tx_rx_info *rrm_rx = NULL;
|
|
|
- uint8_t i;
|
|
|
-
|
|
|
- WLAN_HOST_DIAG_LOG_ALLOC(rrm_rx, struct host_log_wlan_rrm_tx_rx_info,
|
|
|
- LOG_WLAN_RRM_TX_RX_INFO_C);
|
|
|
- if (!rrm_rx)
|
|
|
- return;
|
|
|
-
|
|
|
- WLAN_HOST_DIAG_LOG_ALLOC(rrm_tx, struct host_log_wlan_rrm_tx_rx_info,
|
|
|
- LOG_WLAN_RRM_TX_RX_INFO_C);
|
|
|
- if (!rrm_tx) {
|
|
|
- qdf_mem_free(rrm_rx);
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- rrm_rx->version = 1;
|
|
|
- rrm_rx->vdev_id = vdev_id;
|
|
|
- rrm_rx->origin = FW;
|
|
|
- rrm_rx->is_tx = false;
|
|
|
- rrm_rx->timestamp = neigh_rpt->req_time;
|
|
|
- rrm_rx->roam_result = is_roam_success;
|
|
|
-
|
|
|
- if (neigh_rpt->req_type) {
|
|
|
- rrm_rx->action_category = ACTION_CATEGORY_WNM;
|
|
|
- rrm_rx->rrm_action_code = WNM_BSS_TM_REQUEST;
|
|
|
- } else {
|
|
|
- rrm_rx->action_category = ACTION_CATEGORY_RRM;
|
|
|
- rrm_rx->rrm_action_code = RRM_NEIGHBOR_REQ;
|
|
|
- }
|
|
|
-
|
|
|
- rrm_rx->req_num_freq = neigh_rpt->num_freq;
|
|
|
- for (i = 0; i < neigh_rpt->num_freq; i++)
|
|
|
- rrm_rx->req_freq[i] = neigh_rpt->freq[i];
|
|
|
-
|
|
|
- WLAN_HOST_DIAG_LOG_REPORT(rrm_rx);
|
|
|
-
|
|
|
- rrm_tx->version = 1;
|
|
|
- rrm_tx->vdev_id = vdev_id;
|
|
|
- rrm_tx->is_tx = true;
|
|
|
- rrm_tx->origin = FW;
|
|
|
- rrm_tx->timestamp = neigh_rpt->resp_time;
|
|
|
- rrm_tx->roam_result = is_roam_success;
|
|
|
-
|
|
|
- if (neigh_rpt->req_type) {
|
|
|
- rrm_tx->action_category = ACTION_CATEGORY_WNM;
|
|
|
- rrm_tx->rrm_action_code = WNM_BSS_TM_RESPONSE;
|
|
|
- } else {
|
|
|
- rrm_tx->action_category = ACTION_CATEGORY_RRM;
|
|
|
- rrm_tx->rrm_action_code = RRM_NEIGHBOR_RPT;
|
|
|
- }
|
|
|
-
|
|
|
- WLAN_HOST_DIAG_LOG_REPORT(rrm_tx);
|
|
|
-}
|
|
|
-#else
|
|
|
-static inline void
|
|
|
-wma_diag_log_roam_scan_info(struct wmi_roam_scan_data *scan, uint8_t vdev_id,
|
|
|
- uint32_t trigger_reason, uint32_t timestamp)
|
|
|
-{
|
|
|
-}
|
|
|
-
|
|
|
-static inline void
|
|
|
-wma_diag_log_roam_trigger_info(struct wmi_roam_trigger_info *src,
|
|
|
- uint8_t vdev_id)
|
|
|
-{
|
|
|
-}
|
|
|
-
|
|
|
-static inline void
|
|
|
-wma_diag_log_roam_result(struct wmi_roam_result *res, uint8_t vdev_id)
|
|
|
-{
|
|
|
-}
|
|
|
-
|
|
|
-static void
|
|
|
-wma_diag_log_11kv_info(struct wmi_neighbor_report_data *neigh_rpt,
|
|
|
- uint8_t vdev_id, bool is_roam_success)
|
|
|
-{
|
|
|
-}
|
|
|
-#endif
|
|
|
-
|
|
|
/**
|
|
|
* wma_get_trigger_detail_str - Return roam trigger string from the
|
|
|
* enum WMI_ROAM_TRIGGER_REASON
|
|
@@ -3986,24 +3736,6 @@ int wma_roam_stats_event_handler(WMA_HANDLE handle, uint8_t *event,
|
|
|
if (roam_info->data_11kv.present)
|
|
|
wma_rso_print_11kv_info(&roam_info->data_11kv, vdev_id);
|
|
|
|
|
|
- /* CNSS diag log*/
|
|
|
- if (roam_info->trigger.present)
|
|
|
- wma_diag_log_roam_trigger_info(&roam_info->trigger,
|
|
|
- vdev_id);
|
|
|
-
|
|
|
- if (roam_info->scan.present)
|
|
|
- wma_diag_log_roam_scan_info(
|
|
|
- &roam_info->scan, vdev_id,
|
|
|
- roam_info->trigger.trigger_reason,
|
|
|
- roam_info->trigger.timestamp);
|
|
|
-
|
|
|
- if (roam_info->result.present)
|
|
|
- wma_diag_log_roam_result(&roam_info->result, vdev_id);
|
|
|
-
|
|
|
- if (roam_info->data_11kv.present)
|
|
|
- wma_diag_log_11kv_info(&roam_info->data_11kv, vdev_id,
|
|
|
- roam_info->result.status);
|
|
|
-
|
|
|
qdf_mem_free(roam_info);
|
|
|
}
|
|
|
|