qcacld-3.0: Modify timestamp value for MLO link switch log

For event EVENT_WLAN_MLO_LINK_STATUS, the Fw send the
fw_timestamp value in milliseconds for MLO link
switch connectivity log. However, the userspace
expects the fw_timestamp value in microseconds.

For connecting fail connectivity logging, connecting
fail reason code mismatch is observed between host
and userspace.

Modify the api wlan_connectivity_mld_link_status_event()
to send the fw_timestamp value in microseconds instead
on milliseconds.

Introduce wlan_diag_connect_fail_reason enum to
facilitate proper conversion of connect fail reason
code between host and userspace.

Change-Id: I92b4f294c0e4bc68c809fbf7d01ab950eca83ac9
CRs-Fixed: 3637399
This commit is contained in:
Vijay Raj
2023-10-20 03:38:13 -07:00
committed by Ravindra Konda
parent bef037cab0
commit eb8f76bea2
3 changed files with 104 additions and 14 deletions

View File

@@ -283,6 +283,46 @@ enum wlan_bcn_rpt_measurement_mode {
MEASURE_MODE_RESERVED = 0xFF
};
/**
* enum wlan_diag_connect_fail_reason - WLAN diag connect fail reason code
* @WLAN_DIAG_UNSPECIFIC_REASON: Unspecific reason
* @WLAN_DIAG_NO_CANDIDATE_FOUND: No candidate found
* @WLAN_DIAG_ABORT_DUE_TO_NEW_REQ_RECVD: Aborted as new command is
* received.
* @WLAN_DIAG_BSS_SELECT_IND_FAILED: Failed BSS select indication
* @WLAN_DIAG_PEER_CREATE_FAILED: peer create failed
* @WLAN_DIAG_JOIN_FAILED: Failed in joining state
* @WLAN_DIAG_JOIN_TIMEOUT: Did not receive beacon or probe response after
* unicast probe request
* @WLAN_DIAG_AUTH_FAILED: Auth rejected by AP
* @WLAN_DIAG_AUTH_TIMEOUT: No Auth resp from AP
* @WLAN_DIAG_ASSOC_FAILED: Assoc rejected by AP
* @WLAN_DIAG_ASSOC_TIMEOUT: No Assoc resp from AP
* @WLAN_DIAG_HW_MODE_FAILURE: failed to change HW mode
* @WLAN_DIAG_SER_FAILURE: Failed to serialize command
* @WLAN_DIAG_SER_TIMEOUT: Serialization cmd timeout
* @WLAN_DIAG_GENERIC_FAILURE: Generic failure apart from above
* @WLAN_DIAG_VALID_CANDIDATE_CHECK_FAIL: Valid Candidate Check fail
*/
enum wlan_diag_connect_fail_reason {
WLAN_DIAG_UNSPECIFIC_REASON = 0,
WLAN_DIAG_NO_CANDIDATE_FOUND = 1,
WLAN_DIAG_ABORT_DUE_TO_NEW_REQ_RECVD,
WLAN_DIAG_BSS_SELECT_IND_FAILED,
WLAN_DIAG_PEER_CREATE_FAILED,
WLAN_DIAG_JOIN_FAILED,
WLAN_DIAG_JOIN_TIMEOUT,
WLAN_DIAG_AUTH_FAILED,
WLAN_DIAG_AUTH_TIMEOUT,
WLAN_DIAG_ASSOC_FAILED,
WLAN_DIAG_ASSOC_TIMEOUT,
WLAN_DIAG_HW_MODE_FAILURE,
WLAN_DIAG_SER_FAILURE,
WLAN_DIAG_SER_TIMEOUT,
WLAN_DIAG_GENERIC_FAILURE,
WLAN_DIAG_VALID_CANDIDATE_CHECK_FAIL,
};
/**
* struct wlan_connectivity_log_diag_cmn - Structure for diag event
* @bssid: bssid
@@ -340,8 +380,9 @@ struct wlan_diag_mlo_cmn_info {
};
#define DIAG_MLO_SETUP_VERSION 1
#define DIAG_MLO_SETUP_VERSION_V2 2
#define MAX_BANDS 3
#define MAX_NUM_LINKS_PER_EVENT 3
/**
* struct wlan_diag_mlo_setup - MLO setup structure
* @diag_cmn: Common diag info
@@ -353,10 +394,10 @@ struct wlan_diag_mlo_cmn_info {
*/
struct wlan_diag_mlo_setup {
struct wlan_connectivity_log_diag_cmn diag_cmn;
uint32_t version:8;
uint32_t num_links:8;
uint32_t reserved:16;
struct wlan_diag_mlo_cmn_info mlo_cmn_info[MAX_BANDS];
uint8_t version;
uint8_t num_links;
uint16_t reserved;
struct wlan_diag_mlo_cmn_info mlo_cmn_info[MAX_NUM_LINKS_PER_EVENT];
} qdf_packed;
#define DIAG_MLO_RECONFIG_VERSION 1
@@ -376,6 +417,7 @@ struct wlan_diag_mlo_reconfig {
} qdf_packed;
#define DIAG_MLO_T2LM_STATUS_VERSION 1
#define DIAG_MLO_T2LM_STATUS_VERSION_V2 2
/**
* struct wlan_diag_mlo_t2lm_status - MLO T2LM status diag event structure
@@ -387,10 +429,10 @@ struct wlan_diag_mlo_reconfig {
*/
struct wlan_diag_mlo_t2lm_status {
struct wlan_connectivity_log_diag_cmn diag_cmn;
uint32_t version:8;
uint32_t num_links:8;
uint32_t reserved:16;
struct wlan_diag_mlo_cmn_info mlo_cmn_info[MAX_BANDS];
uint8_t version;
uint8_t num_links;
uint16_t reserved;
struct wlan_diag_mlo_cmn_info mlo_cmn_info[MAX_NUM_LINKS_PER_EVENT];
} qdf_packed;
#define DIAG_MLO_T2LM_REQ_RESP_VERSION 1

