return netdev_get_tx_queue(q->lif->netdev, q->index);
 }
 
-static void ionic_rx_buf_reset(struct ionic_buf_info *buf_info)
-{
-       buf_info->page = NULL;
-       buf_info->page_offset = 0;
-       buf_info->dma_addr = 0;
-}
-
 static int ionic_rx_page_alloc(struct ionic_queue *q,
                               struct ionic_buf_info *buf_info)
 {
        struct net_device *netdev = q->lif->netdev;
        struct ionic_rx_stats *stats;
        struct device *dev;
+       struct page *page;
 
        dev = q->dev;
        stats = q_to_rx_stats(q);
                return -EINVAL;
        }
 
-       buf_info->page = alloc_pages(IONIC_PAGE_GFP_MASK, 0);
-       if (unlikely(!buf_info->page)) {
+       page = alloc_pages(IONIC_PAGE_GFP_MASK, 0);
+       if (unlikely(!page)) {
                net_err_ratelimited("%s: %s page alloc failed\n",
                                    netdev->name, q->name);
                stats->alloc_err++;
                return -ENOMEM;
        }
-       buf_info->page_offset = 0;
 
-       buf_info->dma_addr = dma_map_page(dev, buf_info->page, buf_info->page_offset,
+       buf_info->dma_addr = dma_map_page(dev, page, 0,
                                          IONIC_PAGE_SIZE, DMA_FROM_DEVICE);
        if (unlikely(dma_mapping_error(dev, buf_info->dma_addr))) {
-               __free_pages(buf_info->page, 0);
-               ionic_rx_buf_reset(buf_info);
+               __free_pages(page, 0);
                net_err_ratelimited("%s: %s dma map failed\n",
                                    netdev->name, q->name);
                stats->dma_map_err++;
                return -EIO;
        }
 
+       buf_info->page = page;
+       buf_info->page_offset = 0;
+
        return 0;
 }
 
 
        dma_unmap_page(dev, buf_info->dma_addr, IONIC_PAGE_SIZE, DMA_FROM_DEVICE);
        __free_pages(buf_info->page, 0);
-       ionic_rx_buf_reset(buf_info);
+       buf_info->page = NULL;
 }
 
 static bool ionic_rx_buf_recycle(struct ionic_queue *q,
        buf_info = &desc_info->bufs[0];
        len = le16_to_cpu(comp->len);
 
-       prefetch(buf_info->page);
+       prefetchw(buf_info->page);
 
        skb = napi_get_frags(&q_to_qcq(q)->napi);
        if (unlikely(!skb)) {
                if (!ionic_rx_buf_recycle(q, buf_info, frag_len)) {
                        dma_unmap_page(dev, buf_info->dma_addr,
                                       IONIC_PAGE_SIZE, DMA_FROM_DEVICE);
-                       ionic_rx_buf_reset(buf_info);
+                       buf_info->page = NULL;
                }
 
                buf_info++;