1. 29 Apr, 2016 36 commits
  2. 28 Apr, 2016 4 commits
    • Mahesh Bandewar's avatar
      ipvlan: Fix failure path in dev registration during link creation · 494e8489
      Mahesh Bandewar authored
      When newlink creation fails at device-registration, the port->count
      is decremented twice. Francesco Ruggeri (fruggeri@arista.com) found
      this issue in Macvlan and the same exists in IPvlan driver too.
      
      While fixing this issue I noticed another issue of missing unregister
      in case of failure, so adding it to the fix which is similar to the
      macvlan fix by Francesco in commit 30837960 ("macvlan: fix failure
      during registration v3")
      Reported-by: default avatarFrancesco Ruggeri <fruggeri@arista.com>
      Signed-off-by: default avatarMahesh Bandewar <maheshb@google.com>
      CC: Eric Dumazet <edumazet@google.com>
      CC: Eric W. Biederman <ebiederm@xmission.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      494e8489
    • françois romieu's avatar
      pch_gbe: replace private tx ring lock with common netif_tx_lock · 222e4d0b
      françois romieu authored
      pch_gbe_tx_ring.tx_lock is only used in the hard_xmit handler and
      in the transmit completion reaper called from NAPI context.
      
      Compile-tested only. Potential victims Cced.
      
      Someone more knowledgeable may check if pch_gbe_tx_queue could
      have some use for a mmiowb.
      Signed-off-by: default avatarFrancois Romieu <romieu@fr.zoreil.com>
      Cc: Darren Hart <dvhart@infradead.org>
      Cc: Andy Cress <andy.cress@us.kontron.com>
      Cc: bryan@fossetcon.org
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      222e4d0b
    • Florian Fainelli's avatar
      net: dsa: Provide CPU port statistics to master netdev · badf3ada
      Florian Fainelli authored
      This patch overloads the DSA master netdev, aka CPU Ethernet MAC to also
      include switch-side statistics, which is useful for debugging purposes,
      when the switch is not properly connected to the Ethernet MAC (duplex
      mismatch, (RG)MII electrical issues etc.).
      
      We accomplish this by retaining the original copy of the master netdev's
      ethtool_ops, and just overload the 3 operations we care about:
      get_sset_count, get_strings and get_ethtool_stats so as to intercept
      these calls and call into the original master_netdev ethtool_ops, plus
      our own.
      
      We take this approach as opposed to providing a set of DSA helper
      functions that would retrive the CPU port's statistics, because the
      entire purpose of DSA is to allow unmodified Ethernet MAC drivers to be
      used as CPU conduit interfaces, therefore, statistics overlay in such
      drivers would simply not scale.
      
      The new ethtool -S <iface> output would therefore look like this now:
      <iface> statistics
      p<2 digits cpu port number>_<switch MIB counter names>
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      badf3ada
    • Eric Dumazet's avatar
      tcp: give prequeue mode some care · 0cef6a4c
      Eric Dumazet authored
      TCP prequeue goal is to defer processing of incoming packets
      to user space thread currently blocked in a recvmsg() system call.
      
      Intent is to spend less time processing these packets on behalf
      of softirq handler, as softirq handler is unfair to normal process
      scheduler decisions, as it might interrupt threads that do not
      even use networking.
      
      Current prequeue implementation has following issues :
      
      1) It only checks size of the prequeue against sk_rcvbuf
      
         It was fine 15 years ago when sk_rcvbuf was in the 64KB vicinity.
         But we now have ~8MB values to cope with modern networking needs.
         We have to add sk_rmem_alloc in the equation, since out of order
         packets can definitely use up to sk_rcvbuf memory themselves.
      
      2) Even with a fixed memory truesize check, prequeue can be filled
         by thousands of packets. When prequeue needs to be flushed, either
         from sofirq context (in tcp_prequeue() or timer code), or process
         context (in tcp_prequeue_process()), this adds a latency spike
         which is often not desirable.
         I added a fixed limit of 32 packets, as this translated to a max
         flush time of 60 us on my test hosts.
      
         Also note that all packets in prequeue are not accounted for tcp_mem,
         since they are not charged against sk_forward_alloc at this point.
         This is probably not a big deal.
      
      Note that this might increase LINUX_MIB_TCPPREQUEUEDROPPED counts,
      which is misnamed, as packets are not dropped at all, but rather pushed
      to the stack (where they can be either consumed or dropped)
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0cef6a4c