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

Commit bbda1bae authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull networking fixes from David Miller:

 1) Brown paper bag fix in HTB scheduler, class options set incorrectly
    due to a typoe.  Fix from Vimalkumar.

 2) It's possible for the ipv6 FIB garbage collector to run before all
    the necessary datastructure are setup during init, defer the
    notifier registry to avoid this problem.  Fix from Michal Kubecek.

 3) New i40e ethernet driver from the Intel folks.

 4) Add new qmi wwan device IDs, from Bjørn Mork.

 5) Doorbell lock in bnx2x driver is not initialized properly in some
    configurations, fix from Ariel Elior.

 6) Revert an ipv6 packet option padding change that broke standardized
    ipv6 implementation test suites.  From Jiri Pirko.

 7) Fix synchronization of ARP information in bonding layer, from
    Nikolay Aleksandrov.

 8) Fix missing error return resulting in illegal memory accesses in
    openvswitch, from Daniel Borkmann.

 9) SCTP doesn't signal poll events properly due to mistaken operator
    precedence, fix also from Daniel Borkmann.

10) __netdev_pick_tx() passes wrong index to sk_tx_queue_set() which
    essentially disables caching of TX queue in sockets :-/ Fix from
    Eric Dumazet.

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (29 commits)
  net_sched: htb: fix a typo in htb_change_class()
  net: qmi_wwan: add new Qualcomm devices
  ipv6: don't call fib6_run_gc() until routing is ready
  net: tilegx driver: avoid compiler warning
  fib6_rules: fix indentation
  irda: vlsi_ir: Remove casting the return value which is a void pointer
  irda: donauboe: Remove casting the return value which is a void pointer
  net: fix multiqueue selection
  net: sctp: fix smatch warning in sctp_send_asconf_del_ip
  net: sctp: fix bug in sctp_poll for SOCK_SELECT_ERR_QUEUE
  net: fib: fib6_add: fix potential NULL pointer dereference
  net: ovs: flow: fix potential illegal memory access in __parse_flow_nlattrs
  bcm63xx_enet: remove deprecated IRQF_DISABLED
  net: korina: remove deprecated IRQF_DISABLED
  macvlan: Move skb_clone check closer to call
  qlcnic: Fix warning reported by kbuild test robot.
  bonding: fix bond_arp_rcv setting and arp validate desync state
  bonding: fix store_arp_validate race with mode change
  ipv6/exthdrs: accept tlv which includes only padding
  bnx2x: avoid atomic allocations during initialization
  ...
parents 2b76db6a f3ad857e
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
@@ -4355,7 +4355,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>
@@ -4380,6 +4380,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
+2 −2
Original line number Diff line number Diff line
@@ -2404,7 +2404,7 @@ static void bond_validate_arp(struct bonding *bond, struct slave *slave, __be32
	slave->target_last_arp_rx[i] = jiffies;
}

static int bond_arp_rcv(const struct sk_buff *skb, struct bonding *bond,
int bond_arp_rcv(const struct sk_buff *skb, struct bonding *bond,
		 struct slave *slave)
{
	struct arphdr *arp = (struct arphdr *)skb->data;
+25 −6
Original line number Diff line number Diff line
@@ -349,6 +349,8 @@ static ssize_t bonding_store_mode(struct device *d,
		goto out;
	}

	/* don't cache arp_validate between modes */
	bond->params.arp_validate = BOND_ARP_VALIDATE_NONE;
	bond->params.mode = new_value;
	bond_set_mode_ops(bond, bond->params.mode);
	pr_info("%s: setting mode to %s (%d).\n",
@@ -419,27 +421,39 @@ static ssize_t bonding_store_arp_validate(struct device *d,
					  struct device_attribute *attr,
					  const char *buf, size_t count)
{
	int new_value;
	struct bonding *bond = to_bond(d);
	int new_value, ret = count;

	if (!rtnl_trylock())
		return restart_syscall();
	new_value = bond_parse_parm(buf, arp_validate_tbl);
	if (new_value < 0) {
		pr_err("%s: Ignoring invalid arp_validate value %s\n",
		       bond->dev->name, buf);
		return -EINVAL;
		ret = -EINVAL;
		goto out;
	}
	if (new_value && (bond->params.mode != BOND_MODE_ACTIVEBACKUP)) {
	if (bond->params.mode != BOND_MODE_ACTIVEBACKUP) {
		pr_err("%s: arp_validate only supported in active-backup mode.\n",
		       bond->dev->name);
		return -EINVAL;
		ret = -EINVAL;
		goto out;
	}
	pr_info("%s: setting arp_validate to %s (%d).\n",
		bond->dev->name, arp_validate_tbl[new_value].modename,
		new_value);

	if (bond->dev->flags & IFF_UP) {
		if (!new_value)
			bond->recv_probe = NULL;
		else if (bond->params.arp_interval)
			bond->recv_probe = bond_arp_rcv;
	}
	bond->params.arp_validate = new_value;
out:
	rtnl_unlock();

	return count;
	return ret;
}

static DEVICE_ATTR(arp_validate, S_IRUGO | S_IWUSR, bonding_show_arp_validate,
@@ -555,8 +569,8 @@ static ssize_t bonding_store_arp_interval(struct device *d,
					  struct device_attribute *attr,
					  const char *buf, size_t count)
{
	int new_value, ret = count;
	struct bonding *bond = to_bond(d);
	int new_value, ret = count;

	if (!rtnl_trylock())
		return restart_syscall();
@@ -599,8 +613,13 @@ static ssize_t bonding_store_arp_interval(struct device *d,
		 * is called.
		 */
		if (!new_value) {
			if (bond->params.arp_validate)
				bond->recv_probe = NULL;
			cancel_delayed_work_sync(&bond->arp_work);
		} else {
			/* arp_validate can be set only in active-backup mode */
			if (bond->params.arp_validate)
				bond->recv_probe = bond_arp_rcv;
			cancel_delayed_work_sync(&bond->mii_work);
			queue_delayed_work(bond->wq, &bond->arp_work, 0);
		}
Loading