qcacld-3.0: Send beacon miss disconnection logging event

Add support to send beacon miss disconnection logging event.
Fix the diag attribute end marker in the event table.

Change-Id: I11fc8859af383b69bcba42654fb3a2bc597fef83
CRs-Fixed: 3056266
このコミットが含まれているのは:
Pragaspathi Thilagaraj
2021-10-20 00:03:10 +05:30
committed by Madan Koyyalamudi
コミット ac1c7266fd
6個のファイルの変更136行の追加55行の削除

ファイルの表示

@@ -4837,10 +4837,15 @@ void cm_roam_candidate_info_event(struct wmi_roam_candidate_info *ap,
qdf_mem_free(log_record);
}
void cm_roam_result_info_event(struct wmi_roam_result *res, uint8_t vdev_id,
bool roam_abort)
#define TYPE_ROAMED_AP 2
void cm_roam_result_info_event(struct wmi_roam_result *res,
struct wmi_roam_scan_data *scan_data,
uint8_t vdev_id)
{
struct wlan_log_record *log_record = NULL;
uint8_t i;
bool roam_abort = (res->fail_reason == ROAM_FAIL_REASON_SYNC ||
res->fail_reason == ROAM_FAIL_REASON_INTERNAL_ABORT);
log_record = qdf_mem_malloc(sizeof(*log_record));
if (!log_record)
@@ -4856,7 +4861,16 @@ void cm_roam_result_info_event(struct wmi_roam_result *res, uint8_t vdev_id,
log_record->log_subtype = WLAN_ROAM_RESULT;
log_record->fw_timestamp_us = res->timestamp * 1000;
log_record->roam_result.roam_fail_reason = res->fail_reason;
log_record->roam_result.is_roam_successful = res->status;
log_record->roam_result.is_roam_successful = (res->status == 0);
for (i = 0; i < scan_data->num_ap; i++) {
if (i >= MAX_ROAM_CANDIDATE_AP)
break;
if (scan_data->ap[i].type == TYPE_ROAMED_AP) {
log_record->bssid = scan_data->ap[i].bssid;
break;
}
}
}
wlan_connectivity_log_enqueue(log_record);
@@ -5267,5 +5281,28 @@ cm_roam_mgmt_frame_event(struct roam_frame_info *frame_data, uint8_t vdev_id)
return status;
}
QDF_STATUS
cm_roam_beacon_loss_disconnect_event(struct qdf_mac_addr bssid, int32_t rssi,
uint8_t vdev_id)
{
struct wlan_log_record *log_record = NULL;
QDF_STATUS status = QDF_STATUS_SUCCESS;
log_record = qdf_mem_malloc(sizeof(*log_record));
if (!log_record)
return QDF_STATUS_E_NOMEM;
log_record->timestamp_us = qdf_get_time_of_the_day_us();
log_record->vdev_id = vdev_id;
log_record->bssid = bssid;
log_record->log_subtype = WLAN_DISCONN_BMISS;
log_record->pkt_info.rssi = rssi;
status = wlan_connectivity_log_enqueue(log_record);
qdf_mem_free(log_record);
return status;
}
#endif /* WLAN_FEATURE_CONNECTIVITY_LOGGING */
#endif /* WLAN_FEATURE_ROAM_OFFLOAD */

ファイルの表示

@@ -62,13 +62,14 @@ void cm_roam_candidate_info_event(struct wmi_roam_candidate_info *ap,
/**
* cm_roam_result_info_event() - send scan results info to userspace
* @res: roam result data
* @scan_data: Roam scan info
* @vdev_id: vdev id
* @roam_abort: Is roam abort
*
* Return: void
*/
void cm_roam_result_info_event(struct wmi_roam_result *res, uint8_t vdev_id,
bool roam_abort);
void cm_roam_result_info_event(struct wmi_roam_result *res,
struct wmi_roam_scan_data *scan_data,
uint8_t vdev_id);
#else
static inline void
cm_roam_scan_info_event(struct wmi_roam_scan_data *scan, uint8_t vdev_id)
@@ -87,9 +88,10 @@ cm_roam_candidate_info_event(struct wmi_roam_candidate_info *ap,
{
}
static inline void
cm_roam_result_info_event(struct wmi_roam_result *res, uint8_t vdev_id,
bool roam_abort)
static inline
void cm_roam_result_info_event(struct wmi_roam_result *res,
struct wmi_roam_scan_data *scan_data,
uint8_t vdev_id)
{
}
#endif /* WLAN_FEATURE_CONNECTIVITY_LOGGING */
@@ -369,6 +371,18 @@ QDF_STATUS
cm_roam_btm_query_event(struct wmi_neighbor_report_data *btm_data,
uint8_t vdev_id);
/**
* cm_roam_beacon_loss_disconnect_event() - Send BMISS disconnection logging
* event
* @bssid: BSSID
* @rssi: RSSI
* @vdev_id: Vdev id
*
* Return: QDF_STATUS
*/
QDF_STATUS
cm_roam_beacon_loss_disconnect_event(struct qdf_mac_addr bssid, int32_t rssi,
uint8_t vdev_id);
#else
static inline QDF_STATUS
cm_roam_mgmt_frame_event(struct roam_frame_info *frame_data, uint8_t vdev_id)
@@ -397,5 +411,12 @@ cm_roam_btm_query_event(struct wmi_neighbor_report_data *btm_data,
{
return QDF_STATUS_E_NOSUPPORT;
}
static inline QDF_STATUS
cm_roam_beacon_loss_disconnect_event(struct qdf_mac_addr bssid, int32_t rssi,
uint8_t vdev_id)
{
return QDF_STATUS_E_NOSUPPORT;
}
#endif /* FEATURE_CONNECTIVITY_LOGGING */
#endif /* _WLAN_CM_ROAM_OFFLOAD_H_ */

ファイルの表示

@@ -2884,13 +2884,14 @@ cm_roam_stats_print_scan_info(struct wmi_roam_scan_data *scan, uint8_t vdev_id,
*/
static void
cm_roam_stats_print_roam_result(struct wmi_roam_result *res,
struct wmi_roam_scan_data *scan_data,
uint8_t vdev_id)
{
char *buf;
char time[TIME_STRING_LEN];
/* Update roam result info to userspace */
cm_roam_result_info_event(res, vdev_id, 0);
cm_roam_result_info_event(res, scan_data, vdev_id);
buf = qdf_mem_malloc(ROAM_FAILURE_BUF_SIZE);
if (!buf)
@@ -3006,6 +3007,7 @@ cm_roam_stats_event_handler(struct wlan_objmgr_psoc *psoc,
if (stats_info->result[i].present) {
cm_roam_stats_print_roam_result(&stats_info->result[i],
&stats_info->scan[i],
stats_info->vdev_id);
status = wlan_cm_update_roam_states(psoc,
stats_info->vdev_id,