ntb_link_enable(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

okay bestie, welcome to the ntb_link_enable(9) page from the Kernel API Manual β€” yes that manual, the one with the driest lore imaginable, and we're gonna make it cute anyway πŸŽ€


✨ NAME ✨

ntb_link_enable β€” bestie, it enables the local port ntb connection. that's the whole vibe. periodt πŸ’…


🌸 SYNOPSIS 🌸

int ntb_link_enable (struct ntb_dev *ntb , enum ntb_speed max_speed ,
       enum ntb_width max_width );

like, look at that signature. it's giving "three arguments and a dream" ✨


πŸ¦‹ ARGUMENTS πŸ¦‹

  • ntb β€” the NTB device context. your main character struct, basically πŸ‘‘
  • max_speed β€” the maximum link speed, expressed as a PCIe generation number. yes, a generation number, like it's aging up through the eras 🌈
  • max_width β€” the maximum link width, expressed as the number of PCIe lanes. lanes!! like a little highway πŸ›£οΈ

πŸ’œ DESCRIPTION πŸ’œ

so here's the tea, bestie: this one enables the NTB/PCIe link on the local or remote side of the bridge β€” and yes, "remote" is for the bridge-to-bridge topology, we love a long-distance relationship 🫢

if it's supported, the ntb device should train the link to its maximum speed and width, or the requested speed and width β€” whichever is smaller. it's not gonna overdo it, it's ✨humble✨. honestly iconic.

real talk though: some hardware doesn't support PCIe link training at all 😭 so in that case max_speed and max_width (those last two arguments) just get ignored. not neglected, just... ignored. no cap.

⭐ RETURN ⭐

Zero on success β€” slay! πŸ’– otherwise an error number. boo, but at least it tells you. πŸ™ˆ


🧚 SEE ALSO 🧚

literally the whole ntb family reunion, plus the kernel file itself. the source of truth lives at ./include/linux/ntb.h β€” go say hi πŸŽ€

enum ntb_topo(9), enum ntb_speed(9), enum ntb_width(9), enum ntb_default_port(9), struct ntb_client_ops(9), struct ntb_ctx_ops(9), struct ntb_dev_ops(9), struct ntb_client(9), struct ntb_dev(9), ntb_register_client(9), ntb_unregister_client(9), ntb_register_device(9), ntb_unregister_device(9), ntb_set_ctx(9), ntb_clear_ctx(9), ntb_link_event(9), ntb_db_event(9), ntb_msg_event(9), ntb_default_port_number(9), ntb_default_peer_port_count(9), ntb_default_peer_port_number(9), ntb_default_peer_port_idx(9), ntb_port_number(9), ntb_peer_port_count(9), ntb_peer_port_number(9), ntb_logical_port_number(9), ntb_peer_logical_port_number(9), ntb_peer_port_idx(9), ntb_link_is_up(9), ntb_link_disable(9)

ntb_mw_count(9), ntb_mw_get_align(9), ntb_mw_set_trans(9), ntb_mw_clear_trans(9), ntb_peer_mw_count(9), ntb_peer_mw_get_addr(9), ntb_peer_mw_set_trans(9), ntb_peer_mw_clear_trans(9), ntb_db_is_unsafe(9), ntb_db_valid_mask(9), ntb_db_vector_count(9), ntb_db_vector_mask(9), ntb_db_read(9), ntb_db_set(9), ntb_db_clear(9), ntb_db_read_mask(9), ntb_db_set_mask(9), ntb_db_clear_mask(9), ntb_peer_db_addr(9), ntb_peer_db_read(9), ntb_peer_db_set(9), ntb_peer_db_clear(9), ntb_peer_db_read_mask(9), ntb_peer_db_set_mask(9), ntb_peer_db_clear_mask(9), ntb_spad_is_unsafe(9), ntb_spad_count(9), ntb_spad_read(9), ntb_spad_write(9), ntb_peer_spad_addr(9), ntb_peer_spad_read(9), ntb_peer_spad_write(9)

ntb_msg_count(9), ntb_msg_inbits(9), ntb_msg_outbits(9), ntb_msg_read_sts(9), ntb_msg_clear_sts(9), ntb_msg_set_mask(9), ntb_msg_clear_mask(9), ntb_msg_read(9), ntb_peer_msg_write(9), ntb_get_dma_dev(9), ntb_peer_resource_idx(9), ntb_peer_highest_mw_idx(9)

like I said. family reunion. iykyk πŸ”₯


and that's the whole page, bestie β€” brought to you by the good people at ./include/linux, dated October 2026. mwah, mwah, go enable that link πŸ’‹πŸ¦‹πŸŒΈ

πŸ“¦ where this page comes from