Message ID | 20240527185810.3077299-1-ahmed.zaki@intel.com (mailing list archive) |
---|---|
Headers | show |
Series | ice: iavf: add support for TC U32 filters on VFs | expand |
> -----Original Message----- > From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of > Ahmed Zaki > Sent: Monday, May 27, 2024 8:58 PM > To: intel-wired-lan@lists.osuosl.org > Cc: Keller, Jacob E <jacob.e.keller@intel.com>; netdev@vger.kernel.org; Nguyen, > Anthony L <anthony.l.nguyen@intel.com>; Zaki, Ahmed <ahmed.zaki@intel.com> > Subject: [Intel-wired-lan] [PATCH iwl-next v2 00/13] ice: iavf: add support for TC > U32 filters on VFs > > 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]: Link: https://lore.kernel.org/netdev/20230904021455.3944605-1- > junfeng.guo@intel.com/ > [2]: Link: https://lists.osuosl.org/pipermail/intel-wired-lan/Week-of-Mon- > 20230814/036333.html > > --- > v2: > - No changes, just cc netdev > > 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 | 85 +- > drivers/net/ethernet/intel/iavf/iavf_fdir.h | 13 +- > drivers/net/ethernet/intel/iavf/iavf_main.c | 148 +- > .../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 | 96 +- > .../net/ethernet/intel/ice/ice_flex_pipe.h | 7 +- > drivers/net/ethernet/intel/ice/ice_flow.c | 106 +- > drivers/net/ethernet/intel/ice/ice_flow.h | 4 + > drivers/net/ethernet/intel/ice/ice_parser.c | 2389 +++++++++++++++++ > drivers/net/ethernet/intel/ice/ice_parser.h | 540 ++++ > .../net/ethernet/intel/ice/ice_parser_rt.c | 860 ++++++ > drivers/net/ethernet/intel/ice/ice_type.h | 1 + > drivers/net/ethernet/intel/ice/ice_vf_lib.c | 2 +- > drivers/net/ethernet/intel/ice/ice_vf_lib.h | 8 + > drivers/net/ethernet/intel/ice/ice_virtchnl.c | 6 +- > .../ethernet/intel/ice/ice_virtchnl_fdir.c | 400 ++- > include/linux/avf/virtchnl.h | 13 +- > 23 files changed, 4726 insertions(+), 92 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.43.0 Tested-by: Rafal Romanowski <rafal.romanowski@intel.com>