From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haiyue Wang Date: Wed, 1 Jul 2020 09:25:52 +0800 Subject: [Intel-wired-lan] [net-next, v7 0/5] ice: add Intel DCF mode support In-Reply-To: <20200619045711.16055-1-haiyue.wang@intel.com> References: <20200619045711.16055-1-haiyue.wang@intel.com> Message-ID: <20200701012557.40234-1-haiyue.wang@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: intel-wired-lan@osuosl.org List-ID: The iproute2 and ethtool are evolving to expose the NIC hardware capability. But these available orchestration methods in Linux kernel are limited in their capability to exercise advance functionality in the hardware, since different vendors may have different data programming method. Intel Ethernet Adaptive Virtual Function (AVF) is the common hardware interface for SR-IOV, it has the defined message format to talks with the PF. To make good use of the advanced functionality like Switch (Binary Classifier), The ice PF driver introduces a DCF (Device Config Function) mode to extend the AVF feature. The DCF (Device Config Function) method wraps an raw flow admin queue command in a virthcnl message and sends it to the PF to be executed. This is required because it doesn't have the privilege level to issue the admin queue commands, so it acts as a proxy PF. So that the user can customize the AVF feature, and use their own programming language to translate the flow rule management data into ice raw flow, these raw flows then can be executed in PF's sandbox. And the kernel PF driver fully controls the behavior of DCF for security, like only the trusted VF with ID zero can run into DCF mode, and also for being compatible with the common AVF feature, the VF needs to advertise and acquire DCF capability firstly. v7: Remove the CONFIG_PCI_IOV for function 'ice_aq_sw_rules'. v6: Rebase with the new commit for ice_switch.c/h. v5: Update the prefix with 'net-next'. v4: Mirror commit message update. v3: Remove the unused function, and control the ice_aq_sw_rules scope by CONFIG_PCI_IOV. Capitalize all abbreviations. v2: Fix the macro ICE_DCF_VFID definition style issue. Haiyue Wang (5): ice: add the virtchnl handler for AdminQ command ice: add DCF cap negotiation and state machine ice: support to get the VSI mapping ice: enable DDP package info querying ice: add switch rule management for DCF drivers/net/ethernet/intel/ice/Makefile | 2 +- drivers/net/ethernet/intel/ice/ice.h | 2 + .../net/ethernet/intel/ice/ice_adminq_cmd.h | 6 + drivers/net/ethernet/intel/ice/ice_dcf.c | 839 ++++++++++++++++++ drivers/net/ethernet/intel/ice/ice_dcf.h | 91 ++ drivers/net/ethernet/intel/ice/ice_main.c | 2 + drivers/net/ethernet/intel/ice/ice_switch.c | 16 +- drivers/net/ethernet/intel/ice/ice_switch.h | 27 +- drivers/net/ethernet/intel/ice/ice_type.h | 9 + .../net/ethernet/intel/ice/ice_virtchnl_pf.c | 366 ++++++++ .../net/ethernet/intel/ice/ice_virtchnl_pf.h | 1 + include/linux/avf/virtchnl.h | 63 ++ 12 files changed, 1398 insertions(+), 26 deletions(-) create mode 100644 drivers/net/ethernet/intel/ice/ice_dcf.c create mode 100644 drivers/net/ethernet/intel/ice/ice_dcf.h -- 2.27.0