Commit 19fff154e7ee35d1297eb27d7d41e6f8742101ec
Committed by
James Bottomley
1 parent
56cee8d577
Exists in
master
and in
7 other branches
[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 |