axienet_free_tx_chain(9)
π axienet_free_tx_chain(9) π
okay so first things first, the vibe check: this is a page from the Kernel API Manual, and it's literally all about axienet_free_tx_chain, which β no cap β cleans up a whole series of linked TX descriptors. bestie, it's the janitor of the transmit ring and it does it gorgeously π§Ήβ¨
β¨ NAME β¨
axienet_free_tx_chain β Clean up a series of linked TX descriptors. π
πΈ SYNOPSIS πΈ
int axienet_free_tx_chain (struct axienet_local *lp , u32 first_bd , int
nr_bds , bool force , u32 *sizep , int budget );
π¦ ARGUMENTS π¦
lpβ Pointer to theaxienet_localstructure. yes, the main character struct πfirst_bdβ Index of the first descriptor to clean up. start here, queen.nr_bdsβ Max number of descriptors to clean up. it's giving "how many can we handle" energy.forceβ Whether to clean descriptors even if not complete. lowkey aggressive but valid.sizepβ Pointer to au32accumulating the total byte count of completed packets (usingskb->len). β οΈ Ignored ifNULLβ so don't come crying if you pass nothing.budgetβ NAPI budget (use0when not called from NAPI poll). fr fr,0is the move there.
π₯ DESCRIPTION π₯
Would either be called after a successful transmit operation, or after there was an error when setting up the chain. that's it, that's the whole plot β clean up after the good vibes or the mess, either way bestie's on it π«Ά
β RETURN β
The number of packets handled. slay, a count π
π SEE ALSO π
if you wanna go down the rabbit hole, the source of truth is the kernel file ./drivers/net/ethernet/xilinx/xilinx_axienet_main.c β the whole friend group lives there:
axienet_dma_in32(9)axienet_dma_bd_release(9)axienet_calc_cr(9)axienet_coalesce_params(9)axienet_dma_start(9)axienet_dma_bd_init(9)axienet_set_mac_address(9)netdev_set_mac_address(9)axienet_set_multicast_list(9)axienet_setoptions(9)axienet_dma_stop(9)axienet_device_reset(9)axienet_check_tx_bd_space(9)axienet_dma_tx_cb(9)axienet_start_xmit_dmaengine(9)axienet_tx_poll(9)axienet_start_xmit(9)axienet_dma_rx_cb(9)axienet_rx_poll(9)axienet_tx_irq(9)axienet_rx_irq(9)axienet_eth_irq(9)axienet_rx_submit_desc(9)axienet_init_dmaengine(9)axienet_init_legacy_dma(9)axienet_open(9)axienet_stop(9)axienet_change_mtu(9)axienet_poll_controller(9)axienet_ethtools_get_drvinfo(9)axienet_ethtools_get_regs_len(9)axienet_ethtools_get_regs(9)axienet_ethtools_get_pauseparam(9)axienet_ethtools_set_pauseparam(9)axienet_update_coalesce_rx(9)axienet_dim_coalesce_count_rx(9)axienet_rx_dim_work(9)axienet_update_coalesce_tx(9)axienet_ethtools_get_coalesce(9)axienet_ethtools_set_coalesce(9)axienet_dma_err_handler(9)axienet_probe(9)
iykyk π
and that's the whole page, bestie β mwah π this lil number lives under ./drivers/net/ethernet/xilinx, dated October 2026, and it's a certified classic. go forth and free those descriptors π§ββοΈπ
π¦ 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