Re: [PATCH v2 14/28] thunderbolt: Extend tunnel creation to more than 2 adjacent switches

From: Lukas Wunner
Date: Tue Feb 12 2019 - 07:54:22 EST


On Mon, Feb 11, 2019 at 10:45:58AM +0200, Mika Westerberg wrote:
> On Sun, Feb 10, 2019 at 04:33:28PM +0100, Lukas Wunner wrote:
> > at the bottom of this page there's
> > a figure showing a PCI tunnel between non-adjacent switches (blue line):
> >
> > https://developer.apple.com/library/archive/documentation/HardwareDrivers/Conceptual/ThunderboltDevGuide/Basics/Basics.html
> >
> Are you sure Apple actually uses setup like that? I think I have never
> seen such configuration happening on any of the devices I have.

Sorry, I don't know if they actually use that.


> I can update the changelog to mention that if you think it is useful.
> Something like below maybe?
>
> PCIe actually does not need this as it is typically a daisy chain
> between two adjacent switches but this way we do not need to hard-code
> creation of the tunnel.

LGTM, thanks.


> > > + i = 0;
> > > + tb_for_each_port(in_port, src, dst)
> > > + i++;
> >
> > This looks more complicated than necessary. Isn't the path length
> > always the length of the route string from in_port switch to out_port
> > switch, plus 2 for the adapter on each end? Or do paths without
> > adapters exist?
>
> Yes, I think you are right.

Simply subtracting the depths of the start and end port's switch also yields
the path length. Of course this assumes that tunnels aren't established
between non-adjacent switches, but your algorithm doesn't do that.

Thanks,

Lukas