From 6c9352f23fe583a13acbab278ec6867a9a541416 Mon Sep 17 00:00:00 2001 From: Jingxiang Ge Date: Thu, 26 Oct 2017 11:27:36 +0800 Subject: [PATCH] qcacld-3.0: Avoid pkt drop in DFS CAC for SAP dual band mode When dual band mode for SAP is enabled from UI, the packet for 2G SAP will be dropped before dfs cac finishes. Adjust channel check to avoid pkt drop in lim_handle80211_frames. 1 non-sbs mode, bypass 2g channel packet 2 sbs mode, bypass non dfs channel packet Change-Id: Ib292fa3d6366fd7ea045480f61ce1890ac8c320a CRs-Fixed: 2132883 --- core/mac/src/pe/lim/lim_process_message_queue.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/core/mac/src/pe/lim/lim_process_message_queue.c b/core/mac/src/pe/lim/lim_process_message_queue.c index fcd2c7c3e4b8..6ff444c7e5fc 100644 --- a/core/mac/src/pe/lim/lim_process_message_queue.c +++ b/core/mac/src/pe/lim/lim_process_message_queue.c @@ -898,6 +898,8 @@ lim_handle80211_frames(tpAniSirGlobal pMac, struct scheduler_msg *limMsg, tpPESession psessionEntry = NULL; uint8_t sessionId; bool isFrmFt = false; + uint8_t channel; + bool is_hw_sbs_capable = false; *pDeferMsg = false; lim_get_b_dfrom_rx_packet(pMac, limMsg->bodyptr, @@ -905,9 +907,15 @@ lim_handle80211_frames(tpAniSirGlobal pMac, struct scheduler_msg *limMsg, pHdr = WMA_GET_RX_MAC_HEADER(pRxPacketInfo); isFrmFt = WMA_GET_RX_FT_DONE(pRxPacketInfo); + channel = WMA_GET_RX_CH(pRxPacketInfo); fc = pHdr->fc; - if (pMac->sap.SapDfsInfo.is_dfs_cac_timer_running) { + is_hw_sbs_capable = + policy_mgr_is_hw_sbs_capable(pMac->psoc); + if (IS_5G_CH(channel) && + (!is_hw_sbs_capable || + (is_hw_sbs_capable && wlan_reg_is_dfs_ch(pMac->pdev, channel))) && + pMac->sap.SapDfsInfo.is_dfs_cac_timer_running) { psessionEntry = pe_find_session_by_bssid(pMac, pHdr->bssId, &sessionId); if (psessionEntry &&