firefly-linux-kernel-4.4.55.git
11 years agoMerge branch 'for-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/bwh/sfc...
David S. Miller [Tue, 12 Mar 2013 09:14:44 +0000 (05:14 -0400)]
Merge branch 'for-davem' of git://git./linux/kernel/git/bwh/sfc-next

Ben Hutchings says:

====================
1. Merge sfc changes (only) accepted for 3.9.

2. PTP improvements from Laurence Evans.

3. Overhaul of RX buffer management:
- Always allocate pages, and enable scattering where possible
- Fit as many buffers as will fit into a page, rather than limiting to 2
- Introduce recycle rings to reduce the need for IOMMU mapping and
  unmapping

4. PCI error recovery (AER and EEH) implementation.

5. Fix a bug in RX filter replacement.

6. Fix configuration with 1 RX queue in the PF and multiple RX queues in
VFs.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoflow_dissector: support L2 GRE
Michael Dalton [Mon, 11 Mar 2013 06:52:28 +0000 (06:52 +0000)]
flow_dissector: support L2 GRE

Add support for L2 GRE tunnels, so that RPS can be more effective.

Signed-off-by: Michael Dalton <mwdalton@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agonet: can: af_can.c: Fix checkpatch warnings
Valentin Ilie [Sun, 10 Mar 2013 11:15:13 +0000 (11:15 +0000)]
net: can: af_can.c: Fix checkpatch warnings

