mbox series

[00/15] Add ice driver

Message ID 20180309172136.9073-1-anirudh.venkataramanan@intel.com
Headers show
Series Add ice driver | expand

Message

Venkataramanan, Anirudh March 9, 2018, 5:21 p.m. UTC
This patch series adds the ice driver, which will support the Intel(R)
E800 Series of network devices.

This is the first phase in the release of this driver where we implement
basic transmit and receive. The idea behind the multi-phase release is to
aid in code review as well as testing. Subsequent phases will implement
advanced features (like SR-IOV, tunnelling, flow director, QoS, etc.) that
build upon the previous phase(s). Each phase will be submitted as a patch
series.

I cc'd netdev for review since this is a new driver, even though this is
targetted to go through Jeff Kirsher's Intel Wired LAN git tree(s).

Anirudh Venkataramanan (15):
  ice: Add basic driver framework for Intel(R) E800 Series
  ice: Add support for control queues
  ice: Start hardware initialization
  ice: Get switch config, scheduler config and device capabilities
  ice: Get MAC/PHY/link info and scheduler topology
  ice: Initialize PF and setup miscellaneous interrupt
  ice: Add support for VSI allocation and deallocation
  ice: Add support for switch filter programming
  ice: Configure VSIs for Tx/Rx
  ice: Implement transmit and NAPI support
  ice: Add support for VLANs and offloads
  ice: Add stats and ethtool support
  ice: Update Tx scheduler tree for VSI multi-Tx queue support
  ice: Support link events, reset and rebuild
  ice: Implement filter sync, NDO operations and bump version

 Documentation/networking/ice.txt                |   39 +
 MAINTAINERS                                     |    1 +
 drivers/net/ethernet/intel/Kconfig              |   14 +
 drivers/net/ethernet/intel/Makefile             |    1 +
 drivers/net/ethernet/intel/ice/Makefile         |   34 +
 drivers/net/ethernet/intel/ice/ice.h            |  328 ++
 drivers/net/ethernet/intel/ice/ice_adminq_cmd.h | 1366 ++++++
 drivers/net/ethernet/intel/ice/ice_common.c     | 2244 +++++++++
 drivers/net/ethernet/intel/ice/ice_common.h     |  100 +
 drivers/net/ethernet/intel/ice/ice_controlq.c   | 1080 +++++
 drivers/net/ethernet/intel/ice/ice_controlq.h   |  108 +
 drivers/net/ethernet/intel/ice/ice_devids.h     |   33 +
 drivers/net/ethernet/intel/ice/ice_ethtool.c    |  972 ++++
 drivers/net/ethernet/intel/ice/ice_hw_autogen.h |  280 ++
 drivers/net/ethernet/intel/ice/ice_lan_tx_rx.h  |  487 ++
 drivers/net/ethernet/intel/ice/ice_main.c       | 5507 +++++++++++++++++++++++
 drivers/net/ethernet/intel/ice/ice_nvm.c        |  245 +
 drivers/net/ethernet/intel/ice/ice_osdep.h      |   87 +
 drivers/net/ethernet/intel/ice/ice_sched.c      | 1673 +++++++
 drivers/net/ethernet/intel/ice/ice_sched.h      |   57 +
 drivers/net/ethernet/intel/ice/ice_status.h     |   46 +
 drivers/net/ethernet/intel/ice/ice_switch.c     | 1897 ++++++++
 drivers/net/ethernet/intel/ice/ice_switch.h     |  175 +
 drivers/net/ethernet/intel/ice/ice_txrx.c       | 1796 ++++++++
 drivers/net/ethernet/intel/ice/ice_txrx.h       |  206 +
 drivers/net/ethernet/intel/ice/ice_type.h       |  407 ++
 26 files changed, 19183 insertions(+)
 create mode 100644 Documentation/networking/ice.txt
 create mode 100644 drivers/net/ethernet/intel/ice/Makefile
 create mode 100644 drivers/net/ethernet/intel/ice/ice.h
 create mode 100644 drivers/net/ethernet/intel/ice/ice_adminq_cmd.h
 create mode 100644 drivers/net/ethernet/intel/ice/ice_common.c
 create mode 100644 drivers/net/ethernet/intel/ice/ice_common.h
 create mode 100644 drivers/net/ethernet/intel/ice/ice_controlq.c
 create mode 100644 drivers/net/ethernet/intel/ice/ice_controlq.h
 create mode 100644 drivers/net/ethernet/intel/ice/ice_devids.h
 create mode 100644 drivers/net/ethernet/intel/ice/ice_ethtool.c
 create mode 100644 drivers/net/ethernet/intel/ice/ice_hw_autogen.h
 create mode 100644 drivers/net/ethernet/intel/ice/ice_lan_tx_rx.h
 create mode 100644 drivers/net/ethernet/intel/ice/ice_main.c
 create mode 100644 drivers/net/ethernet/intel/ice/ice_nvm.c
 create mode 100644 drivers/net/ethernet/intel/ice/ice_osdep.h
 create mode 100644 drivers/net/ethernet/intel/ice/ice_sched.c
 create mode 100644 drivers/net/ethernet/intel/ice/ice_sched.h
 create mode 100644 drivers/net/ethernet/intel/ice/ice_status.h
 create mode 100644 drivers/net/ethernet/intel/ice/ice_switch.c
 create mode 100644 drivers/net/ethernet/intel/ice/ice_switch.h
 create mode 100644 drivers/net/ethernet/intel/ice/ice_txrx.c
 create mode 100644 drivers/net/ethernet/intel/ice/ice_txrx.h
 create mode 100644 drivers/net/ethernet/intel/ice/ice_type.h

Comments

David Miller March 9, 2018, 6:23 p.m. UTC | #1
From: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
Date: Fri,  9 Mar 2018 09:21:21 -0800

> This patch series adds the ice driver, which will support the Intel(R)
> E800 Series of network devices.
> 
> This is the first phase in the release of this driver where we implement
> basic transmit and receive. The idea behind the multi-phase release is to
> aid in code review as well as testing. Subsequent phases will implement
> advanced features (like SR-IOV, tunnelling, flow director, QoS, etc.) that
> build upon the previous phase(s). Each phase will be submitted as a patch
> series.
> 
> I cc'd netdev for review since this is a new driver, even though this is
> targetted to go through Jeff Kirsher's Intel Wired LAN git tree(s).

I did a quick once-over on this driver and I have no major objections.
Stephen Hemminger March 10, 2018, 4:39 p.m. UTC | #2
On Fri,  9 Mar 2018 09:21:30 -0800
Anirudh Venkataramanan <anirudh.venkataramanan@intel.com> wrote:

> This patch configures the VSIs to be able to send and receive
> packets by doing the following:
> 
> 1) Initialize flexible parser to extract and include certain
>    fields in the Rx descriptor.
> 
> 2) Add Tx queues by programming the Tx queue context (implemented in
>    ice_vsi_cfg_txqs). Note that adding the queues also enables (starts)
>    the queues.
> 
> 3) Add Rx queues by programming Rx queue context (implemented in
>    ice_vsi_cfg_rxqs). Note that this only adds queues but doesn't start
>    them. The rings will be started by calling ice_vsi_start_rx_rings on
>    interface up.
> 
> 4) Configure interrupts for VSI queues.
> 
> 5) Implement ice_open and ice_stop.
> 
> Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>

Mandatory Vonnegut reference
Is ice9 deadly?