scsi: lpfc: Set max DMA segment size to HBA supported SGE length
authorJustin Tee <justin.tee@broadcom.com>
Mon, 9 Jan 2023 23:33:09 +0000 (15:33 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 12 Jan 2023 05:03:14 +0000 (00:03 -0500)
During I/O, the following warning message occasionally appears:

DMA-API: lpfc 0000:04:00.0: mapping sg segment longer than device claims to
support [len=131072] [max=65536]

The HBA is capable of supporting 131,072 bytes, so notify DMA layer via the
dma_set_max_seg_size() API during hba initialization.

Signed-off-by: Justin Tee <justin.tee@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/lpfc/lpfc_init.c

index 25ba20e42825520d902b2af4ed865e01d9bb1914..4d58373f6ab662c04b338f6ec3a9ce08cfdc1ca2 100644 (file)
@@ -13917,6 +13917,13 @@ fcponly:
        if (sli4_params->sge_supp_len > LPFC_MAX_SGE_SIZE)
                sli4_params->sge_supp_len = LPFC_MAX_SGE_SIZE;
 
+       rc = dma_set_max_seg_size(&phba->pcidev->dev, sli4_params->sge_supp_len);
+       if (unlikely(rc)) {
+               lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
+                               "6400 Can't set dma maximum segment size\n");
+               return rc;
+       }
+
        /*
         * Check whether the adapter supports an embedded copy of the
         * FCP CMD IU within the WQE for FCP_Ixxx commands. In order