View File

@@ -653,7 +653,7 @@ wlan_connectivity_mlo_setup_event(struct wlan_objmgr_vdev *vdev)
wlan_diag_event.diag_cmn.ktime_us = qdf_ktime_to_us(qdf_ktime_get());
wlan_diag_event.diag_cmn.timestamp_us = qdf_get_time_of_the_day_us();
wlan_diag_event.version = DIAG_MLO_SETUP_VERSION;
wlan_diag_event.version = DIAG_MLO_SETUP_VERSION_V2;
if (!vdev->mlo_dev_ctx) {
logging_err("vdev: %d MLO dev ctx not found",
@@ -794,7 +794,7 @@ wlan_connectivity_t2lm_status_event(struct wlan_objmgr_vdev *vdev)
wlan_diag_event.diag_cmn.timestamp_us = qdf_get_time_of_the_day_us();
wlan_diag_event.diag_cmn.ktime_us = qdf_ktime_to_us(qdf_ktime_get());
wlan_diag_event.version = DIAG_MLO_T2LM_STATUS_VERSION;
wlan_diag_event.version = DIAG_MLO_T2LM_STATUS_VERSION_V2;
for (dir = 0; dir < WLAN_T2LM_MAX_DIRECTION; dir++)
t2lm[dir].direction = WLAN_T2LM_INVALID_DIRECTION;
@@ -805,7 +805,8 @@ wlan_connectivity_t2lm_status_event(struct wlan_objmgr_vdev *vdev)
return;
}
for (i = 0; i < WLAN_MAX_ML_BSS_LINKS && i < MAX_BANDS; i++) {
for (i = 0;
i < WLAN_MAX_ML_BSS_LINKS && i < MAX_NUM_LINKS_PER_EVENT; i++) {
if (qdf_is_macaddr_zero(&link_info->ap_link_addr) &&
link_info->link_id == WLAN_INVALID_LINK_ID)
continue;
@@ -1133,7 +1134,11 @@ void wlan_connectivity_mld_link_status_event(struct wlan_objmgr_psoc *psoc,
wlan_convert_link_id_to_diag_band(&src->mld_addr,
src->prev_link_bitmap);
wlan_diag_event.reason = src->reason_code;
wlan_diag_event.diag_cmn.fw_timestamp = src->fw_timestamp;
/*
* FW timestamp received from FW in milliseconds and to be sent to
* userspace in microseconds
*/
wlan_diag_event.diag_cmn.fw_timestamp = src->fw_timestamp * 1000;
WLAN_HOST_DIAG_EVENT_REPORT(&wlan_diag_event,
EVENT_WLAN_MLO_LINK_STATUS);