STRUCT IONIC_RXQ_COMP(9)
π 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 anenum 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 inlenπ. ikyky.vlan_tciβ the VLAN tag stripped from the packet. She's only valid if VLAN is set, and she includes the.1pand.1qtags π·οΈlenβ received packet length, in bytes. Excludes FCS. Also, csum_calc L2 payload checksum is computed or not πcsum_flagsβ seeIONIC_RXQ_COMP_CSUM_F_*πpkt_type_colorβ packet type plus color bit; seeIONIC_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 invlan_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
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms