STRUCT EFX_EF10_NIC_DATA(9)
π struct efx_ef10_nic_data(9) β like, the EF10 architecture NIC state, bestie
okay so this is a page from the Kernel API Manual, and it's literally all about struct efx_ef10_nic_data, which is the EF10 architecture NIC state. yes. the whole vibe. come sit with me π«Ά
β¨ NAME β¨
struct efx_ef10_nic_data β EF10 architecture NIC state, no cap π
πΈ SYNOPSIS πΈ
here's the whole struct, copied exactly, because we do not paraphrase code in this house:
struct efx_ef10_nic_data {
struct efx_buffer mcdi_buf;
u16 warm_boot_count;
unsigned int vi_base;
unsigned int n_allocated_vis;
unsigned int n_piobufs;
void __iomem *wc_membase, *pio_write_base;
unsigned int pio_write_vi_base;
unsigned int piobuf_handle[EF10_TX_PIOBUF_COUNT];
u16 piobuf_size;
bool must_restore_piobufs;
__le64 *mc_stats;
u64 stats[EF10_STAT_COUNT];
bool workaround_35388;
bool workaround_26807;
bool workaround_61265;
bool must_check_datapath_caps;
u32 datapath_caps;
u32 datapath_caps2;
u32 datapath_caps3;
unsigned int rx_dpcpu_fw_id;
unsigned int tx_dpcpu_fw_id;
bool must_probe_vswitching;
unsigned int pf_index;
u8 port_id[ETH_ALEN];
#ifdef CONFIG_SFC_SRIOV;
unsigned int vf_index;
struct ef10_vf *vf;
#endif;
u8 vport_mac[ETH_ALEN];
struct list_head vlan_list;
struct mutex vlan_lock;
struct efx_udp_tunnel udp_tunnels[16];
bool udp_tunnels_dirty;
struct mutex udp_tunnels_lock;
u64 licensed_features;
};
π¦ Members π¦
time for the field-by-field tour, and yes I'm gonna be excited about every single one, that's just who I am π
mcdi_bufβ the DMA buffer for MCDI. it's giving "important little scratch space" β¨warm_boot_countβ the last seen MC warm boot count. lowkey a little counter for the warm boots πvi_baseβ the absolute index of the first VI in this function. absolute, bestie, not relative πn_allocated_visβ how many VIs got allocated to this function. the VI headcount fr frn_piobufsβ how many PIO buffers got allocated to this function. PIO buffer headcount, part two πwc_membaseβ base address of the write-combining mapping of the memory BAR. that's the whole thing, I'm not adding lorepio_write_baseβ base address for writing PIO buffers πpio_write_vi_baseβ the relative VI number forpio_write_base. see, relative this time, told you π«Άpiobuf_handleβ handle of each PIO buffer allocated. each one. every single handle has a home here π§piobuf_sizeβ size of a single PIO buffer. one (1) buffer's sizemust_restore_piobufsβ a flag: the PIO buffers have yet to be restored after an MC reboot. so like, they're not back yet πmc_statsβ scratch buffer for converting statistics to the kernel's format. a little translation station β¨statsβ hardware statistics. the numbers themselves, iconicworkaround_35388β flag: firmware supports the workaround for bug35388π©Ήworkaround_26807β flag: firmware supports the workaround for bug26807π©Ήworkaround_61265β flag: firmware supports the workaround for bug61265π©Ή (three workarounds, three bugs, three flags, we love a pattern)must_check_datapath_capsβ flag:datapath_capsneeds to be revalidated after an MC reboot. revalidate, don't skip πdatapath_capsβ capabilities of datapath firmware, specifically theFLAGS1field of theMC_CMD_GET_CAPABILITIESresponse π₯datapath_caps2β further capabilities of datapath firmware, theFLAGS2field of theMC_CMD_GET_CAPABILITIESresponsedatapath_caps3β further capabilities of datapath firmware, theFLAGS3field of theMC_CMD_GET_CAPABILITIESresponse. yes there's a third one, she ate πrx_dpcpu_fw_idβ firmware ID of the RxDPCPU πtx_dpcpu_fw_idβ firmware ID of the TxDPCPU πmust_probe_vswitchingβ flag: vswitching has yet to be set up after an MC reboot. same energy as the piobufs one, different subsystem πpf_indexβ the number for this PF, or the parent PF if this is a VF. got it? got it β¨port_idβ the Ethernet address of the owning PF, used forphys_port_idπvf_indexβ the number for this VF, or0xFFFFif this is a VF. that's literally what it says, I'm not touching it πvfβ for a PF, an array of VF data structures indexed by the VF'svf_indexπvport_macβ the MAC address on the vport, only for PFs; VFs will be zero. PFs only, bestie, read the room πΈvlan_listβ list of VLANs added over the interface. serialised byvlan_lock. πvlan_lockβ lock to serialize access tovlan_list. the bouncer for the VLAN list πudp_tunnelsβ UDP tunnel port numbers and types. there are16of them, in case you were wondering, and now you're not wondering π¦udp_tunnels_dirtyβ flag indicating a reboot happened while pushingudp_tunnelsto hardware, and thus the push must be re-done. redo the push, fr fr πudp_tunnels_lockβ serialises writes toudp_tunnelsandudp_tunnels_dirty. one at a time, please π«Άlicensed_featuresβ flags for licensed firmware features. licensed, iconic, periodt π
π₯ SEE ALSO π₯
- Kernel file
./drivers/net/ethernet/sfc/nic.hβ go read it, iykyk π
ok that's the whole page, nothing skipped, nothing merged, nothing invented. every field, every flag, every 0xFFFF accounted for π
and that's a wrap, bestie π this beauty lives in ./drivers/net/ethernet/sfc, dated October 2026, in the Kernel API Manual β mwah, go forth and read your NIC state πβ¨π
π¦ 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