dma_sync_single_range_for_cpu(rx_ring->dev,
                                              rx_bi->dma,
                                              rx_bi->page_offset,
-                                             rx_ring->rx_buf_len,
+                                             IAVF_RXBUFFER_3072,
                                              DMA_FROM_DEVICE);
 
                /* free resources associated with mapping */
                                     DMA_FROM_DEVICE,
                                     IAVF_RX_DMA_ATTR);
 
-               __page_frag_cache_drain(rx_bi->page, rx_bi->pagecnt_bias);
+               __free_page(rx_bi->page);
 
                rx_bi->page = NULL;
                rx_bi->page_offset = 0;
        /* Zero out the descriptor ring */
        memset(rx_ring->desc, 0, rx_ring->size);
 
-       rx_ring->next_to_alloc = 0;
        rx_ring->next_to_clean = 0;
        rx_ring->next_to_use = 0;
 }
                goto err;
        }
 
-       rx_ring->next_to_alloc = 0;
        rx_ring->next_to_clean = 0;
        rx_ring->next_to_use = 0;
 
 {
        rx_ring->next_to_use = val;
 
-       /* update next to alloc since we have filled the ring */
-       rx_ring->next_to_alloc = val;
-
        /* Force memory writes to complete before letting h/w
         * know there are new descriptors to fetch.  (Only
         * applicable for weak-ordered memory model archs,
        struct page *page = bi->page;
        dma_addr_t dma;
 
-       /* since we are recycling buffers we should seldom need to alloc */
-       if (likely(page)) {
-               rx_ring->rx_stats.page_reuse_count++;
-               return true;
-       }
-
        /* alloc new page for storage */
        page = dev_alloc_pages(iavf_rx_pg_order(rx_ring));
        if (unlikely(!page)) {
        bi->page = page;
        bi->page_offset = IAVF_SKB_PAD;
 
-       /* initialize pagecnt_bias to 1 representing we fully own page */
-       bi->pagecnt_bias = 1;
-
        return true;
 }
 
                /* sync the buffer for use by the device */
                dma_sync_single_range_for_device(rx_ring->dev, bi->dma,
                                                 bi->page_offset,
-                                                rx_ring->rx_buf_len,
+                                                IAVF_RXBUFFER_3072,
                                                 DMA_FROM_DEVICE);
 
                /* Refresh the desc even if buffer_addrs didn't change
        return false;
 }
 
-/**
- * iavf_reuse_rx_page - page flip buffer and store it back on the ring
- * @rx_ring: rx descriptor ring to store buffers on
- * @old_buff: donor buffer to have page reused
- *
- * Synchronizes page for reuse by the adapter
- **/
-static void iavf_reuse_rx_page(struct iavf_ring *rx_ring,
-                              struct iavf_rx_buffer *old_buff)
-{
-       struct iavf_rx_buffer *new_buff;
-       u16 nta = rx_ring->next_to_alloc;
-
-       new_buff = &rx_ring->rx_bi[nta];
-
-       /* update, and store next to alloc */
-       nta++;
-       rx_ring->next_to_alloc = (nta < rx_ring->count) ? nta : 0;
-
-       /* transfer page from old buffer to new buffer */
-       new_buff->dma           = old_buff->dma;
-       new_buff->page          = old_buff->page;
-       new_buff->page_offset   = old_buff->page_offset;
-       new_buff->pagecnt_bias  = old_buff->pagecnt_bias;
-}
-
-/**
- * iavf_can_reuse_rx_page - Determine if this page can be reused by
- * the adapter for another receive
- *
- * @rx_buffer: buffer containing the page
- *
- * If page is reusable, rx_buffer->page_offset is adjusted to point to
- * an unused region in the page.
- *
- * For small pages, @truesize will be a constant value, half the size
- * of the memory at page.  We'll attempt to alternate between high and
- * low halves of the page, with one half ready for use by the hardware
- * and the other half being consumed by the stack.  We use the page
- * ref count to determine whether the stack has finished consuming the
- * portion of this page that was passed up with a previous packet.  If
- * the page ref count is >1, we'll assume the "other" half page is
- * still busy, and this page cannot be reused.
- *
- * For larger pages, @truesize will be the actual space used by the
- * received packet (adjusted upward to an even multiple of the cache
- * line size).  This will advance through the page by the amount
- * actually consumed by the received packets while there is still
- * space for a buffer.  Each region of larger pages will be used at
- * most once, after which the page will not be reused.
- *
- * In either case, if the page is reusable its refcount is increased.
- **/
-static bool iavf_can_reuse_rx_page(struct iavf_rx_buffer *rx_buffer)
-{
-       unsigned int pagecnt_bias = rx_buffer->pagecnt_bias;
-       struct page *page = rx_buffer->page;
-
-       /* Is any reuse possible? */
-       if (!dev_page_is_reusable(page))
-               return false;
-
-#if (PAGE_SIZE < 8192)
-       /* if we are only owner of page we can reuse it */
-       if (unlikely((page_count(page) - pagecnt_bias) > 1))
-               return false;
-#else
-#define IAVF_LAST_OFFSET \
-       (SKB_WITH_OVERHEAD(PAGE_SIZE) - IAVF_RXBUFFER_2048)
-       if (rx_buffer->page_offset > IAVF_LAST_OFFSET)
-               return false;
-#endif
-
-       /* If we have drained the page fragment pool we need to update
-        * the pagecnt_bias and page count so that we fully restock the
-        * number of references the driver holds.
-        */
-       if (unlikely(!pagecnt_bias)) {
-               page_ref_add(page, USHRT_MAX);
-               rx_buffer->pagecnt_bias = USHRT_MAX;
-       }
-
-       return true;
-}
-
 /**
  * iavf_add_rx_frag - Add contents of Rx buffer to sk_buff
  * @rx_ring: rx descriptor ring to transact packets on
                             struct sk_buff *skb,
                             unsigned int size)
 {
-#if (PAGE_SIZE < 8192)
-       unsigned int truesize = iavf_rx_pg_size(rx_ring) / 2;
-#else
        unsigned int truesize = SKB_DATA_ALIGN(size + IAVF_SKB_PAD);
-#endif
 
        if (!size)
                return;
 
        skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, rx_buffer->page,
                        rx_buffer->page_offset, size, truesize);
-
-       /* page is being used so we must update the page offset */
-#if (PAGE_SIZE < 8192)
-       rx_buffer->page_offset ^= truesize;
-#else
-       rx_buffer->page_offset += truesize;
-#endif
 }
 
 /**
                                      size,
                                      DMA_FROM_DEVICE);
 
-       /* We have pulled a buffer for use, so decrement pagecnt_bias */
-       rx_buffer->pagecnt_bias--;
-
        return rx_buffer;
 }
 
                                      unsigned int size)
 {
        void *va;
-#if (PAGE_SIZE < 8192)
-       unsigned int truesize = iavf_rx_pg_size(rx_ring) / 2;
-#else
        unsigned int truesize = SKB_DATA_ALIGN(sizeof(struct skb_shared_info)) +
                                SKB_DATA_ALIGN(IAVF_SKB_PAD + size);
-#endif
        struct sk_buff *skb;
 
        if (!rx_buffer || !size)
        skb_reserve(skb, IAVF_SKB_PAD);
        __skb_put(skb, size);
 
-       /* buffer is used by skb, update page_offset */
-#if (PAGE_SIZE < 8192)
-       rx_buffer->page_offset ^= truesize;
-#else
-       rx_buffer->page_offset += truesize;
-#endif
-
        return skb;
 }
 
 /**
- * iavf_put_rx_buffer - Clean up used buffer and either recycle or free
+ * iavf_put_rx_buffer - Unmap used buffer
  * @rx_ring: rx descriptor ring to transact packets on
  * @rx_buffer: rx buffer to pull data from
  *
- * This function will clean up the contents of the rx_buffer.  It will
- * either recycle the buffer or unmap it and free the associated resources.
+ * This function will unmap the buffer after it's written by HW.
  */
 static void iavf_put_rx_buffer(struct iavf_ring *rx_ring,
                               struct iavf_rx_buffer *rx_buffer)
        if (!rx_buffer)
                return;
 
