STRUCT IONIC_RXQ_COMP(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct ionic_rxq_comp β€” Kernel API Manual ✨

okay so bestie, you're looking at the man page for struct ionic_rxq_comp, which is literally the Ethernet receive queue completion descriptor πŸŽ€. It lives in the Kernel API Manual, and it's one of those structs you meet and you're like "oh she's important" β€” because she is πŸ’….


🌸 SYNOPSIS 🌸

no cap, here's the whole shape of her, exactly as she comes:

struct ionic_rxq_comp {
    u8 status;
    u8 num_sg_elems;
    __le16 comp_index;
    __le32 rss_hash;
    __le16 csum;
    __le16 vlan_tci;
    __le16 len;
    u8 csum_flags;
  #define IONIC_RXQ_COMP_CSUM_F_TCP_OK    0x01;
  #define IONIC_RXQ_COMP_CSUM_F_TCP_BAD   0x02;
  #define IONIC_RXQ_COMP_CSUM_F_UDP_OK    0x04;
  #define IONIC_RXQ_COMP_CSUM_F_UDP_BAD   0x08;
  #define IONIC_RXQ_COMP_CSUM_F_IP_OK     0x10;
  #define IONIC_RXQ_COMP_CSUM_F_IP_BAD    0x20;
  #define IONIC_RXQ_COMP_CSUM_F_VLAN      0x40;
  #define IONIC_RXQ_COMP_CSUM_F_CALC      0x80;
    u8 pkt_type_color;
  #define IONIC_RXQ_COMP_PKT_TYPE_MASK    0x7f;
};

πŸ¦‹ Members πŸ¦‹

  • status β€” the status of the command, and she's an enum ionic_status_code πŸ’…
  • num_sg_elems β€” how many SG elements this descriptor used. periodt.
  • comp_index β€” the index in the descriptor ring that this is the completion for πŸ‘‘
  • rss_hash β€” the 32-bit RSS hash ⭐
  • csum β€” the 16-bit sum of the packet's L2 payload. And heads up bestie, if the packet's L2 payload is an odd length, an extra zero-value byte gets included in the csum calculation β€” but not included in len πŸ™ˆ. ikyky.
  • vlan_tci β€” the VLAN tag stripped from the packet. She's only valid if VLAN is set, and she includes the .1p and .1q tags 🏷️
  • len β€” received packet length, in bytes. Excludes FCS. Also, csum_calc L2 payload checksum is computed or not πŸ’€
  • csum_flags β€” see IONIC_RXQ_COMP_CSUM_F_* πŸ‘€
  • pkt_type_color β€” packet type plus color bit; see IONIC_RXQ_COMP_PKT_TYPE_MASK 🌈

✨ Description ✨

okay, now for what all the csum_flags bits actually mean, because this is where it gets good πŸ’–

  • IONIC_RXQ_COMP_CSUM_F_TCP_OK: the TCP checksum the device calculated matched the checksum in the receive packet's TCP header. slay πŸŽ‰
  • IONIC_RXQ_COMP_CSUM_F_TCP_BAD: the TCP checksum the device calculated did not match the checksum in the receive packet's TCP header. sad but true 😭
  • IONIC_RXQ_COMP_CSUM_F_UDP_OK: the UDP checksum the device calculated matched the checksum in the receive packet's UDP header 🫢
  • IONIC_RXQ_COMP_CSUM_F_UDP_BAD: the UDP checksum the device calculated did not match the checksum in the receive packet's UDP header πŸ’€
  • IONIC_RXQ_COMP_CSUM_F_IP_OK: the IPv4 checksum the device calculated matched the checksum in the receive packet's first IPv4 header. And listen β€” if the receive packet contains both a tunnel IPv4 header and a transport IPv4 header, the device validates the checksum for both IPv4 headers. double the validation, double the vibe πŸ‘‘
  • IONIC_RXQ_COMP_CSUM_F_IP_BAD: the IPv4 checksum the device calculated did not match the checksum in the receive packet's first IPv4 header. Same deal as above: if the receive packet contains both a tunnel IPv4 header and a transport IPv4 header, the device validates the checksum for both IP headers 🌸
  • IONIC_RXQ_COMP_CSUM_F_VLAN: the VLAN header was stripped and placed in vlan_tci 🏷️
  • IONIC_RXQ_COMP_CSUM_F_CALC: the checksum was calculated by the device, fr fr ⚑

🧚 SEE ALSO 🧚

literally the whole friend group, no cap 🫢

Kernel file ./drivers/net/ethernet/pensando/ionic/ionic_if.h struct ionic_admin_cmd(9), struct ionic_admin_comp(9), struct ionic_nop_cmd(9), struct ionic_nop_comp(9), struct ionic_dev_init_cmd(9), struct ionic_dev_init_comp(9), struct ionic_dev_reset_cmd(9), struct ionic_dev_reset_comp(9), struct ionic_dev_identify_cmd(9), struct ionic_dev_identify_comp(9), union ionic_drv_identity(9), enum ionic_dev_capability(9), union ionic_dev_identity(9), struct ionic_lif_identify_cmd(9), struct ionic_lif_identify_comp(9), enum ionic_lif_capability(9), enum ionic_logical_qtype(9), enum ionic_q_feature(9), enum ionic_rxq_feature(9), enum ionic_txq_feature(9), enum ionic_hwstamp_bits(9), struct ionic_lif_logical_qtype(9), enum ionic_lif_state(9), union ionic_lif_config(9), enum ionic_lif_rdma_cap_stats(9), union ionic_lif_identity(9), struct ionic_lif_init_cmd(9), struct ionic_lif_init_comp(9), struct ionic_q_identify_cmd(9), struct ionic_q_identify_comp(9), union ionic_q_identity(9), struct ionic_q_init_cmd(9), struct ionic_q_init_comp(9), struct ionic_txq_desc(9), struct ionic_txq_sg_elem(9), struct ionic_txq_sg_desc(9), struct ionic_txq_comp(9), struct ionic_rxq_desc(9), struct ionic_rxq_sg_elem(9), struct ionic_rxq_sg_desc(9), enum ionic_pkt_class(9), struct ionic_q_control_cmd(9), enum ionic_phy_type(9), enum ionic_xcvr_state(9), enum ionic_port_type(9), enum ionic_port_admin_state(9), enum ionic_port_oper_status(9), enum ionic_port_fec_type(9), enum ionic_port_pause_type(9), enum ionic_port_loopback_mode(9), struct ionic_xcvr_status(9), union ionic_port_config(9), struct ionic_port_status(9), struct ionic_port_identify_cmd(9), struct ionic_port_identify_comp(9), struct ionic_port_init_cmd(9), struct ionic_port_init_comp(9), struct ionic_port_reset_cmd(9), struct ionic_port_reset_comp(9), enum ionic_stats_ctl_cmd(9), enum ionic_txstamp_mode(9), enum ionic_port_attr(9), struct ionic_port_setattr_cmd(9), struct ionic_port_setattr_comp(9), struct ionic_port_getattr_cmd(9), struct ionic_port_getattr_comp(9), struct ionic_lif_status(9), struct ionic_lif_reset_cmd(9), enum ionic_dev_attr(9), struct ionic_dev_setattr_cmd(9), struct ionic_dev_setattr_comp(9), struct ionic_dev_getattr_cmd(9), struct ionic_dev_getattr_comp(9), enum ionic_lif_attr(9), struct ionic_lif_setattr_cmd(9), struct ionic_lif_setattr_comp(9), struct ionic_lif_getattr_cmd(9), struct ionic_lif_getattr_comp(9), struct ionic_lif_setphc_cmd(9), struct ionic_rx_mode_set_cmd(9), struct ionic_rx_filter_add_cmd(9), struct ionic_rx_filter_add_comp(9), struct ionic_rx_filter_del_cmd(9), enum ionic_vf_link_status(9), struct ionic_vf_setattr_cmd(9), struct ionic_vf_getattr_cmd(9), struct ionic_vf_ctrl_cmd(9), struct ionic_vf_ctrl_comp(9), struct ionic_discover_cmb_cmd(9), struct ionic_discover_cmb_comp(9), union ionic_cmb_region(9), union ionic_discover_cmb_identity(9), struct ionic_qos_identify_cmd(9), struct ionic_qos_identify_comp(9), enum ionic_qos_class_type(9), enum ionic_qos_sched_type(9), union ionic_qos_config(9), union ionic_qos_identity(9), struct ionic_qos_init_cmd(9), struct ionic_qos_reset_cmd(9), struct ionic_qos_clear_stats_cmd(9), struct ionic_fw_download_cmd(9), enum ionic_fw_control_oper(9), struct ionic_fw_control_cmd(9), struct ionic_fw_control_comp(9), struct ionic_rdma_reset_cmd(9), struct ionic_rdma_queue_cmd(9), struct ionic_notifyq_event(9), struct ionic_link_change_event(9), struct ionic_reset_event(9), struct ionic_heartbeat_event(9), struct ionic_log_event(9), struct ionic_xcvr_event(9), union ionic_port_identity(9), struct ionic_port_info(9), struct ionic_lif_info(9), struct ionic_hwstamp_regs(9), union ionic_dev_info_regs(9), union ionic_dev_cmd_regs(9), union ionic_dev_regs(9), struct ionic_doorbell(9) πŸ’œ


lowkey that's the whole page, bestie. go forth and parse those completions πŸ’…

okay so this came from ./drivers/net/ethernet/pensand... and it's dated October 2026, filed under struct ionic_rxq_comp(9) β€” mwah, that's a wrap πŸŽ€βœ¨

πŸ“¦ where this page comes from