qcacld-3.0: Fix status check for ROAM Reassoc Frames

In api extract_roam_frame_info_tlv(), the request_response
bit is checked in order to determine whether the frame
received is a request frame or response frame which
in turn used to evaluate wmi_roam_frame_info->status_code
as tx_status code for transmitted frame and IEEE 80211
status code for received frames.
However, the request_response bit is only valid for Authentication
frames and hence status code for Association and Re-association
frame is reported incorrectly.

Fix the check to evaluate wmi_roam_frame_info->status_code as
tx_status code for the following:
1. Frame is Authentication Frame and request_response bit is
   set to '0'
2. Frame is Association Request frame
3. Frame is Re-Association Request Frame.

Change-Id: Icb7633ba8bf662f4987be016715051fa6d1adc06
CRs-Fixed: 3800906
This commit is contained in:
Vijay Raj
2024-05-20 02:06:42 -07:00
committed by Ravindra Konda
parent f04a885a7a
commit 04a045bd2a

View File

@@ -2069,17 +2069,21 @@ extract_roam_frame_info_tlv(wmi_unified_t wmi_handle, void *evt_buf,
WMI_GET_BITS(src_data->frame_info,
WLAN_FRAME_INFO_AUTH_ALG_OFFSET,
4);
/*
* src_data->status_code is treated as tx status under
* following condition:
* 1. if the frame is an authentication frame and req_resp bit
* is set to '0'
* 2. If the Frame is Association Request frame
* 3. If the Frame is Re-Association Request Frame
*/
if (!dst_buf->is_rsp) {
if ((!dst_buf->is_rsp &&
dst_buf->subtype == MGMT_SUBTYPE_AUTH) ||
dst_buf->subtype == MGMT_SUBTYPE_ASSOC_REQ ||
dst_buf->subtype == MGMT_SUBTYPE_REASSOC_REQ) {
dst_buf->tx_status = wmi_get_converted_tx_status(
src_data->status_code);
/* wmi_roam_frame_info->status_code sent from the fw
* denotes the tx_status of the transmitted frames.
* To Do: Need a separate field for status code or
* use existing field of wmi_roam_frame_info tlv
* to send the tx status of transmitted frame from the
* FW.
*/
dst_buf->status_code = 0;
}