From: Tony Nguyen <anthony.l.nguyen@intel.com>
To: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com,
edumazet@google.com, andrew+netdev@lunn.ch,
netdev@vger.kernel.org
Cc: Tony Nguyen <anthony.l.nguyen@intel.com>,
larysa.zaremba@intel.com, przemyslaw.kitszel@intel.com,
aleksander.lobakin@intel.com, sridhar.samudrala@intel.com,
anjali.singhai@intel.com, michal.swiatkowski@linux.intel.com,
maciej.fijalkowski@intel.com, emil.s.tantilov@intel.com,
madhu.chittim@intel.com, joshua.a.hay@intel.com,
jacob.e.keller@intel.com, jayaprakash.shanmugam@intel.com,
jiri@resnulli.us, horms@kernel.org, corbet@lwn.net,
richardcochran@gmail.com, linux-doc@vger.kernel.org
Subject: [PATCH net-next v2 00/14][pull request] Introduce iXD driver
Date: Fri, 3 Apr 2026 12:49:22 -0700 [thread overview]
Message-ID: <20260403194938.3577011-1-anthony.l.nguyen@intel.com> (raw)
Larysa Zaremba says:
This patch series adds the iXD driver, which supports the Intel(R)
Control Plane PCI Function on Intel E2100 and later IPUs and FNICs.
It facilitates a centralized control over multiple IDPF PFs/VFs/SFs
exposed by the same card. The reason for the separation is to be able
to offload the control plane to the host different from where the data
plane is running.
This is the first phase in the release of this driver where we implement the
initialization of the core PCI driver. Subsequent phases will implement
advanced features like usage of idpf ethernet aux device, link management,
NVM update via devlink, switchdev port representors, data and exception path,
flow rule programming, etc.
The first phase entails the following aspects:
1. Additional libie functionalities:
Patches 1-5 introduce additional common library API for drivers to
communicate with the control plane through mailbox communication.
A control queue is a hardware interface which is used by the driver
to interact with other subsystems (like firmware). The library APIs
allow the driver to setup and configure the control queues to send and
receive virtchnl messages. The library has an internal bookkeeping
(XN API) mechanism to keep track of the send messages. It supports both
synchronous as well as asynchronous way of handling the messages. The
library also handles the timeout internally for synchronous messages
using events. This reduces the driver's overhead in handling the timeout
error cases.
The current patch series supports only APIs that are needed for device
initialization. These include APIs in the libie_pci module:
* Allocating/freeing the DMA memory and mapping the MMIO regions for
BAR0, read/write APIs for drivers to access the MMIO memory
and libie_cp module:
* Control queue initialization and configuration
* Transport initialization for bookkeeping
* Blocking and asynchronous mailbox transactions
Once the mailbox is initialized, the drivers can send and receive virtchnl
messages to/from the control plane.
The modules above are not supposed to be linked witn the main libie library,
but do share the folder with it.
2. idpf:
Patches 6-9 refactor the idpf driver to use the libie APIs for control
queue configuration, virtchnl transaction, device initialization
and reset and adjust related code accordingly.
3. ixd:
Patches 11-14 add the ixd driver and implement multiple pieces of the
initialization flow as follows:
* Add the ability to load
* A reset is issued to ensure a clean device state, followed by
initialization of the mailbox
* Device capabilities:
As part of initialization, the driver has to determine what the device is
capable of (ex. max queues, vports, etc). This information is obtained from
the firmware and stored by the driver.
* Enable initial support for the devlink interface
---
v2:
- improved failure handling and input validation
- removed cp version from devlink in ixd
v1: https://lore.kernel.org/netdev/20260317230905.847744-1-anthony.l.nguyen@intel.com/
The following are changes since commit 8b0e64d6c9e7feec5ba5643b4fa8b7fd54464778:
Merge branch 'enic-sr-iov-v2-preparatory-infrastructure'
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue
Amritha Nambiar (1):
ixd: add devlink support
Larysa Zaremba (5):
idpf: make mbx_task queueing and cancelling more consistent
idpf: print a debug message and bail in case of non-event ctlq message
ixd: add basic driver framework for Intel(R) Control Plane Function
ixd: add reset checks and initialize the mailbox
ixd: add the core initialization
Pavan Kumar Linga (4):
libeth: allow to create fill queues without NAPI
idpf: remove 'vport_params_reqd' field
idpf: refactor idpf to use libie_pci APIs
idpf: refactor idpf to use libie control queues
Phani R Burra (3):
libie: add PCI device initialization helpers to libie
libie: add control queue support
libie: add bookkeeping support for control queue messages
Victor Raj (1):
virtchnl: create 'include/linux/intel' and move necessary header files
.../device_drivers/ethernet/index.rst | 1 +
.../device_drivers/ethernet/intel/ixd.rst | 39 +
Documentation/networking/devlink/index.rst | 1 +
Documentation/networking/devlink/ixd.rst | 30 +
MAINTAINERS | 6 +-
drivers/infiniband/hw/irdma/i40iw_if.c | 2 +-
drivers/infiniband/hw/irdma/icrdma_if.c | 2 +-
drivers/infiniband/hw/irdma/ig3rdma_if.c | 2 +-
drivers/infiniband/hw/irdma/main.c | 2 +-
drivers/infiniband/hw/irdma/main.h | 2 +-
drivers/net/ethernet/intel/Kconfig | 2 +
drivers/net/ethernet/intel/Makefile | 1 +
drivers/net/ethernet/intel/i40e/i40e.h | 4 +-
.../net/ethernet/intel/i40e/i40e_adminq_cmd.h | 2 +-
drivers/net/ethernet/intel/i40e/i40e_client.c | 2 +-
drivers/net/ethernet/intel/i40e/i40e_common.c | 2 +-
.../net/ethernet/intel/i40e/i40e_ethtool.c | 2 +-
drivers/net/ethernet/intel/i40e/i40e_main.c | 2 +-
.../net/ethernet/intel/i40e/i40e_prototype.h | 2 +-
drivers/net/ethernet/intel/i40e/i40e_txrx.c | 4 +-
drivers/net/ethernet/intel/i40e/i40e_txrx.h | 2 +-
.../ethernet/intel/i40e/i40e_virtchnl_pf.h | 2 +-
drivers/net/ethernet/intel/iavf/iavf.h | 2 +-
.../net/ethernet/intel/iavf/iavf_adminq_cmd.h | 2 +-
drivers/net/ethernet/intel/iavf/iavf_common.c | 2 +-
drivers/net/ethernet/intel/iavf/iavf_main.c | 2 +-
.../net/ethernet/intel/iavf/iavf_prototype.h | 2 +-
drivers/net/ethernet/intel/iavf/iavf_txrx.c | 2 +-
drivers/net/ethernet/intel/iavf/iavf_txrx.h | 2 +-
drivers/net/ethernet/intel/iavf/iavf_types.h | 4 +-
.../net/ethernet/intel/iavf/iavf_virtchnl.c | 2 +-
drivers/net/ethernet/intel/ice/ice.h | 2 +-
.../net/ethernet/intel/ice/ice_adminq_cmd.h | 2 +-
drivers/net/ethernet/intel/ice/ice_base.c | 2 +-
drivers/net/ethernet/intel/ice/ice_common.h | 2 +-
drivers/net/ethernet/intel/ice/ice_flow.h | 2 +-
drivers/net/ethernet/intel/ice/ice_idc_int.h | 4 +-
drivers/net/ethernet/intel/ice/ice_txrx.c | 2 +-
drivers/net/ethernet/intel/ice/ice_txrx_lib.c | 2 +-
drivers/net/ethernet/intel/ice/ice_type.h | 2 +-
drivers/net/ethernet/intel/ice/ice_vf_lib.h | 2 +-
.../net/ethernet/intel/ice/virt/virtchnl.h | 2 +-
drivers/net/ethernet/intel/idpf/Kconfig | 1 +
drivers/net/ethernet/intel/idpf/Makefile | 2 -
drivers/net/ethernet/intel/idpf/idpf.h | 103 +-
.../net/ethernet/intel/idpf/idpf_controlq.c | 621 ------
.../net/ethernet/intel/idpf/idpf_controlq.h | 144 --
.../ethernet/intel/idpf/idpf_controlq_api.h | 177 --
.../ethernet/intel/idpf/idpf_controlq_setup.c | 169 --
drivers/net/ethernet/intel/idpf/idpf_dev.c | 101 +-
.../net/ethernet/intel/idpf/idpf_ethtool.c | 28 +-
drivers/net/ethernet/intel/idpf/idpf_idc.c | 38 +-
drivers/net/ethernet/intel/idpf/idpf_lib.c | 69 +-
drivers/net/ethernet/intel/idpf/idpf_main.c | 117 +-
drivers/net/ethernet/intel/idpf/idpf_mem.h | 20 -
drivers/net/ethernet/intel/idpf/idpf_txrx.h | 4 +-
drivers/net/ethernet/intel/idpf/idpf_vf_dev.c | 99 +-
.../net/ethernet/intel/idpf/idpf_virtchnl.c | 1820 +++++++----------
.../net/ethernet/intel/idpf/idpf_virtchnl.h | 95 +-
.../ethernet/intel/idpf/idpf_virtchnl_ptp.c | 304 ++-
drivers/net/ethernet/intel/ixd/Kconfig | 15 +
drivers/net/ethernet/intel/ixd/Makefile | 13 +
drivers/net/ethernet/intel/ixd/ixd.h | 58 +
drivers/net/ethernet/intel/ixd/ixd_ctlq.c | 149 ++
drivers/net/ethernet/intel/ixd/ixd_ctlq.h | 33 +
drivers/net/ethernet/intel/ixd/ixd_dev.c | 89 +
drivers/net/ethernet/intel/ixd/ixd_devlink.c | 97 +
drivers/net/ethernet/intel/ixd/ixd_devlink.h | 44 +
drivers/net/ethernet/intel/ixd/ixd_lan_regs.h | 68 +
drivers/net/ethernet/intel/ixd/ixd_lib.c | 166 ++
drivers/net/ethernet/intel/ixd/ixd_main.c | 147 ++
drivers/net/ethernet/intel/ixd/ixd_virtchnl.c | 178 ++
drivers/net/ethernet/intel/ixd/ixd_virtchnl.h | 12 +
drivers/net/ethernet/intel/ixgbe/ixgbe_type.h | 2 +-
.../ethernet/intel/ixgbe/ixgbe_type_e610.h | 2 +-
drivers/net/ethernet/intel/libeth/rx.c | 12 +-
drivers/net/ethernet/intel/libie/Kconfig | 14 +
drivers/net/ethernet/intel/libie/Makefile | 8 +
drivers/net/ethernet/intel/libie/adminq.c | 2 +-
drivers/net/ethernet/intel/libie/controlq.c | 1194 +++++++++++
drivers/net/ethernet/intel/libie/fwlog.c | 2 +-
drivers/net/ethernet/intel/libie/pci.c | 208 ++
drivers/net/ethernet/intel/libie/rx.c | 2 +-
include/linux/{net => }/intel/i40e_client.h | 0
include/linux/{net => }/intel/iidc_rdma.h | 0
include/linux/{net => }/intel/iidc_rdma_ice.h | 0
.../linux/{net => }/intel/iidc_rdma_idpf.h | 0
include/linux/{net => }/intel/libie/adminq.h | 0
include/linux/intel/libie/controlq.h | 424 ++++
include/linux/{net => }/intel/libie/fwlog.h | 2 +-
include/linux/intel/libie/pci.h | 56 +
include/linux/{net => }/intel/libie/pctype.h | 0
include/linux/{net => }/intel/libie/rx.h | 0
include/linux/{avf => intel}/virtchnl.h | 0
.../idpf => include/linux/intel}/virtchnl2.h | 0
.../linux/intel}/virtchnl2_lan_desc.h | 0
include/net/libeth/rx.h | 4 +-
97 files changed, 4195 insertions(+), 2876 deletions(-)
create mode 100644 Documentation/networking/device_drivers/ethernet/intel/ixd.rst
create mode 100644 Documentation/networking/devlink/ixd.rst
delete mode 100644 drivers/net/ethernet/intel/idpf/idpf_controlq.c
delete mode 100644 drivers/net/ethernet/intel/idpf/idpf_controlq.h
delete mode 100644 drivers/net/ethernet/intel/idpf/idpf_controlq_api.h
delete mode 100644 drivers/net/ethernet/intel/idpf/idpf_controlq_setup.c
delete mode 100644 drivers/net/ethernet/intel/idpf/idpf_mem.h
create mode 100644 drivers/net/ethernet/intel/ixd/Kconfig
create mode 100644 drivers/net/ethernet/intel/ixd/Makefile
create mode 100644 drivers/net/ethernet/intel/ixd/ixd.h
create mode 100644 drivers/net/ethernet/intel/ixd/ixd_ctlq.c
create mode 100644 drivers/net/ethernet/intel/ixd/ixd_ctlq.h
create mode 100644 drivers/net/ethernet/intel/ixd/ixd_dev.c
create mode 100644 drivers/net/ethernet/intel/ixd/ixd_devlink.c
create mode 100644 drivers/net/ethernet/intel/ixd/ixd_devlink.h
create mode 100644 drivers/net/ethernet/intel/ixd/ixd_lan_regs.h
create mode 100644 drivers/net/ethernet/intel/ixd/ixd_lib.c
create mode 100644 drivers/net/ethernet/intel/ixd/ixd_main.c
create mode 100644 drivers/net/ethernet/intel/ixd/ixd_virtchnl.c
create mode 100644 drivers/net/ethernet/intel/ixd/ixd_virtchnl.h
create mode 100644 drivers/net/ethernet/intel/libie/controlq.c
create mode 100644 drivers/net/ethernet/intel/libie/pci.c
rename include/linux/{net => }/intel/i40e_client.h (100%)
rename include/linux/{net => }/intel/iidc_rdma.h (100%)
rename include/linux/{net => }/intel/iidc_rdma_ice.h (100%)
rename include/linux/{net => }/intel/iidc_rdma_idpf.h (100%)
rename include/linux/{net => }/intel/libie/adminq.h (100%)
create mode 100644 include/linux/intel/libie/controlq.h
rename include/linux/{net => }/intel/libie/fwlog.h (98%)
create mode 100644 include/linux/intel/libie/pci.h
rename include/linux/{net => }/intel/libie/pctype.h (100%)
rename include/linux/{net => }/intel/libie/rx.h (100%)
rename include/linux/{avf => intel}/virtchnl.h (100%)
rename {drivers/net/ethernet/intel/idpf => include/linux/intel}/virtchnl2.h (100%)
rename {drivers/net/ethernet/intel/idpf => include/linux/intel}/virtchnl2_lan_desc.h (100%)
--
2.47.1
next reply other threads:[~2026-04-03 19:49 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-03 19:49 Tony Nguyen [this message]
2026-04-03 19:49 ` [PATCH net-next v2 01/14] virtchnl: create 'include/linux/intel' and move necessary header files Tony Nguyen
2026-04-03 19:49 ` [PATCH net-next v2 02/14] libie: add PCI device initialization helpers to libie Tony Nguyen
2026-04-09 8:56 ` Paolo Abeni
2026-04-03 19:49 ` [PATCH net-next v2 03/14] libeth: allow to create fill queues without NAPI Tony Nguyen
2026-04-03 19:49 ` [PATCH net-next v2 04/14] libie: add control queue support Tony Nguyen
2026-04-03 19:49 ` [PATCH net-next v2 05/14] libie: add bookkeeping support for control queue messages Tony Nguyen
2026-04-09 9:07 ` Paolo Abeni
2026-04-09 18:11 ` Tony Nguyen
2026-04-03 19:49 ` [PATCH net-next v2 06/14] idpf: remove 'vport_params_reqd' field Tony Nguyen
2026-04-03 19:49 ` [PATCH net-next v2 07/14] idpf: refactor idpf to use libie_pci APIs Tony Nguyen
2026-04-03 19:49 ` [PATCH net-next v2 08/14] idpf: refactor idpf to use libie control queues Tony Nguyen
2026-04-03 19:49 ` [PATCH net-next v2 09/14] idpf: make mbx_task queueing and cancelling more consistent Tony Nguyen
2026-04-03 19:49 ` [PATCH net-next v2 10/14] idpf: print a debug message and bail in case of non-event ctlq message Tony Nguyen
2026-04-03 19:49 ` [PATCH net-next v2 11/14] ixd: add basic driver framework for Intel(R) Control Plane Function Tony Nguyen
2026-04-03 19:49 ` [PATCH net-next v2 12/14] ixd: add reset checks and initialize the mailbox Tony Nguyen
2026-04-03 19:49 ` [PATCH net-next v2 13/14] ixd: add the core initialization Tony Nguyen
2026-04-03 19:49 ` [PATCH net-next v2 14/14] ixd: add devlink support Tony Nguyen
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=20260403194938.3577011-1-anthony.l.nguyen@intel.com \
--to=anthony.l.nguyen@intel.com \
--cc=aleksander.lobakin@intel.com \
--cc=andrew+netdev@lunn.ch \
--cc=anjali.singhai@intel.com \
--cc=corbet@lwn.net \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=emil.s.tantilov@intel.com \
--cc=horms@kernel.org \
--cc=jacob.e.keller@intel.com \
--cc=jayaprakash.shanmugam@intel.com \
--cc=jiri@resnulli.us \
--cc=joshua.a.hay@intel.com \
--cc=kuba@kernel.org \
--cc=larysa.zaremba@intel.com \
--cc=linux-doc@vger.kernel.org \
--cc=maciej.fijalkowski@intel.com \
--cc=madhu.chittim@intel.com \
--cc=michal.swiatkowski@linux.intel.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=przemyslaw.kitszel@intel.com \
--cc=richardcochran@gmail.com \
--cc=sridhar.samudrala@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: 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