openwrt/staging/blogic.git
14 years agosfc: Add compile-time checks for correctness of paged register writes
Ben Hutchings [Mon, 6 Dec 2010 22:55:33 +0000 (22:55 +0000)]
sfc: Add compile-time checks for correctness of paged register writes

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
14 years agosfc: Remove redundant memory barriers between MMIOs
Ben Hutchings [Mon, 6 Dec 2010 22:55:18 +0000 (22:55 +0000)]
sfc: Remove redundant memory barriers between MMIOs

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
14 years agosfc: Expand/correct comments on collector behaviour and function usage
Ben Hutchings [Mon, 6 Dec 2010 22:55:00 +0000 (22:55 +0000)]
sfc: Expand/correct comments on collector behaviour and function usage

Document exactly which registers and functions have special behaviour,
and why races on writes to descriptor pointers are safe.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
14 years agosfc: Use ACCESS_ONCE when copying efx_tx_queue::read_count
Ben Hutchings [Wed, 10 Nov 2010 18:46:40 +0000 (18:46 +0000)]
sfc: Use ACCESS_ONCE when copying efx_tx_queue::read_count

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
14 years agosfc: Reorder struct efx_nic to separate fields by volatility
Ben Hutchings [Mon, 6 Dec 2010 22:53:15 +0000 (22:53 +0000)]
sfc: Reorder struct efx_nic to separate fields by volatility

Place the regularly updated fields (locks, MAC stats, etc.) on a
separate cache-line from fields which are mostly constant.  This
should reduce cache misses for access to the latter on the data path.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
14 years agoixgbe: add support for new format of PBA numbers
Don Skidmore [Fri, 3 Dec 2010 03:32:58 +0000 (03:32 +0000)]
ixgbe: add support for new format of PBA numbers

The new PBA format is stored as a string.  This patch allows the
driver to support both the old and new format.

Signed-off-by: Don Skidmore <donald.c.skidmore@intel.com>
Tested-by: Stephen Ko <stephen.s.ko@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoixgbe: add support for 82599 FCoE SKU
Don Skidmore [Fri, 3 Dec 2010 03:32:34 +0000 (03:32 +0000)]
ixgbe: add support for 82599 FCoE SKU

Add both NIC and backplane support for FCoE enabled devices IDs.

Signed-off-by: Don Skidmore <donald.c.skidmore@intel.com>
Tested-by: Stephen Ko <stephen.s.ko@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoixgbe: add WOL support for SFP+ subdevice
Don Skidmore [Fri, 3 Dec 2010 03:32:13 +0000 (03:32 +0000)]
ixgbe: add WOL support for SFP+ subdevice

This patch will add wake on LAN support to the dev/sub_dev 10FB 11A9.  This
will also include ixgbe ethtool support for this device.

Signed-off-by: Don Skidmore <donald.c.skidmore@intel.com>
Tested-by: Stephen Ko <stephen.s.ko@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoixgbe: fix link behavior for SFP+ when driver is brought down
Don Skidmore [Fri, 3 Dec 2010 03:31:51 +0000 (03:31 +0000)]
ixgbe: fix link behavior for SFP+ when driver is brought down

We have had several requests to have ifconfig down command disable
the SFP+ laser and thus make link go down.  Likewise on ifconfig up
the laser would be enabled and link would come up.  This patch enables
that behavior.

Signed-off-by: Don Skidmore <donald.c.skidmore@intel.com>
Tested-by: Stephen Ko <stephen.s.ko@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoqlcnic: Updated driver version to 5.0.13
Anirban Chakraborty [Thu, 2 Dec 2010 20:42:08 +0000 (20:42 +0000)]
qlcnic: Updated driver version to 5.0.13

Signed-off-by: Anirban Chakraborty <anirban.chakraborty@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoqlcnic: LICENSE file for qlcnic
Sritej Velaga [Thu, 2 Dec 2010 20:41:56 +0000 (20:41 +0000)]
qlcnic: LICENSE file for qlcnic

Signed-off-by: Sritej Velaga <sritej.velaga@qlogic.com>
Signed-off-by: Anirban Chakraborty <anirban.chakraborty@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoqlcnic: validate eswitch config values for PF
Amit Kumar Salecha [Thu, 2 Dec 2010 20:41:43 +0000 (20:41 +0000)]
qlcnic: validate eswitch config values for PF

Currently driver set default eswitch configuration values for PF function,
instead of validating values sent by application.

Signed-off-by: Amit Kumar Salecha <amit.salecha@qlogic.com>
Signed-off-by: Anirban Chakraborty <anirban.chakraborty@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoqlcnic: Disable loopback support
Sucheta Chakraborty [Thu, 2 Dec 2010 20:41:23 +0000 (20:41 +0000)]
qlcnic: Disable loopback support

Loopback mode can not be supported in CNA mode. Removing it until FW is fixed.

