1. 10 Dec, 2014 11 commits
  2. 09 Dec, 2014 29 commits
    • Nimrod Andy's avatar
      net: fec: avoid kernal crash by NULL pointer when no phy connection · 213a9922
      Nimrod Andy authored
      On i.MX6SX sabreauto board, when there have no phy daughter board connection,
      there have kernel crash by NULL pointer:
      
      fec 2188000.ethernet eth0: could not attach to PHY
      Unable to handle kernel NULL pointer dereference at virtual address 00000220
      pgd = 80004000
      [00000220] *pgd=00000000
      Internal error: Oops: 5 [#1] PREEMPT SMP ARM
      Modules linked in:
      CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.14.24-01042-g27eaeea-dirty #405
      task: d8078000 ti: d8076000 task.ti: d8076000
      PC is at mutex_lock+0x10/0x54
      LR is at phy_start+0x14/0x68
      pc : [<806ad4e4>]    lr : [<803b0f90>]    psr: 60000113
      sp : d8077d80  ip : 00000000  fp : d83cc000
      r10: 0000100c  r9 : d83cc800  r8 : 00000000
      r7 : d83bcd0c  r6 : 00000200  r5 : 00000220  r4 : 00000220
      r3 : 00000000  r2 : 00000000  r1 : d83bcd90  r0 : 00000220
      Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
      Control: 10c5387d  Table: 8000404a  DAC: 00000015
      Process swapper/0 (pid: 1, stack limit = 0xd8076240)
      Stack: (0xd8077d80 to 0xd8078000)
      7d80: 00000000 803b0f90 00000001 00000000 d83bc800 803be034 00000007 805c3fb4
      7da0: 00000003 80d4e0bc 805efcb8 fffffff1 fffffff0 00000000 00000000 d8077dfc
      7dc0: 0000000d 80d6ce80 80d126b0 800499c8 d83bc800 d83bc800 806f0f40 d83bc82c
      7de0: 00000000 00000000 80d6ce80 80d126b0 0000016b 80540250 d8076008 d83bc800
      7e00: 0000016b d83bc800 00001003 00000001 00001002 805404d4 d83bc800 00000120
      7e20: 00001002 00001002 00000000 805405d4 d83bc800 00000001 80d126c0 00001002
      7e40: 80dbc5dc 80d02024 00000000 806ae360 00000002 d6128420 d6127198 12400000
      7e60: 00000000 00000000 00000002 d61271e8 00000000 12400000 d801674c 800e49f0
      7e80: d6127198 d6124e58 00000000 80238848 d61271c4 00000000 00000001 d8016700
      7ea0: 80dd2e00 80d752c0 80d752c0 80cfdaec 0000010c 80239430 806c2e90 d800f080
      7ec0: d800f380 804e46b4 ffffffbc 80d15cb0 00000007 80d752c0 80d752c0 80d01e94
      7ee0: 0000010c d8076030 00000000 800088cc 80dbaba4 80bd411c d80a6f00 806b1e04
      7f00: 00000000 00000000 00000000 80125b84 00000000 80d2c56c 60000113 00000001
      7f20: ef7ff9df 806c80cc 0000010c 80043f5c 80c95eb8 00000007 ef7ffa1d 00000007
      7f40: 80d2c55c 80d15cb0 00000007 80d752c0 80d752c0 80ccc50c 0000010c 80d0a114
      7f60: 80d0a10c 80cccc04 00000007 00000007 80ccc50c 806ae410 00000000 8004cb84
      7f80: 80d17bc0 00000000 806a4bd4 00000000 00000000 00000000 00000000 00000000
      7fa0: 00000000 806a4bdc 00000000 8000e5f8 00000000 00000000 00000000 00000000
      7fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
      7fe0: 00000000 00000000 00000000 00000000 00000013 00000000 1e79a7bb e5337f77
      [<806ad4e4>] (mutex_lock) from [<803b0f90>] (phy_start+0x14/0x68)
      [<803b0f90>] (phy_start) from [<803be034>] (fec_enet_open+0x448/0x5dc)
      [<803be034>] (fec_enet_open) from [<80540250>] (__dev_open+0xa8/0x110)
      [<80540250>] (__dev_open) from [<805404d4>] (__dev_change_flags+0x88/0x170)
      [<805404d4>] (__dev_change_flags) from [<805405d4>] (dev_change_flags+0x18/0x48)
      [<805405d4>] (dev_change_flags) from [<80d02024>] (ip_auto_config+0x190/0xf94)
      [<80d02024>] (ip_auto_config) from [<800088cc>] (do_one_initcall+0xe8/0x144)
      [<800088cc>] (do_one_initcall) from [<80cccc04>] (kernel_init_freeable+0x104/0x1c8)
      [<80cccc04>] (kernel_init_freeable) from [<806a4bdc>] (kernel_init+0x8/0xec)
      [<806a4bdc>] (kernel_init) from [<8000e5f8>] (ret_from_fork+0x14/0x3c)
      Code: e92d4010 e3a03000 e1a04000 ee073fba (e1903f9f)
      
      Add phydev check to fix the issue.
      Signed-off-by: default avatarFugang Duan <B38611@freescale.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      213a9922
    • Ying Xue's avatar
      tipc: avoid double lock 'spin_lock:&seq->lock' · 023160bc
      Ying Xue authored
      The commit fb9962f3 ("tipc: ensure all name sequences are properly
      protected with its lock") involves below errors:
      
      net/tipc/name_table.c:980 tipc_purge_publications() error: double lock 'spin_lock:&seq->lock'
      Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarYing Xue <ying.xue@windriver.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      023160bc
    • Florian Fainelli's avatar
      net: systemport: allow changing MAC address · fb3b596d
      Florian Fainelli authored
      Hook a ndo_set_mac_address callback, update the internal Ethernet MAC in
      the netdevice structure, and finally write that address down to the
      UniMAC registers. If the interface is down, and most likely clock gated,
      we do not update the registers but just the local copy, such that next
      ndo_open() call will effectively write down the address.
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fb3b596d
    • David S. Miller's avatar
      Merge branch 'bridge_mode' · 62710379
      David S. Miller authored
      Roopa Prabhu says:
      
      ====================
      remove bridge mode BRIDGE_MODE_SWDEV
      
      BRIDGE_MODE_SWDEV was introduced to indicate switchdev offloads
      for bridging from user space (In other words to call into the hw switch
      port driver directly). But user can use existing BRIDGE_FLAGS_SELF
      to call into the hw switch port driver today. swdev mode is not required
      anymore. So, this patch removes it.
      
      v4 - v5
          incorporate comments
          - Define BRIDGE_MODE_UNDEF to handle cases where mode is not defined
          - reverse the order of patches
          - include patch comments in all patches
      ====================
      Signed-off-by: default avatarRoopa Prabhu <roopa@cumulusnetworks.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      62710379
    • Roopa Prabhu's avatar
      bridge: remove mode BRIDGE_MODE_SWDEV · 4a5fdfe8
      Roopa Prabhu authored
      This patch removes bridge mode swdev.
      Users can use BRIDGE_FLAGS_SELF to indicate swdev offload
      if needed.
      Signed-off-by: default avatarRoopa Prabhu <roopa@cumulusnetworks.com>
      Signed-off-by: default avatarScott Feldman <sfeldma@gmail.com>
      Signed-off-by: default avatarJiri Pirko <jiri@resnulli.us>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4a5fdfe8
    • Roopa Prabhu's avatar
      rocker: remove swdev mode · 1d460b98
      Roopa Prabhu authored
      Remove use of 'swdev' mode in rocker. rocker dev offloads
      can use the BRIDGE_FLAGS_SELF to indicate offload to hardware.
      Signed-off-by: default avatarRoopa Prabhu <roopa@cumulusnetworks.com>
      Signed-off-by: default avatarScott Feldman <sfeldma@gmail.com>
      Signed-off-by: default avatarJiri Pirko <jiri@resnulli.us>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1d460b98
    • Roopa Prabhu's avatar
      bridge: new mode flag to indicate mode 'undefined' · fc0bdbbc
      Roopa Prabhu authored
      This patch adds mode BRIDGE_MODE_UNDEF for cases where mode is not needed.
      Signed-off-by: default avatarRoopa Prabhu <roopa@cumulusnetworks.com>
      Signed-off-by: default avatarScott Feldman <sfeldma@gmail.com>
      Signed-off-by: default avatarJiri Pirko <jiri@resnulli.us>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fc0bdbbc
    • David S. Miller's avatar
      Merge tag 'master-2014-12-08' of... · b5f185f3
      David S. Miller authored
      Merge tag 'master-2014-12-08' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next
      
      John W. Linville says:
      
      ====================
      pull request: wireless-next 2014-12-08
      
      Please pull this last batch of pending wireless updates for the 3.19 tree...
      
      For the wireless bits, Johannes says:
      
      "This time I have Felix's no-status rate control work, which will allow
      drivers to work better with rate control even if they don't have perfect
      status reporting. In addition to this, a small hwsim fix from Patrik,
      one of the regulatory patches from Arik, and a number of cleanups and
      fixes I did myself.
      
      Of note is a patch where I disable CFG80211_WEXT so that compatibility
      is no longer selectable - this is intended as a wake-up call for anyone
      who's still using it, and is still easily worked around (it's a one-line
      patch) before we fully remove the code as well in the future."
      
      For the Bluetooth bits, Johan says:
      
      "Here's one more bluetooth-next pull request for 3.19:
      
       - Minor cleanups for ieee802154 & mac802154
       - Fix for the kernel warning with !TASK_RUNNING reported by Kirill A.
         Shutemov
       - Support for another ath3k device
       - Fix for tracking link key based security level
       - Device tree bindings for btmrvl + a state update fix
       - Fix for wrong ACL flags on LE links"
      
      And...
      
      "In addition to the previous one this contains two more cleanups to
      mac802154 as well as support for some new HCI features from the
      Bluetooth 4.2 specification.
      
      From the original request:
      
      'Here's what should be the last bluetooth-next pull request for 3.19.
      It's rather large but the majority of it is the Low Energy Secure
      Connections feature that's part of the Bluetooth 4.2 specification. The
      specification went public only this week so we couldn't publish the
      corresponding code before that. The code itself can nevertheless be
      considered fairly mature as it's been in development for over 6 months
      and gone through several interoperability test events.
      
      Besides LE SC the pull request contains an important fix for command
      complete events for mgmt sockets which also fixes some leaks of hci_conn
      objects when powering off or unplugging Bluetooth adapters.
      
      A smaller feature that's part of the pull request is service discovery
      support. This is like normal device discovery except that devices not
      matching specific UUIDs or strong enough RSSI are filtered out.
      
      Other changes that the pull request contains are firmware dump support
      to the btmrvl driver, firmware download support for Broadcom BCM20702A0
      variants, as well as some coding style cleanups in 6lowpan &
      ieee802154/mac802154 code.'"
      
      For the NFC bits, Samuel says:
      
      "With this one we get:
      
      - NFC digital improvements for DEP support: Chaining, NACK and ATN
        support added.
      
      - NCI improvements: Support for p2p target, SE IO operand addition,
        SE operands extensions to support proprietary implementations, and
        a few fixes.
      
      - NFC HCI improvements: OPEN_PIPE and NOTIFY_ALL_CLEARED support,
        and SE IO operand addition.
      
      - A bunch of minor improvements and fixes for STMicro st21nfcb and
        st21nfca"
      
      For the iwlwifi bits, Emmanuel says:
      
      "Major works are CSA and TDLS. On top of that I have a new
      firmware API for scan and a few rate control improvements.
      Johannes find a few tricks to improve our CPU utilization
      and adds support for a new spin of 7265 called 7265D.
      Along with this a few random things that don't stand out."
      
      And...
      
      "I deprecate here -8.ucode since -9 has been published long ago.
      Along with that I have a new activity, we have now better
      a infrastructure for firmware debugging. This will allow to
      have configurable probes insides the firmware.
      Luca continues his work on NetDetect, this feature is now
      complete. All the rest is minor fixes here and there."
      
      For the Atheros bits, Kalle says:
      
      "Only ath10k changes this time and no major changes. Most visible are:
      
      o new debugfs interface for runtime firmware debugging (Yanbo)
      
      o fix shared WEP (Sujith)
      
      o don't rebuild whenever kernel version changes (Johannes)
      
      o lots of refactoring to make it easier to add new hw support (Michal)
      
      There's also smaller fixes and improvements with no point of listing
      here."
      
      In addition, there are a few last minute updates to ath5k,
      ath9k, brcmfmac, brcmsmac, mwifiex, rt2x00, rtlwifi, and wil6210.
      Also included is a pull of the wireless tree to pick-up the fixes
      originally included in "pull request: wireless 2014-12-03"...
      
      Please let me know if there are problems!
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b5f185f3
    • Mitsuhiro Kimura's avatar
      sh_eth: Remove redundant alignment adjustment · 450fa219
      Mitsuhiro Kimura authored
      PTR_ALIGN macro after skb_reserve is redundant, because skb_reserve
      function adjusts the alignment of skb->data.
      Signed-off-by: default avatarMitsuhiro Kimura <mitsuhiro.kimura.kc@renesas.com>
      Signed-off-by: default avatarYoshihiro Kaneko <ykaneko0929@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      450fa219
    • Mitsuhiro Kimura's avatar
      sh_eth: Optimization for RX excess judgement · 319cd520
      Mitsuhiro Kimura authored
      Both of 'boguscnt' and 'quota' have nearly meaning as the condition of
      the reception loop.
      In order to cut down redundant processing, this patch changes excess
      judgement.
      Signed-off-by: default avatarMitsuhiro Kimura <mitsuhiro.kimura.kc@renesas.com>
      Signed-off-by: default avatarYoshihiro Kaneko <ykaneko0929@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      319cd520
    • Li RongQing's avatar
      net: avoid to call skb_queue_len again · e008f3f0
      Li RongQing authored
      the queue length of sd->input_pkt_queue has been put into qlen,
      and impossible to change, since hold the lock
      Signed-off-by: default avatarLi RongQing <roy.qing.li@gmail.com>
      Acked-by: default avatarEric Dumazet <edumazet@google.com>
      Cc: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e008f3f0
    • David S. Miller's avatar
      Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next · 5d6201e1
      David S. Miller authored
      Jeff Kirsher says:
      
      ====================
      Intel Wired LAN Driver Updates 2014-12-09
      
      This series contains updates to i40e and i40evf.
      
      Jeff (me) provides a single patch to convert a macro to a static inline
      function based on feedback from Joe Perches on a previous patch.
      
      Shannon provides the remaining twelve patches against i40e.  Almost all
      of Shannon's patches cleanup/fix NVM issues varying in range from
      adding more detail to debug messages, to removing dead code, to fixing
      NVM state transitions after an error.  Change the handy decoder interface
      for admin queue return code to help catch and properly report the condition
      as a useful errno rather than returning a misleading '0'.  Added a range
      check to avoid any possible array index-out-of-bound issues.
      
      v2:
       - fixed up patch 05 in the series to use the ARRAY_SIZE() macro as suggested
         by Sergei Shtylyov
       - fix up patch 13 to remove unnecessary parens in the return statement
         as suggested by Sergei Shtylyov
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5d6201e1
    • David S. Miller's avatar
      Merge tag 'linux-can-next-for-3.19-20141207' of git://gitorious.org/linux-can/linux-can-next · 602de7ea
      David S. Miller authored
      Marc Kleine-Budde says:
      
      ====================
      pull-request: can-next 2014-12-07
      
      this is a pull request of 8 patches for net-next/master.
      
      Andri Yngvason contributes 4 patches in which the CAN state change
      handling is consolidated and unified among the sja1000, mscan and
      flexcan driver. The three patches by Jeremiah Mahler fix spelling
      mistakes and eliminate the banner[] variable in various parts. And a
      patch by me that switches on sparse endianess checking by default.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      602de7ea
    • Eric Dumazet's avatar
      tcp: refine TSO autosizing · 605ad7f1
      Eric Dumazet authored
      Commit 95bd09eb ("tcp: TSO packets automatic sizing") tried to
      control TSO size, but did this at the wrong place (sendmsg() time)
      
      At sendmsg() time, we might have a pessimistic view of flow rate,
      and we end up building very small skbs (with 2 MSS per skb).
      
      This is bad because :
      
       - It sends small TSO packets even in Slow Start where rate quickly
         increases.
       - It tends to make socket write queue very big, increasing tcp_ack()
         processing time, but also increasing memory needs, not necessarily
         accounted for, as fast clones overhead is currently ignored.
       - Lower GRO efficiency and more ACK packets.
      
      Servers with a lot of small lived connections suffer from this.
      
      Lets instead fill skbs as much as possible (64KB of payload), but split
      them at xmit time, when we have a precise idea of the flow rate.
      skb split is actually quite efficient.
      
      Patch looks bigger than necessary, because TCP Small Queue decision now
      has to take place after the eventual split.
      
      As Neal suggested, introduce a new tcp_tso_autosize() helper, so that
      tcp_tso_should_defer() can be synchronized on same goal.
      
      Rename tp->xmit_size_goal_segs to tp->gso_segs, as this variable
      contains number of mss that we can put in GSO packet, and is not
      related to the autosizing goal anymore.
      
      Tested:
      
      40 ms rtt link
      
      nstat >/dev/null
      netperf -H remote -l -2000000 -- -s 1000000
      nstat | egrep "IpInReceives|IpOutRequests|TcpOutSegs|IpExtOutOctets"
      
      Before patch :
      
      Recv   Send    Send
      Socket Socket  Message  Elapsed
      Size   Size    Size     Time     Throughput
      bytes  bytes   bytes    secs.    10^6bits/s
      
       87380 2000000 2000000    0.36         44.22
      IpInReceives                    600                0.0
      IpOutRequests                   599                0.0
      TcpOutSegs                      1397               0.0
      IpExtOutOctets                  2033249            0.0
      
      After patch :
      
      Recv   Send    Send
      Socket Socket  Message  Elapsed
      Size   Size    Size     Time     Throughput
      bytes  bytes   bytes    secs.    10^6bits/sec
      
       87380 2000000 2000000    0.36       44.27
      IpInReceives                    221                0.0
      IpOutRequests                   232                0.0
      TcpOutSegs                      1397               0.0
      IpExtOutOctets                  2013953            0.0
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarNeal Cardwell <ncardwell@google.com>
      Acked-by: default avatarYuchung Cheng <ycheng@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      605ad7f1
    • Al Viro's avatar
      bury memcpy_toiovec() · 218321e7
      Al Viro authored
      no users left
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      218321e7
    • Al Viro's avatar
      skb_copy_datagram_iovec() can die · d3a9632f
      Al Viro authored
      no callers other than itself.
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      d3a9632f
    • Al Viro's avatar
      ppp_read(): switch to skb_copy_datagram_iter() · ba568408
      Al Viro authored
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      ba568408
    • Al Viro's avatar
      switch memcpy_to_msg() and skb_copy{,_and_csum}_datagram_msg() to primitives · e5a4b0bb
      Al Viro authored
      ... making both non-draining.  That means that tcp_recvmsg() becomes
      non-draining.  And _that_ would break iscsit_do_rx_data() unless we
      	a) make sure tcp_recvmsg() is uniformly non-draining (it is)
      	b) make sure it copes with arbitrary (including shifted)
      iov_iter (it does, all it uses is iov_iter primitives)
      	c) make iscsit_do_rx_data() initialize ->msg_iter only once.
      
      Fortunately, (c) is doable with minimal work and we are rid of one
      the two places where kernel send/recvmsg users would be unhappy with
      non-draining behaviour.
      
      Actually, that makes all but one of ->recvmsg() instances iov_iter-clean.
      The exception is skcipher_recvmsg() and it also isn't hard to convert
      to primitives (iov_iter_get_pages() is needed there).  That'll wait
      a bit - there's some interplay with ->sendmsg() path for that one.
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      e5a4b0bb
    • Al Viro's avatar
      first fruits - kill l2cap ->memcpy_fromiovec() · 17836394
      Al Viro authored
      Just use copy_from_iter().  That's what this method is trying to do
      in all cases, in a very convoluted fashion.
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      17836394
    • Al Viro's avatar
      put iov_iter into msghdr · c0371da6
      Al Viro authored
      Note that the code _using_ ->msg_iter at that point will be very
      unhappy with anything other than unshifted iovec-backed iov_iter.
      We still need to convert users to proper primitives.
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      c0371da6
    • Al Viro's avatar
      vmci: propagate msghdr all way down to __qp_memcpy_from_queue() · d838df2e
      Al Viro authored
      ... and switch it to memcpy_to_msg()
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      d838df2e
    • Al Viro's avatar
      switch l2cap ->memcpy_fromiovec() to msghdr · 56c39fb6
      Al Viro authored
      it'll die soon enough - now that kvec-backed iov_iter works regardless
      of set_fs(), both instances will become copy_from_iter() as soon as
      we introduce ->msg_iter...
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      56c39fb6
    • Al Viro's avatar
    • Al Viro's avatar
    • Al Viro's avatar
    • Al Viro's avatar
      raw.c: stick msghdr into raw_frag_vec · b61e9dcc
      Al Viro authored
      we'll want access to ->msg_iter
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      b61e9dcc
    • Al Viro's avatar
      Merge branch 'iov_iter' into for-davem-2 · c7f36857
      Al Viro authored
      c7f36857
    • Julia Lawall's avatar
      chelsio: fix misspelling of current function in string · 5e84e189
      Julia Lawall authored
      Replace a misspelled function name by %s and then __func__.
      
      This was done using Coccinelle, including the use of Levenshtein distance,
      as proposed by Rasmus Villemoes.
      Signed-off-by: default avatarJulia Lawall <Julia.Lawall@lip6.fr>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5e84e189
    • Julia Lawall's avatar
      hp100: fix misspelling of current function in string · d954e879
      Julia Lawall authored
      Replace a misspelled function name by %s and then __func__.
      
      This was done using Coccinelle, including the use of Levenshtein distance,
      as proposed by Rasmus Villemoes.
      Signed-off-by: default avatarJulia Lawall <Julia.Lawall@lip6.fr>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d954e879