[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