Signed-off-by: Sucheta Chakraborty <sucheta.chakraborty@qlogic.com>
Signed-off-by: Anirban Chakraborty <anirban.chakraborty@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agosfc: Store MAC address from NVRAM in net_device::perm_addr
Ben Hutchings [Thu, 2 Dec 2010 13:48:28 +0000 (13:48 +0000)]
sfc: Store MAC address from NVRAM in net_device::perm_addr

For some reason we failed to make this change when perm_addr was
introduced.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agosfc: Use current MAC address, not NVRAM MAC address, for WoL filter
Ben Hutchings [Thu, 2 Dec 2010 13:48:20 +0000 (13:48 +0000)]
sfc: Use current MAC address, not NVRAM MAC address, for WoL filter

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agosfc: When waking a stopped tx_queue, only lock that tx_queue
Steve Hodgson [Thu, 2 Dec 2010 13:48:14 +0000 (13:48 +0000)]
sfc: When waking a stopped tx_queue, only lock that tx_queue

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agosfc: Update kernel-doc to match earlier move of Toeplitz hash key
Ben Hutchings [Thu, 2 Dec 2010 13:47:56 +0000 (13:47 +0000)]
sfc: Update kernel-doc to match earlier move of Toeplitz hash key

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agosfc: Move xmac_poll_required into struct falcon_nic_data
Ben Hutchings [Thu, 2 Dec 2010 13:47:51 +0000 (13:47 +0000)]
sfc: Move xmac_poll_required into struct falcon_nic_data

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agosfc: Move Falcon global event handling to falcon.c
Ben Hutchings [Thu, 2 Dec 2010 13:47:45 +0000 (13:47 +0000)]
sfc: Move Falcon global event handling to falcon.c

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agosfc: Move mdio_lock to struct falcon_nic_data
Ben Hutchings [Thu, 2 Dec 2010 13:47:35 +0000 (13:47 +0000)]
sfc: Move mdio_lock to struct falcon_nic_data

We only have direct access to MDIO on Falcon, so move this out of
struct efx_nic.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agosfc: Move SPI state to struct falcon_nic_data
Ben Hutchings [Thu, 2 Dec 2010 13:47:29 +0000 (13:47 +0000)]
sfc: Move SPI state to struct falcon_nic_data

We only have direct access to SPI on Falcon, so move all this state
out of struct efx_nic.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agosfc: Remove unnecessary inclusion of various private header files
Ben Hutchings [Thu, 2 Dec 2010 13:47:17 +0000 (13:47 +0000)]
sfc: Remove unnecessary inclusion of various private header files

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agosfc: Expose Falcon BootROM config through MTD, not ethtool
Ben Hutchings [Thu, 2 Dec 2010 13:47:10 +0000 (13:47 +0000)]
sfc: Expose Falcon BootROM config through MTD, not ethtool

The ethtool EEPROM interface is really meant for exposing chip
configuration, not BootROM configuration.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agosfc: Remove broken automatic fallback for invalid Falcon chip/board config
Ben Hutchings [Thu, 2 Dec 2010 13:47:01 +0000 (13:47 +0000)]
sfc: Remove broken automatic fallback for invalid Falcon chip/board config

If the Falcon board config is invalid, we cannot proceed - we do not
have a valid board type to pass to falcon_probe_board(), and if we
kluge that to work with an unknown board then other initialisation
code will crash.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agosfc: Fix event based MCDI completion and MC REBOOT/CMDDONE ordering issue
Steve Hodgson [Thu, 2 Dec 2010 13:46:55 +0000 (13:46 +0000)]
sfc: Fix event based MCDI completion and MC REBOOT/CMDDONE ordering issue

The mcfw *never* sends CMDDONE when rebooting. Changing this so that it always
sends CMDDONE *before* REBOOT is easy on Siena, but it's not obvious that we
could guarantee to be able to implement this on future hardware.

Given this, I'm less convinced that the protocol should be changed.

To reiterate the failure mode: The driver sees this:

 issue command
 receive REBOOT event

Was that reboot event sent before the command was issued, or in
response to the command? If the former then there will be a subsequent
CMDDONE event, if the latter, then there will be no CMDDONE event.

Options to resolve this are:

 1. REBOOT always completes an outstanding mcdi request, and we set
    the credits count to ignore a subsequent CMDDONE event with
    mismatching seqno.

 2. REBOOT never completes an outstanding mcdi request. If there is
    no CMDDONE event then we rely on the mcdi timeout code to complete
    the outstanding request, incurring a 10s delay.

I'd argue that (2) is tidier, but that incurring a 10s delay is a little
needless. Let's go with (1).

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agosfc: Clear RXIN_SEL when soft-resetting QT2025C
Ben Hutchings [Thu, 2 Dec 2010 13:46:37 +0000 (13:46 +0000)]
sfc: Clear RXIN_SEL when soft-resetting QT2025C

