Netdev List
 help / color / mirror / Atom feed
* [PATCH RFC net-next 00/34] Christmas 3-serie XDP for idpf (+generic stuff)
@ 2023-12-23  2:55 Alexander Lobakin
  2023-12-23  2:55 ` [PATCH RFC net-next 01/34] idpf: reuse libie's definitions of parsed ptype structures Alexander Lobakin
                   ` (34 more replies)
  0 siblings, 35 replies; 45+ messages in thread
From: Alexander Lobakin @ 2023-12-23  2:55 UTC (permalink / raw)
  To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni
  Cc: Alexander Lobakin, Maciej Fijalkowski, Michal Kubiak,
	Larysa Zaremba, Alexei Starovoitov, Daniel Borkmann,
	Willem de Bruijn, intel-wired-lan, netdev, linux-kernel

I was highly asked to send this WIP before the holidays to trigger
some discussions at least for the generic parts.

This all depends on libie[0] and WB-on-ITR fix[1]. The RFC does not
guarantee to work perfectly, but at least regular XDP seems to work
for me...

In fact, here are 3 separate series:
* 01-08: convert idpf to libie and make it more sane;
* 09-25: add XDP to idpf;
* 26-34: add XSk to idpf.

Most people may want to be interested only in the following generic
changes:
* 11: allow attaching already registered memory models to XDP RxQ info;
* 12-13: generic helpers for adding a frag to &xdp_buff and converting
  it to an skb;
* 14: get rid of xdp_frame::mem.id, allow mixing pages from different
  page_pools within one &xdp_buff/&xdp_frame;
* 15: some Page Pool helper;
* 18: it's for libie, but I wanted to talk about XDP_TX bulking;
* 26: same as 13, but for converting XSK &xdp_buff to skb.

The rest is up to you, driver-specific stuff is pretty boring sometimes.

I'll be polishing and finishing this all starting January 3rd and then
preparing and sending sane series, some early feedback never hurts tho.

Merry Yule!

[0] https://lore.kernel.org/netdev/20231213112835.2262651-1-aleksander.lobakin@intel.com
[1] https://lore.kernel.org/netdev/20231215193721.425087-1-michal.kubiak@intel.com

Alexander Lobakin (23):
  idpf: reuse libie's definitions of parsed ptype structures
  idpf: pack &idpf_queue way more efficiently
  idpf: remove legacy Page Pool Ethtool stats
  libie: support different types of buffers for Rx
  idpf: convert header split mode to libie + napi_build_skb()
  idpf: use libie Rx buffer management for payload buffer
  libie: add Tx buffer completion helpers
  idpf: convert to libie Tx buffer completion
  bpf, xdp: constify some bpf_prog * function arguments
  xdp: constify read-only arguments of some static inline helpers
  xdp: allow attaching already registered memory model to xdp_rxq_info
  xdp: add generic xdp_buff_add_frag()
  xdp: add generic xdp_build_skb_from_buff()
  xdp: get rid of xdp_frame::mem.id
  page_pool: add inline helper to sync VA for device (for XDP_TX)
  jump_label: export static_key_slow_{inc,dec}_cpuslocked()
  libie: support native XDP and register memory model
  libie: add a couple of XDP helpers
  idpf: stop using macros for accessing queue descriptors
  idpf: use generic functions to build xdp_buff and skb
  idpf: add support for XDP on Rx
  idpf: add support for .ndo_xdp_xmit()
  xdp: add generic XSk xdp_buff -> skb conversion

