This driver allows sending DMA traffic over XDomain connection. Specifically over a loopback connection using either a Thunderbolt/USB4 cable that is connected back to the host router port, or a special loopback dongle that has RX and TX lines crossed. This can be useful at manufacturing floor to check whether Thunderbolt/USB4 ports are functional. The driver exposes debugfs directory under the XDomain service that can be used to configure the driver, start the test and check the results. If a loopback dongle is used the steps to send and receive 1000 packets can be done like: # modprobe thunderbolt_dma_test # echo 1000 > /sys/kernel/debug/thunderbolt/<service_id>/dma_test/packets_to_receive # echo 1000 > /sys/kernel/debug/thunderbolt/<service_id>/dma_test/packets_to_send # echo 1 > /sys/kernel/debug/thunderbolt/<service_id>/dma_test/test # cat /sys/kernel/debug/thunderbolt/<service_id>/dma_test/status When a cable is connected back to host then there are two Thunderbolt services, one is configured for receiving (does not matter which one): # modprobe thunderbolt_dma_test # echo 1000 > /sys/kernel/debug/thunderbolt/<service_a>/dma_test/packets_to_receive # echo 1 > /sys/kernel/debug/thunderbolt/<service_a>/dma_test/test The other one for sending: # echo 1000 > /sys/kernel/debug/thunderbolt/<service_b>/dma_test/packets_to_send # echo 1 > /sys/kernel/debug/thunderbolt/<service_b>/dma_test/test Results can be read from both services status attributes. Signed-off-by: Isaac Hazan <isaac.hazan@intel.com> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com> Acked-by: Yehezkel Bernat <YehezkelShB@gmail.com> Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # SPDX-License-Identifier: GPL-2.0-only
 | |
| menuconfig USB4
 | |
| 	tristate "Unified support for USB4 and Thunderbolt"
 | |
| 	depends on PCI
 | |
| 	select APPLE_PROPERTIES if EFI_STUB && X86
 | |
| 	select CRC32
 | |
| 	select CRYPTO
 | |
| 	select CRYPTO_HASH
 | |
| 	select NVMEM
 | |
| 	help
 | |
| 	  USB4 and Thunderbolt driver. USB4 is the public specification
 | |
| 	  based on the Thunderbolt 3 protocol. This driver is required if
 | |
| 	  you want to hotplug Thunderbolt and USB4 compliant devices on
 | |
| 	  Apple hardware or on PCs with Intel Falcon Ridge or newer.
 | |
| 
 | |
| 	  To compile this driver a module, choose M here. The module will be
 | |
| 	  called thunderbolt.
 | |
| 
 | |
| if USB4
 | |
| 
 | |
| config USB4_DEBUGFS_WRITE
 | |
| 	bool "Enable write by debugfs to configuration spaces (DANGEROUS)"
 | |
| 	help
 | |
| 	  Enables writing to device configuration registers through
 | |
| 	  debugfs interface.
 | |
| 
 | |
| 	  Only enable this if you know what you are doing! Never enable
 | |
| 	  this for production systems or distro kernels.
 | |
| 
 | |
| config USB4_KUNIT_TEST
 | |
| 	bool "KUnit tests"
 | |
| 	depends on KUNIT=y
 | |
| 
 | |
| config USB4_DMA_TEST
 | |
| 	tristate "DMA traffic test driver"
 | |
| 	depends on DEBUG_FS
 | |
| 	help
 | |
| 	  This allows sending and receiving DMA traffic through loopback
 | |
| 	  connection. Loopback connection can be done by either special
 | |
| 	  dongle that has TX/RX lines crossed, or by simply connecting a
 | |
| 	  cable back to the host. Only enable this if you know what you
 | |
| 	  are doing. Normal users and distro kernels should say N here.
 | |
| 
 | |
| 	  To compile this driver a module, choose M here. The module will be
 | |
| 	  called thunderbolt_dma_test.
 | |
| 
 | |
| endif # USB4
 |