[PATCH net-next 00/13] rxrpc: Increasing SACK size and moving away from softirq, part 2

From: David Howells
Date: Wed Nov 23 2022 - 05:20:31 EST



This is the second set of patches in the process of moving rxrpc from doing
a lot of its stuff in softirq context to doing it in an I/O thread in
process context and thereby making it easier to support a larger SACK table
(full description in part 1[1]).

[!] Note that these patches are based on a merge of a fix in net/master
with net-next/master. The fix makes a number of conflicting changes,
so it's better if this set is built on top of it.

This set of patches includes some cleanups, adds some testing and overhauls
some tracing:

(1) Remove declaration of rxrpc_kernel_call_is_complete() as the
definition is no longer present.

(2) Remove the knet() and kproto() macros in favour of using tracepoints.

(3) Remove handling of duplicate packets from recvmsg. The input side
isn't now going to insert overlapping/duplicate packets into the
recvmsg queue.

(4) Don't use the rxrpc_conn_parameters struct in the rxrpc_connection or
rxrpc_bundle structs - rather put the members in directly.

(5) Extract the abort code from a received abort packet right up front
rather than doing it in multiple places later.

(6) Use enums and symbol lists rather than __builtin_return_address() to
indicate where a tracepoint was triggered for local, peer, conn, call
and skbuff tracing.

(7) Add a refcount tracepoint for the rxrpc_bundle struct.

(8) Implement an in-kernel server for the AFS rxperf testing program to
talk to (enabled by a Kconfig option).

Link: https://lore.kernel.org/r/166794587113.2389296.16484814996876530222.stgit@xxxxxxxxxxxxxxxxxxxxxx/ [1]

---
The patches are tagged here:

git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git tags/rxrpc-next-20221121

And can be found on this branch:

http://git.kernel.org/cgit/linux/kernel/git/dhowells/linux-fs.git/log/?h=rxrpc-next

David
---
David Howells (13):
rxrpc: Implement an in-kernel rxperf server for testing purposes
rxrpc: Remove decl for rxrpc_kernel_call_is_complete()
rxrpc: Remove handling of duplicate packets in recvmsg_queue
rxrpc: Remove the [k_]proto() debugging macros
rxrpc: Remove the [_k]net() debugging macros
rxrpc: Drop rxrpc_conn_parameters from rxrpc_connection and rxrpc_bundle
rxrpc: Extract the code from a received ABORT packet much earlier
rxrpc: trace: Don't use __builtin_return_address for rxrpc_local tracing
rxrpc: trace: Don't use __builtin_return_address for rxrpc_peer tracing
rxrpc: trace: Don't use __builtin_return_address for rxrpc_conn tracing
rxrpc: trace: Don't use __builtin_return_address for rxrpc_call tracing
rxrpc: Trace rxrpc_bundle refcount
rxrpc: trace: Don't use __builtin_return_address for sk_buff tracing


include/net/af_rxrpc.h | 2 +-
include/trace/events/rxrpc.h | 385 +++++++++++++++-------
net/rxrpc/Kconfig | 7 +
net/rxrpc/Makefile | 3 +
net/rxrpc/af_rxrpc.c | 10 +-
net/rxrpc/ar-internal.h | 121 ++++---
net/rxrpc/call_accept.c | 39 +--
net/rxrpc/call_event.c | 18 +-
net/rxrpc/call_object.c | 120 +++----
net/rxrpc/conn_client.c | 112 ++++---
net/rxrpc/conn_event.c | 52 ++-
net/rxrpc/conn_object.c | 66 ++--
net/rxrpc/conn_service.c | 15 +-
net/rxrpc/input.c | 103 +++---
net/rxrpc/key.c | 2 +-
net/rxrpc/local_event.c | 7 +-
net/rxrpc/local_object.c | 85 +++--
net/rxrpc/output.c | 45 ++-
net/rxrpc/peer_event.c | 74 +----
net/rxrpc/peer_object.c | 44 ++-
net/rxrpc/proc.c | 6 +-
net/rxrpc/recvmsg.c | 32 +-
net/rxrpc/rxkad.c | 63 ++--
net/rxrpc/rxperf.c | 614 +++++++++++++++++++++++++++++++++++
net/rxrpc/security.c | 4 +-
net/rxrpc/sendmsg.c | 6 +-
net/rxrpc/server_key.c | 25 ++
net/rxrpc/skbuff.c | 36 +-
28 files changed, 1403 insertions(+), 693 deletions(-)
create mode 100644 net/rxrpc/rxperf.c