]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
thunderbolt: Introduce tb_for_each_upstream_port_on_path()
authorMika Westerberg <mika.westerberg@linux.intel.com>
Sun, 3 Sep 2023 05:25:39 +0000 (08:25 +0300)
committerMika Westerberg <mika.westerberg@linux.intel.com>
Fri, 20 Oct 2023 15:18:01 +0000 (18:18 +0300)
This is useful when walking over upstream lane adapters over given path.

Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
drivers/thunderbolt/tb.h

index 6d49510eea09302d2b665e4cf4fcdac2db779e3f..869ac360e1b50e41eb74a4bedd6f38b071097376 100644 (file)
@@ -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);