es58x_start_xmit(9)
π es58x_start_xmit β like, the whole kernel API manual page, bestie
okay so welcome to the glow-up of es58x_start_xmit(9), straight out of the Kernel API Manual β¨ this one lives in the kernel-doc universe, so it's a (9) page β very "internal kernel function, not a command you type," iykyk π§
β¨ NAME β¨
es58x_start_xmit β transmit an skb. that's it. that's the vibe π
π¦ SYNOPSIS π¦
netdev_tx_t es58x_start_xmit (struct sk_buff *skb , struct net_device
*netdev );
like literally just hand it an skb and a netdev and it does its thing π
πΈ ARGUMENTS πΈ
skbβ the socket buffer of a CAN message, aka the actual little packet you're trying to yeet out into the world πnetdevβ the CAN network device. the main character netdev in this whole situation π
π DESCRIPTION π
okay so picture this: this function gets called whenever a packet needs to be transmitted. that's the whole trigger, bestie π«Ά
here's the tea β this function relies on Byte Queue Limits (BQL). and before you ask, yes, that's the important bit. the main benefit is that it increases throughput by allowing bulk transfers (c.f. the xmit_more flag). so it's giving "why send one when you could send a bunch" energy π₯
what it actually does: it queues up to tx_bulk_max messages in the tx_urb buffer, then does a bulk send of all of those messages in one single URB. one URB. many messages. efficiency icon behavior, no cap πβ¨
π RETURN π
NETDEV_TX_OK β regardless of if we could transmit the skb or had to drop it. yeah, you read that right. either way you get NETDEV_TX_OK. it does not snitch on itself, periodt π
π SEE ALSO π
first up, the kernel file it lives in β ./drivers/net/can/usb/etas_es58x/es58x_core.c ποΈ
and then the whole friend group, fr fr:
es58x_calculate_crc(9),es58x_get_crc(9),es58x_set_crc(9),es58x_check_crc(9)es58x_timestamp_to_ns(9),es58x_set_skb_timestamp(9),es58x_rx_timestamp(9),es58x_set_realtime_diff_ns(9)es58x_is_can_state_active(9),es58x_is_echo_skb_threshold_reached(9),es58x_can_free_echo_skb_tail(9),es58x_can_get_echo_skb_recovery(9),es58x_can_get_echo_skb(9),es58x_can_reset_echo_fifo(9)es58x_flush_pending_tx_msg(9),es58x_tx_ack_msg(9)es58x_rx_can_msg(9),es58x_rx_err_msg(9)es58x_cmd_ret_desc(9),es58x_rx_cmd_ret_u8(9),es58x_rx_cmd_ret_u32(9),es58x_increment_rx_errors(9)es58x_handle_urb_cmd(9),es58x_check_rx_urb(9),es58x_copy_to_cmd_buf(9),es58x_split_urb_try_recovery(9),es58x_handle_incomplete_cmd(9),es58x_split_urb(9)es58x_read_bulk_callback(9),es58x_write_bulk_callback(9)es58x_alloc_urb(9),es58x_get_tx_urb(9),es58x_submit_urb(9),es58x_send_msg(9),es58x_alloc_rx_urbs(9),es58x_free_urbs(9)es58x_open(9),es58x_stop(9),es58x_xmit_commit(9),es58x_xmit_more(9),es58x_set_mode(9)es58x_init_priv(9),es58x_init_netdev(9),es58x_free_netdevs(9),es58x_init_es58x_dev(9),es58x_probe(9),es58x_disconnect(9)
like, the entire es58x cinematic universe is in there. go read them all, i'll wait π
ok final sign-off bestie: this iconic lil page comes from the./drivers/net/can/usb/etas_es58xcorner of the kernel, dated October 2026, and it's pagees58x_start_xmit(9)of the Kernel API Manual. slay πππ¦
π¦ 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