lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Mon, 7 Aug 2023 17:51:53 -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: <pavan.kumar.linga@...el.com>, <emil.s.tantilov@...el.com>,
	<jesse.brandeburg@...el.com>, <sridhar.samudrala@...el.com>,
	<shiraz.saleem@...el.com>, <sindhu.devale@...el.com>, <willemb@...gle.com>,
	<decot@...gle.com>, <andrew@...n.ch>, <leon@...nel.org>, <mst@...hat.com>,
	<simon.horman@...igine.com>, <shannon.nelson@....com>,
	<stephen@...workplumber.org>
Subject: Re: [PATCH net-next v4 00/15][pull request] Introduce Intel IDPF
 driver

On 8/7/2023 5:34 PM, Tony Nguyen wrote:
> Pavan Kumar Linga says:
> 
> This patch series introduces the Intel 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.
> ---

Looks like I accidentally truncated the revision history :(

It can be found here as the v8-v9 changes:
https://lore.kernel.org/intel-wired-lan/20230804231929.168064-1-pavan.kumar.linga@intel.com/

If you would like it resent with the info here, let me know.

Thanks,
Tony

> v4:
> Patch 1:
>   * s/virtcnl/virtchnl
>   * removed the kernel doc for the error code definitions that don't exist
>   * reworded the summary part in the virtchnl2 header
> Patch 3:
>   * don't set local variable to NULL on error
>   * renamed sq_send_command_out label with err_unlock
>   * don't use __GFP_ZERO in dma_alloc_coherent
> Patch 4:
>   * introduced mailbox workqueue to process mailbox interrupts
> Patch 3, 4, 5, 6, 7, 8, 9, 11, 15:
>   * removed unnecessary variable 0-init
> Patch 3, 5, 7, 8, 9, 15:
>   * removed defensive programming checks wherever applicable
>   * removed IDPF_CAP_FIELD_LAST as it can be treated as defensive
>     programming
> Patch 3, 4, 5, 6, 7:
>   * replaced IDPF_DFLT_MBX_BUF_SIZE with IDPF_CTLQ_MAX_BUF_LEN
> Patch 2 to 15:
>   * add kernel-doc for idpf.h and idpf_txrx.h enums and structures
> Patch 4, 5, 15:
>   * adjusted the destroy sequence of the workqueues as per the alloc
>     sequence
> Patch 4, 5, 9, 15:
>   * scrub unnecessary flags in 'idpf_flags'
>     - IDPF_REMOVE_IN_PROG flag can take care of the cases where
>       IDPF_REL_RES_IN_PROG is used, removed the later one
>     - IDPF_REQ_[TX|RX]_SPLITQ are replaced with struct variables
>     - IDPF_CANCEL_[SERVICE|STATS]_TASK are redundant as the work queue
>       doesn't get rescheduled again after 'cancel_delayed_work_sync'
>     - IDPF_HR_CORE_RESET is removed as there is no set_bit for this flag
>     - IDPF_MB_INTR_TRIGGER is removed as it is not needed anymore with the
>       mailbox workqueue implementation
> Patch 7 to 15:
>   * replaced the custom buffer recycling code with page pool API
>   * switched the header split buffer allocations from using a bunch of
>     pages to using one large chunk of DMA memory
>   * reordered some of the flows in vport_open to support page pool
> Patch 8, 12:
>   * don't suppress the alloc errors by using __GFP_NOWARN
> Patch 9:
>   * removed dyn_ctl_clrpba_m as it is not being used
> Patch 14:
>   * introduced enum idpf_vport_reset_cause instead of using vport flags
>   * introduced page pool stats
> 
> The following are changes since commit 66244337512fbe51a32e7ebc8a5b5c5dc7a5421e:
>    Merge branch 'page_pool-a-couple-of-assorted-optimizations'
> and are available in the git repository at:
>    git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue 200GbE
> 
> Alan Brady (4):
>    idpf: configure resources for TX queues
>    idpf: configure resources for RX queues
>    idpf: add RX splitq napi poll support
>    idpf: add ethtool callbacks
> 
> Joshua Hay (5):
>    idpf: add controlq init and reset checks
>    idpf: add splitq start_xmit
>    idpf: add TX splitq napi poll support
>    idpf: add singleq start_xmit and napi poll
>    idpf: configure SRIOV and add other ndo_ops
> 
> Pavan Kumar Linga (5):
>    virtchnl: add virtchnl version 2 ops
>    idpf: add core init and interrupt request
>    idpf: add create vport and netdev configuration
>    idpf: add ptypes and MAC filter support
>    idpf: initialize interrupts and enable vport
> 
> Phani Burra (1):
>    idpf: add module register and probe functionality
> 
>   .../device_drivers/ethernet/index.rst         |    1 +
>   .../device_drivers/ethernet/intel/idpf.rst    |  160 +
>   drivers/net/ethernet/intel/Kconfig            |   12 +
>   drivers/net/ethernet/intel/Makefile           |    1 +
>   drivers/net/ethernet/intel/idpf/Makefile      |   18 +
>   drivers/net/ethernet/intel/idpf/idpf.h        |  932 ++++
>   .../net/ethernet/intel/idpf/idpf_controlq.c   |  621 +++
>   .../net/ethernet/intel/idpf/idpf_controlq.h   |  130 +
>   .../ethernet/intel/idpf/idpf_controlq_api.h   |  169 +
>   .../ethernet/intel/idpf/idpf_controlq_setup.c |  171 +
>   drivers/net/ethernet/intel/idpf/idpf_dev.c    |  164 +
>   drivers/net/ethernet/intel/idpf/idpf_devids.h |   10 +
>   .../net/ethernet/intel/idpf/idpf_ethtool.c    | 1363 ++++++
>   .../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    | 2357 +++++++++
>   drivers/net/ethernet/intel/idpf/idpf_main.c   |  285 ++
>   drivers/net/ethernet/intel/idpf/idpf_mem.h    |   20 +
>   .../ethernet/intel/idpf/idpf_singleq_txrx.c   | 1185 +++++
>   drivers/net/ethernet/intel/idpf/idpf_txrx.c   | 4309 +++++++++++++++++
>   drivers/net/ethernet/intel/idpf/idpf_txrx.h   | 1021 ++++
>   drivers/net/ethernet/intel/idpf/idpf_vf_dev.c |  163 +
>   .../net/ethernet/intel/idpf/idpf_virtchnl.c   | 3769 ++++++++++++++
>   drivers/net/ethernet/intel/idpf/virtchnl2.h   | 1266 +++++
>   .../ethernet/intel/idpf/virtchnl2_lan_desc.h  |  448 ++
>   26 files changed, 19120 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
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