lpfc_fc_frame_add(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– NAME πŸ’–

okay bestie, this is lpfc_fc_frame_add(9) from the Kernel API Manual, and it's literally giving β€œadds a frame to the vport's list of received sequences” realness ✨. That's the whole name vibe: lpfc_fc_frame_add β€” adds a frame to the vport's list of received sequences πŸŽ€.


✨ SYNOPSIS ✨

struct hbq_dmabuf * lpfc_fc_frame_add (struct lpfc_vport *vport , struct
hbq_dmabuf *dmabuf );

πŸŽ€ ARGUMENTS πŸŽ€

  • vport β€” pointer to a vitural port (yes, β€œvitural” β€” we're keeping the original spelling, and honestly it's iconic πŸ’…).
  • dmabuf β€” pointer to a dmabuf that describes the hdr and data of the FC frame πŸ¦‹.

πŸ¦‹ DESCRIPTION πŸ¦‹

So here's the tea, bestie: this function searches through the existing incomplete sequences that have been sent to this vport. Literally scanning the group chat for a matching thread πŸ”πŸ’¬.

If the frame matches one of the incomplete sequences, then the dbuf in the dmabuf is added to the list of frames that make up that sequence. Slay, it found its people. 🫢

If no sequence is found that matches this frame, then the function will add the hbuf in the dmabuf to the vport's rcv_buffer_list. New thread, new main character energy. πŸ’…

This function returns a pointer to the first dmabuf in the sequence list that the frame was linked to. Periodt β€” that's the return value. ✨


🌈 SEE ALSO 🌈

Okay this next part is a whole group chat of kernel functions β€” do not skip it, bestie, because every single reference is invited to the party 🫢. The kernel file is ./drivers/scsi/lpfc/lpfc_sli.c, and here's the full see-also wall of fame, exactly as the page gives it:

Kernel file ./drivers/scsi/lpfc/lpfc_sli.c lpfc_sli4_pcimem_bcopy(9),
lpfc_sli4_wq_put(9), lpfc_sli4_wq_release(9), lpfc_sli4_mq_put(9),
lpfc_sli4_mq_release(9), lpfc_sli4_eq_get(9), lpfc_sli4_eq_clr_intr(9),
lpfc_sli4_if6_eq_clr_intr(9), lpfc_sli4_write_eq_db(9),
lpfc_sli4_if6_write_eq_db(9), lpfc_sli4_cq_get(9),
lpfc_sli4_write_cq_db(9), lpfc_sli4_if6_write_cq_db(9),
lpfc_cmd_iocb(9), lpfc_resp_iocb(9), __lpfc_sli_get_iocbq(9),
__lpfc_clear_active_sglq(9), __lpfc_get_active_sglq(9),
lpfc_clr_rrq_active(9), lpfc_handle_rrq_active(9),
lpfc_get_active_rrq(9), lpfc_cleanup_vports_rrqs(9),
lpfc_test_rrq_active(9), lpfc_set_rrq_active(9),
__lpfc_sli_get_els_sglq(9), __lpfc_sli_get_nvmet_sglq(9),
lpfc_sli_get_iocbq(9), __lpfc_sli_release_iocbq_s4(9),
__lpfc_sli_release_iocbq_s3(9), __lpfc_sli_release_iocbq(9),
lpfc_sli_release_iocbq(9), lpfc_sli_cancel_iocbs(9),
lpfc_sli_iocb_cmd_type(9), lpfc_sli_ring_map(9),
lpfc_sli_ringtxcmpl_put(9), lpfc_sli_ringtx_get(9),
lpfc_cmf_sync_cmpl(9), lpfc_issue_cmf_sync_wqe(9),
lpfc_sli_next_iocb_slot(9), lpfc_sli_next_iotag(9),
lpfc_sli_submit_iocb(9), lpfc_sli_update_full_ring(9),
lpfc_sli_update_ring(9), lpfc_sli_resume_iocb(9),
lpfc_sli_next_hbq_slot(9), lpfc_sli_hbqbuf_free_all(9),
lpfc_sli_hbq_to_firmware(9), lpfc_sli_hbq_to_firmware_s3(9),
lpfc_sli_hbq_to_firmware_s4(9), lpfc_sli_hbqbuf_fill_hbqs(9),
lpfc_sli_hbqbuf_add_hbqs(9), lpfc_sli_hbqbuf_init_hbqs(9),
lpfc_sli_rqbuf_get(9), lpfc_sli_hbqbuf_find(9), lpfc_sli_free_hbq(9),
lpfc_sli_chk_mbx_command(9), lpfc_sli_wake_mbox_wait(9),
lpfc_sli_def_mbox_cmpl(9), lpfc_sli_handle_mb_event(9),
lpfc_sli_get_buff(9), lpfc_nvme_unsol_ls_handler(9),
lpfc_complete_unsol_iocb(9), lpfc_sli_process_unsol_iocb(9),
lpfc_sli_iocbq_lookup(9), lpfc_sli_iocbq_lookup_by_tag(9),
lpfc_sli_process_sol_iocb(9), lpfc_sli_rsp_pointers_error(9),
lpfc_poll_eratt(9), lpfc_sli_handle_fast_ring_event(9),
lpfc_sli_sp_handle_rspiocb(9), lpfc_sli_handle_slow_ring_event(9),
lpfc_sli_handle_slow_ring_event_s3(9),
lpfc_sli_handle_slow_ring_event_s4(9), lpfc_sli_abort_iocb_ring(9),
lpfc_sli_abort_fcp_rings(9), lpfc_sli_flush_io_rings(9),
lpfc_sli_brdready_s3(9), lpfc_sli_brdready_s4(9), lpfc_sli_brdready(9),
lpfc_reset_barrier(9), lpfc_sli_brdkill(9), lpfc_sli_brdreset(9),
lpfc_sli4_brdreset(9), lpfc_sli_brdrestart_s3(9),
lpfc_sli_brdrestart_s4(9), lpfc_sli_brdrestart(9),
lpfc_sli_chipset_init(9), lpfc_sli_hbq_count(9),
lpfc_sli_hbq_entry_count(9), lpfc_sli_hbq_size(9),
lpfc_sli_hbq_setup(9), lpfc_sli4_rb_setup(9), lpfc_sli_config_port(9),
lpfc_sli_hba_setup(9), lpfc_sli4_read_fcoe_params(9),
lpfc_sli4_read_rev(9), lpfc_sli4_get_ctl_attr(9),
lpfc_sli4_retrieve_pport_name(9), lpfc_sli4_arm_cqeq_intr(9),
lpfc_sli4_get_avail_extnt_rsrc(9), lpfc_sli4_chk_avail_extnt_rsrc(9),
lpfc_sli4_cfg_post_extnts(9), lpfc_sli4_alloc_extent(9),
lpfc_sli4_dealloc_extent(9), lpfc_ras_stop_fwlog(9),
lpfc_sli4_ras_dma_free(9), lpfc_sli4_ras_dma_alloc(9),
lpfc_sli4_ras_mbox_cmpl(9), lpfc_sli4_ras_fwlog_init(9),
lpfc_sli4_ras_setup(9), lpfc_sli4_alloc_resource_identifiers(9),
lpfc_sli4_dealloc_resource_identifiers(9),
lpfc_sli4_get_allocated_extnts(9), lpfc_sli4_repost_sgl_list(9),
lpfc_sli4_repost_io_sgl_list(9), lpfc_init_idle_stat_hb(9),
lpfc_rx_monitor_create_ring(9), lpfc_rx_monitor_destroy_ring(9),
lpfc_rx_monitor_record(9), lpfc_rx_monitor_report(9), lpfc_cmf_setup(9),
lpfc_get_platform_uuid(9), lpfc_sli4_hba_setup(9), lpfc_mbox_timeout(9),
lpfc_sli4_mbox_completions_pending(9),
lpfc_sli4_process_missed_mbox_completions(9),
lpfc_mbox_timeout_handler(9), lpfc_sli_issue_mbox_s3(9),
lpfc_sli4_async_mbox_block(9), lpfc_sli4_async_mbox_unblock(9),
lpfc_sli4_wait_bmbx_ready(9), lpfc_sli4_post_sync_mbox(9),
lpfc_sli_issue_mbox_s4(9), lpfc_sli4_post_async_mbox(9),
lpfc_sli_issue_mbox(9), lpfc_mbox_api_table_setup(9),
__lpfc_sli_ringtx_put(9), lpfc_sli_next_iocb(9),
__lpfc_sli_issue_iocb_s3(9), __lpfc_sli_issue_fcp_io_s3(9),
__lpfc_sli_issue_fcp_io_s4(9), __lpfc_sli_issue_iocb_s4(9),
lpfc_sli_api_table_setup(9), lpfc_sli4_calc_ring(9),
lpfc_sli_issue_iocb(9), lpfc_extra_ring_setup(9),
lpfc_sli_async_event_handler(9), lpfc_sli4_setup(9), lpfc_sli_setup(9),
lpfc_sli4_queue_init(9), lpfc_sli_queue_init(9),
lpfc_sli_mbox_sys_flush(9), lpfc_sli_host_down(9), lpfc_sli_hba_down(9),
lpfc_sli_pcimem_bcopy(9), lpfc_sli_bemem_bcopy(9),
lpfc_sli_ringpostbuf_put(9), lpfc_sli_get_buffer_tag(9),
lpfc_sli_ring_taggedbuf_get(9), lpfc_sli_ringpostbuf_get(9),
lpfc_sli_abort_els_cmpl(9), lpfc_ignore_els_cmpl(9),
lpfc_sli_issue_abort_iotag(9), lpfc_sli_hba_iocb_abort(9),
lpfc_sli_validate_fcp_iocb_for_abort(9), lpfc_sli_validate_fcp_iocb(9),
lpfc_sli_sum_iocb(9), lpfc_sli_abort_fcp_cmpl(9),
lpfc_sli_abort_iocb(9), lpfc_sli_abort_taskmgmt(9),
lpfc_sli_wake_iocb_wait(9), lpfc_chk_iocb_flg(9),
lpfc_sli_issue_iocb_wait(9), lpfc_sli_issue_mbox_wait(9),
lpfc_sli_mbox_sys_shutdown(9), lpfc_sli_eratt_read(9),
lpfc_sli4_eratt_read(9), lpfc_sli_check_eratt(9),
lpfc_intr_state_check(9), lpfc_sli_sp_intr_handler(9),
lpfc_sli_fp_intr_handler(9), lpfc_sli_intr_handler(9),
lpfc_sli4_els_xri_abort_event_proc(9),
lpfc_sli4_els_preprocess_rspiocbq(9),
lpfc_sli4_sp_handle_async_event(9), lpfc_sli4_sp_handle_mbox_event(9),
lpfc_sli4_sp_handle_mcqe(9), lpfc_sli4_sp_handle_els_wcqe(9),
lpfc_sli4_sp_handle_rel_wcqe(9), lpfc_sli4_sp_handle_abort_xri_wcqe(9),
lpfc_sli4_sp_handle_rcqe(9), lpfc_sli4_sp_handle_cqe(9),
lpfc_sli4_sp_handle_eqe(9), __lpfc_sli4_process_cq(9),
__lpfc_sli4_sp_process_cq(9), lpfc_sli4_sp_process_cq(9),
lpfc_sli4_dly_sp_process_cq(9), lpfc_sli4_fp_handle_fcp_wcqe(9),
lpfc_sli4_fp_handle_rel_wcqe(9), lpfc_sli4_nvmet_handle_rcqe(9),
lpfc_sli4_fp_handle_cqe(9), __lpfc_sli4_hba_process_cq(9),
lpfc_sli4_hba_process_cq(9), lpfc_sli4_hba_handle_eqe(9),
lpfc_sli4_dly_hba_process_cq(9), lpfc_sli4_hba_intr_handler(9),
lpfc_sli4_intr_handler(9), lpfc_sli4_queue_free(9),
lpfc_sli4_queue_alloc(9), lpfc_dual_chute_pci_bar_map(9),
lpfc_modify_hba_eq_delay(9), lpfc_eq_create(9),
lpfc_sli4_hba_intr_handler_th(9), lpfc_cq_create(9),
lpfc_cq_create_set(9), lpfc_mq_create_fb_init(9), lpfc_mq_create(9),
lpfc_wq_create(9), lpfc_rq_create(9), lpfc_mrq_create(9),
lpfc_eq_destroy(9), lpfc_cq_destroy(9), lpfc_mq_destroy(9),
lpfc_wq_destroy(9), lpfc_rq_destroy(9), lpfc_sli4_post_sgl(9),
lpfc_sli4_alloc_xri(9), __lpfc_sli4_free_xri(9), lpfc_sli4_free_xri(9),
lpfc_sli4_next_xritag(9), lpfc_sli4_post_sgl_list(9),
lpfc_sli4_post_io_sgl_block(9), lpfc_sli4_post_io_sgl_list(9),
lpfc_fc_frame_check(9), lpfc_fc_hdr_get_vfi(9),
lpfc_fc_frame_to_vport(9), lpfc_update_rcv_time_stamp(9),
lpfc_cleanup_rcv_buffers(9), lpfc_rcv_seq_check_edtov(9),
lpfc_sli4_abort_partial_seq(9), lpfc_sli4_abort_ulp_seq(9),
lpfc_sli4_seq_abort_rsp_cmpl(9), lpfc_sli4_xri_inrange(9),
lpfc_sli4_seq_abort_rsp(9), lpfc_sli4_handle_unsol_abort(9),
lpfc_seq_complete(9), lpfc_prep_seq(9),
lpfc_sli4_handle_received_buffer(9), lpfc_sli4_post_all_rpi_hdrs(9),
lpfc_sli4_post_rpi_hdr(9), lpfc_sli4_alloc_rpi(9),
__lpfc_sli4_free_rpi(9), lpfc_sli4_free_rpi(9),
lpfc_sli4_remove_rpis(9), lpfc_sli4_resume_rpi(9),
lpfc_sli4_init_vpi(9), lpfc_mbx_cmpl_add_fcf_record(9),
lpfc_sli4_add_fcf_record(9), lpfc_sli4_build_dflt_fcf_record(9),
lpfc_sli4_fcf_scan_read_fcf_rec(9), lpfc_sli4_fcf_rr_read_fcf_rec(9),
lpfc_sli4_read_fcf_rec(9), lpfc_check_next_fcf_pri_level(9),
lpfc_sli4_fcf_rr_next_index_get(9), lpfc_sli4_fcf_rr_index_set(9),
lpfc_sli4_fcf_rr_index_clear(9), lpfc_mbx_cmpl_redisc_fcf_table(9),
lpfc_sli4_redisc_fcf_table(9), lpfc_sli4_fcf_dead_failthrough(9),
lpfc_sli_get_config_region23(9), lpfc_sli4_get_config_region23(9),
lpfc_sli_read_link_ste(9), lpfc_log_fw_write_cmpl(9), lpfc_wr_object(9),
lpfc_cleanup_pending_mbox(9), lpfc_drain_txq(9), lpfc_wqe_bpl2sgl(9),
lpfc_sli4_issue_wqe(9), lpfc_sli4_issue_abort_iotag(9),
lpfc_snapshot_mxp(9), lpfc_adjust_pvt_pool_count(9),
lpfc_adjust_high_watermark(9), lpfc_move_xri_pvt_to_pbl(9),
_lpfc_move_xri_pbl_to_pvt(9), lpfc_move_xri_pbl_to_pvt(9),
lpfc_keep_pvt_pool_above_lowwm(9), lpfc_release_io_buf(9),
lpfc_get_io_buf_from_private_pool(9),
lpfc_get_io_buf_from_expedite_pool(9),
lpfc_get_io_buf_from_multixri_pools(9), lpfc_get_io_buf(9),
lpfc_read_object(9), lpfc_get_sgl_per_hdwq(9), lpfc_put_sgl_per_hdwq(9),
lpfc_free_sgl_per_hdwq(9), lpfc_get_cmd_rsp_buf_per_hdwq(9),
lpfc_put_cmd_rsp_buf_per_hdwq(9), lpfc_free_cmd_rsp_buf_per_hdwq(9),
lpfc_sli_prep_wqe(9)

mwah πŸ’‹ that's the whole page, bestie β€” source/version ./drivers/scsi/lpfc, dated October 2026, and it's lpfc_fc_frame_add(9) forever πŸŽ€βœ¨πŸ¦‹

πŸ“¦ where this page comes from