浏览代码

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
Jingxiang Ge 7 年之前
父节点
当前提交
6c9352f23f
共有 1 个文件被更改,包括 9 次插入1 次删除
  1. 9 1
      core/mac/src/pe/lim/lim_process_message_queue.c

+ 9 - 1
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 &&