mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 20:07:46 +09:00
scsi: storvsc: use tagged SRB requests if supported by the device
am: 5cdc8193ac
Change-Id: Id08acaf5e82dcfb9f447ba4e375f97423ae216b4
This commit is contained in:
@@ -135,6 +135,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 -
|
||||
@@ -1409,6 +1411,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