STRUCT ES58X_OPERATORS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct es58x_operators(9) πŸ’…

okay bestie, you're in the Kernel API Manual and this is the page for struct es58x_operators(9) β€” the little squad of function pointers that handle encoding/decoding the TX/RX messages. no cap, it's giving β€œpluggable device behavior” energy. πŸ¦‹


✨ NAME ✨

struct es58x_operators β€” function pointers used to encode/decode the TX/RX messages. periodt. πŸ’–

πŸŽ€ SYNOPSIS πŸŽ€

struct es58x_operators {
    u16 (*get_msg_len)(const union es58x_urb_cmd *urb_cmd);
    int (*handle_urb_cmd)(struct es58x_device *es58x_dev, const union
es58x_urb_cmd *urb_cmd);
    void (*fill_urb_header)(union es58x_urb_cmd *urb_cmd, u8 cmd_type,
u8 cmd_id, u8 channel_idx, u16 cmd_len);
    int (*tx_can_msg)(struct es58x_priv *priv, const struct sk_buff
*skb);
    int (*enable_channel)(struct es58x_priv *priv);
    int (*disable_channel)(struct es58x_priv *priv);
    int (*reset_device)(struct es58x_device *es58x_dev);
    int (*get_timestamp)(struct es58x_device *es58x_dev);
 };

🫢 Members 🫢

  • get_msg_len β€” grabs the msg_len field of the urb_cmd. The offset of msg_len inside urb_cmd depends of the device model. iykyk, it's per-device behavior. 🌸
  • handle_urb_cmd β€” decodes the URB command received from the device and dispatches it to the relevant sub function. main character energy for incoming messages fr fr. πŸ‘‘
  • fill_urb_header β€” fills the header of urb_cmd. cute little header moment. πŸŽ€
  • tx_can_msg β€” encodes a TX CAN message and adds it to the bulk buffer cmd_buf of es58x_dev. slay, get that message queued. πŸ”₯
  • enable_channel β€” starts the CAN channel. go bestie go. ✨
  • disable_channel β€” stops the CAN channel. okay bye channel. πŸ’…
  • reset_device β€” full reset of the device. N.B: this feature is only present on the ES581.4. For ES58X FD devices, this field is set to NULL. very important, don't forget the NULL vibe. 😭
  • get_timestamp β€” requests a timestamp from the ES58X device. time check, but make it kernel. ⭐

🌈 SEE ALSO 🌈

Kernel file ./drivers/net/can/usb/etas_es58x/es58x_core.h β€” and the whole squad is right here, no skips:


source/version: ./drivers/net/can/usb/etas_es58x β€’ date: October 2026 β€’ struct es58x_operators(9) πŸ’œβœ¨

πŸ“¦ where this page comes from