fcoe_ctlr_els_send(9)
π fcoe_ctlr_els_send β¨
okay so welcome to the Kernel API Manual, bestie β today's main character is fcoe_ctlr_els_send, and she's literally the one deciding whether your ELS frame gets the FIP treatment or not π
πΈ NAME πΈ
fcoe_ctlr_els_send β send an ELS frame encapsulated by FIP if appropriate π
β¨ SYNOPSIS β¨
int fcoe_ctlr_els_send (struct fcoe_ctlr *fip , struct fc_lport *lport ,
struct sk_buff *skb );
π¦ ARGUMENTS π¦
fipβ the FCoE controller, aka the vibe coordinator of this whole operation πlportβ the libfcfc_lportyou're sending from, her home base fr frskbβ the FCoE ELS frame, which has the FC header already but no FCoE headers β those come later, iykyk
π DESCRIPTION π
So here's the tea, bestie: this function returns a non-zero error code if the frame should not be sent. It returns zero if the caller should go ahead and send the frame with FCoE encapsulation. Zero = slay, go off. Non-zero = nope, not today π
Now the part you cannot skip, no cap:
- The caller must check that the length is a multiple of
4. Like, non-negotiable. - The SKB must have enough headroom (
28bytes) and tailroom (8bytes). Both. Not one. Both π«Ά - The skb must also be an
fc_frame.
and one more thing β this gets called from the lower-level driver with spinlocks held, so we must not take a mutex here. Like, absolutely not. Do not do it. That's the rule π
π§ SEE ALSO π§
the whole friend group, in the kernel file ./drivers/scsi/fcoe/fcoe_ctlr.c π
fcoe_ctlr_set_state(9)fcoe_ctlr_mtu_valid(9)fcoe_ctlr_fcf_usable(9)fcoe_ctlr_map_dest(9)fcoe_ctlr_init(9)fcoe_sysfs_fcf_add(9)fcoe_sysfs_fcf_del(9)fcoe_ctlr_reset_fcfs(9)fcoe_ctlr_destroy(9)fcoe_ctlr_announce(9)fcoe_ctlr_fcoe_size(9)fcoe_ctlr_solicit(9)fcoe_ctlr_link_up(9)fcoe_ctlr_reset(9)fcoe_ctlr_link_down(9)fcoe_ctlr_send_keep_alive(9)fcoe_ctlr_encaps(9)fcoe_ctlr_age_fcfs(9)fcoe_ctlr_parse_adv(9)fcoe_ctlr_recv_adv(9)fcoe_ctlr_recv_els(9)fcoe_ctlr_recv_clr_vlink(9)fcoe_ctlr_recv(9)fcoe_ctlr_recv_handler(9)fcoe_ctlr_select(9)fcoe_ctlr_flogi_send_locked(9)fcoe_ctlr_flogi_retry(9)fcoe_ctlr_flogi_send(9)fcoe_ctlr_timeout(9)fcoe_ctlr_timer_work(9)fcoe_ctlr_recv_work(9)fcoe_ctlr_recv_flogi(9)fcoe_wwn_from_mac(9)fcoe_ctlr_rport(9)fcoe_ctlr_vn_send(9)fcoe_ctlr_vn_rport_callback(9)fcoe_ctlr_disc_stop_locked(9)fcoe_ctlr_disc_stop(9)fcoe_ctlr_disc_stop_final(9)fcoe_ctlr_vn_restart(9)fcoe_ctlr_vn_start(9)fcoe_ctlr_vn_parse(9)fcoe_ctlr_vn_send_claim(9)fcoe_ctlr_vn_probe_req(9)fcoe_ctlr_vn_probe_reply(9)fcoe_ctlr_vn_add(9)fcoe_ctlr_vn_lookup(9)fcoe_ctlr_vn_claim_notify(9)fcoe_ctlr_vn_claim_resp(9)fcoe_ctlr_vn_beacon(9)fcoe_ctlr_vn_age(9)fcoe_ctlr_vn_recv(9)fcoe_ctlr_vlan_parse(9)fcoe_ctlr_vlan_send(9)fcoe_ctlr_vlan_disc_reply(9)fcoe_ctlr_vlan_recv(9)fcoe_ctlr_disc_recv(9)fcoe_ctlr_vn_disc(9)fcoe_ctlr_vn_timeout(9)fcoe_ctlr_mode_set(9)fcoe_libfc_config(9)
okay that's the whole page, you ate that π β¨
this little love letter came from ./drivers/scsi/fcoe, dated October 2026, and it's signed fcoe_ctlr_els_send(9) β mwah, bye bestie ππ«Ά
π¦ 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