xref: /linux/Documentation/ABI/testing/configfs-thunderbolt_stream (revision 67f8bc848ee31831336bd478e57d2f993551902e)
1What:		/sys/kernel/config/thunderbolt/stream/<xdomain>.<service>
2Date:		Sep 2026
3KernelVersion:	v7.2
4Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
5Description:
6		Configuration group for a stream Thunderbolt/USB4
7		service. It is possible to create groups even if there
8		is no connection yet to the other host. Once a
9		connection established and there is stream service on
10		the remote side that matches, this configuration is
11		applied to it.
12
13		To find the service name you can run tblist from tbtools [1]:
14
15		  # tblist -A
16		  ...
17		  Domain 0 Route 3 Index 0: stream
18
19		[1] https://github.com/intel/tbtools
20
21What:		/sys/kernel/config/thunderbolt/stream/<xdomain>.<service>/$name
22Date:		Sep 2026
23KernelVersion:	v7.2
24Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
25Description:
26		Creates new stream with $name and fills it with the
27		default values. If there is an advertised remote stream
28		with the same name, uses its values as the default.
29
30What:		/sys/kernel/config/thunderbolt/stream/<xdomain>.<service>/$name/busy_poll
31Date:		Nov 2026
32KernelVersion:	v7.3
33Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
34Description:
35		Instead of using interrupts for completing the frames in
36		the TX/RX rings, busy poll them directly from the
37		read(2) and write(2) calls. This burns more CPU cycles
38		but provides lower latency for applications that need it.
39
40		This also makes poll(2) return EPOLLERR because
41		interrupts do not provide wakeup anymore. Likewise a
42		blocking read(2) without available data busy-spins until
43		data arrives or a signal is received.
44
45What:		/sys/kernel/config/thunderbolt/stream/<xdomain>.<service>/$name/index
46Date:		Sep 2026
47KernelVersion:	v7.2
48Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
49Description:
50		This matches the X in /dev/tbstreamX and allows userspace
51		to map the configfs directory to the corresponding character
52		device.
53
54What:		/sys/kernel/config/thunderbolt/stream/<xdomain>.<service>/$name/in_hopid
55Date:		Sep 2026
56KernelVersion:	v7.2
57Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
58Description:
59		In HopID used with the read path of the tunnel. Available HopIDs
60		for tunneling start from 8. You can pass also -1 for automatic
61		allocation. The allocated value can be read here. Writing 0 will
62		de-allocate if the stream is not in use.
63
64		To figure out the maximum HopID you can run tbget from
65		tbtools for the lane adapter. For example below we check
66		for lane adapter number 1 (first USB4 port):
67
68		  # tbget -r 0 -a 1 -D ADP_CS_5.Max\ Input\ HopID
69		  19
70
71		This allows to use anything between 8 and 19 inclusive.
72
73What:		/sys/kernel/config/thunderbolt/stream/<xdomain>.<service>/$name/out_hopid
74Date:		Sep 2026
75KernelVersion:	v7.2
76Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
77Description:
78		Out HopID used with the write path of the tunnel. Available HopIDs
79		for tunneling start from 8. You can pass also -1 for automatic
80		allocation. The allocated value can be read here. Writing 0 will
81		de-allocate if the stream is not in use. See @in_hopid
82		for how to figure out the maximum HopID.
83
84What:		/sys/kernel/config/thunderbolt/stream/<xdomain>.<service>/$name/ring_size
85Date:		Sep 2026
86KernelVersion:	v7.2
87Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
88Description:
89		Size of the TX/RX rings. Can be adjusted between 32 and
90		4096. The default is 256.
91
92What:		/sys/kernel/config/thunderbolt/stream/<xdomain>.<service>/$name/throttling
93Date:		Sep 2026
94KernelVersion:	v7.2
95Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
96Description:
97		Interrupt throttling rate in ns. Lower values can give
98		better latency. The default is 8192 ns.
99