Commit 6f669205 authored by Soham Chakradeo's avatar Soham Chakradeo Committed by Jakub Kicinski
Browse files

selftests/net: packetdrill: import tcp/eor, tcp/splice, tcp/ts_recent, tcp/blocking



Use the standard import and testing method, as described in the
import of tcp/ecn and tcp/close , tcp/sack , tcp/tcp_info.

Signed-off-by: default avatarWillem de Bruijn <willemb@google.com>
Signed-off-by: default avatarSoham Chakradeo <sohamch@google.com>
Link: https://patch.msgid.link/20241217185203.297935-4-sohamch.kernel@gmail.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent eab35989
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0
// Test for blocking accept.

`./defaults.sh`

// Establish a connection.
    0 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...0.200 accept(3, ..., ...) = 4

  +.1 < S 0:0(0) win 32792 <mss 1000,nop,wscale 7>
   +0 > S. 0:0(0) ack 1 <mss 1460,nop,wscale 8>
  +.1 < . 1:1(0) ack 1 win 257

  +.1 write(4, ..., 2000) = 2000
   +0 > P. 1:2001(2000) ack 1
+13 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0
// Test for blocking connect.

`./defaults.sh`

// Establish a connection.
    0 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3

  +.1...0.200 connect(3, ..., ...) = 0

   +0 > S 0:0(0) <mss 1460,sackOK,TS val 100 ecr 0,nop,wscale 8>
  +.1 < S. 0:0(0) ack 1 win 5792 <mss 1460,nop,wscale 2,nop,nop,sackOK>
   +0 > . 1:1(0) ack 1
+29 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0
// Test for blocking read.
--tolerance_usecs=10000

`./defaults.sh`

// Establish a connection.
    0 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

  +.1 < S 0:0(0) win 32792 <mss 1000,nop,wscale 7>
   +0 > S. 0:0(0) ack 1 <mss 1460,nop,wscale 8>
  +.1 < . 1:1(0) ack 1 win 257
   +0 accept(3, ..., ...) = 4

   +0...0.100 read(4, ..., 2000) = 2000
  +.1 < P. 1:2001(2000) ack 1 win 257
   +0 > . 1:1(0) ack 2001

  +.1...0.200 read(4, ..., 2000) = 2000
  +.1 < P. 2001:4001(2000) ack 1 win 257
   +0 > . 1:1(0) ack 4001

  +.1 < P. 4001:6001(2000) ack 1 win 257
   +0 > . 1:1(0) ack 6001
   +0...0.000 read(4, ..., 1000) = 1000
   +0...0.000 read(4, ..., 1000) = 1000
+35 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0
// Test for blocking write.
--tolerance_usecs=10000

`./defaults.sh
./set_sysctls.py /proc/sys/net/ipv4/tcp_min_tso_segs=10
`

// Establish a connection.
    0 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

  +.1 < S 0:0(0) win 50000 <mss 1000,nop,wscale 0>
   +0 > S. 0:0(0) ack 1 <mss 1460,nop,wscale 8>
  +.1 < . 1:1(0) ack 1 win 50000
   +0 accept(3, ..., ...) = 4

// Kernel doubles our value -> sk->sk_sndbuf is set to 42000
   +0 setsockopt(4, SOL_SOCKET, SO_SNDBUF,  [21000], 4) = 0
   +0 getsockopt(4, SOL_SOCKET, SO_SNDBUF,  [42000], [4]) = 0

// A write of 60000 does not block.
   +0...0.300 write(4, ..., 61000) = 61000    // this write() blocks

  +.1 < . 1:1(0) ack 10001 win 50000

  +.1 < . 1:1(0) ack 30001 win 50000

// This ACK should wakeup the write(). An ACK of 35001 does not.
  +.1 < . 1:1(0) ack 36001 win 50000

// Reset to sysctls defaults.
`/tmp/sysctl_restore_${PPID}.sh`
+38 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0
// Test TCP does not append any data from consequent writes to the tail
// skb created for the chunk. The large chunk itself should be packetized as
// usual.
`./defaults.sh
`

// Initialize connection
    0 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 1000,sackOK,nop,nop,nop,wscale 10>
   +0 > S. 0:0(0) ack 1 <mss 1460,nop,nop,sackOK,nop,wscale 8>
 +.01 < . 1:1(0) ack 1 win 514

   +0 accept(3, ..., ...) = 4

// Write a 10400B chunk to fill the ICW, and have a 400 byte skb sitting on
// the tail.
   +0 write(4, ..., 10400) = 10400

// Write another 10040B chunk with no coalescing options.
   +0 send(4, ..., 10400, MSG_EOR) = 10400

// Write a 2KB chunk. This chunk should not be appended to the packets created
// the previous chunk.
   +0 write(4, ..., 2000) = 2000

   +0 > P. 1:10001(10000) ack 1
+.001 < .  1:1(0) ack 10001 win 514
// Now we have enough room to send out the 2 x 400B packets out.
   +0 > P. 10001:20801(10800) ack 1
+.001 < .  1:1(0) ack 20801 win 514
// This 2KB packet should be sent alone.
   +0 > P. 20801:22801(2000) ack 1
+.001 < .  1:1(0) ack 22801 win 514
Loading