if (fl->use_pages) {
                                void *addr = fl->sdesc[fl->cidx].pg_chunk.va;
 
-                               prefetch(addr);
-#if L1_CACHE_BYTES < 128
-                               prefetch(addr + L1_CACHE_BYTES);
-#endif
+                               net_prefetch(addr);
                                __refill_fl(adap, fl);
                                if (lro > 0) {
                                        lro_add_page(adap, qs, fl,
 
        va = (unsigned char *)desc_cb->buf + desc_cb->page_offset;
 
        /* prefetch first cache line of first page */
-       prefetch(va);
-#if L1_CACHE_BYTES < 128
-       prefetch(va + L1_CACHE_BYTES);
-#endif
+       net_prefetch(va);
 
        skb = *out_skb = napi_alloc_skb(&ring_data->napi,
                                        HNS_RX_HEAD_SIZE);
 
         * lines. In such a case, single fetch would suffice to cache in the
         * relevant part of the header.
         */
-       prefetch(ring->va);
-#if L1_CACHE_BYTES < 128
-       prefetch(ring->va + L1_CACHE_BYTES);
-#endif
+       net_prefetch(ring->va);
 
        if (!skb) {
                ret = hns3_alloc_skb(ring, length, ring->va);
 
                                  rx_buffer->page_offset;
 
                /* prefetch first cache line of first page */
-               prefetch(page_addr);
-#if L1_CACHE_BYTES < 128
-               prefetch((void *)((u8 *)page_addr + L1_CACHE_BYTES));
-#endif
+               net_prefetch(page_addr);
 
                /* allocate a skb to store the frags */
                skb = napi_alloc_skb(&rx_ring->q_vector->napi,
 
        struct sk_buff *skb;
 
        /* prefetch first cache line of first page */
-       prefetch(xdp->data);
-#if L1_CACHE_BYTES < 128
-       prefetch(xdp->data + L1_CACHE_BYTES);
-#endif
+       net_prefetch(xdp->data);
+
        /* Note, we get here by enabling legacy-rx via:
         *
         *    ethtool --set-priv-flags <dev> legacy-rx on
         * likely have a consumer accessing first few bytes of meta
         * data, and then actual data.
         */
-       prefetch(xdp->data_meta);
-#if L1_CACHE_BYTES < 128
-       prefetch(xdp->data_meta + L1_CACHE_BYTES);
-#endif
+       net_prefetch(xdp->data_meta);
+
        /* build an skb around the page buffer */
        skb = build_skb(xdp->data_hard_start, truesize);
        if (unlikely(!skb))
 
                return NULL;
        /* prefetch first cache line of first page */
        va = page_address(rx_buffer->page) + rx_buffer->page_offset;
-       prefetch(va);
-#if L1_CACHE_BYTES < 128
-       prefetch(va + L1_CACHE_BYTES);
-#endif
+       net_prefetch(va);
 
        /* allocate a skb to store the frags */
        skb = __napi_alloc_skb(&rx_ring->q_vector->napi,
                return NULL;
        /* prefetch first cache line of first page */
        va = page_address(rx_buffer->page) + rx_buffer->page_offset;
-       prefetch(va);
-#if L1_CACHE_BYTES < 128
-       prefetch(va + L1_CACHE_BYTES);
-#endif
+       net_prefetch(va);
+
        /* build an skb around the page buffer */
        skb = build_skb(va - IAVF_SKB_PAD, truesize);
        if (unlikely(!skb))
 
         * likely have a consumer accessing first few bytes of meta
         * data, and then actual data.
         */
-       prefetch(xdp->data_meta);
-#if L1_CACHE_BYTES < 128
-       prefetch((void *)(xdp->data + L1_CACHE_BYTES));
-#endif
+       net_prefetch(xdp->data_meta);
        /* build an skb around the page buffer */
        skb = build_skb(xdp->data_hard_start, truesize);
        if (unlikely(!skb))
        struct sk_buff *skb;
 
        /* prefetch first cache line of first page */
-       prefetch(xdp->data);
-#if L1_CACHE_BYTES < 128
-       prefetch((void *)(xdp->data + L1_CACHE_BYTES));
-#endif /* L1_CACHE_BYTES */
+       net_prefetch(xdp->data);
 
        /* allocate a skb to store the frags */
        skb = __napi_alloc_skb(&rx_ring->q_vector->napi, ICE_RX_HDR_SIZE,
 
        struct sk_buff *skb;
 
        /* prefetch first cache line of first page */
-       prefetch(va);
-#if L1_CACHE_BYTES < 128
-       prefetch(va + L1_CACHE_BYTES);
-#endif
+       net_prefetch(va);
 
        /* allocate a skb to store the frags */
        skb = napi_alloc_skb(&rx_ring->q_vector->napi, IGB_RX_HDR_LEN);
        struct sk_buff *skb;
 
        /* prefetch first cache line of first page */
-       prefetch(va);
-#if L1_CACHE_BYTES < 128
-       prefetch(va + L1_CACHE_BYTES);
-#endif
+       net_prefetch(va);
 
        /* build an skb around the page buffer */
        skb = build_skb(va - IGB_SKB_PAD, truesize);
 
        struct sk_buff *skb;
 
        /* prefetch first cache line of first page */
-       prefetch(va);
-#if L1_CACHE_BYTES < 128
-       prefetch(va + L1_CACHE_BYTES);
-#endif
+       net_prefetch(va);
 
        /* build an skb around the page buffer */
        skb = build_skb(va - IGC_SKB_PAD, truesize);
        struct sk_buff *skb;
 
        /* prefetch first cache line of first page */
-       prefetch(va);
-#if L1_CACHE_BYTES < 128
-       prefetch(va + L1_CACHE_BYTES);
-#endif
+       net_prefetch(va);
 
        /* allocate a skb to store the frags */
        skb = napi_alloc_skb(&rx_ring->q_vector->napi, IGC_RX_HDR_LEN);
 
        struct sk_buff *skb;
 
        /* prefetch first cache line of first page */
-       prefetch(xdp->data);
-#if L1_CACHE_BYTES < 128
-       prefetch(xdp->data + L1_CACHE_BYTES);
-#endif
+       net_prefetch(xdp->data);
+
        /* Note, we get here by enabling legacy-rx via:
         *
         *    ethtool --set-priv-flags <dev> legacy-rx on
         * likely have a consumer accessing first few bytes of meta
         * data, and then actual data.
         */
-       prefetch(xdp->data_meta);
-#if L1_CACHE_BYTES < 128
-       prefetch(xdp->data_meta + L1_CACHE_BYTES);
-#endif
+       net_prefetch(xdp->data_meta);
 
        /* build an skb to around the page buffer */
        skb = build_skb(xdp->data_hard_start, truesize);
 
        struct sk_buff *skb;
 
        /* prefetch first cache line of first page */
-       prefetch(xdp->data);
-#if L1_CACHE_BYTES < 128
-       prefetch(xdp->data + L1_CACHE_BYTES);
-#endif
+       net_prefetch(xdp->data);
+
        /* Note, we get here by enabling legacy-rx via:
         *
         *    ethtool --set-priv-flags <dev> legacy-rx on
         * have a consumer accessing first few bytes of meta data,
         * and then actual data.
         */
-       prefetch(xdp->data_meta);
-#if L1_CACHE_BYTES < 128
-       prefetch(xdp->data_meta + L1_CACHE_BYTES);
-#endif
+       net_prefetch(xdp->data_meta);
 
        /* build an skb around the page buffer */
        skb = build_skb(xdp->data_hard_start, truesize);
 
        return dev->num_tc;
 }
 
+static inline void net_prefetch(void *p)
+{
+       prefetch(p);
+#if L1_CACHE_BYTES < 128
+       prefetch((u8 *)p + L1_CACHE_BYTES);
+#endif
+}
+
+static inline void net_prefetchw(void *p)
+{
+       prefetchw(p);
+#if L1_CACHE_BYTES < 128
+       prefetchw((u8 *)p + L1_CACHE_BYTES);
+#endif
+}
+
 void netdev_unbind_sb_channel(struct net_device *dev,
                              struct net_device *sb_dev);
 int netdev_bind_sb_channel_queue(struct net_device *dev,