Commit 7117132b authored by Björn Töpel's avatar Björn Töpel Committed by Alexei Starovoitov

ixgbe, xsk: Migrate to new MEM_TYPE_XSK_BUFF_POOL

Remove MEM_TYPE_ZERO_COPY in favor of the new MEM_TYPE_XSK_BUFF_POOL
APIs.

v1->v2: Fixed xdp_buff data_end update. (Björn)
Signed-off-by: default avatarBjörn Töpel <bjorn.topel@intel.com>
Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
Cc: intel-wired-lan@lists.osuosl.org
Link: https://lore.kernel.org/bpf/20200520192103.355233-11-bjorn.topel@gmail.com
parent 175fc430
...@@ -224,17 +224,17 @@ struct ixgbe_tx_buffer { ...@@ -224,17 +224,17 @@ struct ixgbe_tx_buffer {
}; };
struct ixgbe_rx_buffer { struct ixgbe_rx_buffer {
struct sk_buff *skb;
dma_addr_t dma;
union { union {
struct { struct {
struct sk_buff *skb;
dma_addr_t dma;
struct page *page; struct page *page;
__u32 page_offset; __u32 page_offset;
__u16 pagecnt_bias; __u16 pagecnt_bias;
}; };
struct { struct {
void *addr; bool discard;
u64 handle; struct xdp_buff *xdp;
}; };
}; };
}; };
...@@ -351,7 +351,6 @@ struct ixgbe_ring { ...@@ -351,7 +351,6 @@ struct ixgbe_ring {
}; };
struct xdp_rxq_info xdp_rxq; struct xdp_rxq_info xdp_rxq;
struct xdp_umem *xsk_umem; struct xdp_umem *xsk_umem;
struct zero_copy_allocator zca; /* ZC allocator anchor */
u16 ring_idx; /* {rx,tx,xdp}_ring back reference idx */ u16 ring_idx; /* {rx,tx,xdp}_ring back reference idx */
u16 rx_buf_len; u16 rx_buf_len;
} ____cacheline_internodealigned_in_smp; } ____cacheline_internodealigned_in_smp;
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
#include <net/tc_act/tc_mirred.h> #include <net/tc_act/tc_mirred.h>
#include <net/vxlan.h> #include <net/vxlan.h>
#include <net/mpls.h> #include <net/mpls.h>
#include <net/xdp_sock.h> #include <net/xdp_sock_drv.h>
#include <net/xfrm.h> #include <net/xfrm.h>
#include "ixgbe.h" #include "ixgbe.h"
...@@ -3745,8 +3745,7 @@ static void ixgbe_configure_srrctl(struct ixgbe_adapter *adapter, ...@@ -3745,8 +3745,7 @@ static void ixgbe_configure_srrctl(struct ixgbe_adapter *adapter,
/* configure the packet buffer length */ /* configure the packet buffer length */
if (rx_ring->xsk_umem) { if (rx_ring->xsk_umem) {
u32 xsk_buf_len = rx_ring->xsk_umem->chunk_size_nohr - u32 xsk_buf_len = xsk_umem_get_rx_frame_size(rx_ring->xsk_umem);
XDP_PACKET_HEADROOM;
/* If the MAC support setting RXDCTL.RLPML, the /* If the MAC support setting RXDCTL.RLPML, the
* SRRCTL[n].BSIZEPKT is set to PAGE_SIZE and * SRRCTL[n].BSIZEPKT is set to PAGE_SIZE and
...@@ -4093,11 +4092,10 @@ void ixgbe_configure_rx_ring(struct ixgbe_adapter *adapter, ...@@ -4093,11 +4092,10 @@ void ixgbe_configure_rx_ring(struct ixgbe_adapter *adapter,
xdp_rxq_info_unreg_mem_model(&ring->xdp_rxq); xdp_rxq_info_unreg_mem_model(&ring->xdp_rxq);
ring->xsk_umem = ixgbe_xsk_umem(adapter, ring); ring->xsk_umem = ixgbe_xsk_umem(adapter, ring);
if (ring->xsk_umem) { if (ring->xsk_umem) {
ring->zca.free = ixgbe_zca_free;
WARN_ON(xdp_rxq_info_reg_mem_model(&ring->xdp_rxq, WARN_ON(xdp_rxq_info_reg_mem_model(&ring->xdp_rxq,
MEM_TYPE_ZERO_COPY, MEM_TYPE_XSK_BUFF_POOL,
&ring->zca)); NULL));
xsk_buff_set_rxq_info(ring->xsk_umem, &ring->xdp_rxq);
} else { } else {
WARN_ON(xdp_rxq_info_reg_mem_model(&ring->xdp_rxq, WARN_ON(xdp_rxq_info_reg_mem_model(&ring->xdp_rxq,
MEM_TYPE_PAGE_SHARED, NULL)); MEM_TYPE_PAGE_SHARED, NULL));
...@@ -4153,8 +4151,7 @@ void ixgbe_configure_rx_ring(struct ixgbe_adapter *adapter, ...@@ -4153,8 +4151,7 @@ void ixgbe_configure_rx_ring(struct ixgbe_adapter *adapter,
} }
if (ring->xsk_umem && hw->mac.type != ixgbe_mac_82599EB) { if (ring->xsk_umem && hw->mac.type != ixgbe_mac_82599EB) {
u32 xsk_buf_len = ring->xsk_umem->chunk_size_nohr - u32 xsk_buf_len = xsk_umem_get_rx_frame_size(ring->xsk_umem);
XDP_PACKET_HEADROOM;
rxdctl &= ~(IXGBE_RXDCTL_RLPMLMASK | rxdctl &= ~(IXGBE_RXDCTL_RLPMLMASK |
IXGBE_RXDCTL_RLPML_EN); IXGBE_RXDCTL_RLPML_EN);
......
...@@ -35,7 +35,7 @@ int ixgbe_xsk_umem_setup(struct ixgbe_adapter *adapter, struct xdp_umem *umem, ...@@ -35,7 +35,7 @@ int ixgbe_xsk_umem_setup(struct ixgbe_adapter *adapter, struct xdp_umem *umem,
void ixgbe_zca_free(struct zero_copy_allocator *alloc, unsigned long handle); void ixgbe_zca_free(struct zero_copy_allocator *alloc, unsigned long handle);
void ixgbe_alloc_rx_buffers_zc(struct ixgbe_ring *rx_ring, u16 cleaned_count); bool ixgbe_alloc_rx_buffers_zc(struct ixgbe_ring *rx_ring, u16 cleaned_count);
int ixgbe_clean_rx_irq_zc(struct ixgbe_q_vector *q_vector, int ixgbe_clean_rx_irq_zc(struct ixgbe_q_vector *q_vector,
struct ixgbe_ring *rx_ring, struct ixgbe_ring *rx_ring,
const int budget); const int budget);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment