STRUCT ES58X_PARAMETERS(9)

๐Ÿ“ฆ version 7.3.1, in nixpkgs unstable

โœจ struct es58x_parameters โ€” the Kernel API Manual glow-up โœจ

okay bestie so you're reading about struct es58x_parameters and honestly? this is the moment. this is the vibe check for your ETAS ES58X CAN-USB driver. it lives in the Kernel API Manual and it's literally the constant parameters of a given hardware variant โ€” like, one struct per flavor of board, holding all the fixed facts that don't change while the thing is plugged in. ๐ŸŽ€


๐Ÿ’– NAME ๐Ÿ’–

struct es58x_parameters โ€” the constant parameters of a given hardware variant. every hardware variant gets its own little bundle of constants, and this is that bundle. no cap. ๐Ÿฆ‹


๐ŸŒธ SYNOPSIS ๐ŸŒธ

struct es58x_parameters {
    const struct can_bittiming_const *bittiming_const;
    const struct can_bittiming_const *data_bittiming_const;
    const struct can_tdc_const *tdc_const;
    u32 bitrate_max;
    struct can_clock clock;
    u32 ctrlmode_supported;
    u16 tx_start_of_frame;
    u16 rx_start_of_frame;
    u16 tx_urb_cmd_max_len;
    u16 rx_urb_cmd_max_len;
    u16 fifo_mask;
    u16 dql_min_limit;
    u8 tx_bulk_max;
    u8 urb_cmd_header_len;
    u8 rx_urb_max;
    u8 tx_urb_max;
 };

like yes, it's a lot of fields. but each one is doing its job. main character energy per member. ๐Ÿ’…


๐Ÿ‘‘ Members ๐Ÿ‘‘

  • bittiming_const โ€” the nominal bittiming constant parameters. the classic bittiming vibes. โœจ
  • data_bittiming_const โ€” the data bittiming constant parameters. yes, there's a separate one for data. she's different from the nominal one. iykyk.
  • tdc_const โ€” Transmission Delay Compensation constant parameters. TDC bestie, doing her compensation thing.
  • bitrate_max โ€” the maximum bitrate supported by the device. the ceiling. the limit. don't push past her. ๐Ÿ”ฅ
  • clock โ€” the CAN clock parameters.
  • ctrlmode_supported โ€” the list of supported modes. please refer to the can/netlink.h file for additional details, okay? that's where the lore lives. ๐Ÿซถ
  • tx_start_of_frame โ€” the magic number at the beginning of each TX URB command. literally magic. ๐Ÿ”ฎ
  • rx_start_of_frame โ€” the magic number at the beginning of each RX URB command. also magic, but for the receive side.
  • tx_urb_cmd_max_len โ€” maximum length of a TX URB command.
  • rx_urb_cmd_max_len โ€” maximum length of a RX URB command.
  • fifo_mask โ€” a bit mask used to quickly convert the tx_tail and tx_head field of the struct es58x_priv into echo_skb indexes. her properties are non-negotiable, so listen up:
    • fifo_mask = echo_skb_max - 1, where echo_skb_max must be a power of two.
    • also, echo_skb_max must not exceed the maximum size of the device internal TX FIFO length.
    • this parameter is used to control the network queue wake/stop logic. iconic behaviour honestly. ๐Ÿงš
  • dql_min_limit โ€” the Dynamic Queue Limits (DQL) absolute minimum limit of bytes allowed to be queued on this network device transmit queue. used by the Byte Queue Limits (BQL) to determine how frequently the xmit_more flag will be set to true in es58x_start_xmit.
โš ๏ธ so you can set this value higher to optimize for throughput, but be aware that it might have a negative impact on the latency! trade-offs are real. ๐Ÿ˜ญ

this value can also be set dynamically. please refer to Documentation/ABI/testing/sysfs-class-net-queues for more details. ๐Ÿ“š

  • tx_bulk_max โ€” maximum number of TX messages that can be sent in one single URB packet. bulk her up.
  • urb_cmd_header_len โ€” the length of the URB command header.
  • rx_urb_max โ€” number of RX URB to be allocated during device probe.
  • tx_urb_max โ€” number of TX URB to be allocated during device probe.

๐ŸŒˆ SEE ALSO ๐ŸŒˆ

kernel file ./drivers/net/can/usb/etas_es58x/es58x_core.h, plus the whole friend group:


okay that's the whole page, bestie, you ate that. ๐Ÿ“ this little beauty comes to you from ./drivers/net/can/usb/etas_es58x, dated October 2026, and it's filed under struct es58x_parameters(9) in the Kernel API Manual. go forth and configure your hardware variant. periodt. ๐Ÿ’œ๐Ÿฆ‹โœจ

๐Ÿ“ฆ where this page comes from