cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

uas.h (2121B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef __USB_UAS_H__
      3#define __USB_UAS_H__
      4
      5#include <scsi/scsi.h>
      6#include <scsi/scsi_cmnd.h>
      7
      8/* Common header for all IUs */
      9struct iu {
     10	__u8 iu_id;
     11	__u8 rsvd1;
     12	__be16 tag;
     13} __attribute__((__packed__));
     14
     15enum {
     16	IU_ID_COMMAND		= 0x01,
     17	IU_ID_STATUS		= 0x03,
     18	IU_ID_RESPONSE		= 0x04,
     19	IU_ID_TASK_MGMT		= 0x05,
     20	IU_ID_READ_READY	= 0x06,
     21	IU_ID_WRITE_READY	= 0x07,
     22};
     23
     24enum {
     25	TMF_ABORT_TASK          = 0x01,
     26	TMF_ABORT_TASK_SET      = 0x02,
     27	TMF_CLEAR_TASK_SET      = 0x04,
     28	TMF_LOGICAL_UNIT_RESET  = 0x08,
     29	TMF_I_T_NEXUS_RESET     = 0x10,
     30	TMF_CLEAR_ACA           = 0x40,
     31	TMF_QUERY_TASK          = 0x80,
     32	TMF_QUERY_TASK_SET      = 0x81,
     33	TMF_QUERY_ASYNC_EVENT   = 0x82,
     34};
     35
     36enum {
     37	RC_TMF_COMPLETE         = 0x00,
     38	RC_INVALID_INFO_UNIT    = 0x02,
     39	RC_TMF_NOT_SUPPORTED    = 0x04,
     40	RC_TMF_FAILED           = 0x05,
     41	RC_TMF_SUCCEEDED        = 0x08,
     42	RC_INCORRECT_LUN        = 0x09,
     43	RC_OVERLAPPED_TAG       = 0x0a,
     44};
     45
     46struct command_iu {
     47	__u8 iu_id;
     48	__u8 rsvd1;
     49	__be16 tag;
     50	__u8 prio_attr;
     51	__u8 rsvd5;
     52	__u8 len;
     53	__u8 rsvd7;
     54	struct scsi_lun lun;
     55	__u8 cdb[16];	/* XXX: Overflow-checking tools may misunderstand */
     56} __attribute__((__packed__));
     57
     58struct task_mgmt_iu {
     59	__u8 iu_id;
     60	__u8 rsvd1;
     61	__be16 tag;
     62	__u8 function;
     63	__u8 rsvd2;
     64	__be16 task_tag;
     65	struct scsi_lun lun;
     66} __attribute__((__packed__));
     67
     68/*
     69 * Also used for the Read Ready and Write Ready IUs since they have the
     70 * same first four bytes
     71 */
     72struct sense_iu {
     73	__u8 iu_id;
     74	__u8 rsvd1;
     75	__be16 tag;
     76	__be16 status_qual;
     77	__u8 status;
     78	__u8 rsvd7[7];
     79	__be16 len;
     80	__u8 sense[SCSI_SENSE_BUFFERSIZE];
     81} __attribute__((__packed__));
     82
     83struct response_iu {
     84	__u8 iu_id;
     85	__u8 rsvd1;
     86	__be16 tag;
     87	__u8 add_response_info[3];
     88	__u8 response_code;
     89} __attribute__((__packed__));
     90
     91struct usb_pipe_usage_descriptor {
     92	__u8  bLength;
     93	__u8  bDescriptorType;
     94
     95	__u8  bPipeID;
     96	__u8  Reserved;
     97} __attribute__((__packed__));
     98
     99enum {
    100	CMD_PIPE_ID		= 1,
    101	STATUS_PIPE_ID		= 2,
    102	DATA_IN_PIPE_ID		= 3,
    103	DATA_OUT_PIPE_ID	= 4,
    104
    105	UAS_SIMPLE_TAG		= 0,
    106	UAS_HEAD_TAG		= 1,
    107	UAS_ORDERED_TAG		= 2,
    108	UAS_ACA			= 4,
    109};
    110#endif