Commit 19fff154e7ee35d1297eb27d7d41e6f8742101ec

Authored by Kashyap, Desai
Committed by James Bottomley
1 parent 56cee8d577

[SCSI] mptfusion: Adding inline data padding support for TAPE drive.

Adding support for inline data padding for TAPE drive when running U320.

[jejb: whitespace fixes]
Signed-off-by: Kashyap Desai <kashyap.desai@lsi.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>

Showing 1 changed file with 22 additions and 0 deletions Side-by-side Diff

drivers/message/fusion/mptspi.c
... ... @@ -867,6 +867,10 @@
867 867 struct _x_config_parms cfg;
868 868 struct _CONFIG_PAGE_HEADER hdr;
869 869 int err = -EBUSY;
  870 + u32 nego_parms;
  871 + u32 period;
  872 + struct scsi_device *sdev;
  873 + int i;
870 874  
871 875 /* don't allow updating nego parameters on RAID devices */
872 876 if (starget->channel == 0 &&
... ... @@ -903,6 +907,24 @@
903 907 pg1->Header.PageLength = hdr.PageLength;
904 908 pg1->Header.PageNumber = hdr.PageNumber;
905 909 pg1->Header.PageType = hdr.PageType;
  910 +
  911 + nego_parms = le32_to_cpu(pg1->RequestedParameters);
  912 + period = (nego_parms & MPI_SCSIDEVPAGE1_RP_MIN_SYNC_PERIOD_MASK) >>
  913 + MPI_SCSIDEVPAGE1_RP_SHIFT_MIN_SYNC_PERIOD;
  914 + if (period == 8) {
  915 + /* Turn on inline data padding for TAPE when running U320 */
  916 + for (i = 0 ; i < 16; i++) {
  917 + sdev = scsi_device_lookup_by_target(starget, i);
  918 + if (sdev && sdev->type == TYPE_TAPE) {
  919 + sdev_printk(KERN_DEBUG, sdev, MYIOC_s_FMT
  920 + "IDP:ON\n", ioc->name);
  921 + nego_parms |= MPI_SCSIDEVPAGE1_RP_IDP;
  922 + pg1->RequestedParameters =
  923 + cpu_to_le32(nego_parms);
  924 + break;
  925 + }
  926 + }
  927 + }
906 928  
907 929 mptspi_print_write_nego(hd, starget, le32_to_cpu(pg1->RequestedParameters));
908 930