rxrpc: Rewrite the data and ack handling code
Rewrite the data and ack handling code such that: (1) Parsing of received ACK and ABORT packets and the distribution and the filing of DATA packets happens entirely within the data_ready context called from the UDP socket. This allows us to process and discard ACK and ABORT packets much more quickly (they're no longer stashed on a queue for a background thread to process). (2) We avoid calling skb_clone(), pskb_pull() and pskb_trim(). We instead keep track of the offset and length of the content of each packet in the sk_buff metadata. This means we don't do any allocation in the receive path. (3) Jumbo DATA packet parsing is now done in data_ready context. Rather than cloning the packet once for each subpacket and pulling/trimming it, we file the packet multiple times with an annotation for each indicating which subpacket is there. From that we can directly calculate the offset and length. (4)...
Showing
- fs/afs/rxrpc.c 3 additions, 48 deletionsfs/afs/rxrpc.c
- include/net/af_rxrpc.h 0 additions, 3 deletionsinclude/net/af_rxrpc.h
- include/rxrpc/packet.h 7 additions, 0 deletionsinclude/rxrpc/packet.h
- net/rxrpc/af_rxrpc.c 47 additions, 10 deletionsnet/rxrpc/af_rxrpc.c
- net/rxrpc/ar-internal.h 94 additions, 83 deletionsnet/rxrpc/ar-internal.h
- net/rxrpc/call_accept.c 189 additions, 283 deletionsnet/rxrpc/call_accept.c
- net/rxrpc/call_event.c 193 additions, 1164 deletionsnet/rxrpc/call_event.c
- net/rxrpc/call_object.c 147 additions, 388 deletionsnet/rxrpc/call_object.c
- net/rxrpc/conn_event.c 18 additions, 119 deletionsnet/rxrpc/conn_event.c
- net/rxrpc/conn_object.c 5 additions, 1 deletionnet/rxrpc/conn_object.c
- net/rxrpc/conn_service.c 12 additions, 89 deletionsnet/rxrpc/conn_service.c
- net/rxrpc/input.c 533 additions, 511 deletionsnet/rxrpc/input.c
- net/rxrpc/insecure.c 9 additions, 4 deletionsnet/rxrpc/insecure.c
- net/rxrpc/local_event.c 1 addition, 1 deletionnet/rxrpc/local_event.c
- net/rxrpc/local_object.c 0 additions, 7 deletionsnet/rxrpc/local_object.c
- net/rxrpc/misc.c 1 addition, 1 deletionnet/rxrpc/misc.c
- net/rxrpc/output.c 116 additions, 9 deletionsnet/rxrpc/output.c
- net/rxrpc/peer_event.c 4 additions, 13 deletionsnet/rxrpc/peer_event.c
- net/rxrpc/peer_object.c 59 additions, 23 deletionsnet/rxrpc/peer_object.c
- net/rxrpc/recvmsg.c 424 additions, 340 deletionsnet/rxrpc/recvmsg.c
Please register or sign in to comment