Replace printk(KERN_ERR with pr_err
Add space before {
Removed OOM messages

Signed-off-by: Valentin Ilie <valentin.ilie@gmail.com>
Acked-by: Oliver Hartkopp <socketcan@hartkopp.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoRevert "eicon: Fixed checkpatch warning"
David S. Miller [Sun, 10 Mar 2013 21:48:26 +0000 (17:48 -0400)]
Revert "eicon: Fixed checkpatch warning"

This reverts commit e41eef8f317a4cfe43ec4de2527703a2e6f16087.

It breaks the build, this symbol is refernced
by debugging macros in diddfunc.c

Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agotcp: Remove unused tw_cookie_values from tcp_timewait_sock
Christoph Paasch [Sun, 10 Mar 2013 05:18:39 +0000 (05:18 +0000)]
tcp: Remove unused tw_cookie_values from tcp_timewait_sock

tw_cookie_values is never used in the TCP-stack.

It was added by 435cf559f (TCPCT part 1d: define TCP cookie option,
extend existing struct's), but already at that time it was not used at
all, nor mentioned in the commit-message.

Signed-off-by: Christoph Paasch <christoph.paasch@uclouvain.be>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agobcm63xx_enet: properly prepare/unprepare clocks before/after usage
Jonas Gorski [Sun, 10 Mar 2013 03:57:49 +0000 (03:57 +0000)]
bcm63xx_enet: properly prepare/unprepare clocks before/after usage

Use clk_prepare_enable/disable_unprepare calls in preparation for
switching to the generic clock framework.

Signed-off-by: Jonas Gorski <jogo@openwrt.org>
Acked-by: Kevin Cernekee <cernekee@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agobcm63xx_enet: use managed memory allocations
Jonas Gorski [Sun, 10 Mar 2013 03:57:48 +0000 (03:57 +0000)]
bcm63xx_enet: use managed memory allocations

Signed-off-by: Jonas Gorski <jogo@openwrt.org>
Acked-by: Kevin Cernekee <cernekee@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agobcm63xx_enet: use managed io memory allocations
Jonas Gorski [Sun, 10 Mar 2013 03:57:47 +0000 (03:57 +0000)]
bcm63xx_enet: use managed io memory allocations

Signed-off-by: Jonas Gorski <jogo@openwrt.org>
Acked-by: Kevin Cernekee <cernekee@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoeicon: Fixed checkpatch warning
Andreea Hodea [Sun, 10 Mar 2013 02:34:36 +0000 (02:34 +0000)]
eicon: Fixed checkpatch warning

drivers/isdn/hardware/eicon/diva_didd.c:32:6: warning: symbol
'DRIVERRELEASE_DIDD' was not declared. Should it be static?

Signed-off-by: Andreea Hodea <hodea_andreea@yahoo.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoipv6: introduce ip6tunnel_xmit() helper
Cong Wang [Sat, 9 Mar 2013 23:00:39 +0000 (23:00 +0000)]
ipv6: introduce ip6tunnel_xmit() helper

Similar to iptunnel_xmit(), group these operations into a
helper function.

This by the way fixes the missing u64_stats_update_begin()
and u64_stats_update_end() for 32 bit arch.

Cc: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Pravin B Shelar <pshelar@nicira.com>
Cc: "David S. Miller" <davem@davemloft.net>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoipv6: remove superfluous nla_data() NULL pointer checks
Mathias Krause [Sat, 9 Mar 2013 05:57:00 +0000 (05:57 +0000)]
ipv6: remove superfluous nla_data() NULL pointer checks

nla_data() cannot return NULL, so these NULL pointer checks are
superfluous.

Signed-off-by: Mathias Krause <minipli@googlemail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agotunnel: use iptunnel_xmit() again
Cong Wang [Sat, 9 Mar 2013 16:38:39 +0000 (16:38 +0000)]
tunnel: use iptunnel_xmit() again

With recent patches from Pravin, most tunnels can't use iptunnel_xmit()
any more, due to ip_select_ident() and skb->ip_summed. But we can just
move these operations out of iptunnel_xmit(), so that tunnels can
use it again.

This by the way fixes a bug in vxlan (missing nf_reset()) for net-next.

Cc: Pravin B Shelar <pshelar@nicira.com>
Cc: Stephen Hemminger <stephen@networkplumber.org>
Cc: "David S. Miller" <davem@davemloft.net>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoipip: capture inner headers during encapsulation
Pravin B Shelar [Fri, 8 Mar 2013 15:12:52 +0000 (15:12 +0000)]
ipip: capture inner headers during encapsulation

Allow IPIP to make use of tx-checksum offloading.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoipip: Use tunnel_ip_select_ident() for tunnel IP-Identification.
Pravin B Shelar [Fri, 8 Mar 2013 15:12:45 +0000 (15:12 +0000)]
ipip: Use tunnel_ip_select_ident() for tunnel IP-Identification.

tunnel_ip_select_ident() is more efficient when generating ip-header
id given inner packet is of ipv4 type.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agodrivers:net: Remove unnecessary OOM messages after netdev_alloc_skb
Joe Perches [Fri, 8 Mar 2013 15:03:25 +0000 (15:03 +0000)]
drivers:net: Remove unnecessary OOM messages after netdev_alloc_skb

Emitting netdev_alloc_skb and netdev_alloc_skb_ip_align OOM
messages is unnecessary as there is already a dump_stack
after allocation failures.

Other trivial changes around these removals:

Convert a few comparisons of pointer to 0 to !pointer.
Change flow to remove unnecessary label.
Remove now unused variable.
Hoist assignment from if.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoqlcnic: Bump up the version to 5.1.36
Shahed Shaikh [Fri, 8 Mar 2013 09:53:53 +0000 (09:53 +0000)]
qlcnic: Bump up the version to 5.1.36

Signed-off-by: Shahed Shaikh <shahed.shaikh@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoqlcnic: Fix ethtool statistics collection
Shahed Shaikh [Fri, 8 Mar 2013 09:53:52 +0000 (09:53 +0000)]
qlcnic: Fix ethtool statistics collection

o Properly fill statistics data into buffer.
  Update buffer pointer properly after filling statistics data into buffer.

Signed-off-by: Shahed Shaikh <shahed.shaikh@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoqlcnic: Fix ethtool statistics for 82xx adapter
Shahed Shaikh [Fri, 8 Mar 2013 09:53:51 +0000 (09:53 +0000)]
qlcnic: Fix ethtool statistics for 82xx adapter

o Fix miscalculation of statistics length

Signed-off-by: Shahed Shaikh <shahed.shaikh@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoqlcnic: Enable LED test support for 83xx adapter
Himanshu Madhani [Fri, 8 Mar 2013 09:53:50 +0000 (09:53 +0000)]
qlcnic: Enable LED test support for 83xx adapter

o Add support for LED test on 83xx series adapters

Signed-off-by: Himanshu Madhani <himanshu.madhani@qlogic.com>
Signed-off-by: Shahed Shaikh <shahed.shaikh@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoqlcnic: Fix endian issues in 83xx driver
Shahed Shaikh [Fri, 8 Mar 2013 09:53:49 +0000 (09:53 +0000)]
qlcnic: Fix endian issues in 83xx driver

o Split mailbox structure elements on boundary of adapter
  register size i.e. 32bit.
o Shuffle the position of structure elements based on CPU endianness.

Signed-off-by: Shahed Shaikh <shahed.shaikh@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agodcb: fix sparse warnings
stephen hemminger [Fri, 8 Mar 2013 09:07:44 +0000 (09:07 +0000)]
dcb: fix sparse warnings

Add header with function definitions to quiet warnings and avoid future errors.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoteam: make local function static
stephen hemminger [Fri, 8 Mar 2013 09:07:43 +0000 (09:07 +0000)]
team: make local function static

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agophy: vitesse make vsc824x_add_skew static
stephen hemminger [Fri, 8 Mar 2013 09:07:42 +0000 (09:07 +0000)]
phy: vitesse make vsc824x_add_skew static

Function is only used in this file, should be static and not
an exported symbol.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoSupject: phy: make local function static
stephen hemminger [Fri, 8 Mar 2013 09:07:41 +0000 (09:07 +0000)]
Supject: phy: make local function static

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agobna: fix declaration mismatch
stephen hemminger [Fri, 8 Mar 2013 09:07:40 +0000 (09:07 +0000)]
bna: fix declaration mismatch

The function is declared to take u32 but definition uses enum.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Rasesh Mody <rmody@brocade.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoVXLAN: Use UDP Tunnel segmention.
Pravin B Shelar [Thu, 7 Mar 2013 13:22:36 +0000 (13:22 +0000)]
VXLAN: Use UDP Tunnel segmention.

Enable TSO for VXLAN devices and use UDP_TUNNEL to offload vxlan
segmentation.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agotunneling: Add generic Tunnel segmentation.
Pravin B Shelar [Thu, 7 Mar 2013 13:21:51 +0000 (13:21 +0000)]
tunneling: Add generic Tunnel segmentation.

Adds generic tunneling offloading support for IPv4-UDP based
tunnels.
GSO type is added to request this offload for a skb.
netdev feature NETIF_F_UDP_TUNNEL is added for hardware offloaded
udp-tunnel support. Currently no device supports this feature,
software offload is used.

This can be used by tunneling protocols like VXLAN.

CC: Jesse Gross <jesse@nicira.com>
Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agotunneling: Capture inner mac header during encapsulation.
Pravin B Shelar [Thu, 7 Mar 2013 13:21:46 +0000 (13:21 +0000)]
tunneling: Capture inner mac header during encapsulation.

This patch adds inner mac header. This will be used in next patch
to find tunner header length. Header len is required to copy tunnel
header to each gso segment.
This patch does not change any functionality.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agonet: Add skb_headers_offset_update helper function.
Pravin B Shelar [Thu, 7 Mar 2013 13:21:40 +0000 (13:21 +0000)]
net: Add skb_headers_offset_update helper function.

This function will be used in next VXLAN_GSO patch. This patch does
not change any functionality.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agotunnel: Inherit NETIF_F_SG for hw_enc_features.
Pravin B Shelar [Thu, 7 Mar 2013 09:28:08 +0000 (09:28 +0000)]
tunnel: Inherit NETIF_F_SG for hw_enc_features.

Inherit scatergather feature for tunnel devices to avoid
copy for TSO packets of tunneling device like GRE.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agonet: Kill link between CSUM and SG features.
Pravin B Shelar [Thu, 7 Mar 2013 09:28:01 +0000 (09:28 +0000)]
net: Kill link between CSUM and SG features.

Earlier SG was unset if CSUM was not available for given device to
force skb copy to avoid sending inconsistent csum.
Commit c9af6db4c11c (net: Fix possible wrong checksum generation)
added explicit flag to force copy to fix this issue.  Therefore
there is no need to link SG and CSUM, following patch kills this
link between there two features.

This patch is also required following patch in series.

Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoipv6: report sin6_scope_id if sockopt RECVORIGDSTADDR is set
Hannes Frederic Sowa [Fri, 8 Mar 2013 02:07:26 +0000 (02:07 +0000)]
ipv6: report sin6_scope_id if sockopt RECVORIGDSTADDR is set

v4:
a) unchanged

Cc: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Acked-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Acked-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoipv6: use newly introduced __ipv6_addr_needs_scope_id and ipv6_iface_scope_id
Hannes Frederic Sowa [Fri, 8 Mar 2013 02:07:19 +0000 (02:07 +0000)]
ipv6: use newly introduced __ipv6_addr_needs_scope_id and ipv6_iface_scope_id

This patch requires multicast interface-scoped addresses to supply a
sin6_scope_id. Because the sin6_scope_id is now also correctly used
in case of interface-scoped multicast traffic this enables one to use
interface scoped addresses over interfaces which are not targeted by the
default multicast route (the route has to be put there manually, though).

getsockname() and getpeername() now return the correct sin6_scope_id in
case of interface-local mc addresses.

v2:
a) rebased ontop of patch 1/4 (now uses ipv6_addr_props)

v3:
a) reverted changes for ipv6_addr_props

