From bb6e26f04656317c0bb2c22a6e8fcd97e237b82d Mon Sep 17 00:00:00 2001 From: Aasir Rasheed Date: Fri, 23 Feb 2024 15:56:36 +0530 Subject: [PATCH] qcacld-3.0: Update phymode along with ch_width update to FW MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit AP sends "Operating Mode Notification" IE contains max supported channel width indication (ap operating channel bandwidth) via beacon/probe response/association/re-association response frame. After sending OMN IE to DUT, AP expects DUT should do Tx/Rx of data packet on ap operating channel bandwidth. Due a recent change in FW (via CR/3701633), FW combined BW and PHYMODE update requests into single message to avoid race condition and assert in FW. It means whenever host updates ch_width to FW, should also update corresponding phymode immediately via same command WMI_PEER_SET_PARAM_CMDID with param id WMI_HOST_PEER_PHYMODE. Currently on detecting OMN IE in any of above frame, host sends WMI_PEER_SET_PARAM_CMDID command only once with param id WMI_HOST_PEER_CHWIDTH to update ch_width only with expectation “FW should use same ch_width for further Tx/Rx of data packet”. But FW ignoring only ch_width updates (without followed by phymode update), this results DUT fails to do Tx/Rx of data packet on ch_width present in OMN IE. Fix is to make sure on detection of OMN IE (contains valid ch_width) in above frame(s), host should send WMI_PEER_SET_PARAM_CMDID command two times to FW to update ch_width and corresponding phymode. Change-Id: Ic23205bb6c164b1bcb9c183d0f7818b082b84583 CRs-Fixed: 3734683 --- core/wma/src/wma_mgmt.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/wma/src/wma_mgmt.c b/core/wma/src/wma_mgmt.c index f515aa38de..d334cc1763 100644 --- a/core/wma/src/wma_mgmt.c +++ b/core/wma/src/wma_mgmt.c @@ -2993,6 +2993,10 @@ void wma_process_update_opmode(tp_wma_handle wma_handle, wma_set_peer_param(wma_handle, update_vht_opmode->peer_mac, WMI_HOST_PEER_CHWIDTH, update_vht_opmode->opMode, update_vht_opmode->smesessionId); + + wma_set_peer_param(wma_handle, update_vht_opmode->peer_mac, + WMI_HOST_PEER_PHYMODE, + fw_phymode, update_vht_opmode->smesessionId); } /**