From: Alexander Lobakin <alexandr.lobakin@intel.com> To: intel-wired-lan@lists.osuosl.org Cc: "Alexander Lobakin" <alexandr.lobakin@intel.com>, "Jesse Brandeburg" <jesse.brandeburg@intel.com>, "Tony Nguyen" <anthony.l.nguyen@intel.com>, "David S. Miller" <davem@davemloft.net>, "Jakub Kicinski" <kuba@kernel.org>, "Alexei Starovoitov" <ast@kernel.org>, "Daniel Borkmann" <daniel@iogearbox.net>, "Jesper Dangaard Brouer" <hawk@kernel.org>, "John Fastabend" <john.fastabend@gmail.com>, "Björn Töpel" <bjorn@kernel.org>, "Maciej Fijalkowski" <maciej.fijalkowski@intel.com>, "Michal Swiatkowski" <michal.swiatkowski@linux.intel.com>, "Jeff Kirsher" <jeffrey.t.kirsher@intel.com>, "Krzysztof Kazimierczak" <krzysztof.kazimierczak@intel.com>, "Jithu Joseph" <jithu.joseph@intel.com>, "Andre Guedes" <andre.guedes@intel.com>, "Vedang Patel" <vedang.patel@intel.com>, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Subject: [PATCH v3 net-next 0/9] net: intel: napi_alloc_skb() vs metadata Date: Tue, 7 Dec 2021 21:55:27 +0100 [thread overview] Message-ID: <20211207205536.563550-1-alexandr.lobakin@intel.com> (raw) This is an interpolation of [0] to other Intel Ethernet drivers (and is (re)based on its code). The main aim is to keep XDP metadata not only in case with build_skb(), but also when we do napi_alloc_skb() + memcpy(). All Intel drivers suffers from the same here: - metadata gets lost on XDP_PASS in legacy-rx; - excessive headroom allocation on XSK Rx to skbs; - metadata gets lost on XSK Rx to skbs. Those get especially actual in XDP Hints upcoming. I couldn't have addressed the first one for all Intel drivers due to that they don't reserve any headroom for now in legacy-rx mode even with XDP enabled. This is hugely wrong, but requires quite a bunch of work and a separate series. Luckily, ice doesn't suffer from that. igc has 1 and 3 already fixed in [0]. From v2 (unreleased upstream): - tweaked 007 to pass bi->xdp directly and simplify code (Maciej); - picked Michal's Reviewed-by. From v1 (unreleased upstream): - drop "fixes" of legacy-rx for i40e, igb and ixgbe since they have another flaw regarding headroom (see above); - drop igc cosmetic fixes since they landed upstream incorporated into Jesper's commits; - picked one Acked-by from Maciej. [0] https://lore.kernel.org/netdev/163700856423.565980.10162564921347693758.stgit@firesoul Alexander Lobakin (9): i40e: don't reserve excessive XDP_PACKET_HEADROOM on XSK Rx to skb i40e: respect metadata on XSK Rx to skb ice: respect metadata in legacy-rx/ice_construct_skb() ice: don't reserve excessive XDP_PACKET_HEADROOM on XSK Rx to skb ice: respect metadata on XSK Rx to skb igc: don't reserve excessive XDP_PACKET_HEADROOM on XSK Rx to skb ixgbe: pass bi->xdp to ixgbe_construct_skb_zc() directly ixgbe: don't reserve excessive XDP_PACKET_HEADROOM on XSK Rx to skb i40e: respect metadata on XSK Rx to skb drivers/net/ethernet/intel/i40e/i40e_xsk.c | 16 +++++++----- drivers/net/ethernet/intel/ice/ice_txrx.c | 15 ++++++++--- drivers/net/ethernet/intel/ice/ice_xsk.c | 16 +++++++----- drivers/net/ethernet/intel/igc/igc_main.c | 13 +++++----- drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c | 27 ++++++++++++-------- 5 files changed, 54 insertions(+), 33 deletions(-) -- Testing hints: Setup an XDP and AF_XDP program which will prepend metadata at the front of the frames and return XDP_PASS, then check that metadata is present after frames reach kernel network stack. -- 2.33.1
WARNING: multiple messages have this Message-ID (diff)
From: Alexander Lobakin <alexandr.lobakin@intel.com> To: intel-wired-lan@osuosl.org Subject: [Intel-wired-lan] [PATCH v3 net-next 0/9] net: intel: napi_alloc_skb() vs metadata Date: Tue, 7 Dec 2021 21:55:27 +0100 [thread overview] Message-ID: <20211207205536.563550-1-alexandr.lobakin@intel.com> (raw) This is an interpolation of [0] to other Intel Ethernet drivers (and is (re)based on its code). The main aim is to keep XDP metadata not only in case with build_skb(), but also when we do napi_alloc_skb() + memcpy(). All Intel drivers suffers from the same here: - metadata gets lost on XDP_PASS in legacy-rx; - excessive headroom allocation on XSK Rx to skbs; - metadata gets lost on XSK Rx to skbs. Those get especially actual in XDP Hints upcoming. I couldn't have addressed the first one for all Intel drivers due to that they don't reserve any headroom for now in legacy-rx mode even with XDP enabled. This is hugely wrong, but requires quite a bunch of work and a separate series. Luckily, ice doesn't suffer from that. igc has 1 and 3 already fixed in [0]. From v2 (unreleased upstream): - tweaked 007 to pass bi->xdp directly and simplify code (Maciej); - picked Michal's Reviewed-by. From v1 (unreleased upstream): - drop "fixes" of legacy-rx for i40e, igb and ixgbe since they have another flaw regarding headroom (see above); - drop igc cosmetic fixes since they landed upstream incorporated into Jesper's commits; - picked one Acked-by from Maciej. [0] https://lore.kernel.org/netdev/163700856423.565980.10162564921347693758.stgit at firesoul Alexander Lobakin (9): i40e: don't reserve excessive XDP_PACKET_HEADROOM on XSK Rx to skb i40e: respect metadata on XSK Rx to skb ice: respect metadata in legacy-rx/ice_construct_skb() ice: don't reserve excessive XDP_PACKET_HEADROOM on XSK Rx to skb ice: respect metadata on XSK Rx to skb igc: don't reserve excessive XDP_PACKET_HEADROOM on XSK Rx to skb ixgbe: pass bi->xdp to ixgbe_construct_skb_zc() directly ixgbe: don't reserve excessive XDP_PACKET_HEADROOM on XSK Rx to skb i40e: respect metadata on XSK Rx to skb drivers/net/ethernet/intel/i40e/i40e_xsk.c | 16 +++++++----- drivers/net/ethernet/intel/ice/ice_txrx.c | 15 ++++++++--- drivers/net/ethernet/intel/ice/ice_xsk.c | 16 +++++++----- drivers/net/ethernet/intel/igc/igc_main.c | 13 +++++----- drivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c | 27 ++++++++++++-------- 5 files changed, 54 insertions(+), 33 deletions(-) -- Testing hints: Setup an XDP and AF_XDP program which will prepend metadata at the front of the frames and return XDP_PASS, then check that metadata is present after frames reach kernel network stack. -- 2.33.1
next reply other threads:[~2021-12-07 20:56 UTC|newest] Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-12-07 20:55 Alexander Lobakin [this message] 2021-12-07 20:55 ` [Intel-wired-lan] [PATCH v3 net-next 0/9] net: intel: napi_alloc_skb() vs metadata Alexander Lobakin 2021-12-07 20:55 ` [PATCH v3 net-next 1/9] i40e: don't reserve excessive XDP_PACKET_HEADROOM on XSK Rx to skb Alexander Lobakin 2021-12-07 20:55 ` [Intel-wired-lan] " Alexander Lobakin 2021-12-07 20:55 ` [PATCH v3 net-next 2/9] i40e: respect metadata " Alexander Lobakin 2021-12-07 20:55 ` [Intel-wired-lan] " Alexander Lobakin 2022-01-10 10:31 ` Bhandare, KiranX 2022-01-10 10:31 ` Bhandare, KiranX 2021-12-07 20:55 ` [PATCH v3 net-next 3/9] ice: respect metadata in legacy-rx/ice_construct_skb() Alexander Lobakin 2021-12-07 20:55 ` [Intel-wired-lan] " Alexander Lobakin 2021-12-07 20:55 ` [PATCH v3 net-next 4/9] ice: don't reserve excessive XDP_PACKET_HEADROOM on XSK Rx to skb Alexander Lobakin 2021-12-07 20:55 ` [Intel-wired-lan] " Alexander Lobakin 2021-12-07 20:55 ` [PATCH v3 net-next 5/9] ice: respect metadata " Alexander Lobakin 2021-12-07 20:55 ` [Intel-wired-lan] " Alexander Lobakin 2021-12-07 20:55 ` [PATCH v3 net-next 6/9] igc: don't reserve excessive XDP_PACKET_HEADROOM " Alexander Lobakin 2021-12-07 20:55 ` [Intel-wired-lan] " Alexander Lobakin 2021-12-07 20:55 ` [PATCH v3 net-next 7/9] ixgbe: pass bi->xdp to ixgbe_construct_skb_zc() directly Alexander Lobakin 2021-12-07 20:55 ` [Intel-wired-lan] " Alexander Lobakin 2021-12-07 20:55 ` [PATCH v3 net-next 8/9] ixgbe: don't reserve excessive XDP_PACKET_HEADROOM on XSK Rx to skb Alexander Lobakin 2021-12-07 20:55 ` [Intel-wired-lan] " Alexander Lobakin 2021-12-07 20:55 ` [PATCH v3 net-next 9/9] i40e: respect metadata " Alexander Lobakin 2021-12-07 20:55 ` [Intel-wired-lan] " Alexander Lobakin 2021-12-08 13:47 ` Jesper Dangaard Brouer 2021-12-08 13:47 ` [Intel-wired-lan] " Jesper Dangaard Brouer
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20211207205536.563550-1-alexandr.lobakin@intel.com \ --to=alexandr.lobakin@intel.com \ --cc=andre.guedes@intel.com \ --cc=anthony.l.nguyen@intel.com \ --cc=ast@kernel.org \ --cc=bjorn@kernel.org \ --cc=bpf@vger.kernel.org \ --cc=daniel@iogearbox.net \ --cc=davem@davemloft.net \ --cc=hawk@kernel.org \ --cc=intel-wired-lan@lists.osuosl.org \ --cc=jeffrey.t.kirsher@intel.com \ --cc=jesse.brandeburg@intel.com \ --cc=jithu.joseph@intel.com \ --cc=john.fastabend@gmail.com \ --cc=krzysztof.kazimierczak@intel.com \ --cc=kuba@kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=maciej.fijalkowski@intel.com \ --cc=michal.swiatkowski@linux.intel.com \ --cc=netdev@vger.kernel.org \ --cc=vedang.patel@intel.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.