STRUCT EFX_MCDI_IFACE(9)
π struct efx_mcdi_iface(9) β like, the whole MCDI protocol context, bestie
okay so this is a page straight out of the Kernel API Manual, and it's all about struct efx_mcdi_iface, aka the MCDI protocol context. no cap, it's giving "the little control room where all the MCDI traffic gets its life together" π
β¨ NAME β¨
struct efx_mcdi_iface β MCDI protocol context π¦
πΈ SYNOPSIS πΈ
struct efx_mcdi_iface {
struct efx_nic *efx;
enum efx_mcdi_state state;
enum efx_mcdi_mode mode;
wait_queue_head_t wq;
spinlock_t iface_lock;
bool new_epoch;
unsigned int credits;
unsigned int seqno;
int resprc;
int resprc_raw;
size_t resp_hdr_len;
size_t resp_data_len;
spinlock_t async_lock;
struct list_head async_list;
struct timer_list async_timer;
#ifdef CONFIG_SFC_SIENA_MCDI_LOGGING;
char *logging_buffer;
bool logging_enabled;
#endif;
unsigned int proxy_rx_handle;
int proxy_rx_status;
wait_queue_head_t proxy_rx_wq;
};
like, yes, that's the whole struct, character for character, we do not skip members in this group chat π
π§ Members π§
efxβ the NIC this whole thing is attached to, its lil bestie π«Άstateβ the request handling state.wqwaits on this one, so it's kind of the main character here β¨modeβ decides the vibe: poll for an mcdi completion, or wait for an mcdi_event πwqβ the wait queue for threads that are sitting around waiting forstate != MCDI_STATE_RUNNINGπiface_lockβ serialises access toseqno,creditsand the response metadata. one at a time, babe, no shoving πnew_epochβ flags the start of day, or the start of MC reboot recovery πcreditsβ how many spurious MCDI completion events we'll tolerate before we trigger a fatal error π like, there is a limitseqnoβ the next sequence number to use for mcdi requests, keeping everything in order fr frresprcβ response error/success code (Linux numbering) πresp_hdr_lenβ response header lengthresp_data_lenβ response data (SDU or error) lengthasync_lockβ serialises access toasync_listwhile event processing is enabled πasync_listβ the queue of asynchronous requests, lined up like it's a queue for a pop-up πasync_timerβ timer for asynchronous request timeout β°logging_bufferβ a buffer that may be used to build MCDI tracing messages; lowkey the journal πlogging_enabledβ whether to trace MCDI. on or off, that's the whole question π¦proxy_rx_handleβ the most recently received proxy authorisation handle πproxy_rx_statusβ status of the most recent proxy authorisation βproxy_rx_wqβ wait queue for updates toproxy_rx_handleπ«Ά
π SEE ALSO π
- Kernel file
./drivers/net/ethernet/sfc/siena/mcdi.henum efx_mcdi_state(9)efx_mcdi_mode(9)struct efx_mcdi_data(9)
and that's the tea β this iconic lil page lives in ./drivers/net/ethernet/sfc/siena, dated October 2026, and it's literally titled struct efx_mcdi_iface(9) β go read the source bestie, iykyk ππΈ
π¦ 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