STRUCT FCOE_CTLR(9)
โจ struct fcoe_ctlr(9) โจ
okay so bestie, welcome to the struct fcoe_ctlr page from the Kernel API Manual โ this is the FCoE Controller situation and its FIP state, and it's giving main character energy in the FCoE world fr fr ๐
๐ NAME ๐
struct fcoe_ctlr โ FCoE Controller and FIP state ๐ฆ
โจ SYNOPSIS โจ
struct fcoe_ctlr {
enum fip_state state;
enum fip_mode mode;
struct fc_lport *lp;
struct fcoe_fcf *sel_fcf;
struct list_head fcfs;
struct fcoe_ctlr_device *cdev;
u16 fcf_count;
unsigned long sol_time;
unsigned long sel_time;
unsigned long port_ka_time;
unsigned long ctlr_ka_time;
struct timer_list timer;
struct work_struct timer_work;
struct work_struct recv_work;
struct sk_buff_head fip_recv_list;
struct sk_buff *flogi_req;
struct rnd_state rnd_state;
u32 port_id;
u16 user_mfs;
u16 flogi_oxid;
u8 flogi_req_send;
u8 flogi_count;
bool map_dest;
bool fip_resp;
u8 spma;
u8 probe_tries;
u8 priority;
u8 dest_addr[ETH_ALEN];
u8 ctl_src_addr[ETH_ALEN];
void (*send)(struct fcoe_ctlr *, struct sk_buff *);
void (*update_mac)(struct fc_lport *, u8 *addr);
u8 * (*get_src_addr)(struct fc_lport *);
struct mutex ctlr_mutex;
spinlock_t ctlr_lock;
};
like, that's the whole struct, no cap ๐
๐ Members ๐
okay so here's the field-by-field breakdown, bestie โ every single one, let's go ๐โโ๏ธ๐จ
stateโ internal FIP state for the network link and for FIP or non-FIP mode ๐ธmodeโ the mode that the LLD selected โจlpโfc_lport: the libfc local port ๐ฆsel_fcfโ the FCF that's currently selected, orNULL๐fcfsโ the list of discovered FCFs ๐ซcdevโ (optional!) pointer to the sysfsfcoe_ctlr_device๐ซถfcf_countโ how many discovered FCF entries there are ๐ขsol_timeโ the time when a multicast solicitation was last sent โฐsel_timeโ the time after which to select an FCF โport_ka_timeโ time of the next port keep-alive ๐ctlr_ka_timeโ time of the next controller keep-alive ๐timerโ thetimerstruct used for all the delayed events โฒ๏ธtimer_workโwork_structfor doing keep-alives and resets ๐recv_workโwork_structfor receiving FIP frames ๐ฅfip_recv_listโ the list of received FIP frames ๐flogi_reqโ a clone of the FLOGI request that was sent ๐คrnd_stateโ state for the pseudo-random number generator ๐ฒport_idโ the proposed or selected local-port ID ๐user_mfsโ the configured maximum FC frame size, including the FC header ๐flogi_oxidโ the exchange ID of the most recent fabric login ๐flogi_req_sendโ send of FLOGI requested ๐จflogi_countโ the number of FLOGI attempts in AUTO mode ๐map_destโ use theFC_MAPmode for destination MAC addresses ๐บ๏ธfip_respโ start the FIP VLAN discovery responder ๐กspmaโ supports the SPMA server-provided MACs mode ๐ณprobe_triesโ the number of FC_IDs probed ๐priorityโ DCBx FCoE APP priority โญdest_addrโ MAC address of the selected FC forwarder ๐ฏctl_src_addrโ the native MAC address of our local port ๐sendโ LLD-supplied function to handle sending FIP Ethernet frames ๐update_macโ LLD-supplied function to handle changes to MAC addresses ๐งget_src_addrโ LLD-supplied function to supply a source MAC address ๐ฎctlr_mutexโ lock protecting this structure ๐ctlr_lockโ spinlock coveringflogi_req๐
๐ Description ๐
so like, this structure is used by all FCoE drivers โ every single one, periodt ๐ It's holding all the info that all the FCoE low-level drivers (LLDs) need, plus the internal state for FIP, plus the fields that get shared with the LLDs. it's literally the group chat everyone's in ๐ฌ๐ซถ
๐ SEE ALSO ๐
- Kernel file
./include/scsi/libfcoe.h enum fip_state(9)fcoe_ctlr_priv(9)struct fcoe_fcf(9)struct fcoe_rport(9)is_fip_mode(9)struct fcoe_percpu_s(9)struct fcoe_port(9)fcoe_get_netdev(9)struct fcoe_netdev_mapping(9)
go read those too, iykyk ๐
and that's the page, bestie!! ๐ this lil gem lives in ./include/scsi, it's part of the Kernel API Manual, and it's dated October 2026 โญ you're so welcome, mwah ๐๐ธ๐ฆ
๐ฆ 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