lpfc_bg_setup_sgl(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

okay so bestie, this is lpfc_bg_setup_sgl(9) straight out of the Kernel API Manual, and it's literally the blueprint for setting up a BlockGuard SGL with no protection data. Let's get into it πŸ’…

πŸ’– NAME πŸ’–

lpfc_bg_setup_sgl β€” setup BlockGuard SGL with no protection data. iconic behavior, no notes ✨

✨ SYNOPSIS ✨

uint32_t lpfc_bg_setup_sgl (struct lpfc_hba *phba , struct scsi_cmnd *sc
, struct sli4_sge *sgl , int datasegcnt , struct lpfc_io_buf *lpfc_cmd
);

πŸŽ€ ARGUMENTS πŸŽ€

  • phba β€” the Hba for which this call is being executed. main character energy fr.
  • sc β€” pointer to the scsi command we're working on. that's the assignment, bestie.
  • sgl β€” pointer to the buffer list for protection groups. the whole vibe check lives here.
  • datasegcnt β€” number of segments of data that have been dma mapped. count 'em, don't play.
  • lpfc_cmd β€” lpfc scsi command object pointer. yes ma'am 🫢

πŸ¦‹ DESCRIPTION πŸ¦‹

This function sets up the SGL buffer list for protection groups of type LPFC_PG_TYPE_NO_DIF. slay.

This is usually used when the HBA is instructed to generate DIFs and insert them into the data stream (or strip DIF from the incoming data stream). it's giving "I handle protection so you don't have to" 😌

The buffer list consists of just one protection group, described below:

start of prot group  -->     |         DI_SEED         |

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚     Data SGE                  β”‚
β”‚     more Data SGE's ... (opt) β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

🌸 NOTE 🌸

Data s/g buffers have been dma mapped. no cap, that's important.

Returns the number of SGEs added to the SGL. periodt πŸ’…

πŸ’… SEE ALSO πŸ’…

Kernel file: ./drivers/scsi/lpfc/lpfc_scsi.c

and the entire friend group, lowkey: lpfc_sli4_set_rsp_sgl_last(9), lpfc_rampdown_queue_depth(9), lpfc_ramp_down_queue_handler(9), lpfc_scsi_dev_block(9), lpfc_new_scsi_buf_s3(9), lpfc_sli4_vport_delete_fcp_xri_aborted(9), lpfc_sli4_io_xri_aborted(9), lpfc_get_scsi_buf_s3(9), lpfc_get_scsi_buf_s4(9), lpfc_get_scsi_buf(9), lpfc_release_scsi_buf_s3(9), lpfc_release_scsi_buf_s4(9), lpfc_release_scsi_buf(9), lpfc_fcpcmd_to_iocb(9), lpfc_scsi_prep_dma_buf_s3(9), lpfc_bg_err_inject(9), lpfc_sc_to_bg_opcodes(9), lpfc_bg_err_opcodes(9), lpfc_bg_setup_bpl(9), lpfc_bg_setup_bpl_prot(9), lpfc_bg_setup_sgl_prot(9), lpfc_prot_group_type(9), lpfc_bg_scsi_adjust_dl(9), lpfc_bg_scsi_prep_dma_buf_s3(9), lpfc_scsi_prep_dma_buf_s4(9), lpfc_bg_scsi_prep_dma_buf_s4(9), lpfc_scsi_prep_dma_buf(9), lpfc_bg_scsi_prep_dma_buf(9), lpfc_scsi_prep_cmnd_buf(9), lpfc_send_scsi_error_event(9), lpfc_scsi_unprep_dma_buf(9), lpfc_unblock_requests(9), lpfc_block_requests(9), lpfc_update_cmf_cmpl(9), lpfc_update_cmf_cmd(9), lpfc_handle_fcp_err(9), lpfc_fcp_io_cmd_wqe_cmpl(9), lpfc_scsi_cmd_iocb_cmpl(9), lpfc_scsi_prep_cmnd_buf_s3(9), lpfc_scsi_prep_cmnd_buf_s4(9), lpfc_scsi_prep_cmnd(9), lpfc_scsi_prep_task_mgmt_cmd_s3(9), lpfc_scsi_prep_task_mgmt_cmd_s4(9), lpfc_scsi_api_table_setup(9), lpfc_tskmgmt_def_cmpl(9), lpfc_check_pci_resettable(9), lpfc_info(9), lpfc_poll_rearm_timer(9), lpfc_poll_start_timer(9), lpfc_poll_timeout(9), lpfc_queuecommand(9), lpfc_abort_handler(9), lpfc_check_fcp_rsp(9), lpfc_send_taskmgmt(9), lpfc_chk_tgt_mapped(9), lpfc_reset_flush_io_context(9), lpfc_device_reset_handler(9), lpfc_target_reset_handler(9), lpfc_host_reset_handler(9), lpfc_sdev_init(9), lpfc_sdev_configure(9), lpfc_sdev_destroy(9), lpfc_create_device_data(9), lpfc_delete_device_data(9), __lpfc_get_device_data(9), lpfc_find_next_oas_lun(9), lpfc_enable_oas_lun(9), lpfc_disable_oas_lun(9)


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

πŸ“¦ where this page comes from