From 7152a355fa6bcbac3c12555b7fde0276fe2d2282 Mon Sep 17 00:00:00 2001 From: Rajasekaran Kalidoss Date: Mon, 19 Nov 2018 09:58:35 +0530 Subject: [PATCH] qcacld-3.0: Send freq in mgmt frame req for LFR2 currently freq is sent as 0 in send auth mgmt frame request to firmware(WMI_MGMT_TX_SEND_CMDID). In SAP 2G + STA doing LFR2 DBS roam from 5G to 2G scenario, the preauth request get sent in 5g band rather than 2G. So LFR2 preauth send request should have the exact frequency parameter. only then FW can send the auth req in appropriate frequency. Change-Id: I17f47ee559768fee1fd5055d953791117e7b04c5 --- core/mac/src/pe/lim/lim_send_management_frames.c | 11 +++++++++-- core/wma/src/wma_data.c | 6 +++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/core/mac/src/pe/lim/lim_send_management_frames.c b/core/mac/src/pe/lim/lim_send_management_frames.c index c28c1e025377..d3bed6f70218 100644 --- a/core/mac/src/pe/lim/lim_send_management_frames.c +++ b/core/mac/src/pe/lim/lim_send_management_frames.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2018 The Linux Foundation. All rights reserved. + * Copyright (c) 2011-2019 The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the @@ -2231,6 +2231,7 @@ lim_send_auth_mgmt_frame(struct mac_context *mac_ctx, uint16_t ft_ies_length = 0; bool challenge_req = false; enum rateid min_rid = RATEID_DEFAULT; + uint16_t ch_freq_tx_frame = 0; if (NULL == session) { pe_err("Error: psession Entry is NULL"); @@ -2510,12 +2511,18 @@ alloc_packet: min_rid = lim_get_min_session_txrate(session); lim_diag_mgmt_tx_event_report(mac_ctx, mac_hdr, session, QDF_STATUS_SUCCESS, QDF_STATUS_SUCCESS); + + if (session->ftPEContext.pFTPreAuthReq != NULL) + ch_freq_tx_frame = cds_chan_to_freq( + session->ftPEContext.pFTPreAuthReq->preAuthchannelNum); + qdf_status = wma_tx_frameWithTxComplete(mac_ctx, packet, (uint16_t)frame_len, TXRX_FRM_802_11_MGMT, ANI_TXDIR_TODS, 7, lim_tx_complete, frame, lim_auth_tx_complete_cnf, - tx_flag, sme_sessionid, false, 0, min_rid); + tx_flag, sme_sessionid, false, + ch_freq_tx_frame, min_rid); MTRACE(qdf_trace(QDF_MODULE_ID_PE, TRACE_CODE_TX_COMPLETE, session->peSessionId, qdf_status)); if (!QDF_IS_STATUS_SUCCESS(qdf_status)) { diff --git a/core/wma/src/wma_data.c b/core/wma/src/wma_data.c index c175674cb371..fb05b006a943 100644 --- a/core/wma/src/wma_data.c +++ b/core/wma/src/wma_data.c @@ -2728,11 +2728,15 @@ QDF_STATUS wma_tx_packet(void *wma_context, void *tx_frame, uint16_t frmLen, __func__, chanfreq, vdev_id); if (wma_is_vdev_in_ap_mode(wma_handle, vdev_id) && !chanfreq) WMA_LOGE("%s: AP oper chan is zero", __func__); - } else if (pFc->subType == SIR_MAC_MGMT_ACTION) { + } else if (pFc->subType == SIR_MAC_MGMT_ACTION || + pFc->subType == SIR_MAC_MGMT_AUTH) { chanfreq = channel_freq; } else { chanfreq = 0; } + + WMA_LOGD("%s: chan freq %d vdev:%d subType:%d", + __func__, chanfreq, vdev_id, pFc->subType); if (mac->mlme_cfg->gen.debug_packet_log & 0x1) { if ((pFc->type == SIR_MAC_MGMT_FRAME) && (pFc->subType != SIR_MAC_MGMT_PROBE_REQ) &&