fc_fcp_recv(9)
π fc_fcp_recv β the group chat version
okay so bestie, quick vibe check: this page lives in the Kernel API Manual, and it's all about one little function that justβ¦ receives an FCP frame. that's it. that's the whole personality. and honestly? iconic that something so small gets its own manpage. no cap. π
β¨ NAME β¨
fc_fcp_recv β receive an FCP frame π
like, a frame literally arrives, and this is the function that's there to catch it. main character energy fr fr.
π¦ SYNOPSIS π¦
void fc_fcp_recv (struct fc_seq *seq , struct fc_frame *fp , void *arg
);
yes it returns void. yes it's three arguments. yes the trailing ); is on its own line and we are not touching it, that's just how it's written, periodt. π
πΈ ARGUMENTS πΈ
seqβ the sequence that the frame is riding on. think of it as the frame's lil context, its "which conversation am I in" energy. π¬fpβ the actual received frame. the star of the show, the package, the whole reason we're here. π¦argβ the related FCP packet. the buddy that comes along with the frame, iykyk. π«Ά
π₯ CONTEXT π₯
okay this part matters, so pay attention bestie π:
this gets called from Soft IRQ context. so like, interrupt-adjacent land. not sleepy regular-process energy.
and β the big one β it can not be called while holding the FCP packet list lock. like, do not do that. that's a hard nope. the manpage says so, I'm just relaying the message. π
lowkey important: no holding the FCP packet list lock. not even a little. not even if you're being cute about it. π«π
π SEE ALSO π
okay this list is long and every single one of these is here, so buckle up bestie, we're going through the whole squad π
- Kernel file
./drivers/scsi/libfc/fc_fcp.candstruct fc_fcp_internal(9) fc_fcp_pkt_alloc(9)fc_fcp_pkt_release(9)fc_fcp_pkt_hold(9)fc_fcp_pkt_destroy(9)fc_fcp_lock_pkt(9)fc_fcp_unlock_pkt(9)fc_fcp_timer_set(9)fc_fcp_send_abort(9)fc_fcp_retry_cmd(9)fc_fcp_ddp_setup(9)fc_fcp_ddp_done(9)fc_fcp_can_queue_ramp_up(9)fc_fcp_can_queue_ramp_down(9)get_fsp_rec_tov(9)fc_fcp_recv_data(9)fc_fcp_send_data(9)fc_fcp_abts_resp(9)fc_fcp_resp(9)fc_fcp_complete_locked(9)fc_fcp_cleanup_cmd(9)fc_fcp_cleanup_each_cmd(9)fc_fcp_abort_io(9)fc_fcp_pkt_send(9)fc_fcp_cmd_send(9)fc_fcp_error(9)fc_fcp_pkt_abort(9)fc_lun_reset_send(9)fc_lun_reset(9)fc_tm_done(9)fc_fcp_cleanup(9)fc_fcp_timeout(9)fc_fcp_rec(9)fc_fcp_rec_resp(9)fc_fcp_rec_error(9)fc_fcp_recovery(9)fc_fcp_srr(9)fc_fcp_srr_resp(9)fc_fcp_srr_error(9)fc_fcp_lport_queue_ready(9)fc_queuecommand(9)fc_io_compl(9)fc_eh_abort(9)fc_eh_device_reset(9)fc_eh_host_reset(9)fc_sdev_init(9)fc_fcp_destroy(9)fc_fcp_init(9)
like I said. the whole squad. go read them if you're curious, they're all in ./drivers/scsi/libfc and they all ate. π
and that's the page, bestie!! π this lil rewrite comes to you courtesy of ./drivers/scsi/libfc, dated October 2026 β go off, you gorgeous kernel file, you. π§ββοΈβπ
π¦ 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