Reflection
Add in a ‘reflector’ which is a special switch with an additional reflecting function.
The reflector keeps a mutable associative list of reflections, each of which is an unordered pair of WHO values.
When a type B message arrives at a downstream port of a reflector, the port number is appended and if any reflection matches that, the other member of the reflection is substituted and the message is forwarded on a downstream port as a type A message.
The reflection table is modified only by type A messages from the root complex.
Any pair of endpoints below a reflector can communicate using the reflector, if enabled from the root-complex.
The capacity of a reflection table is reported to the root complex in response to a configuration query in a type A message.
This plan requires better foresight as components are assembled into a system, so as to arrange for anticipated connections between non-root endpoints.
I imagine that my Mac needs no reflectors.