usb4_port_router_offline(9)
π usb4_port_router_offline(9) β Kernel API Manual, but make it make sense
okay so bestie, welcome to the Kernel API Manual β¨ we're doing usb4_port_router_offline(9) today and honestly? it's giving "small function, big responsibility" energy π
πΈ NAME πΈ
usb4_port_router_offline β put the USB4 port into offline mode π«Ά like, actually take it offline. retire it. send it to its room.
β¨ SYNOPSIS β¨
int usb4_port_router_offline (struct tb_port *port );
that's it. one arg. one int back. lowkey elegant π
π ARGUMENTS π
portβ the USB4 port in question π¦ yes, the actual port. no, not a different one. that port.
π DESCRIPTION π
so basically this function puts the USB4 port into offline mode β¨ and in this mode the port does not react on hotplug events anymore β like it fully stopped checking its notifs, no cap ππ
and here's the part where you must pay attention bestie, because it's not a vibe suggestion: this needs to be called before retimer access is done when the USB4 links is not up π₯ Like... before. Not after. Not "whenever u get around to it". BEFORE. periodt.
ngl this is one of those ordering things that will absolutely ruin ur whole day if u get it backwards π
β RETURN β
0on success π slay- negative errno otherwise π i.e. it did not slay, check ur
errno
π¦ SEE ALSO π¦
okay so the kernel file to go look at is ./drivers/thunderbolt/usb4.c π and then there is a whole friend group of related functions, like genuinely the entire group chat, here they all are π
usb4_switch_check_wakes(9)usb4_switch_setup(9)usb4_switch_configuration_valid(9)usb4_switch_read_uid(9)usb4_switch_drom_read(9)usb4_switch_lane_bonding_possible(9)usb4_switch_set_wake(9)usb4_switch_set_sleep(9)usb4_switch_nvm_sector_size(9)usb4_switch_nvm_read(9)usb4_switch_nvm_set_offset(9)usb4_switch_nvm_write(9)usb4_switch_nvm_authenticate(9)usb4_switch_nvm_authenticate_status(9)usb4_switch_credits_init(9)usb4_switch_query_dp_resource(9)usb4_switch_alloc_dp_resource(9)usb4_switch_dealloc_dp_resource(9)usb4_port_index(9)usb4_switch_map_pcie_down(9)usb4_switch_map_usb3_down(9)usb4_switch_add_ports(9)usb4_switch_remove_ports(9)usb4_port_unlock(9)usb4_port_hotplug_enable(9)usb4_port_reset(9)usb4_port_configure(9)usb4_port_unconfigure(9)usb4_port_configure_xdomain(9)usb4_port_unconfigure_xdomain(9)usb4_port_sb_read(9)usb4_port_sb_write(9)usb4_port_router_online(9)β the main character's counterpart, the "come back online" one πusb4_port_enumerate_retimers(9)usb4_port_clx_supported(9)usb4_port_asym_supported(9)usb4_port_asym_set_link_width(9)usb4_port_asym_start(9)usb4_port_margining_caps(9)usb4_port_hw_margin(9)usb4_port_sw_margin(9)usb4_port_sw_margin_errors(9)usb4_port_retimer_set_inbound_sbtx(9)usb4_port_retimer_unset_inbound_sbtx(9)usb4_port_retimer_is_last(9)usb4_port_retimer_is_cable(9)usb4_port_retimer_nvm_sector_size(9)usb4_port_retimer_nvm_set_offset(9)usb4_port_retimer_nvm_write(9)usb4_port_retimer_nvm_authenticate(9)usb4_port_retimer_nvm_authenticate_status(9)usb4_port_retimer_nvm_read(9)usb4_usb3_port_max_link_rate(9)usb4_usb3_port_allocated_bandwidth(9)usb4_usb3_port_allocate_bandwidth(9)usb4_usb3_port_release_bandwidth(9)usb4_dp_port_set_cm_id(9)usb4_dp_port_bandwidth_mode_supported(9)usb4_dp_port_bandwidth_mode_enabled(9)usb4_dp_port_set_cm_bandwidth_mode_supported(9)usb4_dp_port_group_id(9)usb4_dp_port_set_group_id(9)usb4_dp_port_nrd(9)usb4_dp_port_set_nrd(9)usb4_dp_port_granularity(9)usb4_dp_port_set_granularity(9)usb4_dp_port_set_estimated_bandwidth(9)usb4_dp_port_allocated_bandwidth(9)usb4_dp_port_allocate_bandwidth(9)usb4_dp_port_requested_bandwidth(9)usb4_pci_port_set_ext_encapsulation(9)usb4_pci_port_ltssm_state(9)
iykyk π
anyway that's the whole page bestie, go forth and take that port offline at the correct time π§π
source: ./drivers/thunderbolt β dated October 2026 π mwah, see u in the next manpage ππΈ
π¦ 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