brintos

brintos / linux-shallow public Read only

0
0
Text · 4.4 KiB · 672f817 Raw
119 lines · plain
1// SPDX-License-Identifier: GPL-2.02// tcp_MAX_SKB_FRAGS test3//4// Verify that sending an iovec of tcp_MAX_SKB_FRAGS + 1 elements will5// 1) fit in a single packet without zerocopy6// 2) spill over into a second packet with zerocopy,7//    because each iovec element becomes a frag8// 3) the PSH bit is set on an skb when it runs out of fragments9 10`./defaults.sh`11 12    0 socket(..., SOCK_STREAM, IPPROTO_TCP) = 313   +0 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 014   +0 setsockopt(3, SOL_SOCKET, SO_ZEROCOPY, [1], 4) = 015 16   // Each pinned zerocopy page is fully accounted to skb->truesize.17   // This test generates a worst case packet with each frag storing18   // one byte, but increasing truesize with a page (64KB on PPC).19   +0 setsockopt(3, SOL_SOCKET, SO_SNDBUF, [2000000], 4) = 020 21   +0 bind(3, ..., ...) = 022   +0 listen(3, 1) = 023 24   +0 < S 0:0(0) win 32792 <mss 1000,sackOK,nop,nop,nop,wscale 7>25   +0 > S. 0:0(0) ack 1 <mss 1460,nop,nop,sackOK,nop,wscale 8>26   +0 < . 1:1(0) ack 1 win 25727 28   +0 accept(3, ..., ...) = 429 30   // send an iov of 18 elements: just becomes a linear skb31   +0 sendmsg(4, {msg_name(...)=...,32		  msg_iov(18)=[{..., 1}, {..., 1}, {..., 1}, {..., 1},33			       {..., 1}, {..., 1}, {..., 1}, {..., 1},34			       {..., 1}, {..., 1}, {..., 1}, {..., 1},35			       {..., 1}, {..., 1}, {..., 1}, {..., 1},36			       {..., 1}, {..., 1}],37		  msg_flags=0}, 0) = 1838 39   +0 > P. 1:19(18) ack 140   +0 < . 1:1(0) ack 19 win 25741 42   // send a zerocopy iov of 18 elements:43   +1 sendmsg(4, {msg_name(...)=...,44		  msg_iov(18)=[{..., 1}, {..., 1}, {..., 1}, {..., 1},45			       {..., 1}, {..., 1}, {..., 1}, {..., 1},46			       {..., 1}, {..., 1}, {..., 1}, {..., 1},47			       {..., 1}, {..., 1}, {..., 1}, {..., 1},48			       {..., 1}, {..., 1}],49		  msg_flags=0}, MSG_ZEROCOPY) = 1850 51   // verify that it is split in one skb of 17 frags + 1 of 1 frag52   // verify that both have the PSH bit set53   +0 > P. 19:36(17) ack 154   +0 < . 1:1(0) ack 36 win 25755 56   +0 > P. 36:37(1) ack 157   +0 < . 1:1(0) ack 37 win 25758 59   +1 recvmsg(4, {msg_name(...)=...,60                  msg_iov(1)=[{...,0}],61                  msg_flags=MSG_ERRQUEUE,62                  msg_control=[63                        {cmsg_level=CMSG_LEVEL_IP,64                         cmsg_type=CMSG_TYPE_RECVERR,65                         cmsg_data={ee_errno=0,66                                    ee_origin=SO_EE_ORIGIN_ZEROCOPY,67                                    ee_type=0,68                                    ee_code=SO_EE_CODE_ZEROCOPY_COPIED,69                                    ee_info=0,70                                    ee_data=0}}71                   ]}, MSG_ERRQUEUE) = 072 73   // send a zerocopy iov of 64 elements:74   +0 sendmsg(4, {msg_name(...)=...,75                  msg_iov(64)=[{..., 1}, {..., 1}, {..., 1}, {..., 1},76			       {..., 1}, {..., 1}, {..., 1}, {..., 1},77			       {..., 1}, {..., 1}, {..., 1}, {..., 1},78			       {..., 1}, {..., 1}, {..., 1}, {..., 1},79			       {..., 1}, {..., 1}, {..., 1}, {..., 1},80			       {..., 1}, {..., 1}, {..., 1}, {..., 1},81			       {..., 1}, {..., 1}, {..., 1}, {..., 1},82			       {..., 1}, {..., 1}, {..., 1}, {..., 1},83			       {..., 1}, {..., 1}, {..., 1}, {..., 1},84			       {..., 1}, {..., 1}, {..., 1}, {..., 1},85			       {..., 1}, {..., 1}, {..., 1}, {..., 1},86			       {..., 1}, {..., 1}, {..., 1}, {..., 1},87			       {..., 1}, {..., 1}, {..., 1}, {..., 1},88			       {..., 1}, {..., 1}, {..., 1}, {..., 1},89			       {..., 1}, {..., 1}, {..., 1}, {..., 1},90			       {..., 1}, {..., 1}, {..., 1}, {..., 1}],91                  msg_flags=0}, MSG_ZEROCOPY) = 6492 93   // verify that it is split in skbs with 17 frags94   +0 > P. 37:54(17) ack 195   +0 < . 1:1(0) ack 54 win 25796 97   +0 > P. 54:71(17) ack 198   +0 < . 1:1(0) ack 71 win 25799 100   +0 > P. 71:88(17) ack 1101   +0 < . 1:1(0) ack 88 win 257102 103   +0 > P. 88:101(13) ack 1104   +0 < . 1:1(0) ack 101 win 257105 106   +1 recvmsg(4, {msg_name(...)=...,107                  msg_iov(1)=[{...,0}],108                  msg_flags=MSG_ERRQUEUE,109                  msg_control=[110                        {cmsg_level=CMSG_LEVEL_IP,111                         cmsg_type=CMSG_TYPE_RECVERR,112                         cmsg_data={ee_errno=0,113                                    ee_origin=SO_EE_ORIGIN_ZEROCOPY,114                                    ee_type=0,115                                    ee_code=SO_EE_CODE_ZEROCOPY_COPIED,116                                    ee_info=1,117                                    ee_data=1}}118                   ]}, MSG_ERRQUEUE) = 0119