tb_port_wait_for_link_width(9)
π tb_port_wait_for_link_width β the kernel API manual, but make it make sense
okay bestie, so this is tb_port_wait_for_link_width(9) from the kernel API manual β yes, the kernel manual, we're doing big-brain hours rn π§ β¨ β and it's literally just "sit there and wait until the link gets as wide as you asked for." That's the whole vibe. Let's get into it π
β¨ NAME β¨
tb_port_wait_for_link_width β wait until the link reaches a specific width, no cap, just vibes and patience β³
π¦ SYNOPSIS π¦
int tb_port_wait_for_link_width (struct tb_port *port , unsigned int
width , int timeout_msec );
look at that signature. chef's kiss. very demure, very mindful π
πΈ ARGUMENTS πΈ
portβ the port you're waiting on π«Ά like, this is the main character of the whole callwidthβ the expected link width, which is a bitmask bestie, not just a plain number, iykyk πtimeout_msecβ timeout in ms, aka how long you're willing to stand there waiting before you give up π
π DESCRIPTION π
okay so here's the tea β β this one should be used after both ends of the link have been bonded, or after bonding has been disabled, to wait until the link actually reaches the expected state. it's giving "we set it up, now we manifest it" energy β¨
and the fun part: you can pass it a mask of expected widths. so it's not one single width, it's a whole lil squad of acceptable widths π
π₯ RETURN π₯
the way this function is so straightforward, obsessed:
0β if the link reaches any of the specified widths. periodt, we love a success π-ETIMEDOUTβ if the link does not reach the specified width. it just didn't happen for us π- Negative errno β another error occurred. yeah, something else went sideways, no further explanation, that's the whole note π
π SEE ALSO π
the kernel file ./drivers/thunderbolt/switch.c β go read it, bestie, it's the source of truth π β plus this absolutely stacked friend group of related calls:
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_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_link_depth(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)
like, that's a whole friend group and every single one of them got an invite π
anyway that's the page π«Ά and before you go β this lil baddie lives in ./drivers/thunderbolt and it's dated October 2026, so go forth, wait for your link width, and slay π
β¨πΈ
π¦ 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