v4:
a) unchanged

Cc: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Acked-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Acked-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>dave
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoipv6: introdcue __ipv6_addr_needs_scope_id and ipv6_iface_scope_id helper functions
Hannes Frederic Sowa [Fri, 8 Mar 2013 02:07:16 +0000 (02:07 +0000)]
ipv6: introdcue __ipv6_addr_needs_scope_id and ipv6_iface_scope_id helper functions

__ipv6_addr_needs_scope_id checks if an ipv6 address needs to supply
a 'sin6_scope_id != 0'. 'sin6_scope_id != 0' was enforced in case
of link-local addresses. To support interface-local multicast these
checks had to be enhanced and are now consolidated into these new helper
functions.

v2:
a) migrated to struct ipv6_addr_props

v3:
a) reverted changes for ipv6_addr_props
b) test for address type instead of comparing scope

v4:
a) unchanged

Suggested-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Cc: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Acked-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Acked-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoipv6: ndisc: remove redundant check for !dev->addr_len
Thomas Graf [Fri, 8 Mar 2013 01:03:46 +0000 (01:03 +0000)]
ipv6: ndisc: remove redundant check for !dev->addr_len

send_sllao is already initialized with the value of dev->addr_len

Cc: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>
Signed-off-by: Thomas Graf <tgraf@suug.ch>
Acked-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoMerge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net...
David S. Miller [Fri, 8 Mar 2013 17:25:03 +0000 (12:25 -0500)]
Merge branch 'master' of git://git./linux/kernel/git/jkirsher/net-next

Jeff Kirsher says:

====================
This series contains updates to ixgbevf and e1000e.

Alex's ixgbevf patch is meant to address several race issues that become
possible because next_to_watch could possibly be set to a value that shows
that the descriptor is done when it is not.  In order to correct that we
instead make next_to_watch a pointer that is set to NULL during cleanup,
and set to the eop_desc after the descriptor rings have been written.

Stephen's ixgbevf patch makes the PCI id table a const and reformats the
table to match what the ixgbe driver does.

The remaining 13 patches from Bruce are cleanup patches for e1000e to
resolve checkpatch.pl warnings/errors, removing blank lines where
necessary and fix code formatting.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoVSOCK: Split vm_sockets.h into kernel/uapi
Andy King [Thu, 7 Mar 2013 05:26:13 +0000 (05:26 +0000)]
VSOCK: Split vm_sockets.h into kernel/uapi

Split the vSockets header into kernel and UAPI parts.  The former gets the bits
that used to be in __KERNEL__ guards, while the latter gets everything that is
user-visible.  Tested by compiling vsock (+transport) and a simple user-mode
vSockets application.

Reported-by: David Howells <dhowells@redhat.com>
Acked-by: Dmitry Torokhov <dtor@vmware.com>
Signed-off-by: Andy King <acking@vmware.com>
Acked-by: David Howells <dhowells@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoe1000e: cleanup - move defines to appropriate header file
Bruce Allan [Wed, 20 Feb 2013 04:06:43 +0000 (04:06 +0000)]
e1000e: cleanup - move defines to appropriate header file

Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
11 years agoe1000e: cleanup format of struct e1000_opt_list struct
Bruce Allan [Wed, 20 Feb 2013 04:06:37 +0000 (04:06 +0000)]
e1000e: cleanup format of struct e1000_opt_list struct

Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
11 years agoe1000e: cleanup USLEEP_RANGE checkpatch checks
Bruce Allan [Wed, 20 Feb 2013 04:06:32 +0000 (04:06 +0000)]
e1000e: cleanup USLEEP_RANGE checkpatch checks

Resolve strict checkpatch USLEEP_RANGE checks by converting delays and
sleeps as described in ./Documentation/timers/timers-howto.txt.  Three
other violations of the text have also been fixed.

CHECK:USLEEP_RANGE: usleep_range is preferred over udelay; see
Documentation/timers/timers-howto.txt

Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
11 years agoe1000e: cleanup unnecessary line breaks
Bruce Allan [Wed, 20 Feb 2013 04:06:27 +0000 (04:06 +0000)]
e1000e: cleanup unnecessary line breaks

