Hi bart Is it possible by adding only max_sector to increase the data buffer size? I think the data buffer will split to 512 KiB, because the sg_table size is SG_ALL Thanks, yohan > -----Original Message----- > From: Bart Van Assche <bvanassche@xxxxxxx> > Sent: Wednesday, July 27, 2022 7:52 AM > To: Martin K . Petersen <martin.petersen@xxxxxxxxxx> > Cc: Jaegeuk Kim <jaegeuk@xxxxxxxxxx>; linux-scsi@xxxxxxxxxxxxxxx; Adrian > Hunter <adrian.hunter@xxxxxxxxx>; Bart Van Assche <bvanassche@xxxxxxx>; > Avri Altman <avri.altman@xxxxxxx>; Bean Huo <beanhuo@xxxxxxxxxx>; Stanley > Chu <stanley.chu@xxxxxxxxxxxx>; James E.J. Bottomley <jejb@xxxxxxxxxxxxx>; > Matthias Brugger <matthias.bgg@xxxxxxxxx> > Subject: [PATCH v3] scsi: ufs: Increase the maximum data buffer size > > Measurements for one particular UFS controller + UFS device show a 25% > higher read bandwidth if the maximum data buffer size is increased from > 512 KiB to 1 MiB. Hence increase the maximum size of the data buffer > associated with a single request from SCSI_DEFAULT_MAX_SECTORS (1024) > * 512 bytes = 512 KiB to 1 MiB. > > Notes: > - The maximum data buffer size supported by the UFSHCI specification > is 65535 * 256 KiB or about 16 GiB. > - The maximum data buffer size for READ(10) commands is 65535 logical > blocks. To transfer more than 65535 * 4096 bytes = 255 MiB with a > single SCSI command, the READ(16) command is required. Support for > READ(16) is optional in the UFS 3.1 and UFS 4.0 standards. > > Cc: Adrian Hunter <adrian.hunter@xxxxxxxxx> > Cc: Avri Altman <avri.altman@xxxxxxx> > Cc: Bean Huo <beanhuo@xxxxxxxxxx> > Cc: Stanley Chu <stanley.chu@xxxxxxxxxxxx> > Signed-off-by: Bart Van Assche <bvanassche@xxxxxxx> > --- > Changes compared to v2: changed maximum transfer size 255 MiB to 1 MiB. > Changes compared to v1: changed maximum transfer size from 1 GiB to 255 MiB. > > drivers/ufs/core/ufshcd.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c index > 36b7212e9cb5..678bc8d6d6aa 100644 > --- a/drivers/ufs/core/ufshcd.c > +++ b/drivers/ufs/core/ufshcd.c > @@ -8365,6 +8365,7 @@ static struct scsi_host_template > ufshcd_driver_template = { > .cmd_per_lun = UFSHCD_CMD_PER_LUN, > .can_queue = UFSHCD_CAN_QUEUE, > .max_segment_size = PRDT_DATA_BYTE_COUNT_MAX, > + .max_sectors = (1 << 20) / SECTOR_SIZE, /* 1 MiB */ > .max_host_blocked = 1, > .track_queue_depth = 1, > .sdev_groups = ufshcd_driver_groups,