From: Pavan Kumar Linga <pavan.kumar.linga@intel.com>
To: intel-wired-lan@lists.osuosl.org
Cc: netdev@vger.kernel.org, shiraz.saleem@intel.com,
emil.s.tantilov@intel.com, willemb@google.com, decot@google.com,
joshua.a.hay@intel.com, sridhar.samudrala@intel.com,
Pavan Kumar Linga <pavan.kumar.linga@intel.com>
Subject: [Intel-wired-lan] [PATCH net-next 00/15] Introduce IDPF driver
Date: Wed, 29 Mar 2023 07:03:49 -0700 [thread overview]
Message-ID: <20230329140404.1647925-1-pavan.kumar.linga@intel.com> (raw)
This patch series introduces the Infrastructure Data Path Function (IDPF)
driver. It is used for both physical and virtual functions. Except for
some of the device operations the rest of the functionality is the same
for both PF and VF. IDPF uses virtchnl version2 opcodes and structures
defined in the virtchnl2 header file which helps the driver to learn
the capabilities and register offsets from the device Control Plane (CP)
instead of assuming the default values.
The format of the series follows the driver init flow to interface open.
To start with, probe gets called and kicks off the driver initialization
by spawning the 'vc_event_task' work queue which in turn calls the
'hard reset' function. As part of that, the mailbox is initialized which
is used to send/receive the virtchnl messages to/from the CP. Once that is
done, 'core init' kicks in which requests all the required global resources
from the CP and spawns the 'init_task' work queue to create the vports.
Based on the capability information received, the driver creates the said
number of vports (one or many) where each vport is associated to a netdev.
Also, each vport has its own resources such as queues, vectors etc.
From there, rest of the netdev_ops and data path are added.
IDPF implements both single queue which is traditional queueing model
as well as split queue model. In split queue model, it uses separate queue
for both completion descriptors and buffers which helps to implement
out-of-order completions. It also helps to implement asymmetric queues,
for example multiple RX completion queues can be processed by a single
RX buffer queue and multiple TX buffer queues can be processed by a
single TX completion queue. In single queue model, same queue is used
for both descriptor completions as well as buffer completions. It also
supports features such as generic checksum offload, generic receive
offload (hardware GRO) etc.
Pavan Kumar Linga (15):
virtchnl: add virtchnl version 2 ops
idpf: add module register and probe functionality
idpf: add controlq init and reset checks
idpf: add core init and interrupt request
idpf: add create vport and netdev configuration
idpf: continue expanding init task
idpf: configure resources for TX queues
idpf: configure resources for RX queues
idpf: initialize interrupts and enable vport
idpf: add splitq start_xmit
idpf: add TX splitq napi poll support
idpf: add RX splitq napi poll support
idpf: add singleq start_xmit and napi poll
idpf: add ethtool callbacks
idpf: configure SRIOV and add other ndo_ops
.../device_drivers/ethernet/intel/idpf.rst | 46 +
drivers/net/ethernet/intel/Kconfig | 11 +
drivers/net/ethernet/intel/Makefile | 1 +
drivers/net/ethernet/intel/idpf/Makefile | 18 +
drivers/net/ethernet/intel/idpf/idpf.h | 734 +++
.../net/ethernet/intel/idpf/idpf_controlq.c | 644 +++
.../net/ethernet/intel/idpf/idpf_controlq.h | 131 +
.../ethernet/intel/idpf/idpf_controlq_api.h | 190 +
.../ethernet/intel/idpf/idpf_controlq_setup.c | 175 +
drivers/net/ethernet/intel/idpf/idpf_dev.c | 179 +
drivers/net/ethernet/intel/idpf/idpf_devids.h | 10 +
.../net/ethernet/intel/idpf/idpf_ethtool.c | 1325 +++++
.../ethernet/intel/idpf/idpf_lan_pf_regs.h | 124 +
.../net/ethernet/intel/idpf/idpf_lan_txrx.h | 293 +
.../ethernet/intel/idpf/idpf_lan_vf_regs.h | 128 +
drivers/net/ethernet/intel/idpf/idpf_lib.c | 2551 +++++++++
drivers/net/ethernet/intel/idpf/idpf_main.c | 85 +
drivers/net/ethernet/intel/idpf/idpf_mem.h | 20 +
.../ethernet/intel/idpf/idpf_singleq_txrx.c | 1262 +++++
drivers/net/ethernet/intel/idpf/idpf_txrx.c | 4850 +++++++++++++++++
drivers/net/ethernet/intel/idpf/idpf_txrx.h | 838 +++
drivers/net/ethernet/intel/idpf/idpf_vf_dev.c | 180 +
.../net/ethernet/intel/idpf/idpf_virtchnl.c | 3802 +++++++++++++
drivers/net/ethernet/intel/idpf/virtchnl2.h | 1153 ++++
.../ethernet/intel/idpf/virtchnl2_lan_desc.h | 644 +++
25 files changed, 19394 insertions(+)
create mode 100644 Documentation/networking/device_drivers/ethernet/intel/idpf.rst
create mode 100644 drivers/net/ethernet/intel/idpf/Makefile
create mode 100644 drivers/net/ethernet/intel/idpf/idpf.h
create mode 100644 drivers/net/ethernet/intel/idpf/idpf_controlq.c
create mode 100644 drivers/net/ethernet/intel/idpf/idpf_controlq.h
create mode 100644 drivers/net/ethernet/intel/idpf/idpf_controlq_api.h
create mode 100644 drivers/net/ethernet/intel/idpf/idpf_controlq_setup.c
create mode 100644 drivers/net/ethernet/intel/idpf/idpf_dev.c
create mode 100644 drivers/net/ethernet/intel/idpf/idpf_devids.h
create mode 100644 drivers/net/ethernet/intel/idpf/idpf_ethtool.c
create mode 100644 drivers/net/ethernet/intel/idpf/idpf_lan_pf_regs.h
create mode 100644 drivers/net/ethernet/intel/idpf/idpf_lan_txrx.h
create mode 100644 drivers/net/ethernet/intel/idpf/idpf_lan_vf_regs.h
create mode 100644 drivers/net/ethernet/intel/idpf/idpf_lib.c
create mode 100644 drivers/net/ethernet/intel/idpf/idpf_main.c
create mode 100644 drivers/net/ethernet/intel/idpf/idpf_mem.h
create mode 100644 drivers/net/ethernet/intel/idpf/idpf_singleq_txrx.c
create mode 100644 drivers/net/ethernet/intel/idpf/idpf_txrx.c
create mode 100644 drivers/net/ethernet/intel/idpf/idpf_txrx.h
create mode 100644 drivers/net/ethernet/intel/idpf/idpf_vf_dev.c
create mode 100644 drivers/net/ethernet/intel/idpf/idpf_virtchnl.c
create mode 100644 drivers/net/ethernet/intel/idpf/virtchnl2.h
create mode 100644 drivers/net/ethernet/intel/idpf/virtchnl2_lan_desc.h
--
2.37.3
next reply other threads:[~2023-03-29 14:09 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-29 14:03 Pavan Kumar Linga [this message]
2023-03-29 14:03 ` [Intel-wired-lan] [PATCH net-next 01/15] virtchnl: add virtchnl version 2 ops Pavan Kumar Linga
2023-03-31 15:25 ` Simon Horman
2023-04-03 22:01 ` Shannon Nelson
2023-04-03 22:20 ` Jakub Kicinski
2023-04-03 22:54 ` Shannon Nelson
2023-04-03 23:30 ` Jakub Kicinski
2023-04-04 7:59 ` Orr, Michael
2023-04-04 16:25 ` Shannon Nelson
2023-04-04 19:41 ` Orr, Michael
2023-04-10 20:27 ` Linga, Pavan Kumar
2023-04-10 22:12 ` Shannon Nelson
2023-04-12 16:58 ` Tantilov, Emil S
2023-04-12 21:36 ` Shannon Nelson
2023-04-13 18:54 ` Tantilov, Emil S
2023-04-13 21:03 ` Shannon Nelson
2023-03-29 14:03 ` [Intel-wired-lan] [PATCH net-next 02/15] idpf: add module register and probe functionality Pavan Kumar Linga
2023-03-29 14:03 ` [Intel-wired-lan] [PATCH net-next 03/15] idpf: add controlq init and reset checks Pavan Kumar Linga
2023-03-29 14:03 ` [Intel-wired-lan] [PATCH net-next 04/15] idpf: add core init and interrupt request Pavan Kumar Linga
2023-03-31 15:39 ` Simon Horman
2023-03-29 14:03 ` [Intel-wired-lan] [PATCH net-next 05/15] idpf: add create vport and netdev configuration Pavan Kumar Linga
2023-03-31 15:46 ` Simon Horman
2023-03-29 14:03 ` [Intel-wired-lan] [PATCH net-next 06/15] idpf: continue expanding init task Pavan Kumar Linga
2023-03-31 15:47 ` Simon Horman
2023-03-29 14:03 ` [Intel-wired-lan] [PATCH net-next 07/15] idpf: configure resources for TX queues Pavan Kumar Linga
2023-03-31 15:49 ` Simon Horman
2023-03-29 14:03 ` [Intel-wired-lan] [PATCH net-next 08/15] idpf: configure resources for RX queues Pavan Kumar Linga
2023-03-29 14:03 ` [Intel-wired-lan] [PATCH net-next 09/15] idpf: initialize interrupts and enable vport Pavan Kumar Linga
2023-03-31 15:59 ` Simon Horman
2023-04-04 19:36 ` Linga, Pavan Kumar
2023-04-05 10:07 ` Simon Horman
2023-03-29 14:03 ` [Intel-wired-lan] [PATCH net-next 10/15] idpf: add splitq start_xmit Pavan Kumar Linga
2023-03-29 14:04 ` [Intel-wired-lan] [PATCH net-next 11/15] idpf: add TX splitq napi poll support Pavan Kumar Linga
2023-03-29 14:04 ` [Intel-wired-lan] [PATCH net-next 12/15] idpf: add RX " Pavan Kumar Linga
2023-03-30 16:23 ` Maciej Fijalkowski
2023-04-05 0:51 ` Tantilov, Emil S
2023-03-29 14:04 ` [Intel-wired-lan] [PATCH net-next 13/15] idpf: add singleq start_xmit and napi poll Pavan Kumar Linga
2023-03-29 14:04 ` [Intel-wired-lan] [PATCH net-next 14/15] idpf: add ethtool callbacks Pavan Kumar Linga
2023-03-29 15:33 ` Andrew Lunn
2023-03-30 22:05 ` Linga, Pavan Kumar
2023-03-29 14:04 ` [Intel-wired-lan] [PATCH net-next 15/15] idpf: configure SRIOV and add other ndo_ops Pavan Kumar Linga
2023-03-29 15:41 ` [Intel-wired-lan] [PATCH net-next 00/15] Introduce IDPF driver Paul Menzel
2023-03-30 21:31 ` Linga, Pavan Kumar
2023-03-29 17:31 ` Willem de Bruijn
2023-03-30 12:03 ` Jason Gunthorpe
2023-03-30 17:25 ` Jakub Kicinski
2023-03-30 18:29 ` Jason Gunthorpe
2023-04-03 21:36 ` Samudrala, Sridhar
2023-04-04 16:42 ` Jason Gunthorpe
2023-04-04 19:19 ` Orr, Michael
2023-04-04 23:35 ` Jason Gunthorpe
2023-04-07 4:39 ` Christoph Hellwig
2023-04-07 18:01 ` Shannon Nelson
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=20230329140404.1647925-1-pavan.kumar.linga@intel.com \
--to=pavan.kumar.linga@intel.com \
--cc=decot@google.com \
--cc=emil.s.tantilov@intel.com \
--cc=intel-wired-lan@lists.osuosl.org \
--cc=joshua.a.hay@intel.com \
--cc=netdev@vger.kernel.org \
--cc=shiraz.saleem@intel.com \
--cc=sridhar.samudrala@intel.com \
--cc=willemb@google.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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).