net, xdp: Introduce xdp_prepare_buff utility routine
[linux-2.6-block.git] / drivers / net / ethernet / intel / ixgbe / ixgbe_main.c
index 7a7c86835a87d55d04cc68238f4678eed859b65a..56dca73d158eeb7d04cba01675c8914bfbb153e4 100644 (file)
@@ -2335,12 +2335,12 @@ static int ixgbe_clean_rx_irq(struct ixgbe_q_vector *q_vector,
 
                /* retrieve a buffer from the ring */
                if (!skb) {
-                       xdp.data = page_address(rx_buffer->page) +
-                                  rx_buffer->page_offset;
-                       xdp.data_meta = xdp.data;
-                       xdp.data_hard_start = xdp.data -
-                                             ixgbe_rx_offset(rx_ring);
-                       xdp.data_end = xdp.data + size;
+                       unsigned int offset = ixgbe_rx_offset(rx_ring);
+                       unsigned char *hard_start;
+
+                       hard_start = page_address(rx_buffer->page) +
+                                    rx_buffer->page_offset - offset;
+                       xdp_prepare_buff(&xdp, hard_start, offset, size, true);
 #if (PAGE_SIZE > 4096)
                        /* At larger PAGE_SIZE, frame_sz depend on len size */
                        xdp.frame_sz = ixgbe_rx_frame_truesize(rx_ring, size);