check_desc_avail(9)
π NAME π
Okay so this is check_desc_avail(9) from the Kernel API Manual, and the whole mission is: check descriptor availability on a send queue π
β¨
β¨ SYNOPSIS β¨
Here's the exact signature, character for character, bestie:
int check_desc_avail (struct adapter *adap , struct sge_txq *q , struct sk_buff *skb , unsigned int ndesc , unsigned int qid );
π«Ά ARGUMENTS π«Ά
adapβ the adapter.qβ the send queue.skbβ the packet needing the descriptors.ndescβ the number of Tx descriptors needed.qidβ the Tx queue number in its queue set (TXQ_OFLDorTXQ_CTRL).
π¦ DESCRIPTION π¦
So this function checks if the requested number of Tx descriptors is available on an SGE send queue. If the queue is already suspended or not enough descriptors are available, the packet is queued for later transmission.
π Important locked-queue moment, periodt: this must be called with the Tx queue locked. Do not skip that, bestie.
Here's the return-value vibe check:
0β enough descriptors are available.1β there aren't enough descriptors, and the packet has been queued.2β the caller needs to retry because there weren't enough descriptors at the beginning of the call but some freed up in the mean time.
π SEE ALSO π
Kernel file ./drivers/net/ethernet/chelsio/cxgb3/sge.c, plus this whole squad:
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)check_ring_tx_db(9)write_wr_hdr_sgl(9)write_tx_pkt_wr(9)t3_eth_xmit(9)write_imm(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)
xoxo, bestie π This was check_desc_avail(9) from the Kernel API Manual, with source/version line ./drivers/net/ethernet/chelsio..., dated October 2026 πβ¨
π¦ 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