STRUCT EF4_CHANNEL(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– NAME πŸ’–

okay bestie, welcome to the Kernel API Manual page for struct ef4_channel(9) β€” it’s literally β€œAn Efx channel,” and we’re about to read it like a very organized group chat.


✨ SYNOPSIS ✨

Here’s the exact struct, no cap β€” copy it exactly, do not retype it from vibe:

       struct ef4_channel {
           struct ef4_nic *efx;
           int channel;
           const struct ef4_channel_type *type;
           bool eventq_init;
           bool enabled;
           int irq;
           unsigned int irq_moderation_us;
           struct net_device *napi_dev;
           struct napi_struct napi_str;
         #ifdef CONFIG_NET_RX_BUSY_POLL;
           unsigned long busy_poll_state;
         #endif;
           struct ef4_special_buffer eventq;
           unsigned int eventq_mask;
           unsigned int eventq_read_ptr;
           int event_test_cpu;
           unsigned int irq_count;
           unsigned int irq_mod_score;
         #ifdef CONFIG_RFS_ACCEL;
           unsigned int rfs_filters_added;
         #define RPS_FLOW_ID_INVALID 0xFFFFFFFF;
           u32 *rps_flow_id;
         #endif;
           unsigned n_rx_tobe_disc;
           unsigned n_rx_ip_hdr_chksum_err;
           unsigned n_rx_tcp_udp_chksum_err;
           unsigned n_rx_mcast_mismatch;
           unsigned n_rx_frm_trunc;
           unsigned n_rx_overlength;
           unsigned n_skbuff_leaks;
           unsigned int n_rx_nodesc_trunc;
           unsigned int n_rx_merge_events;
           unsigned int n_rx_merge_packets;
           unsigned int rx_pkt_n_frags;
           unsigned int rx_pkt_index;
           struct ef4_rx_queue rx_queue;
           struct ef4_tx_queue tx_queue[EF4_TXQ_TYPES];
        };

πŸŽ€ Members πŸŽ€

Let’s go through every single member, in order, so nothing gets left on read:

  • efx β€” the associated Efx NIC.
  • channel β€” the channel instance number.
  • type β€” the channel type definition.
  • eventq_init β€” event queue initialised flag.
  • enabled β€” channel enabled indicator.
  • irq β€” IRQ number, and yes: MSI and MSI-X only.
  • irq_moderation_us β€” IRQ moderation value, in microseconds.
  • napi_dev β€” net device used with NAPI.
  • napi_str β€” NAPI control structure.
  • eventq β€” event queue buffer.
  • eventq_mask β€” event queue pointer mask.
  • eventq_read_ptr β€” event queue read pointer.
  • event_test_cpu β€” last CPU to handle interrupt or test event for this channel.
  • irq_count β€” number of IRQs since last adaptive moderation decision.
  • irq_mod_score β€” IRQ moderation score.
  • rps_flow_id β€” flow IDs of filters allocated for accelerated RFS, indexed by filter ID.
  • n_rx_tobe_disc β€” count of RX_TOBE_DISC errors.
  • n_rx_ip_hdr_chksum_err β€” count of RX IP header checksum errors.
  • n_rx_tcp_udp_chksum_err β€” count of RX TCP and UDP checksum errors.
  • n_rx_mcast_mismatch β€” count of unmatched multicast frames.
  • n_rx_frm_trunc β€” count of RX_FRM_TRUNC errors.
  • n_rx_overlength β€” count of RX_OVERLENGTH errors.
  • n_skbuff_leaks β€” count of skbuffs leaked due to RX overrun.
  • n_rx_nodesc_trunc β€” number of RX packets truncated and then dropped due to lack of descriptors.
  • n_rx_merge_events β€” number of RX merged completion events.
  • n_rx_merge_packets β€” number of RX packets completed by merged events.
  • rx_pkt_n_frags β€” number of fragments in next packet to be delivered by __ef4_rx_packet, or zero if there is none.
  • rx_pkt_index β€” ring index of first buffer for next packet to be delivered by __ef4_rx_packet, if rx_pkt_n_frags != 0.
  • rx_queue β€” RX queue for this channel.
  • tx_queue β€” TX queues for this channel.

🌈 Description 🌈

A channel comprises an event queue, at least one TX queue, at least one RX queue, and an associated tasklet for processing the event queue. That’s the whole bundle, bestie β€” event queue, TX queue(s), RX queue(s), and the tasklet doing the event-queue processing. πŸ’…


πŸ‘‘ SEE ALSO πŸ‘‘

Kernel file: ./drivers/net/ethernet/sfc/falcon/net_driver.h

The page also points you at these icons:

  • 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_msi_context(9)
  • struct ef4_channel_type(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)

Signed with sparkle from the source path ./drivers/net/ethernet/sfc/falcon β€” October 2026 edition β€” that’s the source/version + date vibe for this struct ef4_channel(9) page, mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from