Cuddle broken lines where appropriate.

Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
11 years agoe1000e: cleanup formatting of static structs
Bruce Allan [Wed, 20 Feb 2013 04:06:22 +0000 (04:06 +0000)]
e1000e: cleanup formatting of static structs

Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
11 years agoe1000e: cleanup unusually placed comments
Bruce Allan [Wed, 20 Feb 2013 04:06:16 +0000 (04:06 +0000)]
e1000e: cleanup unusually placed comments

Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
11 years agoe1000e: cleanup (add/remove) blank lines where appropriate
Bruce Allan [Wed, 20 Feb 2013 04:06:11 +0000 (04:06 +0000)]
e1000e: cleanup (add/remove) blank lines where appropriate

Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
11 years agoe1000e: cleanup SPACING checkpatch checks
Bruce Allan [Wed, 20 Feb 2013 04:06:06 +0000 (04:06 +0000)]
e1000e: cleanup SPACING checkpatch checks

CHECK:SPACING: No space is necessary after a cast
CHECK:SPACING: space prohibited before semicolon

Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
11 years agoe1000e: cleanup PARENTHESIS_ALIGNMENT checkpatch checks
Bruce Allan [Wed, 20 Feb 2013 04:06:01 +0000 (04:06 +0000)]
e1000e: cleanup PARENTHESIS_ALIGNMENT checkpatch checks

CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis

Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
11 years agoe1000e: cleanup LEADING_SPACE checkpatch warnings
Bruce Allan [Wed, 20 Feb 2013 04:05:55 +0000 (04:05 +0000)]
e1000e: cleanup LEADING_SPACE checkpatch warnings

WARNING:LEADING_SPACE: please, no spaces at the start of a line

Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
11 years agoe1000e: cleanup LONG_LINE checkpatch warnings
Bruce Allan [Wed, 20 Feb 2013 04:05:50 +0000 (04:05 +0000)]
e1000e: cleanup LONG_LINE checkpatch warnings

WARNING:LONG_LINE: line over 80 characters

Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
11 years agoe1000e: cleanup SPACING checkpatch errors and warnings
Bruce Allan [Wed, 20 Feb 2013 04:05:45 +0000 (04:05 +0000)]
e1000e: cleanup SPACING checkpatch errors and warnings

ERROR:SPACING: spaces prohibited around that ':' (ctx:WxV)
ERROR:SPACING: need consistent spacing around '-' (ctx:WxV)
ERROR:SPACING: space required after that ',' (ctx:VxV)
ERROR:SPACING: spaces required around that '=' (ctx:VxV)
WARNING:SPACING: missing space after enum definition

and some similar spacing issues not reported by checkpatch.

Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
11 years agoe1000e: cleanup CODE_INDENT checkpatch errors
Bruce Allan [Wed, 20 Feb 2013 04:05:39 +0000 (04:05 +0000)]
e1000e: cleanup CODE_INDENT checkpatch errors

ERROR:CODE_INDENT: code indent should use tabs where possible

Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
11 years agoixgbevf: use PCI_DEVICE_TABLE macro
Stephen Hemminger [Wed, 6 Feb 2013 02:37:04 +0000 (02:37 +0000)]
ixgbevf: use PCI_DEVICE_TABLE macro

Makes PCI id table const. Reformat to match table in ixgbe_main.c

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Greg Rose <gregory.v.rose@intel.com>
Tested-by: Sibai Li <sibai.li@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
11 years agoixgbevf: Make next_to_watch a pointer and adjust memory barriers to avoid races
Alexander Duyck [Thu, 31 Jan 2013 07:43:22 +0000 (07:43 +0000)]
ixgbevf: Make next_to_watch a pointer and adjust memory barriers to avoid races

This change is meant to address several race issues that become possible
because next_to_watch could possibly be set to a value that shows that the
descriptor is done when it is not.  In order to correct that we instead make
next_to_watch a pointer that is set to NULL during cleanup, and set to the
eop_desc after the descriptor rings have been written.

To enforce proper ordering the next_to_watch pointer is not set until after
a wmb writing the values to the last descriptor in a transmit.  In order to
guarantee that the descriptor is not read until after the eop_desc we use the
read_barrier_depends which is only really necessary on the alpha architecture.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Acked-by: Greg Rose <gregory.v.rose@intel.com>
Tested-by: Sibai Li <sibai.li@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
11 years agoipv6 flowlabel: add __rcu annotations
Eric Dumazet [Thu, 7 Mar 2013 04:20:32 +0000 (04:20 +0000)]
ipv6 flowlabel: add __rcu annotations

Commit 18367681a10b (ipv6 flowlabel: Convert np->ipv6_fl_list to RCU.)
omitted proper __rcu annotations.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agobridge: use ipv4_is_local_multicast() helper
Amerigo Wang [Thu, 7 Mar 2013 02:32:26 +0000 (02:32 +0000)]
bridge: use ipv4_is_local_multicast() helper

Cc: Stephen Hemminger <stephen@networkplumber.org>
Cc: "David S. Miller" <davem@davemloft.net>
Signed-off-by: Cong Wang <amwang@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agobgmac: register MII bus
Rafał Miłecki [Thu, 7 Mar 2013 01:53:28 +0000 (01:53 +0000)]
bgmac: register MII bus

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agobe2net: Update copyright year
Vasundhara Volam [Wed, 6 Mar 2013 20:05:05 +0000 (20:05 +0000)]
be2net: Update copyright year

Signed-off-by: Vasundhara Volam <vasundhara.volam@emulex.com>
Signed-off-by: Sarveshwar Bandi <sarveshwar.bandi@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoCAIF: fix indentation for function arguments
Silviu-Mihai Popescu [Wed, 6 Mar 2013 19:39:57 +0000 (19:39 +0000)]
CAIF: fix indentation for function arguments

This lines up function arguments on second and subsequent lines at the
first column after the openning parenthesis of the first line.

Signed-off-by: Silviu-Mihai Popescu <silviupopescu1990@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agotcp: uninline tcp_prequeue()
Eric Dumazet [Wed, 6 Mar 2013 12:58:01 +0000 (12:58 +0000)]
tcp: uninline tcp_prequeue()

tcp_prequeue() became too big to be inlined.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoMerge branch 'tg3'
David S. Miller [Thu, 7 Mar 2013 20:31:39 +0000 (15:31 -0500)]
Merge branch 'tg3'

