Skip to content

Commit 61910d6

Browse files
jsmart-ghmartinkpetersen
authored andcommitted
scsi: lpfc: SLI path split: Refactor CT paths
This patch refactors the CT paths to use SLI-4 as the primary interface. - Introduce generic lpfc_sli_prep_gen_req jump table routine - Introduce generic lpfc_sli_prep_xmit_seq64 jump table routine - Rename lpfcdiag_loop_post_rxbufs to lpfcdiag_sli3_loop_post_rxbufs to indicate that it is an SLI3 only path - Create new prep_wqe routine for unsolicited ELS rsp WQEs. - Conversion away from using SLI-3 iocb structures to set/access fields in common routines. Use the new generic get/set routines that were added. This move changes code from indirect structure references to using local variables with the generic routines. - Refactor routines when setting non-generic fields, to have both SLI3 and SLI4 specific sections. This replaces the set-as-SLI3 then translate to SLI4 behavior of the past. Link: https://lore.kernel.org/r/20220225022308.16486-13-jsmart2021@gmail.com Co-developed-by: Justin Tee <justin.tee@broadcom.com> Signed-off-by: Justin Tee <justin.tee@broadcom.com> Signed-off-by: James Smart <jsmart2021@gmail.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
1 parent 2d1928c commit 61910d6

File tree

6 files changed

+616
-398
lines changed

6 files changed

+616
-398
lines changed

drivers/scsi/lpfc/lpfc.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -968,6 +968,13 @@ struct lpfc_hba {
968968
struct lpfc_dmabuf *bmp,
969969
u16 cmd_size, u32 did, u32 elscmd,
970970
u8 tmo, u8 expect_rsp);
971+
void (*__lpfc_sli_prep_gen_req)(struct lpfc_iocbq *cmdiocbq,
972+
struct lpfc_dmabuf *bmp, u16 rpi,
973+
u32 num_entry, u8 tmo);
974+
void (*__lpfc_sli_prep_xmit_seq64)(struct lpfc_iocbq *cmdiocbq,
975+
struct lpfc_dmabuf *bmp, u16 rpi,
976+
u16 ox_id, u32 num_entry, u8 rctl,
977+
u8 last_seq, u8 cr_cx_cmd);
971978

972979
/* expedite pool */
973980
struct lpfc_epd_pool epd_pool;
@@ -1849,6 +1856,15 @@ u16 get_job_rcvoxid(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq)
18491856
return iocbq->iocb.unsli3.rcvsli3.ox_id;
18501857
}
18511858

1859+
static inline
1860+
u32 get_job_data_placed(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq)
1861+
{
1862+
if (phba->sli_rev == LPFC_SLI_REV4)
1863+
return iocbq->wcqe_cmpl.total_data_placed;
1864+
else
1865+
return iocbq->iocb.un.genreq64.bdl.bdeSize;
1866+
}
1867+
18521868
static inline
18531869
u32 get_job_els_rsp64_did(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq)
18541870
{

0 commit comments

Comments
 (0)