diff --git a/dp/wifi3.0/dp_tx.c b/dp/wifi3.0/dp_tx.c index 6af8451f6d0c..ebbd0553e5d1 100644 --- a/dp/wifi3.0/dp_tx.c +++ b/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;