Nithin Nayak says:

====================
For the 57766 devices with no NVRAM, there is not enough space for the complete
boot code with EEE support. On these devices, the tg3 driver has to download
a service patch firmware to the scratchpad for the boot code to execute. This
patchset adds support to do the above.

A major portion of this patchset is refactoring the existing firmware download
section to allow a cleaner merge of the 57766 download. The 57766 firmware
differs from previous firmware in that it's not written to a contiguous area in
memory. It consists of multiple fragments to be written to different locations.
The patchset makes an attempt to make the new firmware format to be an
extension of the existing format.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agotg3: Download 57766 EEE service patch firmware
Nithin Sujir [Wed, 6 Mar 2013 17:02:34 +0000 (17:02 +0000)]
tg3: Download 57766 EEE service patch firmware

This patch downloads the EEE service patch firmware and enables the necessary
EEE flags.

Reviewed-by: Benjamin Li <benli@broadcom.com>
Signed-off-by: Nithin Nayak Sujir <nsujir@broadcom.com>
Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agotg3: Enhance firmware download code to support fragmented firmware
Nithin Sujir [Wed, 6 Mar 2013 17:02:33 +0000 (17:02 +0000)]
tg3: Enhance firmware download code to support fragmented firmware

This lays the ground work to download the 57766 fragmented firmware. We
loop until we've written data equal to tp->fw->size minus headers.

Reviewed-by: Benjamin Li <benli@broadcom.com>
Signed-off-by: Nithin Nayak Sujir <nsujir@broadcom.com>
Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agotg3: Cleanup firmware parsing code
Nithin Sujir [Wed, 6 Mar 2013 17:02:32 +0000 (17:02 +0000)]
tg3: Cleanup firmware parsing code

The current firmware header parsing is complicated due to interpreting it as a
u32 array and accessing header members via array offsets. Add tg3_firmware_hdr
structure to access the firmware fields instead of hardcoding offsets. The same
header format will be used for individual firmware fragments in the 57766.

The fw_hdr and tg3 structures have all the information required for
loading the fw. Remove the redundant fw_info structure and pass fw_hdr
instead.

Reviewed-by: Benjamin Li <benli@broadcom.com>
Signed-off-by: Nithin Nayak Sujir <nsujir@broadcom.com>
Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agotg3: Refactor the 2nd type of cpu pause
Nithin Sujir [Wed, 6 Mar 2013 17:02:31 +0000 (17:02 +0000)]
tg3: Refactor the 2nd type of cpu pause

For completeness and consistency, add common function
tg3_pause_cpu_and_set_pc(). This is only for existing fw and not used for the
57766.

Reviewed-by: Benjamin Li <benli@broadcom.com>
Signed-off-by: Nithin Nayak Sujir <nsujir@broadcom.com>
Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agotg3: Refactor cpu pause/resume code
Nithin Sujir [Wed, 6 Mar 2013 17:02:30 +0000 (17:02 +0000)]
tg3: Refactor cpu pause/resume code

The 57766 rxcpu needs to be paused/resumed when we download the firmware just
like we do for existing firmware. Refactor the pause/resume code to be
reusable.

This patch also renames the "offset" argument of tg3_halt_cpu to "cpu_base"
since that's what it really is.

Reviewed-by: Benjamin Li <benli@broadcom.com>
Signed-off-by: Nithin Nayak Sujir <nsujir@broadcom.com>
Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agotg3: Add new FW_TSO flag
Matt Carlson [Wed, 6 Mar 2013 17:02:29 +0000 (17:02 +0000)]
tg3: Add new FW_TSO flag

tg3 used the fw_needed member loosely as a synonym for firmware TSO. Now
that the 57766 needs firmware download support, fw_needed can no longer be
used like this. This patch creates a new FW_TSO flag and changes the
code to use it.

Also rearrange all the TSO flags together in the enum.

Reviewed-by: Benjamin Li <benli@broadcom.com>
Signed-off-by: Nithin Nayak Sujir <nsujir@broadcom.com>
Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoMerge branch 'fdb'
David S. Miller [Thu, 7 Mar 2013 20:29:54 +0000 (15:29 -0500)]
Merge branch 'fdb'

Vlad Yasevich says:

====================
This is a short series that now allows mac filter programming on any
card that support IFF_UNICAST_FLT by using the existing FDB interface.

Some existing drivers that had FDB functionality usually supported
it only in SR-IOV mode.  Since that's not always enabled, and
we want to take advantage of IFF_UNICAST_FLT support, these drivers
have been converted to call the default handler when not in SRIOV mode.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoqlcnic: Use generic fdb handler when driver options are not enabled.
Vlad Yasevich [Wed, 6 Mar 2013 15:39:45 +0000 (15:39 +0000)]
qlcnic: Use generic fdb handler when driver options are not enabled.

Allow qlcnic to use the generic fdb handler when the driver options
are not enabled.   Untill the driver is fully fixed, this allows
the use of the FDB interface with qlogic driver, but simply puts
the driver into promisc mode since the driver currently does not
support IFF_UNICAST_FLT.

CC: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
Acked-by: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
CC: Sony Chacko <sony.chacko@qlogic.com>
CC: linux-driver@qlogic.com
Signed-off-by: Vlad Yasevich <vyasevic@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agomlx4: Remove driver specific fdb handlers.
Vlad Yasevich [Wed, 6 Mar 2013 15:39:44 +0000 (15:39 +0000)]
mlx4: Remove driver specific fdb handlers.

Remove driver specific fdb hadlers since they are the same as
the default ones.

CC: Amir Vadai <amirv@mellanox.com>
CC: Yan Burman <yanb@mellanox.com>
Signed-off-by: Vlad Yasevich <vyasevic@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoixgbe: Make use of the default fdb handlers.
Vlad Yasevich [Wed, 6 Mar 2013 15:39:43 +0000 (15:39 +0000)]
ixgbe: Make use of the default fdb handlers.

For fdb_add, use the default handler in the non-SRIOV case.
For the other fdb handlers, just remove them and use the
default ones.

