introduce xdp_convert_frame_to_buff routine
Subsystems (13)
v3 cover introduce xdp_convert_frame_to_buff routine
Rename convert_to_xdp_frame in xdp_convert_buff_to_frame in order to use standard 'xdp' prefix
Changes since v2:
- rename convert_to_xdp_buff in xdp_convert_frame_to_buff
- rename convert_to_xdp_frame in xdp_convert_buff_to_frame adding patch 2/2
Changes since v1:
- rely on frame->data pointer to compute xdp->data_hard_start one
Lorenzo Bianconi (2):
xdp: introduce xdp_convert_frame_to_buff utility routine
xdp: rename convert_to_xdp_frame in xdp_convert_buff_to_frame
drivers/net/ethernet/amazon/ena/ena_netdev.c | 2 +- drivers/net/ethernet/intel/i40e/i40e_txrx.c | 2 +- drivers/net/ethernet/intel/ice/ice_txrx_lib.c | 2 +- drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 2 +- drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c | 2 +- drivers/net/ethernet/marvell/mvneta.c | 2 +- drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c | 10 +++++----- drivers/net/ethernet/sfc/rx.c | 2 +- drivers/net/ethernet/socionext/netsec.c | 2 +- drivers/net/ethernet/ti/cpsw_priv.c | 2 +- drivers/net/tun.c | 2 +- drivers/net/veth.c | 8 ++------ drivers/net/virtio_net.c | 4 ++-- include/net/xdp.h | 12 +++++++++++- kernel/bpf/cpumap.c | 2 +- kernel/bpf/devmap.c | 2 +- 16 files changed, 32 insertions(+), 26 deletions(-)
Signature · 1 line
2.26.2
PATCH v3 1/2 xdp: introduce xdp_convert_frame_to_buff utility routine
Introduce xdp_convert_frame_to_buff utility routine to initialize xdp_buff fields from xdp_frames ones. Rely on xdp_convert_frame_to_buff in veth xdp code.
--- drivers/net/veth.c | 6 +----- include/net/xdp.h | 10 ++++++++++ 2 files changed, 11 insertions(+), 5 deletions(-)
drivers/net/veth.c +1 -5
@@ -575,11 +575,7 @@ static struct sk_buff *veth_xdp_rcv_one(struct veth_rq *rq,struct xdp_buff xdp;u32 act; - xdp.data_hard_start = hard_start; - xdp.data = frame->data; - xdp.data_end = frame->data + frame->len; - xdp.data_meta = frame->data - frame->metasize; - xdp.frame_sz = frame->frame_sz; +xdp_convert_frame_to_buff (frame, &xdp); xdp.rxq = &rq->xdp_rxq; act =bpf_prog_run_xdp (xdp_prog, &xdp);
include/net/xdp.h +10 -0
@@ -106,6 +106,16 @@ void xdp_warn(const char *msg, const char *func, const int line);struct xdp_frame *xdp_convert_zc_to_xdp_frame (struct xdp_buff *xdp); +static inline +void xdp_convert_frame_to_buff (struct xdp_frame *frame,struct xdp_buff *xdp) +{ + xdp->data_hard_start = frame->data - frame->headroom -sizeof (*frame); + xdp->data = frame->data; + xdp->data_end = frame->data + frame->len; + xdp->data_meta = frame->data - frame->metasize; + xdp->frame_sz = frame->frame_sz; +} +/* Convert xdp_buff to xdp_frame */ static inline struct xdp_frame *convert_to_xdp_frame (struct xdp_buff *xdp)
Signature · 1 line
2.26.2
PATCH v3 2/2 xdp: rename convert_to_xdp_frame in xdp_convert_buff_to_frame
In reply to Lorenzo BianconiIn order to use standard 'xdp' prefix, rename convert_to_xdp_frame utility routine in xdp_convert_buff_to_frame and replace all the occurrences
--- drivers/net/ethernet/amazon/ena/ena_netdev.c | 2 +- drivers/net/ethernet/intel/i40e/i40e_txrx.c | 2 +- drivers/net/ethernet/intel/ice/ice_txrx_lib.c | 2 +- drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 2 +- drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c | 2 +- drivers/net/ethernet/marvell/mvneta.c | 2 +- drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c | 10 +++++----- drivers/net/ethernet/sfc/rx.c | 2 +- drivers/net/ethernet/socionext/netsec.c | 2 +- drivers/net/ethernet/ti/cpsw_priv.c | 2 +- drivers/net/tun.c | 2 +- drivers/net/veth.c | 2 +- drivers/net/virtio_net.c | 4 ++-- include/net/xdp.h | 2 +- kernel/bpf/cpumap.c | 2 +- kernel/bpf/devmap.c | 2 +- 16 files changed, 21 insertions(+), 21 deletions(-)
drivers/net/ethernet/amazon/ena/ena_netdev.c +1 -1
@@ -263,7 +263,7 @@ static int ena_xdp_tx_map_buff(struct ena_ring *xdp_ring,dma_addr_t dma =0 ;u32 size; - tx_info->xdpf =convert_to_xdp_frame (xdp); + tx_info->xdpf =xdp_convert_buff_to_frame (xdp); size = tx_info->xdpf->len; ena_buf = tx_info->bufs;
drivers/net/ethernet/intel/i40e/i40e_txrx.c +1 -1
@@ -2167,7 +2167,7 @@ static int i40e_xmit_xdp_ring(struct xdp_frame *xdpf,int i40e_xmit_xdp_tx_ring (struct xdp_buff *xdp,struct i40e_ring *xdp_ring) { -struct xdp_frame *xdpf =convert_to_xdp_frame (xdp); +struct xdp_frame *xdpf =xdp_convert_buff_to_frame (xdp);if (unlikely (!xdpf))return I40E_XDP_CONSUMED ;
drivers/net/ethernet/intel/ice/ice_txrx_lib.c +1 -1
@@ -259,7 +259,7 @@ int ice_xmit_xdp_ring(void *data, u16 size, struct ice_ring *xdp_ring)*/ int ice_xmit_xdp_buff (struct xdp_buff *xdp,struct ice_ring *xdp_ring) { -struct xdp_frame *xdpf =convert_to_xdp_frame (xdp); +struct xdp_frame *xdpf =xdp_convert_buff_to_frame (xdp);if (unlikely (!xdpf))return ICE_XDP_CONSUMED ;
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +1 -1
@@ -2215,7 +2215,7 @@ static struct sk_buff *ixgbe_run_xdp(struct ixgbe_adapter *adapter,case XDP_PASS :break ;case XDP_TX : - xdpf =convert_to_xdp_frame (xdp); + xdpf =xdp_convert_buff_to_frame (xdp);if (unlikely (!xdpf)) { result =IXGBE_XDP_CONSUMED ;break ;
drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c +1 -1
@@ -107,7 +107,7 @@ static int ixgbe_run_xdp_zc(struct ixgbe_adapter *adapter,case XDP_PASS :break ;case XDP_TX : - xdpf =convert_to_xdp_frame (xdp); + xdpf =xdp_convert_buff_to_frame (xdp);if (unlikely (!xdpf)) { result =IXGBE_XDP_CONSUMED ;break ;
drivers/net/ethernet/marvell/mvneta.c +1 -1
@@ -2072,7 +2072,7 @@ mvneta_xdp_xmit_back(struct mvneta_port *pp, struct xdp_buff *xdp)int cpu;u32 ret; - xdpf =convert_to_xdp_frame (xdp); + xdpf =xdp_convert_buff_to_frame (xdp);if (unlikely (!xdpf))return MVNETA_XDP_DROPPED ;
drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c +5 -5
@@ -64,7 +64,7 @@ mlx5e_xmit_xdp_buff(struct mlx5e_xdpsq *sq, struct mlx5e_rq *rq,struct xdp_frame *xdpf;dma_addr_t dma_addr; - xdpf =convert_to_xdp_frame (xdp); + xdpf =xdp_convert_buff_to_frame (xdp);if (unlikely (!xdpf))return false;
@@ -97,10 +97,10 @@ mlx5e_xmit_xdp_buff(struct mlx5e_xdpsq *sq, struct mlx5e_rq *rq, xdpi.frame.xdpf = xdpf; xdpi.frame.dma_addr = dma_addr; }else { -/* Driver assumes that convert_to_xdp_frame returns an xdp_frame -* that points to the same memory region as the original -* xdp_buff. It allows to map the memory only once and to use -* the DMA_BIDIRECTIONAL mode. +/* Driver assumes that xdp_convert_buff_to_frame returns +* an xdp_frame that points to the same memory region as +* the original xdp_buff. It allows to map the memory only +* once and to use the DMA_BIDIRECTIONAL mode. */ xdpi.mode =MLX5E_XDP_XMIT_MODE_PAGE ;
drivers/net/ethernet/sfc/rx.c +1 -1
@@ -329,7 +329,7 @@ static bool efx_do_xdp(struct efx_nic *efx, struct efx_channel *channel,case XDP_TX :/* Buffer ownership passes to tx on success. */ - xdpf =convert_to_xdp_frame (&xdp); + xdpf =xdp_convert_buff_to_frame (&xdp); err =efx_xdp_tx_buffers (efx,1 , &xdpf, true);if (unlikely (err !=1 )) {efx_free_rx_buffers (rx_queue, rx_buf,1 );
drivers/net/ethernet/socionext/netsec.c +1 -1
@@ -867,7 +867,7 @@ static u32 netsec_xdp_queue_one(struct netsec_priv *priv,static u32 netsec_xdp_xmit_back (struct netsec_priv *priv,struct xdp_buff *xdp) {struct netsec_desc_ring *tx_ring = &priv->desc_ring[NETSEC_RING_TX ]; -struct xdp_frame *xdpf =convert_to_xdp_frame (xdp); +struct xdp_frame *xdpf =xdp_convert_buff_to_frame (xdp);u32 ret;if (unlikely (!xdpf))
drivers/net/ethernet/ti/cpsw_priv.c +1 -1
@@ -1355,7 +1355,7 @@ int cpsw_run_xdp(struct cpsw_priv *priv, int ch, struct xdp_buff *xdp, ret =CPSW_XDP_PASS ;break ;case XDP_TX : - xdpf =convert_to_xdp_frame (xdp); + xdpf =xdp_convert_buff_to_frame (xdp);if (unlikely (!xdpf)) goto drop;
drivers/net/tun.c +1 -1
@@ -1295,7 +1295,7 @@ static int tun_xdp_xmit(struct net_device *dev, int n,static int tun_xdp_tx (struct net_device *dev,struct xdp_buff *xdp) { -struct xdp_frame *frame =convert_to_xdp_frame (xdp); +struct xdp_frame *frame =xdp_convert_buff_to_frame (xdp);if (unlikely (!frame))return -EOVERFLOW ;
drivers/net/veth.c +1 -1
@@ -541,7 +541,7 @@ static void veth_xdp_flush(struct veth_rq *rq, struct veth_xdp_tx_bq *bq)static int veth_xdp_tx (struct veth_rq *rq,struct xdp_buff *xdp,struct veth_xdp_tx_bq *bq) { -struct xdp_frame *frame =convert_to_xdp_frame (xdp); +struct xdp_frame *frame =xdp_convert_buff_to_frame (xdp);if (unlikely (!frame))return -EOVERFLOW ;
drivers/net/virtio_net.c +2 -2
@@ -703,7 +703,7 @@ static struct sk_buff *receive_small(struct net_device *dev,break ;case XDP_TX : stats->xdp_tx++; - xdpf =convert_to_xdp_frame (&xdp); + xdpf =xdp_convert_buff_to_frame (&xdp);if (unlikely (!xdpf)) goto err_xdp; err =virtnet_xdp_xmit (dev,1 , &xdpf,0 );
@@ -892,7 +892,7 @@ static struct sk_buff *receive_mergeable(struct net_device *dev,break ;case XDP_TX : stats->xdp_tx++; - xdpf =convert_to_xdp_frame (&xdp); + xdpf =xdp_convert_buff_to_frame (&xdp);if (unlikely (!xdpf)) goto err_xdp; err =virtnet_xdp_xmit (dev,1 , &xdpf,0 );
include/net/xdp.h +1 -1
@@ -118,7 +118,7 @@ void xdp_convert_frame_to_buff(struct xdp_frame *frame, struct xdp_buff *xdp)/* Convert xdp_buff to xdp_frame */ static inline -struct xdp_frame *convert_to_xdp_frame (struct xdp_buff *xdp) +struct xdp_frame *xdp_convert_buff_to_frame (struct xdp_buff *xdp) {struct xdp_frame *xdp_frame;int metasize;
kernel/bpf/cpumap.c +1 -1
@@ -621,7 +621,7 @@ int cpu_map_enqueue(struct bpf_cpu_map_entry *rcpu, struct xdp_buff *xdp, {struct xdp_frame *xdpf; - xdpf =convert_to_xdp_frame (xdp); + xdpf =xdp_convert_buff_to_frame (xdp);if (unlikely (!xdpf))return -EOVERFLOW ;
kernel/bpf/devmap.c +1 -1
@@ -434,7 +434,7 @@ static inline int __xdp_enqueue(struct net_device *dev, struct xdp_buff *xdp,if (unlikely (err))return err; - xdpf =convert_to_xdp_frame (xdp); + xdpf =xdp_convert_buff_to_frame (xdp);if (unlikely (!xdpf))return -EOVERFLOW ;
Signature · 1 line
2.26.2
Re: [PATCH v3 bpf-next 2/2] xdp: rename convert_to_xdp_frame in xdp_convert_buff_to_frame
Quoted 5 lines · On Thu, 28 May 2020 22:47:29 +0200 Lorenzo Bianconi <[email protected]> wrote:
In order to use standard 'xdp' prefix, rename
convert_to_xdp_frameutility routine inxdp_convert_buff_to_frameand replace all the occurrencesSigned-off-by Lorenzo Bianconi <[email protected]>
You even corrected a comment mentioning the function name :-)
Signature · 4 lines
Best regards, Jesper Dangaard Brouer MSc.CS, Principal Kernel Engineer at Red Hat LinkedIn: http://www.linkedin.com/in/brouer
Alexei Starovoitov
AppliedRe: [PATCH v3 bpf-next 2/2] xdp: rename convert_to_xdp_frame in xdp_convert_buff_to_frame
Quoted 11 lines · Jesper Dangaard Brouer
Quoted 5 lines · On Thu, 28 May 2020 22:47:29 +0200 Lorenzo Bianconi <[email protected]> wrote:
In order to use standard 'xdp' prefix, rename
convert_to_xdp_frameutility routine inxdp_convert_buff_to_frameand replace all the occurrencesSigned-off-by Lorenzo Bianconi <[email protected]>
Applied. Thanks