mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 03:40:35 +09:00
scsi: storvsc: use tagged SRB requests if supported by the device
am: 27f5ef378d
Change-Id: Iddc56ae5b242dd3d01e9a20b3564bb060aff06ca
This commit is contained in:
@@ -136,6 +136,8 @@ struct hv_fc_wwn_packet {
|
||||
#define SRB_FLAGS_PORT_DRIVER_RESERVED 0x0F000000
|
||||
#define SRB_FLAGS_CLASS_DRIVER_RESERVED 0xF0000000
|
||||
|
||||
#define SP_UNTAGGED ((unsigned char) ~0)
|
||||
#define SRB_SIMPLE_TAG_REQUEST 0x20
|
||||
|
||||
/*
|
||||
* Platform neutral description of a scsi request -
|
||||
@@ -1451,6 +1453,13 @@ static int storvsc_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *scmnd)
|
||||
vm_srb->win8_extension.srb_flags |=
|
||||
SRB_FLAGS_DISABLE_SYNCH_TRANSFER;
|
||||
|
||||
if (scmnd->device->tagged_supported) {
|
||||
vm_srb->win8_extension.srb_flags |=
|
||||
(SRB_FLAGS_QUEUE_ACTION_ENABLE | SRB_FLAGS_NO_QUEUE_FREEZE);
|
||||
vm_srb->win8_extension.queue_tag = SP_UNTAGGED;
|
||||
vm_srb->win8_extension.queue_action = SRB_SIMPLE_TAG_REQUEST;
|
||||
}
|
||||
|
||||
/* Build the SRB */
|
||||
switch (scmnd->sc_data_direction) {
|
||||
case DMA_TO_DEVICE:
|
||||
|
||||
Reference in New Issue
Block a user