Jelajahi Sumber

qca-wifi: CFR: Fix cookie lookup failure during RXTLV processing

37th bit is being set as an exchange between FW and ucode
to indicate that it is a DDR address to PCSS module.
As a result of which Cookie lookup fails while comparing
all 40 bits, since the physical address of DBR buffer 
does not match with the physical address of the received
buffer.

Since lower 36bits represents physical address,
Use only 4 least significant bits from higher 32bits along
with lower 32 bits while programming the physical address in
DBR SRNG. Format: ( low32 + 4 bits of high32 ).

Change-Id: I2cb09c00a9942966266ba81f56f0c6c173671e2f
Adwait Nayak 5 tahun lalu
induk
melakukan
3c90187c47
1 mengubah file dengan 3 tambahan dan 3 penghapusan
  1. 3 3
      target_if/cfr/src/target_if_cfr_6018.c

+ 3 - 3
target_if/cfr/src/target_if_cfr_6018.c

@@ -626,7 +626,7 @@ void target_if_cfr_rx_tlv_process(struct wlan_objmgr_pdev *pdev, void *nbuf)
 	struct cdp_rx_indication_ppdu *cdp_rx_ppdu;
 	struct cdp_rx_stats_ppdu_user *rx_stats_peruser;
 	struct cdp_rx_ppdu_cfr_info *cfr_info;
-	qdf_dma_addr_t buf_addr = 0, buf_addr_temp = 0;
+	qdf_dma_addr_t buf_addr = 0, buf_addr_extn = 0;
 	struct pdev_cfr *pcfr;
 	struct look_up_table *lut = NULL;
 	struct csi_cfr_header *header = NULL;
@@ -701,9 +701,9 @@ void target_if_cfr_rx_tlv_process(struct wlan_objmgr_pdev *pdev, void *nbuf)
 	}
 
 	cfr_rx_ops = &psoc->soc_cb.rx_ops.cfr_rx_ops;
-	buf_addr_temp = cfr_info->rtt_che_buffer_pointer_high8;
+	buf_addr_extn = cfr_info->rtt_che_buffer_pointer_high8 & 0xF;
 	buf_addr = (cfr_info->rtt_che_buffer_pointer_low32 |
-		    ((uint64_t)buf_addr_temp << 32));
+		    ((uint64_t)buf_addr_extn << 32));
 
 
 	if (target_if_dbr_cookie_lookup(pdev, DBR_MODULE_CFR, buf_addr,