> From: Tyler Retzlaff [mailto:roret...@linux.microsoft.com]
> Sent: Wednesday, 20 March 2024 23.02
> 
> Don't directly access the cacheline1 field in rte_mbuf struct for
> prefetch instead just use rte_mbuf_prefetch_part2() to prefetch.
> 
> Signed-off-by: Tyler Retzlaff <roret...@linux.microsoft.com>
> ---
>  drivers/net/i40e/i40e_rxtx_vec_avx512.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/i40e/i40e_rxtx_vec_avx512.c
> b/drivers/net/i40e/i40e_rxtx_vec_avx512.c
> index f3050cd..0238b03 100644
> --- a/drivers/net/i40e/i40e_rxtx_vec_avx512.c
> +++ b/drivers/net/i40e/i40e_rxtx_vec_avx512.c
> @@ -826,7 +826,7 @@
>               free[0] = m;
>               nb_free = 1;
>               for (i = 1; i < n; i++) {
> -                     rte_prefetch0(&txep[i + 3].mbuf->cacheline1);
> +                     rte_mbuf_prefetch_part2(txep[i + 3].mbuf);

@Yuying Zhang:
If this prefetch is for m->next, I think it can be omitted if m->next is in the 
first cache line:

-                       rte_prefetch0(&txep[i + 3].mbuf->cacheline1);
+#if RTE_IOVA_IN_MBUF
+                       rte_mbuf_prefetch_part2(txep[i + 3].mbuf);
+#endif

If so, it belongs in a separate patch anyway.

>                       m = rte_pktmbuf_prefree_seg(txep[i].mbuf);
>                       if (likely(m)) {
>                               if (likely(m->pool == free[0]->pool)) {
> --
> 1.8.3.1

Reviewed-by: Morten Brørup <m...@smartsharesystems.com>

Reply via email to