Lines Matching refs:tunnel
13 #include "tunnel.h"
1341 * Create PCIe tunnel between host and two devices.
1393 struct tb_tunnel *tunnel;
1396 * Create DP tunnel between Host and Device
1409 tunnel = tb_tunnel_alloc_dp(NULL, in, out, 1, 0, 0);
1410 KUNIT_ASSERT_NOT_NULL(test, tunnel);
1411 KUNIT_EXPECT_EQ(test, tunnel->type, TB_TUNNEL_DP);
1412 KUNIT_EXPECT_PTR_EQ(test, tunnel->src_port, in);
1413 KUNIT_EXPECT_PTR_EQ(test, tunnel->dst_port, out);
1414 KUNIT_ASSERT_EQ(test, tunnel->npaths, 3);
1415 KUNIT_ASSERT_EQ(test, tunnel->paths[0]->path_length, 2);
1416 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[0]->hops[0].in_port, in);
1417 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[0]->hops[1].out_port, out);
1418 KUNIT_ASSERT_EQ(test, tunnel->paths[1]->path_length, 2);
1419 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[1]->hops[0].in_port, in);
1420 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[1]->hops[1].out_port, out);
1421 KUNIT_ASSERT_EQ(test, tunnel->paths[2]->path_length, 2);
1422 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[2]->hops[0].in_port, out);
1423 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[2]->hops[1].out_port, in);
1424 tb_tunnel_free(tunnel);
1431 struct tb_tunnel *tunnel;
1434 * Create DP tunnel from Host DP IN to Device #4 DP OUT.
1455 tunnel = tb_tunnel_alloc_dp(NULL, in, out, 1, 0, 0);
1456 KUNIT_ASSERT_NOT_NULL(test, tunnel);
1457 KUNIT_EXPECT_EQ(test, tunnel->type, TB_TUNNEL_DP);
1458 KUNIT_EXPECT_PTR_EQ(test, tunnel->src_port, in);
1459 KUNIT_EXPECT_PTR_EQ(test, tunnel->dst_port, out);
1460 KUNIT_ASSERT_EQ(test, tunnel->npaths, 3);
1461 KUNIT_ASSERT_EQ(test, tunnel->paths[0]->path_length, 3);
1462 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[0]->hops[0].in_port, in);
1463 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[0]->hops[2].out_port, out);
1464 KUNIT_ASSERT_EQ(test, tunnel->paths[1]->path_length, 3);
1465 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[1]->hops[0].in_port, in);
1466 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[1]->hops[2].out_port, out);
1467 KUNIT_ASSERT_EQ(test, tunnel->paths[2]->path_length, 3);
1468 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[2]->hops[0].in_port, out);
1469 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[2]->hops[2].out_port, in);
1470 tb_tunnel_free(tunnel);
1477 struct tb_tunnel *tunnel;
1480 * Create DP tunnel from Device #2 DP IN to Device #5 DP OUT.
1505 tunnel = tb_tunnel_alloc_dp(NULL, in, out, 1, 0, 0);
1506 KUNIT_ASSERT_NOT_NULL(test, tunnel);
1507 KUNIT_EXPECT_EQ(test, tunnel->type, TB_TUNNEL_DP);
1508 KUNIT_EXPECT_PTR_EQ(test, tunnel->src_port, in);
1509 KUNIT_EXPECT_PTR_EQ(test, tunnel->dst_port, out);
1510 KUNIT_ASSERT_EQ(test, tunnel->npaths, 3);
1511 KUNIT_ASSERT_EQ(test, tunnel->paths[0]->path_length, 4);
1512 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[0]->hops[0].in_port, in);
1513 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[0]->hops[3].out_port, out);
1514 KUNIT_ASSERT_EQ(test, tunnel->paths[1]->path_length, 4);
1515 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[1]->hops[0].in_port, in);
1516 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[1]->hops[3].out_port, out);
1517 KUNIT_ASSERT_EQ(test, tunnel->paths[2]->path_length, 4);
1518 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[2]->hops[0].in_port, out);
1519 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[2]->hops[3].out_port, in);
1520 tb_tunnel_free(tunnel);
1528 struct tb_tunnel *tunnel;
1531 * Creates DP tunnel from Device #6 to Device #12.
1570 tunnel = tb_tunnel_alloc_dp(NULL, in, out, 1, 0, 0);
1571 KUNIT_ASSERT_NOT_NULL(test, tunnel);
1572 KUNIT_EXPECT_EQ(test, tunnel->type, TB_TUNNEL_DP);
1573 KUNIT_EXPECT_PTR_EQ(test, tunnel->src_port, in);
1574 KUNIT_EXPECT_PTR_EQ(test, tunnel->dst_port, out);
1575 KUNIT_ASSERT_EQ(test, tunnel->npaths, 3);
1576 KUNIT_ASSERT_EQ(test, tunnel->paths[0]->path_length, 13);
1578 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[0]->hops[0].in_port, in);
1580 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[0]->hops[6].in_port,
1582 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[0]->hops[6].out_port,
1585 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[0]->hops[12].out_port, out);
1586 KUNIT_ASSERT_EQ(test, tunnel->paths[1]->path_length, 13);
1587 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[1]->hops[0].in_port, in);
1588 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[1]->hops[6].in_port,
1590 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[1]->hops[6].out_port,
1592 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[1]->hops[12].out_port, out);
1593 KUNIT_ASSERT_EQ(test, tunnel->paths[2]->path_length, 13);
1594 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[2]->hops[0].in_port, out);
1595 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[2]->hops[6].in_port,
1597 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[2]->hops[6].out_port,
1599 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[2]->hops[12].out_port, in);
1600 tb_tunnel_free(tunnel);
1675 * Create USB3 tunnel between host and two devices.
1792 struct tb_tunnel *tunnel;
1796 * Create DMA tunnel from NHI to port 1 and back.
1810 tunnel = tb_tunnel_alloc_dma(NULL, nhi, port, 8, 1, 8, 1);
1811 KUNIT_ASSERT_NOT_NULL(test, tunnel);
1812 KUNIT_EXPECT_EQ(test, tunnel->type, TB_TUNNEL_DMA);
1813 KUNIT_EXPECT_PTR_EQ(test, tunnel->src_port, nhi);
1814 KUNIT_EXPECT_PTR_EQ(test, tunnel->dst_port, port);
1815 KUNIT_ASSERT_EQ(test, tunnel->npaths, 2);
1817 KUNIT_ASSERT_EQ(test, tunnel->paths[0]->path_length, 1);
1818 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[0]->hops[0].in_port, port);
1819 KUNIT_EXPECT_EQ(test, tunnel->paths[0]->hops[0].in_hop_index, 8);
1820 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[0]->hops[0].out_port, nhi);
1821 KUNIT_EXPECT_EQ(test, tunnel->paths[0]->hops[0].next_hop_index, 1);
1823 KUNIT_ASSERT_EQ(test, tunnel->paths[1]->path_length, 1);
1824 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[1]->hops[0].in_port, nhi);
1825 KUNIT_EXPECT_EQ(test, tunnel->paths[1]->hops[0].in_hop_index, 1);
1826 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[1]->hops[0].out_port, port);
1827 KUNIT_EXPECT_EQ(test, tunnel->paths[1]->hops[0].next_hop_index, 8);
1829 tb_tunnel_free(tunnel);
1835 struct tb_tunnel *tunnel;
1839 * Create DMA RX tunnel from port 1 to NHI.
1853 tunnel = tb_tunnel_alloc_dma(NULL, nhi, port, -1, -1, 15, 2);
1854 KUNIT_ASSERT_NOT_NULL(test, tunnel);
1855 KUNIT_EXPECT_EQ(test, tunnel->type, TB_TUNNEL_DMA);
1856 KUNIT_EXPECT_PTR_EQ(test, tunnel->src_port, nhi);
1857 KUNIT_EXPECT_PTR_EQ(test, tunnel->dst_port, port);
1858 KUNIT_ASSERT_EQ(test, tunnel->npaths, 1);
1860 KUNIT_ASSERT_EQ(test, tunnel->paths[0]->path_length, 1);
1861 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[0]->hops[0].in_port, port);
1862 KUNIT_EXPECT_EQ(test, tunnel->paths[0]->hops[0].in_hop_index, 15);
1863 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[0]->hops[0].out_port, nhi);
1864 KUNIT_EXPECT_EQ(test, tunnel->paths[0]->hops[0].next_hop_index, 2);
1866 tb_tunnel_free(tunnel);
1872 struct tb_tunnel *tunnel;
1876 * Create DMA TX tunnel from NHI to port 1.
1890 tunnel = tb_tunnel_alloc_dma(NULL, nhi, port, 15, 2, -1, -1);
1891 KUNIT_ASSERT_NOT_NULL(test, tunnel);
1892 KUNIT_EXPECT_EQ(test, tunnel->type, TB_TUNNEL_DMA);
1893 KUNIT_EXPECT_PTR_EQ(test, tunnel->src_port, nhi);
1894 KUNIT_EXPECT_PTR_EQ(test, tunnel->dst_port, port);
1895 KUNIT_ASSERT_EQ(test, tunnel->npaths, 1);
1897 KUNIT_ASSERT_EQ(test, tunnel->paths[0]->path_length, 1);
1898 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[0]->hops[0].in_port, nhi);
1899 KUNIT_EXPECT_EQ(test, tunnel->paths[0]->hops[0].in_hop_index, 2);
1900 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[0]->hops[0].out_port, port);
1901 KUNIT_EXPECT_EQ(test, tunnel->paths[0]->hops[0].next_hop_index, 15);
1903 tb_tunnel_free(tunnel);
1910 struct tb_tunnel *tunnel;
1913 * Create DMA tunnel from NHI to Device #2 port 3 and back.
1936 tunnel = tb_tunnel_alloc_dma(NULL, nhi, port, 8, 1, 8, 1);
1937 KUNIT_ASSERT_NOT_NULL(test, tunnel);
1938 KUNIT_EXPECT_EQ(test, tunnel->type, TB_TUNNEL_DMA);
1939 KUNIT_EXPECT_PTR_EQ(test, tunnel->src_port, nhi);
1940 KUNIT_EXPECT_PTR_EQ(test, tunnel->dst_port, port);
1941 KUNIT_ASSERT_EQ(test, tunnel->npaths, 2);
1943 KUNIT_ASSERT_EQ(test, tunnel->paths[0]->path_length, 3);
1944 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[0]->hops[0].in_port, port);
1945 KUNIT_EXPECT_EQ(test, tunnel->paths[0]->hops[0].in_hop_index, 8);
1946 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[0]->hops[0].out_port,
1948 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[0]->hops[1].in_port,
1950 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[0]->hops[1].out_port,
1952 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[0]->hops[2].in_port,
1954 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[0]->hops[2].out_port, nhi);
1955 KUNIT_EXPECT_EQ(test, tunnel->paths[0]->hops[2].next_hop_index, 1);
1957 KUNIT_ASSERT_EQ(test, tunnel->paths[1]->path_length, 3);
1958 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[1]->hops[0].in_port, nhi);
1959 KUNIT_EXPECT_EQ(test, tunnel->paths[1]->hops[0].in_hop_index, 1);
1960 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[1]->hops[1].in_port,
1962 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[1]->hops[1].out_port,
1964 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[1]->hops[2].in_port,
1966 KUNIT_EXPECT_PTR_EQ(test, tunnel->paths[1]->hops[2].out_port, port);
1967 KUNIT_EXPECT_EQ(test, tunnel->paths[1]->hops[2].next_hop_index, 8);
1969 tb_tunnel_free(tunnel);
1975 struct tb_tunnel *tunnel;
1982 tunnel = tb_tunnel_alloc_dma(NULL, nhi, port, 15, 1, 15, 1);
1983 KUNIT_ASSERT_NOT_NULL(test, tunnel);
1985 KUNIT_ASSERT_TRUE(test, tb_tunnel_match_dma(tunnel, 15, 1, 15, 1));
1986 KUNIT_ASSERT_FALSE(test, tb_tunnel_match_dma(tunnel, 8, 1, 15, 1));
1987 KUNIT_ASSERT_TRUE(test, tb_tunnel_match_dma(tunnel, -1, -1, 15, 1));
1988 KUNIT_ASSERT_TRUE(test, tb_tunnel_match_dma(tunnel, 15, 1, -1, -1));
1989 KUNIT_ASSERT_TRUE(test, tb_tunnel_match_dma(tunnel, 15, -1, -1, -1));
1990 KUNIT_ASSERT_TRUE(test, tb_tunnel_match_dma(tunnel, -1, 1, -1, -1));
1991 KUNIT_ASSERT_TRUE(test, tb_tunnel_match_dma(tunnel, -1, -1, 15, -1));
1992 KUNIT_ASSERT_TRUE(test, tb_tunnel_match_dma(tunnel, -1, -1, -1, 1));
1993 KUNIT_ASSERT_TRUE(test, tb_tunnel_match_dma(tunnel, -1, -1, -1, -1));
1994 KUNIT_ASSERT_FALSE(test, tb_tunnel_match_dma(tunnel, 8, -1, 8, -1));
1996 tb_tunnel_free(tunnel);
1998 tunnel = tb_tunnel_alloc_dma(NULL, nhi, port, 15, 1, -1, -1);
1999 KUNIT_ASSERT_NOT_NULL(test, tunnel);
2000 KUNIT_ASSERT_TRUE(test, tb_tunnel_match_dma(tunnel, 15, 1, -1, -1));
2001 KUNIT_ASSERT_TRUE(test, tb_tunnel_match_dma(tunnel, 15, -1, -1, -1));
2002 KUNIT_ASSERT_TRUE(test, tb_tunnel_match_dma(tunnel, -1, 1, -1, -1));
2003 KUNIT_ASSERT_TRUE(test, tb_tunnel_match_dma(tunnel, -1, -1, -1, -1));
2004 KUNIT_ASSERT_FALSE(test, tb_tunnel_match_dma(tunnel, 15, 1, 15, 1));
2005 KUNIT_ASSERT_FALSE(test, tb_tunnel_match_dma(tunnel, -1, -1, 15, 1));
2006 KUNIT_ASSERT_FALSE(test, tb_tunnel_match_dma(tunnel, 15, 11, -1, -1));
2008 tb_tunnel_free(tunnel);
2010 tunnel = tb_tunnel_alloc_dma(NULL, nhi, port, -1, -1, 15, 11);
2011 KUNIT_ASSERT_NOT_NULL(test, tunnel);
2012 KUNIT_ASSERT_TRUE(test, tb_tunnel_match_dma(tunnel, -1, -1, 15, 11));
2013 KUNIT_ASSERT_TRUE(test, tb_tunnel_match_dma(tunnel, -1, -1, 15, -1));
2014 KUNIT_ASSERT_TRUE(test, tb_tunnel_match_dma(tunnel, -1, -1, -1, 11));
2015 KUNIT_ASSERT_TRUE(test, tb_tunnel_match_dma(tunnel, -1, -1, -1, -1));
2016 KUNIT_ASSERT_FALSE(test, tb_tunnel_match_dma(tunnel, -1, -1, 15, 1));
2017 KUNIT_ASSERT_FALSE(test, tb_tunnel_match_dma(tunnel, -1, -1, 10, 11));
2018 KUNIT_ASSERT_FALSE(test, tb_tunnel_match_dma(tunnel, 15, 11, -1, -1));
2020 tb_tunnel_free(tunnel);
2027 struct tb_tunnel *tunnel;
2035 tunnel = tb_tunnel_alloc_pci(NULL, up, down);
2036 KUNIT_ASSERT_NOT_NULL(test, tunnel);
2037 KUNIT_ASSERT_EQ(test, tunnel->npaths, (size_t)2);
2039 path = tunnel->paths[0];
2046 path = tunnel->paths[1];
2053 tb_tunnel_free(tunnel);
2060 struct tb_tunnel *tunnel;
2068 tunnel = tb_tunnel_alloc_pci(NULL, up, down);
2069 KUNIT_ASSERT_NOT_NULL(test, tunnel);
2070 KUNIT_ASSERT_EQ(test, tunnel->npaths, (size_t)2);
2072 path = tunnel->paths[0];
2079 path = tunnel->paths[1];
2086 tb_tunnel_free(tunnel);
2093 struct tb_tunnel *tunnel;
2101 tunnel = tb_tunnel_alloc_pci(NULL, up, down);
2102 KUNIT_ASSERT_NOT_NULL(test, tunnel);
2103 KUNIT_ASSERT_EQ(test, tunnel->npaths, (size_t)2);
2105 path = tunnel->paths[0];
2112 path = tunnel->paths[1];
2119 tb_tunnel_free(tunnel);
2126 struct tb_tunnel *tunnel;
2149 tunnel = tb_tunnel_alloc_pci(NULL, up, down);
2150 KUNIT_ASSERT_TRUE(test, tunnel != NULL);
2151 KUNIT_ASSERT_EQ(test, tunnel->npaths, (size_t)2);
2154 path = tunnel->paths[0];
2162 path = tunnel->paths[1];
2169 tb_tunnel_free(tunnel);
2176 struct tb_tunnel *tunnel;
2185 tunnel = tb_tunnel_alloc_dp(NULL, in, out, 1, 0, 0);
2186 KUNIT_ASSERT_NOT_NULL(test, tunnel);
2187 KUNIT_ASSERT_EQ(test, tunnel->npaths, (size_t)3);
2190 path = tunnel->paths[0];
2198 path = tunnel->paths[1];
2206 path = tunnel->paths[2];
2213 tb_tunnel_free(tunnel);
2220 struct tb_tunnel *tunnel;
2228 tunnel = tb_tunnel_alloc_usb3(NULL, up, down, 0, 0);
2229 KUNIT_ASSERT_NOT_NULL(test, tunnel);
2230 KUNIT_ASSERT_EQ(test, tunnel->npaths, (size_t)2);
2232 path = tunnel->paths[0];
2239 path = tunnel->paths[1];
2246 tb_tunnel_free(tunnel);
2253 struct tb_tunnel *tunnel;
2262 tunnel = tb_tunnel_alloc_dma(NULL, nhi, port, 8, 1, 8, 1);
2263 KUNIT_ASSERT_NOT_NULL(test, tunnel);
2264 KUNIT_ASSERT_EQ(test, tunnel->npaths, (size_t)2);
2267 path = tunnel->paths[0];
2275 path = tunnel->paths[1];
2282 tb_tunnel_free(tunnel);
2313 * So on host the first tunnel gets 14 and the second gets the
2356 * Release the first DMA tunnel. That should make 14 buffers
2357 * available for the next tunnel.