qcacld-3.0: Fix timestamp values for BTM connectivity logs

Firmware timestamp values are not printed for BTM_QUERY &
BTM_REQ events and wrong value for BTM_RSP. This is because
the timestamp values is read from wrong structures.

Read the firmware timestamp values from correct wmi structure
to fill the connectivity diag event

Change-Id: I568e87ee3e4bb66d3f73d353df794ced92b418c1
CRs-Fixed: 3788350
Šī revīzija ir iekļauta:
Abhinav Kumar
2024-04-18 04:21:07 -07:00
revīziju iesūtīja Ravindra Konda
vecāks 5d70722fa2
revīzija 404d297834
3 mainīti faili ar 37 papildinājumiem un 18 dzēšanām

Parādīt failu

@@ -6955,7 +6955,7 @@ cm_roam_btm_query_event(struct wmi_neighbor_report_data *btm_data,
qdf_mem_zero(&wlan_diag_event, sizeof(wlan_diag_event));
populate_diag_cmn(&wlan_diag_event.diag_cmn, vdev_id,
(uint64_t)btm_data->timestamp, NULL);
(uint64_t)btm_data->req_time, NULL);
wlan_diag_event.subtype = WLAN_CONN_DIAG_BTM_QUERY_EVENT;
wlan_diag_event.version = DIAG_BTM_VERSION_2;
@@ -7076,7 +7076,7 @@ cm_roam_btm_resp_event(struct wmi_roam_trigger_info *trigger_info,
qdf_mem_zero(&wlan_diag_event, sizeof(wlan_diag_event));
populate_diag_cmn(&wlan_diag_event.diag_cmn, vdev_id,
(uint64_t)trigger_info->timestamp,
(uint64_t)btm_data->timestamp,
&btm_data->target_bssid);
wlan_diag_event.version = DIAG_BTM_VERSION_2;
@@ -7124,7 +7124,8 @@ cm_roam_btm_candidate_event(struct wmi_btm_req_candidate_info *btm_data,
}
QDF_STATUS
cm_roam_btm_req_event(struct wmi_roam_btm_trigger_data *btm_data,
cm_roam_btm_req_event(struct wmi_neighbor_report_data *neigh_rpt,
struct wmi_roam_btm_trigger_data *btm_data,
struct wmi_roam_trigger_info *trigger_info,
uint8_t vdev_id, bool is_wtc)
{
@@ -7145,9 +7146,13 @@ cm_roam_btm_req_event(struct wmi_roam_btm_trigger_data *btm_data,
btm_data->disassoc_timer)
return status;
populate_diag_cmn(&wlan_diag_event.diag_cmn, vdev_id,
(uint64_t)btm_data->timestamp,
NULL);
if (neigh_rpt->resp_time)
populate_diag_cmn(&wlan_diag_event.diag_cmn, vdev_id,
(uint64_t)neigh_rpt->resp_time, NULL);
else
populate_diag_cmn(&wlan_diag_event.diag_cmn, vdev_id,
(uint64_t)trigger_info->timestamp, NULL);
wlan_diag_event.subtype = WLAN_CONN_DIAG_BTM_REQ_EVENT;
wlan_diag_event.version = DIAG_BTM_VERSION_2;

Parādīt failu

@@ -603,15 +603,17 @@ cm_roam_mgmt_frame_event(struct wlan_objmgr_vdev *vdev,
/**
* cm_roam_btm_req_event - Send BTM request related logging event
* @vdev_id: Vdev id
* @neigh_rpt: Neighbor report/BTM request related data
* @btm_data: BTM trigger related data
* @trigger_info: Roam trigger related info
* @vdev_id: vdev id
* @is_wtc: Is WTC or BTM response
*
* Return: QDF_STATUS
*/
QDF_STATUS
cm_roam_btm_req_event(struct wmi_roam_btm_trigger_data *btm_data,
cm_roam_btm_req_event(struct wmi_neighbor_report_data *neigh_rpt,
struct wmi_roam_btm_trigger_data *btm_data,
struct wmi_roam_trigger_info *trigger_info,
uint8_t vdev_id, bool is_wtc);
@@ -696,7 +698,8 @@ cm_roam_mgmt_frame_event(struct wlan_objmgr_vdev *vdev,
}
static inline QDF_STATUS
cm_roam_btm_req_event(struct wmi_roam_btm_trigger_data *btm_data,
cm_roam_btm_req_event(struct wmi_neighbor_report_data *neigh_rpt,
struct wmi_roam_btm_trigger_data *btm_data,
struct wmi_roam_trigger_info *trigger_info,
uint8_t vdev_id, bool is_wtc)
{

Parādīt failu

@@ -2899,6 +2899,7 @@ cm_roam_scan_ch_list_event_handler(struct cm_roam_scan_ch_resp *data)
/**
* cm_roam_stats_get_trigger_detail_str - Return roam trigger string from the
* enum roam_trigger_reason
* @neigh_rpt: Neighbor report/BTM request related data
* @ptr: Pointer to the roam trigger info
* @buf: Destination buffer to write the reason string
* @is_full_scan: Is roam scan partial scan or all channels scan
@@ -2907,7 +2908,8 @@ cm_roam_scan_ch_list_event_handler(struct cm_roam_scan_ch_resp *data)
* Return: None
*/
static void
cm_roam_stats_get_trigger_detail_str(struct wmi_roam_trigger_info *ptr,
cm_roam_stats_get_trigger_detail_str(struct wmi_neighbor_report_data *neigh_rpt,
struct wmi_roam_trigger_info *ptr,
char *buf, bool is_full_scan,
uint8_t vdev_id)
{
@@ -2938,7 +2940,8 @@ cm_roam_stats_get_trigger_detail_str(struct wmi_roam_trigger_info *ptr,
case ROAM_TRIGGER_REASON_UNIT_TEST:
break;
case ROAM_TRIGGER_REASON_BTM:
cm_roam_btm_req_event(&ptr->btm_trig_data, ptr, vdev_id, false);
cm_roam_btm_req_event(neigh_rpt, &ptr->btm_trig_data, ptr,
vdev_id, false);
buf_cons = qdf_snprint(
temp, buf_left,
"Req_mode: %d Disassoc_timer: %d",
@@ -3030,6 +3033,7 @@ cm_roam_stats_get_trigger_detail_str(struct wmi_roam_trigger_info *ptr,
/**
* cm_roam_stats_print_trigger_info - Roam trigger related details
* @psoc: Pointer to PSOC object
* @neigh_rpt: Neighbor report/BTM request related data
* @data: Pointer to the roam trigger data
* @scan_data: Roam scan data pointer
* @vdev_id: Vdev ID
@@ -3042,6 +3046,7 @@ cm_roam_stats_get_trigger_detail_str(struct wmi_roam_trigger_info *ptr,
*/
static void
cm_roam_stats_print_trigger_info(struct wlan_objmgr_psoc *psoc,
struct wmi_neighbor_report_data *neigh_rpt,
struct wmi_roam_trigger_info *data,
struct wmi_roam_scan_data *scan_data,
uint8_t vdev_id, bool is_full_scan)
@@ -3054,7 +3059,8 @@ cm_roam_stats_print_trigger_info(struct wlan_objmgr_psoc *psoc,
if (!buf)
return;
cm_roam_stats_get_trigger_detail_str(data, buf, is_full_scan, vdev_id);
cm_roam_stats_get_trigger_detail_str(neigh_rpt, data, buf,
is_full_scan, vdev_id);
mlme_get_converted_timestamp(data->timestamp, time);
/* Update roam trigger info to userspace */
@@ -3604,7 +3610,8 @@ cm_roam_handle_btm_stats(struct wlan_objmgr_psoc *psoc,
*/
if (stats_info->scan[i].present &&
stats_info->scan[i].type == ROAM_STATS_SCAN_TYPE_NO_SCAN) {
cm_roam_btm_req_event(&stats_info->trigger[i].btm_trig_data,
cm_roam_btm_req_event(&stats_info->data_11kv[i],
&stats_info->trigger[i].btm_trig_data,
&stats_info->trigger[i],
stats_info->vdev_id, false);
log_btm_frames_only = true;
@@ -3616,7 +3623,9 @@ cm_roam_handle_btm_stats(struct wlan_objmgr_psoc *psoc,
stats_info->scan[i].type;
/* BTM request diag log event will be sent from inside below */
cm_roam_stats_print_trigger_info(psoc, &stats_info->trigger[i],
cm_roam_stats_print_trigger_info(psoc,
&stats_info->data_11kv[i],
&stats_info->trigger[i],
&stats_info->scan[i],
stats_info->vdev_id,
is_full_scan);
@@ -4384,7 +4393,8 @@ cm_roam_stats_event_handler(struct wlan_objmgr_psoc *psoc,
}
cm_roam_stats_print_trigger_info(
psoc, &stats_info->trigger[i],
psoc, &stats_info->data_11kv[i],
&stats_info->trigger[i],
&stats_info->scan[i],
stats_info->vdev_id, is_full_scan);
@@ -4469,9 +4479,10 @@ cm_roam_stats_event_handler(struct wlan_objmgr_psoc *psoc,
ROAM_TRIGGER_REASON_WTC_BTM)
is_wtc = true;
cm_roam_btm_req_event(&stats_info->trigger[0].btm_trig_data,
&stats_info->trigger[0],
stats_info->vdev_id, is_wtc);
cm_roam_btm_req_event(&stats_info->data_11kv[0],
&stats_info->trigger[0].btm_trig_data,
&stats_info->trigger[0],
stats_info->vdev_id, is_wtc);
}
if (stats_info->scan[0].present &&