Michal Kubiak (11):
  idpf: make complq cleaning dependent on scheduling mode
  idpf: prepare structures to support xdp
  idpf: implement XDP_SETUP_PROG in ndo_bpf for splitq
  idpf: add support for sw interrupt
  idpf: add relative queue id member to idpf_queue
  idpf: add vc functions to manage selected queues
  idpf: move search rx and tx queues to header
  idpf: add XSk pool initialization
  idpf: implement Tx path for AF_XDP
  idpf: implement Rx path for AF_XDP
  idpf: enable XSk features and ndo_xsk_wakeup

 .../net/ethernet/freescale/dpaa/dpaa_eth.c    |    2 +-
 drivers/net/ethernet/intel/Kconfig            |    3 +-
 drivers/net/ethernet/intel/idpf/Makefile      |    3 +
 drivers/net/ethernet/intel/idpf/idpf.h        |   91 +-
 drivers/net/ethernet/intel/idpf/idpf_dev.c    |    3 +
 .../net/ethernet/intel/idpf/idpf_ethtool.c    |   74 +-
 .../net/ethernet/intel/idpf/idpf_lan_txrx.h   |    6 +-
 drivers/net/ethernet/intel/idpf/idpf_lib.c    |   40 +-
 drivers/net/ethernet/intel/idpf/idpf_main.c   |    1 +
 .../ethernet/intel/idpf/idpf_singleq_txrx.c   |  221 ++-
 drivers/net/ethernet/intel/idpf/idpf_txrx.c   | 1142 ++++++++--------
 drivers/net/ethernet/intel/idpf/idpf_txrx.h   |  451 +++----
 drivers/net/ethernet/intel/idpf/idpf_vf_dev.c |    3 +
 .../net/ethernet/intel/idpf/idpf_virtchnl.c   | 1132 ++++++++++------
 drivers/net/ethernet/intel/idpf/idpf_xdp.c    |  522 ++++++++
 drivers/net/ethernet/intel/idpf/idpf_xdp.h    |   38 +
 drivers/net/ethernet/intel/idpf/idpf_xsk.c    | 1181 +++++++++++++++++
 drivers/net/ethernet/intel/idpf/idpf_xsk.h    |   30 +
 drivers/net/ethernet/intel/libie/Makefile     |    3 +
 drivers/net/ethernet/intel/libie/rx.c         |  135 +-
 drivers/net/ethernet/intel/libie/tx.c         |   16 +
 drivers/net/ethernet/intel/libie/xdp.c        |   50 +
 drivers/net/ethernet/intel/libie/xsk.c        |   49 +
 drivers/net/veth.c                            |    4 +-
 include/linux/bpf.h                           |   12 +-
 include/linux/filter.h                        |    9 +-
 include/linux/net/intel/libie/rx.h            |   25 +-
 include/linux/net/intel/libie/tx.h            |   94 ++
 include/linux/net/intel/libie/xdp.h           |  586 ++++++++
 include/linux/net/intel/libie/xsk.h           |  172 +++
 include/linux/netdevice.h                     |    6 +-
 include/linux/skbuff.h                        |   14 +-
 include/net/page_pool/helpers.h               |   32 +
 include/net/page_pool/types.h                 |    6 +-
 include/net/xdp.h                             |  109 +-
 kernel/bpf/cpumap.c                           |    2 +-
 kernel/bpf/devmap.c                           |    8 +-
 kernel/jump_label.c                           |    2 +
 net/bpf/test_run.c                            |    6 +-
 net/core/dev.c                                |    8 +-
 net/core/filter.c                             |   27 +-
 net/core/page_pool.c                          |   31 +-
 net/core/xdp.c                                |  189 ++-
 43 files changed, 4971 insertions(+), 1567 deletions(-)
 create mode 100644 drivers/net/ethernet/intel/idpf/idpf_xdp.c
 create mode 100644 drivers/net/ethernet/intel/idpf/idpf_xdp.h
 create mode 100644 drivers/net/ethernet/intel/idpf/idpf_xsk.c
 create mode 100644 drivers/net/ethernet/intel/idpf/idpf_xsk.h
 create mode 100644 drivers/net/ethernet/intel/libie/tx.c
 create mode 100644 drivers/net/ethernet/intel/libie/xdp.c
 create mode 100644 drivers/net/ethernet/intel/libie/xsk.c
 create mode 100644 include/linux/net/intel/libie/tx.h
 create mode 100644 include/linux/net/intel/libie/xdp.h
 create mode 100644 include/linux/net/intel/libie/xsk.h

-- 
2.43.0


^ permalink raw reply	[flat|nested] 45+ messages in thread

end of thread, other threads:[~2024-01-11 13:09 UTC | newest]

Thread overview: 45+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-23  2:55 [PATCH RFC net-next 00/34] Christmas 3-serie XDP for idpf (+generic stuff) Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 01/34] idpf: reuse libie's definitions of parsed ptype structures Alexander Lobakin
2023-12-27 15:43   ` Willem de Bruijn
2024-01-08 16:04     ` Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 02/34] idpf: pack &idpf_queue way more efficiently Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 03/34] idpf: remove legacy Page Pool Ethtool stats Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 04/34] libie: support different types of buffers for Rx Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 05/34] idpf: convert header split mode to libie + napi_build_skb() Alexander Lobakin
2023-12-27 15:30   ` Willem de Bruijn
2024-01-08 16:17     ` Alexander Lobakin
2024-01-09 13:59       ` Willem de Bruijn
2024-01-11 13:09         ` Alexander Lobakin
2024-01-09 14:43   ` Eric Dumazet
2023-12-23  2:55 ` [PATCH RFC net-next 06/34] idpf: use libie Rx buffer management for payload buffer Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 07/34] libie: add Tx buffer completion helpers Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 08/34] idpf: convert to libie Tx buffer completion Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 09/34] bpf, xdp: constify some bpf_prog * function arguments Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 10/34] xdp: constify read-only arguments of some static inline helpers Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 11/34] xdp: allow attaching already registered memory model to xdp_rxq_info Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 12/34] xdp: add generic xdp_buff_add_frag() Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 13/34] xdp: add generic xdp_build_skb_from_buff() Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 14/34] xdp: get rid of xdp_frame::mem.id Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 15/34] page_pool: add inline helper to sync VA for device (for XDP_TX) Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 16/34] jump_label: export static_key_slow_{inc,dec}_cpuslocked() Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 17/34] libie: support native XDP and register memory model Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 18/34] libie: add a couple of XDP helpers Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 19/34] idpf: stop using macros for accessing queue descriptors Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 20/34] idpf: make complq cleaning dependent on scheduling mode Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 21/34] idpf: prepare structures to support xdp Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 22/34] idpf: implement XDP_SETUP_PROG in ndo_bpf for splitq Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 23/34] idpf: use generic functions to build xdp_buff and skb Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 24/34] idpf: add support for XDP on Rx Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 25/34] idpf: add support for .ndo_xdp_xmit() Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 26/34] xdp: add generic XSk xdp_buff -> skb conversion Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 27/34] idpf: add support for sw interrupt Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 28/34] idpf: add relative queue id member to idpf_queue Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 29/34] idpf: add vc functions to manage selected queues Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 30/34] idpf: move search rx and tx queues to header Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 31/34] idpf: add XSk pool initialization Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 32/34] idpf: implement Tx path for AF_XDP Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 33/34] idpf: implement Rx " Alexander Lobakin
2023-12-23  2:55 ` [PATCH RFC net-next 34/34] idpf: enable XSk features and ndo_xsk_wakeup Alexander Lobakin
2023-12-26 20:23 ` [PATCH RFC net-next 00/34] Christmas 3-serie XDP for idpf (+generic stuff) Willem de Bruijn
2024-01-08 16:01   ` Alexander Lobakin
2024-01-08 16:09     ` Willem de Bruijn

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox