qcacld-3.0: Log SAE authentication frames as part of roam logs
SAE authentication logging events are sent from host driver during connection as well as during roaming. But the other roaming frame related stats are printed as part of the WMI_ROAM_STATS_EVENTID handling. Since this roam stats event is received after preauth frame related logs are queued to userspace, the order of the logs are not correct. Cache the SAE preauth logs in mlme and print them upon receiving ROAM stats event. Read the firmware service capability to decide if new caching needs to be used or legacy behavior needs to be followed Change-Id: I76381b9deef222f1481325974e2b5d9730eb2b67 CRs-Fixed: 3154147
This commit is contained in:

committed by
Madan Koyyalamudi

parent
bdb2216a0f
commit
2bbd4b2892
@@ -1993,7 +1993,13 @@ wmi_get_converted_tx_status(
|
||||
return QDF_TX_RX_STATUS_INVALID;
|
||||
}
|
||||
|
||||
#define WLAN_FC0_SUBTYPE_SHIFT 4
|
||||
#define WLAN_FC0_SUBTYPE_SHIFT 4
|
||||
#define WLAN_FRAME_INFO_TYPE_OFFSET 0
|
||||
#define WLAN_FRAME_INFO_SUBTYPE_OFFSET 2
|
||||
#define WLAN_FRAME_INFO_RESP_OFFSET 6
|
||||
#define WLAN_FRAME_INFO_AUTH_ALG_OFFSET 7
|
||||
#define WLAN_FRAME_INFO_SEQ_NUM_OFFSET 16
|
||||
|
||||
/**
|
||||
* extract_roam_frame_info_tlv() - Extract the frame exchanges during roaming
|
||||
* info from the WMI_ROAM_STATS_EVENTID
|
||||
@@ -2032,9 +2038,13 @@ extract_roam_frame_info_tlv(wmi_unified_t wmi_handle, void *evt_buf,
|
||||
dst_buf = dst->frame_info;
|
||||
for (i = 0; i < num_frames; i++) {
|
||||
dst_buf->timestamp = src_data->timestamp;
|
||||
dst_buf->type = WMI_GET_BITS(src_data->frame_info, 0, 2);
|
||||
WMI_MAC_ADDR_TO_CHAR_ARRAY(&src_data->bssid,
|
||||
dst_buf->bssid.bytes);
|
||||
dst_buf->type = WMI_GET_BITS(src_data->frame_info,
|
||||
WLAN_FRAME_INFO_TYPE_OFFSET, 2);
|
||||
|
||||
subtype = WMI_GET_BITS(src_data->frame_info, 2, 4);
|
||||
subtype = WMI_GET_BITS(src_data->frame_info,
|
||||
WLAN_FRAME_INFO_SUBTYPE_OFFSET, 4);
|
||||
if (dst_buf->type == WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT) {
|
||||
dst_buf->type = ROAM_FRAME_INFO_FRAME_TYPE_EXT;
|
||||
dst_buf->subtype =
|
||||
@@ -2043,12 +2053,23 @@ extract_roam_frame_info_tlv(wmi_unified_t wmi_handle, void *evt_buf,
|
||||
dst_buf->subtype = subtype << WLAN_FC0_SUBTYPE_SHIFT;
|
||||
}
|
||||
|
||||
dst_buf->is_rsp = WMI_GET_BITS(src_data->frame_info, 6, 1);
|
||||
dst_buf->is_rsp = WMI_GET_BITS(src_data->frame_info,
|
||||
WLAN_FRAME_INFO_RESP_OFFSET, 1);
|
||||
dst_buf->is_rsp &=
|
||||
(dst_buf->type != WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT &&
|
||||
dst_buf->subtype == MGMT_SUBTYPE_AUTH);
|
||||
dst_buf->seq_num = WMI_GET_BITS(src_data->frame_info, 7, 16);
|
||||
|
||||
dst_buf->seq_num = WMI_GET_BITS(src_data->frame_info,
|
||||
WLAN_FRAME_INFO_SEQ_NUM_OFFSET,
|
||||
16);
|
||||
dst_buf->status_code = src_data->status_code;
|
||||
if (dst_buf->type != WMI_ROAM_FRAME_INFO_FRAME_TYPE_EXT &&
|
||||
dst_buf->subtype == MGMT_SUBTYPE_AUTH)
|
||||
dst_buf->auth_algo =
|
||||
WMI_GET_BITS(src_data->frame_info,
|
||||
WLAN_FRAME_INFO_AUTH_ALG_OFFSET,
|
||||
4);
|
||||
|
||||
if (!dst_buf->is_rsp)
|
||||
dst_buf->tx_status = wmi_get_converted_tx_status(
|
||||
src_data->status_code);
|
||||
|
Reference in New Issue
Block a user