lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 13 Dec 2022 10:56:10 +0200 From: Tariq Toukan <ttoukan.linux@...il.com> To: Stanislav Fomichev <sdf@...gle.com>, bpf@...r.kernel.org Cc: ast@...nel.org, daniel@...earbox.net, andrii@...nel.org, martin.lau@...ux.dev, song@...nel.org, yhs@...com, john.fastabend@...il.com, kpsingh@...nel.org, haoluo@...gle.com, jolsa@...nel.org, Tariq Toukan <tariqt@...dia.com>, David Ahern <dsahern@...il.com>, Jakub Kicinski <kuba@...nel.org>, Willem de Bruijn <willemb@...gle.com>, Jesper Dangaard Brouer <brouer@...hat.com>, Anatoly Burakov <anatoly.burakov@...el.com>, Alexander Lobakin <alexandr.lobakin@...el.com>, Magnus Karlsson <magnus.karlsson@...il.com>, Maryam Tahhan <mtahhan@...hat.com>, xdp-hints@...-project.net, netdev@...r.kernel.org Subject: Re: [PATCH bpf-next v4 10/15] net/mlx4_en: Introduce wrapper for xdp_buff On 12/13/2022 4:36 AM, Stanislav Fomichev wrote: > No functional changes. Boilerplate to allow stuffing more data after xdp_buff. > > Cc: Tariq Toukan <tariqt@...dia.com> > Cc: John Fastabend <john.fastabend@...il.com> > Cc: David Ahern <dsahern@...il.com> > Cc: Martin KaFai Lau <martin.lau@...ux.dev> > Cc: Jakub Kicinski <kuba@...nel.org> > Cc: Willem de Bruijn <willemb@...gle.com> > Cc: Jesper Dangaard Brouer <brouer@...hat.com> > Cc: Anatoly Burakov <anatoly.burakov@...el.com> > Cc: Alexander Lobakin <alexandr.lobakin@...el.com> > Cc: Magnus Karlsson <magnus.karlsson@...il.com> > Cc: Maryam Tahhan <mtahhan@...hat.com> > Cc: xdp-hints@...-project.net > Cc: netdev@...r.kernel.org > Signed-off-by: Stanislav Fomichev <sdf@...gle.com> > --- > drivers/net/ethernet/mellanox/mlx4/en_rx.c | 26 +++++++++++++--------- > 1 file changed, 15 insertions(+), 11 deletions(-) > > diff --git a/drivers/net/ethernet/mellanox/mlx4/en_rx.c b/drivers/net/ethernet/mellanox/mlx4/en_rx.c > index 8f762fc170b3..014a80af2813 100644 > --- a/drivers/net/ethernet/mellanox/mlx4/en_rx.c > +++ b/drivers/net/ethernet/mellanox/mlx4/en_rx.c > @@ -661,9 +661,14 @@ static int check_csum(struct mlx4_cqe *cqe, struct sk_buff *skb, void *va, > #define MLX4_CQE_STATUS_IP_ANY (MLX4_CQE_STATUS_IPV4) > #endif > > +struct mlx4_en_xdp_buff { > + struct xdp_buff xdp; > +}; > + > int mlx4_en_process_rx_cq(struct net_device *dev, struct mlx4_en_cq *cq, int budget) > { > struct mlx4_en_priv *priv = netdev_priv(dev); > + struct mlx4_en_xdp_buff mxbuf = {}; > int factor = priv->cqe_factor; > struct mlx4_en_rx_ring *ring; > struct bpf_prog *xdp_prog; > @@ -671,7 +676,6 @@ int mlx4_en_process_rx_cq(struct net_device *dev, struct mlx4_en_cq *cq, int bud > bool doorbell_pending; > bool xdp_redir_flush; > struct mlx4_cqe *cqe; > - struct xdp_buff xdp; > int polled = 0; > int index; > > @@ -681,7 +685,7 @@ int mlx4_en_process_rx_cq(struct net_device *dev, struct mlx4_en_cq *cq, int bud > ring = priv->rx_ring[cq_ring]; > > xdp_prog = rcu_dereference_bh(ring->xdp_prog); > - xdp_init_buff(&xdp, priv->frag_info[0].frag_stride, &ring->xdp_rxq); > + xdp_init_buff(&mxbuf.xdp, priv->frag_info[0].frag_stride, &ring->xdp_rxq); > doorbell_pending = false; > xdp_redir_flush = false; > > @@ -776,24 +780,24 @@ int mlx4_en_process_rx_cq(struct net_device *dev, struct mlx4_en_cq *cq, int bud > priv->frag_info[0].frag_size, > DMA_FROM_DEVICE); > > - xdp_prepare_buff(&xdp, va - frags[0].page_offset, > + xdp_prepare_buff(&mxbuf.xdp, va - frags[0].page_offset, > frags[0].page_offset, length, false); > - orig_data = xdp.data; > + orig_data = mxbuf.xdp.data; > > - act = bpf_prog_run_xdp(xdp_prog, &xdp); > + act = bpf_prog_run_xdp(xdp_prog, &mxbuf.xdp); > > - length = xdp.data_end - xdp.data; > - if (xdp.data != orig_data) { > - frags[0].page_offset = xdp.data - > - xdp.data_hard_start; > - va = xdp.data; > + length = mxbuf.xdp.data_end - mxbuf.xdp.data; > + if (mxbuf.xdp.data != orig_data) { > + frags[0].page_offset = mxbuf.xdp.data - > + mxbuf.xdp.data_hard_start; > + va = mxbuf.xdp.data; > } > > switch (act) { > case XDP_PASS: > break; > case XDP_REDIRECT: > - if (likely(!xdp_do_redirect(dev, &xdp, xdp_prog))) { > + if (likely(!xdp_do_redirect(dev, &mxbuf.xdp, xdp_prog))) { > ring->xdp_redirect++; > xdp_redir_flush = true; > frags[0].page = NULL; Thanks for your patches. Reviewed-by: Tariq Toukan <tariqt@...dia.com>
Powered by blists - more mailing lists