tb_switch_fi...y_link_depth(9)
π¦ tb_switch_find_by_link_depth(9) β bestie's guide to finding a switch β¨
okay so this is a page from the Kernel API Manual (Linux kernel docs, we love her π
) and it's all about tb_switch_find_by_link_depth, which is literally the little function that goes "hey, which Thunderbolt switch lives at this link and this depth?" π
β¨ NAME β¨
tb_switch_find_by_link_depth β find a switch by link and depth π«Ά
πΈ SYNOPSIS πΈ
struct tb_switch * tb_switch_find_by_link_depth (struct tb *tb , u8 link
, u8 depth );
that's it. three args. slay.
π ARGUMENTS π
tbβ the domain the switch belongs to π (like, the whole Thunderbolt neighbourhood)linkβ the link number the switch is connected on πdepthβ how deep the switch sits in that link, i.e. its depth in the hierarchy πͺ
π§ DESCRIPTION π§
so here's the tea: the switch you get back has its reference count increased π which means the caller legit has to call tb_switch_put when they're done with the switch. no cap, don't forget or you'll be leaking refs and that's not the vibe. π©
β RETURN β
a pointer to struct tb_switch π« β or NULL if it's not found π (sorry bestie, no switch at that link/depth combo).
π₯ SEE ALSO π₯
the kernel file ./drivers/thunderbolt/switch.c and honestly the whole friend group π:
tb_switch_nvm_read(9)tb_port_state(9)tb_wait_for_port(9)tb_port_add_nfc_credits(9)tb_port_clear_counter(9)tb_port_unlock(9)tb_port_enable(9)tb_port_disable(9)tb_port_reset(9)tb_port_alloc_in_hopid(9)tb_port_alloc_out_hopid(9)tb_port_release_in_hopid(9)tb_port_release_out_hopid(9)tb_next_port_on_path(9)tb_port_get_link_speed(9)tb_port_get_link_generation(9)tb_port_get_link_width(9)tb_port_width_supported(9)tb_port_set_link_width(9)tb_port_set_lane_bonding(9)tb_port_lane_bonding_enable(9)tb_port_lane_bonding_disable(9)tb_port_wait_for_link_width(9)tb_port_update_credits(9)tb_port_is_enabled(9)tb_usb3_port_is_enabled(9)tb_usb3_port_enable(9)tb_pci_port_is_enabled(9)tb_pci_port_enable(9)tb_dp_port_hpd_is_active(9)tb_dp_port_hpd_clear(9)tb_dp_port_set_hops(9)tb_dp_port_is_enabled(9)tb_dp_port_enable(9)tb_switch_reset(9)tb_switch_wait_for_bit(9)tb_switch_alloc(9)tb_switch_alloc_safe_mode(9)tb_switch_configure(9)tb_switch_configuration_valid(9)tb_switch_lane_bonding_enable(9)tb_switch_lane_bonding_disable(9)tb_switch_set_link_width(9)tb_switch_configure_link(9)tb_switch_unconfigure_link(9)tb_switch_add(9)tb_switch_remove(9)tb_sw_set_unplugged(9)tb_switch_resume(9)tb_switch_suspend(9)tb_switch_query_dp_resource(9)tb_switch_alloc_dp_resource(9)tb_switch_dealloc_dp_resource(9)tb_switch_find_by_uuid(9)tb_switch_find_by_route(9)tb_switch_find_port(9)tb_switch_pcie_l1_enable(9)tb_switch_xhci_connect(9)tb_switch_xhci_disconnect(9)
π reminder bestie: refcount goes up, tb_switch_put goes in your cleanup path. that's the whole assignment.
okay that's the page!! this one's from the source ./drivers/thunderbolt, dated October 2026, and the header/name up top was tb_switch_fi...y_link_depth(9) β yes it's truncated like that, she's mysterious π mwah, go read the kernel file, ily π«Άπβ¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms