• Isaac Hazan's avatar
    thunderbolt: Add DMA traffic test driver · edc0f494
    Isaac Hazan authored
    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: default avatarIsaac Hazan <isaac.hazan@intel.com>
    Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
    Acked-by: default avatarYehezkel Bernat <YehezkelShB@gmail.com>
    Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    edc0f494
dma_test.c 18.3 KB