aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/storvsc_drv.c
diff options
context:
space:
mode:
authorKeith Mange <keith.mange@microsoft.com>2015-08-13 11:43:46 -0400
committerJames Bottomley <JBottomley@Odin.com>2015-08-27 01:41:33 -0400
commit6ee5c61535a2df807069145970d3e7fa492a3fac (patch)
tree37e3d5e2aaf1252612b6d914594ee1997cd7ef38 /drivers/scsi/storvsc_drv.c
parent89576205de8a5b6c19a4b3bb25bd16484a567b4e (diff)
storvsc: Rather than look for sets of specific protocol versions, make decisions based on ranges.
Rather than look for sets of specific protocol versions, make decisions based on ranges. This will be safer and require fewer changes going forward as we add more storage protocol versions. Tested-by: Alex Ng <alexng@microsoft.com> Signed-off-by: Keith Mange <keith.mange@microsoft.com> Signed-off-by: K. Y. Srinivasan <kys@microsoft.com> Signed-off-by: James Bottomley <JBottomley@Odin.com>
Diffstat (limited to 'drivers/scsi/storvsc_drv.c')
-rw-r--r--drivers/scsi/storvsc_drv.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
index dbc9d9a1c89d..05f6f970826e 100644
--- a/drivers/scsi/storvsc_drv.c
+++ b/drivers/scsi/storvsc_drv.c
@@ -981,8 +981,7 @@ static int storvsc_channel_init(struct hv_device *device)
981 * support multi-channel. 981 * support multi-channel.
982 */ 982 */
983 max_chns = vstor_packet->storage_channel_properties.max_channel_cnt; 983 max_chns = vstor_packet->storage_channel_properties.max_channel_cnt;
984 if ((vmbus_proto_version != VERSION_WIN7) && 984 if (vmbus_proto_version >= VERSION_WIN8) {
985 (vmbus_proto_version != VERSION_WS2008)) {
986 if (vstor_packet->storage_channel_properties.flags & 985 if (vstor_packet->storage_channel_properties.flags &
987 STORAGE_CHANNEL_SUPPORTS_MULTI_CHANNEL) 986 STORAGE_CHANNEL_SUPPORTS_MULTI_CHANNEL)
988 process_sub_channels = true; 987 process_sub_channels = true;
@@ -1759,9 +1758,7 @@ static int storvsc_probe(struct hv_device *device,
1759 * set state to properly communicate with the host. 1758 * set state to properly communicate with the host.
1760 */ 1759 */
1761 1760
1762 switch (vmbus_proto_version) { 1761 if (vmbus_proto_version < VERSION_WIN8) {
1763 case VERSION_WS2008:
1764 case VERSION_WIN7:
1765 sense_buffer_size = PRE_WIN8_STORVSC_SENSE_BUFFER_SIZE; 1762 sense_buffer_size = PRE_WIN8_STORVSC_SENSE_BUFFER_SIZE;
1766 vmscsi_size_delta = sizeof(struct vmscsi_win8_extension); 1763 vmscsi_size_delta = sizeof(struct vmscsi_win8_extension);
1767 vmstor_current_major = VMSTOR_WIN7_MAJOR; 1764 vmstor_current_major = VMSTOR_WIN7_MAJOR;
@@ -1769,8 +1766,7 @@ static int storvsc_probe(struct hv_device *device,
1769 max_luns_per_target = STORVSC_IDE_MAX_LUNS_PER_TARGET; 1766 max_luns_per_target = STORVSC_IDE_MAX_LUNS_PER_TARGET;
1770 max_targets = STORVSC_IDE_MAX_TARGETS; 1767 max_targets = STORVSC_IDE_MAX_TARGETS;
1771 max_channels = STORVSC_IDE_MAX_CHANNELS; 1768 max_channels = STORVSC_IDE_MAX_CHANNELS;
1772 break; 1769 } else {
1773 default:
1774 sense_buffer_size = POST_WIN7_STORVSC_SENSE_BUFFER_SIZE; 1770 sense_buffer_size = POST_WIN7_STORVSC_SENSE_BUFFER_SIZE;
1775 vmscsi_size_delta = 0; 1771 vmscsi_size_delta = 0;
1776 vmstor_current_major = VMSTOR_WIN8_MAJOR; 1772 vmstor_current_major = VMSTOR_WIN8_MAJOR;
@@ -1784,7 +1780,6 @@ static int storvsc_probe(struct hv_device *device,
1784 * VCPUs in the guest. 1780 * VCPUs in the guest.
1785 */ 1781 */
1786 max_sub_channels = (num_cpus / storvsc_vcpus_per_sub_channel); 1782 max_sub_channels = (num_cpus / storvsc_vcpus_per_sub_channel);
1787 break;
1788 } 1783 }
1789 1784
1790 scsi_driver.can_queue = (max_outstanding_req_per_channel * 1785 scsi_driver.can_queue = (max_outstanding_req_per_channel *