Commit 956c3abe authored by Mika Westerberg's avatar Mika Westerberg
Browse files

thunderbolt: Introduce tb_for_each_upstream_port_on_path()



This is useful when walking over upstream lane adapters over given path.

Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
parent 2bfeca73
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -1073,6 +1073,21 @@ static inline bool tb_port_use_credit_allocation(const struct tb_port *port)
	for ((p) = tb_next_port_on_path((src), (dst), NULL); (p);	\
	     (p) = tb_next_port_on_path((src), (dst), (p)))

/**
 * tb_for_each_upstream_port_on_path() - Iterate over each upstreamm port on path
 * @src: Source port
 * @dst: Destination port
 * @p: Port used as iterator
 *
 * Walks over each upstream lane adapter on path from @src to @dst.
 */
#define tb_for_each_upstream_port_on_path(src, dst, p)			\
	for ((p) = tb_next_port_on_path((src), (dst), NULL); (p);	\
	     (p) = tb_next_port_on_path((src), (dst), (p)))		\
		if (!tb_port_is_null((p)) || !tb_is_upstream_port((p))) {\
			continue;					\
		} else

int tb_port_get_link_speed(struct tb_port *port);
int tb_port_get_link_generation(struct tb_port *port);
int tb_port_get_link_width(struct tb_port *port);