platform/kernel/linux-rpi.git
10 years agonet: bcmgenet: handle UMAC_IRQ_MPD_R interrupt bit
Florian Fainelli [Mon, 21 Jul 2014 22:29:26 +0000 (15:29 -0700)]
net: bcmgenet: handle UMAC_IRQ_MPD_R interrupt bit

Handle UMAC_IRQ_MPD_R interrupt bit in our workqueue to make sure that
we properly re-configure the GENET adapter from Wake-on-LAN.

bcmgenet_power_up() makes sure that we will not leave the UniMAC
hardware in MagicPacket matching mode, since that would prevent any
other packet from being received.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agonet: bcmgenet: handle GENET_POWER_WOL_MAGIC
Florian Fainelli [Mon, 21 Jul 2014 22:29:25 +0000 (15:29 -0700)]
net: bcmgenet: handle GENET_POWER_WOL_MAGIC

Update bcmgenet_power_{up,down} to handle the case where the adapter has
been suspend respectively resumed from Wake-on-LAN using MagicPackets.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agonet: bcmgenet: add Wake-on-LAN support code
Florian Fainelli [Mon, 21 Jul 2014 22:29:24 +0000 (15:29 -0700)]
net: bcmgenet: add Wake-on-LAN support code

Add all the required code to program the GENET hardware to enter
Wake-on-LAN mode and wake using MagicPackets with or without SecureOn
password.

This code is hooked to the build system, but is not yet referenced from
ethtool or the main bcmgenet driver.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agonet: bcmgenet: request Wake-on-LAN interrupt
Florian Fainelli [Mon, 21 Jul 2014 22:29:23 +0000 (15:29 -0700)]
net: bcmgenet: request Wake-on-LAN interrupt

Attempt to the request the Wake-on-LAN interrupt bit, and if successful,
advertise wakeup capability instead of doing this unconditionnally.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agonet: bcmgenet: add suspend/resume callbacks
Florian Fainelli [Mon, 21 Jul 2014 22:29:22 +0000 (15:29 -0700)]
net: bcmgenet: add suspend/resume callbacks

Implement suspend/resume callbacks in the GENET driver. This makes sure
that we de-initialize and re-initialize the hardware correctly before
entering suspend and when resuming.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agonet: bcmgenet: modularize bcmgenet_{open,close}
Florian Fainelli [Mon, 21 Jul 2014 22:29:21 +0000 (15:29 -0700)]
net: bcmgenet: modularize bcmgenet_{open,close}

Introduce a bunch of helper functions: bcmgenet_netif_start,
bcmgenet_netif_stop and bcmgenet_intr_disable to help reuse code that is
going to be necessary for suspend/resume.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agonet: bcmgenet: add umac_enable_set helper
Florian Fainelli [Mon, 21 Jul 2014 22:29:20 +0000 (15:29 -0700)]
net: bcmgenet: add umac_enable_set helper

Factor the code touching the UniMAC RX/TX enable bits since we are going
to re-use it for implementing suspend/resume.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agonet: bcmgenet: remove wol_enabled conditional code
Florian Fainelli [Mon, 21 Jul 2014 22:29:19 +0000 (15:29 -0700)]
net: bcmgenet: remove wol_enabled conditional code

Checking for wol_enabled in bcmgenet_close() is bogus, since no other
code places set priv->wol_enabled. Remove that as it will conflict with
the upcoming and functional Wake-on-LAN implementation.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agonet: mvpp2: Fix error return code in mvpp2_probe()
Wei Yongjun [Sun, 20 Jul 2014 14:02:43 +0000 (22:02 +0800)]
net: mvpp2: Fix error return code in mvpp2_probe()

Fix to return -ENODEV from the no ports enabled error handling
case instead of 0.

Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agonet: mvpp2: Remove redundant dev_err call in mvpp2_port_probe()
Wei Yongjun [Sun, 20 Jul 2014 13:57:17 +0000 (21:57 +0800)]
net: mvpp2: Remove redundant dev_err call in mvpp2_port_probe()

There is a error message within devm_ioremap_resource
already, so remove the dev_err call to avoid redundant
error message.

Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agotipc: fix sparse non static symbol warnings
Wei Yongjun [Sun, 20 Jul 2014 05:14:28 +0000 (13:14 +0800)]
tipc: fix sparse non static symbol warnings

Fixes the following sparse warnings:

net/tipc/socket.c:545:5: warning:
 symbol 'tipc_sk_proto_rcv' was not declared. Should it be static?
net/tipc/socket.c:2015:5: warning:
 symbol 'tipc_ioctl' was not declared. Should it be static?

Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Acked-by: Ying Xue <ying.xue@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoMerge branch 'break_after_return'
David S. Miller [Mon, 21 Jul 2014 04:30:28 +0000 (21:30 -0700)]
Merge branch 'break_after_return'

Fabian Frederick says:

====================
drivers/net: remove unnecessary break after return