-       if (iavf_can_reuse_rx_page(rx_buffer)) {
-               /* hand second half of page back to the ring */
-               iavf_reuse_rx_page(rx_ring, rx_buffer);
-               rx_ring->rx_stats.page_reuse_count++;
-       } else {
-               /* we are not reusing the buffer so unmap it */
-               dma_unmap_page_attrs(rx_ring->dev, rx_buffer->dma,
-                                    iavf_rx_pg_size(rx_ring),
-                                    DMA_FROM_DEVICE, IAVF_RX_DMA_ATTR);
-               __page_frag_cache_drain(rx_buffer->page,
-                                       rx_buffer->pagecnt_bias);
-       }
+       /* we are not reusing the buffer so unmap it */
+       dma_unmap_page_attrs(rx_ring->dev, rx_buffer->dma, PAGE_SIZE,
+                            DMA_FROM_DEVICE, IAVF_RX_DMA_ATTR);
 
        /* clear contents of buffer_info */
        rx_buffer->page = NULL;
                /* exit if we failed to retrieve a buffer */
                if (!skb) {
                        rx_ring->rx_stats.alloc_buff_failed++;
-                       if (rx_buffer && size)
-                               rx_buffer->pagecnt_bias++;
                        break;
                }
 
 
        BIT_ULL(IAVF_FILTER_PCTYPE_NONF_MULTICAST_IPV6_UDP))
 
 /* Supported Rx Buffer Sizes (a multiple of 128) */
