STRUCT EF4_CHANNEL_TYPE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ struct ef4_channel_type(9) ✨

okay so bestie, this is from the Kernel API Manual, and it's literally the page about struct ef4_channel_type β€” the thing that keeps your traffic channels and your extra channels from getting their vibes mixed up πŸŽ€


🌸 NAME 🌸

struct ef4_channel_type β€” distinguishes traffic and extra channels πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

struct ef4_channel_type {
    void (*handle_no_channel)(struct ef4_nic *);
    int (*pre_probe)(struct ef4_channel *);
    void (*post_remove)(struct ef4_channel *);
    void (*get_name)(struct ef4_channel *, char *buf, size_t len);
    struct ef4_channel *(*copy)(const struct ef4_channel *);
    bool (*receive_skb)(struct ef4_channel *, struct sk_buff *);
    bool keep_eventq;
};

no cap, that's the whole struct β€” every field, exactly as it lives in the header 🫢


πŸ‘‘ Members πŸ‘‘

  • handle_no_channel β€” this one handles the failure to allocate an extra channel 😭 like when the allocation just says no and you gotta deal.
  • pre_probe β€” sets up extra state prior to initialisation ✨ the pre-game ritual, basically.
  • post_remove β€” tears down extra state after finalisation, if it was allocated. careful bestie: it may be called on channels that have not been probed πŸ’€ so don't go assuming setup already happened.
  • get_name β€” generates the channel's name, which is what gets used for its IRQ handler πŸŽ€ (writes into char *buf with size_t len, iykyk).
  • copy β€” copies the channel state prior to reallocation. it may be NULL if reallocation is not supported πŸ™ˆ so vibe check before you call it.
  • receive_skb β€” handles an skb that's ready to be passed to netif_receive_skb πŸ”₯
  • keep_eventq β€” a flag for whether the event queue should be kept initialised while the device is stopped ⭐

🌈 SEE ALSO 🌈

kernel file ./drivers/net/ethernet/sfc/falcon/net_driver.h, plus the whole friend group:

  • struct ef4_buffer(9)
  • struct ef4_special_buffer(9)
  • struct ef4_tx_buffer(9)
  • struct ef4_tx_queue(9)
  • struct ef4_rx_buffer(9)
  • struct ef4_rx_page_state(9)
  • struct ef4_rx_queue(9)
  • struct ef4_channel(9)
  • struct ef4_msi_context(9)
  • struct ef4_link_state(9)
  • struct ef4_phy_operations(9)
  • enum ef4_phy_mode(9)
  • struct ef4_hw_stat_desc(9)
  • struct ef4_nic(9)
  • struct ef4_nic_type(9)

πŸ’– reminder that post_remove can land on channels that were never probed, and copy might be NULL β€” those are the two little gremlins to watch for, fr fr.

and that's the page, bestie! 🧚 sign-off time: this one comes from ./drivers/net/ethernet/sfc/falcon and the date on it is October 2026 β€” go off, October 2026 πŸ’œβœ¨

πŸ“¦ where this page comes from