From: David Howells <dhowells@redhat.com>
To: netdev@vger.kernel.org
Cc: David Howells <dhowells@redhat.com>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Marc Dionne <marc.dionne@auristor.com>,
linux-afs@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: [PATCH net-next 00/13] rxrpc: Increasing SACK size and moving away from softirq, part 5
Date: Tue, 31 Jan 2023 17:12:14 +0000 [thread overview]
Message-ID: <20230131171227.3912130-1-dhowells@redhat.com> (raw)
Here's the fifth part 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.
The full description is in the description for the first part[1] which is
now upstream. The second and third parts are also upstream[2]. A subset
of the original fourth part[3] got applied as a fix for a race[4].
The fifth part includes some cleanups:
(1) Miscellaneous trace header cleanups: fix a trace string, display the
security index in rx_packet rather than displaying the type twice,
remove some whitespace to make checkpatch happier and remove some
excess tabulation.
(2) Convert ->recvmsg_lock to a spinlock as it's only ever locked
exclusively.
(3) Make ->ackr_window and ->ackr_nr_unacked non-atomic as they're only
used in the I/O thread.
(4) Don't use call->tx_lock to access ->tx_buffer as that is only accessed
inside the I/O thread. sendmsg() loads onto ->tx_sendmsg and the I/O
thread decants from that to the buffer.
(5) Remove local->defrag_sem as DATA packets are transmitted serially by
the I/O thread.
(6) Remove the service connection bundle is it was only used for its
channel_lock - which has now gone.
And some more significant changes:
(7) Add a debugging option to allow a delay to be injected into packet
reception to help investigate the behaviour over longer links than
just a few cm.
(8) Generate occasional PING ACKs to probe for RTT information during a
receive heavy call.
(9) Simplify the SACK table maintenance and ACK generation. Now that both
parts are done in the same thread, there's no possibility of a race
and no need to try and be cunning to avoid taking a BH spinlock whilst
copying the SACK table (which in the future will be up to 2K) and no
need to rotate the copy to fit the ACK packet table.
(10) Use SKB_CONSUMED when freeing received DATA packets (stop dropwatch
complaining).
The patches are tagged here:
git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git tags/rxrpc-next-20230131
And can be found on this branch:
http://git.kernel.org/cgit/linux/kernel/git/dhowells/linux-fs.git/log/?h=rxrpc-next
David
Link: https://lore.kernel.org/r/166794587113.2389296.16484814996876530222.stgit@warthog.procyon.org.uk/ [1]
Link: https://lore.kernel.org/r/166994010342.1732290.13771061038178613124.stgit@warthog.procyon.org.uk/ [2]
Link: https://lore.kernel.org/r/167034231605.1105287.1693064952174322878.stgit@warthog.procyon.org.uk/ [3]
Link: https://lore.kernel.org/r/167308517118.1538866.3440481802366869065.stgit@warthog.procyon.org.uk/ [4]
David Howells (13):
rxrpc: Fix trace string
rxrpc: Remove whitespace before ')' in trace header
rxrpc: Shrink the tabulation in the rxrpc trace header a bit
rxrpc: Convert call->recvmsg_lock to a spinlock
rxrpc: Allow a delay to be injected into packet reception
rxrpc: Generate extra pings for RTT during heavy-receive call
rxrpc: De-atomic call->ackr_window and call->ackr_nr_unacked
rxrpc: Simplify ACK handling
rxrpc: Don't lock call->tx_lock to access call->tx_buffer
rxrpc: Remove local->defrag_sem
rxrpc: Show consumed and freed packets as non-dropped in dropwatch
rxrpc: Change rx_packet tracepoint to display securityIndex not type
twice
rxrpc: Kill service bundle
include/trace/events/rxrpc.h | 480 +++++++++++++++++++----------------
net/rxrpc/Kconfig | 9 +
net/rxrpc/af_rxrpc.c | 2 +-
net/rxrpc/ar-internal.h | 15 +-
net/rxrpc/call_accept.c | 2 +-
net/rxrpc/call_event.c | 15 +-
net/rxrpc/call_object.c | 7 +-
net/rxrpc/conn_service.c | 7 -
net/rxrpc/input.c | 60 ++---
net/rxrpc/io_thread.c | 48 +++-
net/rxrpc/local_object.c | 7 +-
net/rxrpc/misc.c | 7 +
net/rxrpc/output.c | 69 ++---
net/rxrpc/proc.c | 4 +-
net/rxrpc/recvmsg.c | 18 +-
net/rxrpc/skbuff.c | 4 +-
net/rxrpc/sysctl.c | 17 +-
net/rxrpc/txbuf.c | 12 +-
18 files changed, 438 insertions(+), 345 deletions(-)
next reply other threads:[~2023-01-31 17:13 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-31 17:12 David Howells [this message]
2023-01-31 17:12 ` [PATCH net-next 01/13] rxrpc: Fix trace string David Howells
2023-01-31 17:12 ` [PATCH net-next 02/13] rxrpc: Remove whitespace before ')' in trace header David Howells
2023-01-31 17:12 ` [PATCH net-next 03/13] rxrpc: Shrink the tabulation in the rxrpc trace header a bit David Howells
2023-01-31 17:12 ` [PATCH net-next 04/13] rxrpc: Convert call->recvmsg_lock to a spinlock David Howells
2023-01-31 17:12 ` [PATCH net-next 05/13] rxrpc: Allow a delay to be injected into packet reception David Howells
2023-01-31 17:12 ` [PATCH net-next 06/13] rxrpc: Generate extra pings for RTT during heavy-receive call David Howells
2023-01-31 17:12 ` [PATCH net-next 07/13] rxrpc: De-atomic call->ackr_window and call->ackr_nr_unacked David Howells
2023-01-31 17:12 ` [PATCH net-next 08/13] rxrpc: Simplify ACK handling David Howells
2023-01-31 17:12 ` [PATCH net-next 09/13] rxrpc: Don't lock call->tx_lock to access call->tx_buffer David Howells
2023-01-31 17:12 ` [PATCH net-next 10/13] rxrpc: Remove local->defrag_sem David Howells
2023-01-31 17:12 ` [PATCH net-next 11/13] rxrpc: Show consumed and freed packets as non-dropped in dropwatch David Howells
2023-02-02 10:42 ` Paolo Abeni
2023-01-31 17:12 ` [PATCH net-next 12/13] rxrpc: Change rx_packet tracepoint to display securityIndex not type twice David Howells
2023-01-31 17:12 ` [PATCH net-next 13/13] rxrpc: Kill service bundle David Howells
2023-02-02 12:10 ` [PATCH net-next 00/13] rxrpc: Increasing SACK size and moving away from softirq, part 5 patchwork-bot+netdevbpf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230131171227.3912130-1-dhowells@redhat.com \
--to=dhowells@redhat.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=kuba@kernel.org \
--cc=linux-afs@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=marc.dionne@auristor.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®