1*6db21d81SMika WesterbergWhat: /sys/kernel/config/thunderbolt/stream/<xdomain>.<service> 2*6db21d81SMika WesterbergDate: Sep 2026 3*6db21d81SMika WesterbergKernelVersion: v7.2 4*6db21d81SMika WesterbergContact: Mika Westerberg <mika.westerberg@linux.intel.com> 5*6db21d81SMika WesterbergDescription: 6*6db21d81SMika Westerberg Configuration group for a stream Thunderbolt/USB4 7*6db21d81SMika Westerberg service. It is possible to create groups even if there 8*6db21d81SMika Westerberg is no connection yet to the other host. Once a 9*6db21d81SMika Westerberg connection established and there is stream service on 10*6db21d81SMika Westerberg the remote side that matches, this configuration is 11*6db21d81SMika Westerberg applied to it. 12*6db21d81SMika Westerberg 13*6db21d81SMika Westerberg To find the service name you can run tblist from tbtools [1]: 14*6db21d81SMika Westerberg 15*6db21d81SMika Westerberg # tblist -A 16*6db21d81SMika Westerberg ... 17*6db21d81SMika Westerberg Domain 0 Route 3 Index 0: stream 18*6db21d81SMika Westerberg 19*6db21d81SMika Westerberg [1] https://github.com/intel/tbtools 20*6db21d81SMika Westerberg 21*6db21d81SMika WesterbergWhat: /sys/kernel/config/thunderbolt/stream/<xdomain>.<service>/$name 22*6db21d81SMika WesterbergDate: Sep 2026 23*6db21d81SMika WesterbergKernelVersion: v7.2 24*6db21d81SMika WesterbergContact: Mika Westerberg <mika.westerberg@linux.intel.com> 25*6db21d81SMika WesterbergDescription: 26*6db21d81SMika Westerberg Creates new stream with $name and fills it with the 27*6db21d81SMika Westerberg default values. If there is an advertised remote stream 28*6db21d81SMika Westerberg with the same name, uses its values as the default. 29*6db21d81SMika Westerberg 30*6db21d81SMika WesterbergWhat: /sys/kernel/config/thunderbolt/stream/<xdomain>.<service>/$name/index 31*6db21d81SMika WesterbergDate: Sep 2026 32*6db21d81SMika WesterbergKernelVersion: v7.2 33*6db21d81SMika WesterbergContact: Mika Westerberg <mika.westerberg@linux.intel.com> 34*6db21d81SMika WesterbergDescription: 35*6db21d81SMika Westerberg This matches the X in /dev/tbstreamX and allows userspace 36*6db21d81SMika Westerberg to map the configfs directory to the corresponding character 37*6db21d81SMika Westerberg device. 38*6db21d81SMika Westerberg 39*6db21d81SMika WesterbergWhat: /sys/kernel/config/thunderbolt/stream/<xdomain>.<service>/$name/in_hopid 40*6db21d81SMika WesterbergDate: Sep 2026 41*6db21d81SMika WesterbergKernelVersion: v7.2 42*6db21d81SMika WesterbergContact: Mika Westerberg <mika.westerberg@linux.intel.com> 43*6db21d81SMika WesterbergDescription: 44*6db21d81SMika Westerberg In HopID used with the read path of the tunnel. Available HopIDs 45*6db21d81SMika Westerberg for tunneling start from 8. You can pass also -1 for automatic 46*6db21d81SMika Westerberg allocation. The allocated value can be read here. Writing 0 will 47*6db21d81SMika Westerberg de-allocate if the stream is not in use. 48*6db21d81SMika Westerberg 49*6db21d81SMika Westerberg To figure out the maximum HopID you can run tbget from 50*6db21d81SMika Westerberg tbtools for the lane adapter. For example below we check 51*6db21d81SMika Westerberg for lane adapter number 1 (first USB4 port): 52*6db21d81SMika Westerberg 53*6db21d81SMika Westerberg # tbget -r 0 -a 1 -D ADP_CS_5.Max\ Input\ HopID 54*6db21d81SMika Westerberg 19 55*6db21d81SMika Westerberg 56*6db21d81SMika Westerberg This allows to use anything between 8 and 19 inclusive. 57*6db21d81SMika Westerberg 58*6db21d81SMika WesterbergWhat: /sys/kernel/config/thunderbolt/stream/<xdomain>.<service>/$name/out_hopid 59*6db21d81SMika WesterbergDate: Sep 2026 60*6db21d81SMika WesterbergKernelVersion: v7.2 61*6db21d81SMika WesterbergContact: Mika Westerberg <mika.westerberg@linux.intel.com> 62*6db21d81SMika WesterbergDescription: 63*6db21d81SMika Westerberg Out HopID used with the write path of the tunnel. Available HopIDs 64*6db21d81SMika Westerberg for tunneling start from 8. You can pass also -1 for automatic 65*6db21d81SMika Westerberg allocation. The allocated value can be read here. Writing 0 will 66*6db21d81SMika Westerberg de-allocate if the stream is not in use. See @in_hopid 67*6db21d81SMika Westerberg for how to figure out the maximum HopID. 68*6db21d81SMika Westerberg 69*6db21d81SMika WesterbergWhat: /sys/kernel/config/thunderbolt/stream/<xdomain>.<service>/$name/ring_size 70*6db21d81SMika WesterbergDate: Sep 2026 71*6db21d81SMika WesterbergKernelVersion: v7.2 72*6db21d81SMika WesterbergContact: Mika Westerberg <mika.westerberg@linux.intel.com> 73*6db21d81SMika WesterbergDescription: 74*6db21d81SMika Westerberg Size of the TX/RX rings. Can be adjusted between 32 and 75*6db21d81SMika Westerberg 4096. The default is 256. 76*6db21d81SMika Westerberg 77*6db21d81SMika WesterbergWhat: /sys/kernel/config/thunderbolt/stream/<xdomain>.<service>/$name/throttling 78*6db21d81SMika WesterbergDate: Sep 2026 79*6db21d81SMika WesterbergKernelVersion: v7.2 80*6db21d81SMika WesterbergContact: Mika Westerberg <mika.westerberg@linux.intel.com> 81*6db21d81SMika WesterbergDescription: 82*6db21d81SMika Westerberg Interrupt throttling rate in ns. Lower values can give 83*6db21d81SMika Westerberg better latency. The default is 8192 ns. 84