Parcourir la source

qcacmn: Update TX bank profile for STA + TDLS case

Search flag addrX and addrY will be enabled for STA + TDLS case,
but currently TX bank profile is not updated which then STA still
use default TX bank profile - index based lookup search, TX might
fail.

Update bank profile with addrX and addrY search enabled.

Change-Id: I6af12d3707b59c5d4b4bba1fc5ec05a22bfcd984
CRs-Fixed: 3148759
Jinwei Chen il y a 3 ans
Parent
commit
8180dff19c
4 fichiers modifiés avec 5 ajouts et 5 suppressions
  1. 1 0
      dp/wifi3.0/be/dp_be.c
  2. 2 3
      dp/wifi3.0/be/dp_be_tx.c
  3. 1 1
      dp/wifi3.0/dp_main.c
  4. 1 1
      dp/wifi3.0/dp_tx.c

+ 1 - 0
dp/wifi3.0/be/dp_be.c

@@ -1512,6 +1512,7 @@ QDF_STATUS dp_txrx_set_vdev_param_be(struct dp_soc *soc,
 	switch (param) {
 	case CDP_TX_ENCAP_TYPE:
 	case CDP_UPDATE_DSCP_TO_TID_MAP:
+	case CDP_UPDATE_TDLS_FLAGS:
 		dp_tx_update_bank_profile(be_soc, be_vdev);
 		break;
 	case CDP_ENABLE_CIPHER:

+ 2 - 3
dp/wifi3.0/be/dp_be_tx.c

@@ -705,7 +705,6 @@ void dp_tx_get_vdev_bank_config(struct dp_vdev_be *be_vdev,
 				union hal_tx_bank_config *bank_config)
 {
 	struct dp_vdev *vdev = &be_vdev->vdev;
-	struct dp_soc *soc = vdev->pdev->soc;
 
 	bank_config->epd = 0;
 
@@ -721,8 +720,8 @@ void dp_tx_get_vdev_bank_config(struct dp_vdev_be *be_vdev,
 	bank_config->src_buffer_swap = 0;
 	bank_config->link_meta_swap = 0;
 
-	if ((soc->sta_mode_search_policy == HAL_TX_ADDR_INDEX_SEARCH) &&
-	     vdev->opmode == wlan_op_mode_sta) {
+	if ((vdev->search_type == HAL_TX_ADDR_INDEX_SEARCH) &&
+	    vdev->opmode == wlan_op_mode_sta) {
 		bank_config->index_lookup_enable = 1;
 		bank_config->mcast_pkt_ctrl = HAL_TX_MCAST_CTRL_MEC_NOTIFY;
 		bank_config->addrx_en = 0;

+ 1 - 1
dp/wifi3.0/dp_main.c

@@ -10203,8 +10203,8 @@ dp_set_vdev_param(struct cdp_soc_t *cdp_soc, uint8_t vdev_id,
 		break;
 	}
 
-	dsoc->arch_ops.txrx_set_vdev_param(dsoc, vdev, param, val);
 	dp_tx_vdev_update_search_flags((struct dp_vdev *)vdev);
+	dsoc->arch_ops.txrx_set_vdev_param(dsoc, vdev, param, val);
 	dp_vdev_unref_delete(dsoc, vdev, DP_MOD_ID_CDP);
 
 	return QDF_STATUS_SUCCESS;

+ 1 - 1
dp/wifi3.0/dp_tx.c

@@ -5233,7 +5233,7 @@ void dp_tx_vdev_update_search_flags(struct dp_vdev *vdev)
 	else
 		vdev->hal_desc_addr_search_flags = HAL_TX_DESC_ADDRX_EN;
 
-	if (vdev->opmode == wlan_op_mode_sta)
+	if (vdev->opmode == wlan_op_mode_sta && !vdev->tdls_link_connected)
 		vdev->search_type = soc->sta_mode_search_policy;
 	else
 		vdev->search_type = HAL_TX_ADDR_SEARCH_DEFAULT;