{"id":1375803,"url":"http://patchwork.ozlabs.org/api/patches/1375803/?format=json","web_url":"http://patchwork.ozlabs.org/project/netdev/patch/31f641800f63ad8c221785c54295112f01935106.1601648734.git.lorenzo@kernel.org/","project":{"id":7,"url":"http://patchwork.ozlabs.org/api/projects/7/?format=json","name":"Linux network development","link_name":"netdev","list_id":"netdev.vger.kernel.org","list_email":"netdev@vger.kernel.org","web_url":null,"scm_url":null,"webscm_url":null,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<31f641800f63ad8c221785c54295112f01935106.1601648734.git.lorenzo@kernel.org>","list_archive_url":null,"date":"2020-10-02T14:42:00","name":"[v4,bpf-next,02/13] xdp: initialize xdp_buff mb bit to 0 in all XDP drivers","commit_ref":null,"pull_url":null,"state":"changes-requested","archived":false,"hash":"663506b84be60ee3aac8487b9aa8f8ccd50628c1","submitter":{"id":76007,"url":"http://patchwork.ozlabs.org/api/people/76007/?format=json","name":"Lorenzo Bianconi","email":"lorenzo@kernel.org"},"delegate":{"id":77147,"url":"http://patchwork.ozlabs.org/api/users/77147/?format=json","username":"bpf","first_name":"BPF","last_name":"Maintainers","email":"bpf@iogearbox.net"},"mbox":"http://patchwork.ozlabs.org/project/netdev/patch/31f641800f63ad8c221785c54295112f01935106.1601648734.git.lorenzo@kernel.org/mbox/","series":[{"id":205635,"url":"http://patchwork.ozlabs.org/api/series/205635/?format=json","web_url":"http://patchwork.ozlabs.org/project/netdev/list/?series=205635","date":"2020-10-02T14:41:58","name":"mvneta: introduce XDP multi-buffer support","version":4,"mbox":"http://patchwork.ozlabs.org/series/205635/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/1375803/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/1375803/checks/","tags":{},"related":[],"headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming-netdev@ozlabs.org","Delivered-To":"patchwork-incoming-netdev@ozlabs.org","Authentication-Results":["ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=23.128.96.18; helo=vger.kernel.org;\n envelope-from=netdev-owner@vger.kernel.org; receiver=<UNKNOWN>)","ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=kernel.org","ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=default header.b=zDOdnIvF;\n\tdkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [23.128.96.18])\n\tby ozlabs.org (Postfix) with ESMTP id 4C2t4n4gtYz9sSs\n\tfor <patchwork-incoming-netdev@ozlabs.org>;\n Sat,  3 Oct 2020 00:42:33 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n        id S2388174AbgJBOmc (ORCPT\n        <rfc822;patchwork-incoming-netdev@ozlabs.org>);\n        Fri, 2 Oct 2020 10:42:32 -0400","from mail.kernel.org ([198.145.29.99]:60750 \"EHLO mail.kernel.org\"\n        rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP\n        id S1726017AbgJBOmc (ORCPT <rfc822;netdev@vger.kernel.org>);\n        Fri, 2 Oct 2020 10:42:32 -0400","from lore-desk.redhat.com (unknown [176.207.245.61])\n        (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n        (No client certificate requested)\n        by mail.kernel.org (Postfix) with ESMTPSA id 5178C20719;\n        Fri,  2 Oct 2020 14:42:28 +0000 (UTC)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n        s=default; t=1601649750;\n        bh=LxNPYsGGK2VbzekPFKAjqYOFrt5K/1kDpfiN9h5n05I=;\n        h=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n        b=zDOdnIvFlldyEYf1C2uiHfd7/4zY3EBJSr7D4M2p+jBKwjK6cl+FJ0NWiDiuCeHLq\n         9Jj8hjwCSMc+LB3fLf4vLiejaxl9oCNBJ68Upmm197CkNIbwCZfjCMKRRuz8PRXTqF\n         bLN0uhcQ0QwN5eeYCc0TDLDqx65E8gAzQ8+pzR0M=","From":"Lorenzo Bianconi <lorenzo@kernel.org>","To":"bpf@vger.kernel.org, netdev@vger.kernel.org","Cc":"davem@davemloft.net, kuba@kernel.org, ast@kernel.org,\n        daniel@iogearbox.net, shayagr@amazon.com, sameehj@amazon.com,\n        john.fastabend@gmail.com, dsahern@kernel.org, brouer@redhat.com,\n        lorenzo.bianconi@redhat.com, echaudro@redhat.com","Subject":"[PATCH v4 bpf-next 02/13] xdp: initialize xdp_buff mb bit to 0 in all\n XDP drivers","Date":"Fri,  2 Oct 2020 16:42:00 +0200","Message-Id":"\n <31f641800f63ad8c221785c54295112f01935106.1601648734.git.lorenzo@kernel.org>","X-Mailer":"git-send-email 2.26.2","In-Reply-To":"<cover.1601648734.git.lorenzo@kernel.org>","References":"<cover.1601648734.git.lorenzo@kernel.org>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"},"content":"Initialize multi-buffer bit (mb) to 0 in all XDP-capable drivers.\nThis is a preliminary patch to enable xdp multi-buffer support.\n\nSigned-off-by: Lorenzo Bianconi <lorenzo@kernel.org>\n---\n drivers/net/ethernet/amazon/ena/ena_netdev.c        | 1 +\n drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c       | 1 +\n drivers/net/ethernet/cavium/thunder/nicvf_main.c    | 1 +\n drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c    | 1 +\n drivers/net/ethernet/intel/i40e/i40e_txrx.c         | 1 +\n drivers/net/ethernet/intel/ice/ice_txrx.c           | 1 +\n drivers/net/ethernet/intel/ixgbe/ixgbe_main.c       | 1 +\n drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c   | 1 +\n drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c     | 1 +\n drivers/net/ethernet/mellanox/mlx4/en_rx.c          | 1 +\n drivers/net/ethernet/mellanox/mlx5/core/en_rx.c     | 1 +\n drivers/net/ethernet/netronome/nfp/nfp_net_common.c | 1 +\n drivers/net/ethernet/qlogic/qede/qede_fp.c          | 1 +\n drivers/net/ethernet/sfc/rx.c                       | 1 +\n drivers/net/ethernet/socionext/netsec.c             | 1 +\n drivers/net/ethernet/ti/cpsw.c                      | 1 +\n drivers/net/ethernet/ti/cpsw_new.c                  | 1 +\n drivers/net/hyperv/netvsc_bpf.c                     | 1 +\n drivers/net/tun.c                                   | 2 ++\n drivers/net/veth.c                                  | 1 +\n drivers/net/virtio_net.c                            | 2 ++\n drivers/net/xen-netfront.c                          | 1 +\n net/core/dev.c                                      | 1 +\n 23 files changed, 25 insertions(+)","diff":"diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c\nindex e8131dadc22c..339319b97853 100644\n--- a/drivers/net/ethernet/amazon/ena/ena_netdev.c\n+++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c\n@@ -1595,6 +1595,7 @@ static int ena_clean_rx_irq(struct ena_ring *rx_ring, struct napi_struct *napi,\n \tres_budget = budget;\n \txdp.rxq = &rx_ring->xdp_rxq;\n \txdp.frame_sz = ENA_PAGE_SIZE;\n+\txdp.mb = 0;\n \n \tdo {\n \t\txdp_verdict = XDP_PASS;\ndiff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c\nindex fcc262064766..344644b6dd4d 100644\n--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c\n+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c\n@@ -139,6 +139,7 @@ bool bnxt_rx_xdp(struct bnxt *bp, struct bnxt_rx_ring_info *rxr, u16 cons,\n \txdp.data_end = *data_ptr + *len;\n \txdp.rxq = &rxr->xdp_rxq;\n \txdp.frame_sz = PAGE_SIZE; /* BNXT_RX_PAGE_MODE(bp) when XDP enabled */\n+\txdp.mb = 0;\n \torig_data = xdp.data;\n \n \trcu_read_lock();\ndiff --git a/drivers/net/ethernet/cavium/thunder/nicvf_main.c b/drivers/net/ethernet/cavium/thunder/nicvf_main.c\nindex 0a94c396173b..7fdabaabab1b 100644\n--- a/drivers/net/ethernet/cavium/thunder/nicvf_main.c\n+++ b/drivers/net/ethernet/cavium/thunder/nicvf_main.c\n@@ -553,6 +553,7 @@ static inline bool nicvf_xdp_rx(struct nicvf *nic, struct bpf_prog *prog,\n \txdp.data_end = xdp.data + len;\n \txdp.rxq = &rq->xdp_rxq;\n \txdp.frame_sz = RCV_FRAG_LEN + XDP_PACKET_HEADROOM;\n+\txdp.mb = 0;\n \torig_data = xdp.data;\n \n \trcu_read_lock();\ndiff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c\nindex fe4caf7aad7c..8410e713162e 100644\n--- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c\n+++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c\n@@ -366,6 +366,7 @@ static u32 dpaa2_eth_run_xdp(struct dpaa2_eth_priv *priv,\n \n \txdp.frame_sz = DPAA2_ETH_RX_BUF_RAW_SIZE -\n \t\t(dpaa2_fd_get_offset(fd) - XDP_PACKET_HEADROOM);\n+\txdp.mb = 0;\n \n \txdp_act = bpf_prog_run_xdp(xdp_prog, &xdp);\n \ndiff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c\nindex d43ce13a93c9..5df07bc98283 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c\n@@ -2332,6 +2332,7 @@ static int i40e_clean_rx_irq(struct i40e_ring *rx_ring, int budget)\n \txdp.frame_sz = i40e_rx_frame_truesize(rx_ring, 0);\n #endif\n \txdp.rxq = &rx_ring->xdp_rxq;\n+\txdp.mb = 0;\n \n \twhile (likely(total_rx_packets < (unsigned int)budget)) {\n \t\tstruct i40e_rx_buffer *rx_buffer;\ndiff --git a/drivers/net/ethernet/intel/ice/ice_txrx.c b/drivers/net/ethernet/intel/ice/ice_txrx.c\nindex eae75260fe20..d641f513b8d9 100644\n--- a/drivers/net/ethernet/intel/ice/ice_txrx.c\n+++ b/drivers/net/ethernet/intel/ice/ice_txrx.c\n@@ -1089,6 +1089,7 @@ int ice_clean_rx_irq(struct ice_ring *rx_ring, int budget)\n #if (PAGE_SIZE < 8192)\n \txdp.frame_sz = ice_rx_frame_truesize(rx_ring, 0);\n #endif\n+\txdp.mb = 0;\n \n \t/* start the loop to process Rx packets bounded by 'budget' */\n \twhile (likely(total_rx_pkts < (unsigned int)budget)) {\ndiff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c\nindex a190d5c616fc..39f9d2032b9d 100644\n--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c\n+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c\n@@ -2298,6 +2298,7 @@ static int ixgbe_clean_rx_irq(struct ixgbe_q_vector *q_vector,\n #if (PAGE_SIZE < 8192)\n \txdp.frame_sz = ixgbe_rx_frame_truesize(rx_ring, 0);\n #endif\n+\txdp.mb = 0;\n \n \twhile (likely(total_rx_packets < budget)) {\n \t\tunion ixgbe_adv_rx_desc *rx_desc;\ndiff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c\nindex 82fce27f682b..1fbc740c266e 100644\n--- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c\n+++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c\n@@ -1129,6 +1129,7 @@ static int ixgbevf_clean_rx_irq(struct ixgbevf_q_vector *q_vector,\n \tstruct xdp_buff xdp;\n \n \txdp.rxq = &rx_ring->xdp_rxq;\n+\txdp.mb = 0;\n \n \t/* Frame size depend on rx_ring setup when PAGE_SIZE=4K */\n #if (PAGE_SIZE < 8192)\ndiff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c\nindex f6616c8933ca..01661ade9009 100644\n--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c\n+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c\n@@ -3558,6 +3558,7 @@ static int mvpp2_rx(struct mvpp2_port *port, struct napi_struct *napi,\n \t\t\txdp.data = data + MVPP2_MH_SIZE + MVPP2_SKB_HEADROOM;\n \t\t\txdp.data_end = xdp.data + rx_bytes;\n \t\t\txdp.frame_sz = PAGE_SIZE;\n+\t\t\txdp.mb = 0;\n \n \t\t\tif (bm_pool->pkt_size == MVPP2_BM_SHORT_PKT_SIZE)\n \t\t\t\txdp.rxq = &rxq->xdp_rxq_short;\ndiff --git a/drivers/net/ethernet/mellanox/mlx4/en_rx.c b/drivers/net/ethernet/mellanox/mlx4/en_rx.c\nindex 99d7737e8ad6..de1ae36b068e 100644\n--- a/drivers/net/ethernet/mellanox/mlx4/en_rx.c\n+++ b/drivers/net/ethernet/mellanox/mlx4/en_rx.c\n@@ -684,6 +684,7 @@ int mlx4_en_process_rx_cq(struct net_device *dev, struct mlx4_en_cq *cq, int bud\n \txdp_prog = rcu_dereference(ring->xdp_prog);\n \txdp.rxq = &ring->xdp_rxq;\n \txdp.frame_sz = priv->frag_info[0].frag_stride;\n+\txdp.mb = 0;\n \tdoorbell_pending = 0;\n \n \t/* We assume a 1:1 mapping between CQEs and Rx descriptors, so Rx\ndiff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c\nindex 599f5b5ebc97..82c3e755dadd 100644\n--- a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c\n+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c\n@@ -1133,6 +1133,7 @@ static void mlx5e_fill_xdp_buff(struct mlx5e_rq *rq, void *va, u16 headroom,\n \txdp->data_end = xdp->data + len;\n \txdp->rxq = &rq->xdp_rxq;\n \txdp->frame_sz = rq->buff.frame0_sz;\n+\txdp->mb = 0;\n }\n \n static struct sk_buff *\ndiff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c\nindex b150da43adb2..69fab1010752 100644\n--- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c\n+++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c\n@@ -1824,6 +1824,7 @@ static int nfp_net_rx(struct nfp_net_rx_ring *rx_ring, int budget)\n \ttrue_bufsz = xdp_prog ? PAGE_SIZE : dp->fl_bufsz;\n \txdp.frame_sz = PAGE_SIZE - NFP_NET_RX_BUF_HEADROOM;\n \txdp.rxq = &rx_ring->xdp_rxq;\n+\txdp.mb = 0;\n \ttx_ring = r_vec->xdp_ring;\n \n \twhile (pkts_polled < budget) {\ndiff --git a/drivers/net/ethernet/qlogic/qede/qede_fp.c b/drivers/net/ethernet/qlogic/qede/qede_fp.c\nindex a2494bf85007..14a54094ca08 100644\n--- a/drivers/net/ethernet/qlogic/qede/qede_fp.c\n+++ b/drivers/net/ethernet/qlogic/qede/qede_fp.c\n@@ -1096,6 +1096,7 @@ static bool qede_rx_xdp(struct qede_dev *edev,\n \txdp.data_end = xdp.data + *len;\n \txdp.rxq = &rxq->xdp_rxq;\n \txdp.frame_sz = rxq->rx_buf_seg_size; /* PAGE_SIZE when XDP enabled */\n+\txdp.mb = 0;\n \n \t/* Queues always have a full reset currently, so for the time\n \t * being until there's atomic program replace just mark read\ndiff --git a/drivers/net/ethernet/sfc/rx.c b/drivers/net/ethernet/sfc/rx.c\nindex aaa112877561..286feb510c21 100644\n--- a/drivers/net/ethernet/sfc/rx.c\n+++ b/drivers/net/ethernet/sfc/rx.c\n@@ -301,6 +301,7 @@ static bool efx_do_xdp(struct efx_nic *efx, struct efx_channel *channel,\n \txdp.data_end = xdp.data + rx_buf->len;\n \txdp.rxq = &rx_queue->xdp_rxq_info;\n \txdp.frame_sz = efx->rx_page_buf_step;\n+\txdp.mb = 0;\n \n \txdp_act = bpf_prog_run_xdp(xdp_prog, &xdp);\n \trcu_read_unlock();\ndiff --git a/drivers/net/ethernet/socionext/netsec.c b/drivers/net/ethernet/socionext/netsec.c\nindex 806eb651cea3..0f0567083a6c 100644\n--- a/drivers/net/ethernet/socionext/netsec.c\n+++ b/drivers/net/ethernet/socionext/netsec.c\n@@ -947,6 +947,7 @@ static int netsec_process_rx(struct netsec_priv *priv, int budget)\n \n \txdp.rxq = &dring->xdp_rxq;\n \txdp.frame_sz = PAGE_SIZE;\n+\txdp.mb = 0;\n \n \trcu_read_lock();\n \txdp_prog = READ_ONCE(priv->xdp_prog);\ndiff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c\nindex 9fd1f77190ad..558e0abb03c1 100644\n--- a/drivers/net/ethernet/ti/cpsw.c\n+++ b/drivers/net/ethernet/ti/cpsw.c\n@@ -407,6 +407,7 @@ static void cpsw_rx_handler(void *token, int len, int status)\n \t\txdp.data_hard_start = pa;\n \t\txdp.rxq = &priv->xdp_rxq[ch];\n \t\txdp.frame_sz = PAGE_SIZE;\n+\t\txdp.mb = 0;\n \n \t\tport = priv->emac_port + cpsw->data.dual_emac;\n \t\tret = cpsw_run_xdp(priv, ch, &xdp, page, port);\ndiff --git a/drivers/net/ethernet/ti/cpsw_new.c b/drivers/net/ethernet/ti/cpsw_new.c\nindex f779d2e1b5c5..7baab97e302a 100644\n--- a/drivers/net/ethernet/ti/cpsw_new.c\n+++ b/drivers/net/ethernet/ti/cpsw_new.c\n@@ -350,6 +350,7 @@ static void cpsw_rx_handler(void *token, int len, int status)\n \t\txdp.data_hard_start = pa;\n \t\txdp.rxq = &priv->xdp_rxq[ch];\n \t\txdp.frame_sz = PAGE_SIZE;\n+\t\txdp.mb = 0;\n \n \t\tret = cpsw_run_xdp(priv, ch, &xdp, page, priv->emac_port);\n \t\tif (ret != CPSW_XDP_PASS)\ndiff --git a/drivers/net/hyperv/netvsc_bpf.c b/drivers/net/hyperv/netvsc_bpf.c\nindex 440486d9c999..a4bafc64997f 100644\n--- a/drivers/net/hyperv/netvsc_bpf.c\n+++ b/drivers/net/hyperv/netvsc_bpf.c\n@@ -50,6 +50,7 @@ u32 netvsc_run_xdp(struct net_device *ndev, struct netvsc_channel *nvchan,\n \txdp->data_end = xdp->data + len;\n \txdp->rxq = &nvchan->xdp_rxq;\n \txdp->frame_sz = PAGE_SIZE;\n+\txdp->mb = 0;\n \n \tmemcpy(xdp->data, data, len);\n \ndiff --git a/drivers/net/tun.c b/drivers/net/tun.c\nindex be69d272052f..d8380feb7626 100644\n--- a/drivers/net/tun.c\n+++ b/drivers/net/tun.c\n@@ -1641,6 +1641,7 @@ static struct sk_buff *tun_build_skb(struct tun_struct *tun,\n \t\txdp.data_end = xdp.data + len;\n \t\txdp.rxq = &tfile->xdp_rxq;\n \t\txdp.frame_sz = buflen;\n+\t\txdp.mb = 0;\n \n \t\tact = bpf_prog_run_xdp(xdp_prog, &xdp);\n \t\tif (act == XDP_REDIRECT || act == XDP_TX) {\n@@ -2388,6 +2389,7 @@ static int tun_xdp_one(struct tun_struct *tun,\n \t\txdp_set_data_meta_invalid(xdp);\n \t\txdp->rxq = &tfile->xdp_rxq;\n \t\txdp->frame_sz = buflen;\n+\t\txdp->mb = 0;\n \n \t\tact = bpf_prog_run_xdp(xdp_prog, xdp);\n \t\terr = tun_xdp_act(tun, xdp_prog, xdp, act);\ndiff --git a/drivers/net/veth.c b/drivers/net/veth.c\nindex 091e5b4ba042..e25af95a532d 100644\n--- a/drivers/net/veth.c\n+++ b/drivers/net/veth.c\n@@ -711,6 +711,7 @@ static struct sk_buff *veth_xdp_rcv_skb(struct veth_rq *rq,\n \t/* SKB \"head\" area always have tailroom for skb_shared_info */\n \txdp.frame_sz = (void *)skb_end_pointer(skb) - xdp.data_hard_start;\n \txdp.frame_sz += SKB_DATA_ALIGN(sizeof(struct skb_shared_info));\n+\txdp.mb = 0;\n \n \torig_data = xdp.data;\n \torig_data_end = xdp.data_end;\ndiff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c\nindex 7145c83c6c8c..3d39d7622840 100644\n--- a/drivers/net/virtio_net.c\n+++ b/drivers/net/virtio_net.c\n@@ -690,6 +690,7 @@ static struct sk_buff *receive_small(struct net_device *dev,\n \t\txdp.data_meta = xdp.data;\n \t\txdp.rxq = &rq->xdp_rxq;\n \t\txdp.frame_sz = buflen;\n+\t\txdp.mb = 0;\n \t\torig_data = xdp.data;\n \t\tact = bpf_prog_run_xdp(xdp_prog, &xdp);\n \t\tstats->xdp_packets++;\n@@ -860,6 +861,7 @@ static struct sk_buff *receive_mergeable(struct net_device *dev,\n \t\txdp.data_meta = xdp.data;\n \t\txdp.rxq = &rq->xdp_rxq;\n \t\txdp.frame_sz = frame_sz - vi->hdr_len;\n+\t\txdp.mb = 0;\n \n \t\tact = bpf_prog_run_xdp(xdp_prog, &xdp);\n \t\tstats->xdp_packets++;\ndiff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c\nindex 3e9895bec15f..00440ad34ca8 100644\n--- a/drivers/net/xen-netfront.c\n+++ b/drivers/net/xen-netfront.c\n@@ -870,6 +870,7 @@ static u32 xennet_run_xdp(struct netfront_queue *queue, struct page *pdata,\n \txdp->data_end = xdp->data + len;\n \txdp->rxq = &queue->xdp_rxq;\n \txdp->frame_sz = XEN_PAGE_SIZE - XDP_PACKET_HEADROOM;\n+\txdp->mb = 0;\n \n \tact = bpf_prog_run_xdp(prog, xdp);\n \tswitch (act) {\ndiff --git a/net/core/dev.c b/net/core/dev.c\nindex 9d55bf5d1a65..1e78b028518d 100644\n--- a/net/core/dev.c\n+++ b/net/core/dev.c\n@@ -4640,6 +4640,7 @@ static u32 netif_receive_generic_xdp(struct sk_buff *skb,\n \t/* SKB \"head\" area always have tailroom for skb_shared_info */\n \txdp->frame_sz  = (void *)skb_end_pointer(skb) - xdp->data_hard_start;\n \txdp->frame_sz += SKB_DATA_ALIGN(sizeof(struct skb_shared_info));\n+\txdp->mb = 0;\n \n \torig_data_end = xdp->data_end;\n \torig_data = xdp->data;\n","prefixes":["v4","bpf-next","02/13"]}