qcacmn: Fix peer id mismatch on Tx completion

Peer id mismatch is observed when prefetch of HW
descriptor exceeds the last valid descriptor.
To fix this issue, add check to limit prefetch to
the last valid descriptor.

Change-Id: I01582892d55ed1f300d6806e1d8def46f747516b
CRs-Fixed: 3671814
This commit is contained in:
Ripan Deuri
2024-01-08 12:56:02 +05:30
zatwierdzone przez Ravindra Konda
rodzic 2a9c2537fc
commit 855046f89d
5 zmienionych plików z 37 dodań i 21 usunięć

Wyświetl plik

@@ -6704,6 +6704,7 @@ uint32_t dp_tx_comp_handler(struct dp_intr *int_ctx, struct dp_soc *soc,
{
void *tx_comp_hal_desc;
void *last_prefetched_hw_desc = NULL;
void *last_hw_desc = NULL;
struct dp_tx_desc_s *last_prefetched_sw_desc = NULL;
hal_soc_handle_t hal_soc;
uint8_t buffer_src;
@@ -6753,7 +6754,8 @@ more_data:
if (num_avail_for_reap >= quota)
num_avail_for_reap = quota;
dp_srng_dst_inv_cached_descs(soc, hal_ring_hdl, num_avail_for_reap);
last_hw_desc = dp_srng_dst_inv_cached_descs(soc, hal_ring_hdl,
num_avail_for_reap);
last_prefetched_hw_desc = dp_srng_dst_prefetch_32_byte_desc(hal_soc,
hal_ring_hdl,
num_avail_for_reap);
@@ -6954,7 +6956,8 @@ next_desc:
num_avail_for_reap,
hal_ring_hdl,
&last_prefetched_hw_desc,
&last_prefetched_sw_desc);
&last_prefetched_sw_desc,
last_hw_desc);
if (dp_tx_comp_loop_pkt_limit_hit(soc, count, max_reap_limit))
break;