[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240813222249.3708070-1-anthony.l.nguyen@intel.com>
Date: Tue, 13 Aug 2024 15:22:35 -0700
From: Tony Nguyen <anthony.l.nguyen@...el.com>
To: davem@...emloft.net,
kuba@...nel.org,
pabeni@...hat.com,
edumazet@...gle.com,
netdev@...r.kernel.org
Cc: Tony Nguyen <anthony.l.nguyen@...el.com>,
ahmed.zaki@...el.com,
madhu.chittim@...el.com,
horms@...nel.org,
hkelam@...vell.com
Subject: [PATCH net-next v2 00/13][pull request] ice: iavf: add support for TC U32 filters on VFs
Ahmed Zaki says:
The Intel Ethernet 800 Series is designed with a pipeline that has
an on-chip programmable capability called Dynamic Device Personalization
(DDP). A DDP package is loaded by the driver during probe time. The DDP
package programs functionality in both the parser and switching blocks in
the pipeline, allowing dynamic support for new and existing protocols.
Once the pipeline is configured, the driver can identify the protocol and
apply any HW action in different stages, for example, direct packets to
desired hardware queues (flow director), queue groups or drop.
Patches 1-8 introduce a DDP package parser API that enables different
pipeline stages in the driver to learn the HW parser capabilities from
the DDP package that is downloaded to HW. The parser library takes raw
packet patterns and masks (in binary) indicating the packet protocol fields
to be matched and generates the final HW profiles that can be applied at
the required stage. With this API, raw flow filtering for FDIR or RSS
could be done on new protocols or headers without any driver or Kernel
updates (only need to update the DDP package). These patches were submitted
before [1] but were not accepted mainly due to lack of a user.
Patches 9-11 extend the virtchnl support to allow the VF to request raw
flow director filters. Upon receiving the raw FDIR filter request, the PF
driver allocates and runs a parser lib instance and generates the hardware
profile definitions required to program the FDIR stage. These were also
submitted before [2].
Finally, patches 12 and 13 add TC U32 filter support to the iavf driver.
Using the parser API, the ice driver runs the raw patterns sent by the
user and then adds a new profile to the FDIR stage associated with the VF's
VSI. Refer to examples in patch 13 commit message.
[1]: https://lore.kernel.org/netdev/20230904021455.3944605-1-junfeng.guo@intel.com/
[2]: https://lore.kernel.org/intel-wired-lan/20230818064703.154183-1-junfeng.guo@intel.com/
---
v2:
- Resolve incorrect type warning
- Add kdoc short description to ice_nearest_proto_id()
v1: https://lore.kernel.org/netdev/20240809173615.2031516-1-anthony.l.nguyen@intel.com/
iwl: https://lore.kernel.org/intel-wired-lan/20240725220810.12748-1-ahmed.zaki@intel.com/
The following are changes since commit dd1bf9f9df156b43e5122f90d97ac3f59a1a5621:
net: hinic: use ethtool_sprintf/puts
and are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue 40GbE
Ahmed Zaki (2):
iavf: refactor add/del FDIR filters
iavf: add support for offloading tc U32 cls filters
Junfeng Guo (11):
ice: add parser create and destroy skeleton
ice: parse and init various DDP parser sections
ice: add debugging functions for the parser sections
ice: add parser internal helper functions
ice: add parser execution main loop
ice: support turning on/off the parser's double vlan mode
ice: add UDP tunnels support to the parser
ice: add API for parser profile initialization
virtchnl: support raw packet in protocol header
ice: add method to disable FDIR SWAP option
ice: enable FDIR filters from raw binary patterns for VFs
drivers/net/ethernet/intel/iavf/iavf.h | 30 +
.../net/ethernet/intel/iavf/iavf_ethtool.c | 59 +-
drivers/net/ethernet/intel/iavf/iavf_fdir.c | 89 +-
drivers/net/ethernet/intel/iavf/iavf_fdir.h | 13 +-
drivers/net/ethernet/intel/iavf/iavf_main.c | 160 +-
.../net/ethernet/intel/iavf/iavf_virtchnl.c | 25 +-
drivers/net/ethernet/intel/ice/Makefile | 2 +
drivers/net/ethernet/intel/ice/ice_common.h | 1 +
drivers/net/ethernet/intel/ice/ice_ddp.c | 10 +-
drivers/net/ethernet/intel/ice/ice_ddp.h | 13 +
.../net/ethernet/intel/ice/ice_flex_pipe.c | 99 +-
.../net/ethernet/intel/ice/ice_flex_pipe.h | 7 +-
drivers/net/ethernet/intel/ice/ice_flow.c | 109 +-
drivers/net/ethernet/intel/ice/ice_flow.h | 5 +
drivers/net/ethernet/intel/ice/ice_parser.c | 2430 +++++++++++++++++
drivers/net/ethernet/intel/ice/ice_parser.h | 540 ++++
.../net/ethernet/intel/ice/ice_parser_rt.c | 861 ++++++
drivers/net/ethernet/intel/ice/ice_type.h | 1 +
drivers/net/ethernet/intel/ice/ice_vf_lib.h | 8 +
drivers/net/ethernet/intel/ice/ice_virtchnl.c | 4 +
.../ethernet/intel/ice/ice_virtchnl_fdir.c | 403 ++-
include/linux/avf/virtchnl.h | 13 +-
22 files changed, 4792 insertions(+), 90 deletions(-)
create mode 100644 drivers/net/ethernet/intel/ice/ice_parser.c
create mode 100644 drivers/net/ethernet/intel/ice/ice_parser.h
create mode 100644 drivers/net/ethernet/intel/ice/ice_parser_rt.c
--
2.42.0
Powered by blists - more mailing lists