Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e6eddc33 authored by David S. Miller's avatar David S. Miller
Browse files


Jeff Kirsher says:

====================
Intel Wired LAN Driver Updates

This series implements the new i40e driver for Intel's upcoming
Intel(R) Ethernet Controller XL710 Family of devices.

V7: many changes from a few comments:
    use linux errno types
    change I40E_SUCCESS to 0, standardize returns
    change s32 return values to int
    use void return values where possible
    prefer use of int over i40e_status
V6: rename Kbuild to Makefile
    rename i40e_mem[set|cpy] to regular memset/memcpy
V5: remove sysfs support from this set, will rearchitect
    changes from community comments
V4: addresses remaining community comments, mostly trivial edits.
    major sparse based cleanup of possible endian issues
    removal of most of __func__ references
    sizeof(*var) instead of sizeof(struct ...)
    change 'NULL ==' tests to !NULL
    implement xps
    use kernel bitshift macros (upper_32_bits, etc)
V3: many more individual comments addressed, thanks reviewers!  Many
    other changes due to internal review and development.
V2: each patch has individual comments, in general, feedback from the
    list was applied and addressed. Many changes due to internal review
    and coding as well.
V1: initial send

Let me start by saying thanks and we appreciate any time spent by
those of you who review and comment on this new driver, and we will
attempt to address and respond to all issues brought to our attention.

I tried to break the patches up to ease review, but the series should
apply and still be bisectable, as the last patch adds the driver to
the kernel compile with CONFIG_I40E.

This driver is for a brand new bit of silicon that has a different
design than other Intel Ethernet silicon, and therefore needed a new
driver.

The hardware has quite a bit of capability and this driver is only
meant to provide basic functionality at first.  Future patches will
continue to add functionality and bug fixes.

This initial release is very early in the product cycle with the intent
of getting initial support into the kernel before users have the
hardware available to purchase.  A software development manual is not
ready yet but will be available when the hardware ships.

The driver development model and interaction with community submitted
patches *will not be any different* than what we are currently doing
today.  We plan to continue established processes.

An associated i40evf driver has been posted for review.

List of tools we ran in preparation:
way more sparse clean
make W=1, W=2 clean
checkpatch (almost) clean
        total: 1 errors, 4 warnings, 30461 lines checked
        NOTE: Ignored message types: LONG_LINE
        - issues have been addressed and the remainders
          are noise.
codespell clean
smatch (almost) clean with a couple minor warnings
coccicheck clean
namespacecheck clean
allmodconfig clean
ppc64 build clean (untested)

This driver is a team effort, thank you to Joseph Gasparakis,
Shannon Nelson, Anjali Singhai-Jain, Mitch Williams, Neerav
Parikh, Vasu Dev, Kavindya Deegala, Yi Zou, and PJ Waskiewicz.

TODO (known issues)
BQL implementation
finish rtnl_stat64 locking (we have a patch but debugging it)
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 2c861cc6 1bff6529
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -86,6 +86,8 @@ generic_netlink.txt
	- info on Generic Netlink
gianfar.txt
	- Gianfar Ethernet Driver.
i40e.txt
	- README for the Intel Ethernet Controller XL710 Driver (i40e).
ieee802154.txt
	- Linux IEEE 802.15.4 implementation, API and drivers
igb.txt
+115 −0
Original line number Diff line number Diff line
Linux Base Driver for the Intel(R) Ethernet Controller XL710 Family
===================================================================

Intel i40e Linux driver.
Copyright(c) 2013 Intel Corporation.

Contents
========

- Identifying Your Adapter
- Additional Configurations
- Performance Tuning
- Known Issues
- Support


Identifying Your Adapter
========================

The driver in this release is compatible with the Intel Ethernet
Controller XL710 Family.

For more information on how to identify your adapter, go to the Adapter &
Driver ID Guide at:

    http://support.intel.com/support/network/sb/CS-012904.htm


Enabling the driver
===================

The driver is enabled via the standard kernel configuration system,
using the make command:

     Make oldconfig/silentoldconfig/menuconfig/etc.

The driver is located in the menu structure at:

	-> Device Drivers
	  -> Network device support (NETDEVICES [=y])
	    -> Ethernet driver support
	      -> Intel devices
	        -> Intel(R) Ethernet Controller XL710 Family