CC: John Fastabend <john.r.fastabend@intel.com>
Acked-By: John Fastabend <john.r.fastabend@intel.com>
CC: CC: Gregory Rose <gregory.v.rose@intel.com>
Signed-off-by: Vlad Yasevich <vyasevic@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agonet: generic fdb support for drivers without ndo_fdb_<op>
Vlad Yasevich [Wed, 6 Mar 2013 15:39:42 +0000 (15:39 +0000)]
net: generic fdb support for drivers without ndo_fdb_<op>

If the driver does not support the ndo_op use the generic
handler for it. This should work in the majority of cases.
Eventually the fdb_dflt_add call gets translated into a
__dev_set_rx_mode() call which should handle hardware
support for filtering via the IFF_UNICAST_FLT flag.

Namely IFF_UNICAST_FLT indicates if the hardware can do
unicast address filtering. If no support is available
the device is put into promisc mode.

Signed-off-by: Vlad Yasevich <vyasevic@redhat.com>
Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agosfc: allocate more RX buffers per page
Daniel Pieczko [Wed, 13 Feb 2013 10:54:41 +0000 (10:54 +0000)]
sfc: allocate more RX buffers per page

Allocating 2 buffers per page is insanely inefficient when MTU is 1500
and PAGE_SIZE is 64K (as it usually is on POWER).  Allocate as many as
we can fit, and choose the refill batch size at run-time so that we
still always use a whole page at once.

[bwh: Fix loop condition to allow for compound pages; rebase]
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
11 years agosfc: Replace efx_rx_is_last_buffer() with a flag
Ben Hutchings [Thu, 7 Mar 2013 16:31:17 +0000 (16:31 +0000)]
sfc: Replace efx_rx_is_last_buffer() with a flag

This condition is brittle and we have lots of flags to spare.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
11 years agosfc: reuse pages to avoid DMA mapping/unmapping costs
Daniel Pieczko [Wed, 13 Feb 2013 10:54:41 +0000 (10:54 +0000)]
sfc: reuse pages to avoid DMA mapping/unmapping costs

On POWER systems, DMA mapping/unmapping operations are very expensive.
These changes reduce these costs by trying to reuse DMA mapped pages.

After all the buffers associated with a page have been processed and
passed up, the page is placed into a ring (if there is room).  For
each page that is required for a refill operation, a page in the ring
is examined to determine if its page count has fallen to 1, ie. the
kernel has released its reference to these packets.  If this is the
case, the page can be immediately added back into the RX descriptor
ring, without having to re-map it for DMA.

If the kernel is still holding a reference to this page, it is removed
from the ring and unmapped for DMA.  Then a new page, which can
immediately be used by RX buffers in the descriptor ring, is allocated
and DMA mapped.

The time a page needs to spend in the recycle ring before the kernel
has released its page references is based on the number of buffers
that use this page.  As large pages can hold more RX buffers, the RX
recycle ring can be shorter.  This reduces memory usage on POWER
systems, while maintaining the performance gain achieved by recycling
pages, following the driver change to pack more than two RX buffers
into large pages.

When an IOMMU is not present, the recycle ring can be small to reduce
memory usage, since DMA mapping operations are inexpensive.

With a small recycle ring, attempting to refill the descriptor queue
with more buffers than the equivalent size of the recycle ring could
ultimately lead to memory leaks if page entries in the recycle ring
were overwritten.  To prevent this, the check to see if the recycle
ring is full is changed to check if the next entry to be written is
NULL.

[bwh: Combine and rebase several commits so this is complete
 before the following buffer-packing changes.  Remove module
 parameter.]
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
11 years agosfc: Enable RX DMA scattering where possible
Ben Hutchings [Tue, 29 Jan 2013 23:33:15 +0000 (23:33 +0000)]
sfc: Enable RX DMA scattering where possible

Enable RX DMA scattering iff an RX buffer large enough for the current
MTU will not fit into a single page and the NIC supports DMA
scattering for kernel-mode RX queues.

On Falcon and Siena, the RX_USR_BUF_SIZE field is used as the DMA
limit for both all RX queues with scatter enabled.  Set it to 1824,
matching what Onload uses now.

Maintain a statistic for frames truncated due to lack of descriptors
(rx_nodesc_trunc).  This is distinct from rx_frm_trunc which may be
incremented when scattering is disabled and implies an over-length
frame.

Whenever an MTU change causes scattering to be turned on or off,
update filters that point to the PF queues, but leave others
unchanged, as VF drivers assume scattering is off.

Add n_frags parameters to various functions, and make them iterate:
- efx_rx_packet()
- efx_recycle_rx_buffers()
- efx_rx_mk_skb()
- efx_rx_deliver()

Make efx_handle_rx_event() responsible for updating
efx_rx_queue::removed_count.

Change the RX pipeline state to a starting ring index and number of
fragments, and make __efx_rx_packet() responsible for clearing it.

Based on earlier versions by David Riddoch and Jon Cooper.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
11 years agosfc: Update RX buffer address together with length
Ben Hutchings [Tue, 29 Jan 2013 23:33:15 +0000 (23:33 +0000)]
sfc: Update RX buffer address together with length

Adjust rx_buf->page_offset when we eat the RX hash prefix.  Remove
efx_rx_buf_offset(), which is now redundant.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
11 years agosfc: Explicitly prefetch RX hash prefix, not just Ethernet heade
Ben Hutchings [Tue, 29 Jan 2013 23:33:15 +0000 (23:33 +0000)]
sfc: Explicitly prefetch RX hash prefix, not just Ethernet heade

Currently we prefetch from the Ethernet header, but we will also read
the hash prefix.  In practice they should be in the same cache line
and this won't hurt, but it is still pointless to add on the hash
prefix size.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
11 years agosfc: Replace efx_rx_buf_eh() with simpler efx_rx_buf_va()
Ben Hutchings [Tue, 29 Jan 2013 23:33:15 +0000 (23:33 +0000)]
sfc: Replace efx_rx_buf_eh() with simpler efx_rx_buf_va()

