STRUCT IDPF_ADAPTER(9)
π NAME π
struct idpf_adapter β the device data struct that gets generated on probe β¨
(okay so this is from the Kernel API Manual, section 9, and it's genuinely the main-character struct of the whole idpf show π )
π¦ SYNOPSIS π¦
struct idpf_adapter {
struct pci_dev *pdev;
u32 virt_ver_maj;
u32 virt_ver_min;
u32 msg_enable;
u32 mb_wait_count;
enum idpf_state state;
unsigned long flags[BITS_TO_LONGS( IDPF_FLAGS_NBITS)];
struct idpf_reset_reg reset_reg;
struct libie_ctlq_ctx ctlq_ctx;
struct libie_ctlq_info *asq;
struct libie_ctlq_info *arq;
struct libie_ctlq_xn_manager *xnm;
u16 num_avail_msix;
u16 num_msix_entries;
struct msix_entry *msix_entries;
u16 num_rdma_msix_entries;
struct msix_entry *rdma_msix_entries;
struct virtchnl2_alloc_vectors *req_vec_chunks;
struct idpf_q_vector mb_vector;
struct idpf_vector_lifo vector_stack;
irqreturn_t (*irq_mb_handler)(int irq, void *data);
u32 tx_timeout_count;
struct idpf_avail_queue_info avail_queues;
struct idpf_vport **vports;
struct net_device **netdevs;
struct virtchnl2_create_vport **vport_params_recvd;
u32 *vport_ids;
struct libeth_rx_pt *singleq_pt_lkup;
struct libeth_rx_pt *splitq_pt_lkup;
struct idpf_vport_config **vport_config;
u16 max_vports;
u16 num_alloc_vports;
u16 next_vport;
struct delayed_work init_task;
struct workqueue_struct *init_wq;
struct delayed_work serv_task;
struct workqueue_struct *serv_wq;
struct delayed_work mbx_task;
struct workqueue_struct *mbx_wq;
struct delayed_work vc_event_task;
struct workqueue_struct *vc_event_wq;
struct delayed_work stats_task;
struct workqueue_struct *stats_wq;
struct virtchnl2_get_capabilities caps;
struct idpf_dev_ops dev_ops;
struct iidc_rdma_core_dev_info *cdev_info;
int num_vfs;
bool crc_enable;
bool req_tx_splitq;
bool req_rx_splitq;
struct mutex vport_ctrl_lock;
struct mutex vector_lock;
struct mutex queue_lock;
struct mutex vc_buf_lock;
struct idpf_ptp *ptp;
};
π Members π
like, every field, bestie, in order, no skips π«Ά
pdevβ the PCI device struct they hand you on probe πvirt_ver_majβ Virtchnl version, the major onevirt_ver_minβ Virtchnl version, the minor onemsg_enableβ debug message level that's currently enabled πmb_wait_countβ how many times the mailbox got attempted-initializedstateβ the init state machine πflagsβ peepenum idpf_flagsreset_regβ peepstruct idpf_reset_regctlq_ctxβ controlq contextasqβ Send control queue info π€arqβ Receive control queue info π₯xnmβ Xn transaction managernum_avail_msixβ how many MSIX vectors are availablenum_msix_entriesβ how many entries are in the MSIX tablemsix_entriesβ the MSIX table itselfnum_rdma_msix_entriesβ how many MSIX vectors are available for RDMArdma_msix_entriesβ the RDMA MSIX tablereq_vec_chunksβ requested vector chunk datamb_vectorβ mailbox vector data πvector_stackβ stack that stores the msix vector indexesirq_mb_handlerβ handler for the hard interrupt for the mailbox β‘tx_timeout_countβ how many TX timeouts have happened πavail_queuesβ queue limits that the device gave youvportsβ array holding the vports the driver creatednetdevsβ the associated Vport netdevsvport_params_recvdβ vport params that got receivedvport_idsβ array of vport identifiers handed out by the devicesingleq_pt_lkupβ lookup table for singleq RX ptypessplitq_pt_lkupβ lookup table for splitq RX ptypesvport_configβ vport config parametersmax_vportsβ max vports that can be allocatednum_alloc_vportsβ current number of vports allocatednext_vportβ next free slot inpf->vport[]β 0-based! π¨init_taskβ initialization taskinit_wqβ workqueue for the initialization taskserv_taskβ the periodically recurring maintenance taskserv_wqβ workqueue for the service taskmbx_taskβ task that handles mailbox interruptsmbx_wqβ workqueue for mailbox responsesvc_event_taskβ task that handles out-of-band virtchnl event notificationsvc_event_wqβ workqueue for virtchnl eventsstats_taskβ periodic statistics retrieval task πstats_wqβ workqueue for the statistics taskcapsβ negotiated capabilities with the device π€dev_opsβ peepidpf_dev_opscdev_infoβ IDC core device info pointernum_vfsβ number of allocated VFs through sysfs. The PF does not directly talk to VFs, but it is used to initialize themcrc_enableβ enable CRC insertion offloadreq_tx_splitqβ TX split or single queue model to requestreq_rx_splitqβ RX split or single queue model to requestvport_ctrl_lockβ lock protecting the vport control flow πvector_lockβ lock protecting vector distributionqueue_lockβ lock protecting queue distributionvc_buf_lockβ lock protecting virtchnl bufferptpβ storage for PTP-related data β°
π SEE ALSO π
Kernel file ./drivers/net/ethernet/intel/idpf/idpf.h (that's where the goods live, iykyk):
struct idpf_mac_filter(9)enum idpf_state(9)enum idpf_flags(9)enum idpf_cap_field(9)enum idpf_vport_state(9)struct idpf_netdev_priv(9)struct idpf_reset_reg(9)struct idpf_vport_max_q(9)struct idpf_reg_ops(9)struct idpf_dev_ops(9)enum idpf_vport_reset_cause(9)enum idpf_vport_flags(9)struct idpf_tstamp_stats(9)struct idpf_q_vec_rsrc(9)struct idpf_vport(9)enum idpf_user_flags(9)struct idpf_rss_data(9)struct idpf_q_coalesce(9)struct idpf_vport_user_config_data(9)enum idpf_vport_config_flags(9)struct idpf_avail_queue_info(9)struct idpf_vector_info(9)struct idpf_vector_lifo(9)struct idpf_queue_id_reg_chunk(9)struct idpf_queue_id_reg_info(9)struct idpf_vport_config(9)idpf_is_queue_model_split(9)idpf_is_rdma_cap_ena(9)idpf_get_reserved_vecs(9)idpf_get_reserved_rdma_vecs(9)idpf_get_default_vports(9)idpf_get_max_vports(9)idpf_get_max_tx_bufs(9)idpf_get_min_tx_pkt_len(9)idpf_is_reset_detected(9)idpf_is_reset_in_prog(9)idpf_netdev_to_vport(9)idpf_netdev_to_adapter(9)idpf_is_feature_ena(9)idpf_get_max_tx_hdr_size(9)idpf_vport_ctrl_lock(9)idpf_vport_ctrl_unlock(9)
lowkey a whole ecosystem in here fr fr β read the friends too, don't leave them on read π
okay that's the whole page, bestie!! this one came from ./drivers/net/ethernet/intel/idpf, dated October 2026, and it's struct idpf_adapter(9) from the Kernel API Manual β go forth and slay your probe path π
β¨π¦
π¦ 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