Second patchset after "remove unnecessary break after goto" addressing break redundancy on drivers/net branch
(suggested by Joe Perches)
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agops3_gelic: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:30:48 +0000 (16:30 +0200)]
ps3_gelic: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoatl1c: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:27:54 +0000 (16:27 +0200)]
atl1c: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoatlx: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:27:53 +0000 (16:27 +0200)]
atlx: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoatl1e: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:27:52 +0000 (16:27 +0200)]
atl1e: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoucc_geth: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:27:51 +0000 (16:27 +0200)]
ucc_geth: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoniu: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:27:50 +0000 (16:27 +0200)]
niu: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agosis900: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:27:49 +0000 (16:27 +0200)]
sis900: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agobna: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:27:48 +0000 (16:27 +0200)]
bna: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agonet: tulip: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:27:47 +0000 (16:27 +0200)]
net: tulip: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years ago8390: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:27:46 +0000 (16:27 +0200)]
8390: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoigb: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:27:45 +0000 (16:27 +0200)]
igb: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoe1000e: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:25:20 +0000 (16:25 +0200)]
e1000e: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoixgbe: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:25:19 +0000 (16:25 +0200)]
ixgbe: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoe1000: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:25:18 +0000 (16:25 +0200)]
e1000: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agocarl9170: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:25:16 +0000 (16:25 +0200)]
carl9170: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoath6kl: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:25:15 +0000 (16:25 +0200)]
ath6kl: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoairo: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:25:14 +0000 (16:25 +0200)]
airo: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agocw1200: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:25:13 +0000 (16:25 +0200)]
cw1200: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoprism54: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:25:12 +0000 (16:25 +0200)]
prism54: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agortlwifi: rtl8188ee: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:25:11 +0000 (16:25 +0200)]
rtlwifi: rtl8188ee: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agortlwifi: rtl8723be: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:16:17 +0000 (16:16 +0200)]
rtlwifi: rtl8723be: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agortlwifi: rtl8723ae: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:16:16 +0000 (16:16 +0200)]
rtlwifi: rtl8723ae: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agortlwifi: rtl8192se: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:16:15 +0000 (16:16 +0200)]
rtlwifi: rtl8192se: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agortlwifi: rtl8192ce: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:16:14 +0000 (16:16 +0200)]
rtlwifi: rtl8192ce: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agortlwifi: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:16:13 +0000 (16:16 +0200)]
rtlwifi: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agomwl8k: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:16:12 +0000 (16:16 +0200)]
mwl8k: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agobrcm80211: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:16:11 +0000 (16:16 +0200)]
brcm80211: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoeth_v10: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:16:10 +0000 (16:16 +0200)]
eth_v10: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agodlci: remove unnecessary break after return
Fabian Frederick [Sun, 20 Jul 2014 14:16:09 +0000 (16:16 +0200)]
dlci: remove unnecessary break after return

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agonet/rxrpc/ar-key.c: drop negativity check on unsigned value
Andrey Utkin [Fri, 18 Jul 2014 15:31:57 +0000 (18:31 +0300)]
net/rxrpc/ar-key.c: drop negativity check on unsigned value

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=80611
Reported-by: David Binderman <dcb314@hotmail.com>
Signed-off-by: Andrey Utkin <andrey.krieger.utkin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoMerge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next
David S. Miller [Mon, 21 Jul 2014 04:01:43 +0000 (21:01 -0700)]
Merge git://git./linux/kernel/git/pablo/nf-next

Pablo Neira Ayuso says:

====================
Netfilter updates for net-next

The following patchset contains updates for your net-next tree,
they are:

1) Use kvfree() helper function from x_tables, from Eric Dumazet.

2) Remove extra timer from the conntrack ecache extension, use a
   workqueue instead to redeliver lost events to userspace instead,
   from Florian Westphal.

3) Removal of the ulog targets for ebtables and iptables. The nflog
   infrastructure superseded this almost 9 years ago, time to get rid
   of this code.

4) Replace the list of loggers by an array now that we can only have
   two possible non-overlapping logger flavours, ie. kernel ring buffer
   and netlink logging.

5) Move Eric Dumazet's log buffer code to nf_log to reuse it from
   all of the supported per-family loggers.

6) Consolidate nf_log_packet() as an unified interface for packet logging.
   After this patch, if the struct nf_loginfo is available, it explicitly
   selects the logger that is used.

7) Move ip and ip6 logging code from xt_LOG to the corresponding
   per-family loggers. Thus, x_tables and nf_tables share the same code
   for packet logging.

8) Add generic ARP packet logger, which is used by nf_tables. The
   format aims to be consistent with the output of xt_LOG.

9) Add generic bridge packet logger. Again, this is used by nf_tables
   and it routes the packets to the real family loggers. As a result,
   we get consistent logging format for the bridge family. The ebt_log
   logging code has been intentionally left in place not to break
   backward compatibility since the logging output differs from xt_LOG.

10) Update nft_log to explicitly request the required family logger when
    needed.

11) Finish nft_log so it supports arp, ip, ip6, bridge and inet families.
    Allowing selection between netlink and kernel buffer ring logging.

12) Several fixes coming after the netfilter core logging changes spotted
    by robots.

13) Use IS_ENABLED() macros whenever possible in the netfilter tree,
    from Duan Jiong.

14) Removal of a couple of unnecessary branch before kfree, from Fabian
    Frederick.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agonet: print a notification on device rename
Veaceslav Falico [Thu, 17 Jul 2014 18:33:32 +0000 (20:33 +0200)]
net: print a notification on device rename

Currently it's done silently (from the kernel part), and thus it might be
hard to track the renames from logs.

Add a simple netdev_info() to notify the rename, but only in case the
previous name was valid.

CC: "David S. Miller" <davem@davemloft.net>
CC: Eric Dumazet <edumazet@google.com>
CC: Vlad Yasevich <vyasevic@redhat.com>
CC: stephen hemminger <stephen@networkplumber.org>
CC: Jerry Chu <hkchu@google.com>
CC: Ben Hutchings <bhutchings@solarflare.com>
CC: David Laight <David.Laight@ACULAB.COM>
Signed-off-by: Veaceslav Falico <vfalico@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoMerge branch 'netdev_print'
David S. Miller [Mon, 21 Jul 2014 03:39:16 +0000 (20:39 -0700)]
Merge branch 'netdev_print'

Veaceslav Falico says:

====================
net: print net_device name/state more often