When we enable PMA/PMD loopback this automatically sets RXIN_SEL
(inverse polarity for RXIN).  We need to clear that bit during the
soft-reset sequence, as it is not done automatically.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agosfc: Read-to-clear LM87 alarm/interrupt status at start of day
Ben Hutchings [Thu, 2 Dec 2010 13:46:31 +0000 (13:46 +0000)]
sfc: Read-to-clear LM87 alarm/interrupt status at start of day

We do not want to shut down the board based on a fault that has
already been cleared.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agosfc: Distinguish critical and non-critical over-temperature conditions
Ben Hutchings [Thu, 2 Dec 2010 13:46:24 +0000 (13:46 +0000)]
sfc: Distinguish critical and non-critical over-temperature conditions

Set both the 'maximum' and critical temperature limits for LM87
hardware monitors on Falcon boards.  Do not shut down a port until the
critical temperature is reached, but warn as soon as the 'maximum'
temperature is reached.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agosfc: Fix condition for no-op in set_phy_flash_cfg()
Ben Hutchings [Thu, 2 Dec 2010 13:46:14 +0000 (13:46 +0000)]
sfc: Fix condition for no-op in set_phy_flash_cfg()

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agosfc: Reduce log level for MCDI error response in efx_mcdi_rpc()
Ben Hutchings [Thu, 2 Dec 2010 13:46:09 +0000 (13:46 +0000)]
sfc: Reduce log level for MCDI error response in efx_mcdi_rpc()

Some errors are expected, e.g. when sending new commands to an MC
running old firmware.  Only the caller of efx_mcdi_rpc() can decide
what is a real error.  Therefore log the error responses with
netif_dbg().

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agotipc: Delete tipc_ownidentity()
Allan Stephens [Tue, 30 Nov 2010 12:01:03 +0000 (12:01 +0000)]
tipc: Delete tipc_ownidentity()

Moves the content of the native API routine tipc_ownidentity() into the
sole routine that calls it, since it can no longer be called in isolation.

Signed-off-by: Allan Stephens <Allan.Stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agotipc: Eliminate obsolete native API forwarding routines
Allan Stephens [Tue, 30 Nov 2010 12:01:02 +0000 (12:01 +0000)]
tipc: Eliminate obsolete native API forwarding routines

Moves the content of each native API message forwarding routine
into the sole routine that calls it, since the forwarding routines
no longer be called in isolation. Also removes code in each routine
that altered the outgoing message's importance level since this is
now no longer possible.

The previous function mapping (parent function, and child API) was
as follows:

   tipc_send2name
       \--tipc_forward2name

   tipc_send2port
       \--tipc_forward2port

   tipc_send_buf2port
       \--tipc_forward_buf2port

After this commit, the children don't exist and their functionality
is completely in the respective parent.

Signed-off-by: Allan Stephens <Allan.Stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agotipc: Eliminate an unused symbolic constant in link code
Allan Stephens [Tue, 30 Nov 2010 12:01:01 +0000 (12:01 +0000)]
tipc: Eliminate an unused symbolic constant in link code

Removes a symbol that is not referenced anywhere by TIPC's link code.

Signed-off-by: Allan Stephens <Allan.Stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agotipc: Eliminate useless initialization when creating subscriber
Allan Stephens [Tue, 30 Nov 2010 12:01:00 +0000 (12:01 +0000)]
tipc: Eliminate useless initialization when creating subscriber

Removes initialization of a local variable that is always assigned
a different value before it is referenced.

Signed-off-by: Allan Stephens <Allan.Stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agotipc: Remove unused domain argument from multicast send routine
Allan Stephens [Tue, 30 Nov 2010 12:00:59 +0000 (12:00 +0000)]
tipc: Remove unused domain argument from multicast send routine

Eliminates an unused argument from tipc_multicast(), now that this
routine can no longer be called by kernel-based applications.

Signed-off-by: Allan Stephens <Allan.Stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agotipc: Remove support for TIPC mode change callback
Allan Stephens [Tue, 30 Nov 2010 12:00:58 +0000 (12:00 +0000)]
tipc: Remove support for TIPC mode change callback

Eliminates support for the callback routine invoked when TIPC
changes its mode of operation from inactive to standalone or from
standalone to networked. This callback was part of TIPC's obsolete
native API and is not used by TIPC internally.

Signed-off-by: Allan Stephens <Allan.Stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agotipc: Delete useless function prototypes
Allan Stephens [Tue, 30 Nov 2010 12:00:57 +0000 (12:00 +0000)]
tipc: Delete useless function prototypes

Removes several function declarations that aren't used anywhere,
either because they reference routines that no longer exist or
because all users of the function reference it after it has already
been defined.

Signed-off-by: Allan Stephens <Allan.Stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agotipc: Eliminate useless return value when disabling a bearer
Allan Stephens [Tue, 30 Nov 2010 12:00:56 +0000 (12:00 +0000)]
tipc: Eliminate useless return value when disabling a bearer

