1 #ifndef __57XX_ISCSI_RFC_CONSTANTS_H_
2 #define __57XX_ISCSI_RFC_CONSTANTS_H_
3 
4 /**
5 * This file defines SCSI/iSCSI RFC constants
6 */
7 
8 /* iSCSI request op codes */
9 #define ISCSI_OPCODE_NOP_OUT        (0 | 0x40)
10 #define ISCSI_OPCODE_SCSI_CMD       (1)
11 #define ISCSI_OPCODE_TMF_REQUEST    (2 | 0x40)
12 #define ISCSI_OPCODE_LOGIN_REQUEST  (3 | 0x40)
13 #define ISCSI_OPCODE_TEXT_REQUEST   (4 | 0x40)
14 #define ISCSI_OPCODE_DATA_OUT       (5)
15 #define ISCSI_OPCODE_LOGOUT_REQUEST (6 | 0x00)
16 
17 /* iSCSI response/messages op codes */
18 #define ISCSI_OPCODE_NOP_IN             (0x20)
19 #define ISCSI_OPCODE_SCSI_RESPONSE      (0x21)
20 #define ISCSI_OPCODE_TMF_RESPONSE       (0x22)
21 #define ISCSI_OPCODE_LOGIN_RESPONSE     (0x23)
22 #define ISCSI_OPCODE_TEXT_RESPONSE      (0x24)
23 #define ISCSI_OPCODE_DATA_IN            (0x25)
24 #define ISCSI_OPCODE_LOGOUT_RESPONSE    (0x26)
25 #define ISCSI_OPCODE_R2T                (0x31)
26 #define ISCSI_OPCODE_ASYNC_MSG          (0x32)
27 #define ISCSI_OPCODE_REJECT             (0x3f)
28 
29 /* iSCSI stages */
30 #define ISCSI_STAGE_SECURITY_NEGOTIATION            (0)
31 #define ISCSI_STAGE_LOGIN_OPERATIONAL_NEGOTIATION   (1)
32 #define ISCSI_STAGE_FULL_FEATURE_PHASE              (3)
33 
34 /* SCSI command response codes */
35 #define ISCSI_SCSI_CMD_RESPONSE_CMD_COMPLETED   (0x00)
36 #define ISCSI_SCSI_CMD_RESPONSE_TARGET_FAILURE  (0x01)
37 
38 /* SCSI command status codes */
39 #define ISCSI_SCSI_CMD_STATUS_GOOD              (0x00)
40 #define ISCSI_SCSI_CMD_STATUS_CHECK_CONDITION   (0x02)
41 #define ISCSI_SCSI_CMD_STATUS_INTERMIDIATE      (0x10)
42 #define ISCSI_SCSI_CMD_STATUS_ACA_ACTIVE		(0x30)
43 
44 /* TMF codes */
45 #define ISCSI_TMF_ABORT_TASK            (1)
46 #define ISCSI_TMF_LOGICAL_UNIT_RESET    (5)
47 #define ISCSI_TMF_FUNCTION_MASK         (0x7F)
48 
49 /* TMF response codes */
50 #define ISCSI_TMF_RESPONSE_FUNCTION_COMPLETE                (0x00)
51 #define ISCSI_TMF_RESPONSE_TASK_DOESNT_EXIST                (0x01)
52 #define ISCSI_TMF_RESPONSE_LUN_DOESNT_EXIST                 (0x02)
53 #define ISCSI_TMF_RESPONSE_TASK_STILL_ALLEGIANT	            (0x03)
54 #define ISCSI_TMF_RESPONSE_FUNCTION_NOT_SUPPORTED           (0x05)
55 #define ISCSI_TMF_RESPONSE_FUNCTION_AUTHORIZATION_FAILED    (0x06)
56 #define ISCSI_TMF_RESPONSE_FUNCTION_REJECTED                (0xff)
57 
58 /* Logout reason codes */
59 #define ISCSI_LOGOUT_REASON_CLOSE_CONNECTION    (1)
60 
61 /* Logout response codes */
62 #define ISCSI_LOGOUT_RESPONSE_CONNECTION_CLOSED (0)
63 #define ISCSI_LOGOUT_RESPONSE_CID_NOT_FOUND     (1)
64 #define ISCSI_LOGOUT_RESPONSE_CLEANUP_FAILED    (3)
65 
66 /* iSCSI parameter defaults */
67 #define ISCSI_DEFAULT_HEADER_DIGEST         (0)
68 #define ISCSI_DEFAULT_DATA_DIGEST           (0)
69 #define ISCSI_DEFAULT_INITIAL_R2T           (1)
70 #define ISCSI_DEFAULT_IMMEDIATE_DATA        (1)
71 #define ISCSI_DEFAULT_MAX_PDU_LENGTH        (0x2000)
72 #define ISCSI_DEFAULT_FIRST_BURST_LENGTH    (0x10000)
73 #define ISCSI_DEFAULT_MAX_BURST_LENGTH      (0x40000)
74 #define ISCSI_DEFAULT_MAX_OUTSTANDING_R2T   (1)
75 
76 /* iSCSI parameter limits */
77 #define ISCSI_MIN_VAL_MAX_PDU_LENGTH        (0x200)
78 #define ISCSI_MAX_VAL_MAX_PDU_LENGTH        (0xffffff)
79 #define ISCSI_MIN_VAL_BURST_LENGTH          (0x200)
80 #define ISCSI_MAX_VAL_BURST_LENGTH          (0xffffff)
81 #define ISCSI_MIN_VAL_MAX_OUTSTANDING_R2T   (1)
82 #define ISCSI_MAX_VAL_MAX_OUTSTANDING_R2T   (0xff) // 0x10000 according to RFC
83 
84 #endif /*__57XX_ISCSI_RFC_CONSTANTS_H_ */
85