Per-entrypoint DevMap
s and Mailbox
es
#710
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR provides every possible entrypoint with its own (mutex-wrapped) context, so that the Tx and Rx paths no longer contend over a single
KRwLock
. The role of these contexts is to provide a port lookup map for delivery to local ports in both underlay rx and loopback. These entrypoints are one per OPTE port (in the tx case), and one for every CPU on every underlay link (as we don't know the full set of thread bindings who might call into us). Addition/removal of a port then goes through all entrypoints one by one and updates them in turn.The very useful part of this is that we have a convenient place to build and store chains of packets bound toward a single sender -- and on top of the
siphon
branch, we do have sets of packets needing batched up for delivery to mac. The Rx path now first deposits processed packets into chains by target port (keyed on MAC+VNI). Onglasgow
this looks to get us 16Gbps single stream (with no bump to aggregate/-P2
and upwards throughput).Closes #689.