Modifies bearer_disable() to return void since it always indicates
success anyway.

Signed-off-by: Allan Stephens <Allan.Stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agotipc: Delete unused configuration service structure definition
Allan Stephens [Tue, 30 Nov 2010 12:00:55 +0000 (12:00 +0000)]
tipc: Delete unused configuration service structure definition

Removes a structure definition that is no longer used by TIPC's
configuration service.

Signed-off-by: Allan Stephens <Allan.Stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agotipc: Remove obsolete inclusions of header files
Allan Stephens [Tue, 30 Nov 2010 12:00:54 +0000 (12:00 +0000)]
tipc: Remove obsolete inclusions of header files

Gets rid of #include statements that are no longer required as a
result of the merging of obsolete native API header file content
into other TIPC include files.

Signed-off-by: Allan Stephens <Allan.Stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agotipc: Remove obsolete native API files and exports
Allan Stephens [Tue, 30 Nov 2010 12:00:53 +0000 (12:00 +0000)]
tipc: Remove obsolete native API files and exports

As part of the removal of TIPC's native API support it is no longer
necessary for TIPC to export symbols for routines that can be called
by kernel-based applications, nor for it to have header files that
kernel-based applications can include to access the declarations for
those routines. This commit eliminates the exporting of symbols by
TIPC and migrates the contents of each obsolete native API include
file into its corresponding non-native API equivalent.

The code which was migrated in this commit was migrated intact, in
that there are no technical changes combined with the relocation.

Signed-off-by: Allan Stephens <Allan.Stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agonet: kill unused macros from head file
Shan Wei [Wed, 1 Dec 2010 18:05:17 +0000 (18:05 +0000)]
net: kill unused macros from head file

These macros have been defined for several years since v2.6.12-rc2(tracing by git),
but never be used. So remove them.

Signed-off-by: Shan Wei <shanwei@cn.fujitsu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoipv6: use ND_REACHABLE_TIME and ND_RETRANS_TIMER instead of magic number
Shan Wei [Wed, 1 Dec 2010 18:05:12 +0000 (18:05 +0000)]
ipv6: use ND_REACHABLE_TIME and ND_RETRANS_TIMER instead of magic number

ND_REACHABLE_TIME and ND_RETRANS_TIMER have defined
since v2.6.12-rc2, but never been used.
So use them instead of magic number.

This patch also changes original code style to read comfortably .

Thank YOSHIFUJI Hideaki for pointing it out.

Signed-off-by: Shan Wei <shanwei@cn.fujitsu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agotcp: use TCP_BASE_MSS to set basic mss value
Shan Wei [Wed, 1 Dec 2010 18:04:50 +0000 (18:04 +0000)]
tcp: use TCP_BASE_MSS to set basic mss value

TCP_BASE_MSS is defined, but not used.
commit 5d424d5a introduce this macro, so use
it to initial sysctl_tcp_base_mss.

commit 5d424d5a674f782d0659a3b66d951f412901faee
Author: John Heffner <jheffner@psc.edu>
Date:   Mon Mar 20 17:53:41 2006 -0800

    [TCP]: MTU probing

Signed-off-by: Shan Wei <shanwei@cn.fujitsu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agonet: snmp: fix the wrong ICMP_MIB_MAX value
Shan Wei [Wed, 1 Dec 2010 18:04:43 +0000 (18:04 +0000)]
net: snmp: fix the wrong ICMP_MIB_MAX value

__ICMP_MIB_MAX is equal to the total number of icmp mib,
So no need to add 1. This wastes 4/8 bytes memory.

Change it to be same as ICMP6_MIB_MAX, TCP_MIB_MAX, UDP_MIB_MAX.

Signed-off-by: Shan Wei <shanwei@cn.fujitsu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agocan: EG20T PCH: Delete unnecessary spin_lock
Tomoya [Mon, 29 Nov 2010 18:19:52 +0000 (18:19 +0000)]
can: EG20T PCH: Delete unnecessary spin_lock

Delete unnecessary spin_lock for accessing Message Object.
Since all message objects are divided into tx/rx area completely,
spin_lock processing is unnecessary.

Signed-off-by: Tomoya MORINAGA <tomoya-linux@dsn.okisemi.com>
Acked-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agocan: EG20T PCH: Enumerate LEC macros
Tomoya [Mon, 29 Nov 2010 18:16:15 +0000 (18:16 +0000)]
can: EG20T PCH: Enumerate LEC macros

For easy to readable, LEC #define macros are replaced to enums.

Signed-off-by: Tomoya MORINAGA <tomoya-linux@dsn.okisemi.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agocan: EG20T PCH: Change Message Object Index
Tomoya [Mon, 29 Nov 2010 18:15:02 +0000 (18:15 +0000)]
can: EG20T PCH: Change Message Object Index