efx_rx_buf_va() returns the virtual address of the current start of
the buffer.  The callers must add the hash prefix size themselves.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
11 years agosfc: Wrap __efx_rx_packet() with efx_rx_flush_packet()
Ben Hutchings [Tue, 29 Jan 2013 23:33:14 +0000 (23:33 +0000)]
sfc: Wrap __efx_rx_packet() with efx_rx_flush_packet()

The pipeline mechanism will need to change a bit for scattered
packets.  Add a wrapper to insulate efx_process_channel() from this.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
11 years agosfc: Make RX queue descriptor counts unsigned for consistency
Ben Hutchings [Tue, 29 Jan 2013 23:33:14 +0000 (23:33 +0000)]
sfc: Make RX queue descriptor counts unsigned for consistency

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
11 years agosfc: Properly distinguish RX buffer and DMA lengths
Ben Hutchings [Tue, 29 Jan 2013 23:33:14 +0000 (23:33 +0000)]
sfc: Properly distinguish RX buffer and DMA lengths

Replace efx_nic::rx_buffer_len with efx_nic::rx_dma_len, the maximum
RX DMA length.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
11 years agosfc: Document current usage of efx_rx_buffer::len and efx_nic::rx_buffer_len
Ben Hutchings [Wed, 23 Jan 2013 21:52:13 +0000 (21:52 +0000)]
sfc: Document current usage of efx_rx_buffer::len and efx_nic::rx_buffer_len

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
11 years agosfc: Add AER and EEH support for Siena
Alexandre Rames [Mon, 14 Jan 2013 17:20:22 +0000 (17:20 +0000)]
sfc: Add AER and EEH support for Siena

The Linux side of EEH is triggered by MMIO reads, but this
driver's data path does not issue any MMIO reads (except in
legacy interrupt mode).  Therefore add a monitor function
to poll EEH periodically.

When preparing to reset the device based on our own error
detection, also poll EEH and defer to its recovery mechanism
if appropriate.

[bwh: Use a separate condition for the initial link poll; fix some
 style errors]
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
11 years agosfc: Disable RSS when using SR-IOV and only 1 RX queue on the PF
Ben Hutchings [Wed, 6 Mar 2013 19:39:20 +0000 (19:39 +0000)]
sfc: Disable RSS when using SR-IOV and only 1 RX queue on the PF

On Siena, VFs share RSS configuration with the PF.  We attempted to
support configurations where the PF only uses 1 RX queue and VFs use
multiple RX queues, by (1) setting up RSS for the number of RX queues
per VF (2) disabling RSS in the PF's RX default filters.

