|
@@ -3063,6 +3063,7 @@ cm_roam_stats_print_roam_result(struct wlan_objmgr_psoc *psoc,
|
|
|
|
|
|
/**
|
|
|
* cm_roam_stats_print_11kv_info - Print neighbor report/BTM related data
|
|
|
+ * @psoc: Pointer to psoc object
|
|
|
* @neigh_rpt: Pointer to the extracted TLV structure
|
|
|
* @vdev_id: Vdev ID
|
|
|
*
|
|
@@ -3072,7 +3073,8 @@ cm_roam_stats_print_roam_result(struct wlan_objmgr_psoc *psoc,
|
|
|
* Return: none
|
|
|
*/
|
|
|
static void
|
|
|
-cm_roam_stats_print_11kv_info(struct wmi_neighbor_report_data *neigh_rpt,
|
|
|
+cm_roam_stats_print_11kv_info(struct wlan_objmgr_psoc *psoc,
|
|
|
+ struct wmi_neighbor_report_data *neigh_rpt,
|
|
|
uint8_t vdev_id)
|
|
|
{
|
|
|
char time[TIME_STRING_LEN], time1[TIME_STRING_LEN];
|
|
@@ -3080,6 +3082,7 @@ cm_roam_stats_print_11kv_info(struct wmi_neighbor_report_data *neigh_rpt,
|
|
|
uint8_t type = neigh_rpt->req_type, i;
|
|
|
uint16_t buf_left = ROAM_CHANNEL_BUF_SIZE, buf_cons;
|
|
|
uint8_t num_ch = neigh_rpt->num_freq;
|
|
|
+ struct wlan_objmgr_vdev *vdev;
|
|
|
|
|
|
if (!type)
|
|
|
return;
|
|
@@ -3113,6 +3116,18 @@ cm_roam_stats_print_11kv_info(struct wmi_neighbor_report_data *neigh_rpt,
|
|
|
|
|
|
if (type == WLAN_ROAM_11KV_REQ_TYPE_BTM)
|
|
|
cm_roam_btm_query_event(neigh_rpt, vdev_id);
|
|
|
+ else if (type == WLAN_ROAM_11KV_REQ_TYPE_NEIGH_RPT) {
|
|
|
+ vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id,
|
|
|
+ WLAN_MLME_OBJMGR_ID);
|
|
|
+ if (!vdev) {
|
|
|
+ mlme_err("vdev pointer not found");
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
+
|
|
|
+ cm_roam_neigh_rpt_req_event(neigh_rpt, vdev);
|
|
|
+
|
|
|
+ wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_OBJMGR_ID);
|
|
|
+ }
|
|
|
|
|
|
if (neigh_rpt->resp_time) {
|
|
|
mlme_get_converted_timestamp(neigh_rpt->resp_time, time1);
|
|
@@ -3121,11 +3136,16 @@ cm_roam_stats_print_11kv_info(struct wmi_neighbor_report_data *neigh_rpt,
|
|
|
"BTM_REQ" : "NEIGH_RPT_RSP",
|
|
|
vdev_id,
|
|
|
(num_ch > 0) ? buf : "NO Ch update");
|
|
|
+
|
|
|
+ if (type == WLAN_ROAM_11KV_REQ_TYPE_NEIGH_RPT)
|
|
|
+ cm_roam_neigh_rpt_resp_event(neigh_rpt, vdev_id);
|
|
|
+
|
|
|
} else {
|
|
|
mlme_nofl_info("%s No response received from AP",
|
|
|
(type == WLAN_ROAM_11KV_REQ_TYPE_BTM) ?
|
|
|
"BTM" : "NEIGH_RPT");
|
|
|
}
|
|
|
+out:
|
|
|
qdf_mem_free(buf);
|
|
|
}
|
|
|
|
|
@@ -3277,7 +3297,7 @@ cm_roam_handle_btm_stats(struct wlan_objmgr_psoc *psoc,
|
|
|
bool log_btm_frames_only = false;
|
|
|
|
|
|
if (stats_info->data_11kv[i].present)
|
|
|
- cm_roam_stats_print_11kv_info(&stats_info->data_11kv[i],
|
|
|
+ cm_roam_stats_print_11kv_info(psoc, &stats_info->data_11kv[i],
|
|
|
stats_info->vdev_id);
|
|
|
|
|
|
/*
|
|
@@ -3450,7 +3470,8 @@ cm_roam_stats_event_handler(struct wlan_objmgr_psoc *psoc,
|
|
|
*/
|
|
|
|
|
|
if (stats_info->data_11kv[0].present)
|
|
|
- cm_roam_stats_print_11kv_info(&stats_info->data_11kv[0],
|
|
|
+ cm_roam_stats_print_11kv_info(psoc,
|
|
|
+ &stats_info->data_11kv[0],
|
|
|
stats_info->vdev_id);
|
|
|
|
|
|
if (stats_info->trigger[0].present &&
|