For easy to readable, add Message Object index like below.
PCH_RX_OBJ_START
PCH_RX_OBJ_END
PCH_TX_OBJ_START
PCH_TX_OBJ_END

Signed-off-by: Tomoya MORINAGA <tomoya-linux@dsn.okisemi.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agocan: EG20T PCH: Separate Interface Register(IF1/IF2)
Tomoya [Mon, 29 Nov 2010 18:11:52 +0000 (18:11 +0000)]
can: EG20T PCH: Separate Interface Register(IF1/IF2)

CAN register of Intel PCH EG20T has 2 sets of interface register.
To reduce whole of code size, separate interface register.
As a result, the number of function also can be reduced.

Signed-off-by: Tomoya MORINAGA <tomoya-linux@dsn.okisemi.com>
Acked-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agotcp: Implement ipv6 ->get_peer() and ->tw_get_peer().
David S. Miller [Thu, 2 Dec 2010 19:52:07 +0000 (11:52 -0800)]
tcp: Implement ipv6 ->get_peer() and ->tw_get_peer().

Now ipv6 timewait recycling is fully implemented and
enabled.

Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agotcp: Add timewait recycling bits to ipv6 connect code.
David S. Miller [Thu, 2 Dec 2010 20:14:29 +0000 (12:14 -0800)]
tcp: Add timewait recycling bits to ipv6 connect code.

This will also improve handling of ipv6 tcp socket request
backlog when syncookies are not enabled.  When backlog
becomes very deep, last quarter of backlog is limited to
validated destinations.  Previously only ipv4 implemented
this logic, but now ipv6 does too.

Now we are only one step away from enabling timewait
recycling for ipv6, and that step is simply filling in
the implementation of tcp_v6_get_peer() and
tcp_v6_tw_get_peer().

Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoipv6: Create inet6_csk_route_req().
David S. Miller [Thu, 2 Dec 2010 18:59:22 +0000 (10:59 -0800)]
ipv6: Create inet6_csk_route_req().

Brother of ipv4's inet_csk_route_req().

Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoipv6: Add rt6_get_peer() helper.
David S. Miller [Thu, 2 Dec 2010 18:16:06 +0000 (10:16 -0800)]
ipv6: Add rt6_get_peer() helper.

To go along side ipv4's rt_get_peer().

Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agotimewait_sock: Create and use getpeer op.
David S. Miller [Thu, 2 Dec 2010 02:09:13 +0000 (18:09 -0800)]
timewait_sock: Create and use getpeer op.

The only thing AF-specific about remembering the timestamp
for a time-wait TCP socket is getting the peer.

Abstract that behind a new timewait_sock_ops vector.

Support for real IPV6 sockets is not filled in yet, but
curiously this makes timewait recycling start to work
for v4-mapped ipv6 sockets.

Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoinetpeer: Fix incorrect comment about inetpeer struct size.
David S. Miller [Thu, 2 Dec 2010 01:29:08 +0000 (17:29 -0800)]
inetpeer: Fix incorrect comment about inetpeer struct size.

Now with ipv6 support it is no longer less than 64 bytes.

Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoinetpeer: Kill use of inet_peer_address_t typedef.
David S. Miller [Thu, 2 Dec 2010 01:28:18 +0000 (17:28 -0800)]
inetpeer: Kill use of inet_peer_address_t typedef.

They are verboten these days.

Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agovxge: update driver version
Jon Mason [Mon, 29 Nov 2010 18:02:47 +0000 (18:02 +0000)]
vxge: update driver version

Update vxge driver version

Signed-off-by: Jon Mason <jon.mason@exar.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agovxge: use strcpy for strings
Jon Mason [Mon, 29 Nov 2010 18:02:46 +0000 (18:02 +0000)]
vxge: use strcpy for strings

Use strncpy instead of memcpy when working on strings

Signed-off-by: Jon Mason <jon.mason@exar.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agovxge: remove unnecessary printks
Jon Mason [Mon, 29 Nov 2010 18:02:45 +0000 (18:02 +0000)]
vxge: remove unnecessary printks

Remove printks for ring blocks, fifo blocks, and rx doorbell mode as
they clutter the dmesg output during modprobe and provide no useful
information.

Signed-off-by: Jon Mason <jon.mason@exar.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoipip: add module alias for tunl0 tunnel device
stephen hemminger [Mon, 29 Nov 2010 09:47:49 +0000 (09:47 +0000)]
ipip: add module alias for tunl0 tunnel device

If ipip is built as a module the 'ip tunnel add' command would fail because
the ipip module was not being autoloaded.  Adding an alias for
the tunl0 device name cause dev_load() to autoload it when needed.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agogre: add module alias for gre0 tunnel device
stephen hemminger [Mon, 29 Nov 2010 09:47:48 +0000 (09:47 +0000)]
gre: add module alias for gre0 tunnel device

