STRUCT FCOE_CTLR(9)

๐Ÿ“ฆ version 7.3.1, in nixpkgs unstable

โœจ 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, or NULL ๐ŸŽ€
  • fcfs โ€” the list of discovered FCFs ๐Ÿ’ซ
  • cdev โ€” (optional!) pointer to the sysfs fcoe_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 โ€” the timer struct used for all the delayed events โฒ๏ธ
  • timer_work โ€” work_struct for doing keep-alives and resets ๐Ÿ”„
  • recv_work โ€” work_struct for 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 the FC_MAP mode 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 covering flogi_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 ๐Ÿ‘€

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