es58x_handle_incomplete_cmd(9)
πΈ es58x_handle_incomplete_cmd(9) β the Kernel API Manual glow-up π
okay bestie, so this is the es58x_handle_incomplete_cmd(9) page from the Kernel API Manual, and honestly? it's giving "small function, big job." sit down, grab a strawberry π, and let's get into it.
β¨ NAME β¨
es58x_handle_incomplete_cmd β literally reconstituting an URB command out of the different URB pieces, like a puzzle but make it kernel π
π¦ SYNOPSIS π¦
signed int es58x_handle_incomplete_cmd (struct es58x_device *es58x_dev ,
struct urb *urb );
that's it. that's the whole vibe. two args, one job. no cap.
π ARGUMENTS π
es58x_devβ the ES58X device, aka the main character here πurbβ the last urb buffer that got received, aka the freshest little piece of the puzzle π§©
π DESCRIPTION π
so likeβ¦ the device might split the URB commands into an arbitrary amount of pieces. arbitrary!! it does not care about your feelings. π
this function's whole thing is concatenating those pieces in an URB buffer until a full URB command is reconstituted β and then it consumes it. slay. that's the job. that's the function. periodt.
and when it doesn't work out, you get these bad boys back:
-ENODATAif the URB command is still incomplete (it's not done cooking π³, give it a sec)-EBADMSGif the URB command is incorrect (something went wrong, and not in a cute way π)
heads up bestie: if you get -ENODATA, that's not an error, it just means "not yet." don't panic. π
β RETURN β
the number of bytes consumed from urb if successful. yes queen, bytes consumed, tracked and everything π₯
π§ SEE ALSO π§
okay this list is LOWKEY iconic, it's basically the whole friend group. here's everyone:
- Kernel file
./drivers/net/can/usb/etas_es58x/es58x_core.c 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_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_start_xmit(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)
iykyk π
okay that's the whole page!! it lives at ./drivers/net/can/usb/etas_es58x, and it was dated October 2026 β so yeah, from the future, obviously. go read the other (9) pages too, they're all in the group chat π«Άβ¨π
π¦ 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