Merge branch 'lsk/v3.10/topic/of' into linux-linaro-lsk
[firefly-linux-kernel-4.4.55.git] / include / scsi / scsi_tgt_if.h
index 46d5e70d72157bcca6b0ca4abefb8da76e1d940a..f2ee7c238a4544d112e63c6c57a283dd7474c579 100644 (file)
 #define __SCSI_TARGET_IF_H
 
 /* user -> kernel */
-#define        TGT_UEVENT_CMD_RSP      0x0001
-#define        TGT_UEVENT_TSK_MGMT_RSP 0x0002
+#define        TGT_UEVENT_CMD_RSP              0x0001
+#define        TGT_UEVENT_IT_NEXUS_RSP         0x0002
+#define        TGT_UEVENT_TSK_MGMT_RSP         0x0003
 
 /* kernel -> user */
-#define        TGT_KEVENT_CMD_REQ      0x1001
-#define        TGT_KEVENT_CMD_DONE     0x1002
-#define        TGT_KEVENT_TSK_MGMT_REQ 0x1003
+#define        TGT_KEVENT_CMD_REQ              0x1001
+#define        TGT_KEVENT_CMD_DONE             0x1002
+#define        TGT_KEVENT_IT_NEXUS_REQ         0x1003
+#define        TGT_KEVENT_TSK_MGMT_REQ         0x1004
 
 struct tgt_event_hdr {
        uint16_t version;
@@ -45,23 +47,33 @@ struct tgt_event {
                /* user-> kernel */
                struct {
                        int host_no;
-                       uint32_t len;
                        int result;
+                       aligned_u64 itn_id;
+                       aligned_u64 tag;
                        aligned_u64 uaddr;
+                       aligned_u64 sense_uaddr;
+                       uint32_t len;
+                       uint32_t sense_len;
                        uint8_t rw;
-                       aligned_u64 tag;
                } cmd_rsp;
                struct {
                        int host_no;
-                       aligned_u64 mid;
                        int result;
+                       aligned_u64 itn_id;
+                       aligned_u64 mid;
                } tsk_mgmt_rsp;
-
+               struct {
+                       __s32 host_no;
+                       __s32 result;
+                       aligned_u64 itn_id;
+                       __u32 function;
+               } it_nexus_rsp;
 
                /* kernel -> user */
                struct {
                        int host_no;
                        uint32_t data_len;
+                       aligned_u64 itn_id;
                        uint8_t scb[16];
                        uint8_t lun[8];
                        int attribute;
@@ -69,22 +81,28 @@ struct tgt_event {
                } cmd_req;
                struct {
                        int host_no;
-                       aligned_u64 tag;
                        int result;
+                       aligned_u64 itn_id;
+                       aligned_u64 tag;
                } cmd_done;
                struct {
                        int host_no;
                        int function;
+                       aligned_u64 itn_id;
                        aligned_u64 tag;
                        uint8_t lun[8];
                        aligned_u64 mid;
                } tsk_mgmt_req;
+               struct {
+                       __s32 host_no;
+                       __u32 function;
+                       aligned_u64 itn_id;
+                       __u32 max_cmds;
+                       __u8 initiator_id[16];
+               } it_nexus_req;
        } p;
 } __attribute__ ((aligned (sizeof(uint64_t))));
 
 #define TGT_RING_SIZE (1UL << 16)
-#define TGT_RING_PAGES (TGT_RING_SIZE >> PAGE_SHIFT)
-#define TGT_EVENT_PER_PAGE (PAGE_SIZE / sizeof(struct tgt_event))
-#define TGT_MAX_EVENTS (TGT_EVENT_PER_PAGE * TGT_RING_PAGES)
 
 #endif