-#define IAVF_RXBUFFER_1536  1536  /* 128B aligned standard Ethernet frame */
-#define IAVF_RXBUFFER_2048  2048
 #define IAVF_RXBUFFER_3072  3072  /* Used for large frames w/ padding */
 #define IAVF_MAX_RXBUFFER   9728  /* largest size for single descriptor */
 
 #define IAVF_RX_DMA_ATTR \
        (DMA_ATTR_SKIP_CPU_SYNC | DMA_ATTR_WEAK_ORDERING)
 
-/* Attempt to maximize the headroom available for incoming frames.  We
- * use a 2K buffer for receives and need 1536/1534 to store the data for
- * the frame.  This leaves us with 512 bytes of room.  From that we need
- * to deduct the space needed for the shared info and the padding needed
- * to IP align the frame.
- *
- * Note: For cache line sizes 256 or larger this value is going to end
- *      up negative.  In these cases we should fall back to the legacy
- *      receive path.
- */
-#if (PAGE_SIZE < 8192)
-#define IAVF_2K_TOO_SMALL_WITH_PADDING \
-((NET_SKB_PAD + IAVF_RXBUFFER_1536) > SKB_WITH_OVERHEAD(IAVF_RXBUFFER_2048))
-
-static inline int iavf_compute_pad(int rx_buf_len)
-{
-       int page_size, pad_size;
-
-       page_size = ALIGN(rx_buf_len, PAGE_SIZE / 2);
-       pad_size = SKB_WITH_OVERHEAD(page_size) - rx_buf_len;
-
-       return pad_size;
-}
-
-static inline int iavf_skb_pad(void)
-{
-       int rx_buf_len;
-
-       /* If a 2K buffer cannot handle a standard Ethernet frame then
-        * optimize padding for a 3K buffer instead of a 1.5K buffer.
-        *
-        * For a 3K buffer we need to add enough padding to allow for
-        * tailroom due to NET_IP_ALIGN possibly shifting us out of
-        * cache-line alignment.
-        */
-       if (IAVF_2K_TOO_SMALL_WITH_PADDING)
-               rx_buf_len = IAVF_RXBUFFER_3072 + SKB_DATA_ALIGN(NET_IP_ALIGN);
-       else
-               rx_buf_len = IAVF_RXBUFFER_1536;
-
-       /* if needed make room for NET_IP_ALIGN */
-       rx_buf_len -= NET_IP_ALIGN;
-
-       return iavf_compute_pad(rx_buf_len);
-}
-
-#define IAVF_SKB_PAD iavf_skb_pad()
-#else
-#define IAVF_2K_TOO_SMALL_WITH_PADDING false
 #define IAVF_SKB_PAD (NET_SKB_PAD + NET_IP_ALIGN)
-#endif
 
 /**
  * iavf_test_staterr - tests bits in Rx descriptor status and error fields
 struct iavf_rx_buffer {
        dma_addr_t dma;
        struct page *page;
-#if (BITS_PER_LONG > 32) || (PAGE_SIZE >= 65536)
        __u32 page_offset;
-#else
-       __u16 page_offset;
-#endif
-       __u16 pagecnt_bias;
 };
 
 struct iavf_queue_stats {
        u64 non_eop_descs;
        u64 alloc_page_failed;
        u64 alloc_buff_failed;
-       u64 page_reuse_count;
-       u64 realloc_count;
 };
 
 enum iavf_ring_state_t {
 
        u16 count;                      /* Number of descriptors */
        u16 reg_idx;                    /* HW register index of the ring */
-       u16 rx_buf_len;
 
        /* used in interrupt processing */
        u16 next_to_use;
        struct iavf_q_vector *q_vector; /* Backreference to associated vector */
 
        struct rcu_head rcu;            /* to avoid race on free */
-       u16 next_to_alloc;
        struct sk_buff *skb;            /* When iavf_clean_rx_ring_irq() must
                                         * return before it sees the EOP for
                                         * the current packet, we save that skb
 
 static inline unsigned int iavf_rx_pg_order(struct iavf_ring *ring)
 {
-#if (PAGE_SIZE < 8192)
-       if (ring->rx_buf_len > (PAGE_SIZE / 2))
-               return 1;
-#endif
        return 0;
 }