1. 25 11月, 2016 4 次提交
    • E
      tcp: enhance tcp_collapse_retrans() with skb_shift() · f8071cde
      Eric Dumazet 提交于
      In commit 2331ccc5 ("tcp: enhance tcp collapsing"),
      we made a first step allowing copying right skb to left skb head.
      
      Since all skbs in socket write queue are headless (but possibly the very
      first one), this strategy often does not work.
      
      This patch extends tcp_collapse_retrans() to perform frag shifting,
      thanks to skb_shift() helper.
      
      This helper needs to not BUG on non headless skbs, as callers are ok
      with that.
      
      Tested:
      
      Following packetdrill test now passes :
      
      0.000 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
         +0 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
         +0 bind(3, ..., ...) = 0
         +0 listen(3, 1) = 0
      
         +0 < S 0:0(0) win 32792 <mss 1460,sackOK,nop,nop,nop,wscale 8>
         +0 > S. 0:0(0) ack 1 <mss 1460,nop,nop,sackOK,nop,wscale 8>
      +.100 < . 1:1(0) ack 1 win 257
         +0 accept(3, ..., ...) = 4
      
         +0 setsockopt(4, SOL_TCP, TCP_NODELAY, [1], 4) = 0
         +0 write(4, ..., 200) = 200
         +0 > P. 1:201(200) ack 1
      +.001 write(4, ..., 200) = 200
         +0 > P. 201:401(200) ack 1
      +.001 write(4, ..., 200) = 200
         +0 > P. 401:601(200) ack 1
      +.001 write(4, ..., 200) = 200
         +0 > P. 601:801(200) ack 1
      +.001 write(4, ..., 200) = 200
         +0 > P. 801:1001(200) ack 1
      +.001 write(4, ..., 100) = 100
         +0 > P. 1001:1101(100) ack 1
      +.001 write(4, ..., 100) = 100
         +0 > P. 1101:1201(100) ack 1
      +.001 write(4, ..., 100) = 100
         +0 > P. 1201:1301(100) ack 1
      +.001 write(4, ..., 100) = 100
         +0 > P. 1301:1401(100) ack 1
      
      +.099 < . 1:1(0) ack 201 win 257
      +.001 < . 1:1(0) ack 201 win 257 <nop,nop,sack 1001:1401>
         +0 > P. 201:1001(800) ack 1
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Cc: Neal Cardwell <ncardwell@google.com>
      Cc: Yuchung Cheng <ycheng@google.com>
      Acked-by: NYuchung Cheng <ycheng@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f8071cde
    • S
      net: dsa: mv88e6xxx: add MV88E6097 switch · 7d381a02
      Stefan Eichenberger 提交于
      Add support for the MV88E6097 switch. The change was tested on an Armada
      based platform with a MV88E6097 switch.
      Signed-off-by: NStefan Eichenberger <stefan.eichenberger@netmodule.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7d381a02
    • U
      net/phy: add trace events for mdio accesses · e22e996b
      Uwe Kleine-König 提交于
      Make it possible to generate trace events for mdio read and write accesses.
      Signed-off-by: NUwe Kleine-König <uwe@kleine-koenig.org>
      Acked-by: NSteven Rostedt <rostedt@goodmis.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e22e996b
    • S
      VSOCK: add loopback to virtio_transport · b9116823
      Stefan Hajnoczi 提交于
      The VMware VMCI transport supports loopback inside virtual machines.
      This patch implements loopback for virtio-vsock.
      
      Flow control is handled by the virtio-vsock protocol as usual.  The
      sending process stops transmitting on a connection when the peer's
      receive buffer space is exhausted.
      
      Cathy Avery <cavery@redhat.com> noticed this difference between VMCI and
      virtio-vsock when a test case using loopback failed.  Although loopback
      isn't the main point of AF_VSOCK, it is useful for testing and
      virtio-vsock must match VMCI semantics so that userspace programs run
      regardless of the underlying transport.
      
      My understanding is that loopback is not supported on the host side with
      VMCI.  Follow that by implementing it only in the guest driver, not the
      vhost host driver.
      
      Cc: Jorgen Hansen <jhansen@vmware.com>
      Reported-by: NCathy Avery <cavery@redhat.com>
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b9116823
  2. 23 11月, 2016 1 次提交
    • D
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · f9aa9dc7
      David S. Miller 提交于
      All conflicts were simple overlapping changes except perhaps
      for the Thunder driver.
      
      That driver has a change_mtu method explicitly for sending
      a message to the hardware.  If that fails it returns an
      error.
      
      Normally a driver doesn't need an ndo_change_mtu method becuase those
      are usually just range changes, which are now handled generically.
      But since this extra operation is needed in the Thunder driver, it has
      to stay.
      
      However, if the message send fails we have to restore the original
      MTU before the change because the entire call chain expects that if
      an error is thrown by ndo_change_mtu then the MTU did not change.
      Therefore code is added to nicvf_change_mtu to remember the original
      MTU, and to restore it upon nicvf_update_hw_max_frs() failue.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f9aa9dc7
  3. 22 11月, 2016 35 次提交