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
このコミットが含まれているのは:
@@ -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,
|
||||
|
新しいイシューから参照
ユーザーをブロックする