es58x_check_rx_urb(9)
π es58x_check_rx_urb(9) β like, the vibe check for your incoming URB commands
okay so this is a page straight out of the Kernel API Manual (yes, the kernel has a manual, and yes it's lowkey iconic) and today's main character is es58x_check_rx_urb. bestie, it's literally the bouncer at the club door of your ES58X device β it looks at each incoming URB command and goes "hmm, are you valid or are you a mess?" π
β¨ NAME β¨
es58x_check_rx_urb β checks the length and the format of the URB command, no cap.
πΈ SYNOPSIS πΈ
signed int es58x_check_rx_urb (struct es58x_device *es58x_dev ,
const union es58x_urb_cmd *urb_cmd ,
u32 urb_actual_len );
π¦ ARGUMENTS π¦
es58x_devβ your ES58X device, the one and only. πurb_cmdβ the URB command that came back from the ES58X device. heads up: it might not be aligned, so don't go assuming it's all neat and pretty. π«Άurb_actual_lenβ the actual length of that URB command. like, the real one, fr fr.
π DESCRIPTION π
so what it does is check whether the first message of the received urb is valid β which basically means the header and the length are coherent with each other. both of them. together. it's giving teamwork. β¨
and it returns these little gremlins when things go sideways:
-ENODATAif the URB command is incomplete β in which case the URB command should be buffered and combined with the next URB to try to reconstitute the URB command. yes, it's a puzzle piece situation, we're rebuilding it. π§©-EOVERFLOWif the length is bigger than the maximum expected one. too much. absolutely too much. π-EBADRQCif the start of frame does not match the expected value. wrong vibe at the door, respectfully denied. π
β RETURN β
on success it returns the length of the first message of the URB. slay. π
π SEE ALSO π
the kernel file itself, live and in person:
Kernel file ./drivers/net/can/usb/etas_es58x/es58x_core.c
and the whole friend group, all of them, in order, no one gets left out π«Ά:
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_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_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)
ok that's the whole page, you ate that π go forth and validate those URBs bestie, and remember: incomplete is not invalid, it just needs a friend π₯Ί
later babes π this one lives in ./drivers/net/can/usb/etas_es58x, dated October 2026, and it's filed under es58x_check_rx_urb(9) in case you ever need to find it again πβ¨
π¦ 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