[SRU][Trusty][PATCH 0/6] i40e NIC not recognized (LP: #1789215)

Juerg Haefliger juerg.haefliger at canonical.com
Fri Aug 31 11:29:15 UTC 2018


This patch series adds Xenial's i40e driver as an additional Ubuntu-specific
i40e_bpo driver to Trusty. A compatibility layer has been added so that it
compiles for Trusty's 3.13 kernel. The driver has also been modified to only
recognize devices that the 3.13 in-tree driver doesn't support to prevent
introducing a regression.

Successfully tested on real HW.


BugLink: https://bugs.launchpad.net/bugs/1789215

== SRU Justification ==

Booting Trusty with kernel 3.13.0-156-generic on a fairly new Intel box with a
i40e NIC results in no network. The 3.13 i40e driver doesn't support the
following HW:

3d:00.0 Ethernet controller: Intel Corporation Device 37d2 (rev 02)
        Subsystem: Intel Corporation Device 35ce
        Flags: bus master, fast devsel, latency 0, IRQ 37
        Memory at ac000000 (64-bit, prefetchable) [size=16M]
        Memory at ad808000 (64-bit, prefetchable) [size=32K]
        Expansion ROM at ad980000 [disabled] [size=512K]
        Capabilities: <access denied>

Base Board Information
        Manufacturer: Intel Corporation
        Product Name: S2600WFT

This is a Canonical test system and having functional networking with a Trusty
kernel would help with - well - testing :-)

== Fix ==

Add a backport driver in addition to the in-tree driver that supports newer
versions of the i40e NIC.

== Regression Potential ==

Low. The new driver will only load for NICs that are not supported by the
current in-tree driver.

== Test Case ==

Boot a patched kernel and verify the NIC is recognized and the network
comes up.

Signed-off-by: Juerg Haefliger <juergh at canonical.com>


