usb4_switch...icate_status(9)
π usb4_switch_nvm_authenticate_status π
Okay so this one lives in the Kernel API Manual, section 9, and the vibe is very "did my firmware update actually go through or are we lying to ourselves." It's about asking a USB4 router whether its last NVM authenticate operation left a status behind. Let's get into it bestie π«Ά
β¨ NAME β¨
usb4_switch_nvm_authenticate_status β read the status of the last NVM authenticate πΈ
π SYNOPSIS π
int usb4_switch_nvm_authenticate_status (struct tb_switch *sw , u32
*status );
π¦ ARGUMENTS π¦
swβ the USB4 router in question, your main character πstatusβ where the status code of the operation gets dropped off π
β DESCRIPTION β
So the function does exactly one (1) thing and honestly slays at it: it checks whether there's a status available from the last NVM authenticate router operation. That's it. That's the whole gig β¨
β οΈ Okay this part is not a vibe, it's a rule: you must call this before any other router operation. Like, before. Not after. Not "oops I'll squeeze it in later." Before. no cap π
π₯ RETURN π₯
0β there is status, and the status code gets placed instatusπ iconic, we love a successful read- Negative errno β a failure occurred π something went sideways
π SEE ALSO π
Kernel file ./drivers/thunderbolt/usb4.c β plus the entire extended friend group, all 72 of them, in order, because we don't leave anyone out of the group chat π
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_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_offline(9)usb4_port_router_online(9)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)
and that's the whole page bestie π this lil slice of the Kernel API Manual lives in ./drivers/thunderbolt, stamped October 2026, and yes the header is still out here being fashionably truncated as usb4_switch...icate_status(9) β we respect the mystery πβ¨π
π¦ 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