If gre is built as a module the 'ip tunnel add' command would fail because
the ip_gre module was not being autoloaded.  Adding an alias for
the gre0 device name cause dev_load() to autoload it when needed.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agogre: minor cleanups
stephen hemminger [Mon, 29 Nov 2010 09:47:47 +0000 (09:47 +0000)]
gre: minor cleanups

Use strcpy() rather the sprintf() for the case where name is getting
generated.  Fix indentation.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agonet sched: use xps information for qdisc NUMA affinity
Eric Dumazet [Mon, 29 Nov 2010 08:14:37 +0000 (08:14 +0000)]
net sched: use xps information for qdisc NUMA affinity

Allocate qdisc memory according to NUMA properties of cpus included in
xps map.

To be effective, qdisc should be (re)setup after changes
of /sys/class/net/eth<n>/queues/tx-<n>/xps_cpus

I added a numa_node field in struct netdev_queue, containing NUMA node
if all cpus included in xps_cpus share same node, else -1.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Ben Hutchings <bhutchings@solarflare.com>
Cc: Tom Herbert <therbert@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agobnx2x: Add Nic partitioning mode (57712 devices)
Dmitry Kravkov [Wed, 1 Dec 2010 20:39:28 +0000 (12:39 -0800)]
bnx2x: Add Nic partitioning mode (57712 devices)

NIC partitioning is another flavor of multi function - having few
PCI functions share the same physical port. Unlike the currently
supported mode of multi-function which depends on the switch
configuration and uses outer-VLAN, the NPAR mode is switch independent
and uses the MAC addresses to distribute incoming packets to the different
functions. This patch adds the specific HW setting of the NPAR mode
and some distinctions between switch dependent (SD) and
switch independent (SI) multi-function (MF) modes where the configuration
is not the same.

Advance driver version to 1.60.00-6

Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoinet: Turn ->remember_stamp into ->get_peer in connection AF ops.
David S. Miller [Mon, 29 Nov 2010 21:37:14 +0000 (13:37 -0800)]
inet: Turn ->remember_stamp into ->get_peer in connection AF ops.

Then we can make a completely generic tcp_remember_stamp()
that uses ->get_peer() as a helper, minimizing the AF specific
code and minimizing the eventual code duplication when we implement
the ipv6 side of TW recycling.

Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoipv6: Add infrastructure to bind inet_peer objects to routes.
David S. Miller [Tue, 30 Nov 2010 20:27:11 +0000 (12:27 -0800)]
ipv6: Add infrastructure to bind inet_peer objects to routes.

They are only allowed on cached ipv6 routes.

Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoinetpeer: Add inet_getpeer_v6()
David S. Miller [Tue, 30 Nov 2010 20:20:00 +0000 (12:20 -0800)]
inetpeer: Add inet_getpeer_v6()

Now that all of the infrastructure is in place, we can add
the ipv6 shorthand for peer creation.

Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoinetpeer: Add v6 peers tree, abstract root properly.
David S. Miller [Tue, 30 Nov 2010 20:12:23 +0000 (12:12 -0800)]
inetpeer: Add v6 peers tree, abstract root properly.

Add the ipv6 peer tree instance, and adapt remaining
direct references to 'v4_peers' as needed.

Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoinetpeer: Abstract address comparisons.
David S. Miller [Tue, 30 Nov 2010 20:08:53 +0000 (12:08 -0800)]
inetpeer: Abstract address comparisons.

Now v4 and v6 addresses will both work properly.

Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoinetpeer: Make inet_getpeer() take an inet_peer_adress_t pointer.
David S. Miller [Tue, 30 Nov 2010 19:54:19 +0000 (11:54 -0800)]
inetpeer: Make inet_getpeer() take an inet_peer_adress_t pointer.

And make an inet_getpeer_v4() helper, update callers.

Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoinetpeer: Introduce inet_peer_address_t.
David S. Miller [Tue, 30 Nov 2010 19:53:55 +0000 (11:53 -0800)]
inetpeer: Introduce inet_peer_address_t.

Currently only the v4 aspect is used, but this will change.

Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoinetpeer: Abstract out the tree root accesses.
David S. Miller [Tue, 30 Nov 2010 19:41:59 +0000 (11:41 -0800)]
inetpeer: Abstract out the tree root accesses.

Instead of directly accessing "peer", change to code to
operate using a "struct inet_peer_base *" pointer.