Currently we use net_device->name only if it's the NETREG_REGISTERED
reg_state, otherwise we return "(unregistered device)".

However, we always populate net_device->name on creation, so it's always
available to us for use. The only caveat is that we might have a name like
"eth%d", in which case we cannot use it as it might change in the future.

Also, the net_device might not be NETREG_UNREGISTERED when the function is
called (_UNINITIALIZED, _UNREGISTERING, _RELEASED, _DUMMY), so it's
misleading.

So, a better way would be to always return the dev->name in netdev_name(),
unless it's in the form of "eth%d" or it's empty, then return
"unnamed net_device". This way we'll always return the name in
NETREG_REGISTERED reg_state, and also return it in other states, when
possible.

Also, to be more verbose on non-NETREG_REGISTERED states, add a function
netdev_reg_state(), which returns a string describing the state, and use it
in netdev_printk()-related functions. If the dev is in NETREG_REGISTERED
state then a void string is regurned and, thus, nothing changes.

After these two patches we'll have the same behaviour in the usual cases,
and more verbose in non-standardad/buggy ones.

v2->v3:
Correct the string for _UNINITIALIZED and warn on a bad reg_state,
per Joe Perches's comments.

v1->v2:
As Tom Gundersen suggested, there might be a case when we have an empty
string as a name for a device, so account this also and return "unnamed
device" for that case too.
====================

Signed-off-by: Veaceslav Falico <vfalico@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agonet: print net_device reg_state in netdev_* unless it's registered
Veaceslav Falico [Thu, 17 Jul 2014 17:46:10 +0000 (19:46 +0200)]
net: print net_device reg_state in netdev_* unless it's registered

This way we'll always know in what status the device is, unless it's
running normally (i.e. NETDEV_REGISTERED).

Also, emit a warning once in case of a bad reg_state.

CC: "David S. Miller" <davem@davemloft.net>
CC: Jason Baron <jbaron@akamai.com>
CC: Eric Dumazet <edumazet@google.com>
CC: Vlad Yasevich <vyasevic@redhat.com>
CC: stephen hemminger <stephen@networkplumber.org>
CC: Jerry Chu <hkchu@google.com>
CC: Ben Hutchings <bhutchings@solarflare.com>
CC: Joe Perches <joe@perches.com>
Signed-off-by: Veaceslav Falico <vfalico@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agonet: use dev->name in netdev_pr* when it's available
Veaceslav Falico [Thu, 17 Jul 2014 17:46:09 +0000 (19:46 +0200)]
net: use dev->name in netdev_pr* when it's available

netdev_name() returns dev->name only when the net_device is in
NETREG_REGISTERED state.

However, dev->name is always populated on creation, so we can easily use
it.

There are two cases when there's no real name - when it's an empty string
or when the name is in form of "eth%d", then netdev_name() returns "unnamed
net_device".

CC: "David S. Miller" <davem@davemloft.net>
CC: Tom Gundersen <teg@jklm.no>
Signed-off-by: Veaceslav Falico <vfalico@gmail.com>
Acked-by: Tom Gundersen <teg@jklm.no>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agobonding: make it possible to have unlimited nested upper vlans
Veaceslav Falico [Thu, 17 Jul 2014 15:02:23 +0000 (17:02 +0200)]
bonding: make it possible to have unlimited nested upper vlans

Currently we're limited by a constant level of vlan nestings, and fail to
find anything beyound that level (currently 2).

To fix this - remove the limit of nestings when going through device tree,
and when the end device is found - allocate the needed amount of vlan tags
and return them, instead of found/not found.

CC: Jay Vosburgh <j.vosburgh@gmail.com>
CC: Andy Gospodarek <andy@greyhouse.net>
Signed-off-by: Veaceslav Falico <vfalico@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agonet_sched: hold tcf_lock in netdevice notifier
Cong Wang [Wed, 16 Jul 2014 21:25:31 +0000 (14:25 -0700)]
net_sched: hold tcf_lock in netdevice notifier

We modify mirred action (m->tcfm_dev) in netdev event, we need to
prevent on-going mirred actions from reading freed m->tcfm_dev.
So we need to acquire this spin lock.

Cc: Jamal Hadi Salim <jhs@mojatatu.com>
Cc: "David S. Miller" <davem@davemloft.net>
Signed-off-by: Cong Wang <cwang@twopensource.com>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agolibcxgbi:cxgb4i Guard ipv6 code with a config check
Anish Bhatt [Fri, 18 Jul 2014 01:34:44 +0000 (18:34 -0700)]
libcxgbi:cxgb4i Guard ipv6 code with a config check

