STRUCT TB_CTL(9)
π¦ struct tb_ctl β Thunderbolt control channel
okay bestie, so this is the kernel API manual page for struct tb_ctl(9) and it's genuinely giving "the nervous system of your Thunderbolt port" energy β like, this struct is the control channel itself. no cap. β¨
π NAME
struct tb_ctl β Thunderbolt control channel π
β‘ SYNOPSIS
struct tb_ctl {
struct tb_nhi *nhi;
struct tb_ring *tx;
struct tb_ring *rx;
struct dma_pool *frame_pool;
struct ctl_pkg *rx_packets[TB_CTL_RX_PKG_COUNT];
struct mutex request_queue_lock;
struct list_head request_queue;
bool running;
int timeout_msec;
event_cb callback;
void *callback_data;
int index;
};
πΈ Members
okay so here's the cast of characters, main-character by main-character π
nhiβ pointer to the NHI structure. it's the link-up to the big boss, iykyk π«Άtxβ the transmit ring. this is where stuff leaves πrxβ the receive ring. and this is where stuff arrives πframe_poolβ DMA pool for control messages. lowkey the supply closet for control traffic β¨rx_packetsβ received control messages. the whole inbox, literally π¬request_queue_lockβ lock protectingrequest_queue. it keeps the queue safe from chaos fr fr πrequest_queueβ list of outstanding requests. everything still waiting on a reply lives here π°οΈrunningβ is the control channel running at the moment. a yes/no vibe check on the whole operation βtimeout_msecβ default timeout for non-raw control messages. like "how long do we wait before we give up" energy, in milliseconds β³callbackβ callback called when hotplug message is received. something shows up, this gets called, everybody finds out π₯callback_dataβ data passed to callback. the little care package handed over with it πindexβ domain number. this will be output with the trace record. so like, its name tag when the trace log snaps a pic of it πΈ
π SEE ALSO
- Kernel file
./drivers/thunderbolt/ctl.c tb_cfg_request_alloc(9)tb_cfg_request_get(9)tb_cfg_request_put(9)tb_cfg_request(9)tb_cfg_request_cancel(9)tb_cfg_request_sync(9)tb_ctl_alloc(9)tb_ctl_free(9)tb_ctl_start(9)tb_ctl_stop(9)tb_cfg_ack_notification(9)tb_cfg_ack_plug(9)tb_cfg_reset(9)tb_cfg_read_raw(9)tb_cfg_write_raw(9)tb_cfg_get_upstream_port(9)
go read them all bestie, it's a whole friend group ππ«Ά
that's the whole page, no notes π
and finally, the cute sign-off β this one's from ./drivers/thunderbolt, dated October 2026. slay, periodt. π§ππΈ
π¦ 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