This will facilitate the addition of a seperate tree for
ipv6 peer entries.

Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoforcedeth: Use netdev_dbg for printk(KERN_DEBUG
Joe Perches [Mon, 29 Nov 2010 07:42:02 +0000 (07:42 +0000)]
forcedeth: Use netdev_dbg for printk(KERN_DEBUG

Use the normal debugging functions.
Print mac address when using random_ether_addr.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoforcedeth: Remove netdev_dbg uses
Joe Perches [Mon, 29 Nov 2010 07:42:01 +0000 (07:42 +0000)]
forcedeth: Remove netdev_dbg uses

These were probably just for initial driver debugging
and have not been enabled in builds in git history.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoforcedeth: Convert dev_printk(<level> to dev_<level>(
Joe Perches [Mon, 29 Nov 2010 07:42:00 +0000 (07:42 +0000)]
forcedeth: Convert dev_printk(<level> to dev_<level>(

Use vsprintf extension %pM for a mac address in one instance.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoforcedeth: Separate vendor specific initializations into functions
Joe Perches [Mon, 29 Nov 2010 07:41:59 +0000 (07:41 +0000)]
forcedeth: Separate vendor specific initializations into functions

Neaten the phy_init function by adding and calling vendor
specific functions.

object size is reduced by ~1kb:

$ size drivers/net/forcedeth.o.*
   text    data     bss     dec     hex filename
  83475    1848   19304  104627   198b3 drivers/net/forcedeth.o.new
  84459    1848   19544  105851   19d7b drivers/net/forcedeth.o.old

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoforcedeth: Add function init_realtek_8211b
Joe Perches [Mon, 29 Nov 2010 07:41:58 +0000 (07:41 +0000)]
forcedeth: Add function init_realtek_8211b

Deduplicate the code use for the init/reset of this device.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoforcedeth: Convert pr_<level> to netdev_<level>
Joe Perches [Mon, 29 Nov 2010 07:41:57 +0000 (07:41 +0000)]
forcedeth: Convert pr_<level> to netdev_<level>

Use netdev_<level> when a struct net_device * is available.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoforcedeth: Use pr_fmt and pr_<level>
Joe Perches [Mon, 29 Nov 2010 07:41:56 +0000 (07:41 +0000)]
forcedeth: Use pr_fmt and pr_<level>

Convert printks to pr_<level>.
Remove "forcedeth: " from some calls as it's now added by pr_fmt.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoforcedeth: Convert remaining dprintk to netdev_dbg
Joe Perches [Mon, 29 Nov 2010 07:41:55 +0000 (07:41 +0000)]
forcedeth: Convert remaining dprintk to netdev_dbg

The remaining dprintk uses are emitted as KERN_INFO.
Change these dprintk uses to netdev_dbg.
Remove the now unused dprintk macros.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoforcedeth: Use print_hex_dump
Joe Perches [Mon, 29 Nov 2010 07:41:54 +0000 (07:41 +0000)]
forcedeth: Use print_hex_dump

Use the standard code to emit hex dumps.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoforcedeth: convert dprintk(KERN_DEBUG to netdev_dbg
Joe Perches [Mon, 29 Nov 2010 07:41:53 +0000 (07:41 +0000)]
forcedeth: convert dprintk(KERN_DEBUG to netdev_dbg

Use the more standard macro to preface netdev->name.
Fix casting on resource use.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoforcedeth: Change reg_delay arguments and use
Joe Perches [Mon, 29 Nov 2010 07:41:52 +0000 (07:41 +0000)]
forcedeth: Change reg_delay arguments and use

Move the printk out of reg_delay and make
the callers emit a message on error.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoMerge branch 'for-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/linville...
David S. Miller [Mon, 29 Nov 2010 19:19:09 +0000 (11:19 -0800)]
Merge branch 'for-davem' of git://git./linux/kernel/git/linville/wireless-next-2.6

14 years agoxps: add __rcu annotations
Eric Dumazet [Sun, 28 Nov 2010 21:43:02 +0000 (21:43 +0000)]
xps: add __rcu annotations

Avoid sparse warnings : add __rcu annotations and use
rcu_dereference_protected() where necessary.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Tom Herbert <therbert@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoxps: NUMA allocations for per cpu data
Eric Dumazet [Sun, 28 Nov 2010 05:43:24 +0000 (05:43 +0000)]
xps: NUMA allocations for per cpu data

store_xps_map() allocates maps that are used by single cpu, it makes
sense to use NUMA allocations.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Tom Herbert <therbert@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agosctp: kill unused macros in head file
Shan Wei [Mon, 29 Nov 2010 00:14:58 +0000 (00:14 +0000)]
sctp: kill unused macros in head file

1. SCTP_CMD_NUM_VERBS,SCTP_CMD_MAX
These two macros have never been used for several years since v2.6.12-rc2.

2.sctp_port_rover,sctp_port_alloc_lock
The commit 063930 abandoned global variables of port_rover and port_alloc_lock,
but still keep two macros to refer to them.
So, remove them now.

commit 06393009000779b00a558fd2f280882cc7dc2008
Author: Stephen Hemminger <shemminger@linux-foundation.org>
Date:   Wed Oct 10 17:30:18 2007 -0700

    [SCTP]: port randomization

Signed-off-by: Shan Wei <shanwei@cn.fujitsu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agovmxnet3: fix compilation when RSS is disabled
Scott J. Goldman [Sat, 27 Nov 2010 10:33:55 +0000 (10:33 +0000)]
vmxnet3: fix compilation when RSS is disabled

If RSS is disabled, we can ifdef out some RSS specific code. This fixes
the compile error found by Randy Dunlap.

Signed-off-by: Scott J. Goldman <scottjg@vmware.com>
Reviewed-by: Bhavesh Davda <bhavesh@vmware.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoxps: Add CONFIG_XPS
Tom Herbert [Fri, 26 Nov 2010 08:36:09 +0000 (08:36 +0000)]
xps: Add CONFIG_XPS

This patch adds XPS_CONFIG option to enable and disable XPS.  This is
done in the same manner as RPS_CONFIG.  This is also fixes build
failure in XPS code when SMP is not enabled.

Signed-off-by: Tom Herbert <therbert@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoqeth: l3 fix len in tso hdr
Frank Blaschka [Fri, 26 Nov 2010 02:41:20 +0000 (02:41 +0000)]
qeth: l3 fix len in tso hdr

The tso hdr is longer then the regular l3 hdr. Fix the calculation
of the total len by accounting the size of the tso hdr.

Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoqeth: enable interface setup if LAN is offline
Ursula Braun [Fri, 26 Nov 2010 02:41:19 +0000 (02:41 +0000)]
qeth: enable interface setup if LAN is offline

Device initialization of a qeth device contains a STARTLAN step.
This step may fail, if cable is not yet plugged in. The qeth device
stays in state HARDSETUP until cable is plugged in. This prevents
further preparational initialization steps of the qeth device and
its network interface. This patch makes sure initialization of qeth
device continues, even though cable is not yet plugged in.
Once carrier is available, qeth is notified, triggers a recovery
which results in a working network interface.

Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com>
Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agodrivers/s390/net: Remove unnecessary semicolons
Joe Perches [Fri, 26 Nov 2010 02:41:18 +0000 (02:41 +0000)]
drivers/s390/net: Remove unnecessary semicolons

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoqeth lcs: convert mc rwlock to RCU
Sachin Sant [Fri, 26 Nov 2010 02:41:17 +0000 (02:41 +0000)]
qeth lcs: convert mc rwlock to RCU

Commit 1d7138de878d1d4210727c1200193e69596f93b3
igmp: RCU conversion of in_dev->mc_list

converted rwlock to RCU.

Update the s390 network drivers(qeth & lcs) code to adapt to this change.
V2 : Changes based on suggestions given by Eric Dumazet

Signed-off-by: Sachin Sant <sachinp@in.ibm.com>
Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com>
Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agostmmac: fix stmmac_resume removing not yet used shutdown flag
Giuseppe Cavallaro [Mon, 29 Nov 2010 02:10:53 +0000 (18:10 -0800)]
stmmac: fix stmmac_resume removing not yet used shutdown flag

The commit to convert to use the dev_pm_ops struct
introduces a bug. The shutdown flag is not yet used
because the hibernation on memory is done by using
the freeze callback.
Thanks to Vlad for having reported it.

Reported-by: Vlad Lungu <vlad.lungu@windriver.com>
Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoforcedeth: use usleep_range not msleep for small sleeps
Szymon Janc [Sat, 27 Nov 2010 08:39:48 +0000 (08:39 +0000)]
forcedeth: use usleep_range not msleep for small sleeps

Signed-off-by: Szymon Janc <szymon@janc.net.pl>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoforcedeth: do not use assignment in if conditions
Szymon Janc [Sat, 27 Nov 2010 08:39:46 +0000 (08:39 +0000)]
forcedeth: do not use assignment in if conditions

Signed-off-by: Szymon Janc <szymon@janc.net.pl>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoforcedeth: include <linux/io.h> and <linux/uaccess.h> instead of <asm/io.h> and ...
Szymon Janc [Sat, 27 Nov 2010 08:39:45 +0000 (08:39 +0000)]
forcedeth: include <linux/io.h> and <linux/uaccess.h> instead of <asm/io.h> and <asm/uaccess.h> as suggested by checkpatch

Signed-off-by: Szymon Janc <szymon@janc.net.pl>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoforcedeth: remove unnecessary checks before kfree
Szymon Janc [Sat, 27 Nov 2010 08:39:44 +0000 (08:39 +0000)]
forcedeth: remove unnecessary checks before kfree

Signed-off-by: Szymon Janc <szymon@janc.net.pl>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agoforcedeth: fix multiple code style issues
Szymon Janc [Sat, 27 Nov 2010 08:39:43 +0000 (08:39 +0000)]
forcedeth: fix multiple code style issues

Signed-off-by: Szymon Janc <szymon@janc.net.pl>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 years agozd1211rw: document need for kmalloc cast
Joe Perches [Sun, 28 Nov 2010 00:02:59 +0000 (00:02 +0000)]
zd1211rw: document need for kmalloc cast

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>