瀏覽代碼

qcacmn: Do not use wds_en flag for ADDR search flag update

Using wds_en flag to control ADDR search flags in Transmit Descriptor was
causing DP to wrongly use ADDRY search instead of ADDRX search
on WDS repeater for DBDC repeater and SON scenarios.

Fix this by removing the use of this flag in dp_tx_vdev_update_search_flags
API

Change-Id: Id8ca40f926d58b8267e89d30c2b54cc42b4d4182
CRs-Fixed: 2335867
Pamidipati, Vijay 6 年之前
父節點
當前提交
22c79d586e
共有 1 個文件被更改,包括 25 次插入3 次删除
  1. 25 3
      dp/wifi3.0/dp_tx.c

+ 25 - 3
dp/wifi3.0/dp_tx.c

@@ -3265,6 +3265,30 @@ QDF_STATUS dp_tx_vdev_attach(struct dp_vdev *vdev)
 	return QDF_STATUS_SUCCESS;
 }
 
+#ifdef FEATURE_WDS
+static inline bool dp_tx_da_search_override(struct dp_vdev *vdev)
+{
+	struct dp_soc *soc = vdev->pdev->soc;
+
+	/*
+	 * If AST index override support is available (HKv2 etc),
+	 * DA search flag be enabled always
+	 *
+	 * If AST index override support is not available (HKv1),
+	 * DA search flag should be used for all modes except QWRAP
+	 */
+	if (soc->ast_override_support || !vdev->proxysta_vdev)
+		return true;
+
+	return false;
+}
+#else
+static inline bool dp_tx_da_search_override(struct dp_vdev *vdev)
+{
+	return false;
+}
+#endif
+
 /**
  * dp_tx_vdev_update_search_flags() - Update vdev flags as per opmode
  * @vdev: virtual device instance
@@ -3291,9 +3315,7 @@ void dp_tx_vdev_update_search_flags(struct dp_vdev *vdev)
 		vdev->hal_desc_addr_search_flags =
 			(HAL_TX_DESC_ADDRX_EN | HAL_TX_DESC_ADDRY_EN);
 	else if ((vdev->opmode == wlan_op_mode_sta) &&
-		 (!vdev->wds_enabled ||
-		 (vdev->proxysta_vdev &&
-			  !soc->ast_override_support)))
+		 !dp_tx_da_search_override(vdev))
 		vdev->hal_desc_addr_search_flags = HAL_TX_DESC_ADDRY_EN;
 	else
 		vdev->hal_desc_addr_search_flags = HAL_TX_DESC_ADDRX_EN;