Unfortunately commit cd2d5b529cdb ('sfc: Add SR-IOV back-end support
for SFC9000 family') only included (1).  This is (2).

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
11 years agosfc: Fix replacement detection in efx_filter_insert_filter()
Ben Hutchings [Mon, 14 Jan 2013 21:23:17 +0000 (21:23 +0000)]
sfc: Fix replacement detection in efx_filter_insert_filter()

efx_filter_insert_filter() uses the first table entry in the hash chain
that either has the same match values or is empty.  This means that
replacement doesn't always work correctly:

1. Insert filter F1 with match values M1, hashing to H1, at first
   possible entry E1.
2. Insert filter F2 with match values M2, hashing to H1, at second
   possible entry E2.
3. Remove filter F1.
4. Insert filter F3 with match values M2, hashing to H1, at first
   possible entry E1.

F3 should have either replaced F2 or been rejected (depending on
priority and the replace_equal parameter).

Instead, search for both a matching filter that the inserted filter
would replace, and an available insertion point, up to the applicable
maximum search depths.  If we insert at lower depth than a replaced
filter, clear the replaced filter.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
11 years agosfc: Merge efx_filter_search() into efx_filter_insert()
Ben Hutchings [Mon, 14 Jan 2013 21:23:16 +0000 (21:23 +0000)]
sfc: Merge efx_filter_search() into efx_filter_insert()

efx_filter_search() is only called from efx_filter_insert(), and
neither function is very long.  The following bug fix requires a more
sophisticated search with a third result, which is going to be easier
to implement as part of the same function.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
11 years agosfc: Don't use efx_filter_{build,hash,increment}() for default MAC filters
Ben Hutchings [Mon, 14 Jan 2013 21:23:15 +0000 (21:23 +0000)]
sfc: Don't use efx_filter_{build,hash,increment}() for default MAC filters

These functions happen to work for default MAC filters: they generate
an initial index of 1/0 for unicast/multicast respectively and an
increment of 1 for either, so a search succeeds at depth 2.  But this
is a matter of luck rather than design, and it really won't work well
with the bug fix we're about to do.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
11 years agosfc: Remove redundant parameter to efx_filter_search()
Ben Hutchings [Mon, 14 Jan 2013 21:23:14 +0000 (21:23 +0000)]
sfc: Remove redundant parameter to efx_filter_search()

The 'for_insert' parameter is redundant since there are no longer
any other operations that need to search based on a filter spec.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
11 years agosfc: More sensible semantics for efx_filter_insert_filter() replace flag
Ben Hutchings [Mon, 14 Jan 2013 17:43:15 +0000 (17:43 +0000)]
sfc: More sensible semantics for efx_filter_insert_filter() replace flag

The 'replace' flag to efx_filter_insert_filter() controls whether the
new filter may replace *any* filter, and is checked even before
priority comparison.  But lower-priority filters should never
block insertion of higher-priority filters.

Change the priority checking so that lower-priority filters are
replaced regardless of the value of the flag, and rename the
flag to 'replace_equal'.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
11 years agosfc: Remove rx_alloc_method SKB
Alexandre Rames [Fri, 11 Jan 2013 12:26:21 +0000 (12:26 +0000)]
sfc: Remove rx_alloc_method SKB

[bwh: Remove more dead code, and make efx_ptp_rx() pull the data it
 needs into the header area.]
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
11 years agosfc: tidy up PTP synchronize function efx_ptp_process_times()
Laurence Evans [Mon, 11 Feb 2013 13:55:08 +0000 (13:55 +0000)]
sfc: tidy up PTP synchronize function efx_ptp_process_times()

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
11 years agosfc: PTP changes to support improved UUID filtering mode
Laurence Evans [Thu, 15 Nov 2012 10:56:07 +0000 (10:56 +0000)]
sfc: PTP changes to support improved UUID filtering mode

There is a long-standing problem with the packet-timestamp matching in
the driver. When a PTP packet is received by the MC, the FPGA
timestamps the packet and the MC sends the timestamp and 6 bytes of
the UUID to the driver. The driver then matches the timestamp against
received packets using the same 6 bytes of UUID.

The problem comes from the choice of which 6 bytes to use. The PTP
spec is slightly contradictory and misleading in one of the two places
where the UUIDs are discussed. From section 7.2.2.2 of the spec, a
PTPD2 UUID can be either a EUI-64 or a EUI-64 constructed from a
EUI-48. The typical ethernet based implementation uses a EUI-64
constructed from a EUI-48. This works by taking the first 3 bytes of
the MAC address of the NIC being used for PTP (the OUI), then
inserting 0xFF, 0xFE, then taking the last 3 bytes of the MAC address
giving
          MAC[0], MAC[1], MAC[2], 0xFF, 0xFE, MAC[3], MAC[4], MAC[5]
The current MC firmware and driver discard the first two bytes of this
UUID and packets are matched against timestamps using bytes 2 to 7 so
there is a small risk that in a deployment of Solarflare PTP NICs used
with other vendors NICs, that a PTP packet could be matched against
the wrong timestamp. This applies to all other organisations whose
third byte of the OUI is 0x53. It's a long list but I notice that it
includes Cisco.

The necessary modifications to use bytes 0-2 and 5-7 of the UUID to
match against are quite small but introduce incompatibility between
older version of the firmware and driver.

When PTP is enabled via SO_TIMESTAMPING specifying PTP V2, the driver
will try to enable PTP in the firmware using the enhanced mode
(above). If the firmware returns an error, the driver will enable PTP
in the firmware using the old mode.

[bwh: Fix some style errors; remove private ioctl bits]
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
11 years agosfc: Allow efx_channel_type::receive_skb() to reject a packet
Ben Hutchings [Tue, 5 Mar 2013 20:13:54 +0000 (20:13 +0000)]
sfc: Allow efx_channel_type::receive_skb() to reject a packet

Instead of having efx_ptp_rx() call netif_receive_skb() for an invalid
PTP packet, make it return false for rejected packets and have
efx_rx_deliver() pass them up.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
11 years agoMerge branch 'sfc-3.9' into master
Ben Hutchings [Thu, 7 Mar 2013 20:20:02 +0000 (20:20 +0000)]
Merge branch 'sfc-3.9' into master

11 years agohtb: add HTB_DIRECT_QLEN attribute
Eric Dumazet [Wed, 6 Mar 2013 06:49:21 +0000 (06:49 +0000)]
htb: add HTB_DIRECT_QLEN attribute

HTB uses an internal pfifo queue, which limit is not reported
to userland tools (tc), and value inherited from device tx_queue_len
at setup time.

Introduce TCA_HTB_DIRECT_QLEN attribute to allow finer control.

Remove two obsolete pr_err() calls as well.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agor6040: check MDIO register busy waiting result
Florian Fainelli [Wed, 6 Mar 2013 00:41:32 +0000 (00:41 +0000)]
r6040: check MDIO register busy waiting result

We are currently busy waiting for MDIO registers to complete their
operation but we did not propagate the result back to the caller.
Update r6040_phy_{read,write} to report the busy waiting result
accordingly.

Signed-off-by: Florian Fainelli <florian@openwrt.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agonetconf: add the handler to dump entries
Nicolas Dichtel [Tue, 5 Mar 2013 23:42:06 +0000 (23:42 +0000)]
netconf: add the handler to dump entries

It's useful to be able to get the initial state of all entries. The patch adds
the support for IPv4 and IPv6.

Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoteam: introduce random mode
Jiri Pirko [Wed, 6 Mar 2013 01:31:13 +0000 (01:31 +0000)]
team: introduce random mode

As suggested by Eric Dumazet, allow user to select mode which chooses
TX port randomly. Functionality should be more of less similar to
round-robin mode with even lower overhead.

Signed-off-by: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agoteam: introduce two default team_modeop functions and use them in modes
Jiri Pirko [Wed, 6 Mar 2013 01:31:12 +0000 (01:31 +0000)]
team: introduce two default team_modeop functions and use them in modes

No need to duplicate code for this.

Signed-off-by: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: David S. Miller <davem@davemloft.net>
11 years agosfc: Correct efx_rx_buffer::page_offset when EFX_PAGE_IP_ALIGN != 0
Ben Hutchings [Tue, 5 Mar 2013 17:49:39 +0000 (17:49 +0000)]
sfc: Correct efx_rx_buffer::page_offset when EFX_PAGE_IP_ALIGN != 0

RX DMA buffers start at an offset of EFX_PAGE_IP_ALIGN bytes from the
start of a cache line.  This offset obviously needs to be included in
the virtual address, but this was missed in commit b590ace09d51
('sfc: Fix efx_rx_buf_offset() in the presence of swiotlb') since
EFX_PAGE_IP_ALIGN is equal to 0 on both x86 and powerpc.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
11 years agosfc: Disable soft interrupt handling during efx_device_detach_sync()
Ben Hutchings [Tue, 5 Mar 2013 01:03:47 +0000 (01:03 +0000)]
sfc: Disable soft interrupt handling during efx_device_detach_sync()

efx_device_detach_sync() locks all TX queues before marking the device
detached and thus disabling further TX scheduling.  But it can still
be interrupted by TX completions which then result in TX scheduling in
soft interrupt context.  This will deadlock when it tries to acquire
a TX queue lock that efx_device_detach_sync() already acquired.

To avoid deadlock, we must use netif_tx_{,un}lock_bh().

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>