Juerg Haefliger (6):
  UBUNTU: SAUCE: i40e_bpo: Import the i40e driver from Xenial 4.4
  UBUNTU: SAUCE: i40e_bpo: Add a compatibility layer
  UBUNTU: SAUCE: i40e_bpo: Don't probe for NICs supported by the in-tree
    driver
  UBUNTU: SAUCE: i40e_bpo: Rename the driver to i40e_bpo
  UBUNTU: SAUCE: i40e_bpo: Hook the driver into the kernel tree
  UBUNTU: [Config] Add CONFIG_I40E_BPO=m

 debian.master/config/config.common.ubuntu |     3 +
 ubuntu/Kconfig                            |     4 +
 ubuntu/Makefile                           |     4 +
 ubuntu/i40e/Kconfig                       |    39 +
 ubuntu/i40e/Makefile                      |    51 +
 ubuntu/i40e/i40e.h                        |   856 ++
 ubuntu/i40e/i40e_adminq.c                 |  1068 ++
 ubuntu/i40e/i40e_adminq.h                 |   160 +
 ubuntu/i40e/i40e_adminq_cmd.h             |  2502 +++++
 ubuntu/i40e/i40e_alloc.h                  |    58 +
 ubuntu/i40e/i40e_common.c                 |  4701 ++++++++
 ubuntu/i40e/i40e_dcb.c                    |   969 ++
 ubuntu/i40e/i40e_dcb.h                    |   151 +
 ubuntu/i40e/i40e_dcb_nl.c                 |   320 +
 ubuntu/i40e/i40e_debugfs.c                |  2009 ++++
 ubuntu/i40e/i40e_devids.h                 |    52 +
 ubuntu/i40e/i40e_diag.c                   |   151 +
 ubuntu/i40e/i40e_diag.h                   |    51 +
 ubuntu/i40e/i40e_ethtool.c                |  2888 +++++
 ubuntu/i40e/i40e_fcoe.c                   |  1581 +++
 ubuntu/i40e/i40e_fcoe.h                   |   127 +
 ubuntu/i40e/i40e_hmc.c                    |   357 +
 ubuntu/i40e/i40e_hmc.h                    |   238 +
 ubuntu/i40e/i40e_lan_hmc.c                |  1142 ++
 ubuntu/i40e/i40e_lan_hmc.h                |   181 +
 ubuntu/i40e/i40e_main.c                   | 11619 ++++++++++++++++++++
 ubuntu/i40e/i40e_nvm.c                    |  1382 +++
 ubuntu/i40e/i40e_osdep.h                  |    86 +
 ubuntu/i40e/i40e_prototype.h              |   360 +
 ubuntu/i40e/i40e_ptp.c                    |   731 ++
 ubuntu/i40e/i40e_register.h               |  5353 +++++++++
 ubuntu/i40e/i40e_status.h                 |   100 +
 ubuntu/i40e/i40e_txrx.c                   |  3015 +++++
 ubuntu/i40e/i40e_txrx.h                   |   447 +
 ubuntu/i40e/i40e_type.h                   |  1535 +++
 ubuntu/i40e/i40e_virtchnl.h               |   370 +
 ubuntu/i40e/i40e_virtchnl_pf.c            |  2537 +++++
 ubuntu/i40e/i40e_virtchnl_pf.h            |   138 +
 ubuntu/i40e/kcompat.c                     |    19 +
 ubuntu/i40e/kcompat.h                     |    65 +
 40 files changed, 47420 insertions(+)
 create mode 100644 ubuntu/i40e/Kconfig
 create mode 100644 ubuntu/i40e/Makefile
 create mode 100644 ubuntu/i40e/i40e.h
 create mode 100644 ubuntu/i40e/i40e_adminq.c
 create mode 100644 ubuntu/i40e/i40e_adminq.h
 create mode 100644 ubuntu/i40e/i40e_adminq_cmd.h
 create mode 100644 ubuntu/i40e/i40e_alloc.h
 create mode 100644 ubuntu/i40e/i40e_common.c
 create mode 100644 ubuntu/i40e/i40e_dcb.c
 create mode 100644 ubuntu/i40e/i40e_dcb.h
 create mode 100644 ubuntu/i40e/i40e_dcb_nl.c
 create mode 100644 ubuntu/i40e/i40e_debugfs.c
 create mode 100644 ubuntu/i40e/i40e_devids.h
 create mode 100644 ubuntu/i40e/i40e_diag.c
 create mode 100644 ubuntu/i40e/i40e_diag.h
 create mode 100644 ubuntu/i40e/i40e_ethtool.c
 create mode 100644 ubuntu/i40e/i40e_fcoe.c
 create mode 100644 ubuntu/i40e/i40e_fcoe.h
 create mode 100644 ubuntu/i40e/i40e_hmc.c
 create mode 100644 ubuntu/i40e/i40e_hmc.h
 create mode 100644 ubuntu/i40e/i40e_lan_hmc.c
 create mode 100644 ubuntu/i40e/i40e_lan_hmc.h
 create mode 100644 ubuntu/i40e/i40e_main.c
 create mode 100644 ubuntu/i40e/i40e_nvm.c
 create mode 100644 ubuntu/i40e/i40e_osdep.h
 create mode 100644 ubuntu/i40e/i40e_prototype.h
 create mode 100644 ubuntu/i40e/i40e_ptp.c
 create mode 100644 ubuntu/i40e/i40e_register.h
 create mode 100644 ubuntu/i40e/i40e_status.h
 create mode 100644 ubuntu/i40e/i40e_txrx.c
 create mode 100644 ubuntu/i40e/i40e_txrx.h
 create mode 100644 ubuntu/i40e/i40e_type.h
 create mode 100644 ubuntu/i40e/i40e_virtchnl.h
 create mode 100644 ubuntu/i40e/i40e_virtchnl_pf.c
 create mode 100644 ubuntu/i40e/i40e_virtchnl_pf.h
 create mode 100644 ubuntu/i40e/kcompat.c
 create mode 100644 ubuntu/i40e/kcompat.h

-- 
2.17.1





More information about the kernel-team mailing list