diff options
Diffstat (limited to 'include/linux/qed')
| -rw-r--r-- | include/linux/qed/common_hsi.h | 1165 | ||||
| -rw-r--r-- | include/linux/qed/eth_common.h | 363 | ||||
| -rw-r--r-- | include/linux/qed/fcoe_common.h | 874 | ||||
| -rw-r--r-- | include/linux/qed/iscsi_common.h | 1462 | ||||
| -rw-r--r-- | include/linux/qed/iwarp_common.h | 17 | ||||
| -rw-r--r-- | include/linux/qed/qed_if.h | 20 | ||||
| -rw-r--r-- | include/linux/qed/rdma_common.h | 25 | ||||
| -rw-r--r-- | include/linux/qed/roce_common.h | 15 | ||||
| -rw-r--r-- | include/linux/qed/storage_common.h | 45 | ||||
| -rw-r--r-- | include/linux/qed/tcp_common.h | 129 |
10 files changed, 2114 insertions, 2001 deletions
diff --git a/include/linux/qed/common_hsi.h b/include/linux/qed/common_hsi.h index 39e2a2ac2471..4874c104144b 100644 --- a/include/linux/qed/common_hsi.h +++ b/include/linux/qed/common_hsi.h | |||
| @@ -32,14 +32,15 @@ | |||
| 32 | 32 | ||
| 33 | #ifndef _COMMON_HSI_H | 33 | #ifndef _COMMON_HSI_H |
| 34 | #define _COMMON_HSI_H | 34 | #define _COMMON_HSI_H |
| 35 | |||
| 35 | #include <linux/types.h> | 36 | #include <linux/types.h> |
| 36 | #include <asm/byteorder.h> | 37 | #include <asm/byteorder.h> |
| 37 | #include <linux/bitops.h> | 38 | #include <linux/bitops.h> |
| 38 | #include <linux/slab.h> | 39 | #include <linux/slab.h> |
| 39 | 40 | ||
| 40 | /* dma_addr_t manip */ | 41 | /* dma_addr_t manip */ |
| 41 | #define PTR_LO(x) ((u32)(((uintptr_t)(x)) & 0xffffffff)) | 42 | #define PTR_LO(x) ((u32)(((uintptr_t)(x)) & 0xffffffff)) |
| 42 | #define PTR_HI(x) ((u32)((((uintptr_t)(x)) >> 16) >> 16)) | 43 | #define PTR_HI(x) ((u32)((((uintptr_t)(x)) >> 16) >> 16)) |
| 43 | #define DMA_LO_LE(x) cpu_to_le32(lower_32_bits(x)) | 44 | #define DMA_LO_LE(x) cpu_to_le32(lower_32_bits(x)) |
| 44 | #define DMA_HI_LE(x) cpu_to_le32(upper_32_bits(x)) | 45 | #define DMA_HI_LE(x) cpu_to_le32(upper_32_bits(x)) |
| 45 | #define DMA_REGPAIR_LE(x, val) do { \ | 46 | #define DMA_REGPAIR_LE(x, val) do { \ |
| @@ -47,39 +48,45 @@ | |||
| 47 | (x).lo = DMA_LO_LE((val)); \ | 48 | (x).lo = DMA_LO_LE((val)); \ |
| 48 | } while (0) | 49 | } while (0) |
| 49 | 50 | ||
| 50 | #define HILO_GEN(hi, lo, type) ((((type)(hi)) << 32) + (lo)) | 51 | #define HILO_GEN(hi, lo, type) ((((type)(hi)) << 32) + (lo)) |
| 51 | #define HILO_64(hi, lo) HILO_GEN((le32_to_cpu(hi)), (le32_to_cpu(lo)), u64) | 52 | #define HILO_64(hi, lo) \ |
| 52 | #define HILO_64_REGPAIR(regpair) (HILO_64(regpair.hi, regpair.lo)) | 53 | HILO_GEN(le32_to_cpu(hi), le32_to_cpu(lo), u64) |
| 54 | #define HILO_64_REGPAIR(regpair) ({ \ | ||
| 55 | typeof(regpair) __regpair = (regpair); \ | ||
| 56 | HILO_64(__regpair.hi, __regpair.lo); }) | ||
| 53 | #define HILO_DMA_REGPAIR(regpair) ((dma_addr_t)HILO_64_REGPAIR(regpair)) | 57 | #define HILO_DMA_REGPAIR(regpair) ((dma_addr_t)HILO_64_REGPAIR(regpair)) |
| 54 | 58 | ||
| 55 | #ifndef __COMMON_HSI__ | 59 | #ifndef __COMMON_HSI__ |
| 56 | #define __COMMON_HSI__ | 60 | #define __COMMON_HSI__ |
| 57 | 61 | ||
| 62 | /********************************/ | ||
| 63 | /* PROTOCOL COMMON FW CONSTANTS */ | ||
| 64 | /********************************/ | ||
| 58 | 65 | ||
| 59 | #define X_FINAL_CLEANUP_AGG_INT 1 | 66 | #define X_FINAL_CLEANUP_AGG_INT 1 |
| 60 | 67 | ||
| 61 | #define EVENT_RING_PAGE_SIZE_BYTES 4096 | 68 | #define EVENT_RING_PAGE_SIZE_BYTES 4096 |
| 62 | 69 | ||
| 63 | #define NUM_OF_GLOBAL_QUEUES 128 | 70 | #define NUM_OF_GLOBAL_QUEUES 128 |
| 64 | #define COMMON_QUEUE_ENTRY_MAX_BYTE_SIZE 64 | 71 | #define COMMON_QUEUE_ENTRY_MAX_BYTE_SIZE 64 |
| 65 | 72 | ||
| 66 | #define ISCSI_CDU_TASK_SEG_TYPE 0 | 73 | #define ISCSI_CDU_TASK_SEG_TYPE 0 |
| 67 | #define FCOE_CDU_TASK_SEG_TYPE 0 | 74 | #define FCOE_CDU_TASK_SEG_TYPE 0 |
| 68 | #define RDMA_CDU_TASK_SEG_TYPE 1 | 75 | #define RDMA_CDU_TASK_SEG_TYPE 1 |
| 69 | 76 | ||
| 70 | #define FW_ASSERT_GENERAL_ATTN_IDX 32 | 77 | #define FW_ASSERT_GENERAL_ATTN_IDX 32 |
| 71 | 78 | ||
| 72 | #define MAX_PINNED_CCFC 32 | 79 | #define MAX_PINNED_CCFC 32 |
| 73 | 80 | ||
| 74 | /* Queue Zone sizes in bytes */ | 81 | /* Queue Zone sizes in bytes */ |
| 75 | #define TSTORM_QZONE_SIZE 8 | 82 | #define TSTORM_QZONE_SIZE 8 |
| 76 | #define MSTORM_QZONE_SIZE 16 | 83 | #define MSTORM_QZONE_SIZE 16 |
| 77 | #define USTORM_QZONE_SIZE 8 | 84 | #define USTORM_QZONE_SIZE 8 |
| 78 | #define XSTORM_QZONE_SIZE 8 | 85 | #define XSTORM_QZONE_SIZE 8 |
| 79 | #define YSTORM_QZONE_SIZE 0 | 86 | #define YSTORM_QZONE_SIZE 0 |
| 80 | #define PSTORM_QZONE_SIZE 0 | 87 | #define PSTORM_QZONE_SIZE 0 |
| 81 | 88 | ||
| 82 | #define MSTORM_VF_ZONE_DEFAULT_SIZE_LOG 7 | 89 | #define MSTORM_VF_ZONE_DEFAULT_SIZE_LOG 7 |
| 83 | #define ETH_MAX_NUM_RX_QUEUES_PER_VF_DEFAULT 16 | 90 | #define ETH_MAX_NUM_RX_QUEUES_PER_VF_DEFAULT 16 |
| 84 | #define ETH_MAX_NUM_RX_QUEUES_PER_VF_DOUBLE 48 | 91 | #define ETH_MAX_NUM_RX_QUEUES_PER_VF_DOUBLE 48 |
| 85 | #define ETH_MAX_NUM_RX_QUEUES_PER_VF_QUAD 112 | 92 | #define ETH_MAX_NUM_RX_QUEUES_PER_VF_QUAD 112 |
| @@ -115,10 +122,10 @@ | |||
| 115 | #define MAX_NUM_PORTS_BB (2) | 122 | #define MAX_NUM_PORTS_BB (2) |
| 116 | #define MAX_NUM_PORTS (MAX_NUM_PORTS_K2) | 123 | #define MAX_NUM_PORTS (MAX_NUM_PORTS_K2) |
| 117 | 124 | ||
| 118 | #define MAX_NUM_PFS_K2 (16) | 125 | #define MAX_NUM_PFS_K2 (16) |
| 119 | #define MAX_NUM_PFS_BB (8) | 126 | #define MAX_NUM_PFS_BB (8) |
| 120 | #define MAX_NUM_PFS (MAX_NUM_PFS_K2) | 127 | #define MAX_NUM_PFS (MAX_NUM_PFS_K2) |
| 121 | #define MAX_NUM_OF_PFS_IN_CHIP (16) /* On both engines */ | 128 | #define MAX_NUM_OF_PFS_IN_CHIP (16) /* On both engines */ |
| 122 | 129 | ||
| 123 | #define MAX_NUM_VFS_K2 (192) | 130 | #define MAX_NUM_VFS_K2 (192) |
| 124 | #define MAX_NUM_VFS_BB (120) | 131 | #define MAX_NUM_VFS_BB (120) |
| @@ -147,9 +154,6 @@ | |||
| 147 | 154 | ||
| 148 | #define LB_TC (NUM_OF_PHYS_TCS) | 155 | #define LB_TC (NUM_OF_PHYS_TCS) |
| 149 | 156 | ||
| 150 | /* Num of possible traffic priority values */ | ||
| 151 | #define NUM_OF_PRIO (8) | ||
| 152 | |||
| 153 | #define MAX_NUM_VOQS_K2 (NUM_TCS_4PORT_K2 * MAX_NUM_PORTS_K2) | 157 | #define MAX_NUM_VOQS_K2 (NUM_TCS_4PORT_K2 * MAX_NUM_PORTS_K2) |
| 154 | #define MAX_NUM_VOQS_BB (NUM_OF_TCS * MAX_NUM_PORTS_BB) | 158 | #define MAX_NUM_VOQS_BB (NUM_OF_TCS * MAX_NUM_PORTS_BB) |
| 155 | #define MAX_NUM_VOQS (MAX_NUM_VOQS_K2) | 159 | #define MAX_NUM_VOQS (MAX_NUM_VOQS_K2) |
| @@ -157,13 +161,8 @@ | |||
| 157 | 161 | ||
| 158 | /* CIDs */ | 162 | /* CIDs */ |
| 159 | #define NUM_OF_CONNECTION_TYPES (8) | 163 | #define NUM_OF_CONNECTION_TYPES (8) |
| 160 | #define NUM_OF_LCIDS (320) | 164 | #define NUM_OF_LCIDS (320) |
| 161 | #define NUM_OF_LTIDS (320) | 165 | #define NUM_OF_LTIDS (320) |
| 162 | |||
| 163 | /* Clock values */ | ||
| 164 | #define MASTER_CLK_FREQ_E4 (375e6) | ||
| 165 | #define STORM_CLK_FREQ_E4 (1000e6) | ||
| 166 | #define CLK25M_CLK_FREQ_E4 (25e6) | ||
| 167 | 166 | ||
| 168 | /* Global PXP windows (GTT) */ | 167 | /* Global PXP windows (GTT) */ |
| 169 | #define NUM_OF_GTT 19 | 168 | #define NUM_OF_GTT 19 |
| @@ -172,17 +171,17 @@ | |||
| 172 | #define GTT_DWORD_SIZE BIT(GTT_DWORD_SIZE_BITS) | 171 | #define GTT_DWORD_SIZE BIT(GTT_DWORD_SIZE_BITS) |
| 173 | 172 | ||
| 174 | /* Tools Version */ | 173 | /* Tools Version */ |
| 175 | #define TOOLS_VERSION 10 | 174 | #define TOOLS_VERSION 10 |
| 176 | 175 | ||
| 177 | /*****************/ | 176 | /*****************/ |
| 178 | /* CDU CONSTANTS */ | 177 | /* CDU CONSTANTS */ |
| 179 | /*****************/ | 178 | /*****************/ |
| 180 | 179 | ||
| 181 | #define CDU_SEG_TYPE_OFFSET_REG_TYPE_SHIFT (17) | 180 | #define CDU_SEG_TYPE_OFFSET_REG_TYPE_SHIFT (17) |
| 182 | #define CDU_SEG_TYPE_OFFSET_REG_OFFSET_MASK (0x1ffff) | 181 | #define CDU_SEG_TYPE_OFFSET_REG_OFFSET_MASK (0x1ffff) |
| 183 | 182 | ||
| 184 | #define CDU_VF_FL_SEG_TYPE_OFFSET_REG_TYPE_SHIFT (12) | 183 | #define CDU_VF_FL_SEG_TYPE_OFFSET_REG_TYPE_SHIFT (12) |
| 185 | #define CDU_VF_FL_SEG_TYPE_OFFSET_REG_OFFSET_MASK (0xfff) | 184 | #define CDU_VF_FL_SEG_TYPE_OFFSET_REG_OFFSET_MASK (0xfff) |
| 186 | 185 | ||
| 187 | #define CDU_CONTEXT_VALIDATION_CFG_ENABLE_SHIFT (0) | 186 | #define CDU_CONTEXT_VALIDATION_CFG_ENABLE_SHIFT (0) |
| 188 | #define CDU_CONTEXT_VALIDATION_CFG_VALIDATION_TYPE_SHIFT (1) | 187 | #define CDU_CONTEXT_VALIDATION_CFG_VALIDATION_TYPE_SHIFT (1) |
| @@ -201,45 +200,45 @@ | |||
| 201 | #define DQ_DEMS_TOE_LOCAL_ADV_WND 4 | 200 | #define DQ_DEMS_TOE_LOCAL_ADV_WND 4 |
| 202 | #define DQ_DEMS_ROCE_CQ_CONS 7 | 201 | #define DQ_DEMS_ROCE_CQ_CONS 7 |
| 203 | 202 | ||
| 204 | /* XCM agg val selection */ | 203 | /* XCM agg val selection (HW) */ |
| 205 | #define DQ_XCM_AGG_VAL_SEL_WORD2 0 | 204 | #define DQ_XCM_AGG_VAL_SEL_WORD2 0 |
| 206 | #define DQ_XCM_AGG_VAL_SEL_WORD3 1 | 205 | #define DQ_XCM_AGG_VAL_SEL_WORD3 1 |
| 207 | #define DQ_XCM_AGG_VAL_SEL_WORD4 2 | 206 | #define DQ_XCM_AGG_VAL_SEL_WORD4 2 |
| 208 | #define DQ_XCM_AGG_VAL_SEL_WORD5 3 | 207 | #define DQ_XCM_AGG_VAL_SEL_WORD5 3 |
| 209 | #define DQ_XCM_AGG_VAL_SEL_REG3 4 | 208 | #define DQ_XCM_AGG_VAL_SEL_REG3 4 |
| 210 | #define DQ_XCM_AGG_VAL_SEL_REG4 5 | 209 | #define DQ_XCM_AGG_VAL_SEL_REG4 5 |
| 211 | #define DQ_XCM_AGG_VAL_SEL_REG5 6 | 210 | #define DQ_XCM_AGG_VAL_SEL_REG5 6 |
| 212 | #define DQ_XCM_AGG_VAL_SEL_REG6 7 | 211 | #define DQ_XCM_AGG_VAL_SEL_REG6 7 |
| 213 | 212 | ||
| 214 | /* XCM agg val selection */ | 213 | /* XCM agg val selection (FW) */ |
| 215 | #define DQ_XCM_CORE_TX_BD_CONS_CMD DQ_XCM_AGG_VAL_SEL_WORD3 | 214 | #define DQ_XCM_CORE_TX_BD_CONS_CMD DQ_XCM_AGG_VAL_SEL_WORD3 |
| 216 | #define DQ_XCM_CORE_TX_BD_PROD_CMD DQ_XCM_AGG_VAL_SEL_WORD4 | 215 | #define DQ_XCM_CORE_TX_BD_PROD_CMD DQ_XCM_AGG_VAL_SEL_WORD4 |
| 217 | #define DQ_XCM_CORE_SPQ_PROD_CMD DQ_XCM_AGG_VAL_SEL_WORD4 | 216 | #define DQ_XCM_CORE_SPQ_PROD_CMD DQ_XCM_AGG_VAL_SEL_WORD4 |
| 218 | #define DQ_XCM_ETH_EDPM_NUM_BDS_CMD DQ_XCM_AGG_VAL_SEL_WORD2 | 217 | #define DQ_XCM_ETH_EDPM_NUM_BDS_CMD DQ_XCM_AGG_VAL_SEL_WORD2 |
| 219 | #define DQ_XCM_ETH_TX_BD_CONS_CMD DQ_XCM_AGG_VAL_SEL_WORD3 | 218 | #define DQ_XCM_ETH_TX_BD_CONS_CMD DQ_XCM_AGG_VAL_SEL_WORD3 |
| 220 | #define DQ_XCM_ETH_TX_BD_PROD_CMD DQ_XCM_AGG_VAL_SEL_WORD4 | 219 | #define DQ_XCM_ETH_TX_BD_PROD_CMD DQ_XCM_AGG_VAL_SEL_WORD4 |
| 221 | #define DQ_XCM_ETH_GO_TO_BD_CONS_CMD DQ_XCM_AGG_VAL_SEL_WORD5 | 220 | #define DQ_XCM_ETH_GO_TO_BD_CONS_CMD DQ_XCM_AGG_VAL_SEL_WORD5 |
| 222 | #define DQ_XCM_FCOE_SQ_CONS_CMD DQ_XCM_AGG_VAL_SEL_WORD3 | 221 | #define DQ_XCM_FCOE_SQ_CONS_CMD DQ_XCM_AGG_VAL_SEL_WORD3 |
| 223 | #define DQ_XCM_FCOE_SQ_PROD_CMD DQ_XCM_AGG_VAL_SEL_WORD4 | 222 | #define DQ_XCM_FCOE_SQ_PROD_CMD DQ_XCM_AGG_VAL_SEL_WORD4 |
| 224 | #define DQ_XCM_FCOE_X_FERQ_PROD_CMD DQ_XCM_AGG_VAL_SEL_WORD5 | 223 | #define DQ_XCM_FCOE_X_FERQ_PROD_CMD DQ_XCM_AGG_VAL_SEL_WORD5 |
| 225 | #define DQ_XCM_ISCSI_SQ_CONS_CMD DQ_XCM_AGG_VAL_SEL_WORD3 | 224 | #define DQ_XCM_ISCSI_SQ_CONS_CMD DQ_XCM_AGG_VAL_SEL_WORD3 |
| 226 | #define DQ_XCM_ISCSI_SQ_PROD_CMD DQ_XCM_AGG_VAL_SEL_WORD4 | 225 | #define DQ_XCM_ISCSI_SQ_PROD_CMD DQ_XCM_AGG_VAL_SEL_WORD4 |
| 227 | #define DQ_XCM_ISCSI_MORE_TO_SEND_SEQ_CMD DQ_XCM_AGG_VAL_SEL_REG3 | 226 | #define DQ_XCM_ISCSI_MORE_TO_SEND_SEQ_CMD DQ_XCM_AGG_VAL_SEL_REG3 |
| 228 | #define DQ_XCM_ISCSI_EXP_STAT_SN_CMD DQ_XCM_AGG_VAL_SEL_REG6 | 227 | #define DQ_XCM_ISCSI_EXP_STAT_SN_CMD DQ_XCM_AGG_VAL_SEL_REG6 |
| 229 | #define DQ_XCM_ROCE_SQ_PROD_CMD DQ_XCM_AGG_VAL_SEL_WORD4 | 228 | #define DQ_XCM_ROCE_SQ_PROD_CMD DQ_XCM_AGG_VAL_SEL_WORD4 |
| 230 | #define DQ_XCM_TOE_TX_BD_PROD_CMD DQ_XCM_AGG_VAL_SEL_WORD4 | 229 | #define DQ_XCM_TOE_TX_BD_PROD_CMD DQ_XCM_AGG_VAL_SEL_WORD4 |
| 231 | #define DQ_XCM_TOE_MORE_TO_SEND_SEQ_CMD DQ_XCM_AGG_VAL_SEL_REG3 | 230 | #define DQ_XCM_TOE_MORE_TO_SEND_SEQ_CMD DQ_XCM_AGG_VAL_SEL_REG3 |
| 232 | #define DQ_XCM_TOE_LOCAL_ADV_WND_SEQ_CMD DQ_XCM_AGG_VAL_SEL_REG4 | 231 | #define DQ_XCM_TOE_LOCAL_ADV_WND_SEQ_CMD DQ_XCM_AGG_VAL_SEL_REG4 |
| 233 | 232 | ||
| 234 | /* UCM agg val selection (HW) */ | 233 | /* UCM agg val selection (HW) */ |
| 235 | #define DQ_UCM_AGG_VAL_SEL_WORD0 0 | 234 | #define DQ_UCM_AGG_VAL_SEL_WORD0 0 |
| 236 | #define DQ_UCM_AGG_VAL_SEL_WORD1 1 | 235 | #define DQ_UCM_AGG_VAL_SEL_WORD1 1 |
| 237 | #define DQ_UCM_AGG_VAL_SEL_WORD2 2 | 236 | #define DQ_UCM_AGG_VAL_SEL_WORD2 2 |
| 238 | #define DQ_UCM_AGG_VAL_SEL_WORD3 3 | 237 | #define DQ_UCM_AGG_VAL_SEL_WORD3 3 |
| 239 | #define DQ_UCM_AGG_VAL_SEL_REG0 4 | 238 | #define DQ_UCM_AGG_VAL_SEL_REG0 4 |
| 240 | #define DQ_UCM_AGG_VAL_SEL_REG1 5 | 239 | #define DQ_UCM_AGG_VAL_SEL_REG1 5 |
| 241 | #define DQ_UCM_AGG_VAL_SEL_REG2 6 | 240 | #define DQ_UCM_AGG_VAL_SEL_REG2 6 |
| 242 | #define DQ_UCM_AGG_VAL_SEL_REG3 7 | 241 | #define DQ_UCM_AGG_VAL_SEL_REG3 7 |
| 243 | 242 | ||
| 244 | /* UCM agg val selection (FW) */ | 243 | /* UCM agg val selection (FW) */ |
| 245 | #define DQ_UCM_ETH_PMD_TX_CONS_CMD DQ_UCM_AGG_VAL_SEL_WORD2 | 244 | #define DQ_UCM_ETH_PMD_TX_CONS_CMD DQ_UCM_AGG_VAL_SEL_WORD2 |
| @@ -263,7 +262,7 @@ | |||
| 263 | #define DQ_TCM_ROCE_RQ_PROD_CMD \ | 262 | #define DQ_TCM_ROCE_RQ_PROD_CMD \ |
| 264 | DQ_TCM_AGG_VAL_SEL_WORD0 | 263 | DQ_TCM_AGG_VAL_SEL_WORD0 |
| 265 | 264 | ||
| 266 | /* XCM agg counter flag selection */ | 265 | /* XCM agg counter flag selection (HW) */ |
| 267 | #define DQ_XCM_AGG_FLG_SHIFT_BIT14 0 | 266 | #define DQ_XCM_AGG_FLG_SHIFT_BIT14 0 |
| 268 | #define DQ_XCM_AGG_FLG_SHIFT_BIT15 1 | 267 | #define DQ_XCM_AGG_FLG_SHIFT_BIT15 1 |
| 269 | #define DQ_XCM_AGG_FLG_SHIFT_CF12 2 | 268 | #define DQ_XCM_AGG_FLG_SHIFT_CF12 2 |
| @@ -273,20 +272,20 @@ | |||
| 273 | #define DQ_XCM_AGG_FLG_SHIFT_CF22 6 | 272 | #define DQ_XCM_AGG_FLG_SHIFT_CF22 6 |
| 274 | #define DQ_XCM_AGG_FLG_SHIFT_CF23 7 | 273 | #define DQ_XCM_AGG_FLG_SHIFT_CF23 7 |
| 275 | 274 | ||
| 276 | /* XCM agg counter flag selection */ | 275 | /* XCM agg counter flag selection (FW) */ |
| 277 | #define DQ_XCM_CORE_DQ_CF_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF18) | 276 | #define DQ_XCM_CORE_DQ_CF_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF18) |
| 278 | #define DQ_XCM_CORE_TERMINATE_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF19) | 277 | #define DQ_XCM_CORE_TERMINATE_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF19) |
| 279 | #define DQ_XCM_CORE_SLOW_PATH_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF22) | 278 | #define DQ_XCM_CORE_SLOW_PATH_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF22) |
| 280 | #define DQ_XCM_ETH_DQ_CF_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF18) | 279 | #define DQ_XCM_ETH_DQ_CF_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF18) |
| 281 | #define DQ_XCM_ETH_TERMINATE_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF19) | 280 | #define DQ_XCM_ETH_TERMINATE_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF19) |
| 282 | #define DQ_XCM_ETH_SLOW_PATH_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF22) | 281 | #define DQ_XCM_ETH_SLOW_PATH_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF22) |
| 283 | #define DQ_XCM_ETH_TPH_EN_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF23) | 282 | #define DQ_XCM_ETH_TPH_EN_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF23) |
| 284 | #define DQ_XCM_FCOE_SLOW_PATH_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF22) | 283 | #define DQ_XCM_FCOE_SLOW_PATH_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF22) |
| 285 | #define DQ_XCM_ISCSI_DQ_FLUSH_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF19) | 284 | #define DQ_XCM_ISCSI_DQ_FLUSH_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF19) |
| 286 | #define DQ_XCM_ISCSI_SLOW_PATH_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF22) | 285 | #define DQ_XCM_ISCSI_SLOW_PATH_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF22) |
| 287 | #define DQ_XCM_ISCSI_PROC_ONLY_CLEANUP_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF23) | 286 | #define DQ_XCM_ISCSI_PROC_ONLY_CLEANUP_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF23) |
| 288 | #define DQ_XCM_TOE_DQ_FLUSH_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF19) | 287 | #define DQ_XCM_TOE_DQ_FLUSH_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF19) |
| 289 | #define DQ_XCM_TOE_SLOW_PATH_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF22) | 288 | #define DQ_XCM_TOE_SLOW_PATH_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF22) |
| 290 | 289 | ||
| 291 | /* UCM agg counter flag selection (HW) */ | 290 | /* UCM agg counter flag selection (HW) */ |
| 292 | #define DQ_UCM_AGG_FLG_SHIFT_CF0 0 | 291 | #define DQ_UCM_AGG_FLG_SHIFT_CF0 0 |
| @@ -317,9 +316,9 @@ | |||
| 317 | #define DQ_TCM_AGG_FLG_SHIFT_CF6 6 | 316 | #define DQ_TCM_AGG_FLG_SHIFT_CF6 6 |
| 318 | #define DQ_TCM_AGG_FLG_SHIFT_CF7 7 | 317 | #define DQ_TCM_AGG_FLG_SHIFT_CF7 7 |
| 319 | /* TCM agg counter flag selection (FW) */ | 318 | /* TCM agg counter flag selection (FW) */ |
| 320 | #define DQ_TCM_FCOE_FLUSH_Q0_CMD BIT(DQ_TCM_AGG_FLG_SHIFT_CF1) | 319 | #define DQ_TCM_FCOE_FLUSH_Q0_CMD BIT(DQ_TCM_AGG_FLG_SHIFT_CF1) |
| 321 | #define DQ_TCM_FCOE_DUMMY_TIMER_CMD BIT(DQ_TCM_AGG_FLG_SHIFT_CF2) | 320 | #define DQ_TCM_FCOE_DUMMY_TIMER_CMD BIT(DQ_TCM_AGG_FLG_SHIFT_CF2) |
| 322 | #define DQ_TCM_FCOE_TIMER_STOP_ALL_CMD BIT(DQ_TCM_AGG_FLG_SHIFT_CF3) | 321 | #define DQ_TCM_FCOE_TIMER_STOP_ALL_CMD BIT(DQ_TCM_AGG_FLG_SHIFT_CF3) |
| 323 | #define DQ_TCM_ISCSI_FLUSH_Q0_CMD BIT(DQ_TCM_AGG_FLG_SHIFT_CF1) | 322 | #define DQ_TCM_ISCSI_FLUSH_Q0_CMD BIT(DQ_TCM_AGG_FLG_SHIFT_CF1) |
| 324 | #define DQ_TCM_ISCSI_TIMER_STOP_ALL_CMD BIT(DQ_TCM_AGG_FLG_SHIFT_CF3) | 323 | #define DQ_TCM_ISCSI_TIMER_STOP_ALL_CMD BIT(DQ_TCM_AGG_FLG_SHIFT_CF3) |
| 325 | #define DQ_TCM_TOE_FLUSH_Q0_CMD BIT(DQ_TCM_AGG_FLG_SHIFT_CF1) | 324 | #define DQ_TCM_TOE_FLUSH_Q0_CMD BIT(DQ_TCM_AGG_FLG_SHIFT_CF1) |
| @@ -327,18 +326,18 @@ | |||
| 327 | #define DQ_TCM_IWARP_POST_RQ_CF_CMD BIT(DQ_TCM_AGG_FLG_SHIFT_CF1) | 326 | #define DQ_TCM_IWARP_POST_RQ_CF_CMD BIT(DQ_TCM_AGG_FLG_SHIFT_CF1) |
| 328 | 327 | ||
| 329 | /* PWM address mapping */ | 328 | /* PWM address mapping */ |
| 330 | #define DQ_PWM_OFFSET_DPM_BASE 0x0 | 329 | #define DQ_PWM_OFFSET_DPM_BASE 0x0 |
| 331 | #define DQ_PWM_OFFSET_DPM_END 0x27 | 330 | #define DQ_PWM_OFFSET_DPM_END 0x27 |
| 332 | #define DQ_PWM_OFFSET_XCM16_BASE 0x40 | 331 | #define DQ_PWM_OFFSET_XCM16_BASE 0x40 |
| 333 | #define DQ_PWM_OFFSET_XCM32_BASE 0x44 | 332 | #define DQ_PWM_OFFSET_XCM32_BASE 0x44 |
| 334 | #define DQ_PWM_OFFSET_UCM16_BASE 0x48 | 333 | #define DQ_PWM_OFFSET_UCM16_BASE 0x48 |
| 335 | #define DQ_PWM_OFFSET_UCM32_BASE 0x4C | 334 | #define DQ_PWM_OFFSET_UCM32_BASE 0x4C |
| 336 | #define DQ_PWM_OFFSET_UCM16_4 0x50 | 335 | #define DQ_PWM_OFFSET_UCM16_4 0x50 |
| 337 | #define DQ_PWM_OFFSET_TCM16_BASE 0x58 | 336 | #define DQ_PWM_OFFSET_TCM16_BASE 0x58 |
| 338 | #define DQ_PWM_OFFSET_TCM32_BASE 0x5C | 337 | #define DQ_PWM_OFFSET_TCM32_BASE 0x5C |
| 339 | #define DQ_PWM_OFFSET_XCM_FLAGS 0x68 | 338 | #define DQ_PWM_OFFSET_XCM_FLAGS 0x68 |
| 340 | #define DQ_PWM_OFFSET_UCM_FLAGS 0x69 | 339 | #define DQ_PWM_OFFSET_UCM_FLAGS 0x69 |
| 341 | #define DQ_PWM_OFFSET_TCM_FLAGS 0x6B | 340 | #define DQ_PWM_OFFSET_TCM_FLAGS 0x6B |
| 342 | 341 | ||
| 343 | #define DQ_PWM_OFFSET_XCM_RDMA_SQ_PROD (DQ_PWM_OFFSET_XCM16_BASE + 2) | 342 | #define DQ_PWM_OFFSET_XCM_RDMA_SQ_PROD (DQ_PWM_OFFSET_XCM16_BASE + 2) |
| 344 | #define DQ_PWM_OFFSET_UCM_RDMA_CQ_CONS_32BIT (DQ_PWM_OFFSET_UCM32_BASE) | 343 | #define DQ_PWM_OFFSET_UCM_RDMA_CQ_CONS_32BIT (DQ_PWM_OFFSET_UCM32_BASE) |
| @@ -347,10 +346,11 @@ | |||
| 347 | #define DQ_PWM_OFFSET_UCM_RDMA_ARM_FLAGS (DQ_PWM_OFFSET_UCM_FLAGS) | 346 | #define DQ_PWM_OFFSET_UCM_RDMA_ARM_FLAGS (DQ_PWM_OFFSET_UCM_FLAGS) |
| 348 | #define DQ_PWM_OFFSET_TCM_ROCE_RQ_PROD (DQ_PWM_OFFSET_TCM16_BASE + 1) | 347 | #define DQ_PWM_OFFSET_TCM_ROCE_RQ_PROD (DQ_PWM_OFFSET_TCM16_BASE + 1) |
| 349 | #define DQ_PWM_OFFSET_TCM_IWARP_RQ_PROD (DQ_PWM_OFFSET_TCM16_BASE + 3) | 348 | #define DQ_PWM_OFFSET_TCM_IWARP_RQ_PROD (DQ_PWM_OFFSET_TCM16_BASE + 3) |
| 350 | #define DQ_REGION_SHIFT (12) | 349 | |
| 350 | #define DQ_REGION_SHIFT (12) | ||
| 351 | 351 | ||
| 352 | /* DPM */ | 352 | /* DPM */ |
| 353 | #define DQ_DPM_WQE_BUFF_SIZE (320) | 353 | #define DQ_DPM_WQE_BUFF_SIZE (320) |
| 354 | 354 | ||
| 355 | /* Conn type ranges */ | 355 | /* Conn type ranges */ |
| 356 | #define DQ_CONN_TYPE_RANGE_SHIFT (4) | 356 | #define DQ_CONN_TYPE_RANGE_SHIFT (4) |
| @@ -359,29 +359,30 @@ | |||
| 359 | /* QM CONSTANTS */ | 359 | /* QM CONSTANTS */ |
| 360 | /*****************/ | 360 | /*****************/ |
| 361 | 361 | ||
| 362 | /* number of TX queues in the QM */ | 362 | /* Number of TX queues in the QM */ |
| 363 | #define MAX_QM_TX_QUEUES_K2 512 | 363 | #define MAX_QM_TX_QUEUES_K2 512 |
| 364 | #define MAX_QM_TX_QUEUES_BB 448 | 364 | #define MAX_QM_TX_QUEUES_BB 448 |
| 365 | #define MAX_QM_TX_QUEUES MAX_QM_TX_QUEUES_K2 | 365 | #define MAX_QM_TX_QUEUES MAX_QM_TX_QUEUES_K2 |
| 366 | 366 | ||
| 367 | /* number of Other queues in the QM */ | 367 | /* Number of Other queues in the QM */ |
| 368 | #define MAX_QM_OTHER_QUEUES_BB 64 | 368 | #define MAX_QM_OTHER_QUEUES_BB 64 |
| 369 | #define MAX_QM_OTHER_QUEUES_K2 128 | 369 | #define MAX_QM_OTHER_QUEUES_K2 128 |
| 370 | #define MAX_QM_OTHER_QUEUES MAX_QM_OTHER_QUEUES_K2 | 370 | #define MAX_QM_OTHER_QUEUES MAX_QM_OTHER_QUEUES_K2 |
| 371 | 371 | ||
| 372 | /* number of queues in a PF queue group */ | 372 | /* Number of queues in a PF queue group */ |
| 373 | #define QM_PF_QUEUE_GROUP_SIZE 8 | 373 | #define QM_PF_QUEUE_GROUP_SIZE 8 |
| 374 | 374 | ||
| 375 | /* the size of a single queue element in bytes */ | 375 | /* The size of a single queue element in bytes */ |
| 376 | #define QM_PQ_ELEMENT_SIZE 4 | 376 | #define QM_PQ_ELEMENT_SIZE 4 |
| 377 | 377 | ||
| 378 | /* base number of Tx PQs in the CM PQ representation. | 378 | /* Base number of Tx PQs in the CM PQ representation. |
| 379 | * should be used when storing PQ IDs in CM PQ registers and context | 379 | * Should be used when storing PQ IDs in CM PQ registers and context. |
| 380 | */ | 380 | */ |
| 381 | #define CM_TX_PQ_BASE 0x200 | 381 | #define CM_TX_PQ_BASE 0x200 |
| 382 | 382 | ||
| 383 | /* number of global Vport/QCN rate limiters */ | 383 | /* Number of global Vport/QCN rate limiters */ |
| 384 | #define MAX_QM_GLOBAL_RLS 256 | 384 | #define MAX_QM_GLOBAL_RLS 256 |
| 385 | |||
| 385 | /* QM registers data */ | 386 | /* QM registers data */ |
| 386 | #define QM_LINE_CRD_REG_WIDTH 16 | 387 | #define QM_LINE_CRD_REG_WIDTH 16 |
| 387 | #define QM_LINE_CRD_REG_SIGN_BIT BIT((QM_LINE_CRD_REG_WIDTH - 1)) | 388 | #define QM_LINE_CRD_REG_SIGN_BIT BIT((QM_LINE_CRD_REG_WIDTH - 1)) |
| @@ -432,8 +433,7 @@ | |||
| 432 | 433 | ||
| 433 | #define IGU_CMD_INT_ACK_BASE 0x0400 | 434 | #define IGU_CMD_INT_ACK_BASE 0x0400 |
| 434 | #define IGU_CMD_INT_ACK_UPPER (IGU_CMD_INT_ACK_BASE + \ | 435 | #define IGU_CMD_INT_ACK_UPPER (IGU_CMD_INT_ACK_BASE + \ |
| 435 | MAX_TOT_SB_PER_PATH - \ | 436 | MAX_TOT_SB_PER_PATH - 1) |
| 436 | 1) | ||
| 437 | #define IGU_CMD_INT_ACK_RESERVED_UPPER 0x05ff | 437 | #define IGU_CMD_INT_ACK_RESERVED_UPPER 0x05ff |
| 438 | 438 | ||
| 439 | #define IGU_CMD_ATTN_BIT_UPD_UPPER 0x05f0 | 439 | #define IGU_CMD_ATTN_BIT_UPD_UPPER 0x05f0 |
| @@ -447,8 +447,7 @@ | |||
| 447 | 447 | ||
| 448 | #define IGU_CMD_PROD_UPD_BASE 0x0600 | 448 | #define IGU_CMD_PROD_UPD_BASE 0x0600 |
| 449 | #define IGU_CMD_PROD_UPD_UPPER (IGU_CMD_PROD_UPD_BASE +\ | 449 | #define IGU_CMD_PROD_UPD_UPPER (IGU_CMD_PROD_UPD_BASE +\ |
| 450 | MAX_TOT_SB_PER_PATH - \ | 450 | MAX_TOT_SB_PER_PATH - 1) |
| 451 | 1) | ||
| 452 | #define IGU_CMD_PROD_UPD_RESERVED_UPPER 0x07ff | 451 | #define IGU_CMD_PROD_UPD_RESERVED_UPPER 0x07ff |
| 453 | 452 | ||
| 454 | /*****************/ | 453 | /*****************/ |
| @@ -514,129 +513,121 @@ | |||
| 514 | PXP_EXTERNAL_BAR_GLOBAL_WINDOW_LENGTH - 1) | 513 | PXP_EXTERNAL_BAR_GLOBAL_WINDOW_LENGTH - 1) |
| 515 | 514 | ||
| 516 | /* PF BAR */ | 515 | /* PF BAR */ |
| 517 | #define PXP_BAR0_START_GRC 0x0000 | 516 | #define PXP_BAR0_START_GRC 0x0000 |
| 518 | #define PXP_BAR0_GRC_LENGTH 0x1C00000 | 517 | #define PXP_BAR0_GRC_LENGTH 0x1C00000 |
| 519 | #define PXP_BAR0_END_GRC (PXP_BAR0_START_GRC + \ | 518 | #define PXP_BAR0_END_GRC (PXP_BAR0_START_GRC + \ |
| 520 | PXP_BAR0_GRC_LENGTH - 1) | 519 | PXP_BAR0_GRC_LENGTH - 1) |
| 521 | 520 | ||
| 522 | #define PXP_BAR0_START_IGU 0x1C00000 | 521 | #define PXP_BAR0_START_IGU 0x1C00000 |
| 523 | #define PXP_BAR0_IGU_LENGTH 0x10000 | 522 | #define PXP_BAR0_IGU_LENGTH 0x10000 |
| 524 | #define PXP_BAR0_END_IGU (PXP_BAR0_START_IGU + \ | 523 | #define PXP_BAR0_END_IGU (PXP_BAR0_START_IGU + \ |
| 525 | PXP_BAR0_IGU_LENGTH - 1) | 524 | PXP_BAR0_IGU_LENGTH - 1) |
| 526 | 525 | ||
| 527 | #define PXP_BAR0_START_TSDM 0x1C80000 | 526 | #define PXP_BAR0_START_TSDM 0x1C80000 |
| 528 | #define PXP_BAR0_SDM_LENGTH 0x40000 | 527 | #define PXP_BAR0_SDM_LENGTH 0x40000 |
| 529 | #define PXP_BAR0_SDM_RESERVED_LENGTH 0x40000 | 528 | #define PXP_BAR0_SDM_RESERVED_LENGTH 0x40000 |
| 530 | #define PXP_BAR0_END_TSDM (PXP_BAR0_START_TSDM + \ | 529 | #define PXP_BAR0_END_TSDM (PXP_BAR0_START_TSDM + \ |
| 531 | PXP_BAR0_SDM_LENGTH - 1) | 530 | PXP_BAR0_SDM_LENGTH - 1) |
| 532 | 531 | ||
| 533 | #define PXP_BAR0_START_MSDM 0x1D00000 | 532 | #define PXP_BAR0_START_MSDM 0x1D00000 |
| 534 | #define PXP_BAR0_END_MSDM (PXP_BAR0_START_MSDM + \ | 533 | #define PXP_BAR0_END_MSDM (PXP_BAR0_START_MSDM + \ |
| 535 | PXP_BAR0_SDM_LENGTH - 1) | 534 | PXP_BAR0_SDM_LENGTH - 1) |
| 536 | 535 | ||
| 537 | #define PXP_BAR0_START_USDM 0x1D80000 | 536 | #define PXP_BAR0_START_USDM 0x1D80000 |
| 538 | #define PXP_BAR0_END_USDM (PXP_BAR0_START_USDM + \ | 537 | #define PXP_BAR0_END_USDM (PXP_BAR0_START_USDM + \ |
| 539 | PXP_BAR0_SDM_LENGTH - 1) | 538 | PXP_BAR0_SDM_LENGTH - 1) |
| 540 | 539 | ||
| 541 | #define PXP_BAR0_START_XSDM 0x1E00000 | 540 | #define PXP_BAR0_START_XSDM 0x1E00000 |
| 542 | #define PXP_BAR0_END_XSDM (PXP_BAR0_START_XSDM + \ | 541 | #define PXP_BAR0_END_XSDM (PXP_BAR0_START_XSDM + \ |
| 543 | PXP_BAR0_SDM_LENGTH - 1) | 542 | PXP_BAR0_SDM_LENGTH - 1) |
| 544 | 543 | ||
| 545 | #define PXP_BAR0_START_YSDM 0x1E80000 | 544 | #define PXP_BAR0_START_YSDM 0x1E80000 |
| 546 | #define PXP_BAR0_END_YSDM (PXP_BAR0_START_YSDM + \ | 545 | #define PXP_BAR0_END_YSDM (PXP_BAR0_START_YSDM + \ |
| 547 | PXP_BAR0_SDM_LENGTH - 1) | 546 | PXP_BAR0_SDM_LENGTH - 1) |
| 548 | 547 | ||
| 549 | #define PXP_BAR0_START_PSDM 0x1F00000 | 548 | #define PXP_BAR0_START_PSDM 0x1F00000 |
| 550 | #define PXP_BAR0_END_PSDM (PXP_BAR0_START_PSDM + \ | 549 | #define PXP_BAR0_END_PSDM (PXP_BAR0_START_PSDM + \ |
| 551 | PXP_BAR0_SDM_LENGTH - 1) | 550 | PXP_BAR0_SDM_LENGTH - 1) |
| 552 | 551 | ||
| 553 | #define PXP_BAR0_FIRST_INVALID_ADDRESS (PXP_BAR0_END_PSDM + 1) | 552 | #define PXP_BAR0_FIRST_INVALID_ADDRESS (PXP_BAR0_END_PSDM + 1) |
| 554 | 553 | ||
| 555 | /* VF BAR */ | 554 | /* VF BAR */ |
| 556 | #define PXP_VF_BAR0 0 | 555 | #define PXP_VF_BAR0 0 |
| 557 | 556 | ||
| 558 | #define PXP_VF_BAR0_START_GRC 0x3E00 | 557 | #define PXP_VF_BAR0_START_IGU 0 |
| 559 | #define PXP_VF_BAR0_GRC_LENGTH 0x200 | 558 | #define PXP_VF_BAR0_IGU_LENGTH 0x3000 |
| 560 | #define PXP_VF_BAR0_END_GRC (PXP_VF_BAR0_START_GRC + \ | 559 | #define PXP_VF_BAR0_END_IGU (PXP_VF_BAR0_START_IGU + \ |
| 561 | PXP_VF_BAR0_GRC_LENGTH - 1) | 560 | PXP_VF_BAR0_IGU_LENGTH - 1) |
| 562 | 561 | ||
| 563 | #define PXP_VF_BAR0_START_IGU 0 | 562 | #define PXP_VF_BAR0_START_DQ 0x3000 |
| 564 | #define PXP_VF_BAR0_IGU_LENGTH 0x3000 | 563 | #define PXP_VF_BAR0_DQ_LENGTH 0x200 |
| 565 | #define PXP_VF_BAR0_END_IGU (PXP_VF_BAR0_START_IGU + \ | 564 | #define PXP_VF_BAR0_DQ_OPAQUE_OFFSET 0 |
| 566 | PXP_VF_BAR0_IGU_LENGTH - 1) | 565 | #define PXP_VF_BAR0_ME_OPAQUE_ADDRESS (PXP_VF_BAR0_START_DQ + \ |
| 567 | 566 | PXP_VF_BAR0_DQ_OPAQUE_OFFSET) | |
| 568 | #define PXP_VF_BAR0_START_DQ 0x3000 | 567 | #define PXP_VF_BAR0_ME_CONCRETE_ADDRESS (PXP_VF_BAR0_ME_OPAQUE_ADDRESS \ |
| 569 | #define PXP_VF_BAR0_DQ_LENGTH 0x200 | 568 | + 4) |
| 570 | #define PXP_VF_BAR0_DQ_OPAQUE_OFFSET 0 | 569 | #define PXP_VF_BAR0_END_DQ (PXP_VF_BAR0_START_DQ + \ |
| 571 | #define PXP_VF_BAR0_ME_OPAQUE_ADDRESS (PXP_VF_BAR0_START_DQ + \ | 570 | PXP_VF_BAR0_DQ_LENGTH - 1) |
| 572 | PXP_VF_BAR0_DQ_OPAQUE_OFFSET) | 571 | |
| 573 | #define PXP_VF_BAR0_ME_CONCRETE_ADDRESS (PXP_VF_BAR0_ME_OPAQUE_ADDRESS \ | 572 | #define PXP_VF_BAR0_START_TSDM_ZONE_B 0x3200 |
| 574 | + 4) | 573 | #define PXP_VF_BAR0_SDM_LENGTH_ZONE_B 0x200 |
| 575 | #define PXP_VF_BAR0_END_DQ (PXP_VF_BAR0_START_DQ + \ | 574 | #define PXP_VF_BAR0_END_TSDM_ZONE_B (PXP_VF_BAR0_START_TSDM_ZONE_B + \ |
| 576 | PXP_VF_BAR0_DQ_LENGTH - 1) | 575 | PXP_VF_BAR0_SDM_LENGTH_ZONE_B - 1) |
| 577 | 576 | ||
| 578 | #define PXP_VF_BAR0_START_TSDM_ZONE_B 0x3200 | 577 | #define PXP_VF_BAR0_START_MSDM_ZONE_B 0x3400 |
| 579 | #define PXP_VF_BAR0_SDM_LENGTH_ZONE_B 0x200 | 578 | #define PXP_VF_BAR0_END_MSDM_ZONE_B (PXP_VF_BAR0_START_MSDM_ZONE_B + \ |
| 580 | #define PXP_VF_BAR0_END_TSDM_ZONE_B (PXP_VF_BAR0_START_TSDM_ZONE_B \ | 579 | PXP_VF_BAR0_SDM_LENGTH_ZONE_B - 1) |
| 581 | + \ | 580 | |
| 582 | PXP_VF_BAR0_SDM_LENGTH_ZONE_B \ | 581 | #define PXP_VF_BAR0_START_USDM_ZONE_B 0x3600 |
| 583 | - 1) | 582 | #define PXP_VF_BAR0_END_USDM_ZONE_B (PXP_VF_BAR0_START_USDM_ZONE_B + \ |
| 584 | 583 | PXP_VF_BAR0_SDM_LENGTH_ZONE_B - 1) | |
| 585 | #define PXP_VF_BAR0_START_MSDM_ZONE_B 0x3400 | 584 | |
| 586 | #define PXP_VF_BAR0_END_MSDM_ZONE_B (PXP_VF_BAR0_START_MSDM_ZONE_B \ | 585 | #define PXP_VF_BAR0_START_XSDM_ZONE_B 0x3800 |
| 587 | + \ | 586 | #define PXP_VF_BAR0_END_XSDM_ZONE_B (PXP_VF_BAR0_START_XSDM_ZONE_B + \ |
| 588 | PXP_VF_BAR0_SDM_LENGTH_ZONE_B \ | 587 | PXP_VF_BAR0_SDM_LENGTH_ZONE_B - 1) |
| 589 | - 1) | 588 | |
| 590 | 589 | #define PXP_VF_BAR0_START_YSDM_ZONE_B 0x3a00 | |
| 591 | #define PXP_VF_BAR0_START_USDM_ZONE_B 0x3600 | 590 | #define PXP_VF_BAR0_END_YSDM_ZONE_B (PXP_VF_BAR0_START_YSDM_ZONE_B + \ |
| 592 | #define PXP_VF_BAR0_END_USDM_ZONE_B (PXP_VF_BAR0_START_USDM_ZONE_B \ | 591 | PXP_VF_BAR0_SDM_LENGTH_ZONE_B - 1) |
| 593 | + \ | 592 | |
| 594 | PXP_VF_BAR0_SDM_LENGTH_ZONE_B \ | 593 | #define PXP_VF_BAR0_START_PSDM_ZONE_B 0x3c00 |
| 595 | - 1) | 594 | #define PXP_VF_BAR0_END_PSDM_ZONE_B (PXP_VF_BAR0_START_PSDM_ZONE_B + \ |
| 596 | 595 | PXP_VF_BAR0_SDM_LENGTH_ZONE_B - 1) | |
| 597 | #define PXP_VF_BAR0_START_XSDM_ZONE_B 0x3800 | 596 | |
| 598 | #define PXP_VF_BAR0_END_XSDM_ZONE_B (PXP_VF_BAR0_START_XSDM_ZONE_B \ | 597 | #define PXP_VF_BAR0_START_GRC 0x3E00 |
| 599 | + \ | 598 | #define PXP_VF_BAR0_GRC_LENGTH 0x200 |
| 600 | PXP_VF_BAR0_SDM_LENGTH_ZONE_B \ | 599 | #define PXP_VF_BAR0_END_GRC (PXP_VF_BAR0_START_GRC + \ |
| 601 | - 1) | 600 | PXP_VF_BAR0_GRC_LENGTH - 1) |
| 602 | 601 | ||
| 603 | #define PXP_VF_BAR0_START_YSDM_ZONE_B 0x3a00 | 602 | #define PXP_VF_BAR0_START_SDM_ZONE_A 0x4000 |
| 604 | #define PXP_VF_BAR0_END_YSDM_ZONE_B (PXP_VF_BAR0_START_YSDM_ZONE_B \ | 603 | #define PXP_VF_BAR0_END_SDM_ZONE_A 0x10000 |
| 605 | + \ | 604 | |
| 606 | PXP_VF_BAR0_SDM_LENGTH_ZONE_B \ | 605 | #define PXP_VF_BAR0_GRC_WINDOW_LENGTH 32 |
| 607 | - 1) | 606 | |
| 608 | 607 | #define PXP_ILT_PAGE_SIZE_NUM_BITS_MIN 12 | |
| 609 | #define PXP_VF_BAR0_START_PSDM_ZONE_B 0x3c00 | 608 | #define PXP_ILT_BLOCK_FACTOR_MULTIPLIER 1024 |
| 610 | #define PXP_VF_BAR0_END_PSDM_ZONE_B (PXP_VF_BAR0_START_PSDM_ZONE_B \ | ||
| 611 | + \ | ||
| 612 | PXP_VF_BAR0_SDM_LENGTH_ZONE_B \ | ||
| 613 | - 1) | ||
| 614 | |||
| 615 | #define PXP_VF_BAR0_START_SDM_ZONE_A 0x4000 | ||
| 616 | #define PXP_VF_BAR0_END_SDM_ZONE_A 0x10000 | ||
| 617 | |||
| 618 | #define PXP_VF_BAR0_GRC_WINDOW_LENGTH 32 | ||
| 619 | |||
| 620 | #define PXP_ILT_PAGE_SIZE_NUM_BITS_MIN 12 | ||
| 621 | #define PXP_ILT_BLOCK_FACTOR_MULTIPLIER 1024 | ||
| 622 | 609 | ||
| 623 | /* ILT Records */ | 610 | /* ILT Records */ |
| 624 | #define PXP_NUM_ILT_RECORDS_BB 7600 | 611 | #define PXP_NUM_ILT_RECORDS_BB 7600 |
| 625 | #define PXP_NUM_ILT_RECORDS_K2 11000 | 612 | #define PXP_NUM_ILT_RECORDS_K2 11000 |
| 626 | #define MAX_NUM_ILT_RECORDS MAX(PXP_NUM_ILT_RECORDS_BB, PXP_NUM_ILT_RECORDS_K2) | 613 | #define MAX_NUM_ILT_RECORDS MAX(PXP_NUM_ILT_RECORDS_BB, PXP_NUM_ILT_RECORDS_K2) |
| 627 | #define PXP_QUEUES_ZONE_MAX_NUM 320 | 614 | |
| 615 | /* Host Interface */ | ||
| 616 | #define PXP_QUEUES_ZONE_MAX_NUM 320 | ||
| 617 | |||
| 628 | /*****************/ | 618 | /*****************/ |
| 629 | /* PRM CONSTANTS */ | 619 | /* PRM CONSTANTS */ |
| 630 | /*****************/ | 620 | /*****************/ |
| 631 | #define PRM_DMA_PAD_BYTES_NUM 2 | 621 | #define PRM_DMA_PAD_BYTES_NUM 2 |
| 622 | |||
| 632 | /*****************/ | 623 | /*****************/ |
| 633 | /* SDMs CONSTANTS */ | 624 | /* SDMs CONSTANTS */ |
| 634 | /*****************/ | 625 | /*****************/ |
| 635 | 626 | ||
| 636 | #define SDM_OP_GEN_TRIG_NONE 0 | 627 | #define SDM_OP_GEN_TRIG_NONE 0 |
| 637 | #define SDM_OP_GEN_TRIG_WAKE_THREAD 1 | 628 | #define SDM_OP_GEN_TRIG_WAKE_THREAD 1 |
| 638 | #define SDM_OP_GEN_TRIG_AGG_INT 2 | 629 | #define SDM_OP_GEN_TRIG_AGG_INT 2 |
| 639 | #define SDM_OP_GEN_TRIG_LOADER 4 | 630 | #define SDM_OP_GEN_TRIG_LOADER 4 |
| 640 | #define SDM_OP_GEN_TRIG_INDICATE_ERROR 6 | 631 | #define SDM_OP_GEN_TRIG_INDICATE_ERROR 6 |
| 641 | #define SDM_OP_GEN_TRIG_INC_ORDER_CNT 9 | 632 | #define SDM_OP_GEN_TRIG_INC_ORDER_CNT 9 |
| 642 | 633 | ||
| @@ -644,26 +635,26 @@ | |||
| 644 | /* Completion types */ | 635 | /* Completion types */ |
| 645 | /********************/ | 636 | /********************/ |
| 646 | 637 | ||
| 647 | #define SDM_COMP_TYPE_NONE 0 | 638 | #define SDM_COMP_TYPE_NONE 0 |
| 648 | #define SDM_COMP_TYPE_WAKE_THREAD 1 | 639 | #define SDM_COMP_TYPE_WAKE_THREAD 1 |
| 649 | #define SDM_COMP_TYPE_AGG_INT 2 | 640 | #define SDM_COMP_TYPE_AGG_INT 2 |
| 650 | #define SDM_COMP_TYPE_CM 3 | 641 | #define SDM_COMP_TYPE_CM 3 |
| 651 | #define SDM_COMP_TYPE_LOADER 4 | 642 | #define SDM_COMP_TYPE_LOADER 4 |
| 652 | #define SDM_COMP_TYPE_PXP 5 | 643 | #define SDM_COMP_TYPE_PXP 5 |
| 653 | #define SDM_COMP_TYPE_INDICATE_ERROR 6 | 644 | #define SDM_COMP_TYPE_INDICATE_ERROR 6 |
| 654 | #define SDM_COMP_TYPE_RELEASE_THREAD 7 | 645 | #define SDM_COMP_TYPE_RELEASE_THREAD 7 |
| 655 | #define SDM_COMP_TYPE_RAM 8 | 646 | #define SDM_COMP_TYPE_RAM 8 |
| 656 | #define SDM_COMP_TYPE_INC_ORDER_CNT 9 | 647 | #define SDM_COMP_TYPE_INC_ORDER_CNT 9 |
| 657 | 648 | ||
| 658 | /*****************/ | 649 | /*****************/ |
| 659 | /* PBF Constants */ | 650 | /* PBF CONSTANTS */ |
| 660 | /*****************/ | 651 | /*****************/ |
| 661 | 652 | ||
| 662 | /* Number of PBF command queue lines. Each line is 32B. */ | 653 | /* Number of PBF command queue lines. Each line is 32B. */ |
| 663 | #define PBF_MAX_CMD_LINES 3328 | 654 | #define PBF_MAX_CMD_LINES 3328 |
| 664 | 655 | ||
| 665 | /* Number of BTB blocks. Each block is 256B. */ | 656 | /* Number of BTB blocks. Each block is 256B. */ |
| 666 | #define BTB_MAX_BLOCKS 1440 | 657 | #define BTB_MAX_BLOCKS 1440 |
| 667 | 658 | ||
| 668 | /*****************/ | 659 | /*****************/ |
| 669 | /* PRS CONSTANTS */ | 660 | /* PRS CONSTANTS */ |
| @@ -679,6 +670,7 @@ struct async_data { | |||
| 679 | u8 fw_debug_param; | 670 | u8 fw_debug_param; |
| 680 | }; | 671 | }; |
| 681 | 672 | ||
| 673 | /* Interrupt coalescing TimeSet */ | ||
| 682 | struct coalescing_timeset { | 674 | struct coalescing_timeset { |
| 683 | u8 value; | 675 | u8 value; |
| 684 | #define COALESCING_TIMESET_TIMESET_MASK 0x7F | 676 | #define COALESCING_TIMESET_TIMESET_MASK 0x7F |
| @@ -692,20 +684,12 @@ struct common_queue_zone { | |||
| 692 | __le16 reserved; | 684 | __le16 reserved; |
| 693 | }; | 685 | }; |
| 694 | 686 | ||
| 687 | /* ETH Rx producers data */ | ||
| 695 | struct eth_rx_prod_data { | 688 | struct eth_rx_prod_data { |
| 696 | __le16 bd_prod; | 689 | __le16 bd_prod; |
| 697 | __le16 cqe_prod; | 690 | __le16 cqe_prod; |
| 698 | }; | 691 | }; |
| 699 | 692 | ||
| 700 | struct regpair { | ||
| 701 | __le32 lo; | ||
| 702 | __le32 hi; | ||
| 703 | }; | ||
| 704 | |||
| 705 | struct vf_pf_channel_eqe_data { | ||
| 706 | struct regpair msg_addr; | ||
| 707 | }; | ||
| 708 | |||
| 709 | struct iscsi_eqe_data { | 693 | struct iscsi_eqe_data { |
| 710 | __le32 cid; | 694 | __le32 cid; |
| 711 | __le16 conn_id; | 695 | __le16 conn_id; |
| @@ -719,52 +703,6 @@ struct iscsi_eqe_data { | |||
| 719 | #define ISCSI_EQE_DATA_RESERVED0_SHIFT 7 | 703 | #define ISCSI_EQE_DATA_RESERVED0_SHIFT 7 |
| 720 | }; | 704 | }; |
| 721 | 705 | ||
| 722 | struct rdma_eqe_destroy_qp { | ||
| 723 | __le32 cid; | ||
| 724 | u8 reserved[4]; | ||
| 725 | }; | ||
| 726 | |||
| 727 | union rdma_eqe_data { | ||
| 728 | struct regpair async_handle; | ||
| 729 | struct rdma_eqe_destroy_qp rdma_destroy_qp_data; | ||
| 730 | }; | ||
| 731 | |||
| 732 | struct malicious_vf_eqe_data { | ||
| 733 | u8 vf_id; | ||
| 734 | u8 err_id; | ||
| 735 | __le16 reserved[3]; | ||
| 736 | }; | ||
| 737 | |||
| 738 | struct initial_cleanup_eqe_data { | ||
| 739 | u8 vf_id; | ||
| 740 | u8 reserved[7]; | ||
| 741 | }; | ||
| 742 | |||
| 743 | /* Event Data Union */ | ||
| 744 | union event_ring_data { | ||
| 745 | u8 bytes[8]; | ||
| 746 | struct vf_pf_channel_eqe_data vf_pf_channel; | ||
| 747 | struct iscsi_eqe_data iscsi_info; | ||
| 748 | union rdma_eqe_data rdma_data; | ||
| 749 | struct malicious_vf_eqe_data malicious_vf; | ||
| 750 | struct initial_cleanup_eqe_data vf_init_cleanup; | ||
| 751 | }; | ||
| 752 | |||
| 753 | /* Event Ring Entry */ | ||
| 754 | struct event_ring_entry { | ||
| 755 | u8 protocol_id; | ||
| 756 | u8 opcode; | ||
| 757 | __le16 reserved0; | ||
| 758 | __le16 echo; | ||
| 759 | u8 fw_return_code; | ||
| 760 | u8 flags; | ||
| 761 | #define EVENT_RING_ENTRY_ASYNC_MASK 0x1 | ||
| 762 | #define EVENT_RING_ENTRY_ASYNC_SHIFT 0 | ||
| 763 | #define EVENT_RING_ENTRY_RESERVED1_MASK 0x7F | ||
| 764 | #define EVENT_RING_ENTRY_RESERVED1_SHIFT 1 | ||
| 765 | union event_ring_data data; | ||
| 766 | }; | ||
| 767 | |||
| 768 | /* Multi function mode */ | 706 | /* Multi function mode */ |
| 769 | enum mf_mode { | 707 | enum mf_mode { |
| 770 | ERROR_MODE /* Unsupported mode */, | 708 | ERROR_MODE /* Unsupported mode */, |
| @@ -781,13 +719,31 @@ enum protocol_type { | |||
| 781 | PROTOCOLID_CORE, | 719 | PROTOCOLID_CORE, |
| 782 | PROTOCOLID_ETH, | 720 | PROTOCOLID_ETH, |
| 783 | PROTOCOLID_IWARP, | 721 | PROTOCOLID_IWARP, |
| 784 | PROTOCOLID_RESERVED5, | 722 | PROTOCOLID_RESERVED0, |
| 785 | PROTOCOLID_PREROCE, | 723 | PROTOCOLID_PREROCE, |
| 786 | PROTOCOLID_COMMON, | 724 | PROTOCOLID_COMMON, |
| 787 | PROTOCOLID_RESERVED6, | 725 | PROTOCOLID_RESERVED1, |
| 788 | MAX_PROTOCOL_TYPE | 726 | MAX_PROTOCOL_TYPE |
| 789 | }; | 727 | }; |
| 790 | 728 | ||
| 729 | struct regpair { | ||
| 730 | __le32 lo; | ||
| 731 | __le32 hi; | ||
| 732 | }; | ||
| 733 | |||
| 734 | /* RoCE Destroy Event Data */ | ||
| 735 | struct rdma_eqe_destroy_qp { | ||
| 736 | __le32 cid; | ||
| 737 | u8 reserved[4]; | ||
| 738 | }; | ||
| 739 | |||
| 740 | /* RDMA Event Data Union */ | ||
| 741 | union rdma_eqe_data { | ||
| 742 | struct regpair async_handle; | ||
| 743 | struct rdma_eqe_destroy_qp rdma_destroy_qp_data; | ||
| 744 | }; | ||
| 745 | |||
| 746 | /* Ustorm Queue Zone */ | ||
| 791 | struct ustorm_eth_queue_zone { | 747 | struct ustorm_eth_queue_zone { |
| 792 | struct coalescing_timeset int_coalescing_timeset; | 748 | struct coalescing_timeset int_coalescing_timeset; |
| 793 | u8 reserved[3]; | 749 | u8 reserved[3]; |
| @@ -798,62 +754,71 @@ struct ustorm_queue_zone { | |||
| 798 | struct common_queue_zone common; | 754 | struct common_queue_zone common; |
| 799 | }; | 755 | }; |
| 800 | 756 | ||
| 801 | /* status block structure */ | 757 | /* Status block structure */ |
| 802 | struct cau_pi_entry { | 758 | struct cau_pi_entry { |
| 803 | u32 prod; | 759 | u32 prod; |
| 804 | #define CAU_PI_ENTRY_PROD_VAL_MASK 0xFFFF | 760 | #define CAU_PI_ENTRY_PROD_VAL_MASK 0xFFFF |
| 805 | #define CAU_PI_ENTRY_PROD_VAL_SHIFT 0 | 761 | #define CAU_PI_ENTRY_PROD_VAL_SHIFT 0 |
| 806 | #define CAU_PI_ENTRY_PI_TIMESET_MASK 0x7F | 762 | #define CAU_PI_ENTRY_PI_TIMESET_MASK 0x7F |
| 807 | #define CAU_PI_ENTRY_PI_TIMESET_SHIFT 16 | 763 | #define CAU_PI_ENTRY_PI_TIMESET_SHIFT 16 |
| 808 | #define CAU_PI_ENTRY_FSM_SEL_MASK 0x1 | 764 | #define CAU_PI_ENTRY_FSM_SEL_MASK 0x1 |
| 809 | #define CAU_PI_ENTRY_FSM_SEL_SHIFT 23 | 765 | #define CAU_PI_ENTRY_FSM_SEL_SHIFT 23 |
| 810 | #define CAU_PI_ENTRY_RESERVED_MASK 0xFF | 766 | #define CAU_PI_ENTRY_RESERVED_MASK 0xFF |
| 811 | #define CAU_PI_ENTRY_RESERVED_SHIFT 24 | 767 | #define CAU_PI_ENTRY_RESERVED_SHIFT 24 |
| 812 | }; | 768 | }; |
| 813 | 769 | ||
| 814 | /* status block structure */ | 770 | /* Status block structure */ |
| 815 | struct cau_sb_entry { | 771 | struct cau_sb_entry { |
| 816 | u32 data; | 772 | u32 data; |
| 817 | #define CAU_SB_ENTRY_SB_PROD_MASK 0xFFFFFF | 773 | #define CAU_SB_ENTRY_SB_PROD_MASK 0xFFFFFF |
| 818 | #define CAU_SB_ENTRY_SB_PROD_SHIFT 0 | 774 | #define CAU_SB_ENTRY_SB_PROD_SHIFT 0 |
| 819 | #define CAU_SB_ENTRY_STATE0_MASK 0xF | 775 | #define CAU_SB_ENTRY_STATE0_MASK 0xF |
| 820 | #define CAU_SB_ENTRY_STATE0_SHIFT 24 | 776 | #define CAU_SB_ENTRY_STATE0_SHIFT 24 |
| 821 | #define CAU_SB_ENTRY_STATE1_MASK 0xF | 777 | #define CAU_SB_ENTRY_STATE1_MASK 0xF |
| 822 | #define CAU_SB_ENTRY_STATE1_SHIFT 28 | 778 | #define CAU_SB_ENTRY_STATE1_SHIFT 28 |
| 823 | u32 params; | 779 | u32 params; |
| 824 | #define CAU_SB_ENTRY_SB_TIMESET0_MASK 0x7F | 780 | #define CAU_SB_ENTRY_SB_TIMESET0_MASK 0x7F |
| 825 | #define CAU_SB_ENTRY_SB_TIMESET0_SHIFT 0 | 781 | #define CAU_SB_ENTRY_SB_TIMESET0_SHIFT 0 |
| 826 | #define CAU_SB_ENTRY_SB_TIMESET1_MASK 0x7F | 782 | #define CAU_SB_ENTRY_SB_TIMESET1_MASK 0x7F |
| 827 | #define CAU_SB_ENTRY_SB_TIMESET1_SHIFT 7 | 783 | #define CAU_SB_ENTRY_SB_TIMESET1_SHIFT 7 |
| 828 | #define CAU_SB_ENTRY_TIMER_RES0_MASK 0x3 | 784 | #define CAU_SB_ENTRY_TIMER_RES0_MASK 0x3 |
| 829 | #define CAU_SB_ENTRY_TIMER_RES0_SHIFT 14 | 785 | #define CAU_SB_ENTRY_TIMER_RES0_SHIFT 14 |
| 830 | #define CAU_SB_ENTRY_TIMER_RES1_MASK 0x3 | 786 | #define CAU_SB_ENTRY_TIMER_RES1_MASK 0x3 |
| 831 | #define CAU_SB_ENTRY_TIMER_RES1_SHIFT 16 | 787 | #define CAU_SB_ENTRY_TIMER_RES1_SHIFT 16 |
| 832 | #define CAU_SB_ENTRY_VF_NUMBER_MASK 0xFF | 788 | #define CAU_SB_ENTRY_VF_NUMBER_MASK 0xFF |
| 833 | #define CAU_SB_ENTRY_VF_NUMBER_SHIFT 18 | 789 | #define CAU_SB_ENTRY_VF_NUMBER_SHIFT 18 |
| 834 | #define CAU_SB_ENTRY_VF_VALID_MASK 0x1 | 790 | #define CAU_SB_ENTRY_VF_VALID_MASK 0x1 |
| 835 | #define CAU_SB_ENTRY_VF_VALID_SHIFT 26 | 791 | #define CAU_SB_ENTRY_VF_VALID_SHIFT 26 |
| 836 | #define CAU_SB_ENTRY_PF_NUMBER_MASK 0xF | 792 | #define CAU_SB_ENTRY_PF_NUMBER_MASK 0xF |
| 837 | #define CAU_SB_ENTRY_PF_NUMBER_SHIFT 27 | 793 | #define CAU_SB_ENTRY_PF_NUMBER_SHIFT 27 |
| 838 | #define CAU_SB_ENTRY_TPH_MASK 0x1 | 794 | #define CAU_SB_ENTRY_TPH_MASK 0x1 |
| 839 | #define CAU_SB_ENTRY_TPH_SHIFT 31 | 795 | #define CAU_SB_ENTRY_TPH_SHIFT 31 |
| 796 | }; | ||
| 797 | |||
| 798 | /* Igu cleanup bit values to distinguish between clean or producer consumer | ||
| 799 | * update. | ||
| 800 | */ | ||
| 801 | enum command_type_bit { | ||
| 802 | IGU_COMMAND_TYPE_NOP = 0, | ||
| 803 | IGU_COMMAND_TYPE_SET = 1, | ||
| 804 | MAX_COMMAND_TYPE_BIT | ||
| 840 | }; | 805 | }; |
| 841 | 806 | ||
| 842 | /* core doorbell data */ | 807 | /* Core doorbell data */ |
| 843 | struct core_db_data { | 808 | struct core_db_data { |
| 844 | u8 params; | 809 | u8 params; |
| 845 | #define CORE_DB_DATA_DEST_MASK 0x3 | 810 | #define CORE_DB_DATA_DEST_MASK 0x3 |
| 846 | #define CORE_DB_DATA_DEST_SHIFT 0 | 811 | #define CORE_DB_DATA_DEST_SHIFT 0 |
| 847 | #define CORE_DB_DATA_AGG_CMD_MASK 0x3 | 812 | #define CORE_DB_DATA_AGG_CMD_MASK 0x3 |
| 848 | #define CORE_DB_DATA_AGG_CMD_SHIFT 2 | 813 | #define CORE_DB_DATA_AGG_CMD_SHIFT 2 |
| 849 | #define CORE_DB_DATA_BYPASS_EN_MASK 0x1 | 814 | #define CORE_DB_DATA_BYPASS_EN_MASK 0x1 |
| 850 | #define CORE_DB_DATA_BYPASS_EN_SHIFT 4 | 815 | #define CORE_DB_DATA_BYPASS_EN_SHIFT 4 |
| 851 | #define CORE_DB_DATA_RESERVED_MASK 0x1 | 816 | #define CORE_DB_DATA_RESERVED_MASK 0x1 |
| 852 | #define CORE_DB_DATA_RESERVED_SHIFT 5 | 817 | #define CORE_DB_DATA_RESERVED_SHIFT 5 |
| 853 | #define CORE_DB_DATA_AGG_VAL_SEL_MASK 0x3 | 818 | #define CORE_DB_DATA_AGG_VAL_SEL_MASK 0x3 |
| 854 | #define CORE_DB_DATA_AGG_VAL_SEL_SHIFT 6 | 819 | #define CORE_DB_DATA_AGG_VAL_SEL_SHIFT 6 |
| 855 | u8 agg_flags; | 820 | u8 agg_flags; |
| 856 | __le16 spq_prod; | 821 | __le16 spq_prod; |
| 857 | }; | 822 | }; |
| 858 | 823 | ||
| 859 | /* Enum of doorbell aggregative command selection */ | 824 | /* Enum of doorbell aggregative command selection */ |
| @@ -909,67 +874,69 @@ struct db_l2_dpm_sge { | |||
| 909 | struct regpair addr; | 874 | struct regpair addr; |
| 910 | __le16 nbytes; | 875 | __le16 nbytes; |
| 911 | __le16 bitfields; | 876 | __le16 bitfields; |
| 912 | #define DB_L2_DPM_SGE_TPH_ST_INDEX_MASK 0x1FF | 877 | #define DB_L2_DPM_SGE_TPH_ST_INDEX_MASK 0x1FF |
| 913 | #define DB_L2_DPM_SGE_TPH_ST_INDEX_SHIFT 0 | 878 | #define DB_L2_DPM_SGE_TPH_ST_INDEX_SHIFT 0 |
| 914 | #define DB_L2_DPM_SGE_RESERVED0_MASK 0x3 | 879 | #define DB_L2_DPM_SGE_RESERVED0_MASK 0x3 |
| 915 | #define DB_L2_DPM_SGE_RESERVED0_SHIFT 9 | 880 | #define DB_L2_DPM_SGE_RESERVED0_SHIFT 9 |
| 916 | #define DB_L2_DPM_SGE_ST_VALID_MASK 0x1 | 881 | #define DB_L2_DPM_SGE_ST_VALID_MASK 0x1 |
| 917 | #define DB_L2_DPM_SGE_ST_VALID_SHIFT 11 | 882 | #define DB_L2_DPM_SGE_ST_VALID_SHIFT 11 |
| 918 | #define DB_L2_DPM_SGE_RESERVED1_MASK 0xF | 883 | #define DB_L2_DPM_SGE_RESERVED1_MASK 0xF |
| 919 | #define DB_L2_DPM_SGE_RESERVED1_SHIFT 12 | 884 | #define DB_L2_DPM_SGE_RESERVED1_SHIFT 12 |
| 920 | __le32 reserved2; | 885 | __le32 reserved2; |
| 921 | }; | 886 | }; |
| 922 | 887 | ||
| 923 | /* Structure for doorbell address, in legacy mode */ | 888 | /* Structure for doorbell address, in legacy mode */ |
| 924 | struct db_legacy_addr { | 889 | struct db_legacy_addr { |
| 925 | __le32 addr; | 890 | __le32 addr; |
| 926 | #define DB_LEGACY_ADDR_RESERVED0_MASK 0x3 | 891 | #define DB_LEGACY_ADDR_RESERVED0_MASK 0x3 |
| 927 | #define DB_LEGACY_ADDR_RESERVED0_SHIFT 0 | 892 | #define DB_LEGACY_ADDR_RESERVED0_SHIFT 0 |
| 928 | #define DB_LEGACY_ADDR_DEMS_MASK 0x7 | 893 | #define DB_LEGACY_ADDR_DEMS_MASK 0x7 |
| 929 | #define DB_LEGACY_ADDR_DEMS_SHIFT 2 | 894 | #define DB_LEGACY_ADDR_DEMS_SHIFT 2 |
| 930 | #define DB_LEGACY_ADDR_ICID_MASK 0x7FFFFFF | 895 | #define DB_LEGACY_ADDR_ICID_MASK 0x7FFFFFF |
| 931 | #define DB_LEGACY_ADDR_ICID_SHIFT 5 | 896 | #define DB_LEGACY_ADDR_ICID_SHIFT 5 |
| 932 | }; | 897 | }; |
| 933 | 898 | ||
| 934 | /* Structure for doorbell address, in PWM mode */ | 899 | /* Structure for doorbell address, in PWM mode */ |
| 935 | struct db_pwm_addr { | 900 | struct db_pwm_addr { |
| 936 | __le32 addr; | 901 | __le32 addr; |
| 937 | #define DB_PWM_ADDR_RESERVED0_MASK 0x7 | 902 | #define DB_PWM_ADDR_RESERVED0_MASK 0x7 |
| 938 | #define DB_PWM_ADDR_RESERVED0_SHIFT 0 | 903 | #define DB_PWM_ADDR_RESERVED0_SHIFT 0 |
| 939 | #define DB_PWM_ADDR_OFFSET_MASK 0x7F | 904 | #define DB_PWM_ADDR_OFFSET_MASK 0x7F |
| 940 | #define DB_PWM_ADDR_OFFSET_SHIFT 3 | 905 | #define DB_PWM_ADDR_OFFSET_SHIFT 3 |
| 941 | #define DB_PWM_ADDR_WID_MASK 0x3 | 906 | #define DB_PWM_ADDR_WID_MASK 0x3 |
| 942 | #define DB_PWM_ADDR_WID_SHIFT 10 | 907 | #define DB_PWM_ADDR_WID_SHIFT 10 |
| 943 | #define DB_PWM_ADDR_DPI_MASK 0xFFFF | 908 | #define DB_PWM_ADDR_DPI_MASK 0xFFFF |
| 944 | #define DB_PWM_ADDR_DPI_SHIFT 12 | 909 | #define DB_PWM_ADDR_DPI_SHIFT 12 |
| 945 | #define DB_PWM_ADDR_RESERVED1_MASK 0xF | 910 | #define DB_PWM_ADDR_RESERVED1_MASK 0xF |
| 946 | #define DB_PWM_ADDR_RESERVED1_SHIFT 28 | 911 | #define DB_PWM_ADDR_RESERVED1_SHIFT 28 |
| 947 | }; | 912 | }; |
| 948 | 913 | ||
| 949 | /* Parameters to RoCE firmware, passed in EDPM doorbell */ | 914 | /* Parameters to RDMA firmware, passed in EDPM doorbell */ |
| 950 | struct db_rdma_dpm_params { | 915 | struct db_rdma_dpm_params { |
| 951 | __le32 params; | 916 | __le32 params; |
| 952 | #define DB_RDMA_DPM_PARAMS_SIZE_MASK 0x3F | 917 | #define DB_RDMA_DPM_PARAMS_SIZE_MASK 0x3F |
| 953 | #define DB_RDMA_DPM_PARAMS_SIZE_SHIFT 0 | 918 | #define DB_RDMA_DPM_PARAMS_SIZE_SHIFT 0 |
| 954 | #define DB_RDMA_DPM_PARAMS_DPM_TYPE_MASK 0x3 | 919 | #define DB_RDMA_DPM_PARAMS_DPM_TYPE_MASK 0x3 |
| 955 | #define DB_RDMA_DPM_PARAMS_DPM_TYPE_SHIFT 6 | 920 | #define DB_RDMA_DPM_PARAMS_DPM_TYPE_SHIFT 6 |
| 956 | #define DB_RDMA_DPM_PARAMS_OPCODE_MASK 0xFF | 921 | #define DB_RDMA_DPM_PARAMS_OPCODE_MASK 0xFF |
| 957 | #define DB_RDMA_DPM_PARAMS_OPCODE_SHIFT 8 | 922 | #define DB_RDMA_DPM_PARAMS_OPCODE_SHIFT 8 |
| 958 | #define DB_RDMA_DPM_PARAMS_WQE_SIZE_MASK 0x7FF | 923 | #define DB_RDMA_DPM_PARAMS_WQE_SIZE_MASK 0x7FF |
| 959 | #define DB_RDMA_DPM_PARAMS_WQE_SIZE_SHIFT 16 | 924 | #define DB_RDMA_DPM_PARAMS_WQE_SIZE_SHIFT 16 |
| 960 | #define DB_RDMA_DPM_PARAMS_RESERVED0_MASK 0x1 | 925 | #define DB_RDMA_DPM_PARAMS_RESERVED0_MASK 0x1 |
| 961 | #define DB_RDMA_DPM_PARAMS_RESERVED0_SHIFT 27 | 926 | #define DB_RDMA_DPM_PARAMS_RESERVED0_SHIFT 27 |
| 962 | #define DB_RDMA_DPM_PARAMS_COMPLETION_FLG_MASK 0x1 | 927 | #define DB_RDMA_DPM_PARAMS_COMPLETION_FLG_MASK 0x1 |
| 963 | #define DB_RDMA_DPM_PARAMS_COMPLETION_FLG_SHIFT 28 | 928 | #define DB_RDMA_DPM_PARAMS_COMPLETION_FLG_SHIFT 28 |
| 964 | #define DB_RDMA_DPM_PARAMS_S_FLG_MASK 0x1 | 929 | #define DB_RDMA_DPM_PARAMS_S_FLG_MASK 0x1 |
| 965 | #define DB_RDMA_DPM_PARAMS_S_FLG_SHIFT 29 | 930 | #define DB_RDMA_DPM_PARAMS_S_FLG_SHIFT 29 |
| 966 | #define DB_RDMA_DPM_PARAMS_RESERVED1_MASK 0x1 | 931 | #define DB_RDMA_DPM_PARAMS_RESERVED1_MASK 0x1 |
| 967 | #define DB_RDMA_DPM_PARAMS_RESERVED1_SHIFT 30 | 932 | #define DB_RDMA_DPM_PARAMS_RESERVED1_SHIFT 30 |
| 968 | #define DB_RDMA_DPM_PARAMS_CONN_TYPE_IS_IWARP_MASK 0x1 | 933 | #define DB_RDMA_DPM_PARAMS_CONN_TYPE_IS_IWARP_MASK 0x1 |
| 969 | #define DB_RDMA_DPM_PARAMS_CONN_TYPE_IS_IWARP_SHIFT 31 | 934 | #define DB_RDMA_DPM_PARAMS_CONN_TYPE_IS_IWARP_SHIFT 31 |
| 970 | }; | 935 | }; |
| 971 | 936 | ||
| 972 | /* Structure for doorbell data, in ROCE DPM mode, for 1st db in a DPM burst */ | 937 | /* Structure for doorbell data, in RDMA DPM mode, for the first doorbell in a |
| 938 | * DPM burst. | ||
| 939 | */ | ||
| 973 | struct db_rdma_dpm_data { | 940 | struct db_rdma_dpm_data { |
| 974 | __le16 icid; | 941 | __le16 icid; |
| 975 | __le16 prod_val; | 942 | __le16 prod_val; |
| @@ -988,20 +955,20 @@ enum igu_int_cmd { | |||
| 988 | /* IGU producer or consumer update command */ | 955 | /* IGU producer or consumer update command */ |
| 989 | struct igu_prod_cons_update { | 956 | struct igu_prod_cons_update { |
| 990 | u32 sb_id_and_flags; | 957 | u32 sb_id_and_flags; |
| 991 | #define IGU_PROD_CONS_UPDATE_SB_INDEX_MASK 0xFFFFFF | 958 | #define IGU_PROD_CONS_UPDATE_SB_INDEX_MASK 0xFFFFFF |
| 992 | #define IGU_PROD_CONS_UPDATE_SB_INDEX_SHIFT 0 | 959 | #define IGU_PROD_CONS_UPDATE_SB_INDEX_SHIFT 0 |
| 993 | #define IGU_PROD_CONS_UPDATE_UPDATE_FLAG_MASK 0x1 | 960 | #define IGU_PROD_CONS_UPDATE_UPDATE_FLAG_MASK 0x1 |
| 994 | #define IGU_PROD_CONS_UPDATE_UPDATE_FLAG_SHIFT 24 | 961 | #define IGU_PROD_CONS_UPDATE_UPDATE_FLAG_SHIFT 24 |
| 995 | #define IGU_PROD_CONS_UPDATE_ENABLE_INT_MASK 0x3 | 962 | #define IGU_PROD_CONS_UPDATE_ENABLE_INT_MASK 0x3 |
| 996 | #define IGU_PROD_CONS_UPDATE_ENABLE_INT_SHIFT 25 | 963 | #define IGU_PROD_CONS_UPDATE_ENABLE_INT_SHIFT 25 |
| 997 | #define IGU_PROD_CONS_UPDATE_SEGMENT_ACCESS_MASK 0x1 | 964 | #define IGU_PROD_CONS_UPDATE_SEGMENT_ACCESS_MASK 0x1 |
| 998 | #define IGU_PROD_CONS_UPDATE_SEGMENT_ACCESS_SHIFT 27 | 965 | #define IGU_PROD_CONS_UPDATE_SEGMENT_ACCESS_SHIFT 27 |
| 999 | #define IGU_PROD_CONS_UPDATE_TIMER_MASK_MASK 0x1 | 966 | #define IGU_PROD_CONS_UPDATE_TIMER_MASK_MASK 0x1 |
| 1000 | #define IGU_PROD_CONS_UPDATE_TIMER_MASK_SHIFT 28 | 967 | #define IGU_PROD_CONS_UPDATE_TIMER_MASK_SHIFT 28 |
| 1001 | #define IGU_PROD_CONS_UPDATE_RESERVED0_MASK 0x3 | 968 | #define IGU_PROD_CONS_UPDATE_RESERVED0_MASK 0x3 |
| 1002 | #define IGU_PROD_CONS_UPDATE_RESERVED0_SHIFT 29 | 969 | #define IGU_PROD_CONS_UPDATE_RESERVED0_SHIFT 29 |
| 1003 | #define IGU_PROD_CONS_UPDATE_COMMAND_TYPE_MASK 0x1 | 970 | #define IGU_PROD_CONS_UPDATE_COMMAND_TYPE_MASK 0x1 |
| 1004 | #define IGU_PROD_CONS_UPDATE_COMMAND_TYPE_SHIFT 31 | 971 | #define IGU_PROD_CONS_UPDATE_COMMAND_TYPE_SHIFT 31 |
| 1005 | u32 reserved1; | 972 | u32 reserved1; |
| 1006 | }; | 973 | }; |
| 1007 | 974 | ||
| @@ -1014,36 +981,37 @@ enum igu_seg_access { | |||
| 1014 | 981 | ||
| 1015 | struct parsing_and_err_flags { | 982 | struct parsing_and_err_flags { |
| 1016 | __le16 flags; | 983 | __le16 flags; |
| 1017 | #define PARSING_AND_ERR_FLAGS_L3TYPE_MASK 0x3 | 984 | #define PARSING_AND_ERR_FLAGS_L3TYPE_MASK 0x3 |
| 1018 | #define PARSING_AND_ERR_FLAGS_L3TYPE_SHIFT 0 | 985 | #define PARSING_AND_ERR_FLAGS_L3TYPE_SHIFT 0 |
| 1019 | #define PARSING_AND_ERR_FLAGS_L4PROTOCOL_MASK 0x3 | 986 | #define PARSING_AND_ERR_FLAGS_L4PROTOCOL_MASK 0x3 |
| 1020 | #define PARSING_AND_ERR_FLAGS_L4PROTOCOL_SHIFT 2 | 987 | #define PARSING_AND_ERR_FLAGS_L4PROTOCOL_SHIFT 2 |
| 1021 | #define PARSING_AND_ERR_FLAGS_IPV4FRAG_MASK 0x1 | 988 | #define PARSING_AND_ERR_FLAGS_IPV4FRAG_MASK 0x1 |
| 1022 | #define PARSING_AND_ERR_FLAGS_IPV4FRAG_SHIFT 4 | 989 | #define PARSING_AND_ERR_FLAGS_IPV4FRAG_SHIFT 4 |
| 1023 | #define PARSING_AND_ERR_FLAGS_TAG8021QEXIST_MASK 0x1 | 990 | #define PARSING_AND_ERR_FLAGS_TAG8021QEXIST_MASK 0x1 |
| 1024 | #define PARSING_AND_ERR_FLAGS_TAG8021QEXIST_SHIFT 5 | 991 | #define PARSING_AND_ERR_FLAGS_TAG8021QEXIST_SHIFT 5 |
| 1025 | #define PARSING_AND_ERR_FLAGS_L4CHKSMWASCALCULATED_MASK 0x1 | 992 | #define PARSING_AND_ERR_FLAGS_L4CHKSMWASCALCULATED_MASK 0x1 |
| 1026 | #define PARSING_AND_ERR_FLAGS_L4CHKSMWASCALCULATED_SHIFT 6 | 993 | #define PARSING_AND_ERR_FLAGS_L4CHKSMWASCALCULATED_SHIFT 6 |
| 1027 | #define PARSING_AND_ERR_FLAGS_TIMESYNCPKT_MASK 0x1 | 994 | #define PARSING_AND_ERR_FLAGS_TIMESYNCPKT_MASK 0x1 |
| 1028 | #define PARSING_AND_ERR_FLAGS_TIMESYNCPKT_SHIFT 7 | 995 | #define PARSING_AND_ERR_FLAGS_TIMESYNCPKT_SHIFT 7 |
| 1029 | #define PARSING_AND_ERR_FLAGS_TIMESTAMPRECORDED_MASK 0x1 | 996 | #define PARSING_AND_ERR_FLAGS_TIMESTAMPRECORDED_MASK 0x1 |
| 1030 | #define PARSING_AND_ERR_FLAGS_TIMESTAMPRECORDED_SHIFT 8 | 997 | #define PARSING_AND_ERR_FLAGS_TIMESTAMPRECORDED_SHIFT 8 |
| 1031 | #define PARSING_AND_ERR_FLAGS_IPHDRERROR_MASK 0x1 | 998 | #define PARSING_AND_ERR_FLAGS_IPHDRERROR_MASK 0x1 |
| 1032 | #define PARSING_AND_ERR_FLAGS_IPHDRERROR_SHIFT 9 | 999 | #define PARSING_AND_ERR_FLAGS_IPHDRERROR_SHIFT 9 |
| 1033 | #define PARSING_AND_ERR_FLAGS_L4CHKSMERROR_MASK 0x1 | 1000 | #define PARSING_AND_ERR_FLAGS_L4CHKSMERROR_MASK 0x1 |
| 1034 | #define PARSING_AND_ERR_FLAGS_L4CHKSMERROR_SHIFT 10 | 1001 | #define PARSING_AND_ERR_FLAGS_L4CHKSMERROR_SHIFT 10 |
| 1035 | #define PARSING_AND_ERR_FLAGS_TUNNELEXIST_MASK 0x1 | 1002 | #define PARSING_AND_ERR_FLAGS_TUNNELEXIST_MASK 0x1 |
| 1036 | #define PARSING_AND_ERR_FLAGS_TUNNELEXIST_SHIFT 11 | 1003 | #define PARSING_AND_ERR_FLAGS_TUNNELEXIST_SHIFT 11 |
| 1037 | #define PARSING_AND_ERR_FLAGS_TUNNEL8021QTAGEXIST_MASK 0x1 | 1004 | #define PARSING_AND_ERR_FLAGS_TUNNEL8021QTAGEXIST_MASK 0x1 |
| 1038 | #define PARSING_AND_ERR_FLAGS_TUNNEL8021QTAGEXIST_SHIFT 12 | 1005 | #define PARSING_AND_ERR_FLAGS_TUNNEL8021QTAGEXIST_SHIFT 12 |
| 1039 | #define PARSING_AND_ERR_FLAGS_TUNNELIPHDRERROR_MASK 0x1 | 1006 | #define PARSING_AND_ERR_FLAGS_TUNNELIPHDRERROR_MASK 0x1 |
| 1040 | #define PARSING_AND_ERR_FLAGS_TUNNELIPHDRERROR_SHIFT 13 | 1007 | #define PARSING_AND_ERR_FLAGS_TUNNELIPHDRERROR_SHIFT 13 |
| 1041 | #define PARSING_AND_ERR_FLAGS_TUNNELL4CHKSMWASCALCULATED_MASK 0x1 | 1008 | #define PARSING_AND_ERR_FLAGS_TUNNELL4CHKSMWASCALCULATED_MASK 0x1 |
| 1042 | #define PARSING_AND_ERR_FLAGS_TUNNELL4CHKSMWASCALCULATED_SHIFT 14 | 1009 | #define PARSING_AND_ERR_FLAGS_TUNNELL4CHKSMWASCALCULATED_SHIFT 14 |
| 1043 | #define PARSING_AND_ERR_FLAGS_TUNNELL4CHKSMERROR_MASK 0x1 | 1010 | #define PARSING_AND_ERR_FLAGS_TUNNELL4CHKSMERROR_MASK 0x1 |
| 1044 | #define PARSING_AND_ERR_FLAGS_TUNNELL4CHKSMERROR_SHIFT 15 | 1011 | #define PARSING_AND_ERR_FLAGS_TUNNELL4CHKSMERROR_SHIFT 15 |
| 1045 | }; | 1012 | }; |
| 1046 | 1013 | ||
| 1014 | /* Parsing error flags bitmap */ | ||
| 1047 | struct parsing_err_flags { | 1015 | struct parsing_err_flags { |
| 1048 | __le16 flags; | 1016 | __le16 flags; |
| 1049 | #define PARSING_ERR_FLAGS_MAC_ERROR_MASK 0x1 | 1017 | #define PARSING_ERR_FLAGS_MAC_ERROR_MASK 0x1 |
| @@ -1080,168 +1048,160 @@ struct parsing_err_flags { | |||
| 1080 | #define PARSING_ERR_FLAGS_TUNNEL_L4_CHKSM_ERROR_SHIFT 15 | 1048 | #define PARSING_ERR_FLAGS_TUNNEL_L4_CHKSM_ERROR_SHIFT 15 |
| 1081 | }; | 1049 | }; |
| 1082 | 1050 | ||
| 1051 | /* Pb context */ | ||
| 1083 | struct pb_context { | 1052 | struct pb_context { |
| 1084 | __le32 crc[4]; | 1053 | __le32 crc[4]; |
| 1085 | }; | 1054 | }; |
| 1086 | 1055 | ||
| 1056 | /* Concrete Function ID */ | ||
| 1087 | struct pxp_concrete_fid { | 1057 | struct pxp_concrete_fid { |
| 1088 | __le16 fid; | 1058 | __le16 fid; |
| 1089 | #define PXP_CONCRETE_FID_PFID_MASK 0xF | 1059 | #define PXP_CONCRETE_FID_PFID_MASK 0xF |
| 1090 | #define PXP_CONCRETE_FID_PFID_SHIFT 0 | 1060 | #define PXP_CONCRETE_FID_PFID_SHIFT 0 |
| 1091 | #define PXP_CONCRETE_FID_PORT_MASK 0x3 | 1061 | #define PXP_CONCRETE_FID_PORT_MASK 0x3 |
| 1092 | #define PXP_CONCRETE_FID_PORT_SHIFT 4 | 1062 | #define PXP_CONCRETE_FID_PORT_SHIFT 4 |
| 1093 | #define PXP_CONCRETE_FID_PATH_MASK 0x1 | 1063 | #define PXP_CONCRETE_FID_PATH_MASK 0x1 |
| 1094 | #define PXP_CONCRETE_FID_PATH_SHIFT 6 | 1064 | #define PXP_CONCRETE_FID_PATH_SHIFT 6 |
| 1095 | #define PXP_CONCRETE_FID_VFVALID_MASK 0x1 | 1065 | #define PXP_CONCRETE_FID_VFVALID_MASK 0x1 |
| 1096 | #define PXP_CONCRETE_FID_VFVALID_SHIFT 7 | 1066 | #define PXP_CONCRETE_FID_VFVALID_SHIFT 7 |
| 1097 | #define PXP_CONCRETE_FID_VFID_MASK 0xFF | 1067 | #define PXP_CONCRETE_FID_VFID_MASK 0xFF |
| 1098 | #define PXP_CONCRETE_FID_VFID_SHIFT 8 | 1068 | #define PXP_CONCRETE_FID_VFID_SHIFT 8 |
| 1099 | }; | 1069 | }; |
| 1100 | 1070 | ||
| 1071 | /* Concrete Function ID */ | ||
| 1101 | struct pxp_pretend_concrete_fid { | 1072 | struct pxp_pretend_concrete_fid { |
| 1102 | __le16 fid; | 1073 | __le16 fid; |
| 1103 | #define PXP_PRETEND_CONCRETE_FID_PFID_MASK 0xF | 1074 | #define PXP_PRETEND_CONCRETE_FID_PFID_MASK 0xF |
| 1104 | #define PXP_PRETEND_CONCRETE_FID_PFID_SHIFT 0 | 1075 | #define PXP_PRETEND_CONCRETE_FID_PFID_SHIFT 0 |
| 1105 | #define PXP_PRETEND_CONCRETE_FID_RESERVED_MASK 0x7 | 1076 | #define PXP_PRETEND_CONCRETE_FID_RESERVED_MASK 0x7 |
| 1106 | #define PXP_PRETEND_CONCRETE_FID_RESERVED_SHIFT 4 | 1077 | #define PXP_PRETEND_CONCRETE_FID_RESERVED_SHIFT 4 |
| 1107 | #define PXP_PRETEND_CONCRETE_FID_VFVALID_MASK 0x1 | 1078 | #define PXP_PRETEND_CONCRETE_FID_VFVALID_MASK 0x1 |
| 1108 | #define PXP_PRETEND_CONCRETE_FID_VFVALID_SHIFT 7 | 1079 | #define PXP_PRETEND_CONCRETE_FID_VFVALID_SHIFT 7 |
| 1109 | #define PXP_PRETEND_CONCRETE_FID_VFID_MASK 0xFF | 1080 | #define PXP_PRETEND_CONCRETE_FID_VFID_MASK 0xFF |
| 1110 | #define PXP_PRETEND_CONCRETE_FID_VFID_SHIFT 8 | 1081 | #define PXP_PRETEND_CONCRETE_FID_VFID_SHIFT 8 |
| 1111 | }; | 1082 | }; |
| 1112 | 1083 | ||
| 1084 | /* Function ID */ | ||
| 1113 | union pxp_pretend_fid { | 1085 | union pxp_pretend_fid { |
| 1114 | struct pxp_pretend_concrete_fid concrete_fid; | 1086 | struct pxp_pretend_concrete_fid concrete_fid; |
| 1115 | __le16 opaque_fid; | 1087 | __le16 opaque_fid; |
| 1116 | }; | 1088 | }; |
| 1117 | 1089 | ||
| 1118 | /* Pxp Pretend Command Register. */ | 1090 | /* Pxp Pretend Command Register */ |
| 1119 | struct pxp_pretend_cmd { | 1091 | struct pxp_pretend_cmd { |
| 1120 | union pxp_pretend_fid fid; | 1092 | union pxp_pretend_fid fid; |
| 1121 | __le16 control; | 1093 | __le16 control; |
| 1122 | #define PXP_PRETEND_CMD_PATH_MASK 0x1 | 1094 | #define PXP_PRETEND_CMD_PATH_MASK 0x1 |
| 1123 | #define PXP_PRETEND_CMD_PATH_SHIFT 0 | 1095 | #define PXP_PRETEND_CMD_PATH_SHIFT 0 |
| 1124 | #define PXP_PRETEND_CMD_USE_PORT_MASK 0x1 | 1096 | #define PXP_PRETEND_CMD_USE_PORT_MASK 0x1 |
| 1125 | #define PXP_PRETEND_CMD_USE_PORT_SHIFT 1 | 1097 | #define PXP_PRETEND_CMD_USE_PORT_SHIFT 1 |
| 1126 | #define PXP_PRETEND_CMD_PORT_MASK 0x3 | 1098 | #define PXP_PRETEND_CMD_PORT_MASK 0x3 |
| 1127 | #define PXP_PRETEND_CMD_PORT_SHIFT 2 | 1099 | #define PXP_PRETEND_CMD_PORT_SHIFT 2 |
| 1128 | #define PXP_PRETEND_CMD_RESERVED0_MASK 0xF | 1100 | #define PXP_PRETEND_CMD_RESERVED0_MASK 0xF |
| 1129 | #define PXP_PRETEND_CMD_RESERVED0_SHIFT 4 | 1101 | #define PXP_PRETEND_CMD_RESERVED0_SHIFT 4 |
| 1130 | #define PXP_PRETEND_CMD_RESERVED1_MASK 0xF | 1102 | #define PXP_PRETEND_CMD_RESERVED1_MASK 0xF |
| 1131 | #define PXP_PRETEND_CMD_RESERVED1_SHIFT 8 | 1103 | #define PXP_PRETEND_CMD_RESERVED1_SHIFT 8 |
| 1132 | #define PXP_PRETEND_CMD_PRETEND_PATH_MASK 0x1 | 1104 | #define PXP_PRETEND_CMD_PRETEND_PATH_MASK 0x1 |
| 1133 | #define PXP_PRETEND_CMD_PRETEND_PATH_SHIFT 12 | 1105 | #define PXP_PRETEND_CMD_PRETEND_PATH_SHIFT 12 |
| 1134 | #define PXP_PRETEND_CMD_PRETEND_PORT_MASK 0x1 | 1106 | #define PXP_PRETEND_CMD_PRETEND_PORT_MASK 0x1 |
| 1135 | #define PXP_PRETEND_CMD_PRETEND_PORT_SHIFT 13 | 1107 | #define PXP_PRETEND_CMD_PRETEND_PORT_SHIFT 13 |
| 1136 | #define PXP_PRETEND_CMD_PRETEND_FUNCTION_MASK 0x1 | 1108 | #define PXP_PRETEND_CMD_PRETEND_FUNCTION_MASK 0x1 |
| 1137 | #define PXP_PRETEND_CMD_PRETEND_FUNCTION_SHIFT 14 | 1109 | #define PXP_PRETEND_CMD_PRETEND_FUNCTION_SHIFT 14 |
| 1138 | #define PXP_PRETEND_CMD_IS_CONCRETE_MASK 0x1 | 1110 | #define PXP_PRETEND_CMD_IS_CONCRETE_MASK 0x1 |
| 1139 | #define PXP_PRETEND_CMD_IS_CONCRETE_SHIFT 15 | 1111 | #define PXP_PRETEND_CMD_IS_CONCRETE_SHIFT 15 |
| 1140 | }; | 1112 | }; |
| 1141 | 1113 | ||
| 1142 | /* PTT Record in PXP Admin Window. */ | 1114 | /* PTT Record in PXP Admin Window */ |
| 1143 | struct pxp_ptt_entry { | 1115 | struct pxp_ptt_entry { |
| 1144 | __le32 offset; | 1116 | __le32 offset; |
| 1145 | #define PXP_PTT_ENTRY_OFFSET_MASK 0x7FFFFF | 1117 | #define PXP_PTT_ENTRY_OFFSET_MASK 0x7FFFFF |
| 1146 | #define PXP_PTT_ENTRY_OFFSET_SHIFT 0 | 1118 | #define PXP_PTT_ENTRY_OFFSET_SHIFT 0 |
| 1147 | #define PXP_PTT_ENTRY_RESERVED0_MASK 0x1FF | 1119 | #define PXP_PTT_ENTRY_RESERVED0_MASK 0x1FF |
| 1148 | #define PXP_PTT_ENTRY_RESERVED0_SHIFT 23 | 1120 | #define PXP_PTT_ENTRY_RESERVED0_SHIFT 23 |
| 1149 | struct pxp_pretend_cmd pretend; | 1121 | struct pxp_pretend_cmd pretend; |
| 1150 | }; | 1122 | }; |
| 1151 | 1123 | ||
| 1152 | /* VF Zone A Permission Register. */ | 1124 | /* VF Zone A Permission Register */ |
| 1153 | struct pxp_vf_zone_a_permission { | 1125 | struct pxp_vf_zone_a_permission { |
| 1154 | __le32 control; | 1126 | __le32 control; |
| 1155 | #define PXP_VF_ZONE_A_PERMISSION_VFID_MASK 0xFF | 1127 | #define PXP_VF_ZONE_A_PERMISSION_VFID_MASK 0xFF |
| 1156 | #define PXP_VF_ZONE_A_PERMISSION_VFID_SHIFT 0 | 1128 | #define PXP_VF_ZONE_A_PERMISSION_VFID_SHIFT 0 |
| 1157 | #define PXP_VF_ZONE_A_PERMISSION_VALID_MASK 0x1 | 1129 | #define PXP_VF_ZONE_A_PERMISSION_VALID_MASK 0x1 |
| 1158 | #define PXP_VF_ZONE_A_PERMISSION_VALID_SHIFT 8 | 1130 | #define PXP_VF_ZONE_A_PERMISSION_VALID_SHIFT 8 |
| 1159 | #define PXP_VF_ZONE_A_PERMISSION_RESERVED0_MASK 0x7F | 1131 | #define PXP_VF_ZONE_A_PERMISSION_RESERVED0_MASK 0x7F |
| 1160 | #define PXP_VF_ZONE_A_PERMISSION_RESERVED0_SHIFT 9 | 1132 | #define PXP_VF_ZONE_A_PERMISSION_RESERVED0_SHIFT 9 |
| 1161 | #define PXP_VF_ZONE_A_PERMISSION_RESERVED1_MASK 0xFFFF | 1133 | #define PXP_VF_ZONE_A_PERMISSION_RESERVED1_MASK 0xFFFF |
| 1162 | #define PXP_VF_ZONE_A_PERMISSION_RESERVED1_SHIFT 16 | 1134 | #define PXP_VF_ZONE_A_PERMISSION_RESERVED1_SHIFT 16 |
| 1163 | }; | 1135 | }; |
| 1164 | 1136 | ||
| 1165 | /* RSS hash type */ | 1137 | /* Rdif context */ |
| 1166 | struct rdif_task_context { | 1138 | struct rdif_task_context { |
| 1167 | __le32 initial_ref_tag; | 1139 | __le32 initial_ref_tag; |
| 1168 | __le16 app_tag_value; | 1140 | __le16 app_tag_value; |
| 1169 | __le16 app_tag_mask; | 1141 | __le16 app_tag_mask; |
| 1170 | u8 flags0; | 1142 | u8 flags0; |
| 1171 | #define RDIF_TASK_CONTEXT_IGNOREAPPTAG_MASK 0x1 | 1143 | #define RDIF_TASK_CONTEXT_IGNORE_APP_TAG_MASK 0x1 |
| 1172 | #define RDIF_TASK_CONTEXT_IGNOREAPPTAG_SHIFT 0 | 1144 | #define RDIF_TASK_CONTEXT_IGNORE_APP_TAG_SHIFT 0 |
| 1173 | #define RDIF_TASK_CONTEXT_INITIALREFTAGVALID_MASK 0x1 | 1145 | #define RDIF_TASK_CONTEXT_INITIAL_REF_TAG_VALID_MASK 0x1 |
| 1174 | #define RDIF_TASK_CONTEXT_INITIALREFTAGVALID_SHIFT 1 | 1146 | #define RDIF_TASK_CONTEXT_INITIAL_REF_TAG_VALID_SHIFT 1 |
| 1175 | #define RDIF_TASK_CONTEXT_HOSTGUARDTYPE_MASK 0x1 | 1147 | #define RDIF_TASK_CONTEXT_HOST_GUARD_TYPE_MASK 0x1 |
| 1176 | #define RDIF_TASK_CONTEXT_HOSTGUARDTYPE_SHIFT 2 | 1148 | #define RDIF_TASK_CONTEXT_HOST_GUARD_TYPE_SHIFT 2 |
| 1177 | #define RDIF_TASK_CONTEXT_SETERRORWITHEOP_MASK 0x1 | 1149 | #define RDIF_TASK_CONTEXT_SET_ERROR_WITH_EOP_MASK 0x1 |
| 1178 | #define RDIF_TASK_CONTEXT_SETERRORWITHEOP_SHIFT 3 | 1150 | #define RDIF_TASK_CONTEXT_SET_ERROR_WITH_EOP_SHIFT 3 |
| 1179 | #define RDIF_TASK_CONTEXT_PROTECTIONTYPE_MASK 0x3 | 1151 | #define RDIF_TASK_CONTEXT_PROTECTION_TYPE_MASK 0x3 |
| 1180 | #define RDIF_TASK_CONTEXT_PROTECTIONTYPE_SHIFT 4 | 1152 | #define RDIF_TASK_CONTEXT_PROTECTION_TYPE_SHIFT 4 |
| 1181 | #define RDIF_TASK_CONTEXT_CRC_SEED_MASK 0x1 | 1153 | #define RDIF_TASK_CONTEXT_CRC_SEED_MASK 0x1 |
| 1182 | #define RDIF_TASK_CONTEXT_CRC_SEED_SHIFT 6 | 1154 | #define RDIF_TASK_CONTEXT_CRC_SEED_SHIFT 6 |
| 1183 | #define RDIF_TASK_CONTEXT_KEEPREFTAGCONST_MASK 0x1 | 1155 | #define RDIF_TASK_CONTEXT_KEEP_REF_TAG_CONST_MASK 0x1 |
| 1184 | #define RDIF_TASK_CONTEXT_KEEPREFTAGCONST_SHIFT 7 | 1156 | #define RDIF_TASK_CONTEXT_KEEP_REF_TAG_CONST_SHIFT 7 |
| 1185 | u8 partial_dif_data[7]; | 1157 | u8 partial_dif_data[7]; |
| 1186 | __le16 partial_crc_value; | 1158 | __le16 partial_crc_value; |
| 1187 | __le16 partial_checksum_value; | 1159 | __le16 partial_checksum_value; |
| 1188 | __le32 offset_in_io; | 1160 | __le32 offset_in_io; |
| 1189 | __le16 flags1; | 1161 | __le16 flags1; |
| 1190 | #define RDIF_TASK_CONTEXT_VALIDATEGUARD_MASK 0x1 | 1162 | #define RDIF_TASK_CONTEXT_VALIDATE_GUARD_MASK 0x1 |
| 1191 | #define RDIF_TASK_CONTEXT_VALIDATEGUARD_SHIFT 0 | 1163 | #define RDIF_TASK_CONTEXT_VALIDATE_GUARD_SHIFT 0 |
| 1192 | #define RDIF_TASK_CONTEXT_VALIDATEAPPTAG_MASK 0x1 | 1164 | #define RDIF_TASK_CONTEXT_VALIDATE_APP_TAG_MASK 0x1 |
| 1193 | #define RDIF_TASK_CONTEXT_VALIDATEAPPTAG_SHIFT 1 | 1165 | #define RDIF_TASK_CONTEXT_VALIDATE_APP_TAG_SHIFT 1 |
| 1194 | #define RDIF_TASK_CONTEXT_VALIDATEREFTAG_MASK 0x1 | 1166 | #define RDIF_TASK_CONTEXT_VALIDATE_REF_TAG_MASK 0x1 |
| 1195 | #define RDIF_TASK_CONTEXT_VALIDATEREFTAG_SHIFT 2 | 1167 | #define RDIF_TASK_CONTEXT_VALIDATE_REF_TAG_SHIFT 2 |
| 1196 | #define RDIF_TASK_CONTEXT_FORWARDGUARD_MASK 0x1 | 1168 | #define RDIF_TASK_CONTEXT_FORWARD_GUARD_MASK 0x1 |
| 1197 | #define RDIF_TASK_CONTEXT_FORWARDGUARD_SHIFT 3 | 1169 | #define RDIF_TASK_CONTEXT_FORWARD_GUARD_SHIFT 3 |
| 1198 | #define RDIF_TASK_CONTEXT_FORWARDAPPTAG_MASK 0x1 | 1170 | #define RDIF_TASK_CONTEXT_FORWARD_APP_TAG_MASK 0x1 |
| 1199 | #define RDIF_TASK_CONTEXT_FORWARDAPPTAG_SHIFT 4 | 1171 | #define RDIF_TASK_CONTEXT_FORWARD_APP_TAG_SHIFT 4 |
| 1200 | #define RDIF_TASK_CONTEXT_FORWARDREFTAG_MASK 0x1 | 1172 | #define RDIF_TASK_CONTEXT_FORWARD_REF_TAG_MASK 0x1 |
| 1201 | #define RDIF_TASK_CONTEXT_FORWARDREFTAG_SHIFT 5 | 1173 | #define RDIF_TASK_CONTEXT_FORWARD_REF_TAG_SHIFT 5 |
| 1202 | #define RDIF_TASK_CONTEXT_INTERVALSIZE_MASK 0x7 | 1174 | #define RDIF_TASK_CONTEXT_INTERVAL_SIZE_MASK 0x7 |
| 1203 | #define RDIF_TASK_CONTEXT_INTERVALSIZE_SHIFT 6 | 1175 | #define RDIF_TASK_CONTEXT_INTERVAL_SIZE_SHIFT 6 |
| 1204 | #define RDIF_TASK_CONTEXT_HOSTINTERFACE_MASK 0x3 | 1176 | #define RDIF_TASK_CONTEXT_HOST_INTERFACE_MASK 0x3 |
| 1205 | #define RDIF_TASK_CONTEXT_HOSTINTERFACE_SHIFT 9 | 1177 | #define RDIF_TASK_CONTEXT_HOST_INTERFACE_SHIFT 9 |
| 1206 | #define RDIF_TASK_CONTEXT_DIFBEFOREDATA_MASK 0x1 | 1178 | #define RDIF_TASK_CONTEXT_DIF_BEFORE_DATA_MASK 0x1 |
| 1207 | #define RDIF_TASK_CONTEXT_DIFBEFOREDATA_SHIFT 11 | 1179 | #define RDIF_TASK_CONTEXT_DIF_BEFORE_DATA_SHIFT 11 |
| 1208 | #define RDIF_TASK_CONTEXT_RESERVED0_MASK 0x1 | 1180 | #define RDIF_TASK_CONTEXT_RESERVED0_MASK 0x1 |
| 1209 | #define RDIF_TASK_CONTEXT_RESERVED0_SHIFT 12 | 1181 | #define RDIF_TASK_CONTEXT_RESERVED0_SHIFT 12 |
| 1210 | #define RDIF_TASK_CONTEXT_NETWORKINTERFACE_MASK 0x1 | 1182 | #define RDIF_TASK_CONTEXT_NETWORK_INTERFACE_MASK 0x1 |
| 1211 | #define RDIF_TASK_CONTEXT_NETWORKINTERFACE_SHIFT 13 | 1183 | #define RDIF_TASK_CONTEXT_NETWORK_INTERFACE_SHIFT 13 |
| 1212 | #define RDIF_TASK_CONTEXT_FORWARDAPPTAGWITHMASK_MASK 0x1 | 1184 | #define RDIF_TASK_CONTEXT_FORWARD_APP_TAG_WITH_MASK_MASK 0x1 |
| 1213 | #define RDIF_TASK_CONTEXT_FORWARDAPPTAGWITHMASK_SHIFT 14 | 1185 | #define RDIF_TASK_CONTEXT_FORWARD_APP_TAG_WITH_MASK_SHIFT 14 |
| 1214 | #define RDIF_TASK_CONTEXT_FORWARDREFTAGWITHMASK_MASK 0x1 | 1186 | #define RDIF_TASK_CONTEXT_FORWARD_REF_TAG_WITH_MASK_MASK 0x1 |
| 1215 | #define RDIF_TASK_CONTEXT_FORWARDREFTAGWITHMASK_SHIFT 15 | 1187 | #define RDIF_TASK_CONTEXT_FORWARD_REF_TAG_WITH_MASK_SHIFT 15 |
| 1216 | __le16 state; | 1188 | __le16 state; |
| 1217 | #define RDIF_TASK_CONTEXT_RECEIVEDDIFBYTESLEFT_MASK 0xF | 1189 | #define RDIF_TASK_CONTEXT_RECEIVED_DIF_BYTES_LEFT_MASK 0xF |
| 1218 | #define RDIF_TASK_CONTEXT_RECEIVEDDIFBYTESLEFT_SHIFT 0 | 1190 | #define RDIF_TASK_CONTEXT_RECEIVED_DIF_BYTES_LEFT_SHIFT 0 |
| 1219 | #define RDIF_TASK_CONTEXT_TRANSMITEDDIFBYTESLEFT_MASK 0xF | 1191 | #define RDIF_TASK_CONTEXT_TRANSMITED_DIF_BYTES_LEFT_MASK 0xF |
| 1220 | #define RDIF_TASK_CONTEXT_TRANSMITEDDIFBYTESLEFT_SHIFT 4 | 1192 | #define RDIF_TASK_CONTEXT_TRANSMITED_DIF_BYTES_LEFT_SHIFT 4 |
| 1221 | #define RDIF_TASK_CONTEXT_ERRORINIO_MASK 0x1 | 1193 | #define RDIF_TASK_CONTEXT_ERROR_IN_IO_MASK 0x1 |
| 1222 | #define RDIF_TASK_CONTEXT_ERRORINIO_SHIFT 8 | 1194 | #define RDIF_TASK_CONTEXT_ERROR_IN_IO_SHIFT 8 |
| 1223 | #define RDIF_TASK_CONTEXT_CHECKSUMOVERFLOW_MASK 0x1 | 1195 | #define RDIF_TASK_CONTEXT_CHECKSUM_OVERFLOW_MASK 0x1 |
| 1224 | #define RDIF_TASK_CONTEXT_CHECKSUMOVERFLOW_SHIFT 9 | 1196 | #define RDIF_TASK_CONTEXT_CHECKSUM_OVERFLOW_SHIFT 9 |
| 1225 | #define RDIF_TASK_CONTEXT_REFTAGMASK_MASK 0xF | 1197 | #define RDIF_TASK_CONTEXT_REF_TAG_MASK_MASK 0xF |
| 1226 | #define RDIF_TASK_CONTEXT_REFTAGMASK_SHIFT 10 | 1198 | #define RDIF_TASK_CONTEXT_REF_TAG_MASK_SHIFT 10 |
| 1227 | #define RDIF_TASK_CONTEXT_RESERVED1_MASK 0x3 | 1199 | #define RDIF_TASK_CONTEXT_RESERVED1_MASK 0x3 |
| 1228 | #define RDIF_TASK_CONTEXT_RESERVED1_SHIFT 14 | 1200 | #define RDIF_TASK_CONTEXT_RESERVED1_SHIFT 14 |
| 1229 | __le32 reserved2; | 1201 | __le32 reserved2; |
| 1230 | }; | 1202 | }; |
| 1231 | 1203 | ||
| 1232 | /* RSS hash type */ | 1204 | /* Status block structure */ |
| 1233 | enum rss_hash_type { | ||
| 1234 | RSS_HASH_TYPE_DEFAULT = 0, | ||
| 1235 | RSS_HASH_TYPE_IPV4 = 1, | ||
| 1236 | RSS_HASH_TYPE_TCP_IPV4 = 2, | ||
| 1237 | RSS_HASH_TYPE_IPV6 = 3, | ||
| 1238 | RSS_HASH_TYPE_TCP_IPV6 = 4, | ||
| 1239 | RSS_HASH_TYPE_UDP_IPV4 = 5, | ||
| 1240 | RSS_HASH_TYPE_UDP_IPV6 = 6, | ||
| 1241 | MAX_RSS_HASH_TYPE | ||
| 1242 | }; | ||
| 1243 | |||
| 1244 | /* status block structure */ | ||
| 1245 | struct status_block { | 1205 | struct status_block { |
| 1246 | __le16 pi_array[PIS_PER_SB]; | 1206 | __le16 pi_array[PIS_PER_SB]; |
| 1247 | __le32 sb_num; | 1207 | __le32 sb_num; |
| @@ -1258,88 +1218,90 @@ struct status_block { | |||
| 1258 | #define STATUS_BLOCK_ZERO_PAD3_SHIFT 24 | 1218 | #define STATUS_BLOCK_ZERO_PAD3_SHIFT 24 |
| 1259 | }; | 1219 | }; |
| 1260 | 1220 | ||
| 1221 | /* Tdif context */ | ||
| 1261 | struct tdif_task_context { | 1222 | struct tdif_task_context { |
| 1262 | __le32 initial_ref_tag; | 1223 | __le32 initial_ref_tag; |
| 1263 | __le16 app_tag_value; | 1224 | __le16 app_tag_value; |
| 1264 | __le16 app_tag_mask; | 1225 | __le16 app_tag_mask; |
| 1265 | __le16 partial_crc_valueB; | 1226 | __le16 partial_crc_value_b; |
| 1266 | __le16 partial_checksum_valueB; | 1227 | __le16 partial_checksum_value_b; |
| 1267 | __le16 stateB; | 1228 | __le16 stateB; |
| 1268 | #define TDIF_TASK_CONTEXT_RECEIVEDDIFBYTESLEFTB_MASK 0xF | 1229 | #define TDIF_TASK_CONTEXT_RECEIVED_DIF_BYTES_LEFT_B_MASK 0xF |
| 1269 | #define TDIF_TASK_CONTEXT_RECEIVEDDIFBYTESLEFTB_SHIFT 0 | 1230 | #define TDIF_TASK_CONTEXT_RECEIVED_DIF_BYTES_LEFT_B_SHIFT 0 |
| 1270 | #define TDIF_TASK_CONTEXT_TRANSMITEDDIFBYTESLEFTB_MASK 0xF | 1231 | #define TDIF_TASK_CONTEXT_TRANSMITED_DIF_BYTES_LEFT_B_MASK 0xF |
| 1271 | #define TDIF_TASK_CONTEXT_TRANSMITEDDIFBYTESLEFTB_SHIFT 4 | 1232 | #define TDIF_TASK_CONTEXT_TRANSMITED_DIF_BYTES_LEFT_B_SHIFT 4 |
| 1272 | #define TDIF_TASK_CONTEXT_ERRORINIOB_MASK 0x1 | 1233 | #define TDIF_TASK_CONTEXT_ERROR_IN_IO_B_MASK 0x1 |
| 1273 | #define TDIF_TASK_CONTEXT_ERRORINIOB_SHIFT 8 | 1234 | #define TDIF_TASK_CONTEXT_ERROR_IN_IO_B_SHIFT 8 |
| 1274 | #define TDIF_TASK_CONTEXT_CHECKSUMOVERFLOW_MASK 0x1 | 1235 | #define TDIF_TASK_CONTEXT_CHECKSUM_VERFLOW_MASK 0x1 |
| 1275 | #define TDIF_TASK_CONTEXT_CHECKSUMOVERFLOW_SHIFT 9 | 1236 | #define TDIF_TASK_CONTEXT_CHECKSUM_VERFLOW_SHIFT 9 |
| 1276 | #define TDIF_TASK_CONTEXT_RESERVED0_MASK 0x3F | 1237 | #define TDIF_TASK_CONTEXT_RESERVED0_MASK 0x3F |
| 1277 | #define TDIF_TASK_CONTEXT_RESERVED0_SHIFT 10 | 1238 | #define TDIF_TASK_CONTEXT_RESERVED0_SHIFT 10 |
| 1278 | u8 reserved1; | 1239 | u8 reserved1; |
| 1279 | u8 flags0; | 1240 | u8 flags0; |
| 1280 | #define TDIF_TASK_CONTEXT_IGNOREAPPTAG_MASK 0x1 | 1241 | #define TDIF_TASK_CONTEXT_IGNORE_APP_TAG_MASK 0x1 |
| 1281 | #define TDIF_TASK_CONTEXT_IGNOREAPPTAG_SHIFT 0 | 1242 | #define TDIF_TASK_CONTEXT_IGNORE_APP_TAG_SHIFT 0 |
| 1282 | #define TDIF_TASK_CONTEXT_INITIALREFTAGVALID_MASK 0x1 | 1243 | #define TDIF_TASK_CONTEXT_INITIAL_REF_TAG_VALID_MASK 0x1 |
| 1283 | #define TDIF_TASK_CONTEXT_INITIALREFTAGVALID_SHIFT 1 | 1244 | #define TDIF_TASK_CONTEXT_INITIAL_REF_TAG_VALID_SHIFT 1 |
| 1284 | #define TDIF_TASK_CONTEXT_HOSTGUARDTYPE_MASK 0x1 | 1245 | #define TDIF_TASK_CONTEXT_HOST_GUARD_TYPE_MASK 0x1 |
| 1285 | #define TDIF_TASK_CONTEXT_HOSTGUARDTYPE_SHIFT 2 | 1246 | #define TDIF_TASK_CONTEXT_HOST_GUARD_TYPE_SHIFT 2 |
| 1286 | #define TDIF_TASK_CONTEXT_SETERRORWITHEOP_MASK 0x1 | 1247 | #define TDIF_TASK_CONTEXT_SET_ERROR_WITH_EOP_MASK 0x1 |
| 1287 | #define TDIF_TASK_CONTEXT_SETERRORWITHEOP_SHIFT 3 | 1248 | #define TDIF_TASK_CONTEXT_SET_ERROR_WITH_EOP_SHIFT 3 |
| 1288 | #define TDIF_TASK_CONTEXT_PROTECTIONTYPE_MASK 0x3 | 1249 | #define TDIF_TASK_CONTEXT_PROTECTION_TYPE_MASK 0x3 |
| 1289 | #define TDIF_TASK_CONTEXT_PROTECTIONTYPE_SHIFT 4 | 1250 | #define TDIF_TASK_CONTEXT_PROTECTION_TYPE_SHIFT 4 |
| 1290 | #define TDIF_TASK_CONTEXT_CRC_SEED_MASK 0x1 | 1251 | #define TDIF_TASK_CONTEXT_CRC_SEED_MASK 0x1 |
| 1291 | #define TDIF_TASK_CONTEXT_CRC_SEED_SHIFT 6 | 1252 | #define TDIF_TASK_CONTEXT_CRC_SEED_SHIFT 6 |
| 1292 | #define TDIF_TASK_CONTEXT_RESERVED2_MASK 0x1 | 1253 | #define TDIF_TASK_CONTEXT_RESERVED2_MASK 0x1 |
| 1293 | #define TDIF_TASK_CONTEXT_RESERVED2_SHIFT 7 | 1254 | #define TDIF_TASK_CONTEXT_RESERVED2_SHIFT 7 |
| 1294 | __le32 flags1; | 1255 | __le32 flags1; |
| 1295 | #define TDIF_TASK_CONTEXT_VALIDATEGUARD_MASK 0x1 | 1256 | #define TDIF_TASK_CONTEXT_VALIDATE_GUARD_MASK 0x1 |
| 1296 | #define TDIF_TASK_CONTEXT_VALIDATEGUARD_SHIFT 0 | 1257 | #define TDIF_TASK_CONTEXT_VALIDATE_GUARD_SHIFT 0 |
| 1297 | #define TDIF_TASK_CONTEXT_VALIDATEAPPTAG_MASK 0x1 | 1258 | #define TDIF_TASK_CONTEXT_VALIDATE_APP_TAG_MASK 0x1 |
| 1298 | #define TDIF_TASK_CONTEXT_VALIDATEAPPTAG_SHIFT 1 | 1259 | #define TDIF_TASK_CONTEXT_VALIDATE_APP_TAG_SHIFT 1 |
| 1299 | #define TDIF_TASK_CONTEXT_VALIDATEREFTAG_MASK 0x1 | 1260 | #define TDIF_TASK_CONTEXT_VALIDATE_REF_TAG_MASK 0x1 |
| 1300 | #define TDIF_TASK_CONTEXT_VALIDATEREFTAG_SHIFT 2 | 1261 | #define TDIF_TASK_CONTEXT_VALIDATE_REF_TAG_SHIFT 2 |
| 1301 | #define TDIF_TASK_CONTEXT_FORWARDGUARD_MASK 0x1 | 1262 | #define TDIF_TASK_CONTEXT_FORWARD_GUARD_MASK 0x1 |
| 1302 | #define TDIF_TASK_CONTEXT_FORWARDGUARD_SHIFT 3 | 1263 | #define TDIF_TASK_CONTEXT_FORWARD_GUARD_SHIFT 3 |
| 1303 | #define TDIF_TASK_CONTEXT_FORWARDAPPTAG_MASK 0x1 | 1264 | #define TDIF_TASK_CONTEXT_FORWARD_APP_TAG_MASK 0x1 |
| 1304 | #define TDIF_TASK_CONTEXT_FORWARDAPPTAG_SHIFT 4 | 1265 | #define TDIF_TASK_CONTEXT_FORWARD_APP_TAG_SHIFT 4 |
| 1305 | #define TDIF_TASK_CONTEXT_FORWARDREFTAG_MASK 0x1 | 1266 | #define TDIF_TASK_CONTEXT_FORWARD_REF_TAG_MASK 0x1 |
| 1306 | #define TDIF_TASK_CONTEXT_FORWARDREFTAG_SHIFT 5 | 1267 | #define TDIF_TASK_CONTEXT_FORWARD_REF_TAG_SHIFT 5 |
| 1307 | #define TDIF_TASK_CONTEXT_INTERVALSIZE_MASK 0x7 | 1268 | #define TDIF_TASK_CONTEXT_INTERVAL_SIZE_MASK 0x7 |
| 1308 | #define TDIF_TASK_CONTEXT_INTERVALSIZE_SHIFT 6 | 1269 | #define TDIF_TASK_CONTEXT_INTERVAL_SIZE_SHIFT 6 |
| 1309 | #define TDIF_TASK_CONTEXT_HOSTINTERFACE_MASK 0x3 | 1270 | #define TDIF_TASK_CONTEXT_HOST_INTERFACE_MASK 0x3 |
| 1310 | #define TDIF_TASK_CONTEXT_HOSTINTERFACE_SHIFT 9 | 1271 | #define TDIF_TASK_CONTEXT_HOST_INTERFACE_SHIFT 9 |
| 1311 | #define TDIF_TASK_CONTEXT_DIFBEFOREDATA_MASK 0x1 | 1272 | #define TDIF_TASK_CONTEXT_DIF_BEFORE_DATA_MASK 0x1 |
| 1312 | #define TDIF_TASK_CONTEXT_DIFBEFOREDATA_SHIFT 11 | 1273 | #define TDIF_TASK_CONTEXT_DIF_BEFORE_DATA_SHIFT 11 |
| 1313 | #define TDIF_TASK_CONTEXT_RESERVED3_MASK 0x1 | 1274 | #define TDIF_TASK_CONTEXT_RESERVED3_MASK 0x1 |
| 1314 | #define TDIF_TASK_CONTEXT_RESERVED3_SHIFT 12 | 1275 | #define TDIF_TASK_CONTEXT_RESERVED3_SHIFT 12 |
| 1315 | #define TDIF_TASK_CONTEXT_NETWORKINTERFACE_MASK 0x1 | 1276 | #define TDIF_TASK_CONTEXT_NETWORK_INTERFACE_MASK 0x1 |
| 1316 | #define TDIF_TASK_CONTEXT_NETWORKINTERFACE_SHIFT 13 | 1277 | #define TDIF_TASK_CONTEXT_NETWORK_INTERFACE_SHIFT 13 |
| 1317 | #define TDIF_TASK_CONTEXT_RECEIVEDDIFBYTESLEFTA_MASK 0xF | 1278 | #define TDIF_TASK_CONTEXT_RECEIVED_DIF_BYTES_LEFT_A_MASK 0xF |
| 1318 | #define TDIF_TASK_CONTEXT_RECEIVEDDIFBYTESLEFTA_SHIFT 14 | 1279 | #define TDIF_TASK_CONTEXT_RECEIVED_DIF_BYTES_LEFT_A_SHIFT 14 |
| 1319 | #define TDIF_TASK_CONTEXT_TRANSMITEDDIFBYTESLEFTA_MASK 0xF | 1280 | #define TDIF_TASK_CONTEXT_TRANSMITED_DIF_BYTES_LEFT_A_MASK 0xF |
| 1320 | #define TDIF_TASK_CONTEXT_TRANSMITEDDIFBYTESLEFTA_SHIFT 18 | 1281 | #define TDIF_TASK_CONTEXT_TRANSMITED_DIF_BYTES_LEFT_A_SHIFT 18 |
| 1321 | #define TDIF_TASK_CONTEXT_ERRORINIOA_MASK 0x1 | 1282 | #define TDIF_TASK_CONTEXT_ERROR_IN_IO_A_MASK 0x1 |
| 1322 | #define TDIF_TASK_CONTEXT_ERRORINIOA_SHIFT 22 | 1283 | #define TDIF_TASK_CONTEXT_ERROR_IN_IO_A_SHIFT 22 |
| 1323 | #define TDIF_TASK_CONTEXT_CHECKSUMOVERFLOWA_MASK 0x1 | 1284 | #define TDIF_TASK_CONTEXT_CHECKSUM_OVERFLOW_A_MASK 0x1 |
| 1324 | #define TDIF_TASK_CONTEXT_CHECKSUMOVERFLOWA_SHIFT 23 | 1285 | #define TDIF_TASK_CONTEXT_CHECKSUM_OVERFLOW_A_SHIFT 23 |
| 1325 | #define TDIF_TASK_CONTEXT_REFTAGMASK_MASK 0xF | 1286 | #define TDIF_TASK_CONTEXT_REF_TAG_MASK_MASK 0xF |
| 1326 | #define TDIF_TASK_CONTEXT_REFTAGMASK_SHIFT 24 | 1287 | #define TDIF_TASK_CONTEXT_REF_TAG_MASK_SHIFT 24 |
| 1327 | #define TDIF_TASK_CONTEXT_FORWARDAPPTAGWITHMASK_MASK 0x1 | 1288 | #define TDIF_TASK_CONTEXT_FORWARD_APP_TAG_WITH_MASK_MASK 0x1 |
| 1328 | #define TDIF_TASK_CONTEXT_FORWARDAPPTAGWITHMASK_SHIFT 28 | 1289 | #define TDIF_TASK_CONTEXT_FORWARD_APP_TAG_WITH_MASK_SHIFT 28 |
| 1329 | #define TDIF_TASK_CONTEXT_FORWARDREFTAGWITHMASK_MASK 0x1 | 1290 | #define TDIF_TASK_CONTEXT_FORWARD_REF_TAG_WITH_MASK_MASK 0x1 |
| 1330 | #define TDIF_TASK_CONTEXT_FORWARDREFTAGWITHMASK_SHIFT 29 | 1291 | #define TDIF_TASK_CONTEXT_FORWARD_REF_TAG_WITH_MASK_SHIFT 29 |
| 1331 | #define TDIF_TASK_CONTEXT_KEEPREFTAGCONST_MASK 0x1 | 1292 | #define TDIF_TASK_CONTEXT_KEEP_REF_TAG_CONST_MASK 0x1 |
| 1332 | #define TDIF_TASK_CONTEXT_KEEPREFTAGCONST_SHIFT 30 | 1293 | #define TDIF_TASK_CONTEXT_KEEP_REF_TAG_CONST_SHIFT 30 |
| 1333 | #define TDIF_TASK_CONTEXT_RESERVED4_MASK 0x1 | 1294 | #define TDIF_TASK_CONTEXT_RESERVED4_MASK 0x1 |
| 1334 | #define TDIF_TASK_CONTEXT_RESERVED4_SHIFT 31 | 1295 | #define TDIF_TASK_CONTEXT_RESERVED4_SHIFT 31 |
| 1335 | __le32 offset_in_iob; | 1296 | __le32 offset_in_io_b; |
| 1336 | __le16 partial_crc_value_a; | 1297 | __le16 partial_crc_value_a; |
| 1337 | __le16 partial_checksum_valuea_; | 1298 | __le16 partial_checksum_value_a; |
| 1338 | __le32 offset_in_ioa; | 1299 | __le32 offset_in_io_a; |
| 1339 | u8 partial_dif_data_a[8]; | 1300 | u8 partial_dif_data_a[8]; |
| 1340 | u8 partial_dif_data_b[8]; | 1301 | u8 partial_dif_data_b[8]; |
| 1341 | }; | 1302 | }; |
| 1342 | 1303 | ||
| 1304 | /* Timers context */ | ||
| 1343 | struct timers_context { | 1305 | struct timers_context { |
| 1344 | __le32 logical_client_0; | 1306 | __le32 logical_client_0; |
| 1345 | #define TIMERS_CONTEXT_EXPIRATIONTIMELC0_MASK 0x7FFFFFF | 1307 | #define TIMERS_CONTEXT_EXPIRATIONTIMELC0_MASK 0x7FFFFFF |
| @@ -1385,6 +1347,7 @@ struct timers_context { | |||
| 1385 | #define TIMERS_CONTEXT_RESERVED7_SHIFT 29 | 1347 | #define TIMERS_CONTEXT_RESERVED7_SHIFT 29 |
| 1386 | }; | 1348 | }; |
| 1387 | 1349 | ||
| 1350 | /* Enum for next_protocol field of tunnel_parsing_flags / tunnelTypeDesc */ | ||
| 1388 | enum tunnel_next_protocol { | 1351 | enum tunnel_next_protocol { |
| 1389 | e_unknown = 0, | 1352 | e_unknown = 0, |
| 1390 | e_l2 = 1, | 1353 | e_l2 = 1, |
diff --git a/include/linux/qed/eth_common.h b/include/linux/qed/eth_common.h index cb06e6e368e1..f554f4b58dfe 100644 --- a/include/linux/qed/eth_common.h +++ b/include/linux/qed/eth_common.h | |||
| @@ -36,139 +36,140 @@ | |||
| 36 | /********************/ | 36 | /********************/ |
| 37 | /* ETH FW CONSTANTS */ | 37 | /* ETH FW CONSTANTS */ |
| 38 | /********************/ | 38 | /********************/ |
| 39 | #define ETH_HSI_VER_MAJOR 3 | 39 | |
| 40 | #define ETH_HSI_VER_MINOR 10 | 40 | #define ETH_HSI_VER_MAJOR 3 |
| 41 | #define ETH_HSI_VER_MINOR 10 | ||
| 41 | 42 | ||
| 42 | #define ETH_HSI_VER_NO_PKT_LEN_TUNN 5 | 43 | #define ETH_HSI_VER_NO_PKT_LEN_TUNN 5 |
| 43 | 44 | ||
| 44 | #define ETH_CACHE_LINE_SIZE 64 | 45 | #define ETH_CACHE_LINE_SIZE 64 |
| 45 | #define ETH_RX_CQE_GAP 32 | 46 | #define ETH_RX_CQE_GAP 32 |
| 46 | #define ETH_MAX_RAMROD_PER_CON 8 | 47 | #define ETH_MAX_RAMROD_PER_CON 8 |
| 47 | #define ETH_TX_BD_PAGE_SIZE_BYTES 4096 | 48 | #define ETH_TX_BD_PAGE_SIZE_BYTES 4096 |
| 48 | #define ETH_RX_BD_PAGE_SIZE_BYTES 4096 | 49 | #define ETH_RX_BD_PAGE_SIZE_BYTES 4096 |
| 49 | #define ETH_RX_CQE_PAGE_SIZE_BYTES 4096 | 50 | #define ETH_RX_CQE_PAGE_SIZE_BYTES 4096 |
| 50 | #define ETH_RX_NUM_NEXT_PAGE_BDS 2 | 51 | #define ETH_RX_NUM_NEXT_PAGE_BDS 2 |
| 51 | 52 | ||
| 52 | #define ETH_MAX_TUNN_LSO_INNER_IPV4_OFFSET 253 | 53 | #define ETH_MAX_TUNN_LSO_INNER_IPV4_OFFSET 253 |
| 53 | #define ETH_MAX_TUNN_LSO_INNER_IPV6_OFFSET 251 | 54 | #define ETH_MAX_TUNN_LSO_INNER_IPV6_OFFSET 251 |
| 54 | 55 | ||
| 55 | #define ETH_TX_MIN_BDS_PER_NON_LSO_PKT 1 | 56 | #define ETH_TX_MIN_BDS_PER_NON_LSO_PKT 1 |
| 56 | #define ETH_TX_MAX_BDS_PER_NON_LSO_PACKET 18 | 57 | #define ETH_TX_MAX_BDS_PER_NON_LSO_PACKET 18 |
| 57 | #define ETH_TX_MAX_BDS_PER_LSO_PACKET 255 | 58 | #define ETH_TX_MAX_BDS_PER_LSO_PACKET 255 |
| 58 | #define ETH_TX_MAX_LSO_HDR_NBD 4 | 59 | #define ETH_TX_MAX_LSO_HDR_NBD 4 |
| 59 | #define ETH_TX_MIN_BDS_PER_LSO_PKT 3 | 60 | #define ETH_TX_MIN_BDS_PER_LSO_PKT 3 |
| 60 | #define ETH_TX_MIN_BDS_PER_TUNN_IPV6_WITH_EXT_PKT 3 | 61 | #define ETH_TX_MIN_BDS_PER_TUNN_IPV6_WITH_EXT_PKT 3 |
| 61 | #define ETH_TX_MIN_BDS_PER_IPV6_WITH_EXT_PKT 2 | 62 | #define ETH_TX_MIN_BDS_PER_IPV6_WITH_EXT_PKT 2 |
| 62 | #define ETH_TX_MIN_BDS_PER_PKT_W_LOOPBACK_MODE 2 | 63 | #define ETH_TX_MIN_BDS_PER_PKT_W_LOOPBACK_MODE 2 |
| 63 | #define ETH_TX_MAX_NON_LSO_PKT_LEN (9700 - (4 + 4 + 12 + 8)) | 64 | #define ETH_TX_MAX_NON_LSO_PKT_LEN (9700 - (4 + 4 + 12 + 8)) |
| 64 | #define ETH_TX_MAX_LSO_HDR_BYTES 510 | 65 | #define ETH_TX_MAX_LSO_HDR_BYTES 510 |
| 65 | #define ETH_TX_LSO_WINDOW_BDS_NUM (18 - 1) | 66 | #define ETH_TX_LSO_WINDOW_BDS_NUM (18 - 1) |
| 66 | #define ETH_TX_LSO_WINDOW_MIN_LEN 9700 | 67 | #define ETH_TX_LSO_WINDOW_MIN_LEN 9700 |
| 67 | #define ETH_TX_MAX_LSO_PAYLOAD_LEN 0xFE000 | 68 | #define ETH_TX_MAX_LSO_PAYLOAD_LEN 0xFE000 |
| 68 | #define ETH_TX_NUM_SAME_AS_LAST_ENTRIES 320 | 69 | #define ETH_TX_NUM_SAME_AS_LAST_ENTRIES 320 |
| 69 | #define ETH_TX_INACTIVE_SAME_AS_LAST 0xFFFF | 70 | #define ETH_TX_INACTIVE_SAME_AS_LAST 0xFFFF |
| 70 | 71 | ||
| 71 | #define ETH_NUM_STATISTIC_COUNTERS MAX_NUM_VPORTS | 72 | #define ETH_NUM_STATISTIC_COUNTERS MAX_NUM_VPORTS |
| 72 | #define ETH_NUM_STATISTIC_COUNTERS_DOUBLE_VF_ZONE \ | 73 | #define ETH_NUM_STATISTIC_COUNTERS_DOUBLE_VF_ZONE \ |
| 73 | (ETH_NUM_STATISTIC_COUNTERS - MAX_NUM_VFS / 2) | 74 | (ETH_NUM_STATISTIC_COUNTERS - MAX_NUM_VFS / 2) |
| 74 | #define ETH_NUM_STATISTIC_COUNTERS_QUAD_VF_ZONE \ | 75 | #define ETH_NUM_STATISTIC_COUNTERS_QUAD_VF_ZONE \ |
| 75 | (ETH_NUM_STATISTIC_COUNTERS - 3 * MAX_NUM_VFS / 4) | 76 | (ETH_NUM_STATISTIC_COUNTERS - 3 * MAX_NUM_VFS / 4) |
| 76 | 77 | ||
| 77 | /* Maximum number of buffers, used for RX packet placement */ | 78 | /* Maximum number of buffers, used for RX packet placement */ |
| 78 | #define ETH_RX_MAX_BUFF_PER_PKT 5 | 79 | #define ETH_RX_MAX_BUFF_PER_PKT 5 |
| 79 | #define ETH_RX_BD_THRESHOLD 12 | 80 | #define ETH_RX_BD_THRESHOLD 12 |
| 80 | 81 | ||
| 81 | /* num of MAC/VLAN filters */ | 82 | /* Num of MAC/VLAN filters */ |
| 82 | #define ETH_NUM_MAC_FILTERS 512 | 83 | #define ETH_NUM_MAC_FILTERS 512 |
| 83 | #define ETH_NUM_VLAN_FILTERS 512 | 84 | #define ETH_NUM_VLAN_FILTERS 512 |
| 84 | 85 | ||
| 85 | /* approx. multicast constants */ | 86 | /* Approx. multicast constants */ |
| 86 | #define ETH_MULTICAST_BIN_FROM_MAC_SEED 0 | 87 | #define ETH_MULTICAST_BIN_FROM_MAC_SEED 0 |
| 87 | #define ETH_MULTICAST_MAC_BINS 256 | 88 | #define ETH_MULTICAST_MAC_BINS 256 |
| 88 | #define ETH_MULTICAST_MAC_BINS_IN_REGS (ETH_MULTICAST_MAC_BINS / 32) | 89 | #define ETH_MULTICAST_MAC_BINS_IN_REGS (ETH_MULTICAST_MAC_BINS / 32) |
| 89 | 90 | ||
| 90 | /* ethernet vport update constants */ | 91 | /* Ethernet vport update constants */ |
| 91 | #define ETH_FILTER_RULES_COUNT 10 | 92 | #define ETH_FILTER_RULES_COUNT 10 |
| 92 | #define ETH_RSS_IND_TABLE_ENTRIES_NUM 128 | 93 | #define ETH_RSS_IND_TABLE_ENTRIES_NUM 128 |
| 93 | #define ETH_RSS_KEY_SIZE_REGS 10 | 94 | #define ETH_RSS_KEY_SIZE_REGS 10 |
| 94 | #define ETH_RSS_ENGINE_NUM_K2 207 | 95 | #define ETH_RSS_ENGINE_NUM_K2 207 |
| 95 | #define ETH_RSS_ENGINE_NUM_BB 127 | 96 | #define ETH_RSS_ENGINE_NUM_BB 127 |
| 96 | 97 | ||
| 97 | /* TPA constants */ | 98 | /* TPA constants */ |
| 98 | #define ETH_TPA_MAX_AGGS_NUM 64 | 99 | #define ETH_TPA_MAX_AGGS_NUM 64 |
| 99 | #define ETH_TPA_CQE_START_LEN_LIST_SIZE ETH_RX_MAX_BUFF_PER_PKT | 100 | #define ETH_TPA_CQE_START_LEN_LIST_SIZE ETH_RX_MAX_BUFF_PER_PKT |
| 100 | #define ETH_TPA_CQE_CONT_LEN_LIST_SIZE 6 | 101 | #define ETH_TPA_CQE_CONT_LEN_LIST_SIZE 6 |
| 101 | #define ETH_TPA_CQE_END_LEN_LIST_SIZE 4 | 102 | #define ETH_TPA_CQE_END_LEN_LIST_SIZE 4 |
| 102 | 103 | ||
| 103 | /* Control frame check constants */ | 104 | /* Control frame check constants */ |
| 104 | #define ETH_CTL_FRAME_ETH_TYPE_NUM 4 | 105 | #define ETH_CTL_FRAME_ETH_TYPE_NUM 4 |
| 105 | 106 | ||
| 106 | struct eth_tx_1st_bd_flags { | 107 | struct eth_tx_1st_bd_flags { |
| 107 | u8 bitfields; | 108 | u8 bitfields; |
| 108 | #define ETH_TX_1ST_BD_FLAGS_START_BD_MASK 0x1 | 109 | #define ETH_TX_1ST_BD_FLAGS_START_BD_MASK 0x1 |
| 109 | #define ETH_TX_1ST_BD_FLAGS_START_BD_SHIFT 0 | 110 | #define ETH_TX_1ST_BD_FLAGS_START_BD_SHIFT 0 |
| 110 | #define ETH_TX_1ST_BD_FLAGS_FORCE_VLAN_MODE_MASK 0x1 | 111 | #define ETH_TX_1ST_BD_FLAGS_FORCE_VLAN_MODE_MASK 0x1 |
| 111 | #define ETH_TX_1ST_BD_FLAGS_FORCE_VLAN_MODE_SHIFT 1 | 112 | #define ETH_TX_1ST_BD_FLAGS_FORCE_VLAN_MODE_SHIFT 1 |
| 112 | #define ETH_TX_1ST_BD_FLAGS_IP_CSUM_MASK 0x1 | 113 | #define ETH_TX_1ST_BD_FLAGS_IP_CSUM_MASK 0x1 |
| 113 | #define ETH_TX_1ST_BD_FLAGS_IP_CSUM_SHIFT 2 | 114 | #define ETH_TX_1ST_BD_FLAGS_IP_CSUM_SHIFT 2 |
| 114 | #define ETH_TX_1ST_BD_FLAGS_L4_CSUM_MASK 0x1 | 115 | #define ETH_TX_1ST_BD_FLAGS_L4_CSUM_MASK 0x1 |
| 115 | #define ETH_TX_1ST_BD_FLAGS_L4_CSUM_SHIFT 3 | 116 | #define ETH_TX_1ST_BD_FLAGS_L4_CSUM_SHIFT 3 |
| 116 | #define ETH_TX_1ST_BD_FLAGS_VLAN_INSERTION_MASK 0x1 | 117 | #define ETH_TX_1ST_BD_FLAGS_VLAN_INSERTION_MASK 0x1 |
| 117 | #define ETH_TX_1ST_BD_FLAGS_VLAN_INSERTION_SHIFT 4 | 118 | #define ETH_TX_1ST_BD_FLAGS_VLAN_INSERTION_SHIFT 4 |
| 118 | #define ETH_TX_1ST_BD_FLAGS_LSO_MASK 0x1 | 119 | #define ETH_TX_1ST_BD_FLAGS_LSO_MASK 0x1 |
| 119 | #define ETH_TX_1ST_BD_FLAGS_LSO_SHIFT 5 | 120 | #define ETH_TX_1ST_BD_FLAGS_LSO_SHIFT 5 |
| 120 | #define ETH_TX_1ST_BD_FLAGS_TUNN_IP_CSUM_MASK 0x1 | 121 | #define ETH_TX_1ST_BD_FLAGS_TUNN_IP_CSUM_MASK 0x1 |
| 121 | #define ETH_TX_1ST_BD_FLAGS_TUNN_IP_CSUM_SHIFT 6 | 122 | #define ETH_TX_1ST_BD_FLAGS_TUNN_IP_CSUM_SHIFT 6 |
| 122 | #define ETH_TX_1ST_BD_FLAGS_TUNN_L4_CSUM_MASK 0x1 | 123 | #define ETH_TX_1ST_BD_FLAGS_TUNN_L4_CSUM_MASK 0x1 |
| 123 | #define ETH_TX_1ST_BD_FLAGS_TUNN_L4_CSUM_SHIFT 7 | 124 | #define ETH_TX_1ST_BD_FLAGS_TUNN_L4_CSUM_SHIFT 7 |
| 124 | }; | 125 | }; |
| 125 | 126 | ||
| 126 | /* The parsing information data fo rthe first tx bd of a given packet. */ | 127 | /* The parsing information data fo rthe first tx bd of a given packet */ |
| 127 | struct eth_tx_data_1st_bd { | 128 | struct eth_tx_data_1st_bd { |
| 128 | __le16 vlan; | 129 | __le16 vlan; |
| 129 | u8 nbds; | 130 | u8 nbds; |
| 130 | struct eth_tx_1st_bd_flags bd_flags; | 131 | struct eth_tx_1st_bd_flags bd_flags; |
| 131 | __le16 bitfields; | 132 | __le16 bitfields; |
| 132 | #define ETH_TX_DATA_1ST_BD_TUNN_FLAG_MASK 0x1 | 133 | #define ETH_TX_DATA_1ST_BD_TUNN_FLAG_MASK 0x1 |
| 133 | #define ETH_TX_DATA_1ST_BD_TUNN_FLAG_SHIFT 0 | 134 | #define ETH_TX_DATA_1ST_BD_TUNN_FLAG_SHIFT 0 |
| 134 | #define ETH_TX_DATA_1ST_BD_RESERVED0_MASK 0x1 | 135 | #define ETH_TX_DATA_1ST_BD_RESERVED0_MASK 0x1 |
| 135 | #define ETH_TX_DATA_1ST_BD_RESERVED0_SHIFT 1 | 136 | #define ETH_TX_DATA_1ST_BD_RESERVED0_SHIFT 1 |
| 136 | #define ETH_TX_DATA_1ST_BD_PKT_LEN_MASK 0x3FFF | 137 | #define ETH_TX_DATA_1ST_BD_PKT_LEN_MASK 0x3FFF |
| 137 | #define ETH_TX_DATA_1ST_BD_PKT_LEN_SHIFT 2 | 138 | #define ETH_TX_DATA_1ST_BD_PKT_LEN_SHIFT 2 |
| 138 | }; | 139 | }; |
| 139 | 140 | ||
| 140 | /* The parsing information data for the second tx bd of a given packet. */ | 141 | /* The parsing information data for the second tx bd of a given packet */ |
| 141 | struct eth_tx_data_2nd_bd { | 142 | struct eth_tx_data_2nd_bd { |
| 142 | __le16 tunn_ip_size; | 143 | __le16 tunn_ip_size; |
| 143 | __le16 bitfields1; | 144 | __le16 bitfields1; |
| 144 | #define ETH_TX_DATA_2ND_BD_TUNN_INNER_L2_HDR_SIZE_W_MASK 0xF | 145 | #define ETH_TX_DATA_2ND_BD_TUNN_INNER_L2_HDR_SIZE_W_MASK 0xF |
| 145 | #define ETH_TX_DATA_2ND_BD_TUNN_INNER_L2_HDR_SIZE_W_SHIFT 0 | 146 | #define ETH_TX_DATA_2ND_BD_TUNN_INNER_L2_HDR_SIZE_W_SHIFT 0 |
| 146 | #define ETH_TX_DATA_2ND_BD_TUNN_INNER_ETH_TYPE_MASK 0x3 | 147 | #define ETH_TX_DATA_2ND_BD_TUNN_INNER_ETH_TYPE_MASK 0x3 |
| 147 | #define ETH_TX_DATA_2ND_BD_TUNN_INNER_ETH_TYPE_SHIFT 4 | 148 | #define ETH_TX_DATA_2ND_BD_TUNN_INNER_ETH_TYPE_SHIFT 4 |
| 148 | #define ETH_TX_DATA_2ND_BD_DEST_PORT_MODE_MASK 0x3 | 149 | #define ETH_TX_DATA_2ND_BD_DEST_PORT_MODE_MASK 0x3 |
| 149 | #define ETH_TX_DATA_2ND_BD_DEST_PORT_MODE_SHIFT 6 | 150 | #define ETH_TX_DATA_2ND_BD_DEST_PORT_MODE_SHIFT 6 |
| 150 | #define ETH_TX_DATA_2ND_BD_START_BD_MASK 0x1 | 151 | #define ETH_TX_DATA_2ND_BD_START_BD_MASK 0x1 |
| 151 | #define ETH_TX_DATA_2ND_BD_START_BD_SHIFT 8 | 152 | #define ETH_TX_DATA_2ND_BD_START_BD_SHIFT 8 |
| 152 | #define ETH_TX_DATA_2ND_BD_TUNN_TYPE_MASK 0x3 | 153 | #define ETH_TX_DATA_2ND_BD_TUNN_TYPE_MASK 0x3 |
| 153 | #define ETH_TX_DATA_2ND_BD_TUNN_TYPE_SHIFT 9 | 154 | #define ETH_TX_DATA_2ND_BD_TUNN_TYPE_SHIFT 9 |
| 154 | #define ETH_TX_DATA_2ND_BD_TUNN_INNER_IPV6_MASK 0x1 | 155 | #define ETH_TX_DATA_2ND_BD_TUNN_INNER_IPV6_MASK 0x1 |
| 155 | #define ETH_TX_DATA_2ND_BD_TUNN_INNER_IPV6_SHIFT 11 | 156 | #define ETH_TX_DATA_2ND_BD_TUNN_INNER_IPV6_SHIFT 11 |
| 156 | #define ETH_TX_DATA_2ND_BD_IPV6_EXT_MASK 0x1 | 157 | #define ETH_TX_DATA_2ND_BD_IPV6_EXT_MASK 0x1 |
| 157 | #define ETH_TX_DATA_2ND_BD_IPV6_EXT_SHIFT 12 | 158 | #define ETH_TX_DATA_2ND_BD_IPV6_EXT_SHIFT 12 |
| 158 | #define ETH_TX_DATA_2ND_BD_TUNN_IPV6_EXT_MASK 0x1 | 159 | #define ETH_TX_DATA_2ND_BD_TUNN_IPV6_EXT_MASK 0x1 |
| 159 | #define ETH_TX_DATA_2ND_BD_TUNN_IPV6_EXT_SHIFT 13 | 160 | #define ETH_TX_DATA_2ND_BD_TUNN_IPV6_EXT_SHIFT 13 |
| 160 | #define ETH_TX_DATA_2ND_BD_L4_UDP_MASK 0x1 | 161 | #define ETH_TX_DATA_2ND_BD_L4_UDP_MASK 0x1 |
| 161 | #define ETH_TX_DATA_2ND_BD_L4_UDP_SHIFT 14 | 162 | #define ETH_TX_DATA_2ND_BD_L4_UDP_SHIFT 14 |
| 162 | #define ETH_TX_DATA_2ND_BD_L4_PSEUDO_CSUM_MODE_MASK 0x1 | 163 | #define ETH_TX_DATA_2ND_BD_L4_PSEUDO_CSUM_MODE_MASK 0x1 |
| 163 | #define ETH_TX_DATA_2ND_BD_L4_PSEUDO_CSUM_MODE_SHIFT 15 | 164 | #define ETH_TX_DATA_2ND_BD_L4_PSEUDO_CSUM_MODE_SHIFT 15 |
| 164 | __le16 bitfields2; | 165 | __le16 bitfields2; |
| 165 | #define ETH_TX_DATA_2ND_BD_L4_HDR_START_OFFSET_W_MASK 0x1FFF | 166 | #define ETH_TX_DATA_2ND_BD_L4_HDR_START_OFFSET_W_MASK 0x1FFF |
| 166 | #define ETH_TX_DATA_2ND_BD_L4_HDR_START_OFFSET_W_SHIFT 0 | 167 | #define ETH_TX_DATA_2ND_BD_L4_HDR_START_OFFSET_W_SHIFT 0 |
| 167 | #define ETH_TX_DATA_2ND_BD_RESERVED0_MASK 0x7 | 168 | #define ETH_TX_DATA_2ND_BD_RESERVED0_MASK 0x7 |
| 168 | #define ETH_TX_DATA_2ND_BD_RESERVED0_SHIFT 13 | 169 | #define ETH_TX_DATA_2ND_BD_RESERVED0_SHIFT 13 |
| 169 | }; | 170 | }; |
| 170 | 171 | ||
| 171 | /* Firmware data for L2-EDPM packet. */ | 172 | /* Firmware data for L2-EDPM packet */ |
| 172 | struct eth_edpm_fw_data { | 173 | struct eth_edpm_fw_data { |
| 173 | struct eth_tx_data_1st_bd data_1st_bd; | 174 | struct eth_tx_data_1st_bd data_1st_bd; |
| 174 | struct eth_tx_data_2nd_bd data_2nd_bd; | 175 | struct eth_tx_data_2nd_bd data_2nd_bd; |
| @@ -179,7 +180,7 @@ struct eth_fast_path_cqe_fw_debug { | |||
| 179 | __le16 reserved2; | 180 | __le16 reserved2; |
| 180 | }; | 181 | }; |
| 181 | 182 | ||
| 182 | /* tunneling parsing flags */ | 183 | /* Tunneling parsing flags */ |
| 183 | struct eth_tunnel_parsing_flags { | 184 | struct eth_tunnel_parsing_flags { |
| 184 | u8 flags; | 185 | u8 flags; |
| 185 | #define ETH_TUNNEL_PARSING_FLAGS_TYPE_MASK 0x3 | 186 | #define ETH_TUNNEL_PARSING_FLAGS_TYPE_MASK 0x3 |
| @@ -199,24 +200,24 @@ struct eth_tunnel_parsing_flags { | |||
| 199 | /* PMD flow control bits */ | 200 | /* PMD flow control bits */ |
| 200 | struct eth_pmd_flow_flags { | 201 | struct eth_pmd_flow_flags { |
| 201 | u8 flags; | 202 | u8 flags; |
| 202 | #define ETH_PMD_FLOW_FLAGS_VALID_MASK 0x1 | 203 | #define ETH_PMD_FLOW_FLAGS_VALID_MASK 0x1 |
| 203 | #define ETH_PMD_FLOW_FLAGS_VALID_SHIFT 0 | 204 | #define ETH_PMD_FLOW_FLAGS_VALID_SHIFT 0 |
| 204 | #define ETH_PMD_FLOW_FLAGS_TOGGLE_MASK 0x1 | 205 | #define ETH_PMD_FLOW_FLAGS_TOGGLE_MASK 0x1 |
| 205 | #define ETH_PMD_FLOW_FLAGS_TOGGLE_SHIFT 1 | 206 | #define ETH_PMD_FLOW_FLAGS_TOGGLE_SHIFT 1 |
| 206 | #define ETH_PMD_FLOW_FLAGS_RESERVED_MASK 0x3F | 207 | #define ETH_PMD_FLOW_FLAGS_RESERVED_MASK 0x3F |
| 207 | #define ETH_PMD_FLOW_FLAGS_RESERVED_SHIFT 2 | 208 | #define ETH_PMD_FLOW_FLAGS_RESERVED_SHIFT 2 |
| 208 | }; | 209 | }; |
| 209 | 210 | ||
| 210 | /* Regular ETH Rx FP CQE. */ | 211 | /* Regular ETH Rx FP CQE */ |
| 211 | struct eth_fast_path_rx_reg_cqe { | 212 | struct eth_fast_path_rx_reg_cqe { |
| 212 | u8 type; | 213 | u8 type; |
| 213 | u8 bitfields; | 214 | u8 bitfields; |
| 214 | #define ETH_FAST_PATH_RX_REG_CQE_RSS_HASH_TYPE_MASK 0x7 | 215 | #define ETH_FAST_PATH_RX_REG_CQE_RSS_HASH_TYPE_MASK 0x7 |
| 215 | #define ETH_FAST_PATH_RX_REG_CQE_RSS_HASH_TYPE_SHIFT 0 | 216 | #define ETH_FAST_PATH_RX_REG_CQE_RSS_HASH_TYPE_SHIFT 0 |
| 216 | #define ETH_FAST_PATH_RX_REG_CQE_TC_MASK 0xF | 217 | #define ETH_FAST_PATH_RX_REG_CQE_TC_MASK 0xF |
| 217 | #define ETH_FAST_PATH_RX_REG_CQE_TC_SHIFT 3 | 218 | #define ETH_FAST_PATH_RX_REG_CQE_TC_SHIFT 3 |
| 218 | #define ETH_FAST_PATH_RX_REG_CQE_RESERVED0_MASK 0x1 | 219 | #define ETH_FAST_PATH_RX_REG_CQE_RESERVED0_MASK 0x1 |
| 219 | #define ETH_FAST_PATH_RX_REG_CQE_RESERVED0_SHIFT 7 | 220 | #define ETH_FAST_PATH_RX_REG_CQE_RESERVED0_SHIFT 7 |
| 220 | __le16 pkt_len; | 221 | __le16 pkt_len; |
| 221 | struct parsing_and_err_flags pars_flags; | 222 | struct parsing_and_err_flags pars_flags; |
| 222 | __le16 vlan_tag; | 223 | __le16 vlan_tag; |
| @@ -231,7 +232,7 @@ struct eth_fast_path_rx_reg_cqe { | |||
| 231 | struct eth_pmd_flow_flags pmd_flags; | 232 | struct eth_pmd_flow_flags pmd_flags; |
| 232 | }; | 233 | }; |
| 233 | 234 | ||
| 234 | /* TPA-continue ETH Rx FP CQE. */ | 235 | /* TPA-continue ETH Rx FP CQE */ |
| 235 | struct eth_fast_path_rx_tpa_cont_cqe { | 236 | struct eth_fast_path_rx_tpa_cont_cqe { |
| 236 | u8 type; | 237 | u8 type; |
| 237 | u8 tpa_agg_index; | 238 | u8 tpa_agg_index; |
| @@ -243,7 +244,7 @@ struct eth_fast_path_rx_tpa_cont_cqe { | |||
| 243 | struct eth_pmd_flow_flags pmd_flags; | 244 | struct eth_pmd_flow_flags pmd_flags; |
| 244 | }; | 245 | }; |
| 245 | 246 | ||
| 246 | /* TPA-end ETH Rx FP CQE. */ | 247 | /* TPA-end ETH Rx FP CQE */ |
| 247 | struct eth_fast_path_rx_tpa_end_cqe { | 248 | struct eth_fast_path_rx_tpa_end_cqe { |
| 248 | u8 type; | 249 | u8 type; |
| 249 | u8 tpa_agg_index; | 250 | u8 tpa_agg_index; |
| @@ -259,16 +260,16 @@ struct eth_fast_path_rx_tpa_end_cqe { | |||
| 259 | struct eth_pmd_flow_flags pmd_flags; | 260 | struct eth_pmd_flow_flags pmd_flags; |
| 260 | }; | 261 | }; |
| 261 | 262 | ||
| 262 | /* TPA-start ETH Rx FP CQE. */ | 263 | /* TPA-start ETH Rx FP CQE */ |
| 263 | struct eth_fast_path_rx_tpa_start_cqe { | 264 | struct eth_fast_path_rx_tpa_start_cqe { |
| 264 | u8 type; | 265 | u8 type; |
| 265 | u8 bitfields; | 266 | u8 bitfields; |
| 266 | #define ETH_FAST_PATH_RX_TPA_START_CQE_RSS_HASH_TYPE_MASK 0x7 | 267 | #define ETH_FAST_PATH_RX_TPA_START_CQE_RSS_HASH_TYPE_MASK 0x7 |
| 267 | #define ETH_FAST_PATH_RX_TPA_START_CQE_RSS_HASH_TYPE_SHIFT 0 | 268 | #define ETH_FAST_PATH_RX_TPA_START_CQE_RSS_HASH_TYPE_SHIFT 0 |
| 268 | #define ETH_FAST_PATH_RX_TPA_START_CQE_TC_MASK 0xF | 269 | #define ETH_FAST_PATH_RX_TPA_START_CQE_TC_MASK 0xF |
| 269 | #define ETH_FAST_PATH_RX_TPA_START_CQE_TC_SHIFT 3 | 270 | #define ETH_FAST_PATH_RX_TPA_START_CQE_TC_SHIFT 3 |
| 270 | #define ETH_FAST_PATH_RX_TPA_START_CQE_RESERVED0_MASK 0x1 | 271 | #define ETH_FAST_PATH_RX_TPA_START_CQE_RESERVED0_MASK 0x1 |
| 271 | #define ETH_FAST_PATH_RX_TPA_START_CQE_RESERVED0_SHIFT 7 | 272 | #define ETH_FAST_PATH_RX_TPA_START_CQE_RESERVED0_SHIFT 7 |
| 272 | __le16 seg_len; | 273 | __le16 seg_len; |
| 273 | struct parsing_and_err_flags pars_flags; | 274 | struct parsing_and_err_flags pars_flags; |
| 274 | __le16 vlan_tag; | 275 | __le16 vlan_tag; |
| @@ -295,24 +296,24 @@ struct eth_rx_bd { | |||
| 295 | struct regpair addr; | 296 | struct regpair addr; |
| 296 | }; | 297 | }; |
| 297 | 298 | ||
| 298 | /* regular ETH Rx SP CQE */ | 299 | /* Regular ETH Rx SP CQE */ |
| 299 | struct eth_slow_path_rx_cqe { | 300 | struct eth_slow_path_rx_cqe { |
| 300 | u8 type; | 301 | u8 type; |
| 301 | u8 ramrod_cmd_id; | 302 | u8 ramrod_cmd_id; |
| 302 | u8 error_flag; | 303 | u8 error_flag; |
| 303 | u8 reserved[25]; | 304 | u8 reserved[25]; |
| 304 | __le16 echo; | 305 | __le16 echo; |
| 305 | u8 reserved1; | 306 | u8 reserved1; |
| 306 | struct eth_pmd_flow_flags pmd_flags; | 307 | struct eth_pmd_flow_flags pmd_flags; |
| 307 | }; | 308 | }; |
| 308 | 309 | ||
| 309 | /* union for all ETH Rx CQE types */ | 310 | /* Union for all ETH Rx CQE types */ |
| 310 | union eth_rx_cqe { | 311 | union eth_rx_cqe { |
| 311 | struct eth_fast_path_rx_reg_cqe fast_path_regular; | 312 | struct eth_fast_path_rx_reg_cqe fast_path_regular; |
| 312 | struct eth_fast_path_rx_tpa_start_cqe fast_path_tpa_start; | 313 | struct eth_fast_path_rx_tpa_start_cqe fast_path_tpa_start; |
| 313 | struct eth_fast_path_rx_tpa_cont_cqe fast_path_tpa_cont; | 314 | struct eth_fast_path_rx_tpa_cont_cqe fast_path_tpa_cont; |
| 314 | struct eth_fast_path_rx_tpa_end_cqe fast_path_tpa_end; | 315 | struct eth_fast_path_rx_tpa_end_cqe fast_path_tpa_end; |
| 315 | struct eth_slow_path_rx_cqe slow_path; | 316 | struct eth_slow_path_rx_cqe slow_path; |
| 316 | }; | 317 | }; |
| 317 | 318 | ||
| 318 | /* ETH Rx CQE type */ | 319 | /* ETH Rx CQE type */ |
| @@ -339,7 +340,7 @@ enum eth_rx_tunn_type { | |||
| 339 | MAX_ETH_RX_TUNN_TYPE | 340 | MAX_ETH_RX_TUNN_TYPE |
| 340 | }; | 341 | }; |
| 341 | 342 | ||
| 342 | /* Aggregation end reason. */ | 343 | /* Aggregation end reason. */ |
| 343 | enum eth_tpa_end_reason { | 344 | enum eth_tpa_end_reason { |
| 344 | ETH_AGG_END_UNUSED, | 345 | ETH_AGG_END_UNUSED, |
| 345 | ETH_AGG_END_SP_UPDATE, | 346 | ETH_AGG_END_SP_UPDATE, |
| @@ -354,59 +355,59 @@ enum eth_tpa_end_reason { | |||
| 354 | 355 | ||
| 355 | /* The first tx bd of a given packet */ | 356 | /* The first tx bd of a given packet */ |
| 356 | struct eth_tx_1st_bd { | 357 | struct eth_tx_1st_bd { |
| 357 | struct regpair addr; | 358 | struct regpair addr; |
| 358 | __le16 nbytes; | 359 | __le16 nbytes; |
| 359 | struct eth_tx_data_1st_bd data; | 360 | struct eth_tx_data_1st_bd data; |
| 360 | }; | 361 | }; |
| 361 | 362 | ||
| 362 | /* The second tx bd of a given packet */ | 363 | /* The second tx bd of a given packet */ |
| 363 | struct eth_tx_2nd_bd { | 364 | struct eth_tx_2nd_bd { |
| 364 | struct regpair addr; | 365 | struct regpair addr; |
| 365 | __le16 nbytes; | 366 | __le16 nbytes; |
| 366 | struct eth_tx_data_2nd_bd data; | 367 | struct eth_tx_data_2nd_bd data; |
| 367 | }; | 368 | }; |
| 368 | 369 | ||
| 369 | /* The parsing information data for the third tx bd of a given packet. */ | 370 | /* The parsing information data for the third tx bd of a given packet */ |
| 370 | struct eth_tx_data_3rd_bd { | 371 | struct eth_tx_data_3rd_bd { |
| 371 | __le16 lso_mss; | 372 | __le16 lso_mss; |
| 372 | __le16 bitfields; | 373 | __le16 bitfields; |
| 373 | #define ETH_TX_DATA_3RD_BD_TCP_HDR_LEN_DW_MASK 0xF | 374 | #define ETH_TX_DATA_3RD_BD_TCP_HDR_LEN_DW_MASK 0xF |
| 374 | #define ETH_TX_DATA_3RD_BD_TCP_HDR_LEN_DW_SHIFT 0 | 375 | #define ETH_TX_DATA_3RD_BD_TCP_HDR_LEN_DW_SHIFT 0 |
| 375 | #define ETH_TX_DATA_3RD_BD_HDR_NBD_MASK 0xF | 376 | #define ETH_TX_DATA_3RD_BD_HDR_NBD_MASK 0xF |
| 376 | #define ETH_TX_DATA_3RD_BD_HDR_NBD_SHIFT 4 | 377 | #define ETH_TX_DATA_3RD_BD_HDR_NBD_SHIFT 4 |
| 377 | #define ETH_TX_DATA_3RD_BD_START_BD_MASK 0x1 | 378 | #define ETH_TX_DATA_3RD_BD_START_BD_MASK 0x1 |
| 378 | #define ETH_TX_DATA_3RD_BD_START_BD_SHIFT 8 | 379 | #define ETH_TX_DATA_3RD_BD_START_BD_SHIFT 8 |
| 379 | #define ETH_TX_DATA_3RD_BD_RESERVED0_MASK 0x7F | 380 | #define ETH_TX_DATA_3RD_BD_RESERVED0_MASK 0x7F |
| 380 | #define ETH_TX_DATA_3RD_BD_RESERVED0_SHIFT 9 | 381 | #define ETH_TX_DATA_3RD_BD_RESERVED0_SHIFT 9 |
| 381 | u8 tunn_l4_hdr_start_offset_w; | 382 | u8 tunn_l4_hdr_start_offset_w; |
| 382 | u8 tunn_hdr_size_w; | 383 | u8 tunn_hdr_size_w; |
| 383 | }; | 384 | }; |
| 384 | 385 | ||
| 385 | /* The third tx bd of a given packet */ | 386 | /* The third tx bd of a given packet */ |
| 386 | struct eth_tx_3rd_bd { | 387 | struct eth_tx_3rd_bd { |
| 387 | struct regpair addr; | 388 | struct regpair addr; |
| 388 | __le16 nbytes; | 389 | __le16 nbytes; |
| 389 | struct eth_tx_data_3rd_bd data; | 390 | struct eth_tx_data_3rd_bd data; |
| 390 | }; | 391 | }; |
| 391 | 392 | ||
| 392 | /* Complementary information for the regular tx bd of a given packet. */ | 393 | /* Complementary information for the regular tx bd of a given packet */ |
| 393 | struct eth_tx_data_bd { | 394 | struct eth_tx_data_bd { |
| 394 | __le16 reserved0; | 395 | __le16 reserved0; |
| 395 | __le16 bitfields; | 396 | __le16 bitfields; |
| 396 | #define ETH_TX_DATA_BD_RESERVED1_MASK 0xFF | 397 | #define ETH_TX_DATA_BD_RESERVED1_MASK 0xFF |
| 397 | #define ETH_TX_DATA_BD_RESERVED1_SHIFT 0 | 398 | #define ETH_TX_DATA_BD_RESERVED1_SHIFT 0 |
| 398 | #define ETH_TX_DATA_BD_START_BD_MASK 0x1 | 399 | #define ETH_TX_DATA_BD_START_BD_MASK 0x1 |
| 399 | #define ETH_TX_DATA_BD_START_BD_SHIFT 8 | 400 | #define ETH_TX_DATA_BD_START_BD_SHIFT 8 |
| 400 | #define ETH_TX_DATA_BD_RESERVED2_MASK 0x7F | 401 | #define ETH_TX_DATA_BD_RESERVED2_MASK 0x7F |
| 401 | #define ETH_TX_DATA_BD_RESERVED2_SHIFT 9 | 402 | #define ETH_TX_DATA_BD_RESERVED2_SHIFT 9 |
| 402 | __le16 reserved3; | 403 | __le16 reserved3; |
| 403 | }; | 404 | }; |
| 404 | 405 | ||
| 405 | /* The common non-special TX BD ring element */ | 406 | /* The common non-special TX BD ring element */ |
| 406 | struct eth_tx_bd { | 407 | struct eth_tx_bd { |
| 407 | struct regpair addr; | 408 | struct regpair addr; |
| 408 | __le16 nbytes; | 409 | __le16 nbytes; |
| 409 | struct eth_tx_data_bd data; | 410 | struct eth_tx_data_bd data; |
| 410 | }; | 411 | }; |
| 411 | 412 | ||
| 412 | union eth_tx_bd_types { | 413 | union eth_tx_bd_types { |
| @@ -434,18 +435,30 @@ struct xstorm_eth_queue_zone { | |||
| 434 | /* ETH doorbell data */ | 435 | /* ETH doorbell data */ |
| 435 | struct eth_db_data { | 436 | struct eth_db_data { |
| 436 | u8 params; | 437 | u8 params; |
| 437 | #define ETH_DB_DATA_DEST_MASK 0x3 | 438 | #define ETH_DB_DATA_DEST_MASK 0x3 |
| 438 | #define ETH_DB_DATA_DEST_SHIFT 0 | 439 | #define ETH_DB_DATA_DEST_SHIFT 0 |
| 439 | #define ETH_DB_DATA_AGG_CMD_MASK 0x3 | 440 | #define ETH_DB_DATA_AGG_CMD_MASK 0x3 |
| 440 | #define ETH_DB_DATA_AGG_CMD_SHIFT 2 | 441 | #define ETH_DB_DATA_AGG_CMD_SHIFT 2 |
| 441 | #define ETH_DB_DATA_BYPASS_EN_MASK 0x1 | 442 | #define ETH_DB_DATA_BYPASS_EN_MASK 0x1 |
| 442 | #define ETH_DB_DATA_BYPASS_EN_SHIFT 4 | 443 | #define ETH_DB_DATA_BYPASS_EN_SHIFT 4 |
| 443 | #define ETH_DB_DATA_RESERVED_MASK 0x1 | 444 | #define ETH_DB_DATA_RESERVED_MASK 0x1 |
| 444 | #define ETH_DB_DATA_RESERVED_SHIFT 5 | 445 | #define ETH_DB_DATA_RESERVED_SHIFT 5 |
| 445 | #define ETH_DB_DATA_AGG_VAL_SEL_MASK 0x3 | 446 | #define ETH_DB_DATA_AGG_VAL_SEL_MASK 0x3 |
| 446 | #define ETH_DB_DATA_AGG_VAL_SEL_SHIFT 6 | 447 | #define ETH_DB_DATA_AGG_VAL_SEL_SHIFT 6 |
| 447 | u8 agg_flags; | 448 | u8 agg_flags; |
| 448 | __le16 bd_prod; | 449 | __le16 bd_prod; |
| 449 | }; | 450 | }; |
| 450 | 451 | ||
| 452 | /* RSS hash type */ | ||
| 453 | enum rss_hash_type { | ||
| 454 | RSS_HASH_TYPE_DEFAULT = 0, | ||
| 455 | RSS_HASH_TYPE_IPV4 = 1, | ||
| 456 | RSS_HASH_TYPE_TCP_IPV4 = 2, | ||
| 457 | RSS_HASH_TYPE_IPV6 = 3, | ||
| 458 | RSS_HASH_TYPE_TCP_IPV6 = 4, | ||
| 459 | RSS_HASH_TYPE_UDP_IPV4 = 5, | ||
| 460 | RSS_HASH_TYPE_UDP_IPV6 = 6, | ||
| 461 | MAX_RSS_HASH_TYPE | ||
| 462 | }; | ||
| 463 | |||
| 451 | #endif /* __ETH_COMMON__ */ | 464 | #endif /* __ETH_COMMON__ */ |
diff --git a/include/linux/qed/fcoe_common.h b/include/linux/qed/fcoe_common.h index 12fc9e788eea..e720a7b37b0b 100644 --- a/include/linux/qed/fcoe_common.h +++ b/include/linux/qed/fcoe_common.h | |||
| @@ -8,217 +8,78 @@ | |||
| 8 | 8 | ||
| 9 | #ifndef __FCOE_COMMON__ | 9 | #ifndef __FCOE_COMMON__ |
| 10 | #define __FCOE_COMMON__ | 10 | #define __FCOE_COMMON__ |
| 11 | |||
| 11 | /*********************/ | 12 | /*********************/ |
| 12 | /* FCOE FW CONSTANTS */ | 13 | /* FCOE FW CONSTANTS */ |
| 13 | /*********************/ | 14 | /*********************/ |
| 14 | 15 | ||
| 15 | #define FC_ABTS_REPLY_MAX_PAYLOAD_LEN 12 | 16 | #define FC_ABTS_REPLY_MAX_PAYLOAD_LEN 12 |
| 16 | 17 | ||
| 17 | struct fcoe_abts_pkt { | 18 | /* The fcoe storm task context protection-information of Ystorm */ |
| 18 | __le32 abts_rsp_fc_payload_lo; | 19 | struct protection_info_ctx { |
| 19 | __le16 abts_rsp_rx_id; | 20 | __le16 flags; |
| 20 | u8 abts_rsp_rctl; | 21 | #define PROTECTION_INFO_CTX_HOST_INTERFACE_MASK 0x3 |
| 21 | u8 reserved2; | 22 | #define PROTECTION_INFO_CTX_HOST_INTERFACE_SHIFT 0 |
| 22 | }; | 23 | #define PROTECTION_INFO_CTX_DIF_TO_PEER_MASK 0x1 |
| 23 | 24 | #define PROTECTION_INFO_CTX_DIF_TO_PEER_SHIFT 2 | |
| 24 | /* FCoE additional WQE (Sq/XferQ) information */ | 25 | #define PROTECTION_INFO_CTX_VALIDATE_DIX_APP_TAG_MASK 0x1 |
| 25 | union fcoe_additional_info_union { | 26 | #define PROTECTION_INFO_CTX_VALIDATE_DIX_APP_TAG_SHIFT 3 |
| 26 | __le32 previous_tid; | 27 | #define PROTECTION_INFO_CTX_INTERVAL_SIZE_LOG_MASK 0xF |
| 27 | __le32 parent_tid; | 28 | #define PROTECTION_INFO_CTX_INTERVAL_SIZE_LOG_SHIFT 4 |
| 28 | __le32 burst_length; | 29 | #define PROTECTION_INFO_CTX_VALIDATE_DIX_REF_TAG_MASK 0x1 |
| 29 | __le32 seq_rec_updated_offset; | 30 | #define PROTECTION_INFO_CTX_VALIDATE_DIX_REF_TAG_SHIFT 8 |
| 30 | }; | 31 | #define PROTECTION_INFO_CTX_RESERVED0_MASK 0x7F |
| 31 | 32 | #define PROTECTION_INFO_CTX_RESERVED0_SHIFT 9 | |
| 32 | struct fcoe_exp_ro { | 33 | u8 dix_block_size; |
| 33 | __le32 data_offset; | 34 | u8 dst_size; |
| 34 | __le32 reserved; | ||
| 35 | }; | ||
| 36 | |||
| 37 | union fcoe_cleanup_addr_exp_ro_union { | ||
| 38 | struct regpair abts_rsp_fc_payload_hi; | ||
| 39 | struct fcoe_exp_ro exp_ro; | ||
| 40 | }; | ||
| 41 | |||
| 42 | /* FCoE Ramrod Command IDs */ | ||
| 43 | enum fcoe_completion_status { | ||
| 44 | FCOE_COMPLETION_STATUS_SUCCESS, | ||
| 45 | FCOE_COMPLETION_STATUS_FCOE_VER_ERR, | ||
| 46 | FCOE_COMPLETION_STATUS_SRC_MAC_ADD_ARR_ERR, | ||
| 47 | MAX_FCOE_COMPLETION_STATUS | ||
| 48 | }; | ||
| 49 | |||
| 50 | struct fc_addr_nw { | ||
| 51 | u8 addr_lo; | ||
| 52 | u8 addr_mid; | ||
| 53 | u8 addr_hi; | ||
| 54 | }; | ||
| 55 | |||
| 56 | /* FCoE connection offload */ | ||
| 57 | struct fcoe_conn_offload_ramrod_data { | ||
| 58 | struct regpair sq_pbl_addr; | ||
| 59 | struct regpair sq_curr_page_addr; | ||
| 60 | struct regpair sq_next_page_addr; | ||
| 61 | struct regpair xferq_pbl_addr; | ||
| 62 | struct regpair xferq_curr_page_addr; | ||
| 63 | struct regpair xferq_next_page_addr; | ||
| 64 | struct regpair respq_pbl_addr; | ||
| 65 | struct regpair respq_curr_page_addr; | ||
| 66 | struct regpair respq_next_page_addr; | ||
| 67 | __le16 dst_mac_addr_lo; | ||
| 68 | __le16 dst_mac_addr_mid; | ||
| 69 | __le16 dst_mac_addr_hi; | ||
| 70 | __le16 src_mac_addr_lo; | ||
| 71 | __le16 src_mac_addr_mid; | ||
| 72 | __le16 src_mac_addr_hi; | ||
| 73 | __le16 tx_max_fc_pay_len; | ||
| 74 | __le16 e_d_tov_timer_val; | ||
| 75 | __le16 rx_max_fc_pay_len; | ||
| 76 | __le16 vlan_tag; | ||
| 77 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_VLAN_ID_MASK 0xFFF | ||
| 78 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_VLAN_ID_SHIFT 0 | ||
| 79 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_CFI_MASK 0x1 | ||
| 80 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_CFI_SHIFT 12 | ||
| 81 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_PRIORITY_MASK 0x7 | ||
| 82 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_PRIORITY_SHIFT 13 | ||
| 83 | __le16 physical_q0; | ||
| 84 | __le16 rec_rr_tov_timer_val; | ||
| 85 | struct fc_addr_nw s_id; | ||
| 86 | u8 max_conc_seqs_c3; | ||
| 87 | struct fc_addr_nw d_id; | ||
| 88 | u8 flags; | ||
| 89 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_CONT_INCR_SEQ_CNT_MASK 0x1 | ||
| 90 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_CONT_INCR_SEQ_CNT_SHIFT 0 | ||
| 91 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_CONF_REQ_MASK 0x1 | ||
| 92 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_CONF_REQ_SHIFT 1 | ||
| 93 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_REC_VALID_MASK 0x1 | ||
| 94 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_REC_VALID_SHIFT 2 | ||
| 95 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_VLAN_FLAG_MASK 0x1 | ||
| 96 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_VLAN_FLAG_SHIFT 3 | ||
| 97 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_MODE_MASK 0x3 | ||
| 98 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_MODE_SHIFT 4 | ||
| 99 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_RESERVED0_MASK 0x3 | ||
| 100 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_RESERVED0_SHIFT 6 | ||
| 101 | __le16 conn_id; | ||
| 102 | u8 def_q_idx; | ||
| 103 | u8 reserved[5]; | ||
| 104 | }; | ||
| 105 | |||
| 106 | /* FCoE terminate connection request */ | ||
| 107 | struct fcoe_conn_terminate_ramrod_data { | ||
| 108 | struct regpair terminate_params_addr; | ||
| 109 | }; | ||
| 110 | |||
| 111 | struct fcoe_slow_sgl_ctx { | ||
| 112 | struct regpair base_sgl_addr; | ||
| 113 | __le16 curr_sge_off; | ||
| 114 | __le16 remainder_num_sges; | ||
| 115 | __le16 curr_sgl_index; | ||
| 116 | __le16 reserved; | ||
| 117 | }; | ||
| 118 | |||
| 119 | union fcoe_dix_desc_ctx { | ||
| 120 | struct fcoe_slow_sgl_ctx dix_sgl; | ||
| 121 | struct scsi_sge cached_dix_sge; | ||
| 122 | }; | 35 | }; |
| 123 | 36 | ||
| 124 | struct fcoe_fast_sgl_ctx { | 37 | /* The fcoe storm task context protection-information of Ystorm */ |
| 125 | struct regpair sgl_start_addr; | 38 | union protection_info_union_ctx { |
| 126 | __le32 sgl_byte_offset; | 39 | struct protection_info_ctx info; |
| 127 | __le16 task_reuse_cnt; | 40 | __le32 value; |
| 128 | __le16 init_offset_in_first_sge; | ||
| 129 | }; | 41 | }; |
| 130 | 42 | ||
| 43 | /* FCP CMD payload */ | ||
| 131 | struct fcoe_fcp_cmd_payload { | 44 | struct fcoe_fcp_cmd_payload { |
| 132 | __le32 opaque[8]; | 45 | __le32 opaque[8]; |
| 133 | }; | 46 | }; |
| 134 | 47 | ||
| 48 | /* FCP RSP payload */ | ||
| 135 | struct fcoe_fcp_rsp_payload { | 49 | struct fcoe_fcp_rsp_payload { |
| 136 | __le32 opaque[6]; | 50 | __le32 opaque[6]; |
| 137 | }; | 51 | }; |
| 138 | 52 | ||
| 139 | struct fcoe_fcp_xfer_payload { | 53 | /* FCP RSP payload */ |
| 140 | __le32 opaque[3]; | ||
| 141 | }; | ||
| 142 | |||
| 143 | /* FCoE firmware function init */ | ||
| 144 | struct fcoe_init_func_ramrod_data { | ||
| 145 | struct scsi_init_func_params func_params; | ||
| 146 | struct scsi_init_func_queues q_params; | ||
| 147 | __le16 mtu; | ||
| 148 | __le16 sq_num_pages_in_pbl; | ||
| 149 | __le32 reserved; | ||
| 150 | }; | ||
| 151 | |||
| 152 | /* FCoE: Mode of the connection: Target or Initiator or both */ | ||
| 153 | enum fcoe_mode_type { | ||
| 154 | FCOE_INITIATOR_MODE = 0x0, | ||
| 155 | FCOE_TARGET_MODE = 0x1, | ||
| 156 | FCOE_BOTH_OR_NOT_CHOSEN = 0x3, | ||
| 157 | MAX_FCOE_MODE_TYPE | ||
| 158 | }; | ||
| 159 | |||
| 160 | struct fcoe_rx_stat { | ||
| 161 | struct regpair fcoe_rx_byte_cnt; | ||
| 162 | struct regpair fcoe_rx_data_pkt_cnt; | ||
| 163 | struct regpair fcoe_rx_xfer_pkt_cnt; | ||
| 164 | struct regpair fcoe_rx_other_pkt_cnt; | ||
| 165 | __le32 fcoe_silent_drop_pkt_cmdq_full_cnt; | ||
| 166 | __le32 fcoe_silent_drop_pkt_rq_full_cnt; | ||
| 167 | __le32 fcoe_silent_drop_pkt_crc_error_cnt; | ||
| 168 | __le32 fcoe_silent_drop_pkt_task_invalid_cnt; | ||
| 169 | __le32 fcoe_silent_drop_total_pkt_cnt; | ||
| 170 | __le32 rsrv; | ||
| 171 | }; | ||
| 172 | |||
| 173 | struct fcoe_stat_ramrod_data { | ||
| 174 | struct regpair stat_params_addr; | ||
| 175 | }; | ||
| 176 | |||
| 177 | struct protection_info_ctx { | ||
| 178 | __le16 flags; | ||
| 179 | #define PROTECTION_INFO_CTX_HOST_INTERFACE_MASK 0x3 | ||
| 180 | #define PROTECTION_INFO_CTX_HOST_INTERFACE_SHIFT 0 | ||
| 181 | #define PROTECTION_INFO_CTX_DIF_TO_PEER_MASK 0x1 | ||
| 182 | #define PROTECTION_INFO_CTX_DIF_TO_PEER_SHIFT 2 | ||
| 183 | #define PROTECTION_INFO_CTX_VALIDATE_DIX_APP_TAG_MASK 0x1 | ||
| 184 | #define PROTECTION_INFO_CTX_VALIDATE_DIX_APP_TAG_SHIFT 3 | ||
| 185 | #define PROTECTION_INFO_CTX_INTERVAL_SIZE_LOG_MASK 0xF | ||
| 186 | #define PROTECTION_INFO_CTX_INTERVAL_SIZE_LOG_SHIFT 4 | ||
| 187 | #define PROTECTION_INFO_CTX_VALIDATE_DIX_REF_TAG_MASK 0x1 | ||
| 188 | #define PROTECTION_INFO_CTX_VALIDATE_DIX_REF_TAG_SHIFT 8 | ||
| 189 | #define PROTECTION_INFO_CTX_RESERVED0_MASK 0x7F | ||
| 190 | #define PROTECTION_INFO_CTX_RESERVED0_SHIFT 9 | ||
| 191 | u8 dix_block_size; | ||
| 192 | u8 dst_size; | ||
| 193 | }; | ||
| 194 | |||
| 195 | union protection_info_union_ctx { | ||
| 196 | struct protection_info_ctx info; | ||
| 197 | __le32 value; | ||
| 198 | }; | ||
| 199 | |||
| 200 | struct fcp_rsp_payload_padded { | 54 | struct fcp_rsp_payload_padded { |
| 201 | struct fcoe_fcp_rsp_payload rsp_payload; | 55 | struct fcoe_fcp_rsp_payload rsp_payload; |
| 202 | __le32 reserved[2]; | 56 | __le32 reserved[2]; |
| 203 | }; | 57 | }; |
| 204 | 58 | ||
| 59 | /* FCP RSP payload */ | ||
| 60 | struct fcoe_fcp_xfer_payload { | ||
| 61 | __le32 opaque[3]; | ||
| 62 | }; | ||
| 63 | |||
| 64 | /* FCP RSP payload */ | ||
| 205 | struct fcp_xfer_payload_padded { | 65 | struct fcp_xfer_payload_padded { |
| 206 | struct fcoe_fcp_xfer_payload xfer_payload; | 66 | struct fcoe_fcp_xfer_payload xfer_payload; |
| 207 | __le32 reserved[5]; | 67 | __le32 reserved[5]; |
| 208 | }; | 68 | }; |
| 209 | 69 | ||
| 70 | /* Task params */ | ||
| 210 | struct fcoe_tx_data_params { | 71 | struct fcoe_tx_data_params { |
| 211 | __le32 data_offset; | 72 | __le32 data_offset; |
| 212 | __le32 offset_in_io; | 73 | __le32 offset_in_io; |
| 213 | u8 flags; | 74 | u8 flags; |
| 214 | #define FCOE_TX_DATA_PARAMS_OFFSET_IN_IO_VALID_MASK 0x1 | 75 | #define FCOE_TX_DATA_PARAMS_OFFSET_IN_IO_VALID_MASK 0x1 |
| 215 | #define FCOE_TX_DATA_PARAMS_OFFSET_IN_IO_VALID_SHIFT 0 | 76 | #define FCOE_TX_DATA_PARAMS_OFFSET_IN_IO_VALID_SHIFT 0 |
| 216 | #define FCOE_TX_DATA_PARAMS_DROP_DATA_MASK 0x1 | 77 | #define FCOE_TX_DATA_PARAMS_DROP_DATA_MASK 0x1 |
| 217 | #define FCOE_TX_DATA_PARAMS_DROP_DATA_SHIFT 1 | 78 | #define FCOE_TX_DATA_PARAMS_DROP_DATA_SHIFT 1 |
| 218 | #define FCOE_TX_DATA_PARAMS_AFTER_SEQ_REC_MASK 0x1 | 79 | #define FCOE_TX_DATA_PARAMS_AFTER_SEQ_REC_MASK 0x1 |
| 219 | #define FCOE_TX_DATA_PARAMS_AFTER_SEQ_REC_SHIFT 2 | 80 | #define FCOE_TX_DATA_PARAMS_AFTER_SEQ_REC_SHIFT 2 |
| 220 | #define FCOE_TX_DATA_PARAMS_RESERVED0_MASK 0x1F | 81 | #define FCOE_TX_DATA_PARAMS_RESERVED0_MASK 0x1F |
| 221 | #define FCOE_TX_DATA_PARAMS_RESERVED0_SHIFT 3 | 82 | #define FCOE_TX_DATA_PARAMS_RESERVED0_SHIFT 3 |
| 222 | u8 dif_residual; | 83 | u8 dif_residual; |
| 223 | __le16 seq_cnt; | 84 | __le16 seq_cnt; |
| 224 | __le16 single_sge_saved_offset; | 85 | __le16 single_sge_saved_offset; |
| @@ -227,6 +88,7 @@ struct fcoe_tx_data_params { | |||
| 227 | __le16 reserved3; | 88 | __le16 reserved3; |
| 228 | }; | 89 | }; |
| 229 | 90 | ||
| 91 | /* Middle path parameters: FC header fields provided by the driver */ | ||
| 230 | struct fcoe_tx_mid_path_params { | 92 | struct fcoe_tx_mid_path_params { |
| 231 | __le32 parameter; | 93 | __le32 parameter; |
| 232 | u8 r_ctl; | 94 | u8 r_ctl; |
| @@ -237,11 +99,13 @@ struct fcoe_tx_mid_path_params { | |||
| 237 | __le16 ox_id; | 99 | __le16 ox_id; |
| 238 | }; | 100 | }; |
| 239 | 101 | ||
| 102 | /* Task params */ | ||
| 240 | struct fcoe_tx_params { | 103 | struct fcoe_tx_params { |
| 241 | struct fcoe_tx_data_params data; | 104 | struct fcoe_tx_data_params data; |
| 242 | struct fcoe_tx_mid_path_params mid_path; | 105 | struct fcoe_tx_mid_path_params mid_path; |
| 243 | }; | 106 | }; |
| 244 | 107 | ||
| 108 | /* Union of FCP CMD payload \ TX params \ ABTS \ Cleanup */ | ||
| 245 | union fcoe_tx_info_union_ctx { | 109 | union fcoe_tx_info_union_ctx { |
| 246 | struct fcoe_fcp_cmd_payload fcp_cmd_payload; | 110 | struct fcoe_fcp_cmd_payload fcp_cmd_payload; |
| 247 | struct fcp_rsp_payload_padded fcp_rsp_payload; | 111 | struct fcp_rsp_payload_padded fcp_rsp_payload; |
| @@ -249,13 +113,29 @@ union fcoe_tx_info_union_ctx { | |||
| 249 | struct fcoe_tx_params tx_params; | 113 | struct fcoe_tx_params tx_params; |
| 250 | }; | 114 | }; |
| 251 | 115 | ||
| 116 | /* Data sgl */ | ||
| 117 | struct fcoe_slow_sgl_ctx { | ||
| 118 | struct regpair base_sgl_addr; | ||
| 119 | __le16 curr_sge_off; | ||
| 120 | __le16 remainder_num_sges; | ||
| 121 | __le16 curr_sgl_index; | ||
| 122 | __le16 reserved; | ||
| 123 | }; | ||
| 124 | |||
| 125 | /* Union of DIX SGL \ cached DIX sges */ | ||
| 126 | union fcoe_dix_desc_ctx { | ||
| 127 | struct fcoe_slow_sgl_ctx dix_sgl; | ||
| 128 | struct scsi_sge cached_dix_sge; | ||
| 129 | }; | ||
| 130 | |||
| 131 | /* The fcoe storm task context of Ystorm */ | ||
| 252 | struct ystorm_fcoe_task_st_ctx { | 132 | struct ystorm_fcoe_task_st_ctx { |
| 253 | u8 task_type; | 133 | u8 task_type; |
| 254 | u8 sgl_mode; | 134 | u8 sgl_mode; |
| 255 | #define YSTORM_FCOE_TASK_ST_CTX_TX_SGL_MODE_MASK 0x1 | 135 | #define YSTORM_FCOE_TASK_ST_CTX_TX_SGL_MODE_MASK 0x1 |
| 256 | #define YSTORM_FCOE_TASK_ST_CTX_TX_SGL_MODE_SHIFT 0 | 136 | #define YSTORM_FCOE_TASK_ST_CTX_TX_SGL_MODE_SHIFT 0 |
| 257 | #define YSTORM_FCOE_TASK_ST_CTX_RSRV_MASK 0x7F | 137 | #define YSTORM_FCOE_TASK_ST_CTX_RSRV_MASK 0x7F |
| 258 | #define YSTORM_FCOE_TASK_ST_CTX_RSRV_SHIFT 1 | 138 | #define YSTORM_FCOE_TASK_ST_CTX_RSRV_SHIFT 1 |
| 259 | u8 cached_dix_sge; | 139 | u8 cached_dix_sge; |
| 260 | u8 expect_first_xfer; | 140 | u8 expect_first_xfer; |
| 261 | __le32 num_pbf_zero_write; | 141 | __le32 num_pbf_zero_write; |
| @@ -277,44 +157,44 @@ struct ystorm_fcoe_task_ag_ctx { | |||
| 277 | u8 byte1; | 157 | u8 byte1; |
| 278 | __le16 word0; | 158 | __le16 word0; |
| 279 | u8 flags0; | 159 | u8 flags0; |
| 280 | #define YSTORM_FCOE_TASK_AG_CTX_NIBBLE0_MASK 0xF | 160 | #define YSTORM_FCOE_TASK_AG_CTX_NIBBLE0_MASK 0xF |
| 281 | #define YSTORM_FCOE_TASK_AG_CTX_NIBBLE0_SHIFT 0 | 161 | #define YSTORM_FCOE_TASK_AG_CTX_NIBBLE0_SHIFT 0 |
| 282 | #define YSTORM_FCOE_TASK_AG_CTX_BIT0_MASK 0x1 | 162 | #define YSTORM_FCOE_TASK_AG_CTX_BIT0_MASK 0x1 |
| 283 | #define YSTORM_FCOE_TASK_AG_CTX_BIT0_SHIFT 4 | 163 | #define YSTORM_FCOE_TASK_AG_CTX_BIT0_SHIFT 4 |
| 284 | #define YSTORM_FCOE_TASK_AG_CTX_BIT1_MASK 0x1 | 164 | #define YSTORM_FCOE_TASK_AG_CTX_BIT1_MASK 0x1 |
| 285 | #define YSTORM_FCOE_TASK_AG_CTX_BIT1_SHIFT 5 | 165 | #define YSTORM_FCOE_TASK_AG_CTX_BIT1_SHIFT 5 |
| 286 | #define YSTORM_FCOE_TASK_AG_CTX_BIT2_MASK 0x1 | 166 | #define YSTORM_FCOE_TASK_AG_CTX_BIT2_MASK 0x1 |
| 287 | #define YSTORM_FCOE_TASK_AG_CTX_BIT2_SHIFT 6 | 167 | #define YSTORM_FCOE_TASK_AG_CTX_BIT2_SHIFT 6 |
| 288 | #define YSTORM_FCOE_TASK_AG_CTX_BIT3_MASK 0x1 | 168 | #define YSTORM_FCOE_TASK_AG_CTX_BIT3_MASK 0x1 |
| 289 | #define YSTORM_FCOE_TASK_AG_CTX_BIT3_SHIFT 7 | 169 | #define YSTORM_FCOE_TASK_AG_CTX_BIT3_SHIFT 7 |
| 290 | u8 flags1; | 170 | u8 flags1; |
| 291 | #define YSTORM_FCOE_TASK_AG_CTX_CF0_MASK 0x3 | 171 | #define YSTORM_FCOE_TASK_AG_CTX_CF0_MASK 0x3 |
| 292 | #define YSTORM_FCOE_TASK_AG_CTX_CF0_SHIFT 0 | 172 | #define YSTORM_FCOE_TASK_AG_CTX_CF0_SHIFT 0 |
| 293 | #define YSTORM_FCOE_TASK_AG_CTX_CF1_MASK 0x3 | 173 | #define YSTORM_FCOE_TASK_AG_CTX_CF1_MASK 0x3 |
| 294 | #define YSTORM_FCOE_TASK_AG_CTX_CF1_SHIFT 2 | 174 | #define YSTORM_FCOE_TASK_AG_CTX_CF1_SHIFT 2 |
| 295 | #define YSTORM_FCOE_TASK_AG_CTX_CF2SPECIAL_MASK 0x3 | 175 | #define YSTORM_FCOE_TASK_AG_CTX_CF2SPECIAL_MASK 0x3 |
| 296 | #define YSTORM_FCOE_TASK_AG_CTX_CF2SPECIAL_SHIFT 4 | 176 | #define YSTORM_FCOE_TASK_AG_CTX_CF2SPECIAL_SHIFT 4 |
| 297 | #define YSTORM_FCOE_TASK_AG_CTX_CF0EN_MASK 0x1 | 177 | #define YSTORM_FCOE_TASK_AG_CTX_CF0EN_MASK 0x1 |
| 298 | #define YSTORM_FCOE_TASK_AG_CTX_CF0EN_SHIFT 6 | 178 | #define YSTORM_FCOE_TASK_AG_CTX_CF0EN_SHIFT 6 |
| 299 | #define YSTORM_FCOE_TASK_AG_CTX_CF1EN_MASK 0x1 | 179 | #define YSTORM_FCOE_TASK_AG_CTX_CF1EN_MASK 0x1 |
| 300 | #define YSTORM_FCOE_TASK_AG_CTX_CF1EN_SHIFT 7 | 180 | #define YSTORM_FCOE_TASK_AG_CTX_CF1EN_SHIFT 7 |
| 301 | u8 flags2; | 181 | u8 flags2; |
| 302 | #define YSTORM_FCOE_TASK_AG_CTX_BIT4_MASK 0x1 | 182 | #define YSTORM_FCOE_TASK_AG_CTX_BIT4_MASK 0x1 |
| 303 | #define YSTORM_FCOE_TASK_AG_CTX_BIT4_SHIFT 0 | 183 | #define YSTORM_FCOE_TASK_AG_CTX_BIT4_SHIFT 0 |
| 304 | #define YSTORM_FCOE_TASK_AG_CTX_RULE0EN_MASK 0x1 | 184 | #define YSTORM_FCOE_TASK_AG_CTX_RULE0EN_MASK 0x1 |
| 305 | #define YSTORM_FCOE_TASK_AG_CTX_RULE0EN_SHIFT 1 | 185 | #define YSTORM_FCOE_TASK_AG_CTX_RULE0EN_SHIFT 1 |
| 306 | #define YSTORM_FCOE_TASK_AG_CTX_RULE1EN_MASK 0x1 | 186 | #define YSTORM_FCOE_TASK_AG_CTX_RULE1EN_MASK 0x1 |
| 307 | #define YSTORM_FCOE_TASK_AG_CTX_RULE1EN_SHIFT 2 | 187 | #define YSTORM_FCOE_TASK_AG_CTX_RULE1EN_SHIFT 2 |
| 308 | #define YSTORM_FCOE_TASK_AG_CTX_RULE2EN_MASK 0x1 | 188 | #define YSTORM_FCOE_TASK_AG_CTX_RULE2EN_MASK 0x1 |
| 309 | #define YSTORM_FCOE_TASK_AG_CTX_RULE2EN_SHIFT 3 | 189 | #define YSTORM_FCOE_TASK_AG_CTX_RULE2EN_SHIFT 3 |
| 310 | #define YSTORM_FCOE_TASK_AG_CTX_RULE3EN_MASK 0x1 | 190 | #define YSTORM_FCOE_TASK_AG_CTX_RULE3EN_MASK 0x1 |
| 311 | #define YSTORM_FCOE_TASK_AG_CTX_RULE3EN_SHIFT 4 | 191 | #define YSTORM_FCOE_TASK_AG_CTX_RULE3EN_SHIFT 4 |
| 312 | #define YSTORM_FCOE_TASK_AG_CTX_RULE4EN_MASK 0x1 | 192 | #define YSTORM_FCOE_TASK_AG_CTX_RULE4EN_MASK 0x1 |
| 313 | #define YSTORM_FCOE_TASK_AG_CTX_RULE4EN_SHIFT 5 | 193 | #define YSTORM_FCOE_TASK_AG_CTX_RULE4EN_SHIFT 5 |
| 314 | #define YSTORM_FCOE_TASK_AG_CTX_RULE5EN_MASK 0x1 | 194 | #define YSTORM_FCOE_TASK_AG_CTX_RULE5EN_MASK 0x1 |
| 315 | #define YSTORM_FCOE_TASK_AG_CTX_RULE5EN_SHIFT 6 | 195 | #define YSTORM_FCOE_TASK_AG_CTX_RULE5EN_SHIFT 6 |
| 316 | #define YSTORM_FCOE_TASK_AG_CTX_RULE6EN_MASK 0x1 | 196 | #define YSTORM_FCOE_TASK_AG_CTX_RULE6EN_MASK 0x1 |
| 317 | #define YSTORM_FCOE_TASK_AG_CTX_RULE6EN_SHIFT 7 | 197 | #define YSTORM_FCOE_TASK_AG_CTX_RULE6EN_SHIFT 7 |
| 318 | u8 byte2; | 198 | u8 byte2; |
| 319 | __le32 reg0; | 199 | __le32 reg0; |
| 320 | u8 byte3; | 200 | u8 byte3; |
| @@ -333,68 +213,68 @@ struct tstorm_fcoe_task_ag_ctx { | |||
| 333 | u8 byte1; | 213 | u8 byte1; |
| 334 | __le16 icid; | 214 | __le16 icid; |
| 335 | u8 flags0; | 215 | u8 flags0; |
| 336 | #define TSTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF | 216 | #define TSTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF |
| 337 | #define TSTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0 | 217 | #define TSTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0 |
| 338 | #define TSTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1 | 218 | #define TSTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1 |
| 339 | #define TSTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4 | 219 | #define TSTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4 |
| 340 | #define TSTORM_FCOE_TASK_AG_CTX_BIT1_MASK 0x1 | 220 | #define TSTORM_FCOE_TASK_AG_CTX_BIT1_MASK 0x1 |
| 341 | #define TSTORM_FCOE_TASK_AG_CTX_BIT1_SHIFT 5 | 221 | #define TSTORM_FCOE_TASK_AG_CTX_BIT1_SHIFT 5 |
| 342 | #define TSTORM_FCOE_TASK_AG_CTX_WAIT_ABTS_RSP_F_MASK 0x1 | 222 | #define TSTORM_FCOE_TASK_AG_CTX_WAIT_ABTS_RSP_F_MASK 0x1 |
| 343 | #define TSTORM_FCOE_TASK_AG_CTX_WAIT_ABTS_RSP_F_SHIFT 6 | 223 | #define TSTORM_FCOE_TASK_AG_CTX_WAIT_ABTS_RSP_F_SHIFT 6 |
| 344 | #define TSTORM_FCOE_TASK_AG_CTX_VALID_MASK 0x1 | 224 | #define TSTORM_FCOE_TASK_AG_CTX_VALID_MASK 0x1 |
| 345 | #define TSTORM_FCOE_TASK_AG_CTX_VALID_SHIFT 7 | 225 | #define TSTORM_FCOE_TASK_AG_CTX_VALID_SHIFT 7 |
| 346 | u8 flags1; | 226 | u8 flags1; |
| 347 | #define TSTORM_FCOE_TASK_AG_CTX_FALSE_RR_TOV_MASK 0x1 | 227 | #define TSTORM_FCOE_TASK_AG_CTX_FALSE_RR_TOV_MASK 0x1 |
| 348 | #define TSTORM_FCOE_TASK_AG_CTX_FALSE_RR_TOV_SHIFT 0 | 228 | #define TSTORM_FCOE_TASK_AG_CTX_FALSE_RR_TOV_SHIFT 0 |
| 349 | #define TSTORM_FCOE_TASK_AG_CTX_BIT5_MASK 0x1 | 229 | #define TSTORM_FCOE_TASK_AG_CTX_BIT5_MASK 0x1 |
| 350 | #define TSTORM_FCOE_TASK_AG_CTX_BIT5_SHIFT 1 | 230 | #define TSTORM_FCOE_TASK_AG_CTX_BIT5_SHIFT 1 |
| 351 | #define TSTORM_FCOE_TASK_AG_CTX_REC_RR_TOV_CF_MASK 0x3 | 231 | #define TSTORM_FCOE_TASK_AG_CTX_REC_RR_TOV_CF_MASK 0x3 |
| 352 | #define TSTORM_FCOE_TASK_AG_CTX_REC_RR_TOV_CF_SHIFT 2 | 232 | #define TSTORM_FCOE_TASK_AG_CTX_REC_RR_TOV_CF_SHIFT 2 |
| 353 | #define TSTORM_FCOE_TASK_AG_CTX_ED_TOV_CF_MASK 0x3 | 233 | #define TSTORM_FCOE_TASK_AG_CTX_ED_TOV_CF_MASK 0x3 |
| 354 | #define TSTORM_FCOE_TASK_AG_CTX_ED_TOV_CF_SHIFT 4 | 234 | #define TSTORM_FCOE_TASK_AG_CTX_ED_TOV_CF_SHIFT 4 |
| 355 | #define TSTORM_FCOE_TASK_AG_CTX_CF2_MASK 0x3 | 235 | #define TSTORM_FCOE_TASK_AG_CTX_CF2_MASK 0x3 |
| 356 | #define TSTORM_FCOE_TASK_AG_CTX_CF2_SHIFT 6 | 236 | #define TSTORM_FCOE_TASK_AG_CTX_CF2_SHIFT 6 |
| 357 | u8 flags2; | 237 | u8 flags2; |
| 358 | #define TSTORM_FCOE_TASK_AG_CTX_TIMER_STOP_ALL_MASK 0x3 | 238 | #define TSTORM_FCOE_TASK_AG_CTX_TIMER_STOP_ALL_MASK 0x3 |
| 359 | #define TSTORM_FCOE_TASK_AG_CTX_TIMER_STOP_ALL_SHIFT 0 | 239 | #define TSTORM_FCOE_TASK_AG_CTX_TIMER_STOP_ALL_SHIFT 0 |
| 360 | #define TSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_MASK 0x3 | 240 | #define TSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_MASK 0x3 |
| 361 | #define TSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_SHIFT 2 | 241 | #define TSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_SHIFT 2 |
| 362 | #define TSTORM_FCOE_TASK_AG_CTX_SEQ_INIT_CF_MASK 0x3 | 242 | #define TSTORM_FCOE_TASK_AG_CTX_SEQ_INIT_CF_MASK 0x3 |
| 363 | #define TSTORM_FCOE_TASK_AG_CTX_SEQ_INIT_CF_SHIFT 4 | 243 | #define TSTORM_FCOE_TASK_AG_CTX_SEQ_INIT_CF_SHIFT 4 |
| 364 | #define TSTORM_FCOE_TASK_AG_CTX_SEQ_RECOVERY_CF_MASK 0x3 | 244 | #define TSTORM_FCOE_TASK_AG_CTX_SEQ_RECOVERY_CF_MASK 0x3 |
| 365 | #define TSTORM_FCOE_TASK_AG_CTX_SEQ_RECOVERY_CF_SHIFT 6 | 245 | #define TSTORM_FCOE_TASK_AG_CTX_SEQ_RECOVERY_CF_SHIFT 6 |
| 366 | u8 flags3; | 246 | u8 flags3; |
| 367 | #define TSTORM_FCOE_TASK_AG_CTX_UNSOL_COMP_CF_MASK 0x3 | 247 | #define TSTORM_FCOE_TASK_AG_CTX_UNSOL_COMP_CF_MASK 0x3 |
| 368 | #define TSTORM_FCOE_TASK_AG_CTX_UNSOL_COMP_CF_SHIFT 0 | 248 | #define TSTORM_FCOE_TASK_AG_CTX_UNSOL_COMP_CF_SHIFT 0 |
| 369 | #define TSTORM_FCOE_TASK_AG_CTX_REC_RR_TOV_CF_EN_MASK 0x1 | 249 | #define TSTORM_FCOE_TASK_AG_CTX_REC_RR_TOV_CF_EN_MASK 0x1 |
| 370 | #define TSTORM_FCOE_TASK_AG_CTX_REC_RR_TOV_CF_EN_SHIFT 2 | 250 | #define TSTORM_FCOE_TASK_AG_CTX_REC_RR_TOV_CF_EN_SHIFT 2 |
| 371 | #define TSTORM_FCOE_TASK_AG_CTX_ED_TOV_CF_EN_MASK 0x1 | 251 | #define TSTORM_FCOE_TASK_AG_CTX_ED_TOV_CF_EN_MASK 0x1 |
| 372 | #define TSTORM_FCOE_TASK_AG_CTX_ED_TOV_CF_EN_SHIFT 3 | 252 | #define TSTORM_FCOE_TASK_AG_CTX_ED_TOV_CF_EN_SHIFT 3 |
| 373 | #define TSTORM_FCOE_TASK_AG_CTX_CF2EN_MASK 0x1 | 253 | #define TSTORM_FCOE_TASK_AG_CTX_CF2EN_MASK 0x1 |
| 374 | #define TSTORM_FCOE_TASK_AG_CTX_CF2EN_SHIFT 4 | 254 | #define TSTORM_FCOE_TASK_AG_CTX_CF2EN_SHIFT 4 |
| 375 | #define TSTORM_FCOE_TASK_AG_CTX_TIMER_STOP_ALL_EN_MASK 0x1 | 255 | #define TSTORM_FCOE_TASK_AG_CTX_TIMER_STOP_ALL_EN_MASK 0x1 |
| 376 | #define TSTORM_FCOE_TASK_AG_CTX_TIMER_STOP_ALL_EN_SHIFT 5 | 256 | #define TSTORM_FCOE_TASK_AG_CTX_TIMER_STOP_ALL_EN_SHIFT 5 |
| 377 | #define TSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_EN_MASK 0x1 | 257 | #define TSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_EN_MASK 0x1 |
| 378 | #define TSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_EN_SHIFT 6 | 258 | #define TSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_EN_SHIFT 6 |
| 379 | #define TSTORM_FCOE_TASK_AG_CTX_SEQ_INIT_CF_EN_MASK 0x1 | 259 | #define TSTORM_FCOE_TASK_AG_CTX_SEQ_INIT_CF_EN_MASK 0x1 |
| 380 | #define TSTORM_FCOE_TASK_AG_CTX_SEQ_INIT_CF_EN_SHIFT 7 | 260 | #define TSTORM_FCOE_TASK_AG_CTX_SEQ_INIT_CF_EN_SHIFT 7 |
| 381 | u8 flags4; | 261 | u8 flags4; |
| 382 | #define TSTORM_FCOE_TASK_AG_CTX_SEQ_RECOVERY_CF_EN_MASK 0x1 | 262 | #define TSTORM_FCOE_TASK_AG_CTX_SEQ_RECOVERY_CF_EN_MASK 0x1 |
| 383 | #define TSTORM_FCOE_TASK_AG_CTX_SEQ_RECOVERY_CF_EN_SHIFT 0 | 263 | #define TSTORM_FCOE_TASK_AG_CTX_SEQ_RECOVERY_CF_EN_SHIFT 0 |
| 384 | #define TSTORM_FCOE_TASK_AG_CTX_UNSOL_COMP_CF_EN_MASK 0x1 | 264 | #define TSTORM_FCOE_TASK_AG_CTX_UNSOL_COMP_CF_EN_MASK 0x1 |
| 385 | #define TSTORM_FCOE_TASK_AG_CTX_UNSOL_COMP_CF_EN_SHIFT 1 | 265 | #define TSTORM_FCOE_TASK_AG_CTX_UNSOL_COMP_CF_EN_SHIFT 1 |
| 386 | #define TSTORM_FCOE_TASK_AG_CTX_RULE0EN_MASK 0x1 | 266 | #define TSTORM_FCOE_TASK_AG_CTX_RULE0EN_MASK 0x1 |
| 387 | #define TSTORM_FCOE_TASK_AG_CTX_RULE0EN_SHIFT 2 | 267 | #define TSTORM_FCOE_TASK_AG_CTX_RULE0EN_SHIFT 2 |
| 388 | #define TSTORM_FCOE_TASK_AG_CTX_RULE1EN_MASK 0x1 | 268 | #define TSTORM_FCOE_TASK_AG_CTX_RULE1EN_MASK 0x1 |
| 389 | #define TSTORM_FCOE_TASK_AG_CTX_RULE1EN_SHIFT 3 | 269 | #define TSTORM_FCOE_TASK_AG_CTX_RULE1EN_SHIFT 3 |
| 390 | #define TSTORM_FCOE_TASK_AG_CTX_RULE2EN_MASK 0x1 | 270 | #define TSTORM_FCOE_TASK_AG_CTX_RULE2EN_MASK 0x1 |
| 391 | #define TSTORM_FCOE_TASK_AG_CTX_RULE2EN_SHIFT 4 | 271 | #define TSTORM_FCOE_TASK_AG_CTX_RULE2EN_SHIFT 4 |
| 392 | #define TSTORM_FCOE_TASK_AG_CTX_RULE3EN_MASK 0x1 | 272 | #define TSTORM_FCOE_TASK_AG_CTX_RULE3EN_MASK 0x1 |
| 393 | #define TSTORM_FCOE_TASK_AG_CTX_RULE3EN_SHIFT 5 | 273 | #define TSTORM_FCOE_TASK_AG_CTX_RULE3EN_SHIFT 5 |
| 394 | #define TSTORM_FCOE_TASK_AG_CTX_RULE4EN_MASK 0x1 | 274 | #define TSTORM_FCOE_TASK_AG_CTX_RULE4EN_MASK 0x1 |
| 395 | #define TSTORM_FCOE_TASK_AG_CTX_RULE4EN_SHIFT 6 | 275 | #define TSTORM_FCOE_TASK_AG_CTX_RULE4EN_SHIFT 6 |
| 396 | #define TSTORM_FCOE_TASK_AG_CTX_RULE5EN_MASK 0x1 | 276 | #define TSTORM_FCOE_TASK_AG_CTX_RULE5EN_MASK 0x1 |
| 397 | #define TSTORM_FCOE_TASK_AG_CTX_RULE5EN_SHIFT 7 | 277 | #define TSTORM_FCOE_TASK_AG_CTX_RULE5EN_SHIFT 7 |
| 398 | u8 cleanup_state; | 278 | u8 cleanup_state; |
| 399 | __le16 last_sent_tid; | 279 | __le16 last_sent_tid; |
| 400 | __le32 rec_rr_tov_exp_timeout; | 280 | __le32 rec_rr_tov_exp_timeout; |
| @@ -407,25 +287,46 @@ struct tstorm_fcoe_task_ag_ctx { | |||
| 407 | __le32 data_offset_next; | 287 | __le32 data_offset_next; |
| 408 | }; | 288 | }; |
| 409 | 289 | ||
| 290 | /* Cached data sges */ | ||
| 291 | struct fcoe_exp_ro { | ||
| 292 | __le32 data_offset; | ||
| 293 | __le32 reserved; | ||
| 294 | }; | ||
| 295 | |||
| 296 | /* Union of Cleanup address \ expected relative offsets */ | ||
| 297 | union fcoe_cleanup_addr_exp_ro_union { | ||
| 298 | struct regpair abts_rsp_fc_payload_hi; | ||
| 299 | struct fcoe_exp_ro exp_ro; | ||
| 300 | }; | ||
| 301 | |||
| 302 | /* Fields coppied from ABTSrsp pckt */ | ||
| 303 | struct fcoe_abts_pkt { | ||
| 304 | __le32 abts_rsp_fc_payload_lo; | ||
| 305 | __le16 abts_rsp_rx_id; | ||
| 306 | u8 abts_rsp_rctl; | ||
| 307 | u8 reserved2; | ||
| 308 | }; | ||
| 309 | |||
| 310 | /* FW read- write (modifyable) part The fcoe task storm context of Tstorm */ | ||
| 410 | struct fcoe_tstorm_fcoe_task_st_ctx_read_write { | 311 | struct fcoe_tstorm_fcoe_task_st_ctx_read_write { |
| 411 | union fcoe_cleanup_addr_exp_ro_union cleanup_addr_exp_ro_union; | 312 | union fcoe_cleanup_addr_exp_ro_union cleanup_addr_exp_ro_union; |
| 412 | __le16 flags; | 313 | __le16 flags; |
| 413 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_RX_SGL_MODE_MASK 0x1 | 314 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_RX_SGL_MODE_MASK 0x1 |
| 414 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_RX_SGL_MODE_SHIFT 0 | 315 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_RX_SGL_MODE_SHIFT 0 |
| 415 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_EXP_FIRST_FRAME_MASK 0x1 | 316 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_EXP_FIRST_FRAME_MASK 0x1 |
| 416 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_EXP_FIRST_FRAME_SHIFT 1 | 317 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_EXP_FIRST_FRAME_SHIFT 1 |
| 417 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SEQ_ACTIVE_MASK 0x1 | 318 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SEQ_ACTIVE_MASK 0x1 |
| 418 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SEQ_ACTIVE_SHIFT 2 | 319 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SEQ_ACTIVE_SHIFT 2 |
| 419 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SEQ_TIMEOUT_MASK 0x1 | 320 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SEQ_TIMEOUT_MASK 0x1 |
| 420 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SEQ_TIMEOUT_SHIFT 3 | 321 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SEQ_TIMEOUT_SHIFT 3 |
| 421 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SINGLE_PKT_IN_EX_MASK 0x1 | 322 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SINGLE_PKT_IN_EX_MASK 0x1 |
| 422 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SINGLE_PKT_IN_EX_SHIFT 4 | 323 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_SINGLE_PKT_IN_EX_SHIFT 4 |
| 423 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_OOO_RX_SEQ_STAT_MASK 0x1 | 324 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_OOO_RX_SEQ_STAT_MASK 0x1 |
| 424 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_OOO_RX_SEQ_STAT_SHIFT 5 | 325 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_OOO_RX_SEQ_STAT_SHIFT 5 |
| 425 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_CQ_ADD_ADV_MASK 0x3 | 326 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_CQ_ADD_ADV_MASK 0x3 |
| 426 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_CQ_ADD_ADV_SHIFT 6 | 327 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_CQ_ADD_ADV_SHIFT 6 |
| 427 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_RSRV1_MASK 0xFF | 328 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_RSRV1_MASK 0xFF |
| 428 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_RSRV1_SHIFT 8 | 329 | #define FCOE_TSTORM_FCOE_TASK_ST_CTX_READ_WRITE_RSRV1_SHIFT 8 |
| 429 | __le16 seq_cnt; | 330 | __le16 seq_cnt; |
| 430 | u8 seq_id; | 331 | u8 seq_id; |
| 431 | u8 ooo_rx_seq_id; | 332 | u8 ooo_rx_seq_id; |
| @@ -436,6 +337,7 @@ struct fcoe_tstorm_fcoe_task_st_ctx_read_write { | |||
| 436 | __le16 reserved1; | 337 | __le16 reserved1; |
| 437 | }; | 338 | }; |
| 438 | 339 | ||
| 340 | /* FW read only part The fcoe task storm context of Tstorm */ | ||
| 439 | struct fcoe_tstorm_fcoe_task_st_ctx_read_only { | 341 | struct fcoe_tstorm_fcoe_task_st_ctx_read_only { |
| 440 | u8 task_type; | 342 | u8 task_type; |
| 441 | u8 dev_type; | 343 | u8 dev_type; |
| @@ -446,6 +348,7 @@ struct fcoe_tstorm_fcoe_task_st_ctx_read_only { | |||
| 446 | __le32 rsrv; | 348 | __le32 rsrv; |
| 447 | }; | 349 | }; |
| 448 | 350 | ||
| 351 | /** The fcoe task storm context of Tstorm */ | ||
| 449 | struct tstorm_fcoe_task_st_ctx { | 352 | struct tstorm_fcoe_task_st_ctx { |
| 450 | struct fcoe_tstorm_fcoe_task_st_ctx_read_write read_write; | 353 | struct fcoe_tstorm_fcoe_task_st_ctx_read_write read_write; |
| 451 | struct fcoe_tstorm_fcoe_task_st_ctx_read_only read_only; | 354 | struct fcoe_tstorm_fcoe_task_st_ctx_read_only read_only; |
| @@ -456,44 +359,44 @@ struct mstorm_fcoe_task_ag_ctx { | |||
| 456 | u8 byte1; | 359 | u8 byte1; |
| 457 | __le16 icid; | 360 | __le16 icid; |
| 458 | u8 flags0; | 361 | u8 flags0; |
| 459 | #define MSTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF | 362 | #define MSTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF |
| 460 | #define MSTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0 | 363 | #define MSTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0 |
| 461 | #define MSTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1 | 364 | #define MSTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1 |
| 462 | #define MSTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4 | 365 | #define MSTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4 |
| 463 | #define MSTORM_FCOE_TASK_AG_CTX_CQE_PLACED_MASK 0x1 | 366 | #define MSTORM_FCOE_TASK_AG_CTX_CQE_PLACED_MASK 0x1 |
| 464 | #define MSTORM_FCOE_TASK_AG_CTX_CQE_PLACED_SHIFT 5 | 367 | #define MSTORM_FCOE_TASK_AG_CTX_CQE_PLACED_SHIFT 5 |
| 465 | #define MSTORM_FCOE_TASK_AG_CTX_BIT2_MASK 0x1 | 368 | #define MSTORM_FCOE_TASK_AG_CTX_BIT2_MASK 0x1 |
| 466 | #define MSTORM_FCOE_TASK_AG_CTX_BIT2_SHIFT 6 | 369 | #define MSTORM_FCOE_TASK_AG_CTX_BIT2_SHIFT 6 |
| 467 | #define MSTORM_FCOE_TASK_AG_CTX_BIT3_MASK 0x1 | 370 | #define MSTORM_FCOE_TASK_AG_CTX_BIT3_MASK 0x1 |
| 468 | #define MSTORM_FCOE_TASK_AG_CTX_BIT3_SHIFT 7 | 371 | #define MSTORM_FCOE_TASK_AG_CTX_BIT3_SHIFT 7 |
| 469 | u8 flags1; | 372 | u8 flags1; |
| 470 | #define MSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_MASK 0x3 | 373 | #define MSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_MASK 0x3 |
| 471 | #define MSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_SHIFT 0 | 374 | #define MSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_SHIFT 0 |
| 472 | #define MSTORM_FCOE_TASK_AG_CTX_CF1_MASK 0x3 | 375 | #define MSTORM_FCOE_TASK_AG_CTX_CF1_MASK 0x3 |
| 473 | #define MSTORM_FCOE_TASK_AG_CTX_CF1_SHIFT 2 | 376 | #define MSTORM_FCOE_TASK_AG_CTX_CF1_SHIFT 2 |
| 474 | #define MSTORM_FCOE_TASK_AG_CTX_CF2_MASK 0x3 | 377 | #define MSTORM_FCOE_TASK_AG_CTX_CF2_MASK 0x3 |
| 475 | #define MSTORM_FCOE_TASK_AG_CTX_CF2_SHIFT 4 | 378 | #define MSTORM_FCOE_TASK_AG_CTX_CF2_SHIFT 4 |
| 476 | #define MSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_EN_MASK 0x1 | 379 | #define MSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_EN_MASK 0x1 |
| 477 | #define MSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_EN_SHIFT 6 | 380 | #define MSTORM_FCOE_TASK_AG_CTX_EX_CLEANUP_CF_EN_SHIFT 6 |
| 478 | #define MSTORM_FCOE_TASK_AG_CTX_CF1EN_MASK 0x1 | 381 | #define MSTORM_FCOE_TASK_AG_CTX_CF1EN_MASK 0x1 |
| 479 | #define MSTORM_FCOE_TASK_AG_CTX_CF1EN_SHIFT 7 | 382 | #define MSTORM_FCOE_TASK_AG_CTX_CF1EN_SHIFT 7 |
| 480 | u8 flags2; | 383 | u8 flags2; |
| 481 | #define MSTORM_FCOE_TASK_AG_CTX_CF2EN_MASK 0x1 | 384 | #define MSTORM_FCOE_TASK_AG_CTX_CF2EN_MASK 0x1 |
| 482 | #define MSTORM_FCOE_TASK_AG_CTX_CF2EN_SHIFT 0 | 385 | #define MSTORM_FCOE_TASK_AG_CTX_CF2EN_SHIFT 0 |
| 483 | #define MSTORM_FCOE_TASK_AG_CTX_RULE0EN_MASK 0x1 | 386 | #define MSTORM_FCOE_TASK_AG_CTX_RULE0EN_MASK 0x1 |
| 484 | #define MSTORM_FCOE_TASK_AG_CTX_RULE0EN_SHIFT 1 | 387 | #define MSTORM_FCOE_TASK_AG_CTX_RULE0EN_SHIFT 1 |
| 485 | #define MSTORM_FCOE_TASK_AG_CTX_RULE1EN_MASK 0x1 | 388 | #define MSTORM_FCOE_TASK_AG_CTX_RULE1EN_MASK 0x1 |
| 486 | #define MSTORM_FCOE_TASK_AG_CTX_RULE1EN_SHIFT 2 | 389 | #define MSTORM_FCOE_TASK_AG_CTX_RULE1EN_SHIFT 2 |
| 487 | #define MSTORM_FCOE_TASK_AG_CTX_RULE2EN_MASK 0x1 | 390 | #define MSTORM_FCOE_TASK_AG_CTX_RULE2EN_MASK 0x1 |
| 488 | #define MSTORM_FCOE_TASK_AG_CTX_RULE2EN_SHIFT 3 | 391 | #define MSTORM_FCOE_TASK_AG_CTX_RULE2EN_SHIFT 3 |
| 489 | #define MSTORM_FCOE_TASK_AG_CTX_RULE3EN_MASK 0x1 | 392 | #define MSTORM_FCOE_TASK_AG_CTX_RULE3EN_MASK 0x1 |
| 490 | #define MSTORM_FCOE_TASK_AG_CTX_RULE3EN_SHIFT 4 | 393 | #define MSTORM_FCOE_TASK_AG_CTX_RULE3EN_SHIFT 4 |
| 491 | #define MSTORM_FCOE_TASK_AG_CTX_RULE4EN_MASK 0x1 | 394 | #define MSTORM_FCOE_TASK_AG_CTX_RULE4EN_MASK 0x1 |
| 492 | #define MSTORM_FCOE_TASK_AG_CTX_RULE4EN_SHIFT 5 | 395 | #define MSTORM_FCOE_TASK_AG_CTX_RULE4EN_SHIFT 5 |
| 493 | #define MSTORM_FCOE_TASK_AG_CTX_XFER_PLACEMENT_EN_MASK 0x1 | 396 | #define MSTORM_FCOE_TASK_AG_CTX_XFER_PLACEMENT_EN_MASK 0x1 |
| 494 | #define MSTORM_FCOE_TASK_AG_CTX_XFER_PLACEMENT_EN_SHIFT 6 | 397 | #define MSTORM_FCOE_TASK_AG_CTX_XFER_PLACEMENT_EN_SHIFT 6 |
| 495 | #define MSTORM_FCOE_TASK_AG_CTX_RULE6EN_MASK 0x1 | 398 | #define MSTORM_FCOE_TASK_AG_CTX_RULE6EN_MASK 0x1 |
| 496 | #define MSTORM_FCOE_TASK_AG_CTX_RULE6EN_SHIFT 7 | 399 | #define MSTORM_FCOE_TASK_AG_CTX_RULE6EN_SHIFT 7 |
| 497 | u8 cleanup_state; | 400 | u8 cleanup_state; |
| 498 | __le32 received_bytes; | 401 | __le32 received_bytes; |
| 499 | u8 byte3; | 402 | u8 byte3; |
| @@ -507,6 +410,7 @@ struct mstorm_fcoe_task_ag_ctx { | |||
| 507 | __le32 reg2; | 410 | __le32 reg2; |
| 508 | }; | 411 | }; |
| 509 | 412 | ||
| 413 | /* The fcoe task storm context of Mstorm */ | ||
| 510 | struct mstorm_fcoe_task_st_ctx { | 414 | struct mstorm_fcoe_task_st_ctx { |
| 511 | struct regpair rsp_buf_addr; | 415 | struct regpair rsp_buf_addr; |
| 512 | __le32 rsrv[2]; | 416 | __le32 rsrv[2]; |
| @@ -515,26 +419,26 @@ struct mstorm_fcoe_task_st_ctx { | |||
| 515 | __le32 data_buffer_offset; | 419 | __le32 data_buffer_offset; |
| 516 | __le16 parent_id; | 420 | __le16 parent_id; |
| 517 | __le16 flags; | 421 | __le16 flags; |
| 518 | #define MSTORM_FCOE_TASK_ST_CTX_INTERVAL_SIZE_LOG_MASK 0xF | 422 | #define MSTORM_FCOE_TASK_ST_CTX_INTERVAL_SIZE_LOG_MASK 0xF |
| 519 | #define MSTORM_FCOE_TASK_ST_CTX_INTERVAL_SIZE_LOG_SHIFT 0 | 423 | #define MSTORM_FCOE_TASK_ST_CTX_INTERVAL_SIZE_LOG_SHIFT 0 |
| 520 | #define MSTORM_FCOE_TASK_ST_CTX_HOST_INTERFACE_MASK 0x3 | 424 | #define MSTORM_FCOE_TASK_ST_CTX_HOST_INTERFACE_MASK 0x3 |
| 521 | #define MSTORM_FCOE_TASK_ST_CTX_HOST_INTERFACE_SHIFT 4 | 425 | #define MSTORM_FCOE_TASK_ST_CTX_HOST_INTERFACE_SHIFT 4 |
| 522 | #define MSTORM_FCOE_TASK_ST_CTX_DIF_TO_PEER_MASK 0x1 | 426 | #define MSTORM_FCOE_TASK_ST_CTX_DIF_TO_PEER_MASK 0x1 |
| 523 | #define MSTORM_FCOE_TASK_ST_CTX_DIF_TO_PEER_SHIFT 6 | 427 | #define MSTORM_FCOE_TASK_ST_CTX_DIF_TO_PEER_SHIFT 6 |
| 524 | #define MSTORM_FCOE_TASK_ST_CTX_MP_INCLUDE_FC_HEADER_MASK 0x1 | 428 | #define MSTORM_FCOE_TASK_ST_CTX_MP_INCLUDE_FC_HEADER_MASK 0x1 |
| 525 | #define MSTORM_FCOE_TASK_ST_CTX_MP_INCLUDE_FC_HEADER_SHIFT 7 | 429 | #define MSTORM_FCOE_TASK_ST_CTX_MP_INCLUDE_FC_HEADER_SHIFT 7 |
| 526 | #define MSTORM_FCOE_TASK_ST_CTX_DIX_BLOCK_SIZE_MASK 0x3 | 430 | #define MSTORM_FCOE_TASK_ST_CTX_DIX_BLOCK_SIZE_MASK 0x3 |
| 527 | #define MSTORM_FCOE_TASK_ST_CTX_DIX_BLOCK_SIZE_SHIFT 8 | 431 | #define MSTORM_FCOE_TASK_ST_CTX_DIX_BLOCK_SIZE_SHIFT 8 |
| 528 | #define MSTORM_FCOE_TASK_ST_CTX_VALIDATE_DIX_REF_TAG_MASK 0x1 | 432 | #define MSTORM_FCOE_TASK_ST_CTX_VALIDATE_DIX_REF_TAG_MASK 0x1 |
| 529 | #define MSTORM_FCOE_TASK_ST_CTX_VALIDATE_DIX_REF_TAG_SHIFT 10 | 433 | #define MSTORM_FCOE_TASK_ST_CTX_VALIDATE_DIX_REF_TAG_SHIFT 10 |
| 530 | #define MSTORM_FCOE_TASK_ST_CTX_DIX_CACHED_SGE_FLG_MASK 0x1 | 434 | #define MSTORM_FCOE_TASK_ST_CTX_DIX_CACHED_SGE_FLG_MASK 0x1 |
| 531 | #define MSTORM_FCOE_TASK_ST_CTX_DIX_CACHED_SGE_FLG_SHIFT 11 | 435 | #define MSTORM_FCOE_TASK_ST_CTX_DIX_CACHED_SGE_FLG_SHIFT 11 |
| 532 | #define MSTORM_FCOE_TASK_ST_CTX_DIF_SUPPORTED_MASK 0x1 | 436 | #define MSTORM_FCOE_TASK_ST_CTX_DIF_SUPPORTED_MASK 0x1 |
| 533 | #define MSTORM_FCOE_TASK_ST_CTX_DIF_SUPPORTED_SHIFT 12 | 437 | #define MSTORM_FCOE_TASK_ST_CTX_DIF_SUPPORTED_SHIFT 12 |
| 534 | #define MSTORM_FCOE_TASK_ST_CTX_TX_SGL_MODE_MASK 0x1 | 438 | #define MSTORM_FCOE_TASK_ST_CTX_TX_SGL_MODE_MASK 0x1 |
| 535 | #define MSTORM_FCOE_TASK_ST_CTX_TX_SGL_MODE_SHIFT 13 | 439 | #define MSTORM_FCOE_TASK_ST_CTX_TX_SGL_MODE_SHIFT 13 |
| 536 | #define MSTORM_FCOE_TASK_ST_CTX_RESERVED_MASK 0x3 | 440 | #define MSTORM_FCOE_TASK_ST_CTX_RESERVED_MASK 0x3 |
| 537 | #define MSTORM_FCOE_TASK_ST_CTX_RESERVED_SHIFT 14 | 441 | #define MSTORM_FCOE_TASK_ST_CTX_RESERVED_SHIFT 14 |
| 538 | struct scsi_cached_sges data_desc; | 442 | struct scsi_cached_sges data_desc; |
| 539 | }; | 443 | }; |
| 540 | 444 | ||
| @@ -543,51 +447,51 @@ struct ustorm_fcoe_task_ag_ctx { | |||
| 543 | u8 byte1; | 447 | u8 byte1; |
| 544 | __le16 icid; | 448 | __le16 icid; |
| 545 | u8 flags0; | 449 | u8 flags0; |
| 546 | #define USTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF | 450 | #define USTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF |
| 547 | #define USTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0 | 451 | #define USTORM_FCOE_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0 |
| 548 | #define USTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1 | 452 | #define USTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1 |
| 549 | #define USTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4 | 453 | #define USTORM_FCOE_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4 |
| 550 | #define USTORM_FCOE_TASK_AG_CTX_BIT1_MASK 0x1 | 454 | #define USTORM_FCOE_TASK_AG_CTX_BIT1_MASK 0x1 |
| 551 | #define USTORM_FCOE_TASK_AG_CTX_BIT1_SHIFT 5 | 455 | #define USTORM_FCOE_TASK_AG_CTX_BIT1_SHIFT 5 |
| 552 | #define USTORM_FCOE_TASK_AG_CTX_CF0_MASK 0x3 | 456 | #define USTORM_FCOE_TASK_AG_CTX_CF0_MASK 0x3 |
| 553 | #define USTORM_FCOE_TASK_AG_CTX_CF0_SHIFT 6 | 457 | #define USTORM_FCOE_TASK_AG_CTX_CF0_SHIFT 6 |
| 554 | u8 flags1; | 458 | u8 flags1; |
| 555 | #define USTORM_FCOE_TASK_AG_CTX_CF1_MASK 0x3 | 459 | #define USTORM_FCOE_TASK_AG_CTX_CF1_MASK 0x3 |
| 556 | #define USTORM_FCOE_TASK_AG_CTX_CF1_SHIFT 0 | 460 | #define USTORM_FCOE_TASK_AG_CTX_CF1_SHIFT 0 |
| 557 | #define USTORM_FCOE_TASK_AG_CTX_CF2_MASK 0x3 | 461 | #define USTORM_FCOE_TASK_AG_CTX_CF2_MASK 0x3 |
| 558 | #define USTORM_FCOE_TASK_AG_CTX_CF2_SHIFT 2 | 462 | #define USTORM_FCOE_TASK_AG_CTX_CF2_SHIFT 2 |
| 559 | #define USTORM_FCOE_TASK_AG_CTX_CF3_MASK 0x3 | 463 | #define USTORM_FCOE_TASK_AG_CTX_CF3_MASK 0x3 |
| 560 | #define USTORM_FCOE_TASK_AG_CTX_CF3_SHIFT 4 | 464 | #define USTORM_FCOE_TASK_AG_CTX_CF3_SHIFT 4 |
| 561 | #define USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_CF_MASK 0x3 | 465 | #define USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_CF_MASK 0x3 |
| 562 | #define USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_CF_SHIFT 6 | 466 | #define USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_CF_SHIFT 6 |
| 563 | u8 flags2; | 467 | u8 flags2; |
| 564 | #define USTORM_FCOE_TASK_AG_CTX_CF0EN_MASK 0x1 | 468 | #define USTORM_FCOE_TASK_AG_CTX_CF0EN_MASK 0x1 |
| 565 | #define USTORM_FCOE_TASK_AG_CTX_CF0EN_SHIFT 0 | 469 | #define USTORM_FCOE_TASK_AG_CTX_CF0EN_SHIFT 0 |
| 566 | #define USTORM_FCOE_TASK_AG_CTX_CF1EN_MASK 0x1 | 470 | #define USTORM_FCOE_TASK_AG_CTX_CF1EN_MASK 0x1 |
| 567 | #define USTORM_FCOE_TASK_AG_CTX_CF1EN_SHIFT 1 | 471 | #define USTORM_FCOE_TASK_AG_CTX_CF1EN_SHIFT 1 |
| 568 | #define USTORM_FCOE_TASK_AG_CTX_CF2EN_MASK 0x1 | 472 | #define USTORM_FCOE_TASK_AG_CTX_CF2EN_MASK 0x1 |
| 569 | #define USTORM_FCOE_TASK_AG_CTX_CF2EN_SHIFT 2 | 473 | #define USTORM_FCOE_TASK_AG_CTX_CF2EN_SHIFT 2 |
| 570 | #define USTORM_FCOE_TASK_AG_CTX_CF3EN_MASK 0x1 | 474 | #define USTORM_FCOE_TASK_AG_CTX_CF3EN_MASK 0x1 |
| 571 | #define USTORM_FCOE_TASK_AG_CTX_CF3EN_SHIFT 3 | 475 | #define USTORM_FCOE_TASK_AG_CTX_CF3EN_SHIFT 3 |
| 572 | #define USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_CF_EN_MASK 0x1 | 476 | #define USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_CF_EN_MASK 0x1 |
| 573 | #define USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_CF_EN_SHIFT 4 | 477 | #define USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_CF_EN_SHIFT 4 |
| 574 | #define USTORM_FCOE_TASK_AG_CTX_RULE0EN_MASK 0x1 | 478 | #define USTORM_FCOE_TASK_AG_CTX_RULE0EN_MASK 0x1 |
| 575 | #define USTORM_FCOE_TASK_AG_CTX_RULE0EN_SHIFT 5 | 479 | #define USTORM_FCOE_TASK_AG_CTX_RULE0EN_SHIFT 5 |
| 576 | #define USTORM_FCOE_TASK_AG_CTX_RULE1EN_MASK 0x1 | 480 | #define USTORM_FCOE_TASK_AG_CTX_RULE1EN_MASK 0x1 |
| 577 | #define USTORM_FCOE_TASK_AG_CTX_RULE1EN_SHIFT 6 | 481 | #define USTORM_FCOE_TASK_AG_CTX_RULE1EN_SHIFT 6 |
| 578 | #define USTORM_FCOE_TASK_AG_CTX_RULE2EN_MASK 0x1 | 482 | #define USTORM_FCOE_TASK_AG_CTX_RULE2EN_MASK 0x1 |
| 579 | #define USTORM_FCOE_TASK_AG_CTX_RULE2EN_SHIFT 7 | 483 | #define USTORM_FCOE_TASK_AG_CTX_RULE2EN_SHIFT 7 |
| 580 | u8 flags3; | 484 | u8 flags3; |
| 581 | #define USTORM_FCOE_TASK_AG_CTX_RULE3EN_MASK 0x1 | 485 | #define USTORM_FCOE_TASK_AG_CTX_RULE3EN_MASK 0x1 |
| 582 | #define USTORM_FCOE_TASK_AG_CTX_RULE3EN_SHIFT 0 | 486 | #define USTORM_FCOE_TASK_AG_CTX_RULE3EN_SHIFT 0 |
| 583 | #define USTORM_FCOE_TASK_AG_CTX_RULE4EN_MASK 0x1 | 487 | #define USTORM_FCOE_TASK_AG_CTX_RULE4EN_MASK 0x1 |
| 584 | #define USTORM_FCOE_TASK_AG_CTX_RULE4EN_SHIFT 1 | 488 | #define USTORM_FCOE_TASK_AG_CTX_RULE4EN_SHIFT 1 |
| 585 | #define USTORM_FCOE_TASK_AG_CTX_RULE5EN_MASK 0x1 | 489 | #define USTORM_FCOE_TASK_AG_CTX_RULE5EN_MASK 0x1 |
| 586 | #define USTORM_FCOE_TASK_AG_CTX_RULE5EN_SHIFT 2 | 490 | #define USTORM_FCOE_TASK_AG_CTX_RULE5EN_SHIFT 2 |
| 587 | #define USTORM_FCOE_TASK_AG_CTX_RULE6EN_MASK 0x1 | 491 | #define USTORM_FCOE_TASK_AG_CTX_RULE6EN_MASK 0x1 |
| 588 | #define USTORM_FCOE_TASK_AG_CTX_RULE6EN_SHIFT 3 | 492 | #define USTORM_FCOE_TASK_AG_CTX_RULE6EN_SHIFT 3 |
| 589 | #define USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_TYPE_MASK 0xF | 493 | #define USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_TYPE_MASK 0xF |
| 590 | #define USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_TYPE_SHIFT 4 | 494 | #define USTORM_FCOE_TASK_AG_CTX_DIF_ERROR_TYPE_SHIFT 4 |
| 591 | __le32 dif_err_intervals; | 495 | __le32 dif_err_intervals; |
| 592 | __le32 dif_error_1st_interval; | 496 | __le32 dif_error_1st_interval; |
| 593 | __le32 global_cq_num; | 497 | __le32 global_cq_num; |
| @@ -596,6 +500,7 @@ struct ustorm_fcoe_task_ag_ctx { | |||
| 596 | __le32 reg5; | 500 | __le32 reg5; |
| 597 | }; | 501 | }; |
| 598 | 502 | ||
| 503 | /* FCoE task context */ | ||
| 599 | struct fcoe_task_context { | 504 | struct fcoe_task_context { |
| 600 | struct ystorm_fcoe_task_st_ctx ystorm_st_context; | 505 | struct ystorm_fcoe_task_st_ctx ystorm_st_context; |
| 601 | struct regpair ystorm_st_padding[2]; | 506 | struct regpair ystorm_st_padding[2]; |
| @@ -611,6 +516,129 @@ struct fcoe_task_context { | |||
| 611 | struct rdif_task_context rdif_context; | 516 | struct rdif_task_context rdif_context; |
| 612 | }; | 517 | }; |
| 613 | 518 | ||
| 519 | /* FCoE additional WQE (Sq/XferQ) information */ | ||
| 520 | union fcoe_additional_info_union { | ||
| 521 | __le32 previous_tid; | ||
| 522 | __le32 parent_tid; | ||
| 523 | __le32 burst_length; | ||
| 524 | __le32 seq_rec_updated_offset; | ||
| 525 | }; | ||
| 526 | |||
| 527 | /* FCoE Ramrod Command IDs */ | ||
| 528 | enum fcoe_completion_status { | ||
| 529 | FCOE_COMPLETION_STATUS_SUCCESS, | ||
| 530 | FCOE_COMPLETION_STATUS_FCOE_VER_ERR, | ||
| 531 | FCOE_COMPLETION_STATUS_SRC_MAC_ADD_ARR_ERR, | ||
| 532 | MAX_FCOE_COMPLETION_STATUS | ||
| 533 | }; | ||
| 534 | |||
| 535 | /* FC address (SID/DID) network presentation */ | ||
| 536 | struct fc_addr_nw { | ||
| 537 | u8 addr_lo; | ||
| 538 | u8 addr_mid; | ||
| 539 | u8 addr_hi; | ||
| 540 | }; | ||
| 541 | |||
| 542 | /* FCoE connection offload */ | ||
| 543 | struct fcoe_conn_offload_ramrod_data { | ||
| 544 | struct regpair sq_pbl_addr; | ||
| 545 | struct regpair sq_curr_page_addr; | ||
| 546 | struct regpair sq_next_page_addr; | ||
| 547 | struct regpair xferq_pbl_addr; | ||
| 548 | struct regpair xferq_curr_page_addr; | ||
| 549 | struct regpair xferq_next_page_addr; | ||
| 550 | struct regpair respq_pbl_addr; | ||
| 551 | struct regpair respq_curr_page_addr; | ||
| 552 | struct regpair respq_next_page_addr; | ||
| 553 | __le16 dst_mac_addr_lo; | ||
| 554 | __le16 dst_mac_addr_mid; | ||
| 555 | __le16 dst_mac_addr_hi; | ||
| 556 | __le16 src_mac_addr_lo; | ||
| 557 | __le16 src_mac_addr_mid; | ||
| 558 | __le16 src_mac_addr_hi; | ||
| 559 | __le16 tx_max_fc_pay_len; | ||
| 560 | __le16 e_d_tov_timer_val; | ||
| 561 | __le16 rx_max_fc_pay_len; | ||
| 562 | __le16 vlan_tag; | ||
| 563 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_VLAN_ID_MASK 0xFFF | ||
| 564 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_VLAN_ID_SHIFT 0 | ||
| 565 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_CFI_MASK 0x1 | ||
| 566 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_CFI_SHIFT 12 | ||
| 567 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_PRIORITY_MASK 0x7 | ||
| 568 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_PRIORITY_SHIFT 13 | ||
| 569 | __le16 physical_q0; | ||
| 570 | __le16 rec_rr_tov_timer_val; | ||
| 571 | struct fc_addr_nw s_id; | ||
| 572 | u8 max_conc_seqs_c3; | ||
| 573 | struct fc_addr_nw d_id; | ||
| 574 | u8 flags; | ||
| 575 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_CONT_INCR_SEQ_CNT_MASK 0x1 | ||
| 576 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_CONT_INCR_SEQ_CNT_SHIFT 0 | ||
| 577 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_CONF_REQ_MASK 0x1 | ||
| 578 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_CONF_REQ_SHIFT 1 | ||
| 579 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_REC_VALID_MASK 0x1 | ||
| 580 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_REC_VALID_SHIFT 2 | ||
| 581 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_VLAN_FLAG_MASK 0x1 | ||
| 582 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_B_VLAN_FLAG_SHIFT 3 | ||
| 583 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_MODE_MASK 0x3 | ||
| 584 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_MODE_SHIFT 4 | ||
| 585 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_RESERVED0_MASK 0x3 | ||
| 586 | #define FCOE_CONN_OFFLOAD_RAMROD_DATA_RESERVED0_SHIFT 6 | ||
| 587 | __le16 conn_id; | ||
| 588 | u8 def_q_idx; | ||
| 589 | u8 reserved[5]; | ||
| 590 | }; | ||
| 591 | |||
| 592 | /* FCoE terminate connection request */ | ||
| 593 | struct fcoe_conn_terminate_ramrod_data { | ||
| 594 | struct regpair terminate_params_addr; | ||
| 595 | }; | ||
| 596 | |||
| 597 | /* Data sgl */ | ||
| 598 | struct fcoe_fast_sgl_ctx { | ||
| 599 | struct regpair sgl_start_addr; | ||
| 600 | __le32 sgl_byte_offset; | ||
| 601 | __le16 task_reuse_cnt; | ||
| 602 | __le16 init_offset_in_first_sge; | ||
| 603 | }; | ||
| 604 | |||
| 605 | /* FCoE firmware function init */ | ||
| 606 | struct fcoe_init_func_ramrod_data { | ||
| 607 | struct scsi_init_func_params func_params; | ||
| 608 | struct scsi_init_func_queues q_params; | ||
| 609 | __le16 mtu; | ||
| 610 | __le16 sq_num_pages_in_pbl; | ||
| 611 | __le32 reserved; | ||
| 612 | }; | ||
| 613 | |||
| 614 | /* FCoE: Mode of the connection: Target or Initiator or both */ | ||
| 615 | enum fcoe_mode_type { | ||
| 616 | FCOE_INITIATOR_MODE = 0x0, | ||
| 617 | FCOE_TARGET_MODE = 0x1, | ||
| 618 | FCOE_BOTH_OR_NOT_CHOSEN = 0x3, | ||
| 619 | MAX_FCOE_MODE_TYPE | ||
| 620 | }; | ||
| 621 | |||
| 622 | /* Per PF FCoE receive path statistics - tStorm RAM structure */ | ||
| 623 | struct fcoe_rx_stat { | ||
| 624 | struct regpair fcoe_rx_byte_cnt; | ||
| 625 | struct regpair fcoe_rx_data_pkt_cnt; | ||
| 626 | struct regpair fcoe_rx_xfer_pkt_cnt; | ||
| 627 | struct regpair fcoe_rx_other_pkt_cnt; | ||
| 628 | __le32 fcoe_silent_drop_pkt_cmdq_full_cnt; | ||
| 629 | __le32 fcoe_silent_drop_pkt_rq_full_cnt; | ||
| 630 | __le32 fcoe_silent_drop_pkt_crc_error_cnt; | ||
| 631 | __le32 fcoe_silent_drop_pkt_task_invalid_cnt; | ||
| 632 | __le32 fcoe_silent_drop_total_pkt_cnt; | ||
| 633 | __le32 rsrv; | ||
| 634 | }; | ||
| 635 | |||
| 636 | /* FCoe statistics request */ | ||
| 637 | struct fcoe_stat_ramrod_data { | ||
| 638 | struct regpair stat_params_addr; | ||
| 639 | }; | ||
| 640 | |||
| 641 | /* Per PF FCoE transmit path statistics - pStorm RAM structure */ | ||
| 614 | struct fcoe_tx_stat { | 642 | struct fcoe_tx_stat { |
| 615 | struct regpair fcoe_tx_byte_cnt; | 643 | struct regpair fcoe_tx_byte_cnt; |
| 616 | struct regpair fcoe_tx_data_pkt_cnt; | 644 | struct regpair fcoe_tx_data_pkt_cnt; |
| @@ -618,51 +646,55 @@ struct fcoe_tx_stat { | |||
| 618 | struct regpair fcoe_tx_other_pkt_cnt; | 646 | struct regpair fcoe_tx_other_pkt_cnt; |
| 619 | }; | 647 | }; |
| 620 | 648 | ||
| 649 | /* FCoE SQ/XferQ element */ | ||
| 621 | struct fcoe_wqe { | 650 | struct fcoe_wqe { |
| 622 | __le16 task_id; | 651 | __le16 task_id; |
| 623 | __le16 flags; | 652 | __le16 flags; |
| 624 | #define FCOE_WQE_REQ_TYPE_MASK 0xF | 653 | #define FCOE_WQE_REQ_TYPE_MASK 0xF |
| 625 | #define FCOE_WQE_REQ_TYPE_SHIFT 0 | 654 | #define FCOE_WQE_REQ_TYPE_SHIFT 0 |
| 626 | #define FCOE_WQE_SGL_MODE_MASK 0x1 | 655 | #define FCOE_WQE_SGL_MODE_MASK 0x1 |
| 627 | #define FCOE_WQE_SGL_MODE_SHIFT 4 | 656 | #define FCOE_WQE_SGL_MODE_SHIFT 4 |
| 628 | #define FCOE_WQE_CONTINUATION_MASK 0x1 | 657 | #define FCOE_WQE_CONTINUATION_MASK 0x1 |
| 629 | #define FCOE_WQE_CONTINUATION_SHIFT 5 | 658 | #define FCOE_WQE_CONTINUATION_SHIFT 5 |
| 630 | #define FCOE_WQE_SEND_AUTO_RSP_MASK 0x1 | 659 | #define FCOE_WQE_SEND_AUTO_RSP_MASK 0x1 |
| 631 | #define FCOE_WQE_SEND_AUTO_RSP_SHIFT 6 | 660 | #define FCOE_WQE_SEND_AUTO_RSP_SHIFT 6 |
| 632 | #define FCOE_WQE_RESERVED_MASK 0x1 | 661 | #define FCOE_WQE_RESERVED_MASK 0x1 |
| 633 | #define FCOE_WQE_RESERVED_SHIFT 7 | 662 | #define FCOE_WQE_RESERVED_SHIFT 7 |
| 634 | #define FCOE_WQE_NUM_SGES_MASK 0xF | 663 | #define FCOE_WQE_NUM_SGES_MASK 0xF |
| 635 | #define FCOE_WQE_NUM_SGES_SHIFT 8 | 664 | #define FCOE_WQE_NUM_SGES_SHIFT 8 |
| 636 | #define FCOE_WQE_RESERVED1_MASK 0xF | 665 | #define FCOE_WQE_RESERVED1_MASK 0xF |
| 637 | #define FCOE_WQE_RESERVED1_SHIFT 12 | 666 | #define FCOE_WQE_RESERVED1_SHIFT 12 |
| 638 | union fcoe_additional_info_union additional_info_union; | 667 | union fcoe_additional_info_union additional_info_union; |
| 639 | }; | 668 | }; |
| 640 | 669 | ||
| 670 | /* FCoE XFRQ element */ | ||
| 641 | struct xfrqe_prot_flags { | 671 | struct xfrqe_prot_flags { |
| 642 | u8 flags; | 672 | u8 flags; |
| 643 | #define XFRQE_PROT_FLAGS_PROT_INTERVAL_SIZE_LOG_MASK 0xF | 673 | #define XFRQE_PROT_FLAGS_PROT_INTERVAL_SIZE_LOG_MASK 0xF |
| 644 | #define XFRQE_PROT_FLAGS_PROT_INTERVAL_SIZE_LOG_SHIFT 0 | 674 | #define XFRQE_PROT_FLAGS_PROT_INTERVAL_SIZE_LOG_SHIFT 0 |
| 645 | #define XFRQE_PROT_FLAGS_DIF_TO_PEER_MASK 0x1 | 675 | #define XFRQE_PROT_FLAGS_DIF_TO_PEER_MASK 0x1 |
| 646 | #define XFRQE_PROT_FLAGS_DIF_TO_PEER_SHIFT 4 | 676 | #define XFRQE_PROT_FLAGS_DIF_TO_PEER_SHIFT 4 |
| 647 | #define XFRQE_PROT_FLAGS_HOST_INTERFACE_MASK 0x3 | 677 | #define XFRQE_PROT_FLAGS_HOST_INTERFACE_MASK 0x3 |
| 648 | #define XFRQE_PROT_FLAGS_HOST_INTERFACE_SHIFT 5 | 678 | #define XFRQE_PROT_FLAGS_HOST_INTERFACE_SHIFT 5 |
| 649 | #define XFRQE_PROT_FLAGS_RESERVED_MASK 0x1 | 679 | #define XFRQE_PROT_FLAGS_RESERVED_MASK 0x1 |
| 650 | #define XFRQE_PROT_FLAGS_RESERVED_SHIFT 7 | 680 | #define XFRQE_PROT_FLAGS_RESERVED_SHIFT 7 |
| 651 | }; | 681 | }; |
| 652 | 682 | ||
| 683 | /* FCoE doorbell data */ | ||
| 653 | struct fcoe_db_data { | 684 | struct fcoe_db_data { |
| 654 | u8 params; | 685 | u8 params; |
| 655 | #define FCOE_DB_DATA_DEST_MASK 0x3 | 686 | #define FCOE_DB_DATA_DEST_MASK 0x3 |
| 656 | #define FCOE_DB_DATA_DEST_SHIFT 0 | 687 | #define FCOE_DB_DATA_DEST_SHIFT 0 |
| 657 | #define FCOE_DB_DATA_AGG_CMD_MASK 0x3 | 688 | #define FCOE_DB_DATA_AGG_CMD_MASK 0x3 |
| 658 | #define FCOE_DB_DATA_AGG_CMD_SHIFT 2 | 689 | #define FCOE_DB_DATA_AGG_CMD_SHIFT 2 |
| 659 | #define FCOE_DB_DATA_BYPASS_EN_MASK 0x1 | 690 | #define FCOE_DB_DATA_BYPASS_EN_MASK 0x1 |
| 660 | #define FCOE_DB_DATA_BYPASS_EN_SHIFT 4 | 691 | #define FCOE_DB_DATA_BYPASS_EN_SHIFT 4 |
| 661 | #define FCOE_DB_DATA_RESERVED_MASK 0x1 | 692 | #define FCOE_DB_DATA_RESERVED_MASK 0x1 |
| 662 | #define FCOE_DB_DATA_RESERVED_SHIFT 5 | 693 | #define FCOE_DB_DATA_RESERVED_SHIFT 5 |
| 663 | #define FCOE_DB_DATA_AGG_VAL_SEL_MASK 0x3 | 694 | #define FCOE_DB_DATA_AGG_VAL_SEL_MASK 0x3 |
| 664 | #define FCOE_DB_DATA_AGG_VAL_SEL_SHIFT 6 | 695 | #define FCOE_DB_DATA_AGG_VAL_SEL_SHIFT 6 |
| 665 | u8 agg_flags; | 696 | u8 agg_flags; |
| 666 | __le16 sq_prod; | 697 | __le16 sq_prod; |
| 667 | }; | 698 | }; |
| 699 | |||
| 668 | #endif /* __FCOE_COMMON__ */ | 700 | #endif /* __FCOE_COMMON__ */ |
diff --git a/include/linux/qed/iscsi_common.h b/include/linux/qed/iscsi_common.h index 85e086cba639..b8f83507f659 100644 --- a/include/linux/qed/iscsi_common.h +++ b/include/linux/qed/iscsi_common.h | |||
| @@ -32,47 +32,48 @@ | |||
| 32 | 32 | ||
| 33 | #ifndef __ISCSI_COMMON__ | 33 | #ifndef __ISCSI_COMMON__ |
| 34 | #define __ISCSI_COMMON__ | 34 | #define __ISCSI_COMMON__ |
| 35 | |||
| 35 | /**********************/ | 36 | /**********************/ |
| 36 | /* ISCSI FW CONSTANTS */ | 37 | /* ISCSI FW CONSTANTS */ |
| 37 | /**********************/ | 38 | /**********************/ |
| 38 | 39 | ||
| 39 | /* iSCSI HSI constants */ | 40 | /* iSCSI HSI constants */ |
| 40 | #define ISCSI_DEFAULT_MTU (1500) | 41 | #define ISCSI_DEFAULT_MTU (1500) |
| 41 | 42 | ||
| 42 | /* KWQ (kernel work queue) layer codes */ | 43 | /* KWQ (kernel work queue) layer codes */ |
| 43 | #define ISCSI_SLOW_PATH_LAYER_CODE (6) | 44 | #define ISCSI_SLOW_PATH_LAYER_CODE (6) |
| 44 | 45 | ||
| 45 | /* iSCSI parameter defaults */ | 46 | /* iSCSI parameter defaults */ |
| 46 | #define ISCSI_DEFAULT_HEADER_DIGEST (0) | 47 | #define ISCSI_DEFAULT_HEADER_DIGEST (0) |
| 47 | #define ISCSI_DEFAULT_DATA_DIGEST (0) | 48 | #define ISCSI_DEFAULT_DATA_DIGEST (0) |
| 48 | #define ISCSI_DEFAULT_INITIAL_R2T (1) | 49 | #define ISCSI_DEFAULT_INITIAL_R2T (1) |
| 49 | #define ISCSI_DEFAULT_IMMEDIATE_DATA (1) | 50 | #define ISCSI_DEFAULT_IMMEDIATE_DATA (1) |
| 50 | #define ISCSI_DEFAULT_MAX_PDU_LENGTH (0x2000) | 51 | #define ISCSI_DEFAULT_MAX_PDU_LENGTH (0x2000) |
| 51 | #define ISCSI_DEFAULT_FIRST_BURST_LENGTH (0x10000) | 52 | #define ISCSI_DEFAULT_FIRST_BURST_LENGTH (0x10000) |
| 52 | #define ISCSI_DEFAULT_MAX_BURST_LENGTH (0x40000) | 53 | #define ISCSI_DEFAULT_MAX_BURST_LENGTH (0x40000) |
| 53 | #define ISCSI_DEFAULT_MAX_OUTSTANDING_R2T (1) | 54 | #define ISCSI_DEFAULT_MAX_OUTSTANDING_R2T (1) |
| 54 | 55 | ||
| 55 | /* iSCSI parameter limits */ | 56 | /* iSCSI parameter limits */ |
| 56 | #define ISCSI_MIN_VAL_MAX_PDU_LENGTH (0x200) | 57 | #define ISCSI_MIN_VAL_MAX_PDU_LENGTH (0x200) |
| 57 | #define ISCSI_MAX_VAL_MAX_PDU_LENGTH (0xffffff) | 58 | #define ISCSI_MAX_VAL_MAX_PDU_LENGTH (0xffffff) |
| 58 | #define ISCSI_MIN_VAL_BURST_LENGTH (0x200) | 59 | #define ISCSI_MIN_VAL_BURST_LENGTH (0x200) |
| 59 | #define ISCSI_MAX_VAL_BURST_LENGTH (0xffffff) | 60 | #define ISCSI_MAX_VAL_BURST_LENGTH (0xffffff) |
| 60 | #define ISCSI_MIN_VAL_MAX_OUTSTANDING_R2T (1) | 61 | #define ISCSI_MIN_VAL_MAX_OUTSTANDING_R2T (1) |
| 61 | #define ISCSI_MAX_VAL_MAX_OUTSTANDING_R2T (0xff) | 62 | #define ISCSI_MAX_VAL_MAX_OUTSTANDING_R2T (0xff) |
| 62 | 63 | ||
| 63 | #define ISCSI_AHS_CNTL_SIZE 4 | 64 | #define ISCSI_AHS_CNTL_SIZE 4 |
| 64 | 65 | ||
| 65 | #define ISCSI_WQE_NUM_SGES_SLOWIO (0xf) | 66 | #define ISCSI_WQE_NUM_SGES_SLOWIO (0xf) |
| 66 | 67 | ||
| 67 | /* iSCSI reserved params */ | 68 | /* iSCSI reserved params */ |
| 68 | #define ISCSI_ITT_ALL_ONES (0xffffffff) | 69 | #define ISCSI_ITT_ALL_ONES (0xffffffff) |
| 69 | #define ISCSI_TTT_ALL_ONES (0xffffffff) | 70 | #define ISCSI_TTT_ALL_ONES (0xffffffff) |
| 70 | 71 | ||
| 71 | #define ISCSI_OPTION_1_OFF_CHIP_TCP 1 | 72 | #define ISCSI_OPTION_1_OFF_CHIP_TCP 1 |
| 72 | #define ISCSI_OPTION_2_ON_CHIP_TCP 2 | 73 | #define ISCSI_OPTION_2_ON_CHIP_TCP 2 |
| 73 | 74 | ||
| 74 | #define ISCSI_INITIATOR_MODE 0 | 75 | #define ISCSI_INITIATOR_MODE 0 |
| 75 | #define ISCSI_TARGET_MODE 1 | 76 | #define ISCSI_TARGET_MODE 1 |
| 76 | 77 | ||
| 77 | /* iSCSI request op codes */ | 78 | /* iSCSI request op codes */ |
| 78 | #define ISCSI_OPCODE_NOP_OUT (0) | 79 | #define ISCSI_OPCODE_NOP_OUT (0) |
| @@ -84,41 +85,42 @@ | |||
| 84 | #define ISCSI_OPCODE_LOGOUT_REQUEST (6) | 85 | #define ISCSI_OPCODE_LOGOUT_REQUEST (6) |
| 85 | 86 | ||
| 86 | /* iSCSI response/messages op codes */ | 87 | /* iSCSI response/messages op codes */ |
| 87 | #define ISCSI_OPCODE_NOP_IN (0x20) | 88 | #define ISCSI_OPCODE_NOP_IN (0x20) |
| 88 | #define ISCSI_OPCODE_SCSI_RESPONSE (0x21) | 89 | #define ISCSI_OPCODE_SCSI_RESPONSE (0x21) |
| 89 | #define ISCSI_OPCODE_TMF_RESPONSE (0x22) | 90 | #define ISCSI_OPCODE_TMF_RESPONSE (0x22) |
| 90 | #define ISCSI_OPCODE_LOGIN_RESPONSE (0x23) | 91 | #define ISCSI_OPCODE_LOGIN_RESPONSE (0x23) |
| 91 | #define ISCSI_OPCODE_TEXT_RESPONSE (0x24) | 92 | #define ISCSI_OPCODE_TEXT_RESPONSE (0x24) |
| 92 | #define ISCSI_OPCODE_DATA_IN (0x25) | 93 | #define ISCSI_OPCODE_DATA_IN (0x25) |
| 93 | #define ISCSI_OPCODE_LOGOUT_RESPONSE (0x26) | 94 | #define ISCSI_OPCODE_LOGOUT_RESPONSE (0x26) |
| 94 | #define ISCSI_OPCODE_R2T (0x31) | 95 | #define ISCSI_OPCODE_R2T (0x31) |
| 95 | #define ISCSI_OPCODE_ASYNC_MSG (0x32) | 96 | #define ISCSI_OPCODE_ASYNC_MSG (0x32) |
| 96 | #define ISCSI_OPCODE_REJECT (0x3f) | 97 | #define ISCSI_OPCODE_REJECT (0x3f) |
| 97 | 98 | ||
| 98 | /* iSCSI stages */ | 99 | /* iSCSI stages */ |
| 99 | #define ISCSI_STAGE_SECURITY_NEGOTIATION (0) | 100 | #define ISCSI_STAGE_SECURITY_NEGOTIATION (0) |
| 100 | #define ISCSI_STAGE_LOGIN_OPERATIONAL_NEGOTIATION (1) | 101 | #define ISCSI_STAGE_LOGIN_OPERATIONAL_NEGOTIATION (1) |
| 101 | #define ISCSI_STAGE_FULL_FEATURE_PHASE (3) | 102 | #define ISCSI_STAGE_FULL_FEATURE_PHASE (3) |
| 102 | 103 | ||
| 103 | /* iSCSI CQE errors */ | 104 | /* iSCSI CQE errors */ |
| 104 | #define CQE_ERROR_BITMAP_DATA_DIGEST (0x08) | 105 | #define CQE_ERROR_BITMAP_DATA_DIGEST (0x08) |
| 105 | #define CQE_ERROR_BITMAP_RCV_ON_INVALID_CONN (0x10) | 106 | #define CQE_ERROR_BITMAP_RCV_ON_INVALID_CONN (0x10) |
| 106 | #define CQE_ERROR_BITMAP_DATA_TRUNCATED (0x20) | 107 | #define CQE_ERROR_BITMAP_DATA_TRUNCATED (0x20) |
| 107 | 108 | ||
| 109 | /* ISCSI SGL entry */ | ||
| 108 | struct cqe_error_bitmap { | 110 | struct cqe_error_bitmap { |
| 109 | u8 cqe_error_status_bits; | 111 | u8 cqe_error_status_bits; |
| 110 | #define CQE_ERROR_BITMAP_DIF_ERR_BITS_MASK 0x7 | 112 | #define CQE_ERROR_BITMAP_DIF_ERR_BITS_MASK 0x7 |
| 111 | #define CQE_ERROR_BITMAP_DIF_ERR_BITS_SHIFT 0 | 113 | #define CQE_ERROR_BITMAP_DIF_ERR_BITS_SHIFT 0 |
| 112 | #define CQE_ERROR_BITMAP_DATA_DIGEST_ERR_MASK 0x1 | 114 | #define CQE_ERROR_BITMAP_DATA_DIGEST_ERR_MASK 0x1 |
| 113 | #define CQE_ERROR_BITMAP_DATA_DIGEST_ERR_SHIFT 3 | 115 | #define CQE_ERROR_BITMAP_DATA_DIGEST_ERR_SHIFT 3 |
| 114 | #define CQE_ERROR_BITMAP_RCV_ON_INVALID_CONN_MASK 0x1 | 116 | #define CQE_ERROR_BITMAP_RCV_ON_INVALID_CONN_MASK 0x1 |
| 115 | #define CQE_ERROR_BITMAP_RCV_ON_INVALID_CONN_SHIFT 4 | 117 | #define CQE_ERROR_BITMAP_RCV_ON_INVALID_CONN_SHIFT 4 |
| 116 | #define CQE_ERROR_BITMAP_DATA_TRUNCATED_ERR_MASK 0x1 | 118 | #define CQE_ERROR_BITMAP_DATA_TRUNCATED_ERR_MASK 0x1 |
| 117 | #define CQE_ERROR_BITMAP_DATA_TRUNCATED_ERR_SHIFT 5 | 119 | #define CQE_ERROR_BITMAP_DATA_TRUNCATED_ERR_SHIFT 5 |
| 118 | #define CQE_ERROR_BITMAP_UNDER_RUN_ERR_MASK 0x1 | 120 | #define CQE_ERROR_BITMAP_UNDER_RUN_ERR_MASK 0x1 |
| 119 | #define CQE_ERROR_BITMAP_UNDER_RUN_ERR_SHIFT 6 | 121 | #define CQE_ERROR_BITMAP_UNDER_RUN_ERR_SHIFT 6 |
| 120 | #define CQE_ERROR_BITMAP_RESERVED2_MASK 0x1 | 122 | #define CQE_ERROR_BITMAP_RESERVED2_MASK 0x1 |
| 121 | #define CQE_ERROR_BITMAP_RESERVED2_SHIFT 7 | 123 | #define CQE_ERROR_BITMAP_RESERVED2_SHIFT 7 |
| 122 | }; | 124 | }; |
| 123 | 125 | ||
| 124 | union cqe_error_status { | 126 | union cqe_error_status { |
| @@ -126,86 +128,72 @@ union cqe_error_status { | |||
| 126 | struct cqe_error_bitmap error_bits; | 128 | struct cqe_error_bitmap error_bits; |
| 127 | }; | 129 | }; |
| 128 | 130 | ||
| 131 | /* iSCSI Login Response PDU header */ | ||
| 129 | struct data_hdr { | 132 | struct data_hdr { |
| 130 | __le32 data[12]; | 133 | __le32 data[12]; |
| 131 | }; | 134 | }; |
| 132 | 135 | ||
| 133 | struct iscsi_async_msg_hdr { | 136 | /* Union of data/r2t sequence number */ |
| 134 | __le16 reserved0; | 137 | union iscsi_seq_num { |
| 135 | u8 flags_attr; | 138 | __le16 data_sn; |
| 136 | #define ISCSI_ASYNC_MSG_HDR_RSRV_MASK 0x7F | 139 | __le16 r2t_sn; |
| 137 | #define ISCSI_ASYNC_MSG_HDR_RSRV_SHIFT 0 | ||
| 138 | #define ISCSI_ASYNC_MSG_HDR_CONST1_MASK 0x1 | ||
| 139 | #define ISCSI_ASYNC_MSG_HDR_CONST1_SHIFT 7 | ||
| 140 | u8 opcode; | ||
| 141 | __le32 hdr_second_dword; | ||
| 142 | #define ISCSI_ASYNC_MSG_HDR_DATA_SEG_LEN_MASK 0xFFFFFF | ||
| 143 | #define ISCSI_ASYNC_MSG_HDR_DATA_SEG_LEN_SHIFT 0 | ||
| 144 | #define ISCSI_ASYNC_MSG_HDR_TOTAL_AHS_LEN_MASK 0xFF | ||
| 145 | #define ISCSI_ASYNC_MSG_HDR_TOTAL_AHS_LEN_SHIFT 24 | ||
| 146 | struct regpair lun; | ||
| 147 | __le32 all_ones; | ||
| 148 | __le32 reserved1; | ||
| 149 | __le32 stat_sn; | ||
| 150 | __le32 exp_cmd_sn; | ||
| 151 | __le32 max_cmd_sn; | ||
| 152 | __le16 param1_rsrv; | ||
| 153 | u8 async_vcode; | ||
| 154 | u8 async_event; | ||
| 155 | __le16 param3_rsrv; | ||
| 156 | __le16 param2_rsrv; | ||
| 157 | __le32 reserved7; | ||
| 158 | }; | 140 | }; |
| 159 | 141 | ||
| 160 | struct iscsi_cmd_hdr { | 142 | /* iSCSI DIF flags */ |
| 161 | __le16 reserved1; | 143 | struct iscsi_dif_flags { |
| 162 | u8 flags_attr; | 144 | u8 flags; |
| 163 | #define ISCSI_CMD_HDR_ATTR_MASK 0x7 | 145 | #define ISCSI_DIF_FLAGS_PROT_INTERVAL_SIZE_LOG_MASK 0xF |
| 164 | #define ISCSI_CMD_HDR_ATTR_SHIFT 0 | 146 | #define ISCSI_DIF_FLAGS_PROT_INTERVAL_SIZE_LOG_SHIFT 0 |
| 165 | #define ISCSI_CMD_HDR_RSRV_MASK 0x3 | 147 | #define ISCSI_DIF_FLAGS_DIF_TO_PEER_MASK 0x1 |
| 166 | #define ISCSI_CMD_HDR_RSRV_SHIFT 3 | 148 | #define ISCSI_DIF_FLAGS_DIF_TO_PEER_SHIFT 4 |
| 167 | #define ISCSI_CMD_HDR_WRITE_MASK 0x1 | 149 | #define ISCSI_DIF_FLAGS_HOST_INTERFACE_MASK 0x7 |
| 168 | #define ISCSI_CMD_HDR_WRITE_SHIFT 5 | 150 | #define ISCSI_DIF_FLAGS_HOST_INTERFACE_SHIFT 5 |
| 169 | #define ISCSI_CMD_HDR_READ_MASK 0x1 | ||
| 170 | #define ISCSI_CMD_HDR_READ_SHIFT 6 | ||
| 171 | #define ISCSI_CMD_HDR_FINAL_MASK 0x1 | ||
| 172 | #define ISCSI_CMD_HDR_FINAL_SHIFT 7 | ||
| 173 | u8 hdr_first_byte; | ||
| 174 | #define ISCSI_CMD_HDR_OPCODE_MASK 0x3F | ||
| 175 | #define ISCSI_CMD_HDR_OPCODE_SHIFT 0 | ||
| 176 | #define ISCSI_CMD_HDR_IMM_MASK 0x1 | ||
| 177 | #define ISCSI_CMD_HDR_IMM_SHIFT 6 | ||
| 178 | #define ISCSI_CMD_HDR_RSRV1_MASK 0x1 | ||
| 179 | #define ISCSI_CMD_HDR_RSRV1_SHIFT 7 | ||
| 180 | __le32 hdr_second_dword; | ||
| 181 | #define ISCSI_CMD_HDR_DATA_SEG_LEN_MASK 0xFFFFFF | ||
| 182 | #define ISCSI_CMD_HDR_DATA_SEG_LEN_SHIFT 0 | ||
| 183 | #define ISCSI_CMD_HDR_TOTAL_AHS_LEN_MASK 0xFF | ||
| 184 | #define ISCSI_CMD_HDR_TOTAL_AHS_LEN_SHIFT 24 | ||
| 185 | struct regpair lun; | ||
| 186 | __le32 itt; | ||
| 187 | __le32 expected_transfer_length; | ||
| 188 | __le32 cmd_sn; | ||
| 189 | __le32 exp_stat_sn; | ||
| 190 | __le32 cdb[4]; | ||
| 191 | }; | 151 | }; |
| 192 | 152 | ||
| 153 | /* The iscsi storm task context of Ystorm */ | ||
| 154 | struct ystorm_iscsi_task_state { | ||
| 155 | struct scsi_cached_sges data_desc; | ||
| 156 | struct scsi_sgl_params sgl_params; | ||
| 157 | __le32 exp_r2t_sn; | ||
| 158 | __le32 buffer_offset; | ||
| 159 | union iscsi_seq_num seq_num; | ||
| 160 | struct iscsi_dif_flags dif_flags; | ||
| 161 | u8 flags; | ||
| 162 | #define YSTORM_ISCSI_TASK_STATE_LOCAL_COMP_MASK 0x1 | ||
| 163 | #define YSTORM_ISCSI_TASK_STATE_LOCAL_COMP_SHIFT 0 | ||
| 164 | #define YSTORM_ISCSI_TASK_STATE_SLOW_IO_MASK 0x1 | ||
| 165 | #define YSTORM_ISCSI_TASK_STATE_SLOW_IO_SHIFT 1 | ||
| 166 | #define YSTORM_ISCSI_TASK_STATE_RESERVED0_MASK 0x3F | ||
| 167 | #define YSTORM_ISCSI_TASK_STATE_RESERVED0_SHIFT 2 | ||
| 168 | }; | ||
| 169 | |||
| 170 | /* The iscsi storm task context of Ystorm */ | ||
| 171 | struct ystorm_iscsi_task_rxmit_opt { | ||
| 172 | __le32 fast_rxmit_sge_offset; | ||
| 173 | __le32 scan_start_buffer_offset; | ||
| 174 | __le32 fast_rxmit_buffer_offset; | ||
| 175 | u8 scan_start_sgl_index; | ||
| 176 | u8 fast_rxmit_sgl_index; | ||
| 177 | __le16 reserved; | ||
| 178 | }; | ||
| 179 | |||
| 180 | /* iSCSI Common PDU header */ | ||
| 193 | struct iscsi_common_hdr { | 181 | struct iscsi_common_hdr { |
| 194 | u8 hdr_status; | 182 | u8 hdr_status; |
| 195 | u8 hdr_response; | 183 | u8 hdr_response; |
| 196 | u8 hdr_flags; | 184 | u8 hdr_flags; |
| 197 | u8 hdr_first_byte; | 185 | u8 hdr_first_byte; |
| 198 | #define ISCSI_COMMON_HDR_OPCODE_MASK 0x3F | 186 | #define ISCSI_COMMON_HDR_OPCODE_MASK 0x3F |
| 199 | #define ISCSI_COMMON_HDR_OPCODE_SHIFT 0 | 187 | #define ISCSI_COMMON_HDR_OPCODE_SHIFT 0 |
| 200 | #define ISCSI_COMMON_HDR_IMM_MASK 0x1 | 188 | #define ISCSI_COMMON_HDR_IMM_MASK 0x1 |
| 201 | #define ISCSI_COMMON_HDR_IMM_SHIFT 6 | 189 | #define ISCSI_COMMON_HDR_IMM_SHIFT 6 |
| 202 | #define ISCSI_COMMON_HDR_RSRV_MASK 0x1 | 190 | #define ISCSI_COMMON_HDR_RSRV_MASK 0x1 |
| 203 | #define ISCSI_COMMON_HDR_RSRV_SHIFT 7 | 191 | #define ISCSI_COMMON_HDR_RSRV_SHIFT 7 |
| 204 | __le32 hdr_second_dword; | 192 | __le32 hdr_second_dword; |
| 205 | #define ISCSI_COMMON_HDR_DATA_SEG_LEN_MASK 0xFFFFFF | 193 | #define ISCSI_COMMON_HDR_DATA_SEG_LEN_MASK 0xFFFFFF |
| 206 | #define ISCSI_COMMON_HDR_DATA_SEG_LEN_SHIFT 0 | 194 | #define ISCSI_COMMON_HDR_DATA_SEG_LEN_SHIFT 0 |
| 207 | #define ISCSI_COMMON_HDR_TOTAL_AHS_LEN_MASK 0xFF | 195 | #define ISCSI_COMMON_HDR_TOTAL_AHS_LEN_MASK 0xFF |
| 208 | #define ISCSI_COMMON_HDR_TOTAL_AHS_LEN_SHIFT 24 | 196 | #define ISCSI_COMMON_HDR_TOTAL_AHS_LEN_SHIFT 24 |
| 209 | struct regpair lun_reserved; | 197 | struct regpair lun_reserved; |
| 210 | __le32 itt; | 198 | __le32 itt; |
| 211 | __le32 ttt; | 199 | __le32 ttt; |
| @@ -215,86 +203,60 @@ struct iscsi_common_hdr { | |||
| 215 | __le32 data[3]; | 203 | __le32 data[3]; |
| 216 | }; | 204 | }; |
| 217 | 205 | ||
| 218 | struct iscsi_conn_offload_params { | 206 | /* iSCSI Command PDU header */ |
| 219 | struct regpair sq_pbl_addr; | 207 | struct iscsi_cmd_hdr { |
| 220 | struct regpair r2tq_pbl_addr; | 208 | __le16 reserved1; |
| 221 | struct regpair xhq_pbl_addr; | 209 | u8 flags_attr; |
| 222 | struct regpair uhq_pbl_addr; | 210 | #define ISCSI_CMD_HDR_ATTR_MASK 0x7 |
| 223 | __le32 initial_ack; | 211 | #define ISCSI_CMD_HDR_ATTR_SHIFT 0 |
| 224 | __le16 physical_q0; | 212 | #define ISCSI_CMD_HDR_RSRV_MASK 0x3 |
| 225 | __le16 physical_q1; | 213 | #define ISCSI_CMD_HDR_RSRV_SHIFT 3 |
| 226 | u8 flags; | 214 | #define ISCSI_CMD_HDR_WRITE_MASK 0x1 |
| 227 | #define ISCSI_CONN_OFFLOAD_PARAMS_TCP_ON_CHIP_1B_MASK 0x1 | 215 | #define ISCSI_CMD_HDR_WRITE_SHIFT 5 |
| 228 | #define ISCSI_CONN_OFFLOAD_PARAMS_TCP_ON_CHIP_1B_SHIFT 0 | 216 | #define ISCSI_CMD_HDR_READ_MASK 0x1 |
| 229 | #define ISCSI_CONN_OFFLOAD_PARAMS_TARGET_MODE_MASK 0x1 | 217 | #define ISCSI_CMD_HDR_READ_SHIFT 6 |
| 230 | #define ISCSI_CONN_OFFLOAD_PARAMS_TARGET_MODE_SHIFT 1 | 218 | #define ISCSI_CMD_HDR_FINAL_MASK 0x1 |
| 231 | #define ISCSI_CONN_OFFLOAD_PARAMS_RESTRICTED_MODE_MASK 0x1 | 219 | #define ISCSI_CMD_HDR_FINAL_SHIFT 7 |
| 232 | #define ISCSI_CONN_OFFLOAD_PARAMS_RESTRICTED_MODE_SHIFT 2 | 220 | u8 hdr_first_byte; |
| 233 | #define ISCSI_CONN_OFFLOAD_PARAMS_RESERVED1_MASK 0x1F | 221 | #define ISCSI_CMD_HDR_OPCODE_MASK 0x3F |
| 234 | #define ISCSI_CONN_OFFLOAD_PARAMS_RESERVED1_SHIFT 3 | 222 | #define ISCSI_CMD_HDR_OPCODE_SHIFT 0 |
| 235 | u8 pbl_page_size_log; | 223 | #define ISCSI_CMD_HDR_IMM_MASK 0x1 |
| 236 | u8 pbe_page_size_log; | 224 | #define ISCSI_CMD_HDR_IMM_SHIFT 6 |
| 237 | u8 default_cq; | 225 | #define ISCSI_CMD_HDR_RSRV1_MASK 0x1 |
| 238 | __le32 stat_sn; | 226 | #define ISCSI_CMD_HDR_RSRV1_SHIFT 7 |
| 239 | }; | 227 | __le32 hdr_second_dword; |
| 240 | 228 | #define ISCSI_CMD_HDR_DATA_SEG_LEN_MASK 0xFFFFFF | |
| 241 | struct iscsi_slow_path_hdr { | 229 | #define ISCSI_CMD_HDR_DATA_SEG_LEN_SHIFT 0 |
| 242 | u8 op_code; | 230 | #define ISCSI_CMD_HDR_TOTAL_AHS_LEN_MASK 0xFF |
| 243 | u8 flags; | 231 | #define ISCSI_CMD_HDR_TOTAL_AHS_LEN_SHIFT 24 |
| 244 | #define ISCSI_SLOW_PATH_HDR_RESERVED0_MASK 0xF | 232 | struct regpair lun; |
| 245 | #define ISCSI_SLOW_PATH_HDR_RESERVED0_SHIFT 0 | 233 | __le32 itt; |
| 246 | #define ISCSI_SLOW_PATH_HDR_LAYER_CODE_MASK 0x7 | 234 | __le32 expected_transfer_length; |
| 247 | #define ISCSI_SLOW_PATH_HDR_LAYER_CODE_SHIFT 4 | 235 | __le32 cmd_sn; |
| 248 | #define ISCSI_SLOW_PATH_HDR_RESERVED1_MASK 0x1 | ||
| 249 | #define ISCSI_SLOW_PATH_HDR_RESERVED1_SHIFT 7 | ||
| 250 | }; | ||
| 251 | |||
| 252 | struct iscsi_conn_update_ramrod_params { | ||
| 253 | struct iscsi_slow_path_hdr hdr; | ||
| 254 | __le16 conn_id; | ||
| 255 | __le32 fw_cid; | ||
| 256 | u8 flags; | ||
| 257 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_HD_EN_MASK 0x1 | ||
| 258 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_HD_EN_SHIFT 0 | ||
| 259 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DD_EN_MASK 0x1 | ||
| 260 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DD_EN_SHIFT 1 | ||
| 261 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_INITIAL_R2T_MASK 0x1 | ||
| 262 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_INITIAL_R2T_SHIFT 2 | ||
| 263 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_IMMEDIATE_DATA_MASK 0x1 | ||
| 264 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_IMMEDIATE_DATA_SHIFT 3 | ||
| 265 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DIF_BLOCK_SIZE_MASK 0x1 | ||
| 266 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DIF_BLOCK_SIZE_SHIFT 4 | ||
| 267 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DIF_ON_HOST_EN_MASK 0x1 | ||
| 268 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DIF_ON_HOST_EN_SHIFT 5 | ||
| 269 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_RESERVED1_MASK 0x3 | ||
| 270 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_RESERVED1_SHIFT 6 | ||
| 271 | u8 reserved0[3]; | ||
| 272 | __le32 max_seq_size; | ||
| 273 | __le32 max_send_pdu_length; | ||
| 274 | __le32 max_recv_pdu_length; | ||
| 275 | __le32 first_seq_length; | ||
| 276 | __le32 exp_stat_sn; | 236 | __le32 exp_stat_sn; |
| 237 | __le32 cdb[4]; | ||
| 277 | }; | 238 | }; |
| 278 | 239 | ||
| 240 | /* iSCSI Command PDU header with Extended CDB (Initiator Mode) */ | ||
| 279 | struct iscsi_ext_cdb_cmd_hdr { | 241 | struct iscsi_ext_cdb_cmd_hdr { |
| 280 | __le16 reserved1; | 242 | __le16 reserved1; |
| 281 | u8 flags_attr; | 243 | u8 flags_attr; |
| 282 | #define ISCSI_EXT_CDB_CMD_HDR_ATTR_MASK 0x7 | 244 | #define ISCSI_EXT_CDB_CMD_HDR_ATTR_MASK 0x7 |
| 283 | #define ISCSI_EXT_CDB_CMD_HDR_ATTR_SHIFT 0 | 245 | #define ISCSI_EXT_CDB_CMD_HDR_ATTR_SHIFT 0 |
| 284 | #define ISCSI_EXT_CDB_CMD_HDR_RSRV_MASK 0x3 | 246 | #define ISCSI_EXT_CDB_CMD_HDR_RSRV_MASK 0x3 |
| 285 | #define ISCSI_EXT_CDB_CMD_HDR_RSRV_SHIFT 3 | 247 | #define ISCSI_EXT_CDB_CMD_HDR_RSRV_SHIFT 3 |
| 286 | #define ISCSI_EXT_CDB_CMD_HDR_WRITE_MASK 0x1 | 248 | #define ISCSI_EXT_CDB_CMD_HDR_WRITE_MASK 0x1 |
| 287 | #define ISCSI_EXT_CDB_CMD_HDR_WRITE_SHIFT 5 | 249 | #define ISCSI_EXT_CDB_CMD_HDR_WRITE_SHIFT 5 |
| 288 | #define ISCSI_EXT_CDB_CMD_HDR_READ_MASK 0x1 | 250 | #define ISCSI_EXT_CDB_CMD_HDR_READ_MASK 0x1 |
| 289 | #define ISCSI_EXT_CDB_CMD_HDR_READ_SHIFT 6 | 251 | #define ISCSI_EXT_CDB_CMD_HDR_READ_SHIFT 6 |
| 290 | #define ISCSI_EXT_CDB_CMD_HDR_FINAL_MASK 0x1 | 252 | #define ISCSI_EXT_CDB_CMD_HDR_FINAL_MASK 0x1 |
| 291 | #define ISCSI_EXT_CDB_CMD_HDR_FINAL_SHIFT 7 | 253 | #define ISCSI_EXT_CDB_CMD_HDR_FINAL_SHIFT 7 |
| 292 | u8 opcode; | 254 | u8 opcode; |
| 293 | __le32 hdr_second_dword; | 255 | __le32 hdr_second_dword; |
| 294 | #define ISCSI_EXT_CDB_CMD_HDR_DATA_SEG_LEN_MASK 0xFFFFFF | 256 | #define ISCSI_EXT_CDB_CMD_HDR_DATA_SEG_LEN_MASK 0xFFFFFF |
| 295 | #define ISCSI_EXT_CDB_CMD_HDR_DATA_SEG_LEN_SHIFT 0 | 257 | #define ISCSI_EXT_CDB_CMD_HDR_DATA_SEG_LEN_SHIFT 0 |
| 296 | #define ISCSI_EXT_CDB_CMD_HDR_CDB_SIZE_MASK 0xFF | 258 | #define ISCSI_EXT_CDB_CMD_HDR_CDB_SIZE_MASK 0xFF |
| 297 | #define ISCSI_EXT_CDB_CMD_HDR_CDB_SIZE_SHIFT 24 | 259 | #define ISCSI_EXT_CDB_CMD_HDR_CDB_SIZE_SHIFT 24 |
| 298 | struct regpair lun; | 260 | struct regpair lun; |
| 299 | __le32 itt; | 261 | __le32 itt; |
| 300 | __le32 expected_transfer_length; | 262 | __le32 expected_transfer_length; |
| @@ -303,26 +265,27 @@ struct iscsi_ext_cdb_cmd_hdr { | |||
| 303 | struct scsi_sge cdb_sge; | 265 | struct scsi_sge cdb_sge; |
| 304 | }; | 266 | }; |
| 305 | 267 | ||
| 268 | /* iSCSI login request PDU header */ | ||
| 306 | struct iscsi_login_req_hdr { | 269 | struct iscsi_login_req_hdr { |
| 307 | u8 version_min; | 270 | u8 version_min; |
| 308 | u8 version_max; | 271 | u8 version_max; |
| 309 | u8 flags_attr; | 272 | u8 flags_attr; |
| 310 | #define ISCSI_LOGIN_REQ_HDR_NSG_MASK 0x3 | 273 | #define ISCSI_LOGIN_REQ_HDR_NSG_MASK 0x3 |
| 311 | #define ISCSI_LOGIN_REQ_HDR_NSG_SHIFT 0 | 274 | #define ISCSI_LOGIN_REQ_HDR_NSG_SHIFT 0 |
| 312 | #define ISCSI_LOGIN_REQ_HDR_CSG_MASK 0x3 | 275 | #define ISCSI_LOGIN_REQ_HDR_CSG_MASK 0x3 |
| 313 | #define ISCSI_LOGIN_REQ_HDR_CSG_SHIFT 2 | 276 | #define ISCSI_LOGIN_REQ_HDR_CSG_SHIFT 2 |
| 314 | #define ISCSI_LOGIN_REQ_HDR_RSRV_MASK 0x3 | 277 | #define ISCSI_LOGIN_REQ_HDR_RSRV_MASK 0x3 |
| 315 | #define ISCSI_LOGIN_REQ_HDR_RSRV_SHIFT 4 | 278 | #define ISCSI_LOGIN_REQ_HDR_RSRV_SHIFT 4 |
| 316 | #define ISCSI_LOGIN_REQ_HDR_C_MASK 0x1 | 279 | #define ISCSI_LOGIN_REQ_HDR_C_MASK 0x1 |
| 317 | #define ISCSI_LOGIN_REQ_HDR_C_SHIFT 6 | 280 | #define ISCSI_LOGIN_REQ_HDR_C_SHIFT 6 |
| 318 | #define ISCSI_LOGIN_REQ_HDR_T_MASK 0x1 | 281 | #define ISCSI_LOGIN_REQ_HDR_T_MASK 0x1 |
| 319 | #define ISCSI_LOGIN_REQ_HDR_T_SHIFT 7 | 282 | #define ISCSI_LOGIN_REQ_HDR_T_SHIFT 7 |
| 320 | u8 opcode; | 283 | u8 opcode; |
| 321 | __le32 hdr_second_dword; | 284 | __le32 hdr_second_dword; |
| 322 | #define ISCSI_LOGIN_REQ_HDR_DATA_SEG_LEN_MASK 0xFFFFFF | 285 | #define ISCSI_LOGIN_REQ_HDR_DATA_SEG_LEN_MASK 0xFFFFFF |
| 323 | #define ISCSI_LOGIN_REQ_HDR_DATA_SEG_LEN_SHIFT 0 | 286 | #define ISCSI_LOGIN_REQ_HDR_DATA_SEG_LEN_SHIFT 0 |
| 324 | #define ISCSI_LOGIN_REQ_HDR_TOTAL_AHS_LEN_MASK 0xFF | 287 | #define ISCSI_LOGIN_REQ_HDR_TOTAL_AHS_LEN_MASK 0xFF |
| 325 | #define ISCSI_LOGIN_REQ_HDR_TOTAL_AHS_LEN_SHIFT 24 | 288 | #define ISCSI_LOGIN_REQ_HDR_TOTAL_AHS_LEN_SHIFT 24 |
| 326 | __le32 isid_tabc; | 289 | __le32 isid_tabc; |
| 327 | __le16 tsih; | 290 | __le16 tsih; |
| 328 | __le16 isid_d; | 291 | __le16 isid_d; |
| @@ -334,6 +297,7 @@ struct iscsi_login_req_hdr { | |||
| 334 | __le32 reserved2[4]; | 297 | __le32 reserved2[4]; |
| 335 | }; | 298 | }; |
| 336 | 299 | ||
| 300 | /* iSCSI logout request PDU header */ | ||
| 337 | struct iscsi_logout_req_hdr { | 301 | struct iscsi_logout_req_hdr { |
| 338 | __le16 reserved0; | 302 | __le16 reserved0; |
| 339 | u8 reason_code; | 303 | u8 reason_code; |
| @@ -348,13 +312,14 @@ struct iscsi_logout_req_hdr { | |||
| 348 | __le32 reserved4[4]; | 312 | __le32 reserved4[4]; |
| 349 | }; | 313 | }; |
| 350 | 314 | ||
| 315 | /* iSCSI Data-out PDU header */ | ||
| 351 | struct iscsi_data_out_hdr { | 316 | struct iscsi_data_out_hdr { |
| 352 | __le16 reserved1; | 317 | __le16 reserved1; |
| 353 | u8 flags_attr; | 318 | u8 flags_attr; |
| 354 | #define ISCSI_DATA_OUT_HDR_RSRV_MASK 0x7F | 319 | #define ISCSI_DATA_OUT_HDR_RSRV_MASK 0x7F |
| 355 | #define ISCSI_DATA_OUT_HDR_RSRV_SHIFT 0 | 320 | #define ISCSI_DATA_OUT_HDR_RSRV_SHIFT 0 |
| 356 | #define ISCSI_DATA_OUT_HDR_FINAL_MASK 0x1 | 321 | #define ISCSI_DATA_OUT_HDR_FINAL_MASK 0x1 |
| 357 | #define ISCSI_DATA_OUT_HDR_FINAL_SHIFT 7 | 322 | #define ISCSI_DATA_OUT_HDR_FINAL_SHIFT 7 |
| 358 | u8 opcode; | 323 | u8 opcode; |
| 359 | __le32 reserved2; | 324 | __le32 reserved2; |
| 360 | struct regpair lun; | 325 | struct regpair lun; |
| @@ -368,22 +333,23 @@ struct iscsi_data_out_hdr { | |||
| 368 | __le32 reserved5; | 333 | __le32 reserved5; |
| 369 | }; | 334 | }; |
| 370 | 335 | ||
| 336 | /* iSCSI Data-in PDU header */ | ||
| 371 | struct iscsi_data_in_hdr { | 337 | struct iscsi_data_in_hdr { |
| 372 | u8 status_rsvd; | 338 | u8 status_rsvd; |
| 373 | u8 reserved1; | 339 | u8 reserved1; |
| 374 | u8 flags; | 340 | u8 flags; |
| 375 | #define ISCSI_DATA_IN_HDR_STATUS_MASK 0x1 | 341 | #define ISCSI_DATA_IN_HDR_STATUS_MASK 0x1 |
| 376 | #define ISCSI_DATA_IN_HDR_STATUS_SHIFT 0 | 342 | #define ISCSI_DATA_IN_HDR_STATUS_SHIFT 0 |
| 377 | #define ISCSI_DATA_IN_HDR_UNDERFLOW_MASK 0x1 | 343 | #define ISCSI_DATA_IN_HDR_UNDERFLOW_MASK 0x1 |
| 378 | #define ISCSI_DATA_IN_HDR_UNDERFLOW_SHIFT 1 | 344 | #define ISCSI_DATA_IN_HDR_UNDERFLOW_SHIFT 1 |
| 379 | #define ISCSI_DATA_IN_HDR_OVERFLOW_MASK 0x1 | 345 | #define ISCSI_DATA_IN_HDR_OVERFLOW_MASK 0x1 |
| 380 | #define ISCSI_DATA_IN_HDR_OVERFLOW_SHIFT 2 | 346 | #define ISCSI_DATA_IN_HDR_OVERFLOW_SHIFT 2 |
| 381 | #define ISCSI_DATA_IN_HDR_RSRV_MASK 0x7 | 347 | #define ISCSI_DATA_IN_HDR_RSRV_MASK 0x7 |
| 382 | #define ISCSI_DATA_IN_HDR_RSRV_SHIFT 3 | 348 | #define ISCSI_DATA_IN_HDR_RSRV_SHIFT 3 |
| 383 | #define ISCSI_DATA_IN_HDR_ACK_MASK 0x1 | 349 | #define ISCSI_DATA_IN_HDR_ACK_MASK 0x1 |
| 384 | #define ISCSI_DATA_IN_HDR_ACK_SHIFT 6 | 350 | #define ISCSI_DATA_IN_HDR_ACK_SHIFT 6 |
| 385 | #define ISCSI_DATA_IN_HDR_FINAL_MASK 0x1 | 351 | #define ISCSI_DATA_IN_HDR_FINAL_MASK 0x1 |
| 386 | #define ISCSI_DATA_IN_HDR_FINAL_SHIFT 7 | 352 | #define ISCSI_DATA_IN_HDR_FINAL_SHIFT 7 |
| 387 | u8 opcode; | 353 | u8 opcode; |
| 388 | __le32 reserved2; | 354 | __le32 reserved2; |
| 389 | struct regpair lun; | 355 | struct regpair lun; |
| @@ -397,6 +363,7 @@ struct iscsi_data_in_hdr { | |||
| 397 | __le32 residual_count; | 363 | __le32 residual_count; |
| 398 | }; | 364 | }; |
| 399 | 365 | ||
| 366 | /* iSCSI R2T PDU header */ | ||
| 400 | struct iscsi_r2t_hdr { | 367 | struct iscsi_r2t_hdr { |
| 401 | u8 reserved0[3]; | 368 | u8 reserved0[3]; |
| 402 | u8 opcode; | 369 | u8 opcode; |
| @@ -412,13 +379,14 @@ struct iscsi_r2t_hdr { | |||
| 412 | __le32 desired_data_trns_len; | 379 | __le32 desired_data_trns_len; |
| 413 | }; | 380 | }; |
| 414 | 381 | ||
| 382 | /* iSCSI NOP-out PDU header */ | ||
| 415 | struct iscsi_nop_out_hdr { | 383 | struct iscsi_nop_out_hdr { |
| 416 | __le16 reserved1; | 384 | __le16 reserved1; |
| 417 | u8 flags_attr; | 385 | u8 flags_attr; |
| 418 | #define ISCSI_NOP_OUT_HDR_RSRV_MASK 0x7F | 386 | #define ISCSI_NOP_OUT_HDR_RSRV_MASK 0x7F |
| 419 | #define ISCSI_NOP_OUT_HDR_RSRV_SHIFT 0 | 387 | #define ISCSI_NOP_OUT_HDR_RSRV_SHIFT 0 |
| 420 | #define ISCSI_NOP_OUT_HDR_CONST1_MASK 0x1 | 388 | #define ISCSI_NOP_OUT_HDR_CONST1_MASK 0x1 |
| 421 | #define ISCSI_NOP_OUT_HDR_CONST1_SHIFT 7 | 389 | #define ISCSI_NOP_OUT_HDR_CONST1_SHIFT 7 |
| 422 | u8 opcode; | 390 | u8 opcode; |
| 423 | __le32 reserved2; | 391 | __le32 reserved2; |
| 424 | struct regpair lun; | 392 | struct regpair lun; |
| @@ -432,19 +400,20 @@ struct iscsi_nop_out_hdr { | |||
| 432 | __le32 reserved6; | 400 | __le32 reserved6; |
| 433 | }; | 401 | }; |
| 434 | 402 | ||
| 403 | /* iSCSI NOP-in PDU header */ | ||
| 435 | struct iscsi_nop_in_hdr { | 404 | struct iscsi_nop_in_hdr { |
| 436 | __le16 reserved0; | 405 | __le16 reserved0; |
| 437 | u8 flags_attr; | 406 | u8 flags_attr; |
| 438 | #define ISCSI_NOP_IN_HDR_RSRV_MASK 0x7F | 407 | #define ISCSI_NOP_IN_HDR_RSRV_MASK 0x7F |
| 439 | #define ISCSI_NOP_IN_HDR_RSRV_SHIFT 0 | 408 | #define ISCSI_NOP_IN_HDR_RSRV_SHIFT 0 |
| 440 | #define ISCSI_NOP_IN_HDR_CONST1_MASK 0x1 | 409 | #define ISCSI_NOP_IN_HDR_CONST1_MASK 0x1 |
| 441 | #define ISCSI_NOP_IN_HDR_CONST1_SHIFT 7 | 410 | #define ISCSI_NOP_IN_HDR_CONST1_SHIFT 7 |
| 442 | u8 opcode; | 411 | u8 opcode; |
| 443 | __le32 hdr_second_dword; | 412 | __le32 hdr_second_dword; |
| 444 | #define ISCSI_NOP_IN_HDR_DATA_SEG_LEN_MASK 0xFFFFFF | 413 | #define ISCSI_NOP_IN_HDR_DATA_SEG_LEN_MASK 0xFFFFFF |
| 445 | #define ISCSI_NOP_IN_HDR_DATA_SEG_LEN_SHIFT 0 | 414 | #define ISCSI_NOP_IN_HDR_DATA_SEG_LEN_SHIFT 0 |
| 446 | #define ISCSI_NOP_IN_HDR_TOTAL_AHS_LEN_MASK 0xFF | 415 | #define ISCSI_NOP_IN_HDR_TOTAL_AHS_LEN_MASK 0xFF |
| 447 | #define ISCSI_NOP_IN_HDR_TOTAL_AHS_LEN_SHIFT 24 | 416 | #define ISCSI_NOP_IN_HDR_TOTAL_AHS_LEN_SHIFT 24 |
| 448 | struct regpair lun; | 417 | struct regpair lun; |
| 449 | __le32 itt; | 418 | __le32 itt; |
| 450 | __le32 ttt; | 419 | __le32 ttt; |
| @@ -456,26 +425,27 @@ struct iscsi_nop_in_hdr { | |||
| 456 | __le32 reserved7; | 425 | __le32 reserved7; |
| 457 | }; | 426 | }; |
| 458 | 427 | ||
| 428 | /* iSCSI Login Response PDU header */ | ||
| 459 | struct iscsi_login_response_hdr { | 429 | struct iscsi_login_response_hdr { |
| 460 | u8 version_active; | 430 | u8 version_active; |
| 461 | u8 version_max; | 431 | u8 version_max; |
| 462 | u8 flags_attr; | 432 | u8 flags_attr; |
| 463 | #define ISCSI_LOGIN_RESPONSE_HDR_NSG_MASK 0x3 | 433 | #define ISCSI_LOGIN_RESPONSE_HDR_NSG_MASK 0x3 |
| 464 | #define ISCSI_LOGIN_RESPONSE_HDR_NSG_SHIFT 0 | 434 | #define ISCSI_LOGIN_RESPONSE_HDR_NSG_SHIFT 0 |
| 465 | #define ISCSI_LOGIN_RESPONSE_HDR_CSG_MASK 0x3 | 435 | #define ISCSI_LOGIN_RESPONSE_HDR_CSG_MASK 0x3 |
| 466 | #define ISCSI_LOGIN_RESPONSE_HDR_CSG_SHIFT 2 | 436 | #define ISCSI_LOGIN_RESPONSE_HDR_CSG_SHIFT 2 |
| 467 | #define ISCSI_LOGIN_RESPONSE_HDR_RSRV_MASK 0x3 | 437 | #define ISCSI_LOGIN_RESPONSE_HDR_RSRV_MASK 0x3 |
| 468 | #define ISCSI_LOGIN_RESPONSE_HDR_RSRV_SHIFT 4 | 438 | #define ISCSI_LOGIN_RESPONSE_HDR_RSRV_SHIFT 4 |
| 469 | #define ISCSI_LOGIN_RESPONSE_HDR_C_MASK 0x1 | 439 | #define ISCSI_LOGIN_RESPONSE_HDR_C_MASK 0x1 |
| 470 | #define ISCSI_LOGIN_RESPONSE_HDR_C_SHIFT 6 | 440 | #define ISCSI_LOGIN_RESPONSE_HDR_C_SHIFT 6 |
| 471 | #define ISCSI_LOGIN_RESPONSE_HDR_T_MASK 0x1 | 441 | #define ISCSI_LOGIN_RESPONSE_HDR_T_MASK 0x1 |
| 472 | #define ISCSI_LOGIN_RESPONSE_HDR_T_SHIFT 7 | 442 | #define ISCSI_LOGIN_RESPONSE_HDR_T_SHIFT 7 |
| 473 | u8 opcode; | 443 | u8 opcode; |
| 474 | __le32 hdr_second_dword; | 444 | __le32 hdr_second_dword; |
| 475 | #define ISCSI_LOGIN_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF | 445 | #define ISCSI_LOGIN_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF |
| 476 | #define ISCSI_LOGIN_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0 | 446 | #define ISCSI_LOGIN_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0 |
| 477 | #define ISCSI_LOGIN_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF | 447 | #define ISCSI_LOGIN_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF |
| 478 | #define ISCSI_LOGIN_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24 | 448 | #define ISCSI_LOGIN_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24 |
| 479 | __le32 isid_tabc; | 449 | __le32 isid_tabc; |
| 480 | __le16 tsih; | 450 | __le16 tsih; |
| 481 | __le16 isid_d; | 451 | __le16 isid_d; |
| @@ -490,16 +460,17 @@ struct iscsi_login_response_hdr { | |||
| 490 | __le32 reserved4[2]; | 460 | __le32 reserved4[2]; |
| 491 | }; | 461 | }; |
| 492 | 462 | ||
| 463 | /* iSCSI Logout Response PDU header */ | ||
| 493 | struct iscsi_logout_response_hdr { | 464 | struct iscsi_logout_response_hdr { |
| 494 | u8 reserved1; | 465 | u8 reserved1; |
| 495 | u8 response; | 466 | u8 response; |
| 496 | u8 flags; | 467 | u8 flags; |
| 497 | u8 opcode; | 468 | u8 opcode; |
| 498 | __le32 hdr_second_dword; | 469 | __le32 hdr_second_dword; |
| 499 | #define ISCSI_LOGOUT_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF | 470 | #define ISCSI_LOGOUT_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF |
| 500 | #define ISCSI_LOGOUT_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0 | 471 | #define ISCSI_LOGOUT_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0 |
| 501 | #define ISCSI_LOGOUT_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF | 472 | #define ISCSI_LOGOUT_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF |
| 502 | #define ISCSI_LOGOUT_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24 | 473 | #define ISCSI_LOGOUT_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24 |
| 503 | __le32 reserved2[2]; | 474 | __le32 reserved2[2]; |
| 504 | __le32 itt; | 475 | __le32 itt; |
| 505 | __le32 reserved3; | 476 | __le32 reserved3; |
| @@ -512,21 +483,22 @@ struct iscsi_logout_response_hdr { | |||
| 512 | __le32 reserved5[1]; | 483 | __le32 reserved5[1]; |
| 513 | }; | 484 | }; |
| 514 | 485 | ||
| 486 | /* iSCSI Text Request PDU header */ | ||
| 515 | struct iscsi_text_request_hdr { | 487 | struct iscsi_text_request_hdr { |
| 516 | __le16 reserved0; | 488 | __le16 reserved0; |
| 517 | u8 flags_attr; | 489 | u8 flags_attr; |
| 518 | #define ISCSI_TEXT_REQUEST_HDR_RSRV_MASK 0x3F | 490 | #define ISCSI_TEXT_REQUEST_HDR_RSRV_MASK 0x3F |
| 519 | #define ISCSI_TEXT_REQUEST_HDR_RSRV_SHIFT 0 | 491 | #define ISCSI_TEXT_REQUEST_HDR_RSRV_SHIFT 0 |
| 520 | #define ISCSI_TEXT_REQUEST_HDR_C_MASK 0x1 | 492 | #define ISCSI_TEXT_REQUEST_HDR_C_MASK 0x1 |
| 521 | #define ISCSI_TEXT_REQUEST_HDR_C_SHIFT 6 | 493 | #define ISCSI_TEXT_REQUEST_HDR_C_SHIFT 6 |
| 522 | #define ISCSI_TEXT_REQUEST_HDR_F_MASK 0x1 | 494 | #define ISCSI_TEXT_REQUEST_HDR_F_MASK 0x1 |
| 523 | #define ISCSI_TEXT_REQUEST_HDR_F_SHIFT 7 | 495 | #define ISCSI_TEXT_REQUEST_HDR_F_SHIFT 7 |
| 524 | u8 opcode; | 496 | u8 opcode; |
| 525 | __le32 hdr_second_dword; | 497 | __le32 hdr_second_dword; |
| 526 | #define ISCSI_TEXT_REQUEST_HDR_DATA_SEG_LEN_MASK 0xFFFFFF | 498 | #define ISCSI_TEXT_REQUEST_HDR_DATA_SEG_LEN_MASK 0xFFFFFF |
| 527 | #define ISCSI_TEXT_REQUEST_HDR_DATA_SEG_LEN_SHIFT 0 | 499 | #define ISCSI_TEXT_REQUEST_HDR_DATA_SEG_LEN_SHIFT 0 |
| 528 | #define ISCSI_TEXT_REQUEST_HDR_TOTAL_AHS_LEN_MASK 0xFF | 500 | #define ISCSI_TEXT_REQUEST_HDR_TOTAL_AHS_LEN_MASK 0xFF |
| 529 | #define ISCSI_TEXT_REQUEST_HDR_TOTAL_AHS_LEN_SHIFT 24 | 501 | #define ISCSI_TEXT_REQUEST_HDR_TOTAL_AHS_LEN_SHIFT 24 |
| 530 | struct regpair lun; | 502 | struct regpair lun; |
| 531 | __le32 itt; | 503 | __le32 itt; |
| 532 | __le32 ttt; | 504 | __le32 ttt; |
| @@ -535,21 +507,22 @@ struct iscsi_text_request_hdr { | |||
| 535 | __le32 reserved4[4]; | 507 | __le32 reserved4[4]; |
| 536 | }; | 508 | }; |
| 537 | 509 | ||
| 510 | /* iSCSI Text Response PDU header */ | ||
| 538 | struct iscsi_text_response_hdr { | 511 | struct iscsi_text_response_hdr { |
| 539 | __le16 reserved1; | 512 | __le16 reserved1; |
| 540 | u8 flags; | 513 | u8 flags; |
| 541 | #define ISCSI_TEXT_RESPONSE_HDR_RSRV_MASK 0x3F | 514 | #define ISCSI_TEXT_RESPONSE_HDR_RSRV_MASK 0x3F |
| 542 | #define ISCSI_TEXT_RESPONSE_HDR_RSRV_SHIFT 0 | 515 | #define ISCSI_TEXT_RESPONSE_HDR_RSRV_SHIFT 0 |
| 543 | #define ISCSI_TEXT_RESPONSE_HDR_C_MASK 0x1 | 516 | #define ISCSI_TEXT_RESPONSE_HDR_C_MASK 0x1 |
| 544 | #define ISCSI_TEXT_RESPONSE_HDR_C_SHIFT 6 | 517 | #define ISCSI_TEXT_RESPONSE_HDR_C_SHIFT 6 |
| 545 | #define ISCSI_TEXT_RESPONSE_HDR_F_MASK 0x1 | 518 | #define ISCSI_TEXT_RESPONSE_HDR_F_MASK 0x1 |
| 546 | #define ISCSI_TEXT_RESPONSE_HDR_F_SHIFT 7 | 519 | #define ISCSI_TEXT_RESPONSE_HDR_F_SHIFT 7 |
| 547 | u8 opcode; | 520 | u8 opcode; |
| 548 | __le32 hdr_second_dword; | 521 | __le32 hdr_second_dword; |
| 549 | #define ISCSI_TEXT_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF | 522 | #define ISCSI_TEXT_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF |
| 550 | #define ISCSI_TEXT_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0 | 523 | #define ISCSI_TEXT_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0 |
| 551 | #define ISCSI_TEXT_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF | 524 | #define ISCSI_TEXT_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF |
| 552 | #define ISCSI_TEXT_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24 | 525 | #define ISCSI_TEXT_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24 |
| 553 | struct regpair lun; | 526 | struct regpair lun; |
| 554 | __le32 itt; | 527 | __le32 itt; |
| 555 | __le32 ttt; | 528 | __le32 ttt; |
| @@ -559,15 +532,16 @@ struct iscsi_text_response_hdr { | |||
| 559 | __le32 reserved4[3]; | 532 | __le32 reserved4[3]; |
| 560 | }; | 533 | }; |
| 561 | 534 | ||
| 535 | /* iSCSI TMF Request PDU header */ | ||
| 562 | struct iscsi_tmf_request_hdr { | 536 | struct iscsi_tmf_request_hdr { |
| 563 | __le16 reserved0; | 537 | __le16 reserved0; |
| 564 | u8 function; | 538 | u8 function; |
| 565 | u8 opcode; | 539 | u8 opcode; |
| 566 | __le32 hdr_second_dword; | 540 | __le32 hdr_second_dword; |
| 567 | #define ISCSI_TMF_REQUEST_HDR_DATA_SEG_LEN_MASK 0xFFFFFF | 541 | #define ISCSI_TMF_REQUEST_HDR_DATA_SEG_LEN_MASK 0xFFFFFF |
| 568 | #define ISCSI_TMF_REQUEST_HDR_DATA_SEG_LEN_SHIFT 0 | 542 | #define ISCSI_TMF_REQUEST_HDR_DATA_SEG_LEN_SHIFT 0 |
| 569 | #define ISCSI_TMF_REQUEST_HDR_TOTAL_AHS_LEN_MASK 0xFF | 543 | #define ISCSI_TMF_REQUEST_HDR_TOTAL_AHS_LEN_MASK 0xFF |
| 570 | #define ISCSI_TMF_REQUEST_HDR_TOTAL_AHS_LEN_SHIFT 24 | 544 | #define ISCSI_TMF_REQUEST_HDR_TOTAL_AHS_LEN_SHIFT 24 |
| 571 | struct regpair lun; | 545 | struct regpair lun; |
| 572 | __le32 itt; | 546 | __le32 itt; |
| 573 | __le32 rtt; | 547 | __le32 rtt; |
| @@ -584,10 +558,10 @@ struct iscsi_tmf_response_hdr { | |||
| 584 | u8 hdr_flags; | 558 | u8 hdr_flags; |
| 585 | u8 opcode; | 559 | u8 opcode; |
| 586 | __le32 hdr_second_dword; | 560 | __le32 hdr_second_dword; |
| 587 | #define ISCSI_TMF_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF | 561 | #define ISCSI_TMF_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF |
| 588 | #define ISCSI_TMF_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0 | 562 | #define ISCSI_TMF_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0 |
| 589 | #define ISCSI_TMF_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF | 563 | #define ISCSI_TMF_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF |
| 590 | #define ISCSI_TMF_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24 | 564 | #define ISCSI_TMF_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24 |
| 591 | struct regpair reserved0; | 565 | struct regpair reserved0; |
| 592 | __le32 itt; | 566 | __le32 itt; |
| 593 | __le32 reserved1; | 567 | __le32 reserved1; |
| @@ -597,16 +571,17 @@ struct iscsi_tmf_response_hdr { | |||
| 597 | __le32 reserved4[3]; | 571 | __le32 reserved4[3]; |
| 598 | }; | 572 | }; |
| 599 | 573 | ||
| 574 | /* iSCSI Response PDU header */ | ||
| 600 | struct iscsi_response_hdr { | 575 | struct iscsi_response_hdr { |
| 601 | u8 hdr_status; | 576 | u8 hdr_status; |
| 602 | u8 hdr_response; | 577 | u8 hdr_response; |
| 603 | u8 hdr_flags; | 578 | u8 hdr_flags; |
| 604 | u8 opcode; | 579 | u8 opcode; |
| 605 | __le32 hdr_second_dword; | 580 | __le32 hdr_second_dword; |
| 606 | #define ISCSI_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF | 581 | #define ISCSI_RESPONSE_HDR_DATA_SEG_LEN_MASK 0xFFFFFF |
| 607 | #define ISCSI_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0 | 582 | #define ISCSI_RESPONSE_HDR_DATA_SEG_LEN_SHIFT 0 |
| 608 | #define ISCSI_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF | 583 | #define ISCSI_RESPONSE_HDR_TOTAL_AHS_LEN_MASK 0xFF |
| 609 | #define ISCSI_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24 | 584 | #define ISCSI_RESPONSE_HDR_TOTAL_AHS_LEN_SHIFT 24 |
| 610 | struct regpair lun; | 585 | struct regpair lun; |
| 611 | __le32 itt; | 586 | __le32 itt; |
| 612 | __le32 snack_tag; | 587 | __le32 snack_tag; |
| @@ -618,16 +593,17 @@ struct iscsi_response_hdr { | |||
| 618 | __le32 residual_count; | 593 | __le32 residual_count; |
| 619 | }; | 594 | }; |
| 620 | 595 | ||
| 596 | /* iSCSI Reject PDU header */ | ||
| 621 | struct iscsi_reject_hdr { | 597 | struct iscsi_reject_hdr { |
| 622 | u8 reserved4; | 598 | u8 reserved4; |
| 623 | u8 hdr_reason; | 599 | u8 hdr_reason; |
| 624 | u8 hdr_flags; | 600 | u8 hdr_flags; |
| 625 | u8 opcode; | 601 | u8 opcode; |
| 626 | __le32 hdr_second_dword; | 602 | __le32 hdr_second_dword; |
| 627 | #define ISCSI_REJECT_HDR_DATA_SEG_LEN_MASK 0xFFFFFF | 603 | #define ISCSI_REJECT_HDR_DATA_SEG_LEN_MASK 0xFFFFFF |
| 628 | #define ISCSI_REJECT_HDR_DATA_SEG_LEN_SHIFT 0 | 604 | #define ISCSI_REJECT_HDR_DATA_SEG_LEN_SHIFT 0 |
| 629 | #define ISCSI_REJECT_HDR_TOTAL_AHS_LEN_MASK 0xFF | 605 | #define ISCSI_REJECT_HDR_TOTAL_AHS_LEN_MASK 0xFF |
| 630 | #define ISCSI_REJECT_HDR_TOTAL_AHS_LEN_SHIFT 24 | 606 | #define ISCSI_REJECT_HDR_TOTAL_AHS_LEN_SHIFT 24 |
| 631 | struct regpair reserved0; | 607 | struct regpair reserved0; |
| 632 | __le32 all_ones; | 608 | __le32 all_ones; |
| 633 | __le32 reserved2; | 609 | __le32 reserved2; |
| @@ -638,6 +614,35 @@ struct iscsi_reject_hdr { | |||
| 638 | __le32 reserved3[2]; | 614 | __le32 reserved3[2]; |
| 639 | }; | 615 | }; |
| 640 | 616 | ||
| 617 | /* iSCSI Asynchronous Message PDU header */ | ||
| 618 | struct iscsi_async_msg_hdr { | ||
| 619 | __le16 reserved0; | ||
| 620 | u8 flags_attr; | ||
| 621 | #define ISCSI_ASYNC_MSG_HDR_RSRV_MASK 0x7F | ||
| 622 | #define ISCSI_ASYNC_MSG_HDR_RSRV_SHIFT 0 | ||
| 623 | #define ISCSI_ASYNC_MSG_HDR_CONST1_MASK 0x1 | ||
| 624 | #define ISCSI_ASYNC_MSG_HDR_CONST1_SHIFT 7 | ||
| 625 | u8 opcode; | ||
| 626 | __le32 hdr_second_dword; | ||
| 627 | #define ISCSI_ASYNC_MSG_HDR_DATA_SEG_LEN_MASK 0xFFFFFF | ||
| 628 | #define ISCSI_ASYNC_MSG_HDR_DATA_SEG_LEN_SHIFT 0 | ||
| 629 | #define ISCSI_ASYNC_MSG_HDR_TOTAL_AHS_LEN_MASK 0xFF | ||
| 630 | #define ISCSI_ASYNC_MSG_HDR_TOTAL_AHS_LEN_SHIFT 24 | ||
| 631 | struct regpair lun; | ||
| 632 | __le32 all_ones; | ||
| 633 | __le32 reserved1; | ||
| 634 | __le32 stat_sn; | ||
| 635 | __le32 exp_cmd_sn; | ||
| 636 | __le32 max_cmd_sn; | ||
| 637 | __le16 param1_rsrv; | ||
| 638 | u8 async_vcode; | ||
| 639 | u8 async_event; | ||
| 640 | __le16 param3_rsrv; | ||
| 641 | __le16 param2_rsrv; | ||
| 642 | __le32 reserved7; | ||
| 643 | }; | ||
| 644 | |||
| 645 | /* PDU header part of Ystorm task context */ | ||
| 641 | union iscsi_task_hdr { | 646 | union iscsi_task_hdr { |
| 642 | struct iscsi_common_hdr common; | 647 | struct iscsi_common_hdr common; |
| 643 | struct data_hdr data; | 648 | struct data_hdr data; |
| @@ -661,6 +666,329 @@ union iscsi_task_hdr { | |||
| 661 | struct iscsi_async_msg_hdr async_msg; | 666 | struct iscsi_async_msg_hdr async_msg; |
| 662 | }; | 667 | }; |
| 663 | 668 | ||
| 669 | /* The iscsi storm task context of Ystorm */ | ||
| 670 | struct ystorm_iscsi_task_st_ctx { | ||
| 671 | struct ystorm_iscsi_task_state state; | ||
| 672 | struct ystorm_iscsi_task_rxmit_opt rxmit_opt; | ||
| 673 | union iscsi_task_hdr pdu_hdr; | ||
| 674 | }; | ||
| 675 | |||
| 676 | struct ystorm_iscsi_task_ag_ctx { | ||
| 677 | u8 reserved; | ||
| 678 | u8 byte1; | ||
| 679 | __le16 word0; | ||
| 680 | u8 flags0; | ||
| 681 | #define YSTORM_ISCSI_TASK_AG_CTX_NIBBLE0_MASK 0xF | ||
| 682 | #define YSTORM_ISCSI_TASK_AG_CTX_NIBBLE0_SHIFT 0 | ||
| 683 | #define YSTORM_ISCSI_TASK_AG_CTX_BIT0_MASK 0x1 | ||
| 684 | #define YSTORM_ISCSI_TASK_AG_CTX_BIT0_SHIFT 4 | ||
| 685 | #define YSTORM_ISCSI_TASK_AG_CTX_BIT1_MASK 0x1 | ||
| 686 | #define YSTORM_ISCSI_TASK_AG_CTX_BIT1_SHIFT 5 | ||
| 687 | #define YSTORM_ISCSI_TASK_AG_CTX_VALID_MASK 0x1 | ||
| 688 | #define YSTORM_ISCSI_TASK_AG_CTX_VALID_SHIFT 6 | ||
| 689 | #define YSTORM_ISCSI_TASK_AG_CTX_BIT3_MASK 0x1 | ||
| 690 | #define YSTORM_ISCSI_TASK_AG_CTX_BIT3_SHIFT 7 | ||
| 691 | u8 flags1; | ||
| 692 | #define YSTORM_ISCSI_TASK_AG_CTX_CF0_MASK 0x3 | ||
| 693 | #define YSTORM_ISCSI_TASK_AG_CTX_CF0_SHIFT 0 | ||
| 694 | #define YSTORM_ISCSI_TASK_AG_CTX_CF1_MASK 0x3 | ||
| 695 | #define YSTORM_ISCSI_TASK_AG_CTX_CF1_SHIFT 2 | ||
| 696 | #define YSTORM_ISCSI_TASK_AG_CTX_CF2SPECIAL_MASK 0x3 | ||
| 697 | #define YSTORM_ISCSI_TASK_AG_CTX_CF2SPECIAL_SHIFT 4 | ||
| 698 | #define YSTORM_ISCSI_TASK_AG_CTX_CF0EN_MASK 0x1 | ||
| 699 | #define YSTORM_ISCSI_TASK_AG_CTX_CF0EN_SHIFT 6 | ||
| 700 | #define YSTORM_ISCSI_TASK_AG_CTX_CF1EN_MASK 0x1 | ||
| 701 | #define YSTORM_ISCSI_TASK_AG_CTX_CF1EN_SHIFT 7 | ||
| 702 | u8 flags2; | ||
| 703 | #define YSTORM_ISCSI_TASK_AG_CTX_BIT4_MASK 0x1 | ||
| 704 | #define YSTORM_ISCSI_TASK_AG_CTX_BIT4_SHIFT 0 | ||
| 705 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE0EN_MASK 0x1 | ||
| 706 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE0EN_SHIFT 1 | ||
| 707 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE1EN_MASK 0x1 | ||
| 708 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE1EN_SHIFT 2 | ||
| 709 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE2EN_MASK 0x1 | ||
| 710 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE2EN_SHIFT 3 | ||
| 711 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE3EN_MASK 0x1 | ||
| 712 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE3EN_SHIFT 4 | ||
| 713 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE4EN_MASK 0x1 | ||
| 714 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE4EN_SHIFT 5 | ||
| 715 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE5EN_MASK 0x1 | ||
| 716 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE5EN_SHIFT 6 | ||
| 717 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE6EN_MASK 0x1 | ||
| 718 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE6EN_SHIFT 7 | ||
| 719 | u8 byte2; | ||
| 720 | __le32 TTT; | ||
| 721 | u8 byte3; | ||
| 722 | u8 byte4; | ||
| 723 | __le16 word1; | ||
| 724 | }; | ||
| 725 | |||
| 726 | struct mstorm_iscsi_task_ag_ctx { | ||
| 727 | u8 cdu_validation; | ||
| 728 | u8 byte1; | ||
| 729 | __le16 task_cid; | ||
| 730 | u8 flags0; | ||
| 731 | #define MSTORM_ISCSI_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF | ||
| 732 | #define MSTORM_ISCSI_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0 | ||
| 733 | #define MSTORM_ISCSI_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1 | ||
| 734 | #define MSTORM_ISCSI_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4 | ||
| 735 | #define MSTORM_ISCSI_TASK_AG_CTX_BIT1_MASK 0x1 | ||
| 736 | #define MSTORM_ISCSI_TASK_AG_CTX_BIT1_SHIFT 5 | ||
| 737 | #define MSTORM_ISCSI_TASK_AG_CTX_VALID_MASK 0x1 | ||
| 738 | #define MSTORM_ISCSI_TASK_AG_CTX_VALID_SHIFT 6 | ||
| 739 | #define MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_FLAG_MASK 0x1 | ||
| 740 | #define MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_FLAG_SHIFT 7 | ||
| 741 | u8 flags1; | ||
| 742 | #define MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_CF_MASK 0x3 | ||
| 743 | #define MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_CF_SHIFT 0 | ||
| 744 | #define MSTORM_ISCSI_TASK_AG_CTX_CF1_MASK 0x3 | ||
| 745 | #define MSTORM_ISCSI_TASK_AG_CTX_CF1_SHIFT 2 | ||
| 746 | #define MSTORM_ISCSI_TASK_AG_CTX_CF2_MASK 0x3 | ||
| 747 | #define MSTORM_ISCSI_TASK_AG_CTX_CF2_SHIFT 4 | ||
| 748 | #define MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_CF_EN_MASK 0x1 | ||
| 749 | #define MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_CF_EN_SHIFT 6 | ||
| 750 | #define MSTORM_ISCSI_TASK_AG_CTX_CF1EN_MASK 0x1 | ||
| 751 | #define MSTORM_ISCSI_TASK_AG_CTX_CF1EN_SHIFT 7 | ||
| 752 | u8 flags2; | ||
| 753 | #define MSTORM_ISCSI_TASK_AG_CTX_CF2EN_MASK 0x1 | ||
| 754 | #define MSTORM_ISCSI_TASK_AG_CTX_CF2EN_SHIFT 0 | ||
| 755 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE0EN_MASK 0x1 | ||
| 756 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE0EN_SHIFT 1 | ||
| 757 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE1EN_MASK 0x1 | ||
| 758 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE1EN_SHIFT 2 | ||
| 759 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE2EN_MASK 0x1 | ||
| 760 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE2EN_SHIFT 3 | ||
| 761 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE3EN_MASK 0x1 | ||
| 762 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE3EN_SHIFT 4 | ||
| 763 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE4EN_MASK 0x1 | ||
| 764 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE4EN_SHIFT 5 | ||
| 765 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE5EN_MASK 0x1 | ||
| 766 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE5EN_SHIFT 6 | ||
| 767 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE6EN_MASK 0x1 | ||
| 768 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE6EN_SHIFT 7 | ||
| 769 | u8 byte2; | ||
| 770 | __le32 reg0; | ||
| 771 | u8 byte3; | ||
| 772 | u8 byte4; | ||
| 773 | __le16 word1; | ||
| 774 | }; | ||
| 775 | |||
| 776 | struct ustorm_iscsi_task_ag_ctx { | ||
| 777 | u8 reserved; | ||
| 778 | u8 state; | ||
| 779 | __le16 icid; | ||
| 780 | u8 flags0; | ||
| 781 | #define USTORM_ISCSI_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF | ||
| 782 | #define USTORM_ISCSI_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0 | ||
| 783 | #define USTORM_ISCSI_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1 | ||
| 784 | #define USTORM_ISCSI_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4 | ||
| 785 | #define USTORM_ISCSI_TASK_AG_CTX_BIT1_MASK 0x1 | ||
| 786 | #define USTORM_ISCSI_TASK_AG_CTX_BIT1_SHIFT 5 | ||
| 787 | #define USTORM_ISCSI_TASK_AG_CTX_HQ_SCANNED_CF_MASK 0x3 | ||
| 788 | #define USTORM_ISCSI_TASK_AG_CTX_HQ_SCANNED_CF_SHIFT 6 | ||
| 789 | u8 flags1; | ||
| 790 | #define USTORM_ISCSI_TASK_AG_CTX_RESERVED1_MASK 0x3 | ||
| 791 | #define USTORM_ISCSI_TASK_AG_CTX_RESERVED1_SHIFT 0 | ||
| 792 | #define USTORM_ISCSI_TASK_AG_CTX_R2T2RECV_MASK 0x3 | ||
| 793 | #define USTORM_ISCSI_TASK_AG_CTX_R2T2RECV_SHIFT 2 | ||
| 794 | #define USTORM_ISCSI_TASK_AG_CTX_CF3_MASK 0x3 | ||
| 795 | #define USTORM_ISCSI_TASK_AG_CTX_CF3_SHIFT 4 | ||
| 796 | #define USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_CF_MASK 0x3 | ||
| 797 | #define USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_CF_SHIFT 6 | ||
| 798 | u8 flags2; | ||
| 799 | #define USTORM_ISCSI_TASK_AG_CTX_HQ_SCANNED_CF_EN_MASK 0x1 | ||
| 800 | #define USTORM_ISCSI_TASK_AG_CTX_HQ_SCANNED_CF_EN_SHIFT 0 | ||
| 801 | #define USTORM_ISCSI_TASK_AG_CTX_DISABLE_DATA_ACKED_MASK 0x1 | ||
| 802 | #define USTORM_ISCSI_TASK_AG_CTX_DISABLE_DATA_ACKED_SHIFT 1 | ||
| 803 | #define USTORM_ISCSI_TASK_AG_CTX_R2T2RECV_EN_MASK 0x1 | ||
| 804 | #define USTORM_ISCSI_TASK_AG_CTX_R2T2RECV_EN_SHIFT 2 | ||
| 805 | #define USTORM_ISCSI_TASK_AG_CTX_CF3EN_MASK 0x1 | ||
| 806 | #define USTORM_ISCSI_TASK_AG_CTX_CF3EN_SHIFT 3 | ||
| 807 | #define USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_CF_EN_MASK 0x1 | ||
| 808 | #define USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_CF_EN_SHIFT 4 | ||
| 809 | #define USTORM_ISCSI_TASK_AG_CTX_CMP_DATA_TOTAL_EXP_EN_MASK 0x1 | ||
| 810 | #define USTORM_ISCSI_TASK_AG_CTX_CMP_DATA_TOTAL_EXP_EN_SHIFT 5 | ||
| 811 | #define USTORM_ISCSI_TASK_AG_CTX_RULE1EN_MASK 0x1 | ||
| 812 | #define USTORM_ISCSI_TASK_AG_CTX_RULE1EN_SHIFT 6 | ||
| 813 | #define USTORM_ISCSI_TASK_AG_CTX_CMP_CONT_RCV_EXP_EN_MASK 0x1 | ||
| 814 | #define USTORM_ISCSI_TASK_AG_CTX_CMP_CONT_RCV_EXP_EN_SHIFT 7 | ||
| 815 | u8 flags3; | ||
| 816 | #define USTORM_ISCSI_TASK_AG_CTX_RULE3EN_MASK 0x1 | ||
| 817 | #define USTORM_ISCSI_TASK_AG_CTX_RULE3EN_SHIFT 0 | ||
| 818 | #define USTORM_ISCSI_TASK_AG_CTX_RULE4EN_MASK 0x1 | ||
| 819 | #define USTORM_ISCSI_TASK_AG_CTX_RULE4EN_SHIFT 1 | ||
| 820 | #define USTORM_ISCSI_TASK_AG_CTX_RULE5EN_MASK 0x1 | ||
| 821 | #define USTORM_ISCSI_TASK_AG_CTX_RULE5EN_SHIFT 2 | ||
| 822 | #define USTORM_ISCSI_TASK_AG_CTX_RULE6EN_MASK 0x1 | ||
| 823 | #define USTORM_ISCSI_TASK_AG_CTX_RULE6EN_SHIFT 3 | ||
| 824 | #define USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_TYPE_MASK 0xF | ||
| 825 | #define USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_TYPE_SHIFT 4 | ||
| 826 | __le32 dif_err_intervals; | ||
| 827 | __le32 dif_error_1st_interval; | ||
| 828 | __le32 rcv_cont_len; | ||
| 829 | __le32 exp_cont_len; | ||
| 830 | __le32 total_data_acked; | ||
| 831 | __le32 exp_data_acked; | ||
| 832 | u8 next_tid_valid; | ||
| 833 | u8 byte3; | ||
| 834 | __le16 word1; | ||
| 835 | __le16 next_tid; | ||
| 836 | __le16 word3; | ||
| 837 | __le32 hdr_residual_count; | ||
| 838 | __le32 exp_r2t_sn; | ||
| 839 | }; | ||
| 840 | |||
| 841 | /* The iscsi storm task context of Mstorm */ | ||
| 842 | struct mstorm_iscsi_task_st_ctx { | ||
| 843 | struct scsi_cached_sges data_desc; | ||
| 844 | struct scsi_sgl_params sgl_params; | ||
| 845 | __le32 rem_task_size; | ||
| 846 | __le32 data_buffer_offset; | ||
| 847 | u8 task_type; | ||
| 848 | struct iscsi_dif_flags dif_flags; | ||
| 849 | u8 reserved0[2]; | ||
| 850 | struct regpair sense_db; | ||
| 851 | __le32 expected_itt; | ||
| 852 | __le32 reserved1; | ||
| 853 | }; | ||
| 854 | |||
| 855 | struct iscsi_reg1 { | ||
| 856 | __le32 reg1_map; | ||
| 857 | #define ISCSI_REG1_NUM_SGES_MASK 0xF | ||
| 858 | #define ISCSI_REG1_NUM_SGES_SHIFT 0 | ||
| 859 | #define ISCSI_REG1_RESERVED1_MASK 0xFFFFFFF | ||
| 860 | #define ISCSI_REG1_RESERVED1_SHIFT 4 | ||
| 861 | }; | ||
| 862 | |||
| 863 | /* The iscsi storm task context of Ustorm */ | ||
| 864 | struct ustorm_iscsi_task_st_ctx { | ||
| 865 | __le32 rem_rcv_len; | ||
| 866 | __le32 exp_data_transfer_len; | ||
| 867 | __le32 exp_data_sn; | ||
| 868 | struct regpair lun; | ||
| 869 | struct iscsi_reg1 reg1; | ||
| 870 | u8 flags2; | ||
| 871 | #define USTORM_ISCSI_TASK_ST_CTX_AHS_EXIST_MASK 0x1 | ||
| 872 | #define USTORM_ISCSI_TASK_ST_CTX_AHS_EXIST_SHIFT 0 | ||
| 873 | #define USTORM_ISCSI_TASK_ST_CTX_RESERVED1_MASK 0x7F | ||
| 874 | #define USTORM_ISCSI_TASK_ST_CTX_RESERVED1_SHIFT 1 | ||
| 875 | struct iscsi_dif_flags dif_flags; | ||
| 876 | __le16 reserved3; | ||
| 877 | __le32 reserved4; | ||
| 878 | __le32 reserved5; | ||
| 879 | __le32 reserved6; | ||
| 880 | __le32 reserved7; | ||
| 881 | u8 task_type; | ||
| 882 | u8 error_flags; | ||
| 883 | #define USTORM_ISCSI_TASK_ST_CTX_DATA_DIGEST_ERROR_MASK 0x1 | ||
| 884 | #define USTORM_ISCSI_TASK_ST_CTX_DATA_DIGEST_ERROR_SHIFT 0 | ||
| 885 | #define USTORM_ISCSI_TASK_ST_CTX_DATA_TRUNCATED_ERROR_MASK 0x1 | ||
| 886 | #define USTORM_ISCSI_TASK_ST_CTX_DATA_TRUNCATED_ERROR_SHIFT 1 | ||
| 887 | #define USTORM_ISCSI_TASK_ST_CTX_UNDER_RUN_ERROR_MASK 0x1 | ||
| 888 | #define USTORM_ISCSI_TASK_ST_CTX_UNDER_RUN_ERROR_SHIFT 2 | ||
| 889 | #define USTORM_ISCSI_TASK_ST_CTX_RESERVED8_MASK 0x1F | ||
| 890 | #define USTORM_ISCSI_TASK_ST_CTX_RESERVED8_SHIFT 3 | ||
| 891 | u8 flags; | ||
| 892 | #define USTORM_ISCSI_TASK_ST_CTX_CQE_WRITE_MASK 0x3 | ||
| 893 | #define USTORM_ISCSI_TASK_ST_CTX_CQE_WRITE_SHIFT 0 | ||
| 894 | #define USTORM_ISCSI_TASK_ST_CTX_LOCAL_COMP_MASK 0x1 | ||
| 895 | #define USTORM_ISCSI_TASK_ST_CTX_LOCAL_COMP_SHIFT 2 | ||
| 896 | #define USTORM_ISCSI_TASK_ST_CTX_Q0_R2TQE_WRITE_MASK 0x1 | ||
| 897 | #define USTORM_ISCSI_TASK_ST_CTX_Q0_R2TQE_WRITE_SHIFT 3 | ||
| 898 | #define USTORM_ISCSI_TASK_ST_CTX_TOTAL_DATA_ACKED_DONE_MASK 0x1 | ||
| 899 | #define USTORM_ISCSI_TASK_ST_CTX_TOTAL_DATA_ACKED_DONE_SHIFT 4 | ||
| 900 | #define USTORM_ISCSI_TASK_ST_CTX_HQ_SCANNED_DONE_MASK 0x1 | ||
| 901 | #define USTORM_ISCSI_TASK_ST_CTX_HQ_SCANNED_DONE_SHIFT 5 | ||
| 902 | #define USTORM_ISCSI_TASK_ST_CTX_R2T2RECV_DONE_MASK 0x1 | ||
| 903 | #define USTORM_ISCSI_TASK_ST_CTX_R2T2RECV_DONE_SHIFT 6 | ||
| 904 | #define USTORM_ISCSI_TASK_ST_CTX_RESERVED0_MASK 0x1 | ||
| 905 | #define USTORM_ISCSI_TASK_ST_CTX_RESERVED0_SHIFT 7 | ||
| 906 | u8 cq_rss_number; | ||
| 907 | }; | ||
| 908 | |||
| 909 | /* iscsi task context */ | ||
| 910 | struct iscsi_task_context { | ||
| 911 | struct ystorm_iscsi_task_st_ctx ystorm_st_context; | ||
| 912 | struct ystorm_iscsi_task_ag_ctx ystorm_ag_context; | ||
| 913 | struct regpair ystorm_ag_padding[2]; | ||
| 914 | struct tdif_task_context tdif_context; | ||
| 915 | struct mstorm_iscsi_task_ag_ctx mstorm_ag_context; | ||
| 916 | struct regpair mstorm_ag_padding[2]; | ||
| 917 | struct ustorm_iscsi_task_ag_ctx ustorm_ag_context; | ||
| 918 | struct mstorm_iscsi_task_st_ctx mstorm_st_context; | ||
| 919 | struct ustorm_iscsi_task_st_ctx ustorm_st_context; | ||
| 920 | struct rdif_task_context rdif_context; | ||
| 921 | }; | ||
| 922 | |||
| 923 | /* iSCSI connection offload params passed by driver to FW in ISCSI offload | ||
| 924 | * ramrod. | ||
| 925 | */ | ||
| 926 | struct iscsi_conn_offload_params { | ||
| 927 | struct regpair sq_pbl_addr; | ||
| 928 | struct regpair r2tq_pbl_addr; | ||
| 929 | struct regpair xhq_pbl_addr; | ||
| 930 | struct regpair uhq_pbl_addr; | ||
| 931 | __le32 initial_ack; | ||
| 932 | __le16 physical_q0; | ||
| 933 | __le16 physical_q1; | ||
| 934 | u8 flags; | ||
| 935 | #define ISCSI_CONN_OFFLOAD_PARAMS_TCP_ON_CHIP_1B_MASK 0x1 | ||
| 936 | #define ISCSI_CONN_OFFLOAD_PARAMS_TCP_ON_CHIP_1B_SHIFT 0 | ||
| 937 | #define ISCSI_CONN_OFFLOAD_PARAMS_TARGET_MODE_MASK 0x1 | ||
| 938 | #define ISCSI_CONN_OFFLOAD_PARAMS_TARGET_MODE_SHIFT 1 | ||
| 939 | #define ISCSI_CONN_OFFLOAD_PARAMS_RESTRICTED_MODE_MASK 0x1 | ||
| 940 | #define ISCSI_CONN_OFFLOAD_PARAMS_RESTRICTED_MODE_SHIFT 2 | ||
| 941 | #define ISCSI_CONN_OFFLOAD_PARAMS_RESERVED1_MASK 0x1F | ||
| 942 | #define ISCSI_CONN_OFFLOAD_PARAMS_RESERVED1_SHIFT 3 | ||
| 943 | u8 pbl_page_size_log; | ||
| 944 | u8 pbe_page_size_log; | ||
| 945 | u8 default_cq; | ||
| 946 | __le32 stat_sn; | ||
| 947 | }; | ||
| 948 | |||
| 949 | /* spe message header */ | ||
| 950 | struct iscsi_slow_path_hdr { | ||
| 951 | u8 op_code; | ||
| 952 | u8 flags; | ||
| 953 | #define ISCSI_SLOW_PATH_HDR_RESERVED0_MASK 0xF | ||
| 954 | #define ISCSI_SLOW_PATH_HDR_RESERVED0_SHIFT 0 | ||
| 955 | #define ISCSI_SLOW_PATH_HDR_LAYER_CODE_MASK 0x7 | ||
| 956 | #define ISCSI_SLOW_PATH_HDR_LAYER_CODE_SHIFT 4 | ||
| 957 | #define ISCSI_SLOW_PATH_HDR_RESERVED1_MASK 0x1 | ||
| 958 | #define ISCSI_SLOW_PATH_HDR_RESERVED1_SHIFT 7 | ||
| 959 | }; | ||
| 960 | |||
| 961 | /* iSCSI connection update params passed by driver to FW in ISCSI update | ||
| 962 | *ramrod. | ||
| 963 | */ | ||
| 964 | struct iscsi_conn_update_ramrod_params { | ||
| 965 | struct iscsi_slow_path_hdr hdr; | ||
| 966 | __le16 conn_id; | ||
| 967 | __le32 fw_cid; | ||
| 968 | u8 flags; | ||
| 969 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_HD_EN_MASK 0x1 | ||
| 970 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_HD_EN_SHIFT 0 | ||
| 971 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DD_EN_MASK 0x1 | ||
| 972 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DD_EN_SHIFT 1 | ||
| 973 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_INITIAL_R2T_MASK 0x1 | ||
| 974 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_INITIAL_R2T_SHIFT 2 | ||
| 975 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_IMMEDIATE_DATA_MASK 0x1 | ||
| 976 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_IMMEDIATE_DATA_SHIFT 3 | ||
| 977 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DIF_BLOCK_SIZE_MASK 0x1 | ||
| 978 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DIF_BLOCK_SIZE_SHIFT 4 | ||
| 979 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DIF_ON_HOST_EN_MASK 0x1 | ||
| 980 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_DIF_ON_HOST_EN_SHIFT 5 | ||
| 981 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_RESERVED1_MASK 0x3 | ||
| 982 | #define ISCSI_CONN_UPDATE_RAMROD_PARAMS_RESERVED1_SHIFT 6 | ||
| 983 | u8 reserved0[3]; | ||
| 984 | __le32 max_seq_size; | ||
| 985 | __le32 max_send_pdu_length; | ||
| 986 | __le32 max_recv_pdu_length; | ||
| 987 | __le32 first_seq_length; | ||
| 988 | __le32 exp_stat_sn; | ||
| 989 | }; | ||
| 990 | |||
| 991 | /* iSCSI CQ element */ | ||
| 664 | struct iscsi_cqe_common { | 992 | struct iscsi_cqe_common { |
| 665 | __le16 conn_id; | 993 | __le16 conn_id; |
| 666 | u8 cqe_type; | 994 | u8 cqe_type; |
| @@ -669,6 +997,7 @@ struct iscsi_cqe_common { | |||
| 669 | union iscsi_task_hdr iscsi_hdr; | 997 | union iscsi_task_hdr iscsi_hdr; |
| 670 | }; | 998 | }; |
| 671 | 999 | ||
| 1000 | /* iSCSI CQ element */ | ||
| 672 | struct iscsi_cqe_solicited { | 1001 | struct iscsi_cqe_solicited { |
| 673 | __le16 conn_id; | 1002 | __le16 conn_id; |
| 674 | u8 cqe_type; | 1003 | u8 cqe_type; |
| @@ -682,6 +1011,7 @@ struct iscsi_cqe_solicited { | |||
| 682 | union iscsi_task_hdr iscsi_hdr; | 1011 | union iscsi_task_hdr iscsi_hdr; |
| 683 | }; | 1012 | }; |
| 684 | 1013 | ||
| 1014 | /* iSCSI CQ element */ | ||
| 685 | struct iscsi_cqe_unsolicited { | 1015 | struct iscsi_cqe_unsolicited { |
| 686 | __le16 conn_id; | 1016 | __le16 conn_id; |
| 687 | u8 cqe_type; | 1017 | u8 cqe_type; |
| @@ -693,12 +1023,14 @@ struct iscsi_cqe_unsolicited { | |||
| 693 | union iscsi_task_hdr iscsi_hdr; | 1023 | union iscsi_task_hdr iscsi_hdr; |
| 694 | }; | 1024 | }; |
| 695 | 1025 | ||
| 1026 | /* iSCSI CQ element */ | ||
| 696 | union iscsi_cqe { | 1027 | union iscsi_cqe { |
| 697 | struct iscsi_cqe_common cqe_common; | 1028 | struct iscsi_cqe_common cqe_common; |
| 698 | struct iscsi_cqe_solicited cqe_solicited; | 1029 | struct iscsi_cqe_solicited cqe_solicited; |
| 699 | struct iscsi_cqe_unsolicited cqe_unsolicited; | 1030 | struct iscsi_cqe_unsolicited cqe_unsolicited; |
| 700 | }; | 1031 | }; |
| 701 | 1032 | ||
| 1033 | /* iSCSI CQE type */ | ||
| 702 | enum iscsi_cqes_type { | 1034 | enum iscsi_cqes_type { |
| 703 | ISCSI_CQE_TYPE_SOLICITED = 1, | 1035 | ISCSI_CQE_TYPE_SOLICITED = 1, |
| 704 | ISCSI_CQE_TYPE_UNSOLICITED, | 1036 | ISCSI_CQE_TYPE_UNSOLICITED, |
| @@ -708,6 +1040,7 @@ enum iscsi_cqes_type { | |||
| 708 | MAX_ISCSI_CQES_TYPE | 1040 | MAX_ISCSI_CQES_TYPE |
| 709 | }; | 1041 | }; |
| 710 | 1042 | ||
| 1043 | /* iSCSI CQE type */ | ||
| 711 | enum iscsi_cqe_unsolicited_type { | 1044 | enum iscsi_cqe_unsolicited_type { |
| 712 | ISCSI_CQE_UNSOLICITED_NONE, | 1045 | ISCSI_CQE_UNSOLICITED_NONE, |
| 713 | ISCSI_CQE_UNSOLICITED_SINGLE, | 1046 | ISCSI_CQE_UNSOLICITED_SINGLE, |
| @@ -717,37 +1050,28 @@ enum iscsi_cqe_unsolicited_type { | |||
| 717 | MAX_ISCSI_CQE_UNSOLICITED_TYPE | 1050 | MAX_ISCSI_CQE_UNSOLICITED_TYPE |
| 718 | }; | 1051 | }; |
| 719 | 1052 | ||
| 720 | 1053 | /* iscsi debug modes */ | |
| 721 | struct iscsi_debug_modes { | 1054 | struct iscsi_debug_modes { |
| 722 | u8 flags; | 1055 | u8 flags; |
| 723 | #define ISCSI_DEBUG_MODES_ASSERT_IF_RX_CONN_ERROR_MASK 0x1 | 1056 | #define ISCSI_DEBUG_MODES_ASSERT_IF_RX_CONN_ERROR_MASK 0x1 |
| 724 | #define ISCSI_DEBUG_MODES_ASSERT_IF_RX_CONN_ERROR_SHIFT 0 | 1057 | #define ISCSI_DEBUG_MODES_ASSERT_IF_RX_CONN_ERROR_SHIFT 0 |
| 725 | #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_RESET_MASK 0x1 | 1058 | #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_RESET_MASK 0x1 |
| 726 | #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_RESET_SHIFT 1 | 1059 | #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_RESET_SHIFT 1 |
| 727 | #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_FIN_MASK 0x1 | 1060 | #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_FIN_MASK 0x1 |
| 728 | #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_FIN_SHIFT 2 | 1061 | #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_FIN_SHIFT 2 |
| 729 | #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_CLEANUP_MASK 0x1 | 1062 | #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_CLEANUP_MASK 0x1 |
| 730 | #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_CLEANUP_SHIFT 3 | 1063 | #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_CLEANUP_SHIFT 3 |
| 731 | #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_REJECT_OR_ASYNC_MASK 0x1 | 1064 | #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_REJECT_OR_ASYNC_MASK 0x1 |
| 732 | #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_REJECT_OR_ASYNC_SHIFT 4 | 1065 | #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_REJECT_OR_ASYNC_SHIFT 4 |
| 733 | #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_NOP_MASK 0x1 | 1066 | #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_NOP_MASK 0x1 |
| 734 | #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_NOP_SHIFT 5 | 1067 | #define ISCSI_DEBUG_MODES_ASSERT_IF_RECV_NOP_SHIFT 5 |
| 735 | #define ISCSI_DEBUG_MODES_ASSERT_IF_DATA_DIGEST_ERROR_MASK 0x1 | 1068 | #define ISCSI_DEBUG_MODES_ASSERT_IF_DATA_DIGEST_ERROR_MASK 0x1 |
| 736 | #define ISCSI_DEBUG_MODES_ASSERT_IF_DATA_DIGEST_ERROR_SHIFT 6 | 1069 | #define ISCSI_DEBUG_MODES_ASSERT_IF_DATA_DIGEST_ERROR_SHIFT 6 |
| 737 | #define ISCSI_DEBUG_MODES_ASSERT_IF_DIF_ERROR_MASK 0x1 | 1070 | #define ISCSI_DEBUG_MODES_ASSERT_IF_DIF_ERROR_MASK 0x1 |
| 738 | #define ISCSI_DEBUG_MODES_ASSERT_IF_DIF_ERROR_SHIFT 7 | 1071 | #define ISCSI_DEBUG_MODES_ASSERT_IF_DIF_ERROR_SHIFT 7 |
| 739 | }; | 1072 | }; |
| 740 | 1073 | ||
| 741 | struct iscsi_dif_flags { | 1074 | /* iSCSI kernel completion queue IDs */ |
| 742 | u8 flags; | ||
| 743 | #define ISCSI_DIF_FLAGS_PROT_INTERVAL_SIZE_LOG_MASK 0xF | ||
| 744 | #define ISCSI_DIF_FLAGS_PROT_INTERVAL_SIZE_LOG_SHIFT 0 | ||
| 745 | #define ISCSI_DIF_FLAGS_DIF_TO_PEER_MASK 0x1 | ||
| 746 | #define ISCSI_DIF_FLAGS_DIF_TO_PEER_SHIFT 4 | ||
| 747 | #define ISCSI_DIF_FLAGS_HOST_INTERFACE_MASK 0x7 | ||
| 748 | #define ISCSI_DIF_FLAGS_HOST_INTERFACE_SHIFT 5 | ||
| 749 | }; | ||
| 750 | |||
| 751 | enum iscsi_eqe_opcode { | 1075 | enum iscsi_eqe_opcode { |
| 752 | ISCSI_EVENT_TYPE_INIT_FUNC = 0, | 1076 | ISCSI_EVENT_TYPE_INIT_FUNC = 0, |
| 753 | ISCSI_EVENT_TYPE_DESTROY_FUNC, | 1077 | ISCSI_EVENT_TYPE_DESTROY_FUNC, |
| @@ -772,6 +1096,7 @@ enum iscsi_eqe_opcode { | |||
| 772 | MAX_ISCSI_EQE_OPCODE | 1096 | MAX_ISCSI_EQE_OPCODE |
| 773 | }; | 1097 | }; |
| 774 | 1098 | ||
| 1099 | /* iSCSI EQE and CQE completion status */ | ||
| 775 | enum iscsi_error_types { | 1100 | enum iscsi_error_types { |
| 776 | ISCSI_STATUS_NONE = 0, | 1101 | ISCSI_STATUS_NONE = 0, |
| 777 | ISCSI_CQE_ERROR_UNSOLICITED_RCV_ON_INVALID_CONN = 1, | 1102 | ISCSI_CQE_ERROR_UNSOLICITED_RCV_ON_INVALID_CONN = 1, |
| @@ -823,7 +1148,7 @@ enum iscsi_error_types { | |||
| 823 | MAX_ISCSI_ERROR_TYPES | 1148 | MAX_ISCSI_ERROR_TYPES |
| 824 | }; | 1149 | }; |
| 825 | 1150 | ||
| 826 | 1151 | /* iSCSI Ramrod Command IDs */ | |
| 827 | enum iscsi_ramrod_cmd_id { | 1152 | enum iscsi_ramrod_cmd_id { |
| 828 | ISCSI_RAMROD_CMD_ID_UNUSED = 0, | 1153 | ISCSI_RAMROD_CMD_ID_UNUSED = 0, |
| 829 | ISCSI_RAMROD_CMD_ID_INIT_FUNC = 1, | 1154 | ISCSI_RAMROD_CMD_ID_INIT_FUNC = 1, |
| @@ -836,19 +1161,7 @@ enum iscsi_ramrod_cmd_id { | |||
| 836 | MAX_ISCSI_RAMROD_CMD_ID | 1161 | MAX_ISCSI_RAMROD_CMD_ID |
| 837 | }; | 1162 | }; |
| 838 | 1163 | ||
| 839 | struct iscsi_reg1 { | 1164 | /* iSCSI connection termination request */ |
| 840 | __le32 reg1_map; | ||
| 841 | #define ISCSI_REG1_NUM_SGES_MASK 0xF | ||
| 842 | #define ISCSI_REG1_NUM_SGES_SHIFT 0 | ||
| 843 | #define ISCSI_REG1_RESERVED1_MASK 0xFFFFFFF | ||
| 844 | #define ISCSI_REG1_RESERVED1_SHIFT 4 | ||
| 845 | }; | ||
| 846 | |||
| 847 | union iscsi_seq_num { | ||
| 848 | __le16 data_sn; | ||
| 849 | __le16 r2t_sn; | ||
| 850 | }; | ||
| 851 | |||
| 852 | struct iscsi_spe_conn_mac_update { | 1165 | struct iscsi_spe_conn_mac_update { |
| 853 | struct iscsi_slow_path_hdr hdr; | 1166 | struct iscsi_slow_path_hdr hdr; |
| 854 | __le16 conn_id; | 1167 | __le16 conn_id; |
| @@ -859,6 +1172,9 @@ struct iscsi_spe_conn_mac_update { | |||
| 859 | u8 reserved0[2]; | 1172 | u8 reserved0[2]; |
| 860 | }; | 1173 | }; |
| 861 | 1174 | ||
| 1175 | /* iSCSI and TCP connection (Option 1) offload params passed by driver to FW in | ||
| 1176 | * iSCSI offload ramrod. | ||
| 1177 | */ | ||
| 862 | struct iscsi_spe_conn_offload { | 1178 | struct iscsi_spe_conn_offload { |
| 863 | struct iscsi_slow_path_hdr hdr; | 1179 | struct iscsi_slow_path_hdr hdr; |
| 864 | __le16 conn_id; | 1180 | __le16 conn_id; |
| @@ -867,6 +1183,9 @@ struct iscsi_spe_conn_offload { | |||
| 867 | struct tcp_offload_params tcp; | 1183 | struct tcp_offload_params tcp; |
| 868 | }; | 1184 | }; |
| 869 | 1185 | ||
| 1186 | /* iSCSI and TCP connection(Option 2) offload params passed by driver to FW in | ||
| 1187 | * iSCSI offload ramrod. | ||
| 1188 | */ | ||
| 870 | struct iscsi_spe_conn_offload_option2 { | 1189 | struct iscsi_spe_conn_offload_option2 { |
| 871 | struct iscsi_slow_path_hdr hdr; | 1190 | struct iscsi_slow_path_hdr hdr; |
| 872 | __le16 conn_id; | 1191 | __le16 conn_id; |
| @@ -875,6 +1194,7 @@ struct iscsi_spe_conn_offload_option2 { | |||
| 875 | struct tcp_offload_params_opt2 tcp; | 1194 | struct tcp_offload_params_opt2 tcp; |
| 876 | }; | 1195 | }; |
| 877 | 1196 | ||
| 1197 | /* iSCSI connection termination request */ | ||
| 878 | struct iscsi_spe_conn_termination { | 1198 | struct iscsi_spe_conn_termination { |
| 879 | struct iscsi_slow_path_hdr hdr; | 1199 | struct iscsi_slow_path_hdr hdr; |
| 880 | __le16 conn_id; | 1200 | __le16 conn_id; |
| @@ -885,12 +1205,14 @@ struct iscsi_spe_conn_termination { | |||
| 885 | struct regpair query_params_addr; | 1205 | struct regpair query_params_addr; |
| 886 | }; | 1206 | }; |
| 887 | 1207 | ||
| 1208 | /* iSCSI firmware function destroy parameters */ | ||
| 888 | struct iscsi_spe_func_dstry { | 1209 | struct iscsi_spe_func_dstry { |
| 889 | struct iscsi_slow_path_hdr hdr; | 1210 | struct iscsi_slow_path_hdr hdr; |
| 890 | __le16 reserved0; | 1211 | __le16 reserved0; |
| 891 | __le32 reserved1; | 1212 | __le32 reserved1; |
| 892 | }; | 1213 | }; |
| 893 | 1214 | ||
| 1215 | /* iSCSI firmware function init parameters */ | ||
| 894 | struct iscsi_spe_func_init { | 1216 | struct iscsi_spe_func_init { |
| 895 | struct iscsi_slow_path_hdr hdr; | 1217 | struct iscsi_slow_path_hdr hdr; |
| 896 | __le16 half_way_close_timeout; | 1218 | __le16 half_way_close_timeout; |
| @@ -908,273 +1230,7 @@ struct iscsi_spe_func_init { | |||
| 908 | struct scsi_init_func_queues q_params; | 1230 | struct scsi_init_func_queues q_params; |
| 909 | }; | 1231 | }; |
| 910 | 1232 | ||
| 911 | struct ystorm_iscsi_task_state { | 1233 | /* iSCSI task type */ |
| 912 | struct scsi_cached_sges data_desc; | ||
| 913 | struct scsi_sgl_params sgl_params; | ||
| 914 | __le32 exp_r2t_sn; | ||
| 915 | __le32 buffer_offset; | ||
| 916 | union iscsi_seq_num seq_num; | ||
| 917 | struct iscsi_dif_flags dif_flags; | ||
| 918 | u8 flags; | ||
| 919 | #define YSTORM_ISCSI_TASK_STATE_LOCAL_COMP_MASK 0x1 | ||
| 920 | #define YSTORM_ISCSI_TASK_STATE_LOCAL_COMP_SHIFT 0 | ||
| 921 | #define YSTORM_ISCSI_TASK_STATE_SLOW_IO_MASK 0x1 | ||
| 922 | #define YSTORM_ISCSI_TASK_STATE_SLOW_IO_SHIFT 1 | ||
| 923 | #define YSTORM_ISCSI_TASK_STATE_RESERVED0_MASK 0x3F | ||
| 924 | #define YSTORM_ISCSI_TASK_STATE_RESERVED0_SHIFT 2 | ||
| 925 | }; | ||
| 926 | |||
| 927 | struct ystorm_iscsi_task_rxmit_opt { | ||
| 928 | __le32 fast_rxmit_sge_offset; | ||
| 929 | __le32 scan_start_buffer_offset; | ||
| 930 | __le32 fast_rxmit_buffer_offset; | ||
| 931 | u8 scan_start_sgl_index; | ||
| 932 | u8 fast_rxmit_sgl_index; | ||
| 933 | __le16 reserved; | ||
| 934 | }; | ||
| 935 | |||
| 936 | struct ystorm_iscsi_task_st_ctx { | ||
| 937 | struct ystorm_iscsi_task_state state; | ||
| 938 | struct ystorm_iscsi_task_rxmit_opt rxmit_opt; | ||
| 939 | union iscsi_task_hdr pdu_hdr; | ||
| 940 | }; | ||
| 941 | |||
| 942 | struct ystorm_iscsi_task_ag_ctx { | ||
| 943 | u8 reserved; | ||
| 944 | u8 byte1; | ||
| 945 | __le16 word0; | ||
| 946 | u8 flags0; | ||
| 947 | #define YSTORM_ISCSI_TASK_AG_CTX_NIBBLE0_MASK 0xF | ||
| 948 | #define YSTORM_ISCSI_TASK_AG_CTX_NIBBLE0_SHIFT 0 | ||
| 949 | #define YSTORM_ISCSI_TASK_AG_CTX_BIT0_MASK 0x1 | ||
| 950 | #define YSTORM_ISCSI_TASK_AG_CTX_BIT0_SHIFT 4 | ||
| 951 | #define YSTORM_ISCSI_TASK_AG_CTX_BIT1_MASK 0x1 | ||
| 952 | #define YSTORM_ISCSI_TASK_AG_CTX_BIT1_SHIFT 5 | ||
| 953 | #define YSTORM_ISCSI_TASK_AG_CTX_VALID_MASK 0x1 | ||
| 954 | #define YSTORM_ISCSI_TASK_AG_CTX_VALID_SHIFT 6 | ||
| 955 | #define YSTORM_ISCSI_TASK_AG_CTX_BIT3_MASK 0x1 | ||
| 956 | #define YSTORM_ISCSI_TASK_AG_CTX_BIT3_SHIFT 7 | ||
| 957 | u8 flags1; | ||
| 958 | #define YSTORM_ISCSI_TASK_AG_CTX_CF0_MASK 0x3 | ||
| 959 | #define YSTORM_ISCSI_TASK_AG_CTX_CF0_SHIFT 0 | ||
| 960 | #define YSTORM_ISCSI_TASK_AG_CTX_CF1_MASK 0x3 | ||
| 961 | #define YSTORM_ISCSI_TASK_AG_CTX_CF1_SHIFT 2 | ||
| 962 | #define YSTORM_ISCSI_TASK_AG_CTX_CF2SPECIAL_MASK 0x3 | ||
| 963 | #define YSTORM_ISCSI_TASK_AG_CTX_CF2SPECIAL_SHIFT 4 | ||
| 964 | #define YSTORM_ISCSI_TASK_AG_CTX_CF0EN_MASK 0x1 | ||
| 965 | #define YSTORM_ISCSI_TASK_AG_CTX_CF0EN_SHIFT 6 | ||
| 966 | #define YSTORM_ISCSI_TASK_AG_CTX_CF1EN_MASK 0x1 | ||
| 967 | #define YSTORM_ISCSI_TASK_AG_CTX_CF1EN_SHIFT 7 | ||
| 968 | u8 flags2; | ||
| 969 | #define YSTORM_ISCSI_TASK_AG_CTX_BIT4_MASK 0x1 | ||
| 970 | #define YSTORM_ISCSI_TASK_AG_CTX_BIT4_SHIFT 0 | ||
| 971 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE0EN_MASK 0x1 | ||
| 972 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE0EN_SHIFT 1 | ||
| 973 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE1EN_MASK 0x1 | ||
| 974 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE1EN_SHIFT 2 | ||
| 975 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE2EN_MASK 0x1 | ||
| 976 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE2EN_SHIFT 3 | ||
| 977 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE3EN_MASK 0x1 | ||
| 978 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE3EN_SHIFT 4 | ||
| 979 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE4EN_MASK 0x1 | ||
| 980 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE4EN_SHIFT 5 | ||
| 981 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE5EN_MASK 0x1 | ||
| 982 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE5EN_SHIFT 6 | ||
| 983 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE6EN_MASK 0x1 | ||
| 984 | #define YSTORM_ISCSI_TASK_AG_CTX_RULE6EN_SHIFT 7 | ||
| 985 | u8 byte2; | ||
| 986 | __le32 TTT; | ||
| 987 | u8 byte3; | ||
| 988 | u8 byte4; | ||
| 989 | __le16 word1; | ||
| 990 | }; | ||
| 991 | |||
| 992 | struct mstorm_iscsi_task_ag_ctx { | ||
| 993 | u8 cdu_validation; | ||
| 994 | u8 byte1; | ||
| 995 | __le16 task_cid; | ||
| 996 | u8 flags0; | ||
| 997 | #define MSTORM_ISCSI_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF | ||
| 998 | #define MSTORM_ISCSI_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0 | ||
| 999 | #define MSTORM_ISCSI_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1 | ||
| 1000 | #define MSTORM_ISCSI_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4 | ||
| 1001 | #define MSTORM_ISCSI_TASK_AG_CTX_BIT1_MASK 0x1 | ||
| 1002 | #define MSTORM_ISCSI_TASK_AG_CTX_BIT1_SHIFT 5 | ||
| 1003 | #define MSTORM_ISCSI_TASK_AG_CTX_VALID_MASK 0x1 | ||
| 1004 | #define MSTORM_ISCSI_TASK_AG_CTX_VALID_SHIFT 6 | ||
| 1005 | #define MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_FLAG_MASK 0x1 | ||
| 1006 | #define MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_FLAG_SHIFT 7 | ||
| 1007 | u8 flags1; | ||
| 1008 | #define MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_CF_MASK 0x3 | ||
| 1009 | #define MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_CF_SHIFT 0 | ||
| 1010 | #define MSTORM_ISCSI_TASK_AG_CTX_CF1_MASK 0x3 | ||
| 1011 | #define MSTORM_ISCSI_TASK_AG_CTX_CF1_SHIFT 2 | ||
| 1012 | #define MSTORM_ISCSI_TASK_AG_CTX_CF2_MASK 0x3 | ||
| 1013 | #define MSTORM_ISCSI_TASK_AG_CTX_CF2_SHIFT 4 | ||
| 1014 | #define MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_CF_EN_MASK 0x1 | ||
| 1015 | #define MSTORM_ISCSI_TASK_AG_CTX_TASK_CLEANUP_CF_EN_SHIFT 6 | ||
| 1016 | #define MSTORM_ISCSI_TASK_AG_CTX_CF1EN_MASK 0x1 | ||
| 1017 | #define MSTORM_ISCSI_TASK_AG_CTX_CF1EN_SHIFT 7 | ||
| 1018 | u8 flags2; | ||
| 1019 | #define MSTORM_ISCSI_TASK_AG_CTX_CF2EN_MASK 0x1 | ||
| 1020 | #define MSTORM_ISCSI_TASK_AG_CTX_CF2EN_SHIFT 0 | ||
| 1021 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE0EN_MASK 0x1 | ||
| 1022 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE0EN_SHIFT 1 | ||
| 1023 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE1EN_MASK 0x1 | ||
| 1024 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE1EN_SHIFT 2 | ||
| 1025 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE2EN_MASK 0x1 | ||
| 1026 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE2EN_SHIFT 3 | ||
| 1027 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE3EN_MASK 0x1 | ||
| 1028 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE3EN_SHIFT 4 | ||
| 1029 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE4EN_MASK 0x1 | ||
| 1030 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE4EN_SHIFT 5 | ||
| 1031 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE5EN_MASK 0x1 | ||
| 1032 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE5EN_SHIFT 6 | ||
| 1033 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE6EN_MASK 0x1 | ||
| 1034 | #define MSTORM_ISCSI_TASK_AG_CTX_RULE6EN_SHIFT 7 | ||
| 1035 | u8 byte2; | ||
| 1036 | __le32 reg0; | ||
| 1037 | u8 byte3; | ||
| 1038 | u8 byte4; | ||
| 1039 | __le16 word1; | ||
| 1040 | }; | ||
| 1041 | |||
| 1042 | struct ustorm_iscsi_task_ag_ctx { | ||
| 1043 | u8 reserved; | ||
| 1044 | u8 state; | ||
| 1045 | __le16 icid; | ||
| 1046 | u8 flags0; | ||
| 1047 | #define USTORM_ISCSI_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF | ||
| 1048 | #define USTORM_ISCSI_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0 | ||
| 1049 | #define USTORM_ISCSI_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1 | ||
| 1050 | #define USTORM_ISCSI_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4 | ||
| 1051 | #define USTORM_ISCSI_TASK_AG_CTX_BIT1_MASK 0x1 | ||
| 1052 | #define USTORM_ISCSI_TASK_AG_CTX_BIT1_SHIFT 5 | ||
| 1053 | #define USTORM_ISCSI_TASK_AG_CTX_HQ_SCANNED_CF_MASK 0x3 | ||
| 1054 | #define USTORM_ISCSI_TASK_AG_CTX_HQ_SCANNED_CF_SHIFT 6 | ||
| 1055 | u8 flags1; | ||
| 1056 | #define USTORM_ISCSI_TASK_AG_CTX_RESERVED1_MASK 0x3 | ||
| 1057 | #define USTORM_ISCSI_TASK_AG_CTX_RESERVED1_SHIFT 0 | ||
| 1058 | #define USTORM_ISCSI_TASK_AG_CTX_R2T2RECV_MASK 0x3 | ||
| 1059 | #define USTORM_ISCSI_TASK_AG_CTX_R2T2RECV_SHIFT 2 | ||
| 1060 | #define USTORM_ISCSI_TASK_AG_CTX_CF3_MASK 0x3 | ||
| 1061 | #define USTORM_ISCSI_TASK_AG_CTX_CF3_SHIFT 4 | ||
| 1062 | #define USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_CF_MASK 0x3 | ||
| 1063 | #define USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_CF_SHIFT 6 | ||
| 1064 | u8 flags2; | ||
| 1065 | #define USTORM_ISCSI_TASK_AG_CTX_HQ_SCANNED_CF_EN_MASK 0x1 | ||
| 1066 | #define USTORM_ISCSI_TASK_AG_CTX_HQ_SCANNED_CF_EN_SHIFT 0 | ||
| 1067 | #define USTORM_ISCSI_TASK_AG_CTX_DISABLE_DATA_ACKED_MASK 0x1 | ||
| 1068 | #define USTORM_ISCSI_TASK_AG_CTX_DISABLE_DATA_ACKED_SHIFT 1 | ||
| 1069 | #define USTORM_ISCSI_TASK_AG_CTX_R2T2RECV_EN_MASK 0x1 | ||
| 1070 | #define USTORM_ISCSI_TASK_AG_CTX_R2T2RECV_EN_SHIFT 2 | ||
| 1071 | #define USTORM_ISCSI_TASK_AG_CTX_CF3EN_MASK 0x1 | ||
| 1072 | #define USTORM_ISCSI_TASK_AG_CTX_CF3EN_SHIFT 3 | ||
| 1073 | #define USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_CF_EN_MASK 0x1 | ||
| 1074 | #define USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_CF_EN_SHIFT 4 | ||
| 1075 | #define USTORM_ISCSI_TASK_AG_CTX_CMP_DATA_TOTAL_EXP_EN_MASK 0x1 | ||
| 1076 | #define USTORM_ISCSI_TASK_AG_CTX_CMP_DATA_TOTAL_EXP_EN_SHIFT 5 | ||
| 1077 | #define USTORM_ISCSI_TASK_AG_CTX_RULE1EN_MASK 0x1 | ||
| 1078 | #define USTORM_ISCSI_TASK_AG_CTX_RULE1EN_SHIFT 6 | ||
| 1079 | #define USTORM_ISCSI_TASK_AG_CTX_CMP_CONT_RCV_EXP_EN_MASK 0x1 | ||
| 1080 | #define USTORM_ISCSI_TASK_AG_CTX_CMP_CONT_RCV_EXP_EN_SHIFT 7 | ||
| 1081 | u8 flags3; | ||
| 1082 | #define USTORM_ISCSI_TASK_AG_CTX_RULE3EN_MASK 0x1 | ||
| 1083 | #define USTORM_ISCSI_TASK_AG_CTX_RULE3EN_SHIFT 0 | ||
| 1084 | #define USTORM_ISCSI_TASK_AG_CTX_RULE4EN_MASK 0x1 | ||
| 1085 | #define USTORM_ISCSI_TASK_AG_CTX_RULE4EN_SHIFT 1 | ||
| 1086 | #define USTORM_ISCSI_TASK_AG_CTX_RULE5EN_MASK 0x1 | ||
| 1087 | #define USTORM_ISCSI_TASK_AG_CTX_RULE5EN_SHIFT 2 | ||
| 1088 | #define USTORM_ISCSI_TASK_AG_CTX_RULE6EN_MASK 0x1 | ||
| 1089 | #define USTORM_ISCSI_TASK_AG_CTX_RULE6EN_SHIFT 3 | ||
| 1090 | #define USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_TYPE_MASK 0xF | ||
| 1091 | #define USTORM_ISCSI_TASK_AG_CTX_DIF_ERROR_TYPE_SHIFT 4 | ||
| 1092 | __le32 dif_err_intervals; | ||
| 1093 | __le32 dif_error_1st_interval; | ||
| 1094 | __le32 rcv_cont_len; | ||
| 1095 | __le32 exp_cont_len; | ||
| 1096 | __le32 total_data_acked; | ||
| 1097 | __le32 exp_data_acked; | ||
| 1098 | u8 next_tid_valid; | ||
| 1099 | u8 byte3; | ||
| 1100 | __le16 word1; | ||
| 1101 | __le16 next_tid; | ||
| 1102 | __le16 word3; | ||
| 1103 | __le32 hdr_residual_count; | ||
| 1104 | __le32 exp_r2t_sn; | ||
| 1105 | }; | ||
| 1106 | |||
| 1107 | struct mstorm_iscsi_task_st_ctx { | ||
| 1108 | struct scsi_cached_sges data_desc; | ||
| 1109 | struct scsi_sgl_params sgl_params; | ||
| 1110 | __le32 rem_task_size; | ||
| 1111 | __le32 data_buffer_offset; | ||
| 1112 | u8 task_type; | ||
| 1113 | struct iscsi_dif_flags dif_flags; | ||
| 1114 | u8 reserved0[2]; | ||
| 1115 | struct regpair sense_db; | ||
| 1116 | __le32 expected_itt; | ||
| 1117 | __le32 reserved1; | ||
| 1118 | }; | ||
| 1119 | |||
| 1120 | struct ustorm_iscsi_task_st_ctx { | ||
| 1121 | __le32 rem_rcv_len; | ||
| 1122 | __le32 exp_data_transfer_len; | ||
| 1123 | __le32 exp_data_sn; | ||
| 1124 | struct regpair lun; | ||
| 1125 | struct iscsi_reg1 reg1; | ||
| 1126 | u8 flags2; | ||
| 1127 | #define USTORM_ISCSI_TASK_ST_CTX_AHS_EXIST_MASK 0x1 | ||
| 1128 | #define USTORM_ISCSI_TASK_ST_CTX_AHS_EXIST_SHIFT 0 | ||
| 1129 | #define USTORM_ISCSI_TASK_ST_CTX_RESERVED1_MASK 0x7F | ||
| 1130 | #define USTORM_ISCSI_TASK_ST_CTX_RESERVED1_SHIFT 1 | ||
| 1131 | struct iscsi_dif_flags dif_flags; | ||
| 1132 | __le16 reserved3; | ||
| 1133 | __le32 reserved4; | ||
| 1134 | __le32 reserved5; | ||
| 1135 | __le32 reserved6; | ||
| 1136 | __le32 reserved7; | ||
| 1137 | u8 task_type; | ||
| 1138 | u8 error_flags; | ||
| 1139 | #define USTORM_ISCSI_TASK_ST_CTX_DATA_DIGEST_ERROR_MASK 0x1 | ||
| 1140 | #define USTORM_ISCSI_TASK_ST_CTX_DATA_DIGEST_ERROR_SHIFT 0 | ||
| 1141 | #define USTORM_ISCSI_TASK_ST_CTX_DATA_TRUNCATED_ERROR_MASK 0x1 | ||
| 1142 | #define USTORM_ISCSI_TASK_ST_CTX_DATA_TRUNCATED_ERROR_SHIFT 1 | ||
| 1143 | #define USTORM_ISCSI_TASK_ST_CTX_UNDER_RUN_ERROR_MASK 0x1 | ||
| 1144 | #define USTORM_ISCSI_TASK_ST_CTX_UNDER_RUN_ERROR_SHIFT 2 | ||
| 1145 | #define USTORM_ISCSI_TASK_ST_CTX_RESERVED8_MASK 0x1F | ||
| 1146 | #define USTORM_ISCSI_TASK_ST_CTX_RESERVED8_SHIFT 3 | ||
| 1147 | u8 flags; | ||
| 1148 | #define USTORM_ISCSI_TASK_ST_CTX_CQE_WRITE_MASK 0x3 | ||
| 1149 | #define USTORM_ISCSI_TASK_ST_CTX_CQE_WRITE_SHIFT 0 | ||
| 1150 | #define USTORM_ISCSI_TASK_ST_CTX_LOCAL_COMP_MASK 0x1 | ||
| 1151 | #define USTORM_ISCSI_TASK_ST_CTX_LOCAL_COMP_SHIFT 2 | ||
| 1152 | #define USTORM_ISCSI_TASK_ST_CTX_Q0_R2TQE_WRITE_MASK 0x1 | ||
| 1153 | #define USTORM_ISCSI_TASK_ST_CTX_Q0_R2TQE_WRITE_SHIFT 3 | ||
| 1154 | #define USTORM_ISCSI_TASK_ST_CTX_TOTAL_DATA_ACKED_DONE_MASK 0x1 | ||
| 1155 | #define USTORM_ISCSI_TASK_ST_CTX_TOTAL_DATA_ACKED_DONE_SHIFT 4 | ||
| 1156 | #define USTORM_ISCSI_TASK_ST_CTX_HQ_SCANNED_DONE_MASK 0x1 | ||
| 1157 | #define USTORM_ISCSI_TASK_ST_CTX_HQ_SCANNED_DONE_SHIFT 5 | ||
| 1158 | #define USTORM_ISCSI_TASK_ST_CTX_R2T2RECV_DONE_MASK 0x1 | ||
| 1159 | #define USTORM_ISCSI_TASK_ST_CTX_R2T2RECV_DONE_SHIFT 6 | ||
| 1160 | #define USTORM_ISCSI_TASK_ST_CTX_RESERVED0_MASK 0x1 | ||
| 1161 | #define USTORM_ISCSI_TASK_ST_CTX_RESERVED0_SHIFT 7 | ||
| 1162 | u8 cq_rss_number; | ||
| 1163 | }; | ||
| 1164 | |||
| 1165 | struct iscsi_task_context { | ||
| 1166 | struct ystorm_iscsi_task_st_ctx ystorm_st_context; | ||
| 1167 | struct ystorm_iscsi_task_ag_ctx ystorm_ag_context; | ||
| 1168 | struct regpair ystorm_ag_padding[2]; | ||
| 1169 | struct tdif_task_context tdif_context; | ||
| 1170 | struct mstorm_iscsi_task_ag_ctx mstorm_ag_context; | ||
| 1171 | struct regpair mstorm_ag_padding[2]; | ||
| 1172 | struct ustorm_iscsi_task_ag_ctx ustorm_ag_context; | ||
| 1173 | struct mstorm_iscsi_task_st_ctx mstorm_st_context; | ||
| 1174 | struct ustorm_iscsi_task_st_ctx ustorm_st_context; | ||
| 1175 | struct rdif_task_context rdif_context; | ||
| 1176 | }; | ||
| 1177 | |||
| 1178 | enum iscsi_task_type { | 1234 | enum iscsi_task_type { |
| 1179 | ISCSI_TASK_TYPE_INITIATOR_WRITE, | 1235 | ISCSI_TASK_TYPE_INITIATOR_WRITE, |
| 1180 | ISCSI_TASK_TYPE_INITIATOR_READ, | 1236 | ISCSI_TASK_TYPE_INITIATOR_READ, |
| @@ -1189,50 +1245,53 @@ enum iscsi_task_type { | |||
| 1189 | MAX_ISCSI_TASK_TYPE | 1245 | MAX_ISCSI_TASK_TYPE |
| 1190 | }; | 1246 | }; |
| 1191 | 1247 | ||
| 1248 | /* iSCSI DesiredDataTransferLength/ttt union */ | ||
| 1192 | union iscsi_ttt_txlen_union { | 1249 | union iscsi_ttt_txlen_union { |
| 1193 | __le32 desired_tx_len; | 1250 | __le32 desired_tx_len; |
| 1194 | __le32 ttt; | 1251 | __le32 ttt; |
| 1195 | }; | 1252 | }; |
| 1196 | 1253 | ||
| 1254 | /* iSCSI uHQ element */ | ||
| 1197 | struct iscsi_uhqe { | 1255 | struct iscsi_uhqe { |
| 1198 | __le32 reg1; | 1256 | __le32 reg1; |
| 1199 | #define ISCSI_UHQE_PDU_PAYLOAD_LEN_MASK 0xFFFFF | 1257 | #define ISCSI_UHQE_PDU_PAYLOAD_LEN_MASK 0xFFFFF |
| 1200 | #define ISCSI_UHQE_PDU_PAYLOAD_LEN_SHIFT 0 | 1258 | #define ISCSI_UHQE_PDU_PAYLOAD_LEN_SHIFT 0 |
| 1201 | #define ISCSI_UHQE_LOCAL_COMP_MASK 0x1 | 1259 | #define ISCSI_UHQE_LOCAL_COMP_MASK 0x1 |
| 1202 | #define ISCSI_UHQE_LOCAL_COMP_SHIFT 20 | 1260 | #define ISCSI_UHQE_LOCAL_COMP_SHIFT 20 |
| 1203 | #define ISCSI_UHQE_TOGGLE_BIT_MASK 0x1 | 1261 | #define ISCSI_UHQE_TOGGLE_BIT_MASK 0x1 |
| 1204 | #define ISCSI_UHQE_TOGGLE_BIT_SHIFT 21 | 1262 | #define ISCSI_UHQE_TOGGLE_BIT_SHIFT 21 |
| 1205 | #define ISCSI_UHQE_PURE_PAYLOAD_MASK 0x1 | 1263 | #define ISCSI_UHQE_PURE_PAYLOAD_MASK 0x1 |
| 1206 | #define ISCSI_UHQE_PURE_PAYLOAD_SHIFT 22 | 1264 | #define ISCSI_UHQE_PURE_PAYLOAD_SHIFT 22 |
| 1207 | #define ISCSI_UHQE_LOGIN_RESPONSE_PDU_MASK 0x1 | 1265 | #define ISCSI_UHQE_LOGIN_RESPONSE_PDU_MASK 0x1 |
| 1208 | #define ISCSI_UHQE_LOGIN_RESPONSE_PDU_SHIFT 23 | 1266 | #define ISCSI_UHQE_LOGIN_RESPONSE_PDU_SHIFT 23 |
| 1209 | #define ISCSI_UHQE_TASK_ID_HI_MASK 0xFF | 1267 | #define ISCSI_UHQE_TASK_ID_HI_MASK 0xFF |
| 1210 | #define ISCSI_UHQE_TASK_ID_HI_SHIFT 24 | 1268 | #define ISCSI_UHQE_TASK_ID_HI_SHIFT 24 |
| 1211 | __le32 reg2; | 1269 | __le32 reg2; |
| 1212 | #define ISCSI_UHQE_BUFFER_OFFSET_MASK 0xFFFFFF | 1270 | #define ISCSI_UHQE_BUFFER_OFFSET_MASK 0xFFFFFF |
| 1213 | #define ISCSI_UHQE_BUFFER_OFFSET_SHIFT 0 | 1271 | #define ISCSI_UHQE_BUFFER_OFFSET_SHIFT 0 |
| 1214 | #define ISCSI_UHQE_TASK_ID_LO_MASK 0xFF | 1272 | #define ISCSI_UHQE_TASK_ID_LO_MASK 0xFF |
| 1215 | #define ISCSI_UHQE_TASK_ID_LO_SHIFT 24 | 1273 | #define ISCSI_UHQE_TASK_ID_LO_SHIFT 24 |
| 1216 | }; | 1274 | }; |
| 1217 | 1275 | ||
| 1218 | 1276 | /* iSCSI WQ element */ | |
| 1219 | struct iscsi_wqe { | 1277 | struct iscsi_wqe { |
| 1220 | __le16 task_id; | 1278 | __le16 task_id; |
| 1221 | u8 flags; | 1279 | u8 flags; |
| 1222 | #define ISCSI_WQE_WQE_TYPE_MASK 0x7 | 1280 | #define ISCSI_WQE_WQE_TYPE_MASK 0x7 |
| 1223 | #define ISCSI_WQE_WQE_TYPE_SHIFT 0 | 1281 | #define ISCSI_WQE_WQE_TYPE_SHIFT 0 |
| 1224 | #define ISCSI_WQE_NUM_SGES_MASK 0xF | 1282 | #define ISCSI_WQE_NUM_SGES_MASK 0xF |
| 1225 | #define ISCSI_WQE_NUM_SGES_SHIFT 3 | 1283 | #define ISCSI_WQE_NUM_SGES_SHIFT 3 |
| 1226 | #define ISCSI_WQE_RESPONSE_MASK 0x1 | 1284 | #define ISCSI_WQE_RESPONSE_MASK 0x1 |
| 1227 | #define ISCSI_WQE_RESPONSE_SHIFT 7 | 1285 | #define ISCSI_WQE_RESPONSE_SHIFT 7 |
| 1228 | struct iscsi_dif_flags prot_flags; | 1286 | struct iscsi_dif_flags prot_flags; |
| 1229 | __le32 contlen_cdbsize; | 1287 | __le32 contlen_cdbsize; |
| 1230 | #define ISCSI_WQE_CONT_LEN_MASK 0xFFFFFF | 1288 | #define ISCSI_WQE_CONT_LEN_MASK 0xFFFFFF |
| 1231 | #define ISCSI_WQE_CONT_LEN_SHIFT 0 | 1289 | #define ISCSI_WQE_CONT_LEN_SHIFT 0 |
| 1232 | #define ISCSI_WQE_CDB_SIZE_MASK 0xFF | 1290 | #define ISCSI_WQE_CDB_SIZE_MASK 0xFF |
| 1233 | #define ISCSI_WQE_CDB_SIZE_SHIFT 24 | 1291 | #define ISCSI_WQE_CDB_SIZE_SHIFT 24 |
| 1234 | }; | 1292 | }; |
| 1235 | 1293 | ||
| 1294 | /* iSCSI wqe type */ | ||
| 1236 | enum iscsi_wqe_type { | 1295 | enum iscsi_wqe_type { |
| 1237 | ISCSI_WQE_TYPE_NORMAL, | 1296 | ISCSI_WQE_TYPE_NORMAL, |
| 1238 | ISCSI_WQE_TYPE_TASK_CLEANUP, | 1297 | ISCSI_WQE_TYPE_TASK_CLEANUP, |
| @@ -1244,6 +1303,7 @@ enum iscsi_wqe_type { | |||
| 1244 | MAX_ISCSI_WQE_TYPE | 1303 | MAX_ISCSI_WQE_TYPE |
| 1245 | }; | 1304 | }; |
| 1246 | 1305 | ||
| 1306 | /* iSCSI xHQ element */ | ||
| 1247 | struct iscsi_xhqe { | 1307 | struct iscsi_xhqe { |
| 1248 | union iscsi_ttt_txlen_union ttt_or_txlen; | 1308 | union iscsi_ttt_txlen_union ttt_or_txlen; |
| 1249 | __le32 exp_stat_sn; | 1309 | __le32 exp_stat_sn; |
| @@ -1251,27 +1311,30 @@ struct iscsi_xhqe { | |||
| 1251 | u8 total_ahs_length; | 1311 | u8 total_ahs_length; |
| 1252 | u8 opcode; | 1312 | u8 opcode; |
| 1253 | u8 flags; | 1313 | u8 flags; |
| 1254 | #define ISCSI_XHQE_FINAL_MASK 0x1 | 1314 | #define ISCSI_XHQE_FINAL_MASK 0x1 |
| 1255 | #define ISCSI_XHQE_FINAL_SHIFT 0 | 1315 | #define ISCSI_XHQE_FINAL_SHIFT 0 |
| 1256 | #define ISCSI_XHQE_STATUS_BIT_MASK 0x1 | 1316 | #define ISCSI_XHQE_STATUS_BIT_MASK 0x1 |
| 1257 | #define ISCSI_XHQE_STATUS_BIT_SHIFT 1 | 1317 | #define ISCSI_XHQE_STATUS_BIT_SHIFT 1 |
| 1258 | #define ISCSI_XHQE_NUM_SGES_MASK 0xF | 1318 | #define ISCSI_XHQE_NUM_SGES_MASK 0xF |
| 1259 | #define ISCSI_XHQE_NUM_SGES_SHIFT 2 | 1319 | #define ISCSI_XHQE_NUM_SGES_SHIFT 2 |
| 1260 | #define ISCSI_XHQE_RESERVED0_MASK 0x3 | 1320 | #define ISCSI_XHQE_RESERVED0_MASK 0x3 |
| 1261 | #define ISCSI_XHQE_RESERVED0_SHIFT 6 | 1321 | #define ISCSI_XHQE_RESERVED0_SHIFT 6 |
| 1262 | union iscsi_seq_num seq_num; | 1322 | union iscsi_seq_num seq_num; |
| 1263 | __le16 reserved1; | 1323 | __le16 reserved1; |
| 1264 | }; | 1324 | }; |
| 1265 | 1325 | ||
| 1326 | /* Per PF iSCSI receive path statistics - mStorm RAM structure */ | ||
| 1266 | struct mstorm_iscsi_stats_drv { | 1327 | struct mstorm_iscsi_stats_drv { |
| 1267 | struct regpair iscsi_rx_dropped_pdus_task_not_valid; | 1328 | struct regpair iscsi_rx_dropped_pdus_task_not_valid; |
| 1268 | }; | 1329 | }; |
| 1269 | 1330 | ||
| 1331 | /* Per PF iSCSI transmit path statistics - pStorm RAM structure */ | ||
| 1270 | struct pstorm_iscsi_stats_drv { | 1332 | struct pstorm_iscsi_stats_drv { |
| 1271 | struct regpair iscsi_tx_bytes_cnt; | 1333 | struct regpair iscsi_tx_bytes_cnt; |
| 1272 | struct regpair iscsi_tx_packet_cnt; | 1334 | struct regpair iscsi_tx_packet_cnt; |
| 1273 | }; | 1335 | }; |
| 1274 | 1336 | ||
| 1337 | /* Per PF iSCSI receive path statistics - tStorm RAM structure */ | ||
| 1275 | struct tstorm_iscsi_stats_drv { | 1338 | struct tstorm_iscsi_stats_drv { |
| 1276 | struct regpair iscsi_rx_bytes_cnt; | 1339 | struct regpair iscsi_rx_bytes_cnt; |
| 1277 | struct regpair iscsi_rx_packet_cnt; | 1340 | struct regpair iscsi_rx_packet_cnt; |
| @@ -1281,17 +1344,20 @@ struct tstorm_iscsi_stats_drv { | |||
| 1281 | __le32 iscsi_immq_threshold_cnt; | 1344 | __le32 iscsi_immq_threshold_cnt; |
| 1282 | }; | 1345 | }; |
| 1283 | 1346 | ||
| 1347 | /* Per PF iSCSI receive path statistics - uStorm RAM structure */ | ||
| 1284 | struct ustorm_iscsi_stats_drv { | 1348 | struct ustorm_iscsi_stats_drv { |
| 1285 | struct regpair iscsi_rx_data_pdu_cnt; | 1349 | struct regpair iscsi_rx_data_pdu_cnt; |
| 1286 | struct regpair iscsi_rx_r2t_pdu_cnt; | 1350 | struct regpair iscsi_rx_r2t_pdu_cnt; |
| 1287 | struct regpair iscsi_rx_total_pdu_cnt; | 1351 | struct regpair iscsi_rx_total_pdu_cnt; |
| 1288 | }; | 1352 | }; |
| 1289 | 1353 | ||
| 1354 | /* Per PF iSCSI transmit path statistics - xStorm RAM structure */ | ||
| 1290 | struct xstorm_iscsi_stats_drv { | 1355 | struct xstorm_iscsi_stats_drv { |
| 1291 | struct regpair iscsi_tx_go_to_slow_start_event_cnt; | 1356 | struct regpair iscsi_tx_go_to_slow_start_event_cnt; |
| 1292 | struct regpair iscsi_tx_fast_retransmit_event_cnt; | 1357 | struct regpair iscsi_tx_fast_retransmit_event_cnt; |
| 1293 | }; | 1358 | }; |
| 1294 | 1359 | ||
| 1360 | /* Per PF iSCSI transmit path statistics - yStorm RAM structure */ | ||
| 1295 | struct ystorm_iscsi_stats_drv { | 1361 | struct ystorm_iscsi_stats_drv { |
| 1296 | struct regpair iscsi_tx_data_pdu_cnt; | 1362 | struct regpair iscsi_tx_data_pdu_cnt; |
| 1297 | struct regpair iscsi_tx_r2t_pdu_cnt; | 1363 | struct regpair iscsi_tx_r2t_pdu_cnt; |
| @@ -1303,68 +1369,68 @@ struct tstorm_iscsi_task_ag_ctx { | |||
| 1303 | u8 byte1; | 1369 | u8 byte1; |
| 1304 | __le16 word0; | 1370 | __le16 word0; |
| 1305 | u8 flags0; | 1371 | u8 flags0; |
| 1306 | #define TSTORM_ISCSI_TASK_AG_CTX_NIBBLE0_MASK 0xF | 1372 | #define TSTORM_ISCSI_TASK_AG_CTX_NIBBLE0_MASK 0xF |
| 1307 | #define TSTORM_ISCSI_TASK_AG_CTX_NIBBLE0_SHIFT 0 | 1373 | #define TSTORM_ISCSI_TASK_AG_CTX_NIBBLE0_SHIFT 0 |
| 1308 | #define TSTORM_ISCSI_TASK_AG_CTX_BIT0_MASK 0x1 | 1374 | #define TSTORM_ISCSI_TASK_AG_CTX_BIT0_MASK 0x1 |
| 1309 | #define TSTORM_ISCSI_TASK_AG_CTX_BIT0_SHIFT 4 | 1375 | #define TSTORM_ISCSI_TASK_AG_CTX_BIT0_SHIFT 4 |
| 1310 | #define TSTORM_ISCSI_TASK_AG_CTX_BIT1_MASK 0x1 | 1376 | #define TSTORM_ISCSI_TASK_AG_CTX_BIT1_MASK 0x1 |
| 1311 | #define TSTORM_ISCSI_TASK_AG_CTX_BIT1_SHIFT 5 | 1377 | #define TSTORM_ISCSI_TASK_AG_CTX_BIT1_SHIFT 5 |
| 1312 | #define TSTORM_ISCSI_TASK_AG_CTX_BIT2_MASK 0x1 | 1378 | #define TSTORM_ISCSI_TASK_AG_CTX_BIT2_MASK 0x1 |
| 1313 | #define TSTORM_ISCSI_TASK_AG_CTX_BIT2_SHIFT 6 | 1379 | #define TSTORM_ISCSI_TASK_AG_CTX_BIT2_SHIFT 6 |
| 1314 | #define TSTORM_ISCSI_TASK_AG_CTX_BIT3_MASK 0x1 | 1380 | #define TSTORM_ISCSI_TASK_AG_CTX_BIT3_MASK 0x1 |
| 1315 | #define TSTORM_ISCSI_TASK_AG_CTX_BIT3_SHIFT 7 | 1381 | #define TSTORM_ISCSI_TASK_AG_CTX_BIT3_SHIFT 7 |
| 1316 | u8 flags1; | 1382 | u8 flags1; |
| 1317 | #define TSTORM_ISCSI_TASK_AG_CTX_BIT4_MASK 0x1 | 1383 | #define TSTORM_ISCSI_TASK_AG_CTX_BIT4_MASK 0x1 |
| 1318 | #define TSTORM_ISCSI_TASK_AG_CTX_BIT4_SHIFT 0 | 1384 | #define TSTORM_ISCSI_TASK_AG_CTX_BIT4_SHIFT 0 |
| 1319 | #define TSTORM_ISCSI_TASK_AG_CTX_BIT5_MASK 0x1 | 1385 | #define TSTORM_ISCSI_TASK_AG_CTX_BIT5_MASK 0x1 |
| 1320 | #define TSTORM_ISCSI_TASK_AG_CTX_BIT5_SHIFT 1 | 1386 | #define TSTORM_ISCSI_TASK_AG_CTX_BIT5_SHIFT 1 |
| 1321 | #define TSTORM_ISCSI_TASK_AG_CTX_CF0_MASK 0x3 | 1387 | #define TSTORM_ISCSI_TASK_AG_CTX_CF0_MASK 0x3 |
| 1322 | #define TSTORM_ISCSI_TASK_AG_CTX_CF0_SHIFT 2 | 1388 | #define TSTORM_ISCSI_TASK_AG_CTX_CF0_SHIFT 2 |
| 1323 | #define TSTORM_ISCSI_TASK_AG_CTX_CF1_MASK 0x3 | 1389 | #define TSTORM_ISCSI_TASK_AG_CTX_CF1_MASK 0x3 |
| 1324 | #define TSTORM_ISCSI_TASK_AG_CTX_CF1_SHIFT 4 | 1390 | #define TSTORM_ISCSI_TASK_AG_CTX_CF1_SHIFT 4 |
| 1325 | #define TSTORM_ISCSI_TASK_AG_CTX_CF2_MASK 0x3 | 1391 | #define TSTORM_ISCSI_TASK_AG_CTX_CF2_MASK 0x3 |
| 1326 | #define TSTORM_ISCSI_TASK_AG_CTX_CF2_SHIFT 6 | 1392 | #define TSTORM_ISCSI_TASK_AG_CTX_CF2_SHIFT 6 |
| 1327 | u8 flags2; | 1393 | u8 flags2; |
| 1328 | #define TSTORM_ISCSI_TASK_AG_CTX_CF3_MASK 0x3 | 1394 | #define TSTORM_ISCSI_TASK_AG_CTX_CF3_MASK 0x3 |
| 1329 | #define TSTORM_ISCSI_TASK_AG_CTX_CF3_SHIFT 0 | 1395 | #define TSTORM_ISCSI_TASK_AG_CTX_CF3_SHIFT 0 |
| 1330 | #define TSTORM_ISCSI_TASK_AG_CTX_CF4_MASK 0x3 | 1396 | #define TSTORM_ISCSI_TASK_AG_CTX_CF4_MASK 0x3 |
| 1331 | #define TSTORM_ISCSI_TASK_AG_CTX_CF4_SHIFT 2 | 1397 | #define TSTORM_ISCSI_TASK_AG_CTX_CF4_SHIFT 2 |
| 1332 | #define TSTORM_ISCSI_TASK_AG_CTX_CF5_MASK 0x3 | 1398 | #define TSTORM_ISCSI_TASK_AG_CTX_CF5_MASK 0x3 |
| 1333 | #define TSTORM_ISCSI_TASK_AG_CTX_CF5_SHIFT 4 | 1399 | #define TSTORM_ISCSI_TASK_AG_CTX_CF5_SHIFT 4 |
| 1334 | #define TSTORM_ISCSI_TASK_AG_CTX_CF6_MASK 0x3 | 1400 | #define TSTORM_ISCSI_TASK_AG_CTX_CF6_MASK 0x3 |
| 1335 | #define TSTORM_ISCSI_TASK_AG_CTX_CF6_SHIFT 6 | 1401 | #define TSTORM_ISCSI_TASK_AG_CTX_CF6_SHIFT 6 |
| 1336 | u8 flags3; | 1402 | u8 flags3; |
| 1337 | #define TSTORM_ISCSI_TASK_AG_CTX_CF7_MASK 0x3 | 1403 | #define TSTORM_ISCSI_TASK_AG_CTX_CF7_MASK 0x3 |
| 1338 | #define TSTORM_ISCSI_TASK_AG_CTX_CF7_SHIFT 0 | 1404 | #define TSTORM_ISCSI_TASK_AG_CTX_CF7_SHIFT 0 |
| 1339 | #define TSTORM_ISCSI_TASK_AG_CTX_CF0EN_MASK 0x1 | 1405 | #define TSTORM_ISCSI_TASK_AG_CTX_CF0EN_MASK 0x1 |
| 1340 | #define TSTORM_ISCSI_TASK_AG_CTX_CF0EN_SHIFT 2 | 1406 | #define TSTORM_ISCSI_TASK_AG_CTX_CF0EN_SHIFT 2 |
| 1341 | #define TSTORM_ISCSI_TASK_AG_CTX_CF1EN_MASK 0x1 | 1407 | #define TSTORM_ISCSI_TASK_AG_CTX_CF1EN_MASK 0x1 |
| 1342 | #define TSTORM_ISCSI_TASK_AG_CTX_CF1EN_SHIFT 3 | 1408 | #define TSTORM_ISCSI_TASK_AG_CTX_CF1EN_SHIFT 3 |
| 1343 | #define TSTORM_ISCSI_TASK_AG_CTX_CF2EN_MASK 0x1 | 1409 | #define TSTORM_ISCSI_TASK_AG_CTX_CF2EN_MASK 0x1 |
| 1344 | #define TSTORM_ISCSI_TASK_AG_CTX_CF2EN_SHIFT 4 | 1410 | #define TSTORM_ISCSI_TASK_AG_CTX_CF2EN_SHIFT 4 |
| 1345 | #define TSTORM_ISCSI_TASK_AG_CTX_CF3EN_MASK 0x1 | 1411 | #define TSTORM_ISCSI_TASK_AG_CTX_CF3EN_MASK 0x1 |
| 1346 | #define TSTORM_ISCSI_TASK_AG_CTX_CF3EN_SHIFT 5 | 1412 | #define TSTORM_ISCSI_TASK_AG_CTX_CF3EN_SHIFT 5 |
| 1347 | #define TSTORM_ISCSI_TASK_AG_CTX_CF4EN_MASK 0x1 | 1413 | #define TSTORM_ISCSI_TASK_AG_CTX_CF4EN_MASK 0x1 |
| 1348 | #define TSTORM_ISCSI_TASK_AG_CTX_CF4EN_SHIFT 6 | 1414 | #define TSTORM_ISCSI_TASK_AG_CTX_CF4EN_SHIFT 6 |
| 1349 | #define TSTORM_ISCSI_TASK_AG_CTX_CF5EN_MASK 0x1 | 1415 | #define TSTORM_ISCSI_TASK_AG_CTX_CF5EN_MASK 0x1 |
| 1350 | #define TSTORM_ISCSI_TASK_AG_CTX_CF5EN_SHIFT 7 | 1416 | #define TSTORM_ISCSI_TASK_AG_CTX_CF5EN_SHIFT 7 |
| 1351 | u8 flags4; | 1417 | u8 flags4; |
| 1352 | #define TSTORM_ISCSI_TASK_AG_CTX_CF6EN_MASK 0x1 | 1418 | #define TSTORM_ISCSI_TASK_AG_CTX_CF6EN_MASK 0x1 |
| 1353 | #define TSTORM_ISCSI_TASK_AG_CTX_CF6EN_SHIFT 0 | 1419 | #define TSTORM_ISCSI_TASK_AG_CTX_CF6EN_SHIFT 0 |
| 1354 | #define TSTORM_ISCSI_TASK_AG_CTX_CF7EN_MASK 0x1 | 1420 | #define TSTORM_ISCSI_TASK_AG_CTX_CF7EN_MASK 0x1 |
| 1355 | #define TSTORM_ISCSI_TASK_AG_CTX_CF7EN_SHIFT 1 | 1421 | #define TSTORM_ISCSI_TASK_AG_CTX_CF7EN_SHIFT 1 |
| 1356 | #define TSTORM_ISCSI_TASK_AG_CTX_RULE0EN_MASK 0x1 | 1422 | #define TSTORM_ISCSI_TASK_AG_CTX_RULE0EN_MASK 0x1 |
| 1357 | #define TSTORM_ISCSI_TASK_AG_CTX_RULE0EN_SHIFT 2 | 1423 | #define TSTORM_ISCSI_TASK_AG_CTX_RULE0EN_SHIFT 2 |
| 1358 | #define TSTORM_ISCSI_TASK_AG_CTX_RULE1EN_MASK 0x1 | 1424 | #define TSTORM_ISCSI_TASK_AG_CTX_RULE1EN_MASK 0x1 |
| 1359 | #define TSTORM_ISCSI_TASK_AG_CTX_RULE1EN_SHIFT 3 | 1425 | #define TSTORM_ISCSI_TASK_AG_CTX_RULE1EN_SHIFT 3 |
| 1360 | #define TSTORM_ISCSI_TASK_AG_CTX_RULE2EN_MASK 0x1 | 1426 | #define TSTORM_ISCSI_TASK_AG_CTX_RULE2EN_MASK 0x1 |
| 1361 | #define TSTORM_ISCSI_TASK_AG_CTX_RULE2EN_SHIFT 4 | 1427 | #define TSTORM_ISCSI_TASK_AG_CTX_RULE2EN_SHIFT 4 |
| 1362 | #define TSTORM_ISCSI_TASK_AG_CTX_RULE3EN_MASK 0x1 | 1428 | #define TSTORM_ISCSI_TASK_AG_CTX_RULE3EN_MASK 0x1 |
| 1363 | #define TSTORM_ISCSI_TASK_AG_CTX_RULE3EN_SHIFT 5 | 1429 | #define TSTORM_ISCSI_TASK_AG_CTX_RULE3EN_SHIFT 5 |
| 1364 | #define TSTORM_ISCSI_TASK_AG_CTX_RULE4EN_MASK 0x1 | 1430 | #define TSTORM_ISCSI_TASK_AG_CTX_RULE4EN_MASK 0x1 |
| 1365 | #define TSTORM_ISCSI_TASK_AG_CTX_RULE4EN_SHIFT 6 | 1431 | #define TSTORM_ISCSI_TASK_AG_CTX_RULE4EN_SHIFT 6 |
| 1366 | #define TSTORM_ISCSI_TASK_AG_CTX_RULE5EN_MASK 0x1 | 1432 | #define TSTORM_ISCSI_TASK_AG_CTX_RULE5EN_MASK 0x1 |
| 1367 | #define TSTORM_ISCSI_TASK_AG_CTX_RULE5EN_SHIFT 7 | 1433 | #define TSTORM_ISCSI_TASK_AG_CTX_RULE5EN_SHIFT 7 |
| 1368 | u8 byte2; | 1434 | u8 byte2; |
| 1369 | __le16 word1; | 1435 | __le16 word1; |
| 1370 | __le32 reg0; | 1436 | __le32 reg0; |
| @@ -1376,18 +1442,20 @@ struct tstorm_iscsi_task_ag_ctx { | |||
| 1376 | __le32 reg1; | 1442 | __le32 reg1; |
| 1377 | __le32 reg2; | 1443 | __le32 reg2; |
| 1378 | }; | 1444 | }; |
| 1445 | |||
| 1446 | /* iSCSI doorbell data */ | ||
| 1379 | struct iscsi_db_data { | 1447 | struct iscsi_db_data { |
| 1380 | u8 params; | 1448 | u8 params; |
| 1381 | #define ISCSI_DB_DATA_DEST_MASK 0x3 | 1449 | #define ISCSI_DB_DATA_DEST_MASK 0x3 |
| 1382 | #define ISCSI_DB_DATA_DEST_SHIFT 0 | 1450 | #define ISCSI_DB_DATA_DEST_SHIFT 0 |
| 1383 | #define ISCSI_DB_DATA_AGG_CMD_MASK 0x3 | 1451 | #define ISCSI_DB_DATA_AGG_CMD_MASK 0x3 |
| 1384 | #define ISCSI_DB_DATA_AGG_CMD_SHIFT 2 | 1452 | #define ISCSI_DB_DATA_AGG_CMD_SHIFT 2 |
| 1385 | #define ISCSI_DB_DATA_BYPASS_EN_MASK 0x1 | 1453 | #define ISCSI_DB_DATA_BYPASS_EN_MASK 0x1 |
| 1386 | #define ISCSI_DB_DATA_BYPASS_EN_SHIFT 4 | 1454 | #define ISCSI_DB_DATA_BYPASS_EN_SHIFT 4 |
| 1387 | #define ISCSI_DB_DATA_RESERVED_MASK 0x1 | 1455 | #define ISCSI_DB_DATA_RESERVED_MASK 0x1 |
| 1388 | #define ISCSI_DB_DATA_RESERVED_SHIFT 5 | 1456 | #define ISCSI_DB_DATA_RESERVED_SHIFT 5 |
| 1389 | #define ISCSI_DB_DATA_AGG_VAL_SEL_MASK 0x3 | 1457 | #define ISCSI_DB_DATA_AGG_VAL_SEL_MASK 0x3 |
| 1390 | #define ISCSI_DB_DATA_AGG_VAL_SEL_SHIFT 6 | 1458 | #define ISCSI_DB_DATA_AGG_VAL_SEL_SHIFT 6 |
| 1391 | u8 agg_flags; | 1459 | u8 agg_flags; |
| 1392 | __le16 sq_prod; | 1460 | __le16 sq_prod; |
| 1393 | }; | 1461 | }; |
diff --git a/include/linux/qed/iwarp_common.h b/include/linux/qed/iwarp_common.h index b8b3e1cfae90..c6cfd39cd910 100644 --- a/include/linux/qed/iwarp_common.h +++ b/include/linux/qed/iwarp_common.h | |||
| @@ -29,9 +29,12 @@ | |||
| 29 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | 29 | * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
| 30 | * SOFTWARE. | 30 | * SOFTWARE. |
| 31 | */ | 31 | */ |
| 32 | |||
| 32 | #ifndef __IWARP_COMMON__ | 33 | #ifndef __IWARP_COMMON__ |
| 33 | #define __IWARP_COMMON__ | 34 | #define __IWARP_COMMON__ |
| 35 | |||
| 34 | #include <linux/qed/rdma_common.h> | 36 | #include <linux/qed/rdma_common.h> |
| 37 | |||
| 35 | /************************/ | 38 | /************************/ |
| 36 | /* IWARP FW CONSTANTS */ | 39 | /* IWARP FW CONSTANTS */ |
| 37 | /************************/ | 40 | /************************/ |
| @@ -40,14 +43,14 @@ | |||
| 40 | #define IWARP_PASSIVE_MODE 1 | 43 | #define IWARP_PASSIVE_MODE 1 |
| 41 | 44 | ||
| 42 | #define IWARP_SHARED_QUEUE_PAGE_SIZE (0x8000) | 45 | #define IWARP_SHARED_QUEUE_PAGE_SIZE (0x8000) |
| 43 | #define IWARP_SHARED_QUEUE_PAGE_RQ_PBL_OFFSET (0x4000) | 46 | #define IWARP_SHARED_QUEUE_PAGE_RQ_PBL_OFFSET (0x4000) |
| 44 | #define IWARP_SHARED_QUEUE_PAGE_RQ_PBL_MAX_SIZE (0x1000) | 47 | #define IWARP_SHARED_QUEUE_PAGE_RQ_PBL_MAX_SIZE (0x1000) |
| 45 | #define IWARP_SHARED_QUEUE_PAGE_SQ_PBL_OFFSET (0x5000) | 48 | #define IWARP_SHARED_QUEUE_PAGE_SQ_PBL_OFFSET (0x5000) |
| 46 | #define IWARP_SHARED_QUEUE_PAGE_SQ_PBL_MAX_SIZE (0x3000) | 49 | #define IWARP_SHARED_QUEUE_PAGE_SQ_PBL_MAX_SIZE (0x3000) |
| 47 | 50 | ||
| 48 | #define IWARP_REQ_MAX_INLINE_DATA_SIZE (128) | 51 | #define IWARP_REQ_MAX_INLINE_DATA_SIZE (128) |
| 49 | #define IWARP_REQ_MAX_SINGLE_SQ_WQE_SIZE (176) | 52 | #define IWARP_REQ_MAX_SINGLE_SQ_WQE_SIZE (176) |
| 50 | 53 | ||
| 51 | #define IWARP_MAX_QPS (64 * 1024) | 54 | #define IWARP_MAX_QPS (64 * 1024) |
| 52 | 55 | ||
| 53 | #endif /* __IWARP_COMMON__ */ | 56 | #endif /* __IWARP_COMMON__ */ |
diff --git a/include/linux/qed/qed_if.h b/include/linux/qed/qed_if.h index cc646ca97974..0301499b59ae 100644 --- a/include/linux/qed/qed_if.h +++ b/include/linux/qed/qed_if.h | |||
| @@ -316,16 +316,16 @@ enum qed_int_mode { | |||
| 316 | }; | 316 | }; |
| 317 | 317 | ||
| 318 | struct qed_sb_info { | 318 | struct qed_sb_info { |
| 319 | struct status_block *sb_virt; | 319 | struct status_block *sb_virt; |
| 320 | dma_addr_t sb_phys; | 320 | dma_addr_t sb_phys; |
| 321 | u32 sb_ack; /* Last given ack */ | 321 | u32 sb_ack; /* Last given ack */ |
| 322 | u16 igu_sb_id; | 322 | u16 igu_sb_id; |
| 323 | void __iomem *igu_addr; | 323 | void __iomem *igu_addr; |
| 324 | u8 flags; | 324 | u8 flags; |
| 325 | #define QED_SB_INFO_INIT 0x1 | 325 | #define QED_SB_INFO_INIT 0x1 |
| 326 | #define QED_SB_INFO_SETUP 0x2 | 326 | #define QED_SB_INFO_SETUP 0x2 |
| 327 | 327 | ||
| 328 | struct qed_dev *cdev; | 328 | struct qed_dev *cdev; |
| 329 | }; | 329 | }; |
| 330 | 330 | ||
| 331 | enum qed_dev_type { | 331 | enum qed_dev_type { |
diff --git a/include/linux/qed/rdma_common.h b/include/linux/qed/rdma_common.h index a9b3050f469c..c1a446ebe362 100644 --- a/include/linux/qed/rdma_common.h +++ b/include/linux/qed/rdma_common.h | |||
| @@ -32,28 +32,29 @@ | |||
| 32 | 32 | ||
| 33 | #ifndef __RDMA_COMMON__ | 33 | #ifndef __RDMA_COMMON__ |
| 34 | #define __RDMA_COMMON__ | 34 | #define __RDMA_COMMON__ |
| 35 | |||
| 35 | /************************/ | 36 | /************************/ |
| 36 | /* RDMA FW CONSTANTS */ | 37 | /* RDMA FW CONSTANTS */ |
| 37 | /************************/ | 38 | /************************/ |
| 38 | 39 | ||
| 39 | #define RDMA_RESERVED_LKEY (0) | 40 | #define RDMA_RESERVED_LKEY (0) |
| 40 | #define RDMA_RING_PAGE_SIZE (0x1000) | 41 | #define RDMA_RING_PAGE_SIZE (0x1000) |
| 41 | 42 | ||
| 42 | #define RDMA_MAX_SGE_PER_SQ_WQE (4) | 43 | #define RDMA_MAX_SGE_PER_SQ_WQE (4) |
| 43 | #define RDMA_MAX_SGE_PER_RQ_WQE (4) | 44 | #define RDMA_MAX_SGE_PER_RQ_WQE (4) |
| 44 | 45 | ||
| 45 | #define RDMA_MAX_DATA_SIZE_IN_WQE (0x80000000) | 46 | #define RDMA_MAX_DATA_SIZE_IN_WQE (0x80000000) |
| 46 | 47 | ||
| 47 | #define RDMA_REQ_RD_ATOMIC_ELM_SIZE (0x50) | 48 | #define RDMA_REQ_RD_ATOMIC_ELM_SIZE (0x50) |
| 48 | #define RDMA_RESP_RD_ATOMIC_ELM_SIZE (0x20) | 49 | #define RDMA_RESP_RD_ATOMIC_ELM_SIZE (0x20) |
| 49 | 50 | ||
| 50 | #define RDMA_MAX_CQS (64 * 1024) | 51 | #define RDMA_MAX_CQS (64 * 1024) |
| 51 | #define RDMA_MAX_TIDS (128 * 1024 - 1) | 52 | #define RDMA_MAX_TIDS (128 * 1024 - 1) |
| 52 | #define RDMA_MAX_PDS (64 * 1024) | 53 | #define RDMA_MAX_PDS (64 * 1024) |
| 53 | 54 | ||
| 54 | #define RDMA_NUM_STATISTIC_COUNTERS MAX_NUM_VPORTS | 55 | #define RDMA_NUM_STATISTIC_COUNTERS MAX_NUM_VPORTS |
| 55 | #define RDMA_NUM_STATISTIC_COUNTERS_K2 MAX_NUM_VPORTS_K2 | 56 | #define RDMA_NUM_STATISTIC_COUNTERS_K2 MAX_NUM_VPORTS_K2 |
| 56 | #define RDMA_NUM_STATISTIC_COUNTERS_BB MAX_NUM_VPORTS_BB | 57 | #define RDMA_NUM_STATISTIC_COUNTERS_BB MAX_NUM_VPORTS_BB |
| 57 | 58 | ||
| 58 | #define RDMA_TASK_TYPE (PROTOCOLID_ROCE) | 59 | #define RDMA_TASK_TYPE (PROTOCOLID_ROCE) |
| 59 | 60 | ||
diff --git a/include/linux/qed/roce_common.h b/include/linux/qed/roce_common.h index fe6a33e45977..e15e0da71240 100644 --- a/include/linux/qed/roce_common.h +++ b/include/linux/qed/roce_common.h | |||
| @@ -33,13 +33,18 @@ | |||
| 33 | #ifndef __ROCE_COMMON__ | 33 | #ifndef __ROCE_COMMON__ |
| 34 | #define __ROCE_COMMON__ | 34 | #define __ROCE_COMMON__ |
| 35 | 35 | ||
| 36 | #define ROCE_REQ_MAX_INLINE_DATA_SIZE (256) | 36 | /************************/ |
| 37 | #define ROCE_REQ_MAX_SINGLE_SQ_WQE_SIZE (288) | 37 | /* ROCE FW CONSTANTS */ |
| 38 | /************************/ | ||
| 38 | 39 | ||
| 39 | #define ROCE_MAX_QPS (32 * 1024) | 40 | #define ROCE_REQ_MAX_INLINE_DATA_SIZE (256) |
| 40 | #define ROCE_DCQCN_NP_MAX_QPS (64) | 41 | #define ROCE_REQ_MAX_SINGLE_SQ_WQE_SIZE (288) |
| 41 | #define ROCE_DCQCN_RP_MAX_QPS (64) | ||
| 42 | 42 | ||
| 43 | #define ROCE_MAX_QPS (32 * 1024) | ||
| 44 | #define ROCE_DCQCN_NP_MAX_QPS (64) | ||
| 45 | #define ROCE_DCQCN_RP_MAX_QPS (64) | ||
| 46 | |||
| 47 | /* Affiliated asynchronous events / errors enumeration */ | ||
| 43 | enum roce_async_events_type { | 48 | enum roce_async_events_type { |
| 44 | ROCE_ASYNC_EVENT_NONE = 0, | 49 | ROCE_ASYNC_EVENT_NONE = 0, |
| 45 | ROCE_ASYNC_EVENT_COMM_EST = 1, | 50 | ROCE_ASYNC_EVENT_COMM_EST = 1, |
diff --git a/include/linux/qed/storage_common.h b/include/linux/qed/storage_common.h index 08df82a096b6..f8c7b408e842 100644 --- a/include/linux/qed/storage_common.h +++ b/include/linux/qed/storage_common.h | |||
| @@ -33,43 +33,53 @@ | |||
| 33 | #ifndef __STORAGE_COMMON__ | 33 | #ifndef __STORAGE_COMMON__ |
| 34 | #define __STORAGE_COMMON__ | 34 | #define __STORAGE_COMMON__ |
| 35 | 35 | ||
| 36 | #define NUM_OF_CMDQS_CQS (NUM_OF_GLOBAL_QUEUES / 2) | 36 | /*********************/ |
| 37 | #define BDQ_NUM_RESOURCES (4) | 37 | /* SCSI CONSTANTS */ |
| 38 | /*********************/ | ||
| 38 | 39 | ||
| 39 | #define BDQ_ID_RQ (0) | 40 | #define NUM_OF_CMDQS_CQS (NUM_OF_GLOBAL_QUEUES / 2) |
| 40 | #define BDQ_ID_IMM_DATA (1) | 41 | #define BDQ_NUM_RESOURCES (4) |
| 41 | #define BDQ_NUM_IDS (2) | ||
| 42 | 42 | ||
| 43 | #define SCSI_NUM_SGES_SLOW_SGL_THR 8 | 43 | #define BDQ_ID_RQ (0) |
| 44 | #define BDQ_ID_IMM_DATA (1) | ||
| 45 | #define BDQ_NUM_IDS (2) | ||
| 44 | 46 | ||
| 45 | #define BDQ_MAX_EXTERNAL_RING_SIZE (1 << 15) | 47 | #define SCSI_NUM_SGES_SLOW_SGL_THR 8 |
| 46 | 48 | ||
| 49 | #define BDQ_MAX_EXTERNAL_RING_SIZE BIT(15) | ||
| 50 | |||
| 51 | /* SCSI buffer descriptor */ | ||
| 47 | struct scsi_bd { | 52 | struct scsi_bd { |
| 48 | struct regpair address; | 53 | struct regpair address; |
| 49 | struct regpair opaque; | 54 | struct regpair opaque; |
| 50 | }; | 55 | }; |
| 51 | 56 | ||
| 57 | /* Scsi Drv BDQ struct */ | ||
| 52 | struct scsi_bdq_ram_drv_data { | 58 | struct scsi_bdq_ram_drv_data { |
| 53 | __le16 external_producer; | 59 | __le16 external_producer; |
| 54 | __le16 reserved0[3]; | 60 | __le16 reserved0[3]; |
| 55 | }; | 61 | }; |
| 56 | 62 | ||
| 63 | /* SCSI SGE entry */ | ||
| 57 | struct scsi_sge { | 64 | struct scsi_sge { |
| 58 | struct regpair sge_addr; | 65 | struct regpair sge_addr; |
| 59 | __le32 sge_len; | 66 | __le32 sge_len; |
| 60 | __le32 reserved; | 67 | __le32 reserved; |
| 61 | }; | 68 | }; |
| 62 | 69 | ||
| 70 | /* Cached SGEs section */ | ||
| 63 | struct scsi_cached_sges { | 71 | struct scsi_cached_sges { |
| 64 | struct scsi_sge sge[4]; | 72 | struct scsi_sge sge[4]; |
| 65 | }; | 73 | }; |
| 66 | 74 | ||
| 75 | /* Scsi Drv CMDQ struct */ | ||
| 67 | struct scsi_drv_cmdq { | 76 | struct scsi_drv_cmdq { |
| 68 | __le16 cmdq_cons; | 77 | __le16 cmdq_cons; |
| 69 | __le16 reserved0; | 78 | __le16 reserved0; |
| 70 | __le32 reserved1; | 79 | __le32 reserved1; |
| 71 | }; | 80 | }; |
| 72 | 81 | ||
| 82 | /* Common SCSI init params passed by driver to FW in function init ramrod */ | ||
| 73 | struct scsi_init_func_params { | 83 | struct scsi_init_func_params { |
| 74 | __le16 num_tasks; | 84 | __le16 num_tasks; |
| 75 | u8 log_page_size; | 85 | u8 log_page_size; |
| @@ -77,6 +87,7 @@ struct scsi_init_func_params { | |||
| 77 | u8 reserved2[12]; | 87 | u8 reserved2[12]; |
| 78 | }; | 88 | }; |
| 79 | 89 | ||
| 90 | /* SCSI RQ/CQ/CMDQ firmware function init parameters */ | ||
| 80 | struct scsi_init_func_queues { | 91 | struct scsi_init_func_queues { |
| 81 | struct regpair glbl_q_params_addr; | 92 | struct regpair glbl_q_params_addr; |
| 82 | __le16 rq_buffer_size; | 93 | __le16 rq_buffer_size; |
| @@ -84,14 +95,14 @@ struct scsi_init_func_queues { | |||
| 84 | __le16 cmdq_num_entries; | 95 | __le16 cmdq_num_entries; |
| 85 | u8 bdq_resource_id; | 96 | u8 bdq_resource_id; |
| 86 | u8 q_validity; | 97 | u8 q_validity; |
| 87 | #define SCSI_INIT_FUNC_QUEUES_RQ_VALID_MASK 0x1 | 98 | #define SCSI_INIT_FUNC_QUEUES_RQ_VALID_MASK 0x1 |
| 88 | #define SCSI_INIT_FUNC_QUEUES_RQ_VALID_SHIFT 0 | 99 | #define SCSI_INIT_FUNC_QUEUES_RQ_VALID_SHIFT 0 |
| 89 | #define SCSI_INIT_FUNC_QUEUES_IMM_DATA_VALID_MASK 0x1 | 100 | #define SCSI_INIT_FUNC_QUEUES_IMM_DATA_VALID_MASK 0x1 |
| 90 | #define SCSI_INIT_FUNC_QUEUES_IMM_DATA_VALID_SHIFT 1 | 101 | #define SCSI_INIT_FUNC_QUEUES_IMM_DATA_VALID_SHIFT 1 |
| 91 | #define SCSI_INIT_FUNC_QUEUES_CMD_VALID_MASK 0x1 | 102 | #define SCSI_INIT_FUNC_QUEUES_CMD_VALID_MASK 0x1 |
| 92 | #define SCSI_INIT_FUNC_QUEUES_CMD_VALID_SHIFT 2 | 103 | #define SCSI_INIT_FUNC_QUEUES_CMD_VALID_SHIFT 2 |
| 93 | #define SCSI_INIT_FUNC_QUEUES_RESERVED_VALID_MASK 0x1F | 104 | #define SCSI_INIT_FUNC_QUEUES_RESERVED_VALID_MASK 0x1F |
| 94 | #define SCSI_INIT_FUNC_QUEUES_RESERVED_VALID_SHIFT 3 | 105 | #define SCSI_INIT_FUNC_QUEUES_RESERVED_VALID_SHIFT 3 |
| 95 | u8 num_queues; | 106 | u8 num_queues; |
| 96 | u8 queue_relative_offset; | 107 | u8 queue_relative_offset; |
| 97 | u8 cq_sb_pi; | 108 | u8 cq_sb_pi; |
| @@ -107,16 +118,19 @@ struct scsi_init_func_queues { | |||
| 107 | __le32 reserved1; | 118 | __le32 reserved1; |
| 108 | }; | 119 | }; |
| 109 | 120 | ||
| 121 | /* Scsi Drv BDQ Data struct (2 BDQ IDs: 0 - RQ, 1 - Immediate Data) */ | ||
| 110 | struct scsi_ram_per_bdq_resource_drv_data { | 122 | struct scsi_ram_per_bdq_resource_drv_data { |
| 111 | struct scsi_bdq_ram_drv_data drv_data_per_bdq_id[BDQ_NUM_IDS]; | 123 | struct scsi_bdq_ram_drv_data drv_data_per_bdq_id[BDQ_NUM_IDS]; |
| 112 | }; | 124 | }; |
| 113 | 125 | ||
| 126 | /* SCSI SGL types */ | ||
| 114 | enum scsi_sgl_mode { | 127 | enum scsi_sgl_mode { |
| 115 | SCSI_TX_SLOW_SGL, | 128 | SCSI_TX_SLOW_SGL, |
| 116 | SCSI_FAST_SGL, | 129 | SCSI_FAST_SGL, |
| 117 | MAX_SCSI_SGL_MODE | 130 | MAX_SCSI_SGL_MODE |
| 118 | }; | 131 | }; |
| 119 | 132 | ||
| 133 | /* SCSI SGL parameters */ | ||
| 120 | struct scsi_sgl_params { | 134 | struct scsi_sgl_params { |
| 121 | struct regpair sgl_addr; | 135 | struct regpair sgl_addr; |
| 122 | __le32 sgl_total_length; | 136 | __le32 sgl_total_length; |
| @@ -126,6 +140,7 @@ struct scsi_sgl_params { | |||
| 126 | u8 reserved; | 140 | u8 reserved; |
| 127 | }; | 141 | }; |
| 128 | 142 | ||
| 143 | /* SCSI terminate connection params */ | ||
| 129 | struct scsi_terminate_extra_params { | 144 | struct scsi_terminate_extra_params { |
| 130 | __le16 unsolicited_cq_count; | 145 | __le16 unsolicited_cq_count; |
| 131 | __le16 cmdq_count; | 146 | __le16 cmdq_count; |
diff --git a/include/linux/qed/tcp_common.h b/include/linux/qed/tcp_common.h index dbf7a43c3e1f..65b95fd25101 100644 --- a/include/linux/qed/tcp_common.h +++ b/include/linux/qed/tcp_common.h | |||
| @@ -33,8 +33,13 @@ | |||
| 33 | #ifndef __TCP_COMMON__ | 33 | #ifndef __TCP_COMMON__ |
| 34 | #define __TCP_COMMON__ | 34 | #define __TCP_COMMON__ |
| 35 | 35 | ||
| 36 | #define TCP_INVALID_TIMEOUT_VAL -1 | 36 | /********************/ |
| 37 | /* TCP FW CONSTANTS */ | ||
| 38 | /********************/ | ||
| 37 | 39 | ||
| 40 | #define TCP_INVALID_TIMEOUT_VAL -1 | ||
| 41 | |||
| 42 | /* OOO opaque data received from LL2 */ | ||
| 38 | struct ooo_opaque { | 43 | struct ooo_opaque { |
| 39 | __le32 cid; | 44 | __le32 cid; |
| 40 | u8 drop_isle; | 45 | u8 drop_isle; |
| @@ -43,25 +48,29 @@ struct ooo_opaque { | |||
| 43 | u8 ooo_isle; | 48 | u8 ooo_isle; |
| 44 | }; | 49 | }; |
| 45 | 50 | ||
| 51 | /* tcp connect mode enum */ | ||
| 46 | enum tcp_connect_mode { | 52 | enum tcp_connect_mode { |
| 47 | TCP_CONNECT_ACTIVE, | 53 | TCP_CONNECT_ACTIVE, |
| 48 | TCP_CONNECT_PASSIVE, | 54 | TCP_CONNECT_PASSIVE, |
| 49 | MAX_TCP_CONNECT_MODE | 55 | MAX_TCP_CONNECT_MODE |
| 50 | }; | 56 | }; |
| 51 | 57 | ||
| 58 | /* tcp function init parameters */ | ||
| 52 | struct tcp_init_params { | 59 | struct tcp_init_params { |
| 53 | __le32 two_msl_timer; | 60 | __le32 two_msl_timer; |
| 54 | __le16 tx_sws_timer; | 61 | __le16 tx_sws_timer; |
| 55 | u8 maxfinrt; | 62 | u8 max_fin_rt; |
| 56 | u8 reserved[9]; | 63 | u8 reserved[9]; |
| 57 | }; | 64 | }; |
| 58 | 65 | ||
| 66 | /* tcp IPv4/IPv6 enum */ | ||
| 59 | enum tcp_ip_version { | 67 | enum tcp_ip_version { |
| 60 | TCP_IPV4, | 68 | TCP_IPV4, |
| 61 | TCP_IPV6, | 69 | TCP_IPV6, |
| 62 | MAX_TCP_IP_VERSION | 70 | MAX_TCP_IP_VERSION |
| 63 | }; | 71 | }; |
| 64 | 72 | ||
| 73 | /* tcp offload parameters */ | ||
| 65 | struct tcp_offload_params { | 74 | struct tcp_offload_params { |
| 66 | __le16 local_mac_addr_lo; | 75 | __le16 local_mac_addr_lo; |
| 67 | __le16 local_mac_addr_mid; | 76 | __le16 local_mac_addr_mid; |
| @@ -71,22 +80,22 @@ struct tcp_offload_params { | |||
| 71 | __le16 remote_mac_addr_hi; | 80 | __le16 remote_mac_addr_hi; |
| 72 | __le16 vlan_id; | 81 | __le16 vlan_id; |
| 73 | u8 flags; | 82 | u8 flags; |
| 74 | #define TCP_OFFLOAD_PARAMS_TS_EN_MASK 0x1 | 83 | #define TCP_OFFLOAD_PARAMS_TS_EN_MASK 0x1 |
| 75 | #define TCP_OFFLOAD_PARAMS_TS_EN_SHIFT 0 | 84 | #define TCP_OFFLOAD_PARAMS_TS_EN_SHIFT 0 |
| 76 | #define TCP_OFFLOAD_PARAMS_DA_EN_MASK 0x1 | 85 | #define TCP_OFFLOAD_PARAMS_DA_EN_MASK 0x1 |
| 77 | #define TCP_OFFLOAD_PARAMS_DA_EN_SHIFT 1 | 86 | #define TCP_OFFLOAD_PARAMS_DA_EN_SHIFT 1 |
| 78 | #define TCP_OFFLOAD_PARAMS_KA_EN_MASK 0x1 | 87 | #define TCP_OFFLOAD_PARAMS_KA_EN_MASK 0x1 |
| 79 | #define TCP_OFFLOAD_PARAMS_KA_EN_SHIFT 2 | 88 | #define TCP_OFFLOAD_PARAMS_KA_EN_SHIFT 2 |
| 80 | #define TCP_OFFLOAD_PARAMS_NAGLE_EN_MASK 0x1 | 89 | #define TCP_OFFLOAD_PARAMS_NAGLE_EN_MASK 0x1 |
| 81 | #define TCP_OFFLOAD_PARAMS_NAGLE_EN_SHIFT 3 | 90 | #define TCP_OFFLOAD_PARAMS_NAGLE_EN_SHIFT 3 |
| 82 | #define TCP_OFFLOAD_PARAMS_DA_CNT_EN_MASK 0x1 | 91 | #define TCP_OFFLOAD_PARAMS_DA_CNT_EN_MASK 0x1 |
| 83 | #define TCP_OFFLOAD_PARAMS_DA_CNT_EN_SHIFT 4 | 92 | #define TCP_OFFLOAD_PARAMS_DA_CNT_EN_SHIFT 4 |
| 84 | #define TCP_OFFLOAD_PARAMS_FIN_SENT_MASK 0x1 | 93 | #define TCP_OFFLOAD_PARAMS_FIN_SENT_MASK 0x1 |
| 85 | #define TCP_OFFLOAD_PARAMS_FIN_SENT_SHIFT 5 | 94 | #define TCP_OFFLOAD_PARAMS_FIN_SENT_SHIFT 5 |
| 86 | #define TCP_OFFLOAD_PARAMS_FIN_RECEIVED_MASK 0x1 | 95 | #define TCP_OFFLOAD_PARAMS_FIN_RECEIVED_MASK 0x1 |
| 87 | #define TCP_OFFLOAD_PARAMS_FIN_RECEIVED_SHIFT 6 | 96 | #define TCP_OFFLOAD_PARAMS_FIN_RECEIVED_SHIFT 6 |
| 88 | #define TCP_OFFLOAD_PARAMS_RESERVED0_MASK 0x1 | 97 | #define TCP_OFFLOAD_PARAMS_RESERVED0_MASK 0x1 |
| 89 | #define TCP_OFFLOAD_PARAMS_RESERVED0_SHIFT 7 | 98 | #define TCP_OFFLOAD_PARAMS_RESERVED0_SHIFT 7 |
| 90 | u8 ip_version; | 99 | u8 ip_version; |
| 91 | __le32 remote_ip[4]; | 100 | __le32 remote_ip[4]; |
| 92 | __le32 local_ip[4]; | 101 | __le32 local_ip[4]; |
| @@ -132,6 +141,7 @@ struct tcp_offload_params { | |||
| 132 | __le32 reserved3[2]; | 141 | __le32 reserved3[2]; |
| 133 | }; | 142 | }; |
| 134 | 143 | ||
| 144 | /* tcp offload parameters */ | ||
| 135 | struct tcp_offload_params_opt2 { | 145 | struct tcp_offload_params_opt2 { |
| 136 | __le16 local_mac_addr_lo; | 146 | __le16 local_mac_addr_lo; |
| 137 | __le16 local_mac_addr_mid; | 147 | __le16 local_mac_addr_mid; |
| @@ -141,14 +151,14 @@ struct tcp_offload_params_opt2 { | |||
| 141 | __le16 remote_mac_addr_hi; | 151 | __le16 remote_mac_addr_hi; |
| 142 | __le16 vlan_id; | 152 | __le16 vlan_id; |
| 143 | u8 flags; | 153 | u8 flags; |
| 144 | #define TCP_OFFLOAD_PARAMS_OPT2_TS_EN_MASK 0x1 | 154 | #define TCP_OFFLOAD_PARAMS_OPT2_TS_EN_MASK 0x1 |
| 145 | #define TCP_OFFLOAD_PARAMS_OPT2_TS_EN_SHIFT 0 | 155 | #define TCP_OFFLOAD_PARAMS_OPT2_TS_EN_SHIFT 0 |
| 146 | #define TCP_OFFLOAD_PARAMS_OPT2_DA_EN_MASK 0x1 | 156 | #define TCP_OFFLOAD_PARAMS_OPT2_DA_EN_MASK 0x1 |
| 147 | #define TCP_OFFLOAD_PARAMS_OPT2_DA_EN_SHIFT 1 | 157 | #define TCP_OFFLOAD_PARAMS_OPT2_DA_EN_SHIFT 1 |
| 148 | #define TCP_OFFLOAD_PARAMS_OPT2_KA_EN_MASK 0x1 | 158 | #define TCP_OFFLOAD_PARAMS_OPT2_KA_EN_MASK 0x1 |
| 149 | #define TCP_OFFLOAD_PARAMS_OPT2_KA_EN_SHIFT 2 | 159 | #define TCP_OFFLOAD_PARAMS_OPT2_KA_EN_SHIFT 2 |
| 150 | #define TCP_OFFLOAD_PARAMS_OPT2_RESERVED0_MASK 0x1F | 160 | #define TCP_OFFLOAD_PARAMS_OPT2_RESERVED0_MASK 0x1F |
| 151 | #define TCP_OFFLOAD_PARAMS_OPT2_RESERVED0_SHIFT 3 | 161 | #define TCP_OFFLOAD_PARAMS_OPT2_RESERVED0_SHIFT 3 |
| 152 | u8 ip_version; | 162 | u8 ip_version; |
| 153 | __le32 remote_ip[4]; | 163 | __le32 remote_ip[4]; |
| 154 | __le32 local_ip[4]; | 164 | __le32 local_ip[4]; |
| @@ -166,6 +176,7 @@ struct tcp_offload_params_opt2 { | |||
| 166 | __le32 reserved1[22]; | 176 | __le32 reserved1[22]; |
| 167 | }; | 177 | }; |
| 168 | 178 | ||
| 179 | /* tcp IPv4/IPv6 enum */ | ||
| 169 | enum tcp_seg_placement_event { | 180 | enum tcp_seg_placement_event { |
| 170 | TCP_EVENT_ADD_PEN, | 181 | TCP_EVENT_ADD_PEN, |
| 171 | TCP_EVENT_ADD_NEW_ISLE, | 182 | TCP_EVENT_ADD_NEW_ISLE, |
| @@ -177,40 +188,41 @@ enum tcp_seg_placement_event { | |||
| 177 | MAX_TCP_SEG_PLACEMENT_EVENT | 188 | MAX_TCP_SEG_PLACEMENT_EVENT |
| 178 | }; | 189 | }; |
| 179 | 190 | ||
| 191 | /* tcp init parameters */ | ||
| 180 | struct tcp_update_params { | 192 | struct tcp_update_params { |
| 181 | __le16 flags; | 193 | __le16 flags; |
| 182 | #define TCP_UPDATE_PARAMS_REMOTE_MAC_ADDR_CHANGED_MASK 0x1 | 194 | #define TCP_UPDATE_PARAMS_REMOTE_MAC_ADDR_CHANGED_MASK 0x1 |
| 183 | #define TCP_UPDATE_PARAMS_REMOTE_MAC_ADDR_CHANGED_SHIFT 0 | 195 | #define TCP_UPDATE_PARAMS_REMOTE_MAC_ADDR_CHANGED_SHIFT 0 |
| 184 | #define TCP_UPDATE_PARAMS_MSS_CHANGED_MASK 0x1 | 196 | #define TCP_UPDATE_PARAMS_MSS_CHANGED_MASK 0x1 |
| 185 | #define TCP_UPDATE_PARAMS_MSS_CHANGED_SHIFT 1 | 197 | #define TCP_UPDATE_PARAMS_MSS_CHANGED_SHIFT 1 |
| 186 | #define TCP_UPDATE_PARAMS_TTL_CHANGED_MASK 0x1 | 198 | #define TCP_UPDATE_PARAMS_TTL_CHANGED_MASK 0x1 |
| 187 | #define TCP_UPDATE_PARAMS_TTL_CHANGED_SHIFT 2 | 199 | #define TCP_UPDATE_PARAMS_TTL_CHANGED_SHIFT 2 |
| 188 | #define TCP_UPDATE_PARAMS_TOS_OR_TC_CHANGED_MASK 0x1 | 200 | #define TCP_UPDATE_PARAMS_TOS_OR_TC_CHANGED_MASK 0x1 |
| 189 | #define TCP_UPDATE_PARAMS_TOS_OR_TC_CHANGED_SHIFT 3 | 201 | #define TCP_UPDATE_PARAMS_TOS_OR_TC_CHANGED_SHIFT 3 |
| 190 | #define TCP_UPDATE_PARAMS_KA_TIMEOUT_CHANGED_MASK 0x1 | 202 | #define TCP_UPDATE_PARAMS_KA_TIMEOUT_CHANGED_MASK 0x1 |
| 191 | #define TCP_UPDATE_PARAMS_KA_TIMEOUT_CHANGED_SHIFT 4 | 203 | #define TCP_UPDATE_PARAMS_KA_TIMEOUT_CHANGED_SHIFT 4 |
| 192 | #define TCP_UPDATE_PARAMS_KA_INTERVAL_CHANGED_MASK 0x1 | 204 | #define TCP_UPDATE_PARAMS_KA_INTERVAL_CHANGED_MASK 0x1 |
| 193 | #define TCP_UPDATE_PARAMS_KA_INTERVAL_CHANGED_SHIFT 5 | 205 | #define TCP_UPDATE_PARAMS_KA_INTERVAL_CHANGED_SHIFT 5 |
| 194 | #define TCP_UPDATE_PARAMS_MAX_RT_TIME_CHANGED_MASK 0x1 | 206 | #define TCP_UPDATE_PARAMS_MAX_RT_TIME_CHANGED_MASK 0x1 |
| 195 | #define TCP_UPDATE_PARAMS_MAX_RT_TIME_CHANGED_SHIFT 6 | 207 | #define TCP_UPDATE_PARAMS_MAX_RT_TIME_CHANGED_SHIFT 6 |
| 196 | #define TCP_UPDATE_PARAMS_FLOW_LABEL_CHANGED_MASK 0x1 | 208 | #define TCP_UPDATE_PARAMS_FLOW_LABEL_CHANGED_MASK 0x1 |
| 197 | #define TCP_UPDATE_PARAMS_FLOW_LABEL_CHANGED_SHIFT 7 | 209 | #define TCP_UPDATE_PARAMS_FLOW_LABEL_CHANGED_SHIFT 7 |
| 198 | #define TCP_UPDATE_PARAMS_INITIAL_RCV_WND_CHANGED_MASK 0x1 | 210 | #define TCP_UPDATE_PARAMS_INITIAL_RCV_WND_CHANGED_MASK 0x1 |
| 199 | #define TCP_UPDATE_PARAMS_INITIAL_RCV_WND_CHANGED_SHIFT 8 | 211 | #define TCP_UPDATE_PARAMS_INITIAL_RCV_WND_CHANGED_SHIFT 8 |
| 200 | #define TCP_UPDATE_PARAMS_KA_MAX_PROBE_CNT_CHANGED_MASK 0x1 | 212 | #define TCP_UPDATE_PARAMS_KA_MAX_PROBE_CNT_CHANGED_MASK 0x1 |
| 201 | #define TCP_UPDATE_PARAMS_KA_MAX_PROBE_CNT_CHANGED_SHIFT 9 | 213 | #define TCP_UPDATE_PARAMS_KA_MAX_PROBE_CNT_CHANGED_SHIFT 9 |
| 202 | #define TCP_UPDATE_PARAMS_KA_EN_CHANGED_MASK 0x1 | 214 | #define TCP_UPDATE_PARAMS_KA_EN_CHANGED_MASK 0x1 |
| 203 | #define TCP_UPDATE_PARAMS_KA_EN_CHANGED_SHIFT 10 | 215 | #define TCP_UPDATE_PARAMS_KA_EN_CHANGED_SHIFT 10 |
| 204 | #define TCP_UPDATE_PARAMS_NAGLE_EN_CHANGED_MASK 0x1 | 216 | #define TCP_UPDATE_PARAMS_NAGLE_EN_CHANGED_MASK 0x1 |
| 205 | #define TCP_UPDATE_PARAMS_NAGLE_EN_CHANGED_SHIFT 11 | 217 | #define TCP_UPDATE_PARAMS_NAGLE_EN_CHANGED_SHIFT 11 |
| 206 | #define TCP_UPDATE_PARAMS_KA_EN_MASK 0x1 | 218 | #define TCP_UPDATE_PARAMS_KA_EN_MASK 0x1 |
| 207 | #define TCP_UPDATE_PARAMS_KA_EN_SHIFT 12 | 219 | #define TCP_UPDATE_PARAMS_KA_EN_SHIFT 12 |
| 208 | #define TCP_UPDATE_PARAMS_NAGLE_EN_MASK 0x1 | 220 | #define TCP_UPDATE_PARAMS_NAGLE_EN_MASK 0x1 |
| 209 | #define TCP_UPDATE_PARAMS_NAGLE_EN_SHIFT 13 | 221 | #define TCP_UPDATE_PARAMS_NAGLE_EN_SHIFT 13 |
| 210 | #define TCP_UPDATE_PARAMS_KA_RESTART_MASK 0x1 | 222 | #define TCP_UPDATE_PARAMS_KA_RESTART_MASK 0x1 |
| 211 | #define TCP_UPDATE_PARAMS_KA_RESTART_SHIFT 14 | 223 | #define TCP_UPDATE_PARAMS_KA_RESTART_SHIFT 14 |
| 212 | #define TCP_UPDATE_PARAMS_RETRANSMIT_RESTART_MASK 0x1 | 224 | #define TCP_UPDATE_PARAMS_RETRANSMIT_RESTART_MASK 0x1 |
| 213 | #define TCP_UPDATE_PARAMS_RETRANSMIT_RESTART_SHIFT 15 | 225 | #define TCP_UPDATE_PARAMS_RETRANSMIT_RESTART_SHIFT 15 |
| 214 | __le16 remote_mac_addr_lo; | 226 | __le16 remote_mac_addr_lo; |
| 215 | __le16 remote_mac_addr_mid; | 227 | __le16 remote_mac_addr_mid; |
| 216 | __le16 remote_mac_addr_hi; | 228 | __le16 remote_mac_addr_hi; |
| @@ -226,6 +238,7 @@ struct tcp_update_params { | |||
| 226 | u8 reserved1[7]; | 238 | u8 reserved1[7]; |
| 227 | }; | 239 | }; |
| 228 | 240 | ||
| 241 | /* toe upload parameters */ | ||
| 229 | struct tcp_upload_params { | 242 | struct tcp_upload_params { |
| 230 | __le32 rcv_next; | 243 | __le32 rcv_next; |
| 231 | __le32 snd_una; | 244 | __le32 snd_una; |
