check_ring_tx_db(9)
π check_ring_tx_db(9) β like, the kernel API manual, but make it make sense π
okay so real talk, bestie: this page is from the Kernel API Manual and it's literally about ringing a doorbell. Not a cute little doorbell on a house, no β we're talking hardware queues in a network driver, and honestly? iconic behaviour. let's go β¨
πΈ NAME πΈ
check_ring_tx_db β bestie, this one checks a Tx queue's doorbell and, if the vibe check says so, totally rings it for you π
β¨ SYNOPSIS β¨
void check_ring_tx_db (struct adapter *adap , struct sge_txq *q );
ngl, that's the whole signature. short and slay π«Ά
π¦ ARGUMENTS π¦
adapβ the adapter, like the whole entire network adapter, the main character of this operation πqβ the Tx queue. that's the one we're worried about. the one that might be asleep π΄
π DESCRIPTION π
okay so here's the situation. if a Tx queue is asleep, this function rings the doorbell. that's it. that's the job. π
but listen β there's a natural race here, and we're not being shady about it, it's just physics of computing, bestie. the HW could be going to sleep literally right after we checked it. π and that sounds like a disaster but it's actually fine, because then the interrupt handler will detect the outstanding TX packet and ring the doorbell for us. teamwork fr fr π€
and when GTS is disabled? we don't even bother checking, we just ring the doorbell unconditionally. no thoughts, head empty, bell rung ποΈβ¨
π§ SEE ALSO π§
okay this is the part where the page goes absolutely feral and lists, like, everything in ./drivers/net/ethernet/chelsio/cxgb3/sge.c. no cap, this is the whole squad. here's every single one, because we do not skip entries in this house π
refill_rspq(9)need_skb_unmap(9)unmap_skb(9)free_tx_desc(9)reclaim_completed_tx(9)should_restart_tx(9)free_rx_bufs(9)add_one_rx_buf(9)refill_fl(9)recycle_rx_buf(9)alloc_ring(9)t3_reset_qset(9)t3_free_qset(9)init_qset_cntxt(9)sgl_len(9)flits_to_desc(9)get_packet(9)get_packet_pg(9)get_imm_packet(9)calc_tx_descs(9)write_sgl(9)write_wr_hdr_sgl(9)write_tx_pkt_wr(9)t3_eth_xmit(9)write_imm(9)check_desc_avail(9)reclaim_completed_tx_imm(9)ctrl_xmit(9)restart_ctrlq(9)deferred_unmap_destructor(9)write_ofld_wr(9)calc_tx_descs_ofld(9)ofld_xmit(9)restart_offloadq(9)queue_set(9)is_ctrl_pkt(9)t3_offload_tx(9)offload_enqueue(9)deliver_partial_bundle(9)ofld_poll(9)rx_offload(9)restart_tx(9)cxgb3_arp_process(9)rx_eth(9)lro_add_page(9)handle_rsp_cntrl_info(9)check_ring_db(9)is_new_response(9)process_responses(9)napi_rx_handler(9)process_pure_responses(9)handle_responses(9)t3_intr_handler(9)t3_sge_err_intr_handler(9)sge_timer_tx(9)sge_timer_rx(9)t3_update_qset_coalesce(9)t3_sge_alloc_qset(9)t3_start_sge_timers(9)t3_stop_sge_timers(9)t3_free_sge_resources(9)t3_sge_start(9)t3_sge_stop_dma(9)t3_sge_stop(9)t3_sge_init(9)t3_sge_prep(9)
ok and before you go β the source for all this lives at ./drivers/net/ethernet/chelsio... (yes it's truncated like that on the page, don't come for me π), and it's dated October 2026. bye bestie, go ring some doorbells responsibly π
ππ¦
π¦ 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