Fixes: fc8d0590d914 ("libcxgbi: Add ipv6 api to driver")
Fixes: 759a0cc5a3e1 ("cxgb4i: Add ipv6 code to driver, call into libcxgbi ipv6
api")
Signed-off-by: Anish Bhatt <anish@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoiw_cxgb4: fix for 64-bit integer division
Hariprasad Shenai [Thu, 17 Jul 2014 17:01:03 +0000 (22:31 +0530)]
iw_cxgb4: fix for 64-bit integer division

Fixed error introduced in commit id 7730b4c (" cxgb4/iw_cxgb4: work request
logging feature") while compiling on 32 bit architecture reported by kbuild.

Signed-off-by: Hariprasad Shenai <hariprasad@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agosfc: Add per-queue statistics in ethtool
Andrew Rybchenko [Thu, 17 Jul 2014 11:10:43 +0000 (12:10 +0100)]
sfc: Add per-queue statistics in ethtool

Implement per channel software TX and RX packet counters
accessed as ethtool statistics.

This allows confirmation with MAC statistics.

Signed-off-by: Shradha Shah <sshah@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoMerge branch 'be2net-next'
David S. Miller [Thu, 17 Jul 2014 23:38:23 +0000 (16:38 -0700)]
Merge branch 'be2net-next'

Sathya Perla says:

====================
be2net: patch set

Patches 1 to 6 address issues with return values of some ndo/ethtool
driver methods. In error scenarios, either an inappropriate error or
a +ve return value (where the stack expects a -ve value) was being returned.

Patch 7 updates description strings for certain UE bits.

Patch 8 cleans up (reduces) argument passing for a few routines in be_cmds.c.

Patch 9 removes some unused code (unused definitions.)

Patch 10 updates NULL check in the driver to a consistent "if (!foo)" style.

Patchs 11 to 13 fix a few minor issues with the earlier patch bec84e6
("create optimal number of queues on SR-IOV config"):
- patch 11 fixes BEx_get_resources() code to use be_max_vfs() macro
- patch 12 skips SR-IOV config code for BE2 that doesn't support SRIOV
- patch 13 uses adapter->flags to track SRIOV enabled state

Patch 14 updates the driver version.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agobe2net: update driver version to 10.4
Sathya Perla [Thu, 17 Jul 2014 10:50:32 +0000 (16:20 +0530)]
be2net: update driver version to 10.4

Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agobe2net: use adapter->flags to track SRIOV state
Vasundhara Volam [Thu, 17 Jul 2014 10:50:31 +0000 (16:20 +0530)]
be2net: use adapter->flags to track SRIOV state

The driver so far used adapter->num_vfs value to check if SR-IOV is enabled
or not. But, the patch bec84e6("create optimal number of queues on SR-IOV
config") changed this logic. The adapter->num_vfs value is validated and set
much before SR-IOV is enabled. So, we now use an explicit flag to track
SR-IOV enabled state.

Signed-off-by: Vasundhara Volam <vasundhara.volam@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agobe2net: avoid SRIOV config for BE2 chip
Vasundhara Volam [Thu, 17 Jul 2014 10:50:30 +0000 (16:20 +0530)]
be2net: avoid SRIOV config for BE2 chip

As SRIOV is not supported on BE2 chip, avoid calling be_get/set_sriov_config()
for BE2 chip.

Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agobe2net: use be_max_vfs() macro to access max-vfs
Vasundhara Volam [Thu, 17 Jul 2014 10:50:29 +0000 (16:20 +0530)]
be2net: use be_max_vfs() macro to access max-vfs

max-vfs value must be accessed via the macro be_max_vfs(adapter).
The earlier patch "create optimal number of queues on SR-IOV config"
by mistake, did not use this macro. This patch fixes it.

fixes: bec84e6b ("be2net: create optimal number of queues on SR-IOV config")
Signed-off-by: Vasundhara Volam <vasundhara.volam@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agobe2net: use "if (!foo)" test style
Kalesh AP [Thu, 17 Jul 2014 10:50:28 +0000 (16:20 +0530)]
be2net: use "if (!foo)" test style

Replace "if (foo == NULL)" statements with "if (!foo)" to be consistent
across the driver.

Signed-off-by: Kalesh AP <kalesh.purayil@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agobe2net: remove unused structures in be_cmds.h
Kalesh AP [Thu, 17 Jul 2014 10:50:27 +0000 (16:20 +0530)]
be2net: remove unused structures in be_cmds.h

Signed-off-by: Kalesh AP <kalesh.purayil@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agobe2net: reduce arguments passed to FW-cmd routines
Kalesh AP [Thu, 17 Jul 2014 10:50:26 +0000 (16:20 +0530)]
be2net: reduce arguments passed to FW-cmd routines

A pointer to adapter struct is passed anyway to all of the FW-cmd routines
in be_cmds.c. For routines which query data from FW, the adapter pointer
is enough to return the queried fields.
There is no need to separately pass pointers to individual members of
the adapter structure. This patch fixes this for be_cmd_get_fw_ver()
and be_cmd_get_fw_cfg() routines.

Signed-off-by: Kalesh AP <kalesh.purayil@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agobe2net: update UE bit description strings
Vasundhara Volam [Thu, 17 Jul 2014 10:50:25 +0000 (16:20 +0530)]
be2net: update UE bit description strings

This patch updates some description strings for BEx/Skyhawk-R
UE (unrecoverable error) status register bits. The appropriate strings
are logged when a UE is detected in the adapter.
Signed-off-by: Vasundhara Volam <vasundhara.volam@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agobe2net: fix return status of some ndo methods
Kalesh AP [Thu, 17 Jul 2014 10:50:24 +0000 (16:20 +0530)]
be2net: fix return status of some ndo methods

The netlink layer expects a -ve status value to be returned when a driver
ndo method encounters an error. The driver was directly passing the
error status returned by FW (a positive value) to the stack.
This patch fixes this by returning -EIO status when a FW-cmd reports an error.

Signed-off-by: Kalesh AP <kalesh.purayil@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agobe2net: fix return status of some ethtool methods
Kalesh AP [Thu, 17 Jul 2014 10:50:23 +0000 (16:20 +0530)]
be2net: fix return status of some ethtool methods

ethtool expects a -ve status value to be returned when a driver method
encounters an error. The driver was directly passing the
error status returned by FW (a positive value) to ethtool.
This patch fixes this by returning -EIO status in cases where FW returns
an error.
Signed-off-by: Kalesh AP <kalesh.purayil@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agobe2net: return -ENOMEM for memory allocation failures
Kalesh AP [Thu, 17 Jul 2014 10:50:22 +0000 (16:20 +0530)]
be2net: return -ENOMEM for memory allocation failures

Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agobe2net: return -ETIMEDOUT when a FW-cmd times out
Kalesh AP [Thu, 17 Jul 2014 10:50:21 +0000 (16:20 +0530)]
be2net: return -ETIMEDOUT when a FW-cmd times out

When the FW stops responding with completions, return -ETIMEDOUT error
(instead of -1) to the stack.
Signed-off-by: Kalesh AP <kalesh.purayil@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agobe2net: fix error status for FW-download
Kalesh AP [Thu, 17 Jul 2014 10:50:20 +0000 (16:20 +0530)]
be2net: fix error status for FW-download

For FW download ethtool cmd, if the user provides an FW-image incompatible
with the chip, return -EINVAL instead of -1.

Signed-off-by: Kalesh AP <kalesh.purayil@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agobe2net: use -ENETDOWN error status when interface is down
Kalesh AP [Thu, 17 Jul 2014 10:50:19 +0000 (16:20 +0530)]
be2net: use -ENETDOWN error status when interface is down

Updating VF's tx-rate and FW-download are not allowed when the interface is
down. In such cases return -ENETDOWN to the stack.
Signed-off-by: Kalesh AP <kalesh.purayil@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agobonding: destroy proc directory only after all bonds are gone
Veaceslav Falico [Thu, 17 Jul 2014 10:04:08 +0000 (12:04 +0200)]
bonding: destroy proc directory only after all bonds are gone

Currently we might arrive to bond_net_exit() with some bonds left (that
were created while the module is unloading). We take care of that by
destroying sysfs (the last possibility to add new bonds) and then
destroying all the remaining bonds.

However, we destroy the /proc/net/bonding directory before destroying those
last bonds, and get a warning that we're trying to destroy a non-empty
proc directory (containing /proc/net/bonding/bondX).

Fix this by moving bond_destroy_proc_dir() after all the bonds are
destroyed, so that we're sure that no bonds exist.

CC: Jay Vosburgh <j.vosburgh@gmail.com>
CC: Andy Gospodarek <andy@greyhouse.net>
Signed-off-by: Veaceslav Falico <vfalico@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agobonding: use rtnl_deref in bond_change_rx_flags()
Veaceslav Falico [Wed, 16 Jul 2014 16:32:01 +0000 (18:32 +0200)]
bonding: use rtnl_deref in bond_change_rx_flags()

As it's always called with RTNL held, via dev_set_allmulti/promiscuity.
Also, remove the wrong comment.

CC: Jay Vosburgh <j.vosburgh@gmail.com>
CC: Andy Gospodarek <andy@greyhouse.net>
Signed-off-by: Veaceslav Falico <vfalico@gmail.com>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoMerge branch 'cxgb4-next'
David S. Miller [Thu, 17 Jul 2014 23:06:09 +0000 (16:06 -0700)]
Merge branch 'cxgb4-next'

Anish Bhatt says:

====================
cxgb4i: Add ipv6 support

   The following patchset add ipv6 support for the cxgb4i(iscsi) driver.

Patch 1 moves a define from the iw_cxgb4 to cxgb4 to prevent code duplication,
 as it is used by cxgb4i and iw_cxgb4 both.
Patch 2 exports symbols needed by cxgb4i for ipv6 support from cxgb4.
Patch 3 & 4 deal with actual ipv6 code in libcxgbi/cxgb4i.

Submitting to net-next as changes were needed in cxgb4/iw_cxgb4, and submitting
to scsi separately would break compilation, cc-ing scsi & rdma.

v2 : Cleanup macro that prints ip addresses by using %pIS in patch 3
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agocxgb4i: Add ipv6 code to driver, call into libcxgbi ipv6 api
Anish Bhatt [Thu, 17 Jul 2014 07:18:18 +0000 (00:18 -0700)]
cxgb4i: Add ipv6 code to driver, call into libcxgbi ipv6 api

Signed-off-by: Anish Bhatt <anish@chelsio.com>
Signed-off-by: Karen Xie <kxie@chelsio.com>
Signed-off-by: Manoj Malviya <manojmalviya@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agolibcxgbi: Add ipv6 api to driver
Anish Bhatt [Thu, 17 Jul 2014 07:18:17 +0000 (00:18 -0700)]
libcxgbi: Add ipv6 api to driver

Signed-off-by: Anish Bhatt <anish@chelsio.com>
Signed-off-by: Karen Xie <kxie@chelsio.com>
Signed-off-by: Manoj Malviya <manojmalviya@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agocxgb4: Export symbols required by cxgb4i for ipv6 support and required defines
Anish Bhatt [Thu, 17 Jul 2014 07:18:16 +0000 (00:18 -0700)]
cxgb4: Export symbols required by cxgb4i for ipv6 support and required defines

Signed-off-by: Anish Bhatt <anish@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agocxgb4/iw_cxgb4: Move common defines to cxgb4
Anish Bhatt [Thu, 17 Jul 2014 07:18:15 +0000 (00:18 -0700)]
cxgb4/iw_cxgb4: Move common defines to cxgb4

This define is used by cxgb4i and iw_cxgb4, moving to avoid code duplication

Signed-off-by: Anish Bhatt <anish@chelsio.com>
Acked-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agobonding: update bonding.txt for Layer2 hash factors
Jianhua Xie [Thu, 17 Jul 2014 06:16:26 +0000 (14:16 +0800)]
bonding: update bonding.txt for Layer2 hash factors

Document the Layer 2 hash factors with packet type ID field.

CC: Jay Vosburgh <j.vosburgh@gmail.com>
CC: Veaceslav Falico <vfalico@gmail.com>
CC: Andy Gospodarek <andy@greyhouse.net>
CC: David S. Miller <davem@davemloft.net>
CC: Pan Jiafei <Jiafei.Pan@freescale.com>
Signed-off-by: Jianhua Xie <jianhua.xie@freescale.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agobonding: enhance L2 hash helper with packet type
Jianhua Xie [Thu, 17 Jul 2014 06:16:25 +0000 (14:16 +0800)]
bonding: enhance L2 hash helper with packet type

Current L2 hash helper calculates destination eth addr and
source ether addr as L2 hash factors.  This patch is adding
packet type ID field into L2 hash factors.  While one of
BOND_XMIT_POLICY_LAYER2 or BOND_XMIT_POLICY_{LAYER|ENCAP}23
is applied, for the 2nd level hash, enhanced hash method can
help to distribute different types of packets like IPv4/IPv6
packets to different slave devices.

CC: Jay Vosburgh <j.vosburgh@gmail.com>
CC: Veaceslav Falico <vfalico@gmail.com>
CC: Andy Gospodarek <andy@greyhouse.net>
CC: David S. Miller <davem@davemloft.net>
CC: Pan Jiafei <Jiafei.Pan@freescale.com>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Jianhua Xie <jianhua.xie@freescale.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoUpdate setapp/getapp prototypes in dcbnl_rtnl_ops to return int instead of u8
Anish Bhatt [Thu, 17 Jul 2014 05:32:39 +0000 (22:32 -0700)]
Update setapp/getapp prototypes in dcbnl_rtnl_ops to return int instead of u8

v2: fixed issue with checking return of dcbnl_rtnl_ops->getapp()

Signed-off-by: Anish Bhatt <anish@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agonet_sched: cancel nest attribute on failure in tcf_exts_dump()
Cong Wang [Wed, 16 Jul 2014 21:25:30 +0000 (14:25 -0700)]
net_sched: cancel nest attribute on failure in tcf_exts_dump()

Like other places, we need to cancel the nest attribute after
we start. Fortunately the netlink message will not be sent on
failure, so it's not a big problem at all.

Cc: Jamal Hadi Salim <jhs@mojatatu.com>
Cc: "David S. Miller" <davem@davemloft.net>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: Cong Wang <cwang@twopensource.com>
Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoMerge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net...
David S. Miller [Thu, 17 Jul 2014 06:52:18 +0000 (23:52 -0700)]
Merge branch 'master' of git://git./linux/kernel/git/jkirsher/net-next

Jeff Kirsher says:

====================
Intel Wired LAN Driver Updates 2014-07-16

This series contains updates to i40e only.

Neerav adds support to get the port MAC address from firmware and adds
support to the ndo_get_phys_port_id() callback to provide port specific
unique ids to the netdev layer.

Jakub Kicinski provides 2 fixes, first fixes i40e to never generate a software
time stamp if the hardware time stamp is provided.  Second fixes a race
condition on queueing skb for hardware time by using a simple bit lock to
avoid race conditions and leaking skbs when multiple transmit rings try
to claim time stamping.

Paul does some general cleanup of the driver to remove unneeded spaces,
comments that are no longer valid, and break that will never get touched.

Jacob Keller adds a verbose warning message when the incorrect PF attempts
to control timestamping for a port to which it was not assigned.  The primary
intent of this message is to help debugging the reason why the SIOCSHWSTAMP
ioctl has failed and to help narrow the cause of the issue.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoopenvswitch: make generic netlink group const
stephen hemminger [Wed, 16 Jul 2014 18:25:52 +0000 (11:25 -0700)]
openvswitch: make generic netlink group const

Generic netlink tables can be const.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agobonding: Do not try to send packets over dead link in TLB mode.
Mahesh Bandewar [Wed, 16 Jul 2014 18:10:36 +0000 (11:10 -0700)]
bonding: Do not try to send packets over dead link in TLB mode.

In TLB mode if tlb_dynamic_lb is NOT set, slaves from the bond
group are selected based on the hash distribution. This does not
exclude dead links which are part of the bond. Also if there is a
temporary link event which brings down the interface, packets
hashed on that interface would be dropped too.

This patch fixes these issues and distributes flows across the
UP links only. Also the array construction of links which are
capable of sending packets happen in the control path leaving
only link-selection during the data-path.

One possible side effect of this is - at a link event; all
flows will be shuffled to get good distribution. But impact of
this should be minimum with the assumption that a member or
members of the bond group are not available is a very temporary
situation.

Signed-off-by: Mahesh Bandewar <maheshb@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoMerge branch 'davinci_mdio'
David S. Miller [Thu, 17 Jul 2014 06:33:25 +0000 (23:33 -0700)]
Merge branch 'davinci_mdio'

Grygorii Strashko says:

====================
net: davinci_mdio: reuse for keystone2 arch

The similar MDIO HW blocks is used by keystone 2 SoCs as
in Davinci SoCs:
- one in Gigabit Ethernet (GbE) Switch Subsystem
  See http://www.ti.com/lit/ug/sprugv9d/sprugv9d.pdf
- one in 10 Gigabit Ethernet Subsystem
  See http://www.ti.com/lit/ug/spruhj5/spruhj5.pdf

Hence, reuse Davinci MDIO driver for Keystone 2 and
enable TI networking for Keystone 2 devices.

Also, as part of this series, enable PHY's creation from DT, because
Keystone 2 supports DT boot mode only.

Changes in v2:
- review comments applied.
  Keystone 2 compatibility string changed to "ti,keystone_mdio".
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agonet: davinci_mdio: allow to create phys from dt
Grygorii Strashko [Wed, 16 Jul 2014 12:13:03 +0000 (15:13 +0300)]
net: davinci_mdio: allow to create phys from dt

This patch allows to create PHYs from DT in case
if they are explicitly defined. The of_mdiobus_register() is
used for such purposes.

For backward compatibility, call  of_mdiobus_register() only in case
if at least one PHY's child is defined in DT, otherwise rollback to
mdiobus_register().

Reviewed-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Acked-by: Mugunthan V N <mugunthanvnm@ti.com>
Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Reviewed-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agonet: davinci_mdio: reuse for keystone2 arch
Grygorii Strashko [Wed, 16 Jul 2014 12:13:02 +0000 (15:13 +0300)]
net: davinci_mdio: reuse for keystone2 arch

The similar MDIO HW blocks is used by keystone 2 SoCs as
in Davinci SoCs:
- one in Gigabit Ethernet (GbE) Switch Subsystem
  See http://www.ti.com/lit/ug/sprugv9d/sprugv9d.pdf
- one in 10 Gigabit Ethernet Subsystem
  See http://www.ti.com/lit/ug/spruhj5/spruhj5.pdf

Hence, reuse Davinci MDIO driver for Keystone 2 and
enable TI networking for Keystone 2 devices

Reviewed-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Acked-by: Mugunthan V N <mugunthanvnm@ti.com>
Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Reviewed-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agonet: clean up some sparse endianness warnings in ipv6.h
Jeff Layton [Wed, 16 Jul 2014 10:55:46 +0000 (06:55 -0400)]
net: clean up some sparse endianness warnings in ipv6.h

sparse is throwing warnings when building sunrpc modules due to some
endianness shenanigans in ipv6.h. Specifically:

  CHECK   net/sunrpc/addr.c
include/net/ipv6.h:573:17: warning: restricted __be64 degrades to integer
include/net/ipv6.h:577:34: warning: restricted __be32 degrades to integer
include/net/ipv6.h:573:17: warning: restricted __be64 degrades to integer
include/net/ipv6.h:577:34: warning: restricted __be32 degrades to integer

Sprinkle some endianness fixups to silence them. These should all get
fixed up at compile time, so I don't think this will add any extra work
to be done at runtime.

Signed-off-by: Jeff Layton <jlayton@primarydata.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoMerge branch 'udp_hash'
David S. Miller [Thu, 17 Jul 2014 06:30:25 +0000 (23:30 -0700)]
Merge branch 'udp_hash'

David Held says:

====================
udp: Fix multicast performance issues.

Fix performance issues with listening to many different multicast
sockets on different addresses with the same port. Instead of always
using hash1, fall back to hash2 lookup when hash1 lookup is long.
Patch 1 is a general cleanup and simplification which also makes the
main implementation in Patch 2 simpler.

Eric's recent change 63c6f81cdde5 avoided this being an issue in early
demux. This makes it work for regular delivery as well.

v1->v2
 - updated hash collision detection

v2->v3
 - avoid flushing under lock unnecessarily at ARRAY_SIZE boundary
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoudp: Use hash2 for long hash1 chains in __udp*_lib_mcast_deliver.
David Held [Wed, 16 Jul 2014 03:28:32 +0000 (23:28 -0400)]
udp: Use hash2 for long hash1 chains in __udp*_lib_mcast_deliver.

Many multicast sources can have the same port which can result in a very
large list when hashing by port only. Hash by address and port instead
if this is the case. This makes multicast more similar to unicast.

On a 24-core machine receiving from 500 multicast sockets on the same
port, before this patch 80% of system CPU was used up by spin locking
and only ~25% of packets were successfully delivered.

With this patch, all packets are delivered and kernel overhead is ~8%
system CPU on spinlocks.

Signed-off-by: David Held <drheld@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoudp: Simplify __udp*_lib_mcast_deliver.
David Held [Wed, 16 Jul 2014 03:28:31 +0000 (23:28 -0400)]
udp: Simplify __udp*_lib_mcast_deliver.

Switch to using sk_nulls_for_each which shortens the code and makes it
easier to update.

Signed-off-by: David Held <drheld@google.com>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoMerge branch 'mlx4-next'
David S. Miller [Thu, 17 Jul 2014 06:26:32 +0000 (23:26 -0700)]
Merge branch 'mlx4-next'

Amir Vadai says:

====================
Mellanox driver update Jul-16-2014

This patchset contains some bug fixes related to MCG table management (flow
steering) in Mellanox NIC.

Fixes were applied and tested over commit 0854a7f ("Merge branch
'amd811e-cleanups'").
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agonet/mlx4_core: Remove MCG in case it is attached to promiscuous QPs only
Saeed Mahameed [Wed, 16 Jul 2014 08:57:51 +0000 (11:57 +0300)]
net/mlx4_core: Remove MCG in case it is attached to promiscuous QPs only

In B0 steering mode if promiscuous QP asks to be detached from MCG entry,
and it is the only one in this entry then the entry will never be deleted.
This is a wrong behavior since we don't want to keep those entries after
the promiscuous QP becomes non-promiscuous. Therefore remove steering
entry containing only promiscuous QP.

Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com>
Signed-off-by: Amir Vadai <amirv@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agonet/mlx4_core: In SR-IOV mode host should add promisc QP to default entry only
Eugenia Emantayev [Wed, 16 Jul 2014 08:57:50 +0000 (11:57 +0300)]
net/mlx4_core: In SR-IOV mode host should add promisc QP to default entry only

In current situation host is adding the promiscuous QP to all steering
entries and the default entry as well. In this case when having PV
and SR-IOV on the same setup bridge will receive all traffic that is
targeted to the other VMs. This is bad.
Solution: In SR-IOV mode host can add promiscuous QP to default entry only.
The above problem and fix are relevant for B0 steering mode only.

Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com>
Signed-off-by: Amir Vadai <amirv@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agonet/mlx4_core: Make sure the max number of QPs per MCG isn't exceeded
Alexander Guller [Wed, 16 Jul 2014 08:57:49 +0000 (11:57 +0300)]
net/mlx4_core: Make sure the max number of QPs per MCG isn't exceeded

In B0 steering mode when adding QPs to the default MCG entry need
to check that maximal number of QPs per MCG entry was not exceeded.

Signed-off-by: Alexander Guller <alexg@mellanox.com>
Reviewed-by: Aviad Yehezkel <aviadye@mellanox.co.il>
Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com>
Signed-off-by: Amir Vadai <amirv@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agonet/mlx4_core: Make sure that negative array index isn't used
Dotan Barak [Wed, 16 Jul 2014 08:57:48 +0000 (11:57 +0300)]
net/mlx4_core: Make sure that negative array index isn't used

To make sure that the array index isn't used in the code with
negative value, we stop using the for loop integer iterator
outside of it.
>From now on use members count to swap the last QP with removed one.
Fix also the second occurrence of this flow in mlx4_qp_detach_common().
In mlx4_qp_detach_common() use members_count instead of
loop iterator outside of the for loop.

Signed-off-by: Dotan Barak <dotanb@dev.mellanox.co.il>
Reviewed-by: Yevgeny Petrilin <yevgenyp@mellanox.co.il>
Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com>
Signed-off-by: Amir Vadai <amirv@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agonet/mlx4_core: Fix leakage of SW multicast entries
Yevgeny Petrilin [Wed, 16 Jul 2014 08:57:47 +0000 (11:57 +0300)]
net/mlx4_core: Fix leakage of SW multicast entries

When removing multicast address in B0 steering mode there is
a bug in cases where there is a single QP registered for the address,
and this QP is also promiscuous. In such cases the entry wouldn't be
deleted from the SW structure representing all Ethernet MCG entries,
but would be removed in HW. This way when driver goes to remove it
from SW and HW structures the HW deletion fails.
Moreover the same index could later be used for registering
different address, which can be Infiniband.

Signed-off-by: Yevgeny Petrilin <yevgenyp@mellanox.co.il>
Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com>
Signed-off-by: Amir Vadai <amirv@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agonetlink: remove bool varible
Varka Bhadram [Wed, 16 Jul 2014 05:29:47 +0000 (10:59 +0530)]
netlink: remove bool varible

This patch removes the bool variable 'pass'.
If the swith case exist return true or return false.

Signed-off-by: Varka Bhadram <varkab@cdac.in>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agortnetlink: Drop unnecessary return value from ndo_dflt_fdb_del
Alexander Duyck [Tue, 15 Jul 2014 22:15:20 +0000 (15:15 -0700)]
rtnetlink: Drop unnecessary return value from ndo_dflt_fdb_del

This change cleans up ndo_dflt_fdb_del to drop the ENOTSUPP return value since
that isn't actually returned anywhere in the code.  As a result we are able to
drop a few lines by just defaulting this to -EINVAL.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agonet: remove open-coded skb_cow_head.
françois romieu [Tue, 15 Jul 2014 21:55:35 +0000 (23:55 +0200)]
net: remove open-coded skb_cow_head.

Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agoMerge branch 'tipc-next'
David S. Miller [Thu, 17 Jul 2014 04:38:26 +0000 (21:38 -0700)]
Merge branch 'tipc-next'

Jon Maloy says:

====================
tipc: multicast and internal users to new send functions

We move the remaining data transmit users: multicast, name table
distributor, and link internal protocols to use the new data
transmission framework introduced in a previous commit series
("tipc: new unicast transmission code").

Finally, we remove the code obsoleted by the new functions.

v2: - Fixed a braindead, but harmless return sequence in commit #3, as
      reported by David Miller.
    - Rebased series to 3.16.0-rc5+
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agotipc: ensure sequential message delivery across dual bearers
Jon Paul Maloy [Thu, 17 Jul 2014 00:41:04 +0000 (20:41 -0400)]
tipc: ensure sequential message delivery across dual bearers

When we run broadcast packets over dual bearers/interfaces, the
current transmission code is flipping bearers between each sent
packet, with the purpose of leveraging the double bandwidth
available. The receiving bclink is resequencing the packets if
needed, so all messages are delivered upwards from the broadcast
link in the correct order, even if they may arrive in concurrent
interrupts.

However, at the moment of delivery upwards to the socket, we release
all spinlocks (bclink_lock, node_lock), so it is still possible
that arriving messages bypass each other before they reach the socket
queue.

We fix this by applying the same technique we are using for unicast
traffic. We use a link selector (i.e., the last bit of sending port
number) to ensure that messages from the same sender socket always are
sent over the same bearer. This guarantees sequential delivery between
socket pairs, which is sufficient to satisfy the protocol spec, as well
as all known user requirements.

Signed-off-by: Jon Maloy <jon.maloy@ericsson.com>
Reviewed-by: Erik Hugne <erik.hugne@ericsson.com>
Reviewed-by: Ying Xue <ying.xue@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
10 years agotipc: rename temporarily named functions
Jon Paul Maloy [Thu, 17 Jul 2014 00:41:03 +0000 (20:41 -0400)]
tipc: rename temporarily named functions

After the previous commit, we can now give the functions with temporary
names, such as tipc_link_xmit2(), tipc_msg_build2() etc., their proper
names.

There are no functional changes in this commit.

Signed-off-by: Jon Maloy <jon.maloy@ericsson.com>
Reviewed-by: Erik Hugne <erik.hugne@ericsson.com>
Reviewed-by: Ying Xue <ying.xue@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>