mbox series

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

Message ID 20180831112921.20457-1-juergh@canonical.com
Headers show
Series i40e NIC not recognized (LP: #1789215) | expand

Message

Juerg Haefliger Aug. 31, 2018, 11:29 a.m. UTC
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@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

Comments

Stefan Bader Sept. 3, 2018, 9:38 a.m. UTC | #1
On 31.08.2018 13:29, Juerg Haefliger wrote:
> 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@canonical.com>

New driver which handles only previously unsupported HW. No risk of regression.

Acked-by: Stefan Bader <stefan.bader@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
>
Kleber Sacilotto de Souza Sept. 5, 2018, 3:44 p.m. UTC | #2
On 08/31/18 13:29, Juerg Haefliger wrote:
> 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@canonical.com>

Acked-by: Kleber Sacilotto de Souza <kleber.souza@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
>
Kleber Sacilotto de Souza Sept. 6, 2018, 1:49 p.m. UTC | #3
On 08/31/18 13:29, Juerg Haefliger wrote:
> 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@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
> 

Applied to trusty/master-next branch.

Thanks,
Kleber