Additional Configurations
=========================

  Generic Receive Offload (GRO)
  -----------------------------
  The driver supports the in-kernel software implementation of GRO.  GRO has
  shown that by coalescing Rx traffic into larger chunks of data, CPU
  utilization can be significantly reduced when under large Rx load.  GRO is
  an evolution of the previously-used LRO interface.  GRO is able to coalesce
  other protocols besides TCP.  It's also safe to use with configurations that
  are problematic for LRO, namely bridging and iSCSI.

  Ethtool
  -------
  The driver utilizes the ethtool interface for driver configuration and
  diagnostics, as well as displaying statistical information. The latest
  ethtool version is required for this functionality.

  The latest release of ethtool can be found from
  https://www.kernel.org/pub/software/network/ethtool

  Data Center Bridging (DCB)
  --------------------------
  DCB configuration is not currently supported.

  FCoE
  ----
  Fiber Channel over Ethernet (FCoE) hardware offload is not currently
  supported.

  MAC and VLAN anti-spoofing feature
  ----------------------------------
  When a malicious driver attempts to send a spoofed packet, it is dropped by
  the hardware and not transmitted.  An interrupt is sent to the PF driver
  notifying it of the spoof attempt.

  When a spoofed packet is detected the PF driver will send the following
  message to the system log (displayed by  the "dmesg" command):

  Spoof event(s) detected on VF (n)

  Where n=the VF that attempted to do the spoofing.


Performance Tuning
==================

An excellent article on performance tuning can be found at:

http://www.redhat.com/promo/summit/2008/downloads/pdf/Thursday/Mark_Wagner.pdf


Known Issues
============


Support
=======

For general information, go to the Intel support website at:

    http://support.intel.com

or the Intel Wired Networking project hosted by Sourceforge at:

    http://e1000.sourceforge.net

If an issue is identified with the released source code on the supported
kernel with a supported adapter, email the specific information related
to the issue to e1000-devel@lists.sourceforge.net and copy
netdev@vger.kernel.org.
+2 −1
Original line number Diff line number Diff line
@@ -4346,7 +4346,7 @@ M: Deepak Saxena <dsaxena@plexity.net>
S:	Maintained
F:	drivers/char/hw_random/ixp4xx-rng.c

INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/igbvf/ixgb/ixgbe/ixgbevf)
INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/igbvf/ixgb/ixgbe/ixgbevf/i40e)
M:	Jeff Kirsher <jeffrey.t.kirsher@intel.com>
M:	Jesse Brandeburg <jesse.brandeburg@intel.com>
M:	Bruce Allan <bruce.w.allan@intel.com>
@@ -4371,6 +4371,7 @@ F: Documentation/networking/igbvf.txt
F:	Documentation/networking/ixgb.txt
F:	Documentation/networking/ixgbe.txt
F:	Documentation/networking/ixgbevf.txt
F:	Documentation/networking/i40e.txt
F:	drivers/net/ethernet/intel/

INTEL PRO/WIRELESS 2100, 2200BG, 2915ABG NETWORK CONNECTION SUPPORT
+18 −0
Original line number Diff line number Diff line
@@ -241,4 +241,22 @@ config IXGBEVF
	  will be called ixgbevf.  MSI-X interrupt support is required
	  for this driver to work correctly.

config I40E
	tristate "Intel(R) Ethernet Controller XL710 Family support"
	depends on PCI
	---help---
	  This driver supports Intel(R) Ethernet Controller XL710 Family of
	  devices.  For more information on how to identify your adapter, go
	  to the Adapter & Driver ID Guide at:

	  <http://support.intel.com/support/network/adapter/pro100/21397.htm>

	  For general information and support, go to the Intel support
	  website at:

	  <http://support.intel.com>

	  To compile this driver as a module, choose M here. The module
	  will be called i40e.

endif # NET_VENDOR_INTEL
+1 −0
Original line number Diff line number Diff line
@@ -9,4 +9,5 @@ obj-$(CONFIG_IGB) += igb/
obj-$(CONFIG_IGBVF) += igbvf/
obj-$(CONFIG_IXGBE) += ixgbe/
obj-$(CONFIG_IXGBEVF) += ixgbevf/
obj-$(CONFIG_I40E) += i40e/
obj-$(CONFIG_IXGB) += ixgb/
Loading