1 #ifndef __57XX_FCOE_CONSTANTS_H_ 2 #define __57XX_FCOE_CONSTANTS_H_ 3 4 /** 5 * This file defines HSI constants for the FCoE flows 6 */ 7 8 /* Current FCoE HSI version number composed of two fields (16 bit) */ 9 #define FCOE_HSI_MAJOR_VERSION (2) // Implies on a change broken previous HSI 10 #define FCOE_HSI_MINOR_VERSION (2) // Implies on a change which does not broken previous HSI 11 12 /* KWQ/KCQ FCoE layer code */ 13 #define FCOE_KWQE_LAYER_CODE (7) 14 15 /* KWQ (kernel work queue) request op codes */ 16 #define FCOE_KWQE_OPCODE_INIT1 (0) 17 #define FCOE_KWQE_OPCODE_INIT2 (1) 18 #define FCOE_KWQE_OPCODE_INIT3 (2) 19 #define FCOE_KWQE_OPCODE_OFFLOAD_CONN1 (3) 20 #define FCOE_KWQE_OPCODE_OFFLOAD_CONN2 (4) 21 #define FCOE_KWQE_OPCODE_OFFLOAD_CONN3 (5) 22 #define FCOE_KWQE_OPCODE_OFFLOAD_CONN4 (6) 23 #define FCOE_KWQE_OPCODE_ENABLE_CONN (7) 24 #define FCOE_KWQE_OPCODE_DISABLE_CONN (8) 25 #define FCOE_KWQE_OPCODE_DESTROY_CONN (9) 26 #define FCOE_KWQE_OPCODE_DESTROY (10) 27 #define FCOE_KWQE_OPCODE_STAT (11) 28 29 /* KCQ (kernel completion queue) response op codes */ 30 #define FCOE_KCQE_OPCODE_INIT_FUNC (0x10) 31 #define FCOE_KCQE_OPCODE_DESTROY_FUNC (0x11) 32 #define FCOE_KCQE_OPCODE_STAT_FUNC (0x12) 33 #define FCOE_KCQE_OPCODE_OFFLOAD_CONN (0x15) 34 #define FCOE_KCQE_OPCODE_ENABLE_CONN (0x16) 35 #define FCOE_KCQE_OPCODE_DISABLE_CONN (0x17) 36 #define FCOE_KCQE_OPCODE_DESTROY_CONN (0x18) 37 #define FCOE_KCQE_OPCODE_CQ_EVENT_NOTIFICATION (0x20) 38 #define FCOE_KCQE_OPCODE_FCOE_ERROR (0x21) 39 40 /* KCQ (kernel completion queue) completion status */ 41 #define FCOE_KCQE_COMPLETION_STATUS_SUCCESS (0x0) 42 #define FCOE_KCQE_COMPLETION_STATUS_ERROR (0x1) 43 #define FCOE_KCQE_COMPLETION_STATUS_INVALID_OPCODE (0x2) 44 #define FCOE_KCQE_COMPLETION_STATUS_CTX_ALLOC_FAILURE (0x3) 45 #define FCOE_KCQE_COMPLETION_STATUS_CTX_FREE_FAILURE (0x4) 46 #define FCOE_KCQE_COMPLETION_STATUS_NIC_ERROR (0x5) 47 #define FCOE_KCQE_COMPLETION_STATUS_WRONG_HSI_VERSION (0x6) 48 49 /* CQE type */ 50 #define FCOE_PENDING_CQE_TYPE 0 51 #define FCOE_UNSOLIC_CQE_TYPE 1 52 53 /* Unsolicited CQE type */ 54 #define FCOE_UNSOLICITED_FRAME_CQE_TYPE 0 55 #define FCOE_ERROR_DETECTION_CQE_TYPE 1 56 #define FCOE_WARNING_DETECTION_CQE_TYPE 2 57 58 // E_D_TOV timer resolution in ms 59 #define FCOE_E_D_TOV_TIMER_RESOLUTION_MS (20) 60 61 // E_D_TOV timer resolution for SDM (4 micro) 62 #define FCOE_E_D_TOV_SDM_TIMER_RESOLUTION (FCOE_E_D_TOV_TIMER_RESOLUTION_MS * 1000 / 4) 63 64 // REC timer resolution in ms 65 #define FCOE_REC_TIMER_RESOLUTION_MS (20) 66 67 // REC timer resolution for SDM (4 micro) 68 #define FCOE_REC_SDM_TIMER_RESOLUTION (FCOE_REC_TIMER_RESOLUTION_MS * 1000 / 4) 69 70 // E_D_TOV timer default wraparound value (2 sec) in 20 ms resolution 71 #define FCOE_E_D_TOV_DEFAULT_WRAPAROUND_VAL (2000 / FCOE_E_D_TOV_TIMER_RESOLUTION_MS) 72 73 // REC_TOV timer default wraparound value (3 sec) in 20 ms resolution 74 #define FCOE_REC_TOV_DEFAULT_WRAPAROUND_VAL (3000 / FCOE_REC_TIMER_RESOLUTION_MS) 75 76 #define FCOE_NUM_OF_TIMER_TASKS (8 * 1024) 77 78 #define FCOE_NUM_OF_CACHED_TASKS_TIMER (8) 79 80 // Task context constants 81 /************************************** Remove FCP_CMD write tce sleep ***************************************************************** 82 #define FCOE_TASK_TX_STATE_NORMAL 0 // In case timer services are required then shall be updated by Xstorm after start processing the task. In case no timer facilities are required then the driver would initialize the state to this value 83 #define FCOE_TASK_TX_STATE_INIT 1 // After driver has initialize the task in case timer services required 84 ************************************** Remove FCP_CMD write tce sleep *****************************************************************/ 85 #define FCOE_TASK_TX_STATE_INIT 0 // After driver has initialize the task in case timer services required 86 #define FCOE_TASK_TX_STATE_NORMAL 1 // In case timer services are required then shall be updated by Xstorm after start processing the task. In case no timer facilities are required then the driver would initialize the state to this value 87 #define FCOE_TASK_TX_STATE_ABORT 2 // Task is under abort procedure. Updated in order to stop processing of pending WQEs on this task 88 #define FCOE_TASK_TX_STATE_ERROR 3 // For E_D_T_TOV timer expiration in Xstorm (Class 2 only) 89 #define FCOE_TASK_TX_STATE_WARNING 4 // For REC_TOV timer expiration indication received from Xstorm 90 #define FCOE_TASK_TX_STATE_UNSOLICITED_COMPLETED 5 // For completed unsolicited task 91 #define FCOE_TASK_TX_STATE_EXCHANGE_CLEANUP 6 // For exchange cleanup request task 92 #define FCOE_TASK_TX_STATE_SEQUENCE_CLEANUP 7 // For sequence cleanup request task 93 #define FCOE_TASK_TX_STATE_ABTS_TX 8 // For completion the ABTS task. 94 95 #define FCOE_TASK_RX_STATE_NORMAL 0 96 #define FCOE_TASK_RX_STATE_COMPLETED 1 97 #define FCOE_TASK_RX_STATE_INTER_COMP 2 // Obsolete: Intermediate completion (middle path with local completion) 98 #define FCOE_TASK_RX_STATE_WARNING 3 // For REC_TOV timer expiration indication received from Xstorm 99 #define FCOE_TASK_RX_STATE_ERROR 4 // For E_D_T_TOV timer expiration in Ustorm 100 #define FCOE_TASK_RX_STATE_ABTS_IN_PROCESS 5 // FW only: First visit at rx-path, part of the abts round trip 101 #define FCOE_TASK_RX_STATE_ABTS_TRANSMITTED 6 // FW only: Second visit at rx-path, after ABTS frame transmitted 102 #define FCOE_TASK_RX_STATE_ABTS_COMPLETED 7 // Special completion indication in case of task was aborted. 103 #define FCOE_TASK_RX_STATE_EXCHANGE_CLEANUP_IN_PROCESS 8 // FW only: First visit at rx-path, part of the cleanup round trip 104 #define FCOE_TASK_RX_STATE_EXCHANGE_CLEANUP_COMPLETED 9 // FW only: Special completion indication in case of task was cleaned. 105 #define FCOE_TASK_RX_STATE_ABORT_CLEANUP_COMPLETED 10 // Not in used: Special completion indication (in task requested the exchange cleanup) in case cleaned task is in non-valid. 106 #define FCOE_TASK_RX_STATE_IGNORED_SEQUENCE_CLEANUP 11 // Special completion indication (in task requested the sequence cleanup) in case cleaned task was already returned to normal. 107 108 109 #define FCOE_TASK_TYPE_WRITE 0 110 #define FCOE_TASK_TYPE_READ 1 111 #define FCOE_TASK_TYPE_MIDPATH 2 112 #define FCOE_TASK_TYPE_UNSOLICITED 3 113 #define FCOE_TASK_TYPE_ABTS 4 114 #define FCOE_TASK_TYPE_EXCHANGE_CLEANUP 5 115 #define FCOE_TASK_TYPE_SEQUENCE_CLEANUP 6 116 117 #define FCOE_TASK_DEV_TYPE_DISK 0 118 #define FCOE_TASK_DEV_TYPE_TAPE 1 119 120 #define FCOE_TASK_CLASS_TYPE_3 0 121 #define FCOE_TASK_CLASS_TYPE_2 1 122 123 // FCoE/FC packet fields 124 #define FCOE_ETH_TYPE 0x8906 125 126 // FCoE maximum elements in hash table 127 #define FCOE_MAX_ELEMENTS_IN_HASH_TABLE_ROW 8 128 129 // FCoE half of the elements in hash table 130 #define FCOE_HALF_ELEMENTS_IN_HASH_TABLE_ROW (FCOE_MAX_ELEMENTS_IN_HASH_TABLE_ROW / 2) 131 132 // FcoE number of cached T2 entries 133 #define T_FCOE_NUMBER_OF_CACHED_T2_ENTRIES (4) 134 135 // FCoE maximum elements in hash table 136 #define FCOE_HASH_TBL_CHUNK_SIZE 16384 137 138 // Everest FCoE connection type 139 #define B577XX_FCOE_CONNECTION_TYPE 4 140 141 // FCoE number of rows (in log). This number derives 142 // from the maximum connections supported which is 2048. 143 // TBA: Need a different constant for E2 144 #define FCOE_MAX_NUM_SESSIONS_LOG 11 145 146 // Maximum possible number of EQ pages per function 147 #define FCOE_MAX_EQ_PAGES_PER_FUNC 40 148 149 #define FC_ABTS_REPLY_MAX_PAYLOAD_LEN 12 150 151 // Error codes for Error Reporting in slow path flows 152 #define FCOE_SLOW_PATH_ERROR_CODE_TOO_MANY_FUNCS 0 153 #define FCOE_SLOW_PATH_ERROR_CODE_NO_LICENSE 1 154 #define FCOE_SLOW_PATH_ERROR_CODE_TOO_MANY_TASKS 2 155 156 // Error codes for Error Reporting in fast path flows 157 // XFER error codes 158 #define FCOE_ERROR_CODE_XFER_OOO_RO 0 159 #define FCOE_ERROR_CODE_XFER_RO_NOT_ALIGNED 1 160 #define FCOE_ERROR_CODE_XFER_NULL_BURST_LEN 2 161 #define FCOE_ERROR_CODE_XFER_RO_GREATER_THAN_DATA2TRNS 3 162 #define FCOE_ERROR_CODE_XFER_INVALID_PAYLOAD_SIZE 4 163 #define FCOE_ERROR_CODE_XFER_TASK_TYPE_NOT_WRITE 5 164 #define FCOE_ERROR_CODE_XFER_PEND_XFER_SET 6 165 #define FCOE_ERROR_CODE_XFER_OPENED_SEQ 7 166 #define FCOE_ERROR_CODE_XFER_FCTL 8 167 168 // FCP RSP error codes 169 #define FCOE_ERROR_CODE_FCP_RSP_BIDI_FLAGS_SET 9 170 #define FCOE_ERROR_CODE_FCP_RSP_UNDERFLOW 10 171 #define FCOE_ERROR_CODE_FCP_RSP_OVERFLOW 11 172 #define FCOE_ERROR_CODE_FCP_RSP_INVALID_LENGTH_FIELD 12 173 #define FCOE_ERROR_CODE_FCP_RSP_INVALID_SNS_FIELD 13 174 #define FCOE_ERROR_CODE_FCP_RSP_INVALID_PAYLOAD_SIZE 14 175 #define FCOE_ERROR_CODE_FCP_RSP_PEND_XFER_SET 15 176 #define FCOE_ERROR_CODE_FCP_RSP_OPENED_SEQ 16 177 #define FCOE_ERROR_CODE_FCP_RSP_FCTL 17 178 #define FCOE_ERROR_CODE_FCP_RSP_LAST_SEQ_RESET 18 179 #define FCOE_ERROR_CODE_FCP_RSP_CONF_REQ_NOT_SUPPORTED_YET 19 180 181 // FCP DATA error codes 182 #define FCOE_ERROR_CODE_DATA_OOO_RO 20 183 #define FCOE_ERROR_CODE_DATA_EXCEEDS_DEFINED_MAX_FRAME_SIZE 21 184 #define FCOE_ERROR_CODE_DATA_EXCEEDS_DATA2TRNS 22 185 #define FCOE_ERROR_CODE_DATA_SOFI3_SEQ_ACTIVE_SET 23 186 #define FCOE_ERROR_CODE_DATA_SOFN_SEQ_ACTIVE_RESET 24 187 #define FCOE_ERROR_CODE_DATA_EOFN_END_SEQ_SET 25 188 #define FCOE_ERROR_CODE_DATA_EOFT_END_SEQ_RESET 26 189 #define FCOE_ERROR_CODE_DATA_TASK_TYPE_NOT_READ 27 190 #define FCOE_ERROR_CODE_DATA_FCTL 28 191 192 // Middle path error codes 193 #define FCOE_ERROR_CODE_MIDPATH_INVALID_TYPE 29 194 #define FCOE_ERROR_CODE_MIDPATH_SOFI3_SEQ_ACTIVE_SET 30 195 #define FCOE_ERROR_CODE_MIDPATH_SOFN_SEQ_ACTIVE_RESET 31 196 #define FCOE_ERROR_CODE_MIDPATH_EOFN_END_SEQ_SET 32 197 #define FCOE_ERROR_CODE_MIDPATH_EOFT_END_SEQ_RESET 33 198 #define FCOE_ERROR_CODE_MIDPATH_REPLY_FCTL 34 199 #define FCOE_ERROR_CODE_MIDPATH_INVALID_REPLY 35 200 #define FCOE_ERROR_CODE_MIDPATH_ELS_REPLY_RCTL 36 201 202 // ABTS error codes 203 #define FCOE_ERROR_CODE_ABTS_REPLY_F_CTL 37 204 #define FCOE_ERROR_CODE_ABTS_REPLY_DDF_RCTL_FIELD 38 205 #define FCOE_ERROR_CODE_ABTS_REPLY_INVALID_BLS_RCTL 39 206 #define FCOE_ERROR_CODE_ABTS_REPLY_INVALID_RCTL 40 207 #define FCOE_ERROR_CODE_ABTS_REPLY_RCTL_GENERAL_MISMATCH 41 208 209 // Common error codes 210 #define FCOE_ERROR_CODE_COMMON_MIDDLE_FRAME_WITH_PAD 42 211 #define FCOE_ERROR_CODE_COMMON_SEQ_INIT_IN_TCE 43 212 #define FCOE_ERROR_CODE_COMMON_FC_HDR_RX_ID_MISMATCH 44 213 #define FCOE_ERROR_CODE_COMMON_INCORRECT_SEQ_CNT 45 214 #define FCOE_ERROR_CODE_COMMON_DATA_FC_HDR_FCP_TYPE_MISMATCH 46 215 #define FCOE_ERROR_CODE_COMMON_DATA_NO_MORE_SGES 47 216 #define FCOE_ERROR_CODE_COMMON_OPTIONAL_FC_HDR 48 217 #define FCOE_ERROR_CODE_COMMON_READ_TCE_OX_ID_TOO_BIG 49 218 #define FCOE_ERROR_CODE_COMMON_DATA_WAS_NOT_TRANSMITTED 50 219 220 // Unsolicited Rx error codes 221 #define FCOE_ERROR_CODE_UNSOLICITED_TYPE_NOT_ELS 51 222 #define FCOE_ERROR_CODE_UNSOLICITED_TYPE_NOT_BLS 52 223 #define FCOE_ERROR_CODE_UNSOLICITED_FCTL_ELS 53 224 #define FCOE_ERROR_CODE_UNSOLICITED_FCTL_BLS 54 225 #define FCOE_ERROR_CODE_UNSOLICITED_R_CTL 55 226 227 #define FCOE_ERROR_CODE_RW_TASK_DDF_RCTL_INFO_FIELD 56 228 #define FCOE_ERROR_CODE_RW_TASK_INVALID_RCTL 57 229 #define FCOE_ERROR_CODE_RW_TASK_RCTL_GENERAL_MISMATCH 58 230 231 // Timer error codes 232 #define FCOE_ERROR_CODE_E_D_TOV_TIMER_EXPIRATION 60 233 #define FCOE_ERROR_CODE_REC_TOV_TIMER_EXPIRATION 61 234 235 236 #endif /*__57XX_FCOE_CONSTANTS_H_ */ 237 238