uas: task mgmt & error handling
Add task management support, wind up in abort and device reset error handlers. Cancel all in-flight urbs in bus reset handler. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
bdd000fb34
commit
023b515e5b
@@ -20,6 +20,28 @@ enum {
|
||||
IU_ID_WRITE_READY = 0x07,
|
||||
};
|
||||
|
||||
enum {
|
||||
TMF_ABORT_TASK = 0x01,
|
||||
TMF_ABORT_TASK_SET = 0x02,
|
||||
TMF_CLEAR_TASK_SET = 0x04,
|
||||
TMF_LOGICAL_UNIT_RESET = 0x08,
|
||||
TMF_I_T_NEXUS_RESET = 0x10,
|
||||
TMF_CLEAR_ACA = 0x40,
|
||||
TMF_QUERY_TASK = 0x80,
|
||||
TMF_QUERY_TASK_SET = 0x81,
|
||||
TMF_QUERY_ASYNC_EVENT = 0x82,
|
||||
};
|
||||
|
||||
enum {
|
||||
RC_TMF_COMPLETE = 0x00,
|
||||
RC_INVALID_INFO_UNIT = 0x02,
|
||||
RC_TMF_NOT_SUPPORTED = 0x04,
|
||||
RC_TMF_FAILED = 0x05,
|
||||
RC_TMF_SUCCEEDED = 0x08,
|
||||
RC_INCORRECT_LUN = 0x09,
|
||||
RC_OVERLAPPED_TAG = 0x0a,
|
||||
};
|
||||
|
||||
struct command_iu {
|
||||
__u8 iu_id;
|
||||
__u8 rsvd1;
|
||||
@@ -32,6 +54,16 @@ struct command_iu {
|
||||
__u8 cdb[16]; /* XXX: Overflow-checking tools may misunderstand */
|
||||
};
|
||||
|
||||
struct task_mgmt_iu {
|
||||
__u8 iu_id;
|
||||
__u8 rsvd1;
|
||||
__be16 tag;
|
||||
__u8 function;
|
||||
__u8 rsvd2;
|
||||
__be16 task_tag;
|
||||
struct scsi_lun lun;
|
||||
};
|
||||
|
||||
/*
|
||||
* Also used for the Read Ready and Write Ready IUs since they have the
|
||||
* same first four bytes
|
||||
@@ -47,6 +79,14 @@ struct sense_iu {
|
||||
__u8 sense[SCSI_SENSE_BUFFERSIZE];
|
||||
};
|
||||
|
||||
struct response_ui {
|
||||
__u8 iu_id;
|
||||
__u8 rsvd1;
|
||||
__be16 tag;
|
||||
__be16 add_response_info;
|
||||
__u8 response_code;
|
||||
};
|
||||
|
||||
struct usb_pipe_usage_descriptor {
|
||||
__u8 bLength;
|
||||
__u8 bDescriptorType;
|
||||
|
Reference in New Issue
Block a user