1#ifndef __5710_HSI_VBD__ 2#define __5710_HSI_VBD__ 3 4/* 5 * attention bits $$KEEP_ENDIANNESS$$ 6 */ 7struct atten_sp_status_block 8{ 9 u32_t attn_bits /* 16 bit of attention signal lines */; 10 u32_t attn_bits_ack /* 16 bit of attention signal ack */; 11 u8_t status_block_id /* status block id */; 12 u8_t reserved0 /* resreved for padding */; 13 u16_t attn_bits_index /* attention bits running index */; 14 u32_t reserved1 /* resreved for padding */; 15}; 16 17 18/* 19 * The eth aggregative context of Cstorm 20 */ 21struct cstorm_eth_ag_context 22{ 23 u32_t __reserved0[10]; 24}; 25 26 27/* 28 * The iscsi aggregative context of Cstorm 29 */ 30struct cstorm_iscsi_ag_context 31{ 32 u32_t agg_vars1; 33 #define CSTORM_ISCSI_AG_CONTEXT_STATE (0xFF<<0) /* BitField agg_vars1Various aggregative variables The state of the connection */ 34 #define CSTORM_ISCSI_AG_CONTEXT_STATE_SHIFT 0 35 #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<8) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 0 */ 36 #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 8 37 #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<9) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 1 */ 38 #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 9 39 #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<10) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 2 */ 40 #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 10 41 #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<11) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 3 */ 42 #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 11 43 #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_SE_CF_EN (0x1<<12) /* BitField agg_vars1Various aggregative variables ULP Rx SE counter flag enable */ 44 #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_SE_CF_EN_SHIFT 12 45 #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_INV_CF_EN (0x1<<13) /* BitField agg_vars1Various aggregative variables ULP Rx invalidate counter flag enable */ 46 #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_INV_CF_EN_SHIFT 13 47 #define __CSTORM_ISCSI_AG_CONTEXT_AUX4_CF (0x3<<14) /* BitField agg_vars1Various aggregative variables Aux 4 counter flag */ 48 #define __CSTORM_ISCSI_AG_CONTEXT_AUX4_CF_SHIFT 14 49 #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED66 (0x3<<16) /* BitField agg_vars1Various aggregative variables The connection QOS */ 50 #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED66_SHIFT 16 51 #define __CSTORM_ISCSI_AG_CONTEXT_FIN_RECEIVED_CF_EN (0x1<<18) /* BitField agg_vars1Various aggregative variables Enable decision rule for fin_received_cf */ 52 #define __CSTORM_ISCSI_AG_CONTEXT_FIN_RECEIVED_CF_EN_SHIFT 18 53 #define __CSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN (0x1<<19) /* BitField agg_vars1Various aggregative variables Enable decision rule for auxiliary counter flag 1 */ 54 #define __CSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN_SHIFT 19 55 #define __CSTORM_ISCSI_AG_CONTEXT_AUX2_CF_EN (0x1<<20) /* BitField agg_vars1Various aggregative variables Enable decision rule for auxiliary counter flag 2 */ 56 #define __CSTORM_ISCSI_AG_CONTEXT_AUX2_CF_EN_SHIFT 20 57 #define __CSTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<21) /* BitField agg_vars1Various aggregative variables Enable decision rule for auxiliary counter flag 3 */ 58 #define __CSTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 21 59 #define __CSTORM_ISCSI_AG_CONTEXT_AUX4_CF_EN (0x1<<22) /* BitField agg_vars1Various aggregative variables Enable decision rule for auxiliary counter flag 4 */ 60 #define __CSTORM_ISCSI_AG_CONTEXT_AUX4_CF_EN_SHIFT 22 61 #define __CSTORM_ISCSI_AG_CONTEXT_REL_SEQ_RULE (0x7<<23) /* BitField agg_vars1Various aggregative variables 0-NOP, 1-EQ, 2-NEQ, 3-GT, 4-GE, 5-LS, 6-LE */ 62 #define __CSTORM_ISCSI_AG_CONTEXT_REL_SEQ_RULE_SHIFT 23 63 #define CSTORM_ISCSI_AG_CONTEXT_HQ_PROD_RULE (0x3<<26) /* BitField agg_vars1Various aggregative variables 0-NOP, 1-EQ, 2-NEQ */ 64 #define CSTORM_ISCSI_AG_CONTEXT_HQ_PROD_RULE_SHIFT 26 65 #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED52 (0x3<<28) /* BitField agg_vars1Various aggregative variables 0-NOP, 1-EQ, 2-NEQ */ 66 #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED52_SHIFT 28 67 #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED53 (0x3<<30) /* BitField agg_vars1Various aggregative variables 0-NOP, 1-EQ, 2-NEQ */ 68 #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED53_SHIFT 30 69#if defined(__BIG_ENDIAN) 70 u8_t __aux1_th /* Aux1 threhsold for the decision */; 71 u8_t __aux1_val /* Aux1 aggregation value */; 72 u16_t __agg_vars2 /* Various aggregative variables*/; 73#elif defined(__LITTLE_ENDIAN) 74 u16_t __agg_vars2 /* Various aggregative variables*/; 75 u8_t __aux1_val /* Aux1 aggregation value */; 76 u8_t __aux1_th /* Aux1 threhsold for the decision */; 77#endif 78 u32_t rel_seq /* The sequence to release */; 79 u32_t rel_seq_th /* The threshold for the released sequence */; 80#if defined(__BIG_ENDIAN) 81 u16_t hq_cons /* The HQ Consumer */; 82 u16_t hq_prod /* The HQ producer */; 83#elif defined(__LITTLE_ENDIAN) 84 u16_t hq_prod /* The HQ producer */; 85 u16_t hq_cons /* The HQ Consumer */; 86#endif 87#if defined(__BIG_ENDIAN) 88 u8_t __reserved62 /* Mask value for the decision algorithm of the general flags */; 89 u8_t __reserved61 /* General flags */; 90 u8_t __reserved60 /* ORQ consumer updated by the completor */; 91 u8_t __reserved59 /* ORQ ULP Rx consumer */; 92#elif defined(__LITTLE_ENDIAN) 93 u8_t __reserved59 /* ORQ ULP Rx consumer */; 94 u8_t __reserved60 /* ORQ consumer updated by the completor */; 95 u8_t __reserved61 /* General flags */; 96 u8_t __reserved62 /* Mask value for the decision algorithm of the general flags */; 97#endif 98#if defined(__BIG_ENDIAN) 99 u16_t __reserved64 /* RQ consumer kept by the completor */; 100 u16_t cq_u_prod /* Ustorm producer of CQ */; 101#elif defined(__LITTLE_ENDIAN) 102 u16_t cq_u_prod /* Ustorm producer of CQ */; 103 u16_t __reserved64 /* RQ consumer kept by the completor */; 104#endif 105 u32_t __cq_u_prod1 /* Ustorm producer of CQ 1 */; 106#if defined(__BIG_ENDIAN) 107 u16_t __agg_vars3 /* Various aggregative variables*/; 108 u16_t cq_u_pend /* Ustorm pending completions of CQ */; 109#elif defined(__LITTLE_ENDIAN) 110 u16_t cq_u_pend /* Ustorm pending completions of CQ */; 111 u16_t __agg_vars3 /* Various aggregative variables*/; 112#endif 113#if defined(__BIG_ENDIAN) 114 u16_t __aux2_th /* Aux2 threhsold for the decision */; 115 u16_t aux2_val /* Aux2 aggregation value */; 116#elif defined(__LITTLE_ENDIAN) 117 u16_t aux2_val /* Aux2 aggregation value */; 118 u16_t __aux2_th /* Aux2 threhsold for the decision */; 119#endif 120}; 121 122 123/* 124 * The toe aggregative context of Cstorm 125 */ 126struct cstorm_toe_ag_context 127{ 128 u32_t __agg_vars1 /* Various aggregative variables*/; 129#if defined(__BIG_ENDIAN) 130 u8_t __aux1_th /* Aux1 threhsold for the decision */; 131 u8_t __aux1_val /* Aux1 aggregation value */; 132 u16_t __agg_vars2 /* Various aggregative variables*/; 133#elif defined(__LITTLE_ENDIAN) 134 u16_t __agg_vars2 /* Various aggregative variables*/; 135 u8_t __aux1_val /* Aux1 aggregation value */; 136 u8_t __aux1_th /* Aux1 threhsold for the decision */; 137#endif 138 u32_t rel_seq /* The sequence to release */; 139 u32_t __rel_seq_threshold /* The threshold for the released sequence */; 140#if defined(__BIG_ENDIAN) 141 u16_t __reserved58 /* The HQ Consumer */; 142 u16_t bd_prod /* The HQ producer */; 143#elif defined(__LITTLE_ENDIAN) 144 u16_t bd_prod /* The HQ producer */; 145 u16_t __reserved58 /* The HQ Consumer */; 146#endif 147#if defined(__BIG_ENDIAN) 148 u8_t __reserved62 /* Mask value for the decision algorithm of the general flags */; 149 u8_t __reserved61 /* General flags */; 150 u8_t __reserved60 /* ORQ consumer updated by the completor */; 151 u8_t __completion_opcode /* ORQ ULP Rx consumer */; 152#elif defined(__LITTLE_ENDIAN) 153 u8_t __completion_opcode /* ORQ ULP Rx consumer */; 154 u8_t __reserved60 /* ORQ consumer updated by the completor */; 155 u8_t __reserved61 /* General flags */; 156 u8_t __reserved62 /* Mask value for the decision algorithm of the general flags */; 157#endif 158#if defined(__BIG_ENDIAN) 159 u16_t __reserved64 /* RQ consumer kept by the completor */; 160 u16_t __reserved63 /* RQ consumer updated by the ULP RX */; 161#elif defined(__LITTLE_ENDIAN) 162 u16_t __reserved63 /* RQ consumer updated by the ULP RX */; 163 u16_t __reserved64 /* RQ consumer kept by the completor */; 164#endif 165 u32_t snd_max /* The ACK sequence number received in the last completed DDP */; 166#if defined(__BIG_ENDIAN) 167 u16_t __agg_vars3 /* Various aggregative variables*/; 168 u16_t __reserved67 /* A counter for the number of RQ WQEs with invalidate the the USTORM encountered */; 169#elif defined(__LITTLE_ENDIAN) 170 u16_t __reserved67 /* A counter for the number of RQ WQEs with invalidate the the USTORM encountered */; 171 u16_t __agg_vars3 /* Various aggregative variables*/; 172#endif 173#if defined(__BIG_ENDIAN) 174 u16_t __aux2_th /* Aux2 threhsold for the decision */; 175 u16_t __aux2_val /* Aux2 aggregation value */; 176#elif defined(__LITTLE_ENDIAN) 177 u16_t __aux2_val /* Aux2 aggregation value */; 178 u16_t __aux2_th /* Aux2 threhsold for the decision */; 179#endif 180}; 181 182 183/* 184 * dmae command structure 185 */ 186struct dmae_cmd 187{ 188 u32_t opcode; 189 #define DMAE_CMD_SRC (0x1<<0) /* BitField opcode Whether the source is the PCIe or the GRC. 0- The source is the PCIe 1- The source is the GRC. */ 190 #define DMAE_CMD_SRC_SHIFT 0 191 #define DMAE_CMD_DST (0x3<<1) /* BitField opcode The destination of the DMA can be: 0-None 1-PCIe 2-GRC 3-None */ 192 #define DMAE_CMD_DST_SHIFT 1 193 #define DMAE_CMD_C_DST (0x1<<3) /* BitField opcode The destination of the completion: 0-PCIe 1-GRC */ 194 #define DMAE_CMD_C_DST_SHIFT 3 195 #define DMAE_CMD_C_TYPE_ENABLE (0x1<<4) /* BitField opcode Whether to write a completion word to the completion destination: 0-Do not write a completion word 1-Write the completion word */ 196 #define DMAE_CMD_C_TYPE_ENABLE_SHIFT 4 197 #define DMAE_CMD_C_TYPE_CRC_ENABLE (0x1<<5) /* BitField opcode Whether to write a CRC word to the completion destination 0-Do not write a CRC word 1-Write a CRC word */ 198 #define DMAE_CMD_C_TYPE_CRC_ENABLE_SHIFT 5 199 #define DMAE_CMD_C_TYPE_CRC_OFFSET (0x7<<6) /* BitField opcode The CRC word should be taken from the DMAE GRC space from address 9+X, where X is the value in these bits. */ 200 #define DMAE_CMD_C_TYPE_CRC_OFFSET_SHIFT 6 201 #define DMAE_CMD_ENDIANITY (0x3<<9) /* BitField opcode swapping mode. */ 202 #define DMAE_CMD_ENDIANITY_SHIFT 9 203 #define DMAE_CMD_PORT (0x1<<11) /* BitField opcode Which network port ID to present to the PCI request interface */ 204 #define DMAE_CMD_PORT_SHIFT 11 205 #define DMAE_CMD_CRC_RESET (0x1<<12) /* BitField opcode reset crc result */ 206 #define DMAE_CMD_CRC_RESET_SHIFT 12 207 #define DMAE_CMD_SRC_RESET (0x1<<13) /* BitField opcode reset source address in next go */ 208 #define DMAE_CMD_SRC_RESET_SHIFT 13 209 #define DMAE_CMD_DST_RESET (0x1<<14) /* BitField opcode reset dest address in next go */ 210 #define DMAE_CMD_DST_RESET_SHIFT 14 211 #define DMAE_CMD_E1HVN (0x3<<15) /* BitField opcode vnic number E2 and onwards source vnic */ 212 #define DMAE_CMD_E1HVN_SHIFT 15 213 #define DMAE_CMD_DST_VN (0x3<<17) /* BitField opcode E2 and onwards dest vnic */ 214 #define DMAE_CMD_DST_VN_SHIFT 17 215 #define DMAE_CMD_C_FUNC (0x1<<19) /* BitField opcode E2 and onwards which function gets the completion src_vn(e1hvn)-0 dst_vn-1 */ 216 #define DMAE_CMD_C_FUNC_SHIFT 19 217 #define DMAE_CMD_ERR_POLICY (0x3<<20) /* BitField opcode E2 and onwards what to do when theres a completion and a PCI error regular-0 error indication-1 no completion-2 */ 218 #define DMAE_CMD_ERR_POLICY_SHIFT 20 219 #define DMAE_CMD_RESERVED0 (0x3FF<<22) /* BitField opcode */ 220 #define DMAE_CMD_RESERVED0_SHIFT 22 221 u32_t src_addr_lo /* source address low/grc address */; 222 u32_t src_addr_hi /* source address hi */; 223 u32_t dst_addr_lo /* dest address low/grc address */; 224 u32_t dst_addr_hi /* dest address hi */; 225#if defined(__BIG_ENDIAN) 226 u16_t opcode_iov; 227 #define DMAE_CMD_SRC_VFID (0x3F<<0) /* BitField opcode_iovE2 and onward, set to 0 for backward compatibility source VF id */ 228 #define DMAE_CMD_SRC_VFID_SHIFT 0 229 #define DMAE_CMD_SRC_VFPF (0x1<<6) /* BitField opcode_iovE2 and onward, set to 0 for backward compatibility selects the source function PF-0, VF-1 */ 230 #define DMAE_CMD_SRC_VFPF_SHIFT 6 231 #define DMAE_CMD_RESERVED1 (0x1<<7) /* BitField opcode_iovE2 and onward, set to 0 for backward compatibility */ 232 #define DMAE_CMD_RESERVED1_SHIFT 7 233 #define DMAE_CMD_DST_VFID (0x3F<<8) /* BitField opcode_iovE2 and onward, set to 0 for backward compatibility destination VF id */ 234 #define DMAE_CMD_DST_VFID_SHIFT 8 235 #define DMAE_CMD_DST_VFPF (0x1<<14) /* BitField opcode_iovE2 and onward, set to 0 for backward compatibility selects the destination function PF-0, VF-1 */ 236 #define DMAE_CMD_DST_VFPF_SHIFT 14 237 #define DMAE_CMD_RESERVED2 (0x1<<15) /* BitField opcode_iovE2 and onward, set to 0 for backward compatibility */ 238 #define DMAE_CMD_RESERVED2_SHIFT 15 239 u16_t len /* copy length */; 240#elif defined(__LITTLE_ENDIAN) 241 u16_t len /* copy length */; 242 u16_t opcode_iov; 243 #define DMAE_CMD_SRC_VFID (0x3F<<0) /* BitField opcode_iovE2 and onward, set to 0 for backward compatibility source VF id */ 244 #define DMAE_CMD_SRC_VFID_SHIFT 0 245 #define DMAE_CMD_SRC_VFPF (0x1<<6) /* BitField opcode_iovE2 and onward, set to 0 for backward compatibility selects the source function PF-0, VF-1 */ 246 #define DMAE_CMD_SRC_VFPF_SHIFT 6 247 #define DMAE_CMD_RESERVED1 (0x1<<7) /* BitField opcode_iovE2 and onward, set to 0 for backward compatibility */ 248 #define DMAE_CMD_RESERVED1_SHIFT 7 249 #define DMAE_CMD_DST_VFID (0x3F<<8) /* BitField opcode_iovE2 and onward, set to 0 for backward compatibility destination VF id */ 250 #define DMAE_CMD_DST_VFID_SHIFT 8 251 #define DMAE_CMD_DST_VFPF (0x1<<14) /* BitField opcode_iovE2 and onward, set to 0 for backward compatibility selects the destination function PF-0, VF-1 */ 252 #define DMAE_CMD_DST_VFPF_SHIFT 14 253 #define DMAE_CMD_RESERVED2 (0x1<<15) /* BitField opcode_iovE2 and onward, set to 0 for backward compatibility */ 254 #define DMAE_CMD_RESERVED2_SHIFT 15 255#endif 256 u32_t comp_addr_lo /* completion address low/grc address */; 257 u32_t comp_addr_hi /* completion address hi */; 258 u32_t comp_val /* value to write to completion address */; 259 u32_t crc32 /* crc32 result */; 260 u32_t crc32_c /* crc32_c result */; 261#if defined(__BIG_ENDIAN) 262 u16_t crc16_c /* crc16_c result */; 263 u16_t crc16 /* crc16 result */; 264#elif defined(__LITTLE_ENDIAN) 265 u16_t crc16 /* crc16 result */; 266 u16_t crc16_c /* crc16_c result */; 267#endif 268#if defined(__BIG_ENDIAN) 269 u16_t reserved3; 270 u16_t crc_t10 /* crc_t10 result */; 271#elif defined(__LITTLE_ENDIAN) 272 u16_t crc_t10 /* crc_t10 result */; 273 u16_t reserved3; 274#endif 275#if defined(__BIG_ENDIAN) 276 u16_t xsum8 /* checksum8 result */; 277 u16_t xsum16 /* checksum16 result */; 278#elif defined(__LITTLE_ENDIAN) 279 u16_t xsum16 /* checksum16 result */; 280 u16_t xsum8 /* checksum8 result */; 281#endif 282}; 283 284 285/* 286 * common data for all protocols 287 */ 288struct doorbell_hdr_t 289{ 290 u8_t data; 291 #define DOORBELL_HDR_T_RX (0x1<<0) /* BitField data 1 for rx doorbell, 0 for tx doorbell */ 292 #define DOORBELL_HDR_T_RX_SHIFT 0 293 #define DOORBELL_HDR_T_DB_TYPE (0x1<<1) /* BitField data 0 for normal doorbell, 1 for advertise wnd doorbell */ 294 #define DOORBELL_HDR_T_DB_TYPE_SHIFT 1 295 #define DOORBELL_HDR_T_DPM_SIZE (0x3<<2) /* BitField data rdma tx only: DPM transaction size specifier (64/128/256/512 bytes) */ 296 #define DOORBELL_HDR_T_DPM_SIZE_SHIFT 2 297 #define DOORBELL_HDR_T_CONN_TYPE (0xF<<4) /* BitField data connection type */ 298 #define DOORBELL_HDR_T_CONN_TYPE_SHIFT 4 299}; 300 301/* 302 * Ethernet doorbell 303 */ 304struct eth_tx_doorbell 305{ 306#if defined(__BIG_ENDIAN) 307 u16_t npackets /* number of data bytes that were added in the doorbell */; 308 u8_t params; 309 #define ETH_TX_DOORBELL_NUM_BDS (0x3F<<0) /* BitField params number of buffer descriptors that were added in the doorbell */ 310 #define ETH_TX_DOORBELL_NUM_BDS_SHIFT 0 311 #define ETH_TX_DOORBELL_RESERVED_TX_FIN_FLAG (0x1<<6) /* BitField params tx fin command flag */ 312 #define ETH_TX_DOORBELL_RESERVED_TX_FIN_FLAG_SHIFT 6 313 #define ETH_TX_DOORBELL_SPARE (0x1<<7) /* BitField params doorbell queue spare flag */ 314 #define ETH_TX_DOORBELL_SPARE_SHIFT 7 315 struct doorbell_hdr_t hdr; 316#elif defined(__LITTLE_ENDIAN) 317 struct doorbell_hdr_t hdr; 318 u8_t params; 319 #define ETH_TX_DOORBELL_NUM_BDS (0x3F<<0) /* BitField params number of buffer descriptors that were added in the doorbell */ 320 #define ETH_TX_DOORBELL_NUM_BDS_SHIFT 0 321 #define ETH_TX_DOORBELL_RESERVED_TX_FIN_FLAG (0x1<<6) /* BitField params tx fin command flag */ 322 #define ETH_TX_DOORBELL_RESERVED_TX_FIN_FLAG_SHIFT 6 323 #define ETH_TX_DOORBELL_SPARE (0x1<<7) /* BitField params doorbell queue spare flag */ 324 #define ETH_TX_DOORBELL_SPARE_SHIFT 7 325 u16_t npackets /* number of data bytes that were added in the doorbell */; 326#endif 327}; 328 329 330/* 331 * 3 lines. status block $$KEEP_ENDIANNESS$$ 332 */ 333struct hc_status_block_e1x 334{ 335 u16_t index_values[HC_SB_MAX_INDICES_E1X] /* indices reported by cstorm */; 336 u16_t running_index[HC_SB_MAX_SM] /* Status Block running indices */; 337 u32_t rsrv[11]; 338}; 339 340/* 341 * host status block 342 */ 343struct host_hc_status_block_e1x 344{ 345 struct hc_status_block_e1x sb /* fast path indices */; 346}; 347 348 349/* 350 * 3 lines. status block $$KEEP_ENDIANNESS$$ 351 */ 352struct hc_status_block_e2 353{ 354 u16_t index_values[HC_SB_MAX_INDICES_E2] /* indices reported by cstorm */; 355 u16_t running_index[HC_SB_MAX_SM] /* Status Block running indices */; 356 u32_t reserved[11]; 357}; 358 359/* 360 * host status block 361 */ 362struct host_hc_status_block_e2 363{ 364 struct hc_status_block_e2 sb /* fast path indices */; 365}; 366 367 368/* 369 * 5 lines. slow-path status block $$KEEP_ENDIANNESS$$ 370 */ 371struct hc_sp_status_block 372{ 373 u16_t index_values[HC_SP_SB_MAX_INDICES] /* indices reported by cstorm */; 374 u16_t running_index /* Status Block running index */; 375 u16_t rsrv; 376 u32_t rsrv1; 377}; 378 379/* 380 * host status block 381 */ 382struct host_sp_status_block 383{ 384 struct atten_sp_status_block atten_status_block /* attention bits section */; 385 struct hc_sp_status_block sp_sb /* slow path indices */; 386}; 387 388 389/* 390 * IGU driver acknowledgment register 391 */ 392struct igu_ack_register 393{ 394#if defined(__BIG_ENDIAN) 395 u16_t sb_id_and_flags; 396 #define IGU_ACK_REGISTER_STATUS_BLOCK_ID (0x1F<<0) /* BitField sb_id_and_flags 0-15: non default status blocks, 16: default status block */ 397 #define IGU_ACK_REGISTER_STATUS_BLOCK_ID_SHIFT 0 398 #define IGU_ACK_REGISTER_STORM_ID (0x7<<5) /* BitField sb_id_and_flags 0-3:storm id, 4: attn status block (valid in default sb only) */ 399 #define IGU_ACK_REGISTER_STORM_ID_SHIFT 5 400 #define IGU_ACK_REGISTER_UPDATE_INDEX (0x1<<8) /* BitField sb_id_and_flags if set, acknowledges status block index */ 401 #define IGU_ACK_REGISTER_UPDATE_INDEX_SHIFT 8 402 #define IGU_ACK_REGISTER_INTERRUPT_MODE (0x3<<9) /* BitField sb_id_and_flags interrupt enable/disable/nop: use IGU_INT_xxx constants */ 403 #define IGU_ACK_REGISTER_INTERRUPT_MODE_SHIFT 9 404 #define IGU_ACK_REGISTER_RESERVED (0x1F<<11) /* BitField sb_id_and_flags */ 405 #define IGU_ACK_REGISTER_RESERVED_SHIFT 11 406 u16_t status_block_index /* status block index acknowledgement */; 407#elif defined(__LITTLE_ENDIAN) 408 u16_t status_block_index /* status block index acknowledgement */; 409 u16_t sb_id_and_flags; 410 #define IGU_ACK_REGISTER_STATUS_BLOCK_ID (0x1F<<0) /* BitField sb_id_and_flags 0-15: non default status blocks, 16: default status block */ 411 #define IGU_ACK_REGISTER_STATUS_BLOCK_ID_SHIFT 0 412 #define IGU_ACK_REGISTER_STORM_ID (0x7<<5) /* BitField sb_id_and_flags 0-3:storm id, 4: attn status block (valid in default sb only) */ 413 #define IGU_ACK_REGISTER_STORM_ID_SHIFT 5 414 #define IGU_ACK_REGISTER_UPDATE_INDEX (0x1<<8) /* BitField sb_id_and_flags if set, acknowledges status block index */ 415 #define IGU_ACK_REGISTER_UPDATE_INDEX_SHIFT 8 416 #define IGU_ACK_REGISTER_INTERRUPT_MODE (0x3<<9) /* BitField sb_id_and_flags interrupt enable/disable/nop: use IGU_INT_xxx constants */ 417 #define IGU_ACK_REGISTER_INTERRUPT_MODE_SHIFT 9 418 #define IGU_ACK_REGISTER_RESERVED (0x1F<<11) /* BitField sb_id_and_flags */ 419 #define IGU_ACK_REGISTER_RESERVED_SHIFT 11 420#endif 421}; 422 423 424/* 425 * IGU driver acknowledgement register 426 */ 427struct igu_backward_compatible 428{ 429 u32_t sb_id_and_flags; 430 #define IGU_BACKWARD_COMPATIBLE_SB_INDEX (0xFFFF<<0) /* BitField sb_id_and_flags */ 431 #define IGU_BACKWARD_COMPATIBLE_SB_INDEX_SHIFT 0 432 #define IGU_BACKWARD_COMPATIBLE_SB_SELECT (0x1F<<16) /* BitField sb_id_and_flags */ 433 #define IGU_BACKWARD_COMPATIBLE_SB_SELECT_SHIFT 16 434 #define IGU_BACKWARD_COMPATIBLE_SEGMENT_ACCESS (0x7<<21) /* BitField sb_id_and_flags 0-3:storm id, 4: attn status block (valid in default sb only) */ 435 #define IGU_BACKWARD_COMPATIBLE_SEGMENT_ACCESS_SHIFT 21 436 #define IGU_BACKWARD_COMPATIBLE_BUPDATE (0x1<<24) /* BitField sb_id_and_flags if set, acknowledges status block index */ 437 #define IGU_BACKWARD_COMPATIBLE_BUPDATE_SHIFT 24 438 #define IGU_BACKWARD_COMPATIBLE_ENABLE_INT (0x3<<25) /* BitField sb_id_and_flags interrupt enable/disable/nop: use IGU_INT_xxx constants */ 439 #define IGU_BACKWARD_COMPATIBLE_ENABLE_INT_SHIFT 25 440 #define IGU_BACKWARD_COMPATIBLE_RESERVED_0 (0x1F<<27) /* BitField sb_id_and_flags */ 441 #define IGU_BACKWARD_COMPATIBLE_RESERVED_0_SHIFT 27 442 u32_t reserved_2; 443}; 444 445 446/* 447 * IGU driver acknowledgement register 448 */ 449struct igu_regular 450{ 451 u32_t sb_id_and_flags; 452 #define IGU_REGULAR_SB_INDEX (0xFFFFF<<0) /* BitField sb_id_and_flags */ 453 #define IGU_REGULAR_SB_INDEX_SHIFT 0 454 #define IGU_REGULAR_RESERVED0 (0x1<<20) /* BitField sb_id_and_flags */ 455 #define IGU_REGULAR_RESERVED0_SHIFT 20 456 #define IGU_REGULAR_SEGMENT_ACCESS (0x7<<21) /* BitField sb_id_and_flags 21-23 (use enum igu_seg_access) */ 457 #define IGU_REGULAR_SEGMENT_ACCESS_SHIFT 21 458 #define IGU_REGULAR_BUPDATE (0x1<<24) /* BitField sb_id_and_flags */ 459 #define IGU_REGULAR_BUPDATE_SHIFT 24 460 #define IGU_REGULAR_ENABLE_INT (0x3<<25) /* BitField sb_id_and_flags interrupt enable/disable/nop (use enum igu_int_cmd) */ 461 #define IGU_REGULAR_ENABLE_INT_SHIFT 25 462 #define IGU_REGULAR_RESERVED_1 (0x1<<27) /* BitField sb_id_and_flags */ 463 #define IGU_REGULAR_RESERVED_1_SHIFT 27 464 #define IGU_REGULAR_CLEANUP_TYPE (0x3<<28) /* BitField sb_id_and_flags */ 465 #define IGU_REGULAR_CLEANUP_TYPE_SHIFT 28 466 #define IGU_REGULAR_CLEANUP_SET (0x1<<30) /* BitField sb_id_and_flags */ 467 #define IGU_REGULAR_CLEANUP_SET_SHIFT 30 468 #define IGU_REGULAR_BCLEANUP (0x1<<31) /* BitField sb_id_and_flags */ 469 #define IGU_REGULAR_BCLEANUP_SHIFT 31 470 u32_t reserved_2; 471}; 472 473/* 474 * IGU driver acknowledgement register 475 */ 476union igu_consprod_reg 477{ 478 struct igu_regular regular; 479 struct igu_backward_compatible backward_compatible; 480}; 481 482 483/* 484 * Igu control commands 485 */ 486enum igu_ctrl_cmd 487{ 488 IGU_CTRL_CMD_TYPE_RD, 489 IGU_CTRL_CMD_TYPE_WR, 490 MAX_IGU_CTRL_CMD}; 491 492 493/* 494 * Control register for the IGU command register 495 */ 496struct igu_ctrl_reg 497{ 498 u32_t ctrl_data; 499 #define IGU_CTRL_REG_ADDRESS (0xFFF<<0) /* BitField ctrl_data */ 500 #define IGU_CTRL_REG_ADDRESS_SHIFT 0 501 #define IGU_CTRL_REG_FID (0x7F<<12) /* BitField ctrl_data */ 502 #define IGU_CTRL_REG_FID_SHIFT 12 503 #define IGU_CTRL_REG_RESERVED (0x1<<19) /* BitField ctrl_data */ 504 #define IGU_CTRL_REG_RESERVED_SHIFT 19 505 #define IGU_CTRL_REG_TYPE (0x1<<20) /* BitField ctrl_data (use enum igu_ctrl_cmd) */ 506 #define IGU_CTRL_REG_TYPE_SHIFT 20 507 #define IGU_CTRL_REG_UNUSED (0x7FF<<21) /* BitField ctrl_data */ 508 #define IGU_CTRL_REG_UNUSED_SHIFT 21 509}; 510 511 512/* 513 * Igu interrupt command 514 */ 515enum igu_int_cmd 516{ 517 IGU_INT_ENABLE, 518 IGU_INT_DISABLE, 519 IGU_INT_NOP, 520 IGU_INT_NOP2, 521 MAX_IGU_INT_CMD}; 522 523 524 525/* 526 * Igu segments 527 */ 528enum igu_seg_access 529{ 530 IGU_SEG_ACCESS_NORM, 531 IGU_SEG_ACCESS_DEF, 532 IGU_SEG_ACCESS_ATTN, 533 MAX_IGU_SEG_ACCESS}; 534 535 536/* 537 * iscsi doorbell 538 */ 539struct iscsi_tx_doorbell 540{ 541#if defined(__BIG_ENDIAN) 542 u16_t reserved /* number of data bytes that were added in the doorbell */; 543 u8_t params; 544 #define ISCSI_TX_DOORBELL_NUM_WQES (0x3F<<0) /* BitField params number of buffer descriptors that were added in the doorbell */ 545 #define ISCSI_TX_DOORBELL_NUM_WQES_SHIFT 0 546 #define ISCSI_TX_DOORBELL_RESERVED_TX_FIN_FLAG (0x1<<6) /* BitField params tx fin command flag */ 547 #define ISCSI_TX_DOORBELL_RESERVED_TX_FIN_FLAG_SHIFT 6 548 #define ISCSI_TX_DOORBELL_SPARE (0x1<<7) /* BitField params doorbell queue spare flag */ 549 #define ISCSI_TX_DOORBELL_SPARE_SHIFT 7 550 struct doorbell_hdr_t hdr; 551#elif defined(__LITTLE_ENDIAN) 552 struct doorbell_hdr_t hdr; 553 u8_t params; 554 #define ISCSI_TX_DOORBELL_NUM_WQES (0x3F<<0) /* BitField params number of buffer descriptors that were added in the doorbell */ 555 #define ISCSI_TX_DOORBELL_NUM_WQES_SHIFT 0 556 #define ISCSI_TX_DOORBELL_RESERVED_TX_FIN_FLAG (0x1<<6) /* BitField params tx fin command flag */ 557 #define ISCSI_TX_DOORBELL_RESERVED_TX_FIN_FLAG_SHIFT 6 558 #define ISCSI_TX_DOORBELL_SPARE (0x1<<7) /* BitField params doorbell queue spare flag */ 559 #define ISCSI_TX_DOORBELL_SPARE_SHIFT 7 560 u16_t reserved /* number of data bytes that were added in the doorbell */; 561#endif 562}; 563 564 565/* 566 * Parser parsing flags field 567 */ 568struct parsing_flags 569{ 570 u16_t flags; 571 #define PARSING_FLAGS_ETHERNET_ADDRESS_TYPE (0x1<<0) /* BitField flagscontext flags 0=non-unicast, 1=unicast (use enum prs_flags_eth_addr_type) */ 572 #define PARSING_FLAGS_ETHERNET_ADDRESS_TYPE_SHIFT 0 573 #define PARSING_FLAGS_INNER_VLAN_EXIST (0x1<<1) /* BitField flagscontext flags 0 or 1 */ 574 #define PARSING_FLAGS_INNER_VLAN_EXIST_SHIFT 1 575 #define PARSING_FLAGS_OUTER_VLAN_EXIST (0x1<<2) /* BitField flagscontext flags 0 or 1 */ 576 #define PARSING_FLAGS_OUTER_VLAN_EXIST_SHIFT 2 577 #define PARSING_FLAGS_OVER_ETHERNET_PROTOCOL (0x3<<3) /* BitField flagscontext flags 0=un-known, 1=Ipv4, 2=Ipv6,3=LLC SNAP un-known. LLC SNAP here refers only to LLC/SNAP packets that do not have Ipv4 or Ipv6 above them. Ipv4 and Ipv6 indications are even if they are over LLC/SNAP and not directly over Ethernet (use enum prs_flags_over_eth) */ 578 #define PARSING_FLAGS_OVER_ETHERNET_PROTOCOL_SHIFT 3 579 #define PARSING_FLAGS_IP_OPTIONS (0x1<<5) /* BitField flagscontext flags 0=no IP options / extension headers. 1=IP options / extension header exist */ 580 #define PARSING_FLAGS_IP_OPTIONS_SHIFT 5 581 #define PARSING_FLAGS_FRAGMENTATION_STATUS (0x1<<6) /* BitField flagscontext flags 0=non-fragmented, 1=fragmented */ 582 #define PARSING_FLAGS_FRAGMENTATION_STATUS_SHIFT 6 583 #define PARSING_FLAGS_OVER_IP_PROTOCOL (0x3<<7) /* BitField flagscontext flags 0=un-known, 1=TCP, 2=UDP (use enum prs_flags_over_ip) */ 584 #define PARSING_FLAGS_OVER_IP_PROTOCOL_SHIFT 7 585 #define PARSING_FLAGS_PURE_ACK_INDICATION (0x1<<9) /* BitField flagscontext flags 0=packet with data, 1=pure-ACK (use enum prs_flags_ack_type) */ 586 #define PARSING_FLAGS_PURE_ACK_INDICATION_SHIFT 9 587 #define PARSING_FLAGS_TCP_OPTIONS_EXIST (0x1<<10) /* BitField flagscontext flags 0=no TCP options. 1=TCP options */ 588 #define PARSING_FLAGS_TCP_OPTIONS_EXIST_SHIFT 10 589 #define PARSING_FLAGS_TIME_STAMP_EXIST_FLAG (0x1<<11) /* BitField flagscontext flags According to the TCP header options parsing */ 590 #define PARSING_FLAGS_TIME_STAMP_EXIST_FLAG_SHIFT 11 591 #define PARSING_FLAGS_CONNECTION_MATCH (0x1<<12) /* BitField flagscontext flags connection match in searcher indication */ 592 #define PARSING_FLAGS_CONNECTION_MATCH_SHIFT 12 593 #define PARSING_FLAGS_LLC_SNAP (0x1<<13) /* BitField flagscontext flags LLC SNAP indication */ 594 #define PARSING_FLAGS_LLC_SNAP_SHIFT 13 595 #define PARSING_FLAGS_RESERVED0 (0x3<<14) /* BitField flagscontext flags */ 596 #define PARSING_FLAGS_RESERVED0_SHIFT 14 597}; 598 599 600/* 601 * Parsing flags for TCP ACK type 602 */ 603enum prs_flags_ack_type 604{ 605 PRS_FLAG_PUREACK_PIGGY, 606 PRS_FLAG_PUREACK_PURE, 607 MAX_PRS_FLAGS_ACK_TYPE}; 608 609 610/* 611 * Parsing flags for Ethernet address type 612 */ 613enum prs_flags_eth_addr_type 614{ 615 PRS_FLAG_ETHTYPE_NON_UNICAST, 616 PRS_FLAG_ETHTYPE_UNICAST, 617 MAX_PRS_FLAGS_ETH_ADDR_TYPE}; 618 619 620/* 621 * Parsing flags for over-ethernet protocol 622 */ 623enum prs_flags_over_eth 624{ 625 PRS_FLAG_OVERETH_UNKNOWN, 626 PRS_FLAG_OVERETH_IPV4, 627 PRS_FLAG_OVERETH_IPV6, 628 PRS_FLAG_OVERETH_LLCSNAP_UNKNOWN, 629 MAX_PRS_FLAGS_OVER_ETH}; 630 631 632/* 633 * Parsing flags for over-IP protocol 634 */ 635enum prs_flags_over_ip 636{ 637 PRS_FLAG_OVERIP_UNKNOWN, 638 PRS_FLAG_OVERIP_TCP, 639 PRS_FLAG_OVERIP_UDP, 640 MAX_PRS_FLAGS_OVER_IP}; 641 642 643/* 644 * SDM operation gen command (generate aggregative interrupt) 645 */ 646struct sdm_op_gen 647{ 648 u32_t command; 649 #define SDM_OP_GEN_COMP_PARAM (0x1F<<0) /* BitField commandcomp_param and comp_type thread ID/aggr interrupt number/counter depending on the completion type */ 650 #define SDM_OP_GEN_COMP_PARAM_SHIFT 0 651 #define SDM_OP_GEN_COMP_TYPE (0x7<<5) /* BitField commandcomp_param and comp_type Direct messages to CM / PCI switch are not supported in operation_gen completion */ 652 #define SDM_OP_GEN_COMP_TYPE_SHIFT 5 653 #define SDM_OP_GEN_AGG_VECT_IDX (0xFF<<8) /* BitField commandcomp_param and comp_type bit index in aggregated interrupt vector */ 654 #define SDM_OP_GEN_AGG_VECT_IDX_SHIFT 8 655 #define SDM_OP_GEN_AGG_VECT_IDX_VALID (0x1<<16) /* BitField commandcomp_param and comp_type */ 656 #define SDM_OP_GEN_AGG_VECT_IDX_VALID_SHIFT 16 657 #define SDM_OP_GEN_RESERVED (0x7FFF<<17) /* BitField commandcomp_param and comp_type */ 658 #define SDM_OP_GEN_RESERVED_SHIFT 17 659}; 660 661 662/* 663 * Timers connection context 664 */ 665struct timers_block_context 666{ 667 u32_t __client0 /* data of client 0 of the timers block*/; 668 u32_t __client1 /* data of client 1 of the timers block*/; 669 u32_t __client2 /* data of client 2 of the timers block*/; 670 u32_t flags; 671 #define __TIMERS_BLOCK_CONTEXT_NUM_OF_ACTIVE_TIMERS (0x3<<0) /* BitField flagscontext flags number of active timers running */ 672 #define __TIMERS_BLOCK_CONTEXT_NUM_OF_ACTIVE_TIMERS_SHIFT 0 673 #define TIMERS_BLOCK_CONTEXT_CONN_VALID_FLG (0x1<<2) /* BitField flagscontext flags flag: is connection valid (should be set by driver to 1 in toe/iscsi connections) */ 674 #define TIMERS_BLOCK_CONTEXT_CONN_VALID_FLG_SHIFT 2 675 #define __TIMERS_BLOCK_CONTEXT_RESERVED0 (0x1FFFFFFF<<3) /* BitField flagscontext flags */ 676 #define __TIMERS_BLOCK_CONTEXT_RESERVED0_SHIFT 3 677}; 678 679 680/* 681 * advertise window doorbell 682 */ 683struct toe_adv_wnd_doorbell 684{ 685#if defined(__BIG_ENDIAN) 686 u16_t wnd_sz_lsb /* Less significant bits of advertise window update value */; 687 u8_t wnd_sz_msb /* Most significant bits of advertise window update value */; 688 struct doorbell_hdr_t hdr /* See description of the appropriate type */; 689#elif defined(__LITTLE_ENDIAN) 690 struct doorbell_hdr_t hdr /* See description of the appropriate type */; 691 u8_t wnd_sz_msb /* Most significant bits of advertise window update value */; 692 u16_t wnd_sz_lsb /* Less significant bits of advertise window update value */; 693#endif 694}; 695 696 697/* 698 * toe rx BDs update doorbell 699 */ 700struct toe_rx_bds_doorbell 701{ 702#if defined(__BIG_ENDIAN) 703 u16_t nbds /* BDs update value */; 704 u8_t params; 705 #define TOE_RX_BDS_DOORBELL_RESERVED (0x1F<<0) /* BitField params reserved */ 706 #define TOE_RX_BDS_DOORBELL_RESERVED_SHIFT 0 707 #define TOE_RX_BDS_DOORBELL_OPCODE (0x7<<5) /* BitField params BDs update doorbell opcode (2) */ 708 #define TOE_RX_BDS_DOORBELL_OPCODE_SHIFT 5 709 struct doorbell_hdr_t hdr; 710#elif defined(__LITTLE_ENDIAN) 711 struct doorbell_hdr_t hdr; 712 u8_t params; 713 #define TOE_RX_BDS_DOORBELL_RESERVED (0x1F<<0) /* BitField params reserved */ 714 #define TOE_RX_BDS_DOORBELL_RESERVED_SHIFT 0 715 #define TOE_RX_BDS_DOORBELL_OPCODE (0x7<<5) /* BitField params BDs update doorbell opcode (2) */ 716 #define TOE_RX_BDS_DOORBELL_OPCODE_SHIFT 5 717 u16_t nbds /* BDs update value */; 718#endif 719}; 720 721 722/* 723 * toe rx bytes and BDs update doorbell 724 */ 725struct toe_rx_bytes_and_bds_doorbell 726{ 727#if defined(__BIG_ENDIAN) 728 u16_t nbytes /* nbytes */; 729 u8_t params; 730 #define TOE_RX_BYTES_AND_BDS_DOORBELL_NBDS (0x1F<<0) /* BitField params producer delta from the last doorbell */ 731 #define TOE_RX_BYTES_AND_BDS_DOORBELL_NBDS_SHIFT 0 732 #define TOE_RX_BYTES_AND_BDS_DOORBELL_OPCODE (0x7<<5) /* BitField params rx bytes and BDs update doorbell opcode (1) */ 733 #define TOE_RX_BYTES_AND_BDS_DOORBELL_OPCODE_SHIFT 5 734 struct doorbell_hdr_t hdr; 735#elif defined(__LITTLE_ENDIAN) 736 struct doorbell_hdr_t hdr; 737 u8_t params; 738 #define TOE_RX_BYTES_AND_BDS_DOORBELL_NBDS (0x1F<<0) /* BitField params producer delta from the last doorbell */ 739 #define TOE_RX_BYTES_AND_BDS_DOORBELL_NBDS_SHIFT 0 740 #define TOE_RX_BYTES_AND_BDS_DOORBELL_OPCODE (0x7<<5) /* BitField params rx bytes and BDs update doorbell opcode (1) */ 741 #define TOE_RX_BYTES_AND_BDS_DOORBELL_OPCODE_SHIFT 5 742 u16_t nbytes /* nbytes */; 743#endif 744}; 745 746 747/* 748 * toe rx bytes doorbell 749 */ 750struct toe_rx_byte_doorbell 751{ 752#if defined(__BIG_ENDIAN) 753 u16_t nbytes_lsb /* bits [0:15] of nbytes */; 754 u8_t params; 755 #define TOE_RX_BYTE_DOORBELL_NBYTES_MSB (0x1F<<0) /* BitField params bits [20:16] of nbytes */ 756 #define TOE_RX_BYTE_DOORBELL_NBYTES_MSB_SHIFT 0 757 #define TOE_RX_BYTE_DOORBELL_OPCODE (0x7<<5) /* BitField params rx bytes doorbell opcode (0) */ 758 #define TOE_RX_BYTE_DOORBELL_OPCODE_SHIFT 5 759 struct doorbell_hdr_t hdr; 760#elif defined(__LITTLE_ENDIAN) 761 struct doorbell_hdr_t hdr; 762 u8_t params; 763 #define TOE_RX_BYTE_DOORBELL_NBYTES_MSB (0x1F<<0) /* BitField params bits [20:16] of nbytes */ 764 #define TOE_RX_BYTE_DOORBELL_NBYTES_MSB_SHIFT 0 765 #define TOE_RX_BYTE_DOORBELL_OPCODE (0x7<<5) /* BitField params rx bytes doorbell opcode (0) */ 766 #define TOE_RX_BYTE_DOORBELL_OPCODE_SHIFT 5 767 u16_t nbytes_lsb /* bits [0:15] of nbytes */; 768#endif 769}; 770 771 772/* 773 * toe rx consume GRQ doorbell 774 */ 775struct toe_rx_grq_doorbell 776{ 777#if defined(__BIG_ENDIAN) 778 u16_t nbytes_lsb /* bits [0:15] of nbytes */; 779 u8_t params; 780 #define TOE_RX_GRQ_DOORBELL_NBYTES_MSB (0x1F<<0) /* BitField params bits [20:16] of nbytes */ 781 #define TOE_RX_GRQ_DOORBELL_NBYTES_MSB_SHIFT 0 782 #define TOE_RX_GRQ_DOORBELL_OPCODE (0x7<<5) /* BitField params rx GRQ doorbell opcode (4) */ 783 #define TOE_RX_GRQ_DOORBELL_OPCODE_SHIFT 5 784 struct doorbell_hdr_t hdr; 785#elif defined(__LITTLE_ENDIAN) 786 struct doorbell_hdr_t hdr; 787 u8_t params; 788 #define TOE_RX_GRQ_DOORBELL_NBYTES_MSB (0x1F<<0) /* BitField params bits [20:16] of nbytes */ 789 #define TOE_RX_GRQ_DOORBELL_NBYTES_MSB_SHIFT 0 790 #define TOE_RX_GRQ_DOORBELL_OPCODE (0x7<<5) /* BitField params rx GRQ doorbell opcode (4) */ 791 #define TOE_RX_GRQ_DOORBELL_OPCODE_SHIFT 5 792 u16_t nbytes_lsb /* bits [0:15] of nbytes */; 793#endif 794}; 795 796 797/* 798 * toe doorbell 799 */ 800struct toe_tx_doorbell 801{ 802#if defined(__BIG_ENDIAN) 803 u16_t nbytes /* number of data bytes that were added in the doorbell */; 804 u8_t params; 805 #define TOE_TX_DOORBELL_NUM_BDS (0x3F<<0) /* BitField params number of buffer descriptors that were added in the doorbell */ 806 #define TOE_TX_DOORBELL_NUM_BDS_SHIFT 0 807 #define TOE_TX_DOORBELL_TX_FIN_FLAG (0x1<<6) /* BitField params tx fin command flag */ 808 #define TOE_TX_DOORBELL_TX_FIN_FLAG_SHIFT 6 809 #define TOE_TX_DOORBELL_FLUSH (0x1<<7) /* BitField params doorbell queue spare flag */ 810 #define TOE_TX_DOORBELL_FLUSH_SHIFT 7 811 struct doorbell_hdr_t hdr; 812#elif defined(__LITTLE_ENDIAN) 813 struct doorbell_hdr_t hdr; 814 u8_t params; 815 #define TOE_TX_DOORBELL_NUM_BDS (0x3F<<0) /* BitField params number of buffer descriptors that were added in the doorbell */ 816 #define TOE_TX_DOORBELL_NUM_BDS_SHIFT 0 817 #define TOE_TX_DOORBELL_TX_FIN_FLAG (0x1<<6) /* BitField params tx fin command flag */ 818 #define TOE_TX_DOORBELL_TX_FIN_FLAG_SHIFT 6 819 #define TOE_TX_DOORBELL_FLUSH (0x1<<7) /* BitField params doorbell queue spare flag */ 820 #define TOE_TX_DOORBELL_FLUSH_SHIFT 7 821 u16_t nbytes /* number of data bytes that were added in the doorbell */; 822#endif 823}; 824 825 826/* 827 * The eth aggregative context of Tstorm 828 */ 829struct tstorm_eth_ag_context 830{ 831 u32_t __reserved0[14]; 832}; 833 834 835/* 836 * The fcoe extra aggregative context section of Tstorm 837 */ 838struct tstorm_fcoe_extra_ag_context_section 839{ 840 u32_t __agg_val1 /* aggregated value 1 */; 841#if defined(__BIG_ENDIAN) 842 u8_t __tcp_agg_vars2 /* Various aggregative variables*/; 843 u8_t __agg_val3 /* aggregated value 3 */; 844 u16_t __agg_val2 /* aggregated value 2 */; 845#elif defined(__LITTLE_ENDIAN) 846 u16_t __agg_val2 /* aggregated value 2 */; 847 u8_t __agg_val3 /* aggregated value 3 */; 848 u8_t __tcp_agg_vars2 /* Various aggregative variables*/; 849#endif 850#if defined(__BIG_ENDIAN) 851 u16_t __agg_val5; 852 u8_t __agg_val6; 853 u8_t __tcp_agg_vars3 /* Various aggregative variables*/; 854#elif defined(__LITTLE_ENDIAN) 855 u8_t __tcp_agg_vars3 /* Various aggregative variables*/; 856 u8_t __agg_val6; 857 u16_t __agg_val5; 858#endif 859 u32_t __lcq_prod /* Next sequence number to transmit, given by Tx */; 860 u32_t rtt_seq /* Rtt recording sequence number */; 861 u32_t rtt_time /* Rtt recording real time clock */; 862 u32_t __reserved66; 863 u32_t wnd_right_edge /* The right edge of the receive window. Updated by the XSTORM when a segment with ACK is transmitted */; 864 u32_t tcp_agg_vars1; 865 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<0) /* BitField tcp_agg_vars1Various aggregative variables Sticky bit that is set when FIN is sent and remains set */ 866 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 0 867 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG (0x1<<1) /* BitField tcp_agg_vars1Various aggregative variables The Tx indicates that it sent a FIN packet */ 868 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG_SHIFT 1 869 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF (0x3<<2) /* BitField tcp_agg_vars1Various aggregative variables Counter flag to indicate a window update */ 870 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF_SHIFT 2 871 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF (0x3<<4) /* BitField tcp_agg_vars1Various aggregative variables Indicates that a timeout expired */ 872 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF_SHIFT 4 873 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF_EN (0x1<<6) /* BitField tcp_agg_vars1Various aggregative variables Enable the decision rule that considers the WndUpd counter flag */ 874 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF_EN_SHIFT 6 875 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF_EN (0x1<<7) /* BitField tcp_agg_vars1Various aggregative variables Enable the decision rule that considers the Timeout counter flag */ 876 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF_EN_SHIFT 7 877 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN (0x1<<8) /* BitField tcp_agg_vars1Various aggregative variables If 1 then the Rxmit sequence decision rule is enabled */ 878 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN_SHIFT 8 879 #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LCQ_SND_EN (0x1<<9) /* BitField tcp_agg_vars1Various aggregative variables If set then the SendNext decision rule is enabled */ 880 #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LCQ_SND_EN_SHIFT 9 881 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<10) /* BitField tcp_agg_vars1Various aggregative variables */ 882 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 10 883 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_FLAG (0x1<<11) /* BitField tcp_agg_vars1Various aggregative variables */ 884 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_FLAG_SHIFT 11 885 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF_EN (0x1<<12) /* BitField tcp_agg_vars1Various aggregative variables */ 886 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF_EN_SHIFT 12 887 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF_EN (0x1<<13) /* BitField tcp_agg_vars1Various aggregative variables */ 888 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF_EN_SHIFT 13 889 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF (0x3<<14) /* BitField tcp_agg_vars1Various aggregative variables */ 890 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF_SHIFT 14 891 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF (0x3<<16) /* BitField tcp_agg_vars1Various aggregative variables */ 892 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF_SHIFT 16 893 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_BLOCKED (0x1<<18) /* BitField tcp_agg_vars1Various aggregative variables Indicates that Tx has more to send, but has not enough window to send it */ 894 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_BLOCKED_SHIFT 18 895 #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<19) /* BitField tcp_agg_vars1Various aggregative variables */ 896 #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 19 897 #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX11_CF_EN (0x1<<20) /* BitField tcp_agg_vars1Various aggregative variables */ 898 #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX11_CF_EN_SHIFT 20 899 #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX12_CF_EN (0x1<<21) /* BitField tcp_agg_vars1Various aggregative variables */ 900 #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX12_CF_EN_SHIFT 21 901 #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED1 (0x3<<22) /* BitField tcp_agg_vars1Various aggregative variables */ 902 #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED1_SHIFT 22 903 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ (0xF<<24) /* BitField tcp_agg_vars1Various aggregative variables The sequence of the last fast retransmit or goto SS comand sent */ 904 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ_SHIFT 24 905 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ (0xF<<28) /* BitField tcp_agg_vars1Various aggregative variables The sequence of the last fast retransmit or Goto SS command performed by the XSTORM */ 906 #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ_SHIFT 28 907 u32_t snd_max /* Maximum sequence number that was ever transmitted */; 908 u32_t __lcq_cons /* Last ACK sequence number sent by the Tx */; 909 u32_t __reserved2; 910}; 911 912/* 913 * The fcoe aggregative context of Tstorm 914 */ 915struct tstorm_fcoe_ag_context 916{ 917#if defined(__BIG_ENDIAN) 918 u16_t ulp_credit; 919 u8_t agg_vars1; 920 #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 0 */ 921 #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 922 #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 1 */ 923 #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 924 #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 2 */ 925 #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2 926 #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 3 */ 927 #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3 928 #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF (0x3<<4) /* BitField agg_vars1Various aggregative variables */ 929 #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_SHIFT 4 930 #define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG (0x1<<6) /* BitField agg_vars1Various aggregative variables */ 931 #define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG_SHIFT 6 932 #define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG (0x1<<7) /* BitField agg_vars1Various aggregative variables */ 933 #define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG_SHIFT 7 934 u8_t state /* The state of the connection */; 935#elif defined(__LITTLE_ENDIAN) 936 u8_t state /* The state of the connection */; 937 u8_t agg_vars1; 938 #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 0 */ 939 #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 940 #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 1 */ 941 #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 942 #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 2 */ 943 #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2 944 #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 3 */ 945 #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3 946 #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF (0x3<<4) /* BitField agg_vars1Various aggregative variables */ 947 #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_SHIFT 4 948 #define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG (0x1<<6) /* BitField agg_vars1Various aggregative variables */ 949 #define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG_SHIFT 6 950 #define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG (0x1<<7) /* BitField agg_vars1Various aggregative variables */ 951 #define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG_SHIFT 7 952 u16_t ulp_credit; 953#endif 954#if defined(__BIG_ENDIAN) 955 u16_t __agg_val4; 956 u16_t agg_vars2; 957 #define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG (0x1<<0) /* BitField agg_vars2Various aggregative variables */ 958 #define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG_SHIFT 0 959 #define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG (0x1<<1) /* BitField agg_vars2Various aggregative variables */ 960 #define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG_SHIFT 1 961 #define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF (0x3<<2) /* BitField agg_vars2Various aggregative variables */ 962 #define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF_SHIFT 2 963 #define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF (0x3<<4) /* BitField agg_vars2Various aggregative variables */ 964 #define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF_SHIFT 4 965 #define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF (0x3<<6) /* BitField agg_vars2Various aggregative variables */ 966 #define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF_SHIFT 6 967 #define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF (0x3<<8) /* BitField agg_vars2Various aggregative variables */ 968 #define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF_SHIFT 8 969 #define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG (0x1<<10) /* BitField agg_vars2Various aggregative variables */ 970 #define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG_SHIFT 10 971 #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN (0x1<<11) /* BitField agg_vars2Various aggregative variables */ 972 #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN_SHIFT 11 973 #define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN (0x1<<12) /* BitField agg_vars2Various aggregative variables */ 974 #define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN_SHIFT 12 975 #define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN (0x1<<13) /* BitField agg_vars2Various aggregative variables */ 976 #define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN_SHIFT 13 977 #define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN (0x1<<14) /* BitField agg_vars2Various aggregative variables */ 978 #define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN_SHIFT 14 979 #define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN (0x1<<15) /* BitField agg_vars2Various aggregative variables */ 980 #define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN_SHIFT 15 981#elif defined(__LITTLE_ENDIAN) 982 u16_t agg_vars2; 983 #define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG (0x1<<0) /* BitField agg_vars2Various aggregative variables */ 984 #define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG_SHIFT 0 985 #define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG (0x1<<1) /* BitField agg_vars2Various aggregative variables */ 986 #define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG_SHIFT 1 987 #define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF (0x3<<2) /* BitField agg_vars2Various aggregative variables */ 988 #define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF_SHIFT 2 989 #define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF (0x3<<4) /* BitField agg_vars2Various aggregative variables */ 990 #define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF_SHIFT 4 991 #define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF (0x3<<6) /* BitField agg_vars2Various aggregative variables */ 992 #define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF_SHIFT 6 993 #define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF (0x3<<8) /* BitField agg_vars2Various aggregative variables */ 994 #define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF_SHIFT 8 995 #define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG (0x1<<10) /* BitField agg_vars2Various aggregative variables */ 996 #define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG_SHIFT 10 997 #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN (0x1<<11) /* BitField agg_vars2Various aggregative variables */ 998 #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN_SHIFT 11 999 #define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN (0x1<<12) /* BitField agg_vars2Various aggregative variables */ 1000 #define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN_SHIFT 12 1001 #define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN (0x1<<13) /* BitField agg_vars2Various aggregative variables */ 1002 #define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN_SHIFT 13 1003 #define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN (0x1<<14) /* BitField agg_vars2Various aggregative variables */ 1004 #define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN_SHIFT 14 1005 #define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN (0x1<<15) /* BitField agg_vars2Various aggregative variables */ 1006 #define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN_SHIFT 15 1007 u16_t __agg_val4; 1008#endif 1009 struct tstorm_fcoe_extra_ag_context_section __extra_section /* Extra context section */; 1010}; 1011 1012 1013 1014/* 1015 * The iscsi aggregative context section of Tstorm 1016 */ 1017struct tstorm_iscsi_tcp_ag_context_section 1018{ 1019 u32_t __agg_val1 /* aggregated value 1 */; 1020#if defined(__BIG_ENDIAN) 1021 u8_t __tcp_agg_vars2 /* Various aggregative variables*/; 1022 u8_t __agg_val3 /* aggregated value 3 */; 1023 u16_t __agg_val2 /* aggregated value 2 */; 1024#elif defined(__LITTLE_ENDIAN) 1025 u16_t __agg_val2 /* aggregated value 2 */; 1026 u8_t __agg_val3 /* aggregated value 3 */; 1027 u8_t __tcp_agg_vars2 /* Various aggregative variables*/; 1028#endif 1029#if defined(__BIG_ENDIAN) 1030 u16_t __agg_val5; 1031 u8_t __agg_val6; 1032 u8_t __tcp_agg_vars3 /* Various aggregative variables*/; 1033#elif defined(__LITTLE_ENDIAN) 1034 u8_t __tcp_agg_vars3 /* Various aggregative variables*/; 1035 u8_t __agg_val6; 1036 u16_t __agg_val5; 1037#endif 1038 u32_t snd_nxt /* Next sequence number to transmit, given by Tx */; 1039 u32_t rtt_seq /* Rtt recording sequence number */; 1040 u32_t rtt_time /* Rtt recording real time clock */; 1041 u32_t wnd_right_edge_local; 1042 u32_t wnd_right_edge /* The right edge of the receive window. Updated by the XSTORM when a segment with ACK is transmitted */; 1043 u32_t tcp_agg_vars1; 1044 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<0) /* BitField tcp_agg_vars1Various aggregative variables Sticky bit that is set when FIN is sent and remains set */ 1045 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 0 1046 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG (0x1<<1) /* BitField tcp_agg_vars1Various aggregative variables The Tx indicates that it sent a FIN packet */ 1047 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG_SHIFT 1 1048 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_WND_UPD_CF (0x3<<2) /* BitField tcp_agg_vars1Various aggregative variables Counter flag to indicate a window update */ 1049 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_SHIFT 2 1050 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF (0x3<<4) /* BitField tcp_agg_vars1Various aggregative variables Indicates that a timeout expired */ 1051 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_SHIFT 4 1052 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_EN (0x1<<6) /* BitField tcp_agg_vars1Various aggregative variables Enable the decision rule that considers the WndUpd counter flag */ 1053 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_EN_SHIFT 6 1054 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_EN (0x1<<7) /* BitField tcp_agg_vars1Various aggregative variables Enable the decision rule that considers the Timeout counter flag */ 1055 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_EN_SHIFT 7 1056 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN (0x1<<8) /* BitField tcp_agg_vars1Various aggregative variables If 1 then the Rxmit sequence decision rule is enabled */ 1057 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN_SHIFT 8 1058 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_SND_NXT_EN (0x1<<9) /* BitField tcp_agg_vars1Various aggregative variables If set then the SendNext decision rule is enabled */ 1059 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_SND_NXT_EN_SHIFT 9 1060 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<10) /* BitField tcp_agg_vars1Various aggregative variables */ 1061 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 10 1062 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_AUX2_FLAG (0x1<<11) /* BitField tcp_agg_vars1Various aggregative variables */ 1063 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_AUX2_FLAG_SHIFT 11 1064 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_AUX1_CF_EN (0x1<<12) /* BitField tcp_agg_vars1Various aggregative variables */ 1065 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_AUX1_CF_EN_SHIFT 12 1066 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_AUX2_CF_EN (0x1<<13) /* BitField tcp_agg_vars1Various aggregative variables */ 1067 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_AUX2_CF_EN_SHIFT 13 1068 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_AUX1_CF (0x3<<14) /* BitField tcp_agg_vars1Various aggregative variables */ 1069 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_AUX1_CF_SHIFT 14 1070 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_AUX2_CF (0x3<<16) /* BitField tcp_agg_vars1Various aggregative variables */ 1071 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_AUX2_CF_SHIFT 16 1072 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_TX_BLOCKED (0x1<<18) /* BitField tcp_agg_vars1Various aggregative variables Indicates that Tx has more to send, but has not enough window to send it */ 1073 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_TX_BLOCKED_SHIFT 18 1074 #define __TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<19) /* BitField tcp_agg_vars1Various aggregative variables */ 1075 #define __TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 19 1076 #define __TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_AUX11_CF_EN (0x1<<20) /* BitField tcp_agg_vars1Various aggregative variables */ 1077 #define __TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_AUX11_CF_EN_SHIFT 20 1078 #define __TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_AUX12_CF_EN (0x1<<21) /* BitField tcp_agg_vars1Various aggregative variables */ 1079 #define __TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_AUX12_CF_EN_SHIFT 21 1080 #define __TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_RESERVED1 (0x3<<22) /* BitField tcp_agg_vars1Various aggregative variables */ 1081 #define __TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_RESERVED1_SHIFT 22 1082 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ (0xF<<24) /* BitField tcp_agg_vars1Various aggregative variables The sequence of the last fast retransmit or goto SS comand sent */ 1083 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ_SHIFT 24 1084 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ (0xF<<28) /* BitField tcp_agg_vars1Various aggregative variables The sequence of the last fast retransmit or Goto SS command performed by the XSTORM */ 1085 #define TSTORM_ISCSI_TCP_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ_SHIFT 28 1086 u32_t snd_max /* Maximum sequence number that was ever transmitted */; 1087 u32_t snd_una /* Last ACK sequence number sent by the Tx */; 1088 u32_t __reserved2; 1089}; 1090 1091/* 1092 * The iscsi aggregative context of Tstorm 1093 */ 1094struct tstorm_iscsi_ag_context 1095{ 1096#if defined(__BIG_ENDIAN) 1097 u16_t ulp_credit; 1098 u8_t agg_vars1; 1099 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 0 */ 1100 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 1101 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 1 */ 1102 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 1103 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 2 */ 1104 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2 1105 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 3 */ 1106 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3 1107 #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF (0x3<<4) /* BitField agg_vars1Various aggregative variables */ 1108 #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_SHIFT 4 1109 #define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG (0x1<<6) /* BitField agg_vars1Various aggregative variables */ 1110 #define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG_SHIFT 6 1111 #define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG (0x1<<7) /* BitField agg_vars1Various aggregative variables */ 1112 #define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG_SHIFT 7 1113 u8_t state /* The state of the connection */; 1114#elif defined(__LITTLE_ENDIAN) 1115 u8_t state /* The state of the connection */; 1116 u8_t agg_vars1; 1117 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 0 */ 1118 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 1119 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 1 */ 1120 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 1121 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 2 */ 1122 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2 1123 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 3 */ 1124 #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3 1125 #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF (0x3<<4) /* BitField agg_vars1Various aggregative variables */ 1126 #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_SHIFT 4 1127 #define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG (0x1<<6) /* BitField agg_vars1Various aggregative variables */ 1128 #define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG_SHIFT 6 1129 #define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG (0x1<<7) /* BitField agg_vars1Various aggregative variables */ 1130 #define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG_SHIFT 7 1131 u16_t ulp_credit; 1132#endif 1133#if defined(__BIG_ENDIAN) 1134 u16_t __agg_val4; 1135 u16_t agg_vars2; 1136 #define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG (0x1<<0) /* BitField agg_vars2Various aggregative variables */ 1137 #define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG_SHIFT 0 1138 #define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG (0x1<<1) /* BitField agg_vars2Various aggregative variables */ 1139 #define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG_SHIFT 1 1140 #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF (0x3<<2) /* BitField agg_vars2Various aggregative variables */ 1141 #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_SHIFT 2 1142 #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF (0x3<<4) /* BitField agg_vars2Various aggregative variables */ 1143 #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_SHIFT 4 1144 #define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF (0x3<<6) /* BitField agg_vars2Various aggregative variables */ 1145 #define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_SHIFT 6 1146 #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF (0x3<<8) /* BitField agg_vars2Various aggregative variables */ 1147 #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_SHIFT 8 1148 #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG (0x1<<10) /* BitField agg_vars2Various aggregative variables */ 1149 #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG_SHIFT 10 1150 #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<11) /* BitField agg_vars2Various aggregative variables */ 1151 #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 11 1152 #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN (0x1<<12) /* BitField agg_vars2Various aggregative variables */ 1153 #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN_SHIFT 12 1154 #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN (0x1<<13) /* BitField agg_vars2Various aggregative variables */ 1155 #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN_SHIFT 13 1156 #define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN (0x1<<14) /* BitField agg_vars2Various aggregative variables */ 1157 #define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN_SHIFT 14 1158 #define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN (0x1<<15) /* BitField agg_vars2Various aggregative variables */ 1159 #define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN_SHIFT 15 1160#elif defined(__LITTLE_ENDIAN) 1161 u16_t agg_vars2; 1162 #define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG (0x1<<0) /* BitField agg_vars2Various aggregative variables */ 1163 #define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG_SHIFT 0 1164 #define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG (0x1<<1) /* BitField agg_vars2Various aggregative variables */ 1165 #define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG_SHIFT 1 1166 #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF (0x3<<2) /* BitField agg_vars2Various aggregative variables */ 1167 #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_SHIFT 2 1168 #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF (0x3<<4) /* BitField agg_vars2Various aggregative variables */ 1169 #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_SHIFT 4 1170 #define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF (0x3<<6) /* BitField agg_vars2Various aggregative variables */ 1171 #define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_SHIFT 6 1172 #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF (0x3<<8) /* BitField agg_vars2Various aggregative variables */ 1173 #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_SHIFT 8 1174 #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG (0x1<<10) /* BitField agg_vars2Various aggregative variables */ 1175 #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG_SHIFT 10 1176 #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<11) /* BitField agg_vars2Various aggregative variables */ 1177 #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 11 1178 #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN (0x1<<12) /* BitField agg_vars2Various aggregative variables */ 1179 #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN_SHIFT 12 1180 #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN (0x1<<13) /* BitField agg_vars2Various aggregative variables */ 1181 #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN_SHIFT 13 1182 #define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN (0x1<<14) /* BitField agg_vars2Various aggregative variables */ 1183 #define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN_SHIFT 14 1184 #define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN (0x1<<15) /* BitField agg_vars2Various aggregative variables */ 1185 #define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN_SHIFT 15 1186 u16_t __agg_val4; 1187#endif 1188 struct tstorm_iscsi_tcp_ag_context_section tcp /* TCP context section, shared in TOE and iSCSI */; 1189}; 1190 1191 1192 1193/* 1194 * The tcp aggregative context section of Tstorm 1195 */ 1196struct tstorm_tcp_tcp_ag_context_section 1197{ 1198 u32_t __agg_val1 /* aggregated value 1 */; 1199#if defined(__BIG_ENDIAN) 1200 u8_t __tcp_agg_vars2 /* Various aggregative variables*/; 1201 u8_t __agg_val3 /* aggregated value 3 */; 1202 u16_t __agg_val2 /* aggregated value 2 */; 1203#elif defined(__LITTLE_ENDIAN) 1204 u16_t __agg_val2 /* aggregated value 2 */; 1205 u8_t __agg_val3 /* aggregated value 3 */; 1206 u8_t __tcp_agg_vars2 /* Various aggregative variables*/; 1207#endif 1208#if defined(__BIG_ENDIAN) 1209 u16_t __agg_val5; 1210 u8_t __agg_val6; 1211 u8_t __tcp_agg_vars3 /* Various aggregative variables*/; 1212#elif defined(__LITTLE_ENDIAN) 1213 u8_t __tcp_agg_vars3 /* Various aggregative variables*/; 1214 u8_t __agg_val6; 1215 u16_t __agg_val5; 1216#endif 1217 u32_t snd_nxt /* Next sequence number to transmit, given by Tx */; 1218 u32_t rtt_seq /* Rtt recording sequence number */; 1219 u32_t rtt_time /* Rtt recording real time clock */; 1220 u32_t __reserved66; 1221 u32_t wnd_right_edge /* The right edge of the receive window. Updated by the XSTORM when a segment with ACK is transmitted */; 1222 u32_t tcp_agg_vars1; 1223 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<0) /* BitField tcp_agg_vars1Various aggregative variables Sticky bit that is set when FIN is sent and remains set */ 1224 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 0 1225 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG (0x1<<1) /* BitField tcp_agg_vars1Various aggregative variables The Tx indicates that it sent a FIN packet */ 1226 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG_SHIFT 1 1227 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF (0x3<<2) /* BitField tcp_agg_vars1Various aggregative variables Counter flag to indicate a window update */ 1228 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_SHIFT 2 1229 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF (0x3<<4) /* BitField tcp_agg_vars1Various aggregative variables Indicates that a timeout expired */ 1230 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_SHIFT 4 1231 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_EN (0x1<<6) /* BitField tcp_agg_vars1Various aggregative variables Enable the decision rule that considers the WndUpd counter flag */ 1232 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_EN_SHIFT 6 1233 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_EN (0x1<<7) /* BitField tcp_agg_vars1Various aggregative variables Enable the decision rule that considers the Timeout counter flag */ 1234 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_EN_SHIFT 7 1235 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN (0x1<<8) /* BitField tcp_agg_vars1Various aggregative variables If 1 then the Rxmit sequence decision rule is enabled */ 1236 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN_SHIFT 8 1237 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_SND_NXT_EN (0x1<<9) /* BitField tcp_agg_vars1Various aggregative variables If set then the SendNext decision rule is enabled */ 1238 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_SND_NXT_EN_SHIFT 9 1239 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<10) /* BitField tcp_agg_vars1Various aggregative variables */ 1240 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 10 1241 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_FLAG (0x1<<11) /* BitField tcp_agg_vars1Various aggregative variables */ 1242 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_FLAG_SHIFT 11 1243 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_EN (0x1<<12) /* BitField tcp_agg_vars1Various aggregative variables */ 1244 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_EN_SHIFT 12 1245 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_EN (0x1<<13) /* BitField tcp_agg_vars1Various aggregative variables */ 1246 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_EN_SHIFT 13 1247 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF (0x3<<14) /* BitField tcp_agg_vars1Various aggregative variables */ 1248 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_SHIFT 14 1249 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF (0x3<<16) /* BitField tcp_agg_vars1Various aggregative variables */ 1250 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_SHIFT 16 1251 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_BLOCKED (0x1<<18) /* BitField tcp_agg_vars1Various aggregative variables Indicates that Tx has more to send, but has not enough window to send it */ 1252 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_BLOCKED_SHIFT 18 1253 #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<19) /* BitField tcp_agg_vars1Various aggregative variables */ 1254 #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 19 1255 #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_EN (0x1<<20) /* BitField tcp_agg_vars1Various aggregative variables */ 1256 #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_EN_SHIFT 20 1257 #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_EN (0x1<<21) /* BitField tcp_agg_vars1Various aggregative variables */ 1258 #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_EN_SHIFT 21 1259 #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED1 (0x3<<22) /* BitField tcp_agg_vars1Various aggregative variables */ 1260 #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED1_SHIFT 22 1261 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ (0xF<<24) /* BitField tcp_agg_vars1Various aggregative variables The sequence of the last fast retransmit or goto SS comand sent */ 1262 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ_SHIFT 24 1263 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ (0xF<<28) /* BitField tcp_agg_vars1Various aggregative variables The sequence of the last fast retransmit or Goto SS command performed by the XSTORM */ 1264 #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ_SHIFT 28 1265 u32_t snd_max /* Maximum sequence number that was ever transmitted */; 1266 u32_t snd_una /* Last ACK sequence number sent by the Tx */; 1267 u32_t __reserved2; 1268}; 1269 1270 1271/* 1272 * The toe aggregative context section of Tstorm 1273 */ 1274struct tstorm_toe_tcp_ag_context_section 1275{ 1276 u32_t __agg_val1 /* aggregated value 1 */; 1277#if defined(__BIG_ENDIAN) 1278 u8_t __tcp_agg_vars2 /* Various aggregative variables*/; 1279 u8_t __agg_val3 /* aggregated value 3 */; 1280 u16_t __agg_val2 /* aggregated value 2 */; 1281#elif defined(__LITTLE_ENDIAN) 1282 u16_t __agg_val2 /* aggregated value 2 */; 1283 u8_t __agg_val3 /* aggregated value 3 */; 1284 u8_t __tcp_agg_vars2 /* Various aggregative variables*/; 1285#endif 1286#if defined(__BIG_ENDIAN) 1287 u16_t __agg_val5; 1288 u8_t __agg_val6; 1289 u8_t __tcp_agg_vars3 /* Various aggregative variables*/; 1290#elif defined(__LITTLE_ENDIAN) 1291 u8_t __tcp_agg_vars3 /* Various aggregative variables*/; 1292 u8_t __agg_val6; 1293 u16_t __agg_val5; 1294#endif 1295 u32_t snd_nxt /* Next sequence number to transmit, given by Tx */; 1296 u32_t rtt_seq /* Rtt recording sequence number */; 1297 u32_t rtt_time /* Rtt recording real time clock */; 1298 u32_t __reserved66; 1299 u32_t wnd_right_edge /* The right edge of the receive window. Updated by the XSTORM when a segment with ACK is transmitted */; 1300 u32_t tcp_agg_vars1; 1301 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<0) /* BitField tcp_agg_vars1Various aggregative variables Sticky bit that is set when FIN is sent and remains set */ 1302 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 0 1303 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG (0x1<<1) /* BitField tcp_agg_vars1Various aggregative variables The Tx indicates that it sent a FIN packet */ 1304 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG_SHIFT 1 1305 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_RESERVED52 (0x3<<2) /* BitField tcp_agg_vars1Various aggregative variables Counter flag to indicate a window update */ 1306 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_RESERVED52_SHIFT 2 1307 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF (0x3<<4) /* BitField tcp_agg_vars1Various aggregative variables Indicates that a timeout expired */ 1308 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_SHIFT 4 1309 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_RESERVED_WND_UPD_CF_EN (0x1<<6) /* BitField tcp_agg_vars1Various aggregative variables Enable the decision rule that considers the WndUpd counter flag */ 1310 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_RESERVED_WND_UPD_CF_EN_SHIFT 6 1311 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_EN (0x1<<7) /* BitField tcp_agg_vars1Various aggregative variables Enable the decision rule that considers the Timeout counter flag */ 1312 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_EN_SHIFT 7 1313 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN (0x1<<8) /* BitField tcp_agg_vars1Various aggregative variables If 1 then the Rxmit sequence decision rule is enabled */ 1314 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN_SHIFT 8 1315 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_SND_NXT_EN (0x1<<9) /* BitField tcp_agg_vars1Various aggregative variables If set then the SendNext decision rule is enabled */ 1316 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_SND_NXT_EN_SHIFT 9 1317 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_NEWRTTSAMPLE (0x1<<10) /* BitField tcp_agg_vars1Various aggregative variables */ 1318 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_NEWRTTSAMPLE_SHIFT 10 1319 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_RESERVED55 (0x1<<11) /* BitField tcp_agg_vars1Various aggregative variables */ 1320 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_RESERVED55_SHIFT 11 1321 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_RESERVED_AUX1_CF_EN (0x1<<12) /* BitField tcp_agg_vars1Various aggregative variables */ 1322 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_RESERVED_AUX1_CF_EN_SHIFT 12 1323 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_RESERVED_AUX2_CF_EN (0x1<<13) /* BitField tcp_agg_vars1Various aggregative variables */ 1324 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_RESERVED_AUX2_CF_EN_SHIFT 13 1325 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_RESERVED56 (0x3<<14) /* BitField tcp_agg_vars1Various aggregative variables */ 1326 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_RESERVED56_SHIFT 14 1327 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_RESERVED57 (0x3<<16) /* BitField tcp_agg_vars1Various aggregative variables */ 1328 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_RESERVED57_SHIFT 16 1329 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_TX_BLOCKED (0x1<<18) /* BitField tcp_agg_vars1Various aggregative variables Indicates that Tx has more to send, but has not enough window to send it */ 1330 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_TX_BLOCKED_SHIFT 18 1331 #define __TSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<19) /* BitField tcp_agg_vars1Various aggregative variables */ 1332 #define __TSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 19 1333 #define __TSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX11_CF_EN (0x1<<20) /* BitField tcp_agg_vars1Various aggregative variables */ 1334 #define __TSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX11_CF_EN_SHIFT 20 1335 #define __TSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX12_CF_EN (0x1<<21) /* BitField tcp_agg_vars1Various aggregative variables */ 1336 #define __TSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX12_CF_EN_SHIFT 21 1337 #define __TSTORM_TOE_TCP_AG_CONTEXT_SECTION_RESERVED1 (0x3<<22) /* BitField tcp_agg_vars1Various aggregative variables */ 1338 #define __TSTORM_TOE_TCP_AG_CONTEXT_SECTION_RESERVED1_SHIFT 22 1339 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ (0xF<<24) /* BitField tcp_agg_vars1Various aggregative variables The sequence of the last fast retransmit or goto SS comand sent */ 1340 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ_SHIFT 24 1341 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ (0xF<<28) /* BitField tcp_agg_vars1Various aggregative variables The sequence of the last fast retransmit or Goto SS command performed by the XSTORM */ 1342 #define TSTORM_TOE_TCP_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ_SHIFT 28 1343 u32_t snd_max /* Maximum sequence number that was ever transmitted */; 1344 u32_t snd_una /* Last ACK sequence number sent by the Tx */; 1345 u32_t __reserved2; 1346}; 1347 1348/* 1349 * The toe aggregative context of Tstorm 1350 */ 1351struct tstorm_toe_ag_context 1352{ 1353#if defined(__BIG_ENDIAN) 1354 u16_t reserved54; 1355 u8_t agg_vars1; 1356 #define TSTORM_TOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 0 */ 1357 #define TSTORM_TOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 1358 #define TSTORM_TOE_AG_CONTEXT_RESERVED51 (0x1<<1) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 1 */ 1359 #define TSTORM_TOE_AG_CONTEXT_RESERVED51_SHIFT 1 1360 #define TSTORM_TOE_AG_CONTEXT_RESERVED52 (0x1<<2) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 2 */ 1361 #define TSTORM_TOE_AG_CONTEXT_RESERVED52_SHIFT 2 1362 #define TSTORM_TOE_AG_CONTEXT_RESERVED53 (0x1<<3) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 3 */ 1363 #define TSTORM_TOE_AG_CONTEXT_RESERVED53_SHIFT 3 1364 #define __TSTORM_TOE_AG_CONTEXT_QUEUES_FLUSH_Q0_CF (0x3<<4) /* BitField agg_vars1Various aggregative variables */ 1365 #define __TSTORM_TOE_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_SHIFT 4 1366 #define __TSTORM_TOE_AG_CONTEXT_AUX3_FLAG (0x1<<6) /* BitField agg_vars1Various aggregative variables */ 1367 #define __TSTORM_TOE_AG_CONTEXT_AUX3_FLAG_SHIFT 6 1368 #define __TSTORM_TOE_AG_CONTEXT_AUX4_FLAG (0x1<<7) /* BitField agg_vars1Various aggregative variables */ 1369 #define __TSTORM_TOE_AG_CONTEXT_AUX4_FLAG_SHIFT 7 1370 u8_t __state /* The state of the connection */; 1371#elif defined(__LITTLE_ENDIAN) 1372 u8_t __state /* The state of the connection */; 1373 u8_t agg_vars1; 1374 #define TSTORM_TOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 0 */ 1375 #define TSTORM_TOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 1376 #define TSTORM_TOE_AG_CONTEXT_RESERVED51 (0x1<<1) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 1 */ 1377 #define TSTORM_TOE_AG_CONTEXT_RESERVED51_SHIFT 1 1378 #define TSTORM_TOE_AG_CONTEXT_RESERVED52 (0x1<<2) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 2 */ 1379 #define TSTORM_TOE_AG_CONTEXT_RESERVED52_SHIFT 2 1380 #define TSTORM_TOE_AG_CONTEXT_RESERVED53 (0x1<<3) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 3 */ 1381 #define TSTORM_TOE_AG_CONTEXT_RESERVED53_SHIFT 3 1382 #define __TSTORM_TOE_AG_CONTEXT_QUEUES_FLUSH_Q0_CF (0x3<<4) /* BitField agg_vars1Various aggregative variables */ 1383 #define __TSTORM_TOE_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_SHIFT 4 1384 #define __TSTORM_TOE_AG_CONTEXT_AUX3_FLAG (0x1<<6) /* BitField agg_vars1Various aggregative variables */ 1385 #define __TSTORM_TOE_AG_CONTEXT_AUX3_FLAG_SHIFT 6 1386 #define __TSTORM_TOE_AG_CONTEXT_AUX4_FLAG (0x1<<7) /* BitField agg_vars1Various aggregative variables */ 1387 #define __TSTORM_TOE_AG_CONTEXT_AUX4_FLAG_SHIFT 7 1388 u16_t reserved54; 1389#endif 1390#if defined(__BIG_ENDIAN) 1391 u16_t __agg_val4; 1392 u16_t agg_vars2; 1393 #define __TSTORM_TOE_AG_CONTEXT_AUX5_FLAG (0x1<<0) /* BitField agg_vars2Various aggregative variables */ 1394 #define __TSTORM_TOE_AG_CONTEXT_AUX5_FLAG_SHIFT 0 1395 #define __TSTORM_TOE_AG_CONTEXT_AUX6_FLAG (0x1<<1) /* BitField agg_vars2Various aggregative variables */ 1396 #define __TSTORM_TOE_AG_CONTEXT_AUX6_FLAG_SHIFT 1 1397 #define __TSTORM_TOE_AG_CONTEXT_AUX4_CF (0x3<<2) /* BitField agg_vars2Various aggregative variables */ 1398 #define __TSTORM_TOE_AG_CONTEXT_AUX4_CF_SHIFT 2 1399 #define __TSTORM_TOE_AG_CONTEXT_AUX5_CF (0x3<<4) /* BitField agg_vars2Various aggregative variables */ 1400 #define __TSTORM_TOE_AG_CONTEXT_AUX5_CF_SHIFT 4 1401 #define __TSTORM_TOE_AG_CONTEXT_AUX6_CF (0x3<<6) /* BitField agg_vars2Various aggregative variables */ 1402 #define __TSTORM_TOE_AG_CONTEXT_AUX6_CF_SHIFT 6 1403 #define __TSTORM_TOE_AG_CONTEXT_AUX7_CF (0x3<<8) /* BitField agg_vars2Various aggregative variables */ 1404 #define __TSTORM_TOE_AG_CONTEXT_AUX7_CF_SHIFT 8 1405 #define __TSTORM_TOE_AG_CONTEXT_AUX7_FLAG (0x1<<10) /* BitField agg_vars2Various aggregative variables */ 1406 #define __TSTORM_TOE_AG_CONTEXT_AUX7_FLAG_SHIFT 10 1407 #define __TSTORM_TOE_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<11) /* BitField agg_vars2Various aggregative variables */ 1408 #define __TSTORM_TOE_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 11 1409 #define TSTORM_TOE_AG_CONTEXT_RESERVED_AUX4_CF_EN (0x1<<12) /* BitField agg_vars2Various aggregative variables */ 1410 #define TSTORM_TOE_AG_CONTEXT_RESERVED_AUX4_CF_EN_SHIFT 12 1411 #define TSTORM_TOE_AG_CONTEXT_RESERVED_AUX5_CF_EN (0x1<<13) /* BitField agg_vars2Various aggregative variables */ 1412 #define TSTORM_TOE_AG_CONTEXT_RESERVED_AUX5_CF_EN_SHIFT 13 1413 #define TSTORM_TOE_AG_CONTEXT_RESERVED_AUX6_CF_EN (0x1<<14) /* BitField agg_vars2Various aggregative variables */ 1414 #define TSTORM_TOE_AG_CONTEXT_RESERVED_AUX6_CF_EN_SHIFT 14 1415 #define TSTORM_TOE_AG_CONTEXT_RESERVED_AUX7_CF_EN (0x1<<15) /* BitField agg_vars2Various aggregative variables */ 1416 #define TSTORM_TOE_AG_CONTEXT_RESERVED_AUX7_CF_EN_SHIFT 15 1417#elif defined(__LITTLE_ENDIAN) 1418 u16_t agg_vars2; 1419 #define __TSTORM_TOE_AG_CONTEXT_AUX5_FLAG (0x1<<0) /* BitField agg_vars2Various aggregative variables */ 1420 #define __TSTORM_TOE_AG_CONTEXT_AUX5_FLAG_SHIFT 0 1421 #define __TSTORM_TOE_AG_CONTEXT_AUX6_FLAG (0x1<<1) /* BitField agg_vars2Various aggregative variables */ 1422 #define __TSTORM_TOE_AG_CONTEXT_AUX6_FLAG_SHIFT 1 1423 #define __TSTORM_TOE_AG_CONTEXT_AUX4_CF (0x3<<2) /* BitField agg_vars2Various aggregative variables */ 1424 #define __TSTORM_TOE_AG_CONTEXT_AUX4_CF_SHIFT 2 1425 #define __TSTORM_TOE_AG_CONTEXT_AUX5_CF (0x3<<4) /* BitField agg_vars2Various aggregative variables */ 1426 #define __TSTORM_TOE_AG_CONTEXT_AUX5_CF_SHIFT 4 1427 #define __TSTORM_TOE_AG_CONTEXT_AUX6_CF (0x3<<6) /* BitField agg_vars2Various aggregative variables */ 1428 #define __TSTORM_TOE_AG_CONTEXT_AUX6_CF_SHIFT 6 1429 #define __TSTORM_TOE_AG_CONTEXT_AUX7_CF (0x3<<8) /* BitField agg_vars2Various aggregative variables */ 1430 #define __TSTORM_TOE_AG_CONTEXT_AUX7_CF_SHIFT 8 1431 #define __TSTORM_TOE_AG_CONTEXT_AUX7_FLAG (0x1<<10) /* BitField agg_vars2Various aggregative variables */ 1432 #define __TSTORM_TOE_AG_CONTEXT_AUX7_FLAG_SHIFT 10 1433 #define __TSTORM_TOE_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<11) /* BitField agg_vars2Various aggregative variables */ 1434 #define __TSTORM_TOE_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 11 1435 #define TSTORM_TOE_AG_CONTEXT_RESERVED_AUX4_CF_EN (0x1<<12) /* BitField agg_vars2Various aggregative variables */ 1436 #define TSTORM_TOE_AG_CONTEXT_RESERVED_AUX4_CF_EN_SHIFT 12 1437 #define TSTORM_TOE_AG_CONTEXT_RESERVED_AUX5_CF_EN (0x1<<13) /* BitField agg_vars2Various aggregative variables */ 1438 #define TSTORM_TOE_AG_CONTEXT_RESERVED_AUX5_CF_EN_SHIFT 13 1439 #define TSTORM_TOE_AG_CONTEXT_RESERVED_AUX6_CF_EN (0x1<<14) /* BitField agg_vars2Various aggregative variables */ 1440 #define TSTORM_TOE_AG_CONTEXT_RESERVED_AUX6_CF_EN_SHIFT 14 1441 #define TSTORM_TOE_AG_CONTEXT_RESERVED_AUX7_CF_EN (0x1<<15) /* BitField agg_vars2Various aggregative variables */ 1442 #define TSTORM_TOE_AG_CONTEXT_RESERVED_AUX7_CF_EN_SHIFT 15 1443 u16_t __agg_val4; 1444#endif 1445 struct tstorm_toe_tcp_ag_context_section tcp /* TCP context section, shared in TOE and iSCSI */; 1446}; 1447 1448 1449 1450/* 1451 * The eth aggregative context of Ustorm 1452 */ 1453struct ustorm_eth_ag_context 1454{ 1455 u32_t __reserved0; 1456#if defined(__BIG_ENDIAN) 1457 u8_t cdu_usage /* Will be used by the CDU for validation of the CID/connection type on doorbells. */; 1458 u8_t __reserved2; 1459 u16_t __reserved1; 1460#elif defined(__LITTLE_ENDIAN) 1461 u16_t __reserved1; 1462 u8_t __reserved2; 1463 u8_t cdu_usage /* Will be used by the CDU for validation of the CID/connection type on doorbells. */; 1464#endif 1465 u32_t __reserved3[6]; 1466}; 1467 1468 1469/* 1470 * The fcoe aggregative context of Ustorm 1471 */ 1472struct ustorm_fcoe_ag_context 1473{ 1474#if defined(__BIG_ENDIAN) 1475 u8_t __aux_counter_flags /* auxiliary counter flags*/; 1476 u8_t agg_vars2; 1477 #define USTORM_FCOE_AG_CONTEXT_TX_CF (0x3<<0) /* BitField agg_vars2various aggregation variables Set when a message was received from the Tx STORM. For future use. */ 1478 #define USTORM_FCOE_AG_CONTEXT_TX_CF_SHIFT 0 1479 #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF (0x3<<2) /* BitField agg_vars2various aggregation variables Set when a message was received from the Timer. */ 1480 #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_SHIFT 2 1481 #define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4) /* BitField agg_vars2various aggregation variables 0-NOP,1-EQ,2-NEQ,3-GT_CYC,4-GT_ABS,5-LT_CYC,6-LT_ABS */ 1482 #define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4 1483 #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7) /* BitField agg_vars2various aggregation variables Used to mask the decision rule of AggVal2. Used in iSCSI. Should be 0 in all other protocols */ 1484 #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7 1485 u8_t agg_vars1; 1486 #define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) /* BitField agg_vars1various aggregation variables The connection is currently registered to the QM with queue index 0 */ 1487 #define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 1488 #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) /* BitField agg_vars1various aggregation variables The connection is currently registered to the QM with queue index 1 */ 1489 #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 1490 #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2) /* BitField agg_vars1various aggregation variables The connection is currently registered to the QM with queue index 2 */ 1491 #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2 1492 #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3) /* BitField agg_vars1various aggregation variables The connection is currently registered to the QM with queue index 3 */ 1493 #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3 1494 #define USTORM_FCOE_AG_CONTEXT_INV_CF (0x3<<4) /* BitField agg_vars1various aggregation variables Indicates a valid invalidate request. Set by the CMP STORM. */ 1495 #define USTORM_FCOE_AG_CONTEXT_INV_CF_SHIFT 4 1496 #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF (0x3<<6) /* BitField agg_vars1various aggregation variables Set when a message was received from the CMP STORM. For future use. */ 1497 #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_SHIFT 6 1498 u8_t state /* The state of the connection */; 1499#elif defined(__LITTLE_ENDIAN) 1500 u8_t state /* The state of the connection */; 1501 u8_t agg_vars1; 1502 #define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) /* BitField agg_vars1various aggregation variables The connection is currently registered to the QM with queue index 0 */ 1503 #define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 1504 #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) /* BitField agg_vars1various aggregation variables The connection is currently registered to the QM with queue index 1 */ 1505 #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 1506 #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2) /* BitField agg_vars1various aggregation variables The connection is currently registered to the QM with queue index 2 */ 1507 #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2 1508 #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3) /* BitField agg_vars1various aggregation variables The connection is currently registered to the QM with queue index 3 */ 1509 #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3 1510 #define USTORM_FCOE_AG_CONTEXT_INV_CF (0x3<<4) /* BitField agg_vars1various aggregation variables Indicates a valid invalidate request. Set by the CMP STORM. */ 1511 #define USTORM_FCOE_AG_CONTEXT_INV_CF_SHIFT 4 1512 #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF (0x3<<6) /* BitField agg_vars1various aggregation variables Set when a message was received from the CMP STORM. For future use. */ 1513 #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_SHIFT 6 1514 u8_t agg_vars2; 1515 #define USTORM_FCOE_AG_CONTEXT_TX_CF (0x3<<0) /* BitField agg_vars2various aggregation variables Set when a message was received from the Tx STORM. For future use. */ 1516 #define USTORM_FCOE_AG_CONTEXT_TX_CF_SHIFT 0 1517 #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF (0x3<<2) /* BitField agg_vars2various aggregation variables Set when a message was received from the Timer. */ 1518 #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_SHIFT 2 1519 #define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4) /* BitField agg_vars2various aggregation variables 0-NOP,1-EQ,2-NEQ,3-GT_CYC,4-GT_ABS,5-LT_CYC,6-LT_ABS */ 1520 #define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4 1521 #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7) /* BitField agg_vars2various aggregation variables Used to mask the decision rule of AggVal2. Used in iSCSI. Should be 0 in all other protocols */ 1522 #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7 1523 u8_t __aux_counter_flags /* auxiliary counter flags*/; 1524#endif 1525#if defined(__BIG_ENDIAN) 1526 u8_t cdu_usage /* Will be used by the CDU for validation of the CID/connection type on doorbells. */; 1527 u8_t agg_misc2; 1528 u16_t pbf_tx_seq_ack /* Sequence number of the last sequence transmitted by PBF. */; 1529#elif defined(__LITTLE_ENDIAN) 1530 u16_t pbf_tx_seq_ack /* Sequence number of the last sequence transmitted by PBF. */; 1531 u8_t agg_misc2; 1532 u8_t cdu_usage /* Will be used by the CDU for validation of the CID/connection type on doorbells. */; 1533#endif 1534 u32_t agg_misc4; 1535#if defined(__BIG_ENDIAN) 1536 u8_t agg_val3_th; 1537 u8_t agg_val3; 1538 u16_t agg_misc3; 1539#elif defined(__LITTLE_ENDIAN) 1540 u16_t agg_misc3; 1541 u8_t agg_val3; 1542 u8_t agg_val3_th; 1543#endif 1544 u32_t expired_task_id /* Timer expiration task id */; 1545 u32_t agg_misc4_th; 1546#if defined(__BIG_ENDIAN) 1547 u16_t cq_prod /* CQ producer updated by FW */; 1548 u16_t cq_cons /* CQ consumer updated by driver via doorbell */; 1549#elif defined(__LITTLE_ENDIAN) 1550 u16_t cq_cons /* CQ consumer updated by driver via doorbell */; 1551 u16_t cq_prod /* CQ producer updated by FW */; 1552#endif 1553#if defined(__BIG_ENDIAN) 1554 u16_t __reserved2; 1555 u8_t decision_rules; 1556 #define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE (0x7<<0) /* BitField decision_rulesVarious decision rules */ 1557 #define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE_SHIFT 0 1558 #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3) /* BitField decision_rulesVarious decision rules */ 1559 #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3 1560 #define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG (0x1<<6) /* BitField decision_rulesVarious decision rules CQ negative arm indication updated via doorbell */ 1561 #define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG_SHIFT 6 1562 #define __USTORM_FCOE_AG_CONTEXT_RESERVED1 (0x1<<7) /* BitField decision_rulesVarious decision rules */ 1563 #define __USTORM_FCOE_AG_CONTEXT_RESERVED1_SHIFT 7 1564 u8_t decision_rule_enable_bits; 1565 #define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN (0x1<<0) /* BitField decision_rule_enable_bitsEnable bits for various decision rules */ 1566 #define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN_SHIFT 0 1567 #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1) /* BitField decision_rule_enable_bitsEnable bits for various decision rules */ 1568 #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1 1569 #define USTORM_FCOE_AG_CONTEXT_TX_CF_EN (0x1<<2) /* BitField decision_rule_enable_bitsEnable bits for various decision rules */ 1570 #define USTORM_FCOE_AG_CONTEXT_TX_CF_EN_SHIFT 2 1571 #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN (0x1<<3) /* BitField decision_rule_enable_bitsEnable bits for various decision rules */ 1572 #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN_SHIFT 3 1573 #define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN (0x1<<4) /* BitField decision_rule_enable_bitsEnable bits for various decision rules */ 1574 #define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN_SHIFT 4 1575 #define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN (0x1<<5) /* BitField decision_rule_enable_bitsEnable bits for various decision rules The flush queues counter flag en. */ 1576 #define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN_SHIFT 5 1577 #define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN (0x1<<6) /* BitField decision_rule_enable_bitsEnable bits for various decision rules */ 1578 #define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN_SHIFT 6 1579 #define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN (0x1<<7) /* BitField decision_rule_enable_bitsEnable bits for various decision rules */ 1580 #define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN_SHIFT 7 1581#elif defined(__LITTLE_ENDIAN) 1582 u8_t decision_rule_enable_bits; 1583 #define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN (0x1<<0) /* BitField decision_rule_enable_bitsEnable bits for various decision rules */ 1584 #define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN_SHIFT 0 1585 #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1) /* BitField decision_rule_enable_bitsEnable bits for various decision rules */ 1586 #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1 1587 #define USTORM_FCOE_AG_CONTEXT_TX_CF_EN (0x1<<2) /* BitField decision_rule_enable_bitsEnable bits for various decision rules */ 1588 #define USTORM_FCOE_AG_CONTEXT_TX_CF_EN_SHIFT 2 1589 #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN (0x1<<3) /* BitField decision_rule_enable_bitsEnable bits for various decision rules */ 1590 #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN_SHIFT 3 1591 #define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN (0x1<<4) /* BitField decision_rule_enable_bitsEnable bits for various decision rules */ 1592 #define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN_SHIFT 4 1593 #define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN (0x1<<5) /* BitField decision_rule_enable_bitsEnable bits for various decision rules The flush queues counter flag en. */ 1594 #define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN_SHIFT 5 1595 #define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN (0x1<<6) /* BitField decision_rule_enable_bitsEnable bits for various decision rules */ 1596 #define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN_SHIFT 6 1597 #define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN (0x1<<7) /* BitField decision_rule_enable_bitsEnable bits for various decision rules */ 1598 #define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN_SHIFT 7 1599 u8_t decision_rules; 1600 #define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE (0x7<<0) /* BitField decision_rulesVarious decision rules */ 1601 #define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE_SHIFT 0 1602 #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3) /* BitField decision_rulesVarious decision rules */ 1603 #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3 1604 #define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG (0x1<<6) /* BitField decision_rulesVarious decision rules CQ negative arm indication updated via doorbell */ 1605 #define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG_SHIFT 6 1606 #define __USTORM_FCOE_AG_CONTEXT_RESERVED1 (0x1<<7) /* BitField decision_rulesVarious decision rules */ 1607 #define __USTORM_FCOE_AG_CONTEXT_RESERVED1_SHIFT 7 1608 u16_t __reserved2; 1609#endif 1610}; 1611 1612 1613/* 1614 * The iscsi aggregative context of Ustorm 1615 */ 1616struct ustorm_iscsi_ag_context 1617{ 1618#if defined(__BIG_ENDIAN) 1619 u8_t __aux_counter_flags /* auxiliary counter flags*/; 1620 u8_t agg_vars2; 1621 #define USTORM_ISCSI_AG_CONTEXT_TX_CF (0x3<<0) /* BitField agg_vars2various aggregation variables Set when a message was received from the Tx STORM. For future use. */ 1622 #define USTORM_ISCSI_AG_CONTEXT_TX_CF_SHIFT 0 1623 #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF (0x3<<2) /* BitField agg_vars2various aggregation variables Set when a message was received from the Timer. */ 1624 #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_SHIFT 2 1625 #define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4) /* BitField agg_vars2various aggregation variables 0-NOP,1-EQ,2-NEQ,3-GT_CYC,4-GT_ABS,5-LT_CYC,6-LT_ABS */ 1626 #define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4 1627 #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7) /* BitField agg_vars2various aggregation variables Used to mask the decision rule of AggVal2. Used in iSCSI. Should be 0 in all other protocols */ 1628 #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7 1629 u8_t agg_vars1; 1630 #define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) /* BitField agg_vars1various aggregation variables The connection is currently registered to the QM with queue index 0 */ 1631 #define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 1632 #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) /* BitField agg_vars1various aggregation variables The connection is currently registered to the QM with queue index 1 */ 1633 #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 1634 #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2) /* BitField agg_vars1various aggregation variables The connection is currently registered to the QM with queue index 2 */ 1635 #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2 1636 #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3) /* BitField agg_vars1various aggregation variables The connection is currently registered to the QM with queue index 3 */ 1637 #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3 1638 #define USTORM_ISCSI_AG_CONTEXT_INV_CF (0x3<<4) /* BitField agg_vars1various aggregation variables Indicates a valid invalidate request. Set by the CMP STORM. */ 1639 #define USTORM_ISCSI_AG_CONTEXT_INV_CF_SHIFT 4 1640 #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF (0x3<<6) /* BitField agg_vars1various aggregation variables Set when a message was received from the CMP STORM. For future use. */ 1641 #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_SHIFT 6 1642 u8_t state /* The state of the connection */; 1643#elif defined(__LITTLE_ENDIAN) 1644 u8_t state /* The state of the connection */; 1645 u8_t agg_vars1; 1646 #define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) /* BitField agg_vars1various aggregation variables The connection is currently registered to the QM with queue index 0 */ 1647 #define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 1648 #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) /* BitField agg_vars1various aggregation variables The connection is currently registered to the QM with queue index 1 */ 1649 #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 1650 #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2) /* BitField agg_vars1various aggregation variables The connection is currently registered to the QM with queue index 2 */ 1651 #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2 1652 #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3) /* BitField agg_vars1various aggregation variables The connection is currently registered to the QM with queue index 3 */ 1653 #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3 1654 #define USTORM_ISCSI_AG_CONTEXT_INV_CF (0x3<<4) /* BitField agg_vars1various aggregation variables Indicates a valid invalidate request. Set by the CMP STORM. */ 1655 #define USTORM_ISCSI_AG_CONTEXT_INV_CF_SHIFT 4 1656 #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF (0x3<<6) /* BitField agg_vars1various aggregation variables Set when a message was received from the CMP STORM. For future use. */ 1657 #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_SHIFT 6 1658 u8_t agg_vars2; 1659 #define USTORM_ISCSI_AG_CONTEXT_TX_CF (0x3<<0) /* BitField agg_vars2various aggregation variables Set when a message was received from the Tx STORM. For future use. */ 1660 #define USTORM_ISCSI_AG_CONTEXT_TX_CF_SHIFT 0 1661 #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF (0x3<<2) /* BitField agg_vars2various aggregation variables Set when a message was received from the Timer. */ 1662 #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_SHIFT 2 1663 #define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4) /* BitField agg_vars2various aggregation variables 0-NOP,1-EQ,2-NEQ,3-GT_CYC,4-GT_ABS,5-LT_CYC,6-LT_ABS */ 1664 #define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4 1665 #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7) /* BitField agg_vars2various aggregation variables Used to mask the decision rule of AggVal2. Used in iSCSI. Should be 0 in all other protocols */ 1666 #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7 1667 u8_t __aux_counter_flags /* auxiliary counter flags*/; 1668#endif 1669#if defined(__BIG_ENDIAN) 1670 u8_t cdu_usage /* Will be used by the CDU for validation of the CID/connection type on doorbells. */; 1671 u8_t agg_misc2; 1672 u16_t __cq_local_comp_itt_val /* The local completion ITT to complete. Set by the CMP STORM RO for USTORM. */; 1673#elif defined(__LITTLE_ENDIAN) 1674 u16_t __cq_local_comp_itt_val /* The local completion ITT to complete. Set by the CMP STORM RO for USTORM. */; 1675 u8_t agg_misc2; 1676 u8_t cdu_usage /* Will be used by the CDU for validation of the CID/connection type on doorbells. */; 1677#endif 1678 u32_t agg_misc4; 1679#if defined(__BIG_ENDIAN) 1680 u8_t agg_val3_th; 1681 u8_t agg_val3; 1682 u16_t agg_misc3; 1683#elif defined(__LITTLE_ENDIAN) 1684 u16_t agg_misc3; 1685 u8_t agg_val3; 1686 u8_t agg_val3_th; 1687#endif 1688 u32_t agg_val1; 1689 u32_t agg_misc4_th; 1690#if defined(__BIG_ENDIAN) 1691 u16_t agg_val2_th; 1692 u16_t agg_val2; 1693#elif defined(__LITTLE_ENDIAN) 1694 u16_t agg_val2; 1695 u16_t agg_val2_th; 1696#endif 1697#if defined(__BIG_ENDIAN) 1698 u16_t __reserved2; 1699 u8_t decision_rules; 1700 #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE (0x7<<0) /* BitField decision_rulesVarious decision rules */ 1701 #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE_SHIFT 0 1702 #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3) /* BitField decision_rulesVarious decision rules */ 1703 #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3 1704 #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG (0x1<<6) /* BitField decision_rulesVarious decision rules */ 1705 #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG_SHIFT 6 1706 #define __USTORM_ISCSI_AG_CONTEXT_RESERVED1 (0x1<<7) /* BitField decision_rulesVarious decision rules */ 1707 #define __USTORM_ISCSI_AG_CONTEXT_RESERVED1_SHIFT 7 1708 u8_t decision_rule_enable_bits; 1709 #define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN (0x1<<0) /* BitField decision_rule_enable_bitsEnable bits for various decision rules */ 1710 #define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN_SHIFT 0 1711 #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1) /* BitField decision_rule_enable_bitsEnable bits for various decision rules */ 1712 #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1 1713 #define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN (0x1<<2) /* BitField decision_rule_enable_bitsEnable bits for various decision rules */ 1714 #define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN_SHIFT 2 1715 #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN (0x1<<3) /* BitField decision_rule_enable_bitsEnable bits for various decision rules */ 1716 #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN_SHIFT 3 1717 #define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN (0x1<<4) /* BitField decision_rule_enable_bitsEnable bits for various decision rules The local completion counter flag enable. Enabled by USTORM at the beginning. */ 1718 #define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN_SHIFT 4 1719 #define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<5) /* BitField decision_rule_enable_bitsEnable bits for various decision rules The flush queues counter flag en. */ 1720 #define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 5 1721 #define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<6) /* BitField decision_rule_enable_bitsEnable bits for various decision rules */ 1722 #define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 6 1723 #define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7) /* BitField decision_rule_enable_bitsEnable bits for various decision rules */ 1724 #define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7 1725#elif defined(__LITTLE_ENDIAN) 1726 u8_t decision_rule_enable_bits; 1727 #define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN (0x1<<0) /* BitField decision_rule_enable_bitsEnable bits for various decision rules */ 1728 #define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN_SHIFT 0 1729 #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1) /* BitField decision_rule_enable_bitsEnable bits for various decision rules */ 1730 #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1 1731 #define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN (0x1<<2) /* BitField decision_rule_enable_bitsEnable bits for various decision rules */ 1732 #define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN_SHIFT 2 1733 #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN (0x1<<3) /* BitField decision_rule_enable_bitsEnable bits for various decision rules */ 1734 #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN_SHIFT 3 1735 #define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN (0x1<<4) /* BitField decision_rule_enable_bitsEnable bits for various decision rules The local completion counter flag enable. Enabled by USTORM at the beginning. */ 1736 #define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN_SHIFT 4 1737 #define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<5) /* BitField decision_rule_enable_bitsEnable bits for various decision rules The flush queues counter flag en. */ 1738 #define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 5 1739 #define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<6) /* BitField decision_rule_enable_bitsEnable bits for various decision rules */ 1740 #define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 6 1741 #define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7) /* BitField decision_rule_enable_bitsEnable bits for various decision rules */ 1742 #define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7 1743 u8_t decision_rules; 1744 #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE (0x7<<0) /* BitField decision_rulesVarious decision rules */ 1745 #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE_SHIFT 0 1746 #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3) /* BitField decision_rulesVarious decision rules */ 1747 #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3 1748 #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG (0x1<<6) /* BitField decision_rulesVarious decision rules */ 1749 #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG_SHIFT 6 1750 #define __USTORM_ISCSI_AG_CONTEXT_RESERVED1 (0x1<<7) /* BitField decision_rulesVarious decision rules */ 1751 #define __USTORM_ISCSI_AG_CONTEXT_RESERVED1_SHIFT 7 1752 u16_t __reserved2; 1753#endif 1754}; 1755 1756 1757/* 1758 * The toe aggregative context of Ustorm 1759 */ 1760struct ustorm_toe_ag_context 1761{ 1762#if defined(__BIG_ENDIAN) 1763 u8_t __aux_counter_flags /* auxiliary counter flags*/; 1764 u8_t __agg_vars2 /* various aggregation variables*/; 1765 u8_t __agg_vars1 /* various aggregation variables*/; 1766 u8_t __state /* The state of the connection */; 1767#elif defined(__LITTLE_ENDIAN) 1768 u8_t __state /* The state of the connection */; 1769 u8_t __agg_vars1 /* various aggregation variables*/; 1770 u8_t __agg_vars2 /* various aggregation variables*/; 1771 u8_t __aux_counter_flags /* auxiliary counter flags*/; 1772#endif 1773#if defined(__BIG_ENDIAN) 1774 u8_t cdu_usage /* Will be used by the CDU for validation of the CID/connection type on doorbells. */; 1775 u8_t __agg_misc2; 1776 u16_t __agg_misc1; 1777#elif defined(__LITTLE_ENDIAN) 1778 u16_t __agg_misc1; 1779 u8_t __agg_misc2; 1780 u8_t cdu_usage /* Will be used by the CDU for validation of the CID/connection type on doorbells. */; 1781#endif 1782 u32_t __agg_misc4; 1783#if defined(__BIG_ENDIAN) 1784 u8_t __agg_val3_th; 1785 u8_t __agg_val3; 1786 u16_t __agg_misc3; 1787#elif defined(__LITTLE_ENDIAN) 1788 u16_t __agg_misc3; 1789 u8_t __agg_val3; 1790 u8_t __agg_val3_th; 1791#endif 1792 u32_t driver_doorbell_info_ptr_lo /* the host pointer that consist the struct of info updated */; 1793 u32_t driver_doorbell_info_ptr_hi /* the host pointer that consist the struct of info updated */; 1794#if defined(__BIG_ENDIAN) 1795 u16_t __agg_val2_th; 1796 u16_t rq_prod /* The RQ producer */; 1797#elif defined(__LITTLE_ENDIAN) 1798 u16_t rq_prod /* The RQ producer */; 1799 u16_t __agg_val2_th; 1800#endif 1801#if defined(__BIG_ENDIAN) 1802 u16_t __reserved2; 1803 u8_t decision_rules; 1804 #define __USTORM_TOE_AG_CONTEXT_AGG_VAL2_RULE (0x7<<0) /* BitField decision_rulesVarious decision rules */ 1805 #define __USTORM_TOE_AG_CONTEXT_AGG_VAL2_RULE_SHIFT 0 1806 #define __USTORM_TOE_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3) /* BitField decision_rulesVarious decision rules */ 1807 #define __USTORM_TOE_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3 1808 #define USTORM_TOE_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG (0x1<<6) /* BitField decision_rulesVarious decision rules */ 1809 #define USTORM_TOE_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG_SHIFT 6 1810 #define __USTORM_TOE_AG_CONTEXT_RESERVED1 (0x1<<7) /* BitField decision_rulesVarious decision rules */ 1811 #define __USTORM_TOE_AG_CONTEXT_RESERVED1_SHIFT 7 1812 u8_t __decision_rule_enable_bits /* Enable bits for various decision rules*/; 1813#elif defined(__LITTLE_ENDIAN) 1814 u8_t __decision_rule_enable_bits /* Enable bits for various decision rules*/; 1815 u8_t decision_rules; 1816 #define __USTORM_TOE_AG_CONTEXT_AGG_VAL2_RULE (0x7<<0) /* BitField decision_rulesVarious decision rules */ 1817 #define __USTORM_TOE_AG_CONTEXT_AGG_VAL2_RULE_SHIFT 0 1818 #define __USTORM_TOE_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3) /* BitField decision_rulesVarious decision rules */ 1819 #define __USTORM_TOE_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3 1820 #define USTORM_TOE_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG (0x1<<6) /* BitField decision_rulesVarious decision rules */ 1821 #define USTORM_TOE_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG_SHIFT 6 1822 #define __USTORM_TOE_AG_CONTEXT_RESERVED1 (0x1<<7) /* BitField decision_rulesVarious decision rules */ 1823 #define __USTORM_TOE_AG_CONTEXT_RESERVED1_SHIFT 7 1824 u16_t __reserved2; 1825#endif 1826}; 1827 1828 1829/* 1830 * The eth aggregative context of Xstorm 1831 */ 1832struct xstorm_eth_ag_context 1833{ 1834 u32_t reserved0; 1835#if defined(__BIG_ENDIAN) 1836 u8_t cdu_reserved /* Used by the CDU for validation and debugging */; 1837 u8_t reserved2; 1838 u16_t reserved1; 1839#elif defined(__LITTLE_ENDIAN) 1840 u16_t reserved1; 1841 u8_t reserved2; 1842 u8_t cdu_reserved /* Used by the CDU for validation and debugging */; 1843#endif 1844 u32_t reserved3[30]; 1845}; 1846 1847 1848/* 1849 * The fcoe aggregative context section of Xstorm 1850 */ 1851struct xstorm_fcoe_extra_ag_context_section 1852{ 1853#if defined(__BIG_ENDIAN) 1854 u8_t tcp_agg_vars1; 1855 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED51 (0x3<<0) /* BitField tcp_agg_vars1Various aggregative variables Counter flag used to rewind the DA timer */ 1856 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED51_SHIFT 0 1857 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED (0x3<<2) /* BitField tcp_agg_vars1Various aggregative variables auxiliary counter flag 2 */ 1858 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_SHIFT 2 1859 #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF (0x3<<4) /* BitField tcp_agg_vars1Various aggregative variables auxiliary counter flag 3 */ 1860 #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_SHIFT 4 1861 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN (0x1<<6) /* BitField tcp_agg_vars1Various aggregative variables If set enables sending clear commands as port of the DA decision rules */ 1862 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN_SHIFT 6 1863 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_DA_EXPIRATION_FLAG (0x1<<7) /* BitField tcp_agg_vars1Various aggregative variables Indicates that there was a delayed ack timer expiration */ 1864 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_DA_EXPIRATION_FLAG_SHIFT 7 1865 u8_t __reserved_da_cnt /* Counts the number of ACK requests received from the TSTORM with no registration to QM. */; 1866 u16_t __mtu /* MSS used for nagle algorithm and for transmission */; 1867#elif defined(__LITTLE_ENDIAN) 1868 u16_t __mtu /* MSS used for nagle algorithm and for transmission */; 1869 u8_t __reserved_da_cnt /* Counts the number of ACK requests received from the TSTORM with no registration to QM. */; 1870 u8_t tcp_agg_vars1; 1871 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED51 (0x3<<0) /* BitField tcp_agg_vars1Various aggregative variables Counter flag used to rewind the DA timer */ 1872 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED51_SHIFT 0 1873 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED (0x3<<2) /* BitField tcp_agg_vars1Various aggregative variables auxiliary counter flag 2 */ 1874 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_SHIFT 2 1875 #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF (0x3<<4) /* BitField tcp_agg_vars1Various aggregative variables auxiliary counter flag 3 */ 1876 #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_SHIFT 4 1877 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN (0x1<<6) /* BitField tcp_agg_vars1Various aggregative variables If set enables sending clear commands as port of the DA decision rules */ 1878 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN_SHIFT 6 1879 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_DA_EXPIRATION_FLAG (0x1<<7) /* BitField tcp_agg_vars1Various aggregative variables Indicates that there was a delayed ack timer expiration */ 1880 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_DA_EXPIRATION_FLAG_SHIFT 7 1881#endif 1882 u32_t snd_nxt /* The current sequence number to send */; 1883 u32_t __xfrqe_bd_addr_lo /* The Current transmission window in bytes */; 1884 u32_t __xfrqe_bd_addr_hi /* The current Send UNA sequence number */; 1885 u32_t __xfrqe_data1 /* The current local advertised window to FE. */; 1886#if defined(__BIG_ENDIAN) 1887 u8_t __agg_val8_th /* aggregated value 8 - threshold */; 1888 u8_t __tx_dest /* aggregated value 8 */; 1889 u16_t tcp_agg_vars2; 1890 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED57 (0x1<<0) /* BitField tcp_agg_vars2Various aggregative variables Used in TOE to indicate that FIN is sent on a BD to bypass the naggle rule */ 1891 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED57_SHIFT 0 1892 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED58 (0x1<<1) /* BitField tcp_agg_vars2Various aggregative variables Enables the tx window based decision */ 1893 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED58_SHIFT 1 1894 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED59 (0x1<<2) /* BitField tcp_agg_vars2Various aggregative variables The DA Timer status. If set indicates that the delayed ACK timer is active. */ 1895 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED59_SHIFT 2 1896 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX3_FLAG (0x1<<3) /* BitField tcp_agg_vars2Various aggregative variables auxiliary flag 3 */ 1897 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX3_FLAG_SHIFT 3 1898 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX4_FLAG (0x1<<4) /* BitField tcp_agg_vars2Various aggregative variables auxiliary flag 4 */ 1899 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX4_FLAG_SHIFT 4 1900 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED60 (0x1<<5) /* BitField tcp_agg_vars2Various aggregative variables Enable DA for the specific connection */ 1901 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED60_SHIFT 5 1902 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_ACK_TO_FE_UPDATED_EN (0x1<<6) /* BitField tcp_agg_vars2Various aggregative variables Enable decision rules based on aux2_cf */ 1903 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_ACK_TO_FE_UPDATED_EN_SHIFT 6 1904 #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN (0x1<<7) /* BitField tcp_agg_vars2Various aggregative variables Enable decision rules based on aux3_cf */ 1905 #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN_SHIFT 7 1906 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_TX_FIN_FLAG_EN (0x1<<8) /* BitField tcp_agg_vars2Various aggregative variables Enable Decision rule based on tx_fin_flag */ 1907 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_TX_FIN_FLAG_EN_SHIFT 8 1908 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9) /* BitField tcp_agg_vars2Various aggregative variables auxiliary flag 1 */ 1909 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 9 1910 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SET_RTO_CF (0x3<<10) /* BitField tcp_agg_vars2Various aggregative variables counter flag for setting the rto timer */ 1911 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10 1912 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12) /* BitField tcp_agg_vars2Various aggregative variables timestamp was updated counter flag */ 1913 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12 1914 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF (0x3<<14) /* BitField tcp_agg_vars2Various aggregative variables auxiliary counter flag 8 */ 1915 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_SHIFT 14 1916#elif defined(__LITTLE_ENDIAN) 1917 u16_t tcp_agg_vars2; 1918 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED57 (0x1<<0) /* BitField tcp_agg_vars2Various aggregative variables Used in TOE to indicate that FIN is sent on a BD to bypass the naggle rule */ 1919 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED57_SHIFT 0 1920 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED58 (0x1<<1) /* BitField tcp_agg_vars2Various aggregative variables Enables the tx window based decision */ 1921 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED58_SHIFT 1 1922 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED59 (0x1<<2) /* BitField tcp_agg_vars2Various aggregative variables The DA Timer status. If set indicates that the delayed ACK timer is active. */ 1923 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED59_SHIFT 2 1924 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX3_FLAG (0x1<<3) /* BitField tcp_agg_vars2Various aggregative variables auxiliary flag 3 */ 1925 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX3_FLAG_SHIFT 3 1926 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX4_FLAG (0x1<<4) /* BitField tcp_agg_vars2Various aggregative variables auxiliary flag 4 */ 1927 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX4_FLAG_SHIFT 4 1928 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED60 (0x1<<5) /* BitField tcp_agg_vars2Various aggregative variables Enable DA for the specific connection */ 1929 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED60_SHIFT 5 1930 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_ACK_TO_FE_UPDATED_EN (0x1<<6) /* BitField tcp_agg_vars2Various aggregative variables Enable decision rules based on aux2_cf */ 1931 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_ACK_TO_FE_UPDATED_EN_SHIFT 6 1932 #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN (0x1<<7) /* BitField tcp_agg_vars2Various aggregative variables Enable decision rules based on aux3_cf */ 1933 #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN_SHIFT 7 1934 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_TX_FIN_FLAG_EN (0x1<<8) /* BitField tcp_agg_vars2Various aggregative variables Enable Decision rule based on tx_fin_flag */ 1935 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_TX_FIN_FLAG_EN_SHIFT 8 1936 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9) /* BitField tcp_agg_vars2Various aggregative variables auxiliary flag 1 */ 1937 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 9 1938 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SET_RTO_CF (0x3<<10) /* BitField tcp_agg_vars2Various aggregative variables counter flag for setting the rto timer */ 1939 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10 1940 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12) /* BitField tcp_agg_vars2Various aggregative variables timestamp was updated counter flag */ 1941 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12 1942 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF (0x3<<14) /* BitField tcp_agg_vars2Various aggregative variables auxiliary counter flag 8 */ 1943 #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_SHIFT 14 1944 u8_t __tx_dest /* aggregated value 8 */; 1945 u8_t __agg_val8_th /* aggregated value 8 - threshold */; 1946#endif 1947 u32_t __sq_base_addr_lo /* The low page address which the SQ resides in host memory */; 1948 u32_t __sq_base_addr_hi /* The high page address which the SQ resides in host memory */; 1949 u32_t __xfrq_base_addr_lo /* The low page address which the XFRQ resides in host memory */; 1950 u32_t __xfrq_base_addr_hi /* The high page address which the XFRQ resides in host memory */; 1951#if defined(__BIG_ENDIAN) 1952 u16_t __xfrq_cons /* The XFRQ consumer */; 1953 u16_t __xfrq_prod /* The XFRQ producer, updated by Ustorm */; 1954#elif defined(__LITTLE_ENDIAN) 1955 u16_t __xfrq_prod /* The XFRQ producer, updated by Ustorm */; 1956 u16_t __xfrq_cons /* The XFRQ consumer */; 1957#endif 1958#if defined(__BIG_ENDIAN) 1959 u8_t __tcp_agg_vars5 /* Various aggregative variables*/; 1960 u8_t __tcp_agg_vars4 /* Various aggregative variables*/; 1961 u8_t __tcp_agg_vars3 /* Various aggregative variables*/; 1962 u8_t __reserved_force_pure_ack_cnt /* The number of force ACK commands arrived from the TSTORM */; 1963#elif defined(__LITTLE_ENDIAN) 1964 u8_t __reserved_force_pure_ack_cnt /* The number of force ACK commands arrived from the TSTORM */; 1965 u8_t __tcp_agg_vars3 /* Various aggregative variables*/; 1966 u8_t __tcp_agg_vars4 /* Various aggregative variables*/; 1967 u8_t __tcp_agg_vars5 /* Various aggregative variables*/; 1968#endif 1969 u32_t __tcp_agg_vars6 /* Various aggregative variables*/; 1970#if defined(__BIG_ENDIAN) 1971 u16_t __xfrqe_mng /* Misc aggregated variable 6 */; 1972 u16_t __tcp_agg_vars7 /* Various aggregative variables*/; 1973#elif defined(__LITTLE_ENDIAN) 1974 u16_t __tcp_agg_vars7 /* Various aggregative variables*/; 1975 u16_t __xfrqe_mng /* Misc aggregated variable 6 */; 1976#endif 1977 u32_t __xfrqe_data0 /* aggregated value 10 */; 1978 u32_t __agg_val10_th /* aggregated value 10 - threshold */; 1979#if defined(__BIG_ENDIAN) 1980 u16_t __reserved3; 1981 u8_t __reserved2; 1982 u8_t __da_only_cnt /* counts delayed acks and not window updates */; 1983#elif defined(__LITTLE_ENDIAN) 1984 u8_t __da_only_cnt /* counts delayed acks and not window updates */; 1985 u8_t __reserved2; 1986 u16_t __reserved3; 1987#endif 1988}; 1989 1990/* 1991 * The fcoe aggregative context of Xstorm 1992 */ 1993struct xstorm_fcoe_ag_context 1994{ 1995#if defined(__BIG_ENDIAN) 1996 u16_t agg_val1 /* aggregated value 1 */; 1997 u8_t agg_vars1; 1998 #define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 0 */ 1999 #define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 2000 #define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 1 */ 2001 #define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 2002 #define __XSTORM_FCOE_AG_CONTEXT_RESERVED51 (0x1<<2) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 2 */ 2003 #define __XSTORM_FCOE_AG_CONTEXT_RESERVED51_SHIFT 2 2004 #define __XSTORM_FCOE_AG_CONTEXT_RESERVED52 (0x1<<3) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 3 */ 2005 #define __XSTORM_FCOE_AG_CONTEXT_RESERVED52_SHIFT 3 2006 #define __XSTORM_FCOE_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4) /* BitField agg_vars1Various aggregative variables Enables the decision rule of more_to_Send > 0 */ 2007 #define __XSTORM_FCOE_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4 2008 #define XSTORM_FCOE_AG_CONTEXT_NAGLE_EN (0x1<<5) /* BitField agg_vars1Various aggregative variables Enables the nagle decision */ 2009 #define XSTORM_FCOE_AG_CONTEXT_NAGLE_EN_SHIFT 5 2010 #define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6) /* BitField agg_vars1Various aggregative variables Used for future indication by the Driver on a doorbell */ 2011 #define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6 2012 #define __XSTORM_FCOE_AG_CONTEXT_RESERVED_UNA_GT_NXT_EN (0x1<<7) /* BitField agg_vars1Various aggregative variables Enable decision rules based on equality between snd_una and snd_nxt */ 2013 #define __XSTORM_FCOE_AG_CONTEXT_RESERVED_UNA_GT_NXT_EN_SHIFT 7 2014 u8_t __state /* The state of the connection */; 2015#elif defined(__LITTLE_ENDIAN) 2016 u8_t __state /* The state of the connection */; 2017 u8_t agg_vars1; 2018 #define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 0 */ 2019 #define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 2020 #define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 1 */ 2021 #define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 2022 #define __XSTORM_FCOE_AG_CONTEXT_RESERVED51 (0x1<<2) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 2 */ 2023 #define __XSTORM_FCOE_AG_CONTEXT_RESERVED51_SHIFT 2 2024 #define __XSTORM_FCOE_AG_CONTEXT_RESERVED52 (0x1<<3) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 3 */ 2025 #define __XSTORM_FCOE_AG_CONTEXT_RESERVED52_SHIFT 3 2026 #define __XSTORM_FCOE_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4) /* BitField agg_vars1Various aggregative variables Enables the decision rule of more_to_Send > 0 */ 2027 #define __XSTORM_FCOE_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4 2028 #define XSTORM_FCOE_AG_CONTEXT_NAGLE_EN (0x1<<5) /* BitField agg_vars1Various aggregative variables Enables the nagle decision */ 2029 #define XSTORM_FCOE_AG_CONTEXT_NAGLE_EN_SHIFT 5 2030 #define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6) /* BitField agg_vars1Various aggregative variables Used for future indication by the Driver on a doorbell */ 2031 #define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6 2032 #define __XSTORM_FCOE_AG_CONTEXT_RESERVED_UNA_GT_NXT_EN (0x1<<7) /* BitField agg_vars1Various aggregative variables Enable decision rules based on equality between snd_una and snd_nxt */ 2033 #define __XSTORM_FCOE_AG_CONTEXT_RESERVED_UNA_GT_NXT_EN_SHIFT 7 2034 u16_t agg_val1 /* aggregated value 1 */; 2035#endif 2036#if defined(__BIG_ENDIAN) 2037 u8_t cdu_reserved /* Used by the CDU for validation and debugging */; 2038 u8_t __agg_vars4 /* Various aggregative variables*/; 2039 u8_t agg_vars3; 2040 #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0) /* BitField agg_vars3Various aggregative variables The physical queue number of queue index 2 */ 2041 #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0 2042 #define __XSTORM_FCOE_AG_CONTEXT_AUX19_CF (0x3<<6) /* BitField agg_vars3Various aggregative variables auxiliary counter flag 19 */ 2043 #define __XSTORM_FCOE_AG_CONTEXT_AUX19_CF_SHIFT 6 2044 u8_t agg_vars2; 2045 #define __XSTORM_FCOE_AG_CONTEXT_DQ_CF (0x3<<0) /* BitField agg_vars2Various aggregative variables auxiliary counter flag 4 */ 2046 #define __XSTORM_FCOE_AG_CONTEXT_DQ_CF_SHIFT 0 2047 #define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2) /* BitField agg_vars2Various aggregative variables Enable decision rule based on dq_spare_flag */ 2048 #define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2 2049 #define __XSTORM_FCOE_AG_CONTEXT_AUX8_FLAG (0x1<<3) /* BitField agg_vars2Various aggregative variables auxiliary flag 8 */ 2050 #define __XSTORM_FCOE_AG_CONTEXT_AUX8_FLAG_SHIFT 3 2051 #define __XSTORM_FCOE_AG_CONTEXT_AUX9_FLAG (0x1<<4) /* BitField agg_vars2Various aggregative variables auxiliary flag 9 */ 2052 #define __XSTORM_FCOE_AG_CONTEXT_AUX9_FLAG_SHIFT 4 2053 #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE1 (0x3<<5) /* BitField agg_vars2Various aggregative variables 0-NOP,1-EQ,2-NEQ */ 2054 #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE1_SHIFT 5 2055 #define __XSTORM_FCOE_AG_CONTEXT_DQ_CF_EN (0x1<<7) /* BitField agg_vars2Various aggregative variables Enable decision rules based on aux4_cf */ 2056 #define __XSTORM_FCOE_AG_CONTEXT_DQ_CF_EN_SHIFT 7 2057#elif defined(__LITTLE_ENDIAN) 2058 u8_t agg_vars2; 2059 #define __XSTORM_FCOE_AG_CONTEXT_DQ_CF (0x3<<0) /* BitField agg_vars2Various aggregative variables auxiliary counter flag 4 */ 2060 #define __XSTORM_FCOE_AG_CONTEXT_DQ_CF_SHIFT 0 2061 #define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2) /* BitField agg_vars2Various aggregative variables Enable decision rule based on dq_spare_flag */ 2062 #define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2 2063 #define __XSTORM_FCOE_AG_CONTEXT_AUX8_FLAG (0x1<<3) /* BitField agg_vars2Various aggregative variables auxiliary flag 8 */ 2064 #define __XSTORM_FCOE_AG_CONTEXT_AUX8_FLAG_SHIFT 3 2065 #define __XSTORM_FCOE_AG_CONTEXT_AUX9_FLAG (0x1<<4) /* BitField agg_vars2Various aggregative variables auxiliary flag 9 */ 2066 #define __XSTORM_FCOE_AG_CONTEXT_AUX9_FLAG_SHIFT 4 2067 #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE1 (0x3<<5) /* BitField agg_vars2Various aggregative variables 0-NOP,1-EQ,2-NEQ */ 2068 #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE1_SHIFT 5 2069 #define __XSTORM_FCOE_AG_CONTEXT_DQ_CF_EN (0x1<<7) /* BitField agg_vars2Various aggregative variables Enable decision rules based on aux4_cf */ 2070 #define __XSTORM_FCOE_AG_CONTEXT_DQ_CF_EN_SHIFT 7 2071 u8_t agg_vars3; 2072 #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0) /* BitField agg_vars3Various aggregative variables The physical queue number of queue index 2 */ 2073 #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0 2074 #define __XSTORM_FCOE_AG_CONTEXT_AUX19_CF (0x3<<6) /* BitField agg_vars3Various aggregative variables auxiliary counter flag 19 */ 2075 #define __XSTORM_FCOE_AG_CONTEXT_AUX19_CF_SHIFT 6 2076 u8_t __agg_vars4 /* Various aggregative variables*/; 2077 u8_t cdu_reserved /* Used by the CDU for validation and debugging */; 2078#endif 2079 u32_t more_to_send /* The number of bytes left to send */; 2080#if defined(__BIG_ENDIAN) 2081 u16_t agg_vars5; 2082 #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE5 (0x3<<0) /* BitField agg_vars5Various aggregative variables 0-NOP,1-EQ,2-NEQ */ 2083 #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE5_SHIFT 0 2084 #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2) /* BitField agg_vars5Various aggregative variables The physical queue number of queue index 0 */ 2085 #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2 2086 #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8) /* BitField agg_vars5Various aggregative variables The physical queue number of queue index 1 */ 2087 #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8 2088 #define __XSTORM_FCOE_AG_CONTEXT_CONFQ_DEC_RULE (0x3<<14) /* BitField agg_vars5Various aggregative variables 0-NOP,1-EQ,2-NEQ */ 2089 #define __XSTORM_FCOE_AG_CONTEXT_CONFQ_DEC_RULE_SHIFT 14 2090 u16_t sq_cons /* The SQ consumer updated by Xstorm after consuming aother WQE */; 2091#elif defined(__LITTLE_ENDIAN) 2092 u16_t sq_cons /* The SQ consumer updated by Xstorm after consuming aother WQE */; 2093 u16_t agg_vars5; 2094 #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE5 (0x3<<0) /* BitField agg_vars5Various aggregative variables 0-NOP,1-EQ,2-NEQ */ 2095 #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE5_SHIFT 0 2096 #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2) /* BitField agg_vars5Various aggregative variables The physical queue number of queue index 0 */ 2097 #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2 2098 #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8) /* BitField agg_vars5Various aggregative variables The physical queue number of queue index 1 */ 2099 #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8 2100 #define __XSTORM_FCOE_AG_CONTEXT_CONFQ_DEC_RULE (0x3<<14) /* BitField agg_vars5Various aggregative variables 0-NOP,1-EQ,2-NEQ */ 2101 #define __XSTORM_FCOE_AG_CONTEXT_CONFQ_DEC_RULE_SHIFT 14 2102#endif 2103 struct xstorm_fcoe_extra_ag_context_section __extra_section /* Extra context section */; 2104#if defined(__BIG_ENDIAN) 2105 u16_t agg_vars7; 2106 #define __XSTORM_FCOE_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0) /* BitField agg_vars7Various aggregative variables 0-NOP,1-EQ,2-NEQ,3-GT_CYC,4-GT_ABS,5-LT_CYC,6-LT_ABS */ 2107 #define __XSTORM_FCOE_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0 2108 #define __XSTORM_FCOE_AG_CONTEXT_AUX13_FLAG (0x1<<3) /* BitField agg_vars7Various aggregative variables auxiliary flag 13 */ 2109 #define __XSTORM_FCOE_AG_CONTEXT_AUX13_FLAG_SHIFT 3 2110 #define __XSTORM_FCOE_AG_CONTEXT_QUEUE0_CF (0x3<<4) /* BitField agg_vars7Various aggregative variables auxiliary counter flag 18 */ 2111 #define __XSTORM_FCOE_AG_CONTEXT_QUEUE0_CF_SHIFT 4 2112 #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE3 (0x3<<6) /* BitField agg_vars7Various aggregative variables 0-NOP,1-EQ,2-NEQ */ 2113 #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE3_SHIFT 6 2114 #define XSTORM_FCOE_AG_CONTEXT_AUX1_CF (0x3<<8) /* BitField agg_vars7Various aggregative variables auxiliary counter flag 1 */ 2115 #define XSTORM_FCOE_AG_CONTEXT_AUX1_CF_SHIFT 8 2116 #define __XSTORM_FCOE_AG_CONTEXT_RESERVED62 (0x1<<10) /* BitField agg_vars7Various aggregative variables Mask the check of the completion sequence on retransmit */ 2117 #define __XSTORM_FCOE_AG_CONTEXT_RESERVED62_SHIFT 10 2118 #define __XSTORM_FCOE_AG_CONTEXT_AUX1_CF_EN (0x1<<11) /* BitField agg_vars7Various aggregative variables Enable decision rules based on aux1_cf */ 2119 #define __XSTORM_FCOE_AG_CONTEXT_AUX1_CF_EN_SHIFT 11 2120 #define __XSTORM_FCOE_AG_CONTEXT_AUX10_FLAG (0x1<<12) /* BitField agg_vars7Various aggregative variables auxiliary flag 10 */ 2121 #define __XSTORM_FCOE_AG_CONTEXT_AUX10_FLAG_SHIFT 12 2122 #define __XSTORM_FCOE_AG_CONTEXT_AUX11_FLAG (0x1<<13) /* BitField agg_vars7Various aggregative variables auxiliary flag 11 */ 2123 #define __XSTORM_FCOE_AG_CONTEXT_AUX11_FLAG_SHIFT 13 2124 #define __XSTORM_FCOE_AG_CONTEXT_AUX12_FLAG (0x1<<14) /* BitField agg_vars7Various aggregative variables auxiliary flag 12 */ 2125 #define __XSTORM_FCOE_AG_CONTEXT_AUX12_FLAG_SHIFT 14 2126 #define __XSTORM_FCOE_AG_CONTEXT_AUX2_FLAG (0x1<<15) /* BitField agg_vars7Various aggregative variables auxiliary flag 2 */ 2127 #define __XSTORM_FCOE_AG_CONTEXT_AUX2_FLAG_SHIFT 15 2128 u8_t agg_val3_th /* Aggregated value 3 - threshold */; 2129 u8_t agg_vars6; 2130 #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE6 (0x7<<0) /* BitField agg_vars6Various aggregative variables 0-NOP,1-EQ,2-NEQ,3-GT_CYC,4-GT_ABS,5-LT_CYC,6-LT_ABS */ 2131 #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE6_SHIFT 0 2132 #define __XSTORM_FCOE_AG_CONTEXT_XFRQ_DEC_RULE (0x7<<3) /* BitField agg_vars6Various aggregative variables 0-NOP,1-EQ,2-NEQ,3-GT_CYC,4-GT_ABS,5-LT_CYC,6-LT_ABS */ 2133 #define __XSTORM_FCOE_AG_CONTEXT_XFRQ_DEC_RULE_SHIFT 3 2134 #define __XSTORM_FCOE_AG_CONTEXT_SQ_DEC_RULE (0x3<<6) /* BitField agg_vars6Various aggregative variables 0-NOP,1-EQ,2-NEQ */ 2135 #define __XSTORM_FCOE_AG_CONTEXT_SQ_DEC_RULE_SHIFT 6 2136#elif defined(__LITTLE_ENDIAN) 2137 u8_t agg_vars6; 2138 #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE6 (0x7<<0) /* BitField agg_vars6Various aggregative variables 0-NOP,1-EQ,2-NEQ,3-GT_CYC,4-GT_ABS,5-LT_CYC,6-LT_ABS */ 2139 #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE6_SHIFT 0 2140 #define __XSTORM_FCOE_AG_CONTEXT_XFRQ_DEC_RULE (0x7<<3) /* BitField agg_vars6Various aggregative variables 0-NOP,1-EQ,2-NEQ,3-GT_CYC,4-GT_ABS,5-LT_CYC,6-LT_ABS */ 2141 #define __XSTORM_FCOE_AG_CONTEXT_XFRQ_DEC_RULE_SHIFT 3 2142 #define __XSTORM_FCOE_AG_CONTEXT_SQ_DEC_RULE (0x3<<6) /* BitField agg_vars6Various aggregative variables 0-NOP,1-EQ,2-NEQ */ 2143 #define __XSTORM_FCOE_AG_CONTEXT_SQ_DEC_RULE_SHIFT 6 2144 u8_t agg_val3_th /* Aggregated value 3 - threshold */; 2145 u16_t agg_vars7; 2146 #define __XSTORM_FCOE_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0) /* BitField agg_vars7Various aggregative variables 0-NOP,1-EQ,2-NEQ,3-GT_CYC,4-GT_ABS,5-LT_CYC,6-LT_ABS */ 2147 #define __XSTORM_FCOE_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0 2148 #define __XSTORM_FCOE_AG_CONTEXT_AUX13_FLAG (0x1<<3) /* BitField agg_vars7Various aggregative variables auxiliary flag 13 */ 2149 #define __XSTORM_FCOE_AG_CONTEXT_AUX13_FLAG_SHIFT 3 2150 #define __XSTORM_FCOE_AG_CONTEXT_QUEUE0_CF (0x3<<4) /* BitField agg_vars7Various aggregative variables auxiliary counter flag 18 */ 2151 #define __XSTORM_FCOE_AG_CONTEXT_QUEUE0_CF_SHIFT 4 2152 #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE3 (0x3<<6) /* BitField agg_vars7Various aggregative variables 0-NOP,1-EQ,2-NEQ */ 2153 #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE3_SHIFT 6 2154 #define XSTORM_FCOE_AG_CONTEXT_AUX1_CF (0x3<<8) /* BitField agg_vars7Various aggregative variables auxiliary counter flag 1 */ 2155 #define XSTORM_FCOE_AG_CONTEXT_AUX1_CF_SHIFT 8 2156 #define __XSTORM_FCOE_AG_CONTEXT_RESERVED62 (0x1<<10) /* BitField agg_vars7Various aggregative variables Mask the check of the completion sequence on retransmit */ 2157 #define __XSTORM_FCOE_AG_CONTEXT_RESERVED62_SHIFT 10 2158 #define __XSTORM_FCOE_AG_CONTEXT_AUX1_CF_EN (0x1<<11) /* BitField agg_vars7Various aggregative variables Enable decision rules based on aux1_cf */ 2159 #define __XSTORM_FCOE_AG_CONTEXT_AUX1_CF_EN_SHIFT 11 2160 #define __XSTORM_FCOE_AG_CONTEXT_AUX10_FLAG (0x1<<12) /* BitField agg_vars7Various aggregative variables auxiliary flag 10 */ 2161 #define __XSTORM_FCOE_AG_CONTEXT_AUX10_FLAG_SHIFT 12 2162 #define __XSTORM_FCOE_AG_CONTEXT_AUX11_FLAG (0x1<<13) /* BitField agg_vars7Various aggregative variables auxiliary flag 11 */ 2163 #define __XSTORM_FCOE_AG_CONTEXT_AUX11_FLAG_SHIFT 13 2164 #define __XSTORM_FCOE_AG_CONTEXT_AUX12_FLAG (0x1<<14) /* BitField agg_vars7Various aggregative variables auxiliary flag 12 */ 2165 #define __XSTORM_FCOE_AG_CONTEXT_AUX12_FLAG_SHIFT 14 2166 #define __XSTORM_FCOE_AG_CONTEXT_AUX2_FLAG (0x1<<15) /* BitField agg_vars7Various aggregative variables auxiliary flag 2 */ 2167 #define __XSTORM_FCOE_AG_CONTEXT_AUX2_FLAG_SHIFT 15 2168#endif 2169#if defined(__BIG_ENDIAN) 2170 u16_t __agg_val11_th /* aggregated value 11 - threshold */; 2171 u16_t __agg_val11 /* aggregated value 11 */; 2172#elif defined(__LITTLE_ENDIAN) 2173 u16_t __agg_val11 /* aggregated value 11 */; 2174 u16_t __agg_val11_th /* aggregated value 11 - threshold */; 2175#endif 2176#if defined(__BIG_ENDIAN) 2177 u8_t __reserved1; 2178 u8_t __agg_val6_th /* aggregated value 6 - threshold */; 2179 u16_t __agg_val9 /* aggregated value 9 */; 2180#elif defined(__LITTLE_ENDIAN) 2181 u16_t __agg_val9 /* aggregated value 9 */; 2182 u8_t __agg_val6_th /* aggregated value 6 - threshold */; 2183 u8_t __reserved1; 2184#endif 2185#if defined(__BIG_ENDIAN) 2186 u16_t confq_cons /* CONFQ Consumer */; 2187 u16_t confq_prod /* CONFQ Producer, updated by Ustorm - AggVal2 */; 2188#elif defined(__LITTLE_ENDIAN) 2189 u16_t confq_prod /* CONFQ Producer, updated by Ustorm - AggVal2 */; 2190 u16_t confq_cons /* CONFQ Consumer */; 2191#endif 2192 u32_t agg_vars8; 2193 #define XSTORM_FCOE_AG_CONTEXT_AGG_MISC2 (0xFFFFFF<<0) /* BitField agg_vars8Various aggregative variables Misc aggregated variable 2 */ 2194 #define XSTORM_FCOE_AG_CONTEXT_AGG_MISC2_SHIFT 0 2195 #define XSTORM_FCOE_AG_CONTEXT_AGG_MISC3 (0xFF<<24) /* BitField agg_vars8Various aggregative variables Misc aggregated variable 3 */ 2196 #define XSTORM_FCOE_AG_CONTEXT_AGG_MISC3_SHIFT 24 2197#if defined(__BIG_ENDIAN) 2198 u16_t __cache_wqe_db /* Misc aggregated variable 0 */; 2199 u16_t sq_prod /* The SQ Producer updated by Xstorm after reading a bunch of WQEs into the context */; 2200#elif defined(__LITTLE_ENDIAN) 2201 u16_t sq_prod /* The SQ Producer updated by Xstorm after reading a bunch of WQEs into the context */; 2202 u16_t __cache_wqe_db /* Misc aggregated variable 0 */; 2203#endif 2204#if defined(__BIG_ENDIAN) 2205 u8_t agg_val3 /* Aggregated value 3 */; 2206 u8_t agg_val6 /* Aggregated value 6 */; 2207 u8_t agg_val5_th /* Aggregated value 5 - threshold */; 2208 u8_t agg_val5 /* Aggregated value 5 */; 2209#elif defined(__LITTLE_ENDIAN) 2210 u8_t agg_val5 /* Aggregated value 5 */; 2211 u8_t agg_val5_th /* Aggregated value 5 - threshold */; 2212 u8_t agg_val6 /* Aggregated value 6 */; 2213 u8_t agg_val3 /* Aggregated value 3 */; 2214#endif 2215#if defined(__BIG_ENDIAN) 2216 u16_t __agg_misc1 /* Spare value for aggregation. NOTE: this value is used in the retransmit decision rule if CmpSeqDecMask is 0. In that case it is intended to be CmpBdSize. */; 2217 u16_t agg_limit1 /* aggregated limit 1 */; 2218#elif defined(__LITTLE_ENDIAN) 2219 u16_t agg_limit1 /* aggregated limit 1 */; 2220 u16_t __agg_misc1 /* Spare value for aggregation. NOTE: this value is used in the retransmit decision rule if CmpSeqDecMask is 0. In that case it is intended to be CmpBdSize. */; 2221#endif 2222 u32_t completion_seq /* The sequence number of the start completion point (BD) */; 2223 u32_t confq_pbl_base_lo /* The CONFQ PBL base low address resides in host memory */; 2224 u32_t confq_pbl_base_hi /* The CONFQ PBL base hihj address resides in host memory */; 2225}; 2226 2227 2228 2229/* 2230 * The tcp aggregative context section of Xstorm 2231 */ 2232struct xstorm_tcp_tcp_ag_context_section 2233{ 2234#if defined(__BIG_ENDIAN) 2235 u8_t tcp_agg_vars1; 2236 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_DA_TIMER_CF (0x3<<0) /* BitField tcp_agg_vars1Various aggregative variables Counter flag used to rewind the DA timer */ 2237 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_DA_TIMER_CF_SHIFT 0 2238 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED (0x3<<2) /* BitField tcp_agg_vars1Various aggregative variables auxiliary counter flag 2 */ 2239 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_SHIFT 2 2240 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF (0x3<<4) /* BitField tcp_agg_vars1Various aggregative variables auxiliary counter flag 3 */ 2241 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_SHIFT 4 2242 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CLEAR_DA_TIMER_EN (0x1<<6) /* BitField tcp_agg_vars1Various aggregative variables If set enables sending clear commands as port of the DA decision rules */ 2243 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CLEAR_DA_TIMER_EN_SHIFT 6 2244 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_EXPIRATION_FLAG (0x1<<7) /* BitField tcp_agg_vars1Various aggregative variables Indicates that there was a delayed ack timer expiration */ 2245 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_EXPIRATION_FLAG_SHIFT 7 2246 u8_t __da_cnt /* Counts the number of ACK requests received from the TSTORM with no registration to QM. */; 2247 u16_t mss /* MSS used for nagle algorithm and for transmission */; 2248#elif defined(__LITTLE_ENDIAN) 2249 u16_t mss /* MSS used for nagle algorithm and for transmission */; 2250 u8_t __da_cnt /* Counts the number of ACK requests received from the TSTORM with no registration to QM. */; 2251 u8_t tcp_agg_vars1; 2252 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_DA_TIMER_CF (0x3<<0) /* BitField tcp_agg_vars1Various aggregative variables Counter flag used to rewind the DA timer */ 2253 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_DA_TIMER_CF_SHIFT 0 2254 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED (0x3<<2) /* BitField tcp_agg_vars1Various aggregative variables auxiliary counter flag 2 */ 2255 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_SHIFT 2 2256 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF (0x3<<4) /* BitField tcp_agg_vars1Various aggregative variables auxiliary counter flag 3 */ 2257 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_SHIFT 4 2258 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CLEAR_DA_TIMER_EN (0x1<<6) /* BitField tcp_agg_vars1Various aggregative variables If set enables sending clear commands as port of the DA decision rules */ 2259 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CLEAR_DA_TIMER_EN_SHIFT 6 2260 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_EXPIRATION_FLAG (0x1<<7) /* BitField tcp_agg_vars1Various aggregative variables Indicates that there was a delayed ack timer expiration */ 2261 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_EXPIRATION_FLAG_SHIFT 7 2262#endif 2263 u32_t snd_nxt /* The current sequence number to send */; 2264 u32_t tx_wnd /* The Current transmission window in bytes */; 2265 u32_t snd_una /* The current Send UNA sequence number */; 2266 u32_t local_adv_wnd /* The current local advertised window to FE. */; 2267#if defined(__BIG_ENDIAN) 2268 u8_t __agg_val8_th /* aggregated value 8 - threshold */; 2269 u8_t __tx_dest /* aggregated value 8 */; 2270 u16_t tcp_agg_vars2; 2271 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG (0x1<<0) /* BitField tcp_agg_vars2Various aggregative variables Used in TOE to indicate that FIN is sent on a BD to bypass the naggle rule */ 2272 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_SHIFT 0 2273 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED (0x1<<1) /* BitField tcp_agg_vars2Various aggregative variables Enables the tx window based decision */ 2274 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED_SHIFT 1 2275 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE (0x1<<2) /* BitField tcp_agg_vars2Various aggregative variables The DA Timer status. If set indicates that the delayed ACK timer is active. */ 2276 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE_SHIFT 2 2277 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG (0x1<<3) /* BitField tcp_agg_vars2Various aggregative variables auxiliary flag 3 */ 2278 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG_SHIFT 3 2279 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG (0x1<<4) /* BitField tcp_agg_vars2Various aggregative variables auxiliary flag 4 */ 2280 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG_SHIFT 4 2281 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE (0x1<<5) /* BitField tcp_agg_vars2Various aggregative variables Enable DA for the specific connection */ 2282 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE_SHIFT 5 2283 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN (0x1<<6) /* BitField tcp_agg_vars2Various aggregative variables Enable decision rules based on aux2_cf */ 2284 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN_SHIFT 6 2285 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN (0x1<<7) /* BitField tcp_agg_vars2Various aggregative variables Enable decision rules based on aux3_cf */ 2286 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN_SHIFT 7 2287 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN (0x1<<8) /* BitField tcp_agg_vars2Various aggregative variables Enable Decision rule based on tx_fin_flag */ 2288 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN_SHIFT 8 2289 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9) /* BitField tcp_agg_vars2Various aggregative variables auxiliary flag 1 */ 2290 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 9 2291 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF (0x3<<10) /* BitField tcp_agg_vars2Various aggregative variables counter flag for setting the rto timer */ 2292 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10 2293 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12) /* BitField tcp_agg_vars2Various aggregative variables timestamp was updated counter flag */ 2294 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12 2295 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF (0x3<<14) /* BitField tcp_agg_vars2Various aggregative variables auxiliary counter flag 8 */ 2296 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_SHIFT 14 2297#elif defined(__LITTLE_ENDIAN) 2298 u16_t tcp_agg_vars2; 2299 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG (0x1<<0) /* BitField tcp_agg_vars2Various aggregative variables Used in TOE to indicate that FIN is sent on a BD to bypass the naggle rule */ 2300 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_SHIFT 0 2301 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED (0x1<<1) /* BitField tcp_agg_vars2Various aggregative variables Enables the tx window based decision */ 2302 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED_SHIFT 1 2303 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE (0x1<<2) /* BitField tcp_agg_vars2Various aggregative variables The DA Timer status. If set indicates that the delayed ACK timer is active. */ 2304 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE_SHIFT 2 2305 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG (0x1<<3) /* BitField tcp_agg_vars2Various aggregative variables auxiliary flag 3 */ 2306 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG_SHIFT 3 2307 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG (0x1<<4) /* BitField tcp_agg_vars2Various aggregative variables auxiliary flag 4 */ 2308 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG_SHIFT 4 2309 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE (0x1<<5) /* BitField tcp_agg_vars2Various aggregative variables Enable DA for the specific connection */ 2310 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE_SHIFT 5 2311 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN (0x1<<6) /* BitField tcp_agg_vars2Various aggregative variables Enable decision rules based on aux2_cf */ 2312 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN_SHIFT 6 2313 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN (0x1<<7) /* BitField tcp_agg_vars2Various aggregative variables Enable decision rules based on aux3_cf */ 2314 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN_SHIFT 7 2315 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN (0x1<<8) /* BitField tcp_agg_vars2Various aggregative variables Enable Decision rule based on tx_fin_flag */ 2316 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN_SHIFT 8 2317 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9) /* BitField tcp_agg_vars2Various aggregative variables auxiliary flag 1 */ 2318 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 9 2319 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF (0x3<<10) /* BitField tcp_agg_vars2Various aggregative variables counter flag for setting the rto timer */ 2320 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10 2321 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12) /* BitField tcp_agg_vars2Various aggregative variables timestamp was updated counter flag */ 2322 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12 2323 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF (0x3<<14) /* BitField tcp_agg_vars2Various aggregative variables auxiliary counter flag 8 */ 2324 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_SHIFT 14 2325 u8_t __tx_dest /* aggregated value 8 */; 2326 u8_t __agg_val8_th /* aggregated value 8 - threshold */; 2327#endif 2328 u32_t ack_to_far_end /* The ACK sequence to send to far end */; 2329 u32_t rto_timer /* The RTO timer value */; 2330 u32_t ka_timer /* The KA timer value */; 2331 u32_t ts_to_echo /* The time stamp value to echo to far end */; 2332#if defined(__BIG_ENDIAN) 2333 u16_t __agg_val7_th /* aggregated value 7 - threshold */; 2334 u16_t __agg_val7 /* aggregated value 7 */; 2335#elif defined(__LITTLE_ENDIAN) 2336 u16_t __agg_val7 /* aggregated value 7 */; 2337 u16_t __agg_val7_th /* aggregated value 7 - threshold */; 2338#endif 2339#if defined(__BIG_ENDIAN) 2340 u8_t __tcp_agg_vars5 /* Various aggregative variables*/; 2341 u8_t __tcp_agg_vars4 /* Various aggregative variables*/; 2342 u8_t __tcp_agg_vars3 /* Various aggregative variables*/; 2343 u8_t __force_pure_ack_cnt /* The number of force ACK commands arrived from the TSTORM */; 2344#elif defined(__LITTLE_ENDIAN) 2345 u8_t __force_pure_ack_cnt /* The number of force ACK commands arrived from the TSTORM */; 2346 u8_t __tcp_agg_vars3 /* Various aggregative variables*/; 2347 u8_t __tcp_agg_vars4 /* Various aggregative variables*/; 2348 u8_t __tcp_agg_vars5 /* Various aggregative variables*/; 2349#endif 2350 u32_t tcp_agg_vars6; 2351 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_CF_EN (0x1<<0) /* BitField tcp_agg_vars6Various aggregative variables Enable decision rules based on aux7_cf */ 2352 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_CF_EN_SHIFT 0 2353 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_EN (0x1<<1) /* BitField tcp_agg_vars6Various aggregative variables Enable decision rules based on aux8_cf */ 2354 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_EN_SHIFT 1 2355 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF_EN (0x1<<2) /* BitField tcp_agg_vars6Various aggregative variables Enable decision rules based on aux9_cf */ 2356 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF_EN_SHIFT 2 2357 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<3) /* BitField tcp_agg_vars6Various aggregative variables Enable decision rules based on aux10_cf */ 2358 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 3 2359 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX6_FLAG (0x1<<4) /* BitField tcp_agg_vars6Various aggregative variables auxiliary flag 6 */ 2360 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX6_FLAG_SHIFT 4 2361 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX7_FLAG (0x1<<5) /* BitField tcp_agg_vars6Various aggregative variables auxiliary flag 7 */ 2362 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX7_FLAG_SHIFT 5 2363 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX5_CF (0x3<<6) /* BitField tcp_agg_vars6Various aggregative variables auxiliary counter flag 5 */ 2364 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX5_CF_SHIFT 6 2365 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF (0x3<<8) /* BitField tcp_agg_vars6Various aggregative variables auxiliary counter flag 9 */ 2366 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF_SHIFT 8 2367 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF (0x3<<10) /* BitField tcp_agg_vars6Various aggregative variables auxiliary counter flag 10 */ 2368 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_SHIFT 10 2369 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF (0x3<<12) /* BitField tcp_agg_vars6Various aggregative variables auxiliary counter flag 11 */ 2370 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_SHIFT 12 2371 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF (0x3<<14) /* BitField tcp_agg_vars6Various aggregative variables auxiliary counter flag 12 */ 2372 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_SHIFT 14 2373 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX13_CF (0x3<<16) /* BitField tcp_agg_vars6Various aggregative variables auxiliary counter flag 13 */ 2374 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX13_CF_SHIFT 16 2375 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX14_CF (0x3<<18) /* BitField tcp_agg_vars6Various aggregative variables auxiliary counter flag 14 */ 2376 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX14_CF_SHIFT 18 2377 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX15_CF (0x3<<20) /* BitField tcp_agg_vars6Various aggregative variables auxiliary counter flag 15 */ 2378 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX15_CF_SHIFT 20 2379 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX16_CF (0x3<<22) /* BitField tcp_agg_vars6Various aggregative variables auxiliary counter flag 16 */ 2380 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX16_CF_SHIFT 22 2381 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX17_CF (0x3<<24) /* BitField tcp_agg_vars6Various aggregative variables auxiliary counter flag 17 */ 2382 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX17_CF_SHIFT 24 2383 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ECE_FLAG (0x1<<26) /* BitField tcp_agg_vars6Various aggregative variables Can be also used as general purpose if ECN is not used */ 2384 #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ECE_FLAG_SHIFT 26 2385 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED71 (0x1<<27) /* BitField tcp_agg_vars6Various aggregative variables Can be also used as general purpose if ECN is not used */ 2386 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED71_SHIFT 27 2387 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_FORCE_PURE_ACK_CNT_DIRTY (0x1<<28) /* BitField tcp_agg_vars6Various aggregative variables This flag is set if the Force ACK count is set by the TSTORM. On QM output it is cleared. */ 2388 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_FORCE_PURE_ACK_CNT_DIRTY_SHIFT 28 2389 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TCP_AUTO_STOP_FLAG (0x1<<29) /* BitField tcp_agg_vars6Various aggregative variables Indicates that the connection is in autostop mode */ 2390 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TCP_AUTO_STOP_FLAG_SHIFT 29 2391 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DO_TS_UPDATE_FLAG (0x1<<30) /* BitField tcp_agg_vars6Various aggregative variables This bit uses like a one shot that the TSTORM fires and the XSTORM arms. Used to allow a single TS update for each transmission */ 2392 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DO_TS_UPDATE_FLAG_SHIFT 30 2393 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CANCEL_RETRANSMIT_FLAG (0x1<<31) /* BitField tcp_agg_vars6Various aggregative variables This bit is set by the TSTORM when need to cancel precious fast retransmit */ 2394 #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CANCEL_RETRANSMIT_FLAG_SHIFT 31 2395#if defined(__BIG_ENDIAN) 2396 u16_t __agg_misc6 /* Misc aggregated variable 6 */; 2397 u16_t __tcp_agg_vars7 /* Various aggregative variables*/; 2398#elif defined(__LITTLE_ENDIAN) 2399 u16_t __tcp_agg_vars7 /* Various aggregative variables*/; 2400 u16_t __agg_misc6 /* Misc aggregated variable 6 */; 2401#endif 2402 u32_t __agg_val10 /* aggregated value 10 */; 2403 u32_t __agg_val10_th /* aggregated value 10 - threshold */; 2404#if defined(__BIG_ENDIAN) 2405 u16_t __reserved3; 2406 u8_t __reserved2; 2407 u8_t __da_only_cnt /* counts delayed acks and not window updates */; 2408#elif defined(__LITTLE_ENDIAN) 2409 u8_t __da_only_cnt /* counts delayed acks and not window updates */; 2410 u8_t __reserved2; 2411 u16_t __reserved3; 2412#endif 2413}; 2414 2415/* 2416 * The iscsi aggregative context of Xstorm 2417 */ 2418struct xstorm_iscsi_ag_context 2419{ 2420#if defined(__BIG_ENDIAN) 2421 u16_t agg_val1 /* aggregated value 1 */; 2422 u8_t agg_vars1; 2423 #define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 0 */ 2424 #define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 2425 #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 1 */ 2426 #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 2427 #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 2 */ 2428 #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2 2429 #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 3 */ 2430 #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3 2431 #define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4) /* BitField agg_vars1Various aggregative variables Enables the decision rule of more_to_Send > 0 */ 2432 #define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4 2433 #define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN (0x1<<5) /* BitField agg_vars1Various aggregative variables Enables the nagle decision */ 2434 #define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN_SHIFT 5 2435 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6) /* BitField agg_vars1Various aggregative variables Used for future indication by the Driver on a doorbell */ 2436 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6 2437 #define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7) /* BitField agg_vars1Various aggregative variables Enable decision rules based on equality between snd_una and snd_nxt */ 2438 #define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7 2439 u8_t state /* The state of the connection */; 2440#elif defined(__LITTLE_ENDIAN) 2441 u8_t state /* The state of the connection */; 2442 u8_t agg_vars1; 2443 #define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 0 */ 2444 #define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 2445 #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 1 */ 2446 #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 2447 #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 2 */ 2448 #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2 2449 #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 3 */ 2450 #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3 2451 #define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4) /* BitField agg_vars1Various aggregative variables Enables the decision rule of more_to_Send > 0 */ 2452 #define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4 2453 #define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN (0x1<<5) /* BitField agg_vars1Various aggregative variables Enables the nagle decision */ 2454 #define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN_SHIFT 5 2455 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6) /* BitField agg_vars1Various aggregative variables Used for future indication by the Driver on a doorbell */ 2456 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6 2457 #define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7) /* BitField agg_vars1Various aggregative variables Enable decision rules based on equality between snd_una and snd_nxt */ 2458 #define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7 2459 u16_t agg_val1 /* aggregated value 1 */; 2460#endif 2461#if defined(__BIG_ENDIAN) 2462 u8_t cdu_reserved /* Used by the CDU for validation and debugging */; 2463 u8_t __agg_vars4 /* Various aggregative variables*/; 2464 u8_t agg_vars3; 2465 #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0) /* BitField agg_vars3Various aggregative variables The physical queue number of queue index 2 */ 2466 #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0 2467 #define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF (0x3<<6) /* BitField agg_vars3Various aggregative variables auxiliary counter flag 19 */ 2468 #define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF_SHIFT 6 2469 u8_t agg_vars2; 2470 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF (0x3<<0) /* BitField agg_vars2Various aggregative variables auxiliary counter flag 4 */ 2471 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_SHIFT 0 2472 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2) /* BitField agg_vars2Various aggregative variables Enable decision rule based on dq_spare_flag */ 2473 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2 2474 #define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG (0x1<<3) /* BitField agg_vars2Various aggregative variables auxiliary flag 8 */ 2475 #define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG_SHIFT 3 2476 #define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG (0x1<<4) /* BitField agg_vars2Various aggregative variables auxiliary flag 9 */ 2477 #define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG_SHIFT 4 2478 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1 (0x3<<5) /* BitField agg_vars2Various aggregative variables 0-NOP,1-EQ,2-NEQ */ 2479 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1_SHIFT 5 2480 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7) /* BitField agg_vars2Various aggregative variables Enable decision rules based on aux4_cf */ 2481 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7 2482#elif defined(__LITTLE_ENDIAN) 2483 u8_t agg_vars2; 2484 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF (0x3<<0) /* BitField agg_vars2Various aggregative variables auxiliary counter flag 4 */ 2485 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_SHIFT 0 2486 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2) /* BitField agg_vars2Various aggregative variables Enable decision rule based on dq_spare_flag */ 2487 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2 2488 #define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG (0x1<<3) /* BitField agg_vars2Various aggregative variables auxiliary flag 8 */ 2489 #define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG_SHIFT 3 2490 #define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG (0x1<<4) /* BitField agg_vars2Various aggregative variables auxiliary flag 9 */ 2491 #define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG_SHIFT 4 2492 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1 (0x3<<5) /* BitField agg_vars2Various aggregative variables 0-NOP,1-EQ,2-NEQ */ 2493 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1_SHIFT 5 2494 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7) /* BitField agg_vars2Various aggregative variables Enable decision rules based on aux4_cf */ 2495 #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7 2496 u8_t agg_vars3; 2497 #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0) /* BitField agg_vars3Various aggregative variables The physical queue number of queue index 2 */ 2498 #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0 2499 #define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF (0x3<<6) /* BitField agg_vars3Various aggregative variables auxiliary counter flag 19 */ 2500 #define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF_SHIFT 6 2501 u8_t __agg_vars4 /* Various aggregative variables*/; 2502 u8_t cdu_reserved /* Used by the CDU for validation and debugging */; 2503#endif 2504 u32_t more_to_send /* The number of bytes left to send */; 2505#if defined(__BIG_ENDIAN) 2506 u16_t agg_vars5; 2507 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5 (0x3<<0) /* BitField agg_vars5Various aggregative variables 0-NOP,1-EQ,2-NEQ */ 2508 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5_SHIFT 0 2509 #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2) /* BitField agg_vars5Various aggregative variables The physical queue number of queue index 0 */ 2510 #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2 2511 #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8) /* BitField agg_vars5Various aggregative variables The physical queue number of queue index 1 */ 2512 #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8 2513 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2 (0x3<<14) /* BitField agg_vars5Various aggregative variables 0-NOP,1-EQ,2-NEQ */ 2514 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2_SHIFT 14 2515 u16_t sq_cons /* aggregated value 4 - threshold */; 2516#elif defined(__LITTLE_ENDIAN) 2517 u16_t sq_cons /* aggregated value 4 - threshold */; 2518 u16_t agg_vars5; 2519 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5 (0x3<<0) /* BitField agg_vars5Various aggregative variables 0-NOP,1-EQ,2-NEQ */ 2520 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5_SHIFT 0 2521 #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2) /* BitField agg_vars5Various aggregative variables The physical queue number of queue index 0 */ 2522 #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2 2523 #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8) /* BitField agg_vars5Various aggregative variables The physical queue number of queue index 1 */ 2524 #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8 2525 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2 (0x3<<14) /* BitField agg_vars5Various aggregative variables 0-NOP,1-EQ,2-NEQ */ 2526 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2_SHIFT 14 2527#endif 2528 struct xstorm_tcp_tcp_ag_context_section tcp /* TCP context section, shared in TOE and ISCSI */; 2529#if defined(__BIG_ENDIAN) 2530 u16_t agg_vars7; 2531 #define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0) /* BitField agg_vars7Various aggregative variables 0-NOP,1-EQ,2-NEQ,3-GT_CYC,4-GT_ABS,5-LT_CYC,6-LT_ABS */ 2532 #define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0 2533 #define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG (0x1<<3) /* BitField agg_vars7Various aggregative variables auxiliary flag 13 */ 2534 #define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG_SHIFT 3 2535 #define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF (0x3<<4) /* BitField agg_vars7Various aggregative variables Sync Tstorm and Xstorm */ 2536 #define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF_SHIFT 4 2537 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3 (0x3<<6) /* BitField agg_vars7Various aggregative variables 0-NOP,1-EQ,2-NEQ */ 2538 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3_SHIFT 6 2539 #define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF (0x3<<8) /* BitField agg_vars7Various aggregative variables auxiliary counter flag 1 */ 2540 #define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_SHIFT 8 2541 #define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10) /* BitField agg_vars7Various aggregative variables Mask the check of the completion sequence on retransmit */ 2542 #define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10 2543 #define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN (0x1<<11) /* BitField agg_vars7Various aggregative variables Enable decision rules based on aux1_cf */ 2544 #define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN_SHIFT 11 2545 #define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG (0x1<<12) /* BitField agg_vars7Various aggregative variables auxiliary flag 10 */ 2546 #define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG_SHIFT 12 2547 #define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG (0x1<<13) /* BitField agg_vars7Various aggregative variables auxiliary flag 11 */ 2548 #define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG_SHIFT 13 2549 #define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG (0x1<<14) /* BitField agg_vars7Various aggregative variables auxiliary flag 12 */ 2550 #define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG_SHIFT 14 2551 #define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN (0x1<<15) /* BitField agg_vars7Various aggregative variables auxiliary flag 2 */ 2552 #define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN_SHIFT 15 2553 u8_t agg_val3_th /* Aggregated value 3 - threshold */; 2554 u8_t agg_vars6; 2555 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6 (0x7<<0) /* BitField agg_vars6Various aggregative variables 0-NOP,1-EQ,2-NEQ,3-GT_CYC,4-GT_ABS,5-LT_CYC,6-LT_ABS */ 2556 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6_SHIFT 0 2557 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7 (0x7<<3) /* BitField agg_vars6Various aggregative variables 0-NOP,1-EQ,2-NEQ,3-GT_CYC,4-GT_ABS,5-LT_CYC,6-LT_ABS */ 2558 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7_SHIFT 3 2559 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4 (0x3<<6) /* BitField agg_vars6Various aggregative variables 0-NOP,1-EQ,2-NEQ */ 2560 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4_SHIFT 6 2561#elif defined(__LITTLE_ENDIAN) 2562 u8_t agg_vars6; 2563 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6 (0x7<<0) /* BitField agg_vars6Various aggregative variables 0-NOP,1-EQ,2-NEQ,3-GT_CYC,4-GT_ABS,5-LT_CYC,6-LT_ABS */ 2564 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6_SHIFT 0 2565 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7 (0x7<<3) /* BitField agg_vars6Various aggregative variables 0-NOP,1-EQ,2-NEQ,3-GT_CYC,4-GT_ABS,5-LT_CYC,6-LT_ABS */ 2566 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7_SHIFT 3 2567 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4 (0x3<<6) /* BitField agg_vars6Various aggregative variables 0-NOP,1-EQ,2-NEQ */ 2568 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4_SHIFT 6 2569 u8_t agg_val3_th /* Aggregated value 3 - threshold */; 2570 u16_t agg_vars7; 2571 #define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0) /* BitField agg_vars7Various aggregative variables 0-NOP,1-EQ,2-NEQ,3-GT_CYC,4-GT_ABS,5-LT_CYC,6-LT_ABS */ 2572 #define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0 2573 #define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG (0x1<<3) /* BitField agg_vars7Various aggregative variables auxiliary flag 13 */ 2574 #define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG_SHIFT 3 2575 #define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF (0x3<<4) /* BitField agg_vars7Various aggregative variables Sync Tstorm and Xstorm */ 2576 #define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF_SHIFT 4 2577 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3 (0x3<<6) /* BitField agg_vars7Various aggregative variables 0-NOP,1-EQ,2-NEQ */ 2578 #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3_SHIFT 6 2579 #define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF (0x3<<8) /* BitField agg_vars7Various aggregative variables auxiliary counter flag 1 */ 2580 #define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_SHIFT 8 2581 #define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10) /* BitField agg_vars7Various aggregative variables Mask the check of the completion sequence on retransmit */ 2582 #define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10 2583 #define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN (0x1<<11) /* BitField agg_vars7Various aggregative variables Enable decision rules based on aux1_cf */ 2584 #define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN_SHIFT 11 2585 #define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG (0x1<<12) /* BitField agg_vars7Various aggregative variables auxiliary flag 10 */ 2586 #define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG_SHIFT 12 2587 #define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG (0x1<<13) /* BitField agg_vars7Various aggregative variables auxiliary flag 11 */ 2588 #define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG_SHIFT 13 2589 #define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG (0x1<<14) /* BitField agg_vars7Various aggregative variables auxiliary flag 12 */ 2590 #define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG_SHIFT 14 2591 #define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN (0x1<<15) /* BitField agg_vars7Various aggregative variables auxiliary flag 2 */ 2592 #define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN_SHIFT 15 2593#endif 2594#if defined(__BIG_ENDIAN) 2595 u16_t __agg_val11_th /* aggregated value 11 - threshold */; 2596 u16_t __gen_data /* Used for Iscsi. In connection establishment, it uses as rxMss, and in connection termination, it uses as command Id: 1=L5CM_TX_ACK_ON_FIN_CMD 2=L5CM_SET_MSL_TIMER_CMD 3=L5CM_TX_RST_CMD */; 2597#elif defined(__LITTLE_ENDIAN) 2598 u16_t __gen_data /* Used for Iscsi. In connection establishment, it uses as rxMss, and in connection termination, it uses as command Id: 1=L5CM_TX_ACK_ON_FIN_CMD 2=L5CM_SET_MSL_TIMER_CMD 3=L5CM_TX_RST_CMD */; 2599 u16_t __agg_val11_th /* aggregated value 11 - threshold */; 2600#endif 2601#if defined(__BIG_ENDIAN) 2602 u8_t __reserved1; 2603 u8_t __agg_val6_th /* aggregated value 6 - threshold */; 2604 u16_t __agg_val9 /* aggregated value 9 */; 2605#elif defined(__LITTLE_ENDIAN) 2606 u16_t __agg_val9 /* aggregated value 9 */; 2607 u8_t __agg_val6_th /* aggregated value 6 - threshold */; 2608 u8_t __reserved1; 2609#endif 2610#if defined(__BIG_ENDIAN) 2611 u16_t hq_prod /* The HQ producer threashold to compare the HQ consumer, which is the current HQ producer +1 - AggVal2Th */; 2612 u16_t hq_cons /* HQ Consumer, updated by Cstorm - AggVal2 */; 2613#elif defined(__LITTLE_ENDIAN) 2614 u16_t hq_cons /* HQ Consumer, updated by Cstorm - AggVal2 */; 2615 u16_t hq_prod /* The HQ producer threashold to compare the HQ consumer, which is the current HQ producer +1 - AggVal2Th */; 2616#endif 2617 u32_t agg_vars8; 2618 #define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC2 (0xFFFFFF<<0) /* BitField agg_vars8Various aggregative variables Misc aggregated variable 2 */ 2619 #define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC2_SHIFT 0 2620 #define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC3 (0xFF<<24) /* BitField agg_vars8Various aggregative variables Misc aggregated variable 3 */ 2621 #define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC3_SHIFT 24 2622#if defined(__BIG_ENDIAN) 2623 u16_t r2tq_prod /* Misc aggregated variable 0 */; 2624 u16_t sq_prod /* SQ Producer */; 2625#elif defined(__LITTLE_ENDIAN) 2626 u16_t sq_prod /* SQ Producer */; 2627 u16_t r2tq_prod /* Misc aggregated variable 0 */; 2628#endif 2629#if defined(__BIG_ENDIAN) 2630 u8_t agg_val3 /* Aggregated value 3 */; 2631 u8_t agg_val6 /* Aggregated value 6 */; 2632 u8_t agg_val5_th /* Aggregated value 5 - threshold */; 2633 u8_t agg_val5 /* Aggregated value 5 */; 2634#elif defined(__LITTLE_ENDIAN) 2635 u8_t agg_val5 /* Aggregated value 5 */; 2636 u8_t agg_val5_th /* Aggregated value 5 - threshold */; 2637 u8_t agg_val6 /* Aggregated value 6 */; 2638 u8_t agg_val3 /* Aggregated value 3 */; 2639#endif 2640#if defined(__BIG_ENDIAN) 2641 u16_t __agg_misc1 /* Spare value for aggregation. NOTE: this value is used in the retransmit decision rule if CmpSeqDecMask is 0. In that case it is intended to be CmpBdSize. */; 2642 u16_t agg_limit1 /* aggregated limit 1 */; 2643#elif defined(__LITTLE_ENDIAN) 2644 u16_t agg_limit1 /* aggregated limit 1 */; 2645 u16_t __agg_misc1 /* Spare value for aggregation. NOTE: this value is used in the retransmit decision rule if CmpSeqDecMask is 0. In that case it is intended to be CmpBdSize. */; 2646#endif 2647 u32_t hq_cons_tcp_seq /* TCP sequence of the HQ BD pointed by hq_cons */; 2648 u32_t exp_stat_sn /* expected status SN, updated by Ustorm */; 2649 u32_t rst_seq_num /* spare aggregated variable 5 */; 2650}; 2651 2652 2653 2654/* 2655 * The toe aggregative context section of Xstorm 2656 */ 2657struct xstorm_toe_tcp_ag_context_section 2658{ 2659#if defined(__BIG_ENDIAN) 2660 u8_t tcp_agg_vars1; 2661 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_SET_DA_TIMER_CF (0x3<<0) /* BitField tcp_agg_vars1Various aggregative variables Counter flag used to rewind the DA timer */ 2662 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_SET_DA_TIMER_CF_SHIFT 0 2663 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED (0x3<<2) /* BitField tcp_agg_vars1Various aggregative variables auxiliary counter flag 2 */ 2664 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_SHIFT 2 2665 #define XSTORM_TOE_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF (0x3<<4) /* BitField tcp_agg_vars1Various aggregative variables auxiliary counter flag 3 */ 2666 #define XSTORM_TOE_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_SHIFT 4 2667 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_CLEAR_DA_TIMER_EN (0x1<<6) /* BitField tcp_agg_vars1Various aggregative variables If set enables sending clear commands as port of the DA decision rules */ 2668 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_CLEAR_DA_TIMER_EN_SHIFT 6 2669 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_DA_EXPIRATION_FLAG (0x1<<7) /* BitField tcp_agg_vars1Various aggregative variables Indicates that there was a delayed ack timer expiration */ 2670 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_DA_EXPIRATION_FLAG_SHIFT 7 2671 u8_t __da_cnt /* Counts the number of ACK requests received from the TSTORM with no registration to QM. */; 2672 u16_t mss /* MSS used for nagle algorithm and for transmission */; 2673#elif defined(__LITTLE_ENDIAN) 2674 u16_t mss /* MSS used for nagle algorithm and for transmission */; 2675 u8_t __da_cnt /* Counts the number of ACK requests received from the TSTORM with no registration to QM. */; 2676 u8_t tcp_agg_vars1; 2677 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_SET_DA_TIMER_CF (0x3<<0) /* BitField tcp_agg_vars1Various aggregative variables Counter flag used to rewind the DA timer */ 2678 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_SET_DA_TIMER_CF_SHIFT 0 2679 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED (0x3<<2) /* BitField tcp_agg_vars1Various aggregative variables auxiliary counter flag 2 */ 2680 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_SHIFT 2 2681 #define XSTORM_TOE_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF (0x3<<4) /* BitField tcp_agg_vars1Various aggregative variables auxiliary counter flag 3 */ 2682 #define XSTORM_TOE_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_SHIFT 4 2683 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_CLEAR_DA_TIMER_EN (0x1<<6) /* BitField tcp_agg_vars1Various aggregative variables If set enables sending clear commands as port of the DA decision rules */ 2684 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_CLEAR_DA_TIMER_EN_SHIFT 6 2685 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_DA_EXPIRATION_FLAG (0x1<<7) /* BitField tcp_agg_vars1Various aggregative variables Indicates that there was a delayed ack timer expiration */ 2686 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_DA_EXPIRATION_FLAG_SHIFT 7 2687#endif 2688 u32_t snd_nxt /* The current sequence number to send */; 2689 u32_t tx_wnd /* The Current transmission window in bytes */; 2690 u32_t snd_una /* The current Send UNA sequence number */; 2691 u32_t local_adv_wnd /* The current local advertised window to FE. */; 2692#if defined(__BIG_ENDIAN) 2693 u8_t __agg_val8_th /* aggregated value 8 - threshold */; 2694 u8_t __tx_dest /* aggregated value 8 */; 2695 u16_t tcp_agg_vars2; 2696 #define XSTORM_TOE_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG (0x1<<0) /* BitField tcp_agg_vars2Various aggregative variables Used in TOE to indicate that FIN is sent on a BD to bypass the naggle rule */ 2697 #define XSTORM_TOE_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_SHIFT 0 2698 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED (0x1<<1) /* BitField tcp_agg_vars2Various aggregative variables Enables the tx window based decision */ 2699 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED_SHIFT 1 2700 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE (0x1<<2) /* BitField tcp_agg_vars2Various aggregative variables The DA Timer status. If set indicates that the delayed ACK timer is active. */ 2701 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE_SHIFT 2 2702 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX3_FLAG (0x1<<3) /* BitField tcp_agg_vars2Various aggregative variables auxiliary flag 3 */ 2703 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX3_FLAG_SHIFT 3 2704 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX4_FLAG (0x1<<4) /* BitField tcp_agg_vars2Various aggregative variables auxiliary flag 4 */ 2705 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX4_FLAG_SHIFT 4 2706 #define XSTORM_TOE_TCP_AG_CONTEXT_SECTION_DA_ENABLE (0x1<<5) /* BitField tcp_agg_vars2Various aggregative variables Enable DA for the specific connection */ 2707 #define XSTORM_TOE_TCP_AG_CONTEXT_SECTION_DA_ENABLE_SHIFT 5 2708 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN (0x1<<6) /* BitField tcp_agg_vars2Various aggregative variables Enable decision rules based on aux2_cf */ 2709 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN_SHIFT 6 2710 #define XSTORM_TOE_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN (0x1<<7) /* BitField tcp_agg_vars2Various aggregative variables Enable decision rules based on aux3_cf */ 2711 #define XSTORM_TOE_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN_SHIFT 7 2712 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN (0x1<<8) /* BitField tcp_agg_vars2Various aggregative variables Enable Decision rule based on tx_fin_flag */ 2713 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN_SHIFT 8 2714 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9) /* BitField tcp_agg_vars2Various aggregative variables auxiliary flag 1 */ 2715 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 9 2716 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_SET_RTO_CF (0x3<<10) /* BitField tcp_agg_vars2Various aggregative variables counter flag for setting the rto timer */ 2717 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10 2718 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12) /* BitField tcp_agg_vars2Various aggregative variables timestamp was updated counter flag */ 2719 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12 2720 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF (0x3<<14) /* BitField tcp_agg_vars2Various aggregative variables auxiliary counter flag 8 */ 2721 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_SHIFT 14 2722#elif defined(__LITTLE_ENDIAN) 2723 u16_t tcp_agg_vars2; 2724 #define XSTORM_TOE_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG (0x1<<0) /* BitField tcp_agg_vars2Various aggregative variables Used in TOE to indicate that FIN is sent on a BD to bypass the naggle rule */ 2725 #define XSTORM_TOE_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_SHIFT 0 2726 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED (0x1<<1) /* BitField tcp_agg_vars2Various aggregative variables Enables the tx window based decision */ 2727 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED_SHIFT 1 2728 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE (0x1<<2) /* BitField tcp_agg_vars2Various aggregative variables The DA Timer status. If set indicates that the delayed ACK timer is active. */ 2729 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE_SHIFT 2 2730 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX3_FLAG (0x1<<3) /* BitField tcp_agg_vars2Various aggregative variables auxiliary flag 3 */ 2731 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX3_FLAG_SHIFT 3 2732 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX4_FLAG (0x1<<4) /* BitField tcp_agg_vars2Various aggregative variables auxiliary flag 4 */ 2733 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX4_FLAG_SHIFT 4 2734 #define XSTORM_TOE_TCP_AG_CONTEXT_SECTION_DA_ENABLE (0x1<<5) /* BitField tcp_agg_vars2Various aggregative variables Enable DA for the specific connection */ 2735 #define XSTORM_TOE_TCP_AG_CONTEXT_SECTION_DA_ENABLE_SHIFT 5 2736 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN (0x1<<6) /* BitField tcp_agg_vars2Various aggregative variables Enable decision rules based on aux2_cf */ 2737 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN_SHIFT 6 2738 #define XSTORM_TOE_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN (0x1<<7) /* BitField tcp_agg_vars2Various aggregative variables Enable decision rules based on aux3_cf */ 2739 #define XSTORM_TOE_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN_SHIFT 7 2740 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN (0x1<<8) /* BitField tcp_agg_vars2Various aggregative variables Enable Decision rule based on tx_fin_flag */ 2741 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN_SHIFT 8 2742 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9) /* BitField tcp_agg_vars2Various aggregative variables auxiliary flag 1 */ 2743 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 9 2744 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_SET_RTO_CF (0x3<<10) /* BitField tcp_agg_vars2Various aggregative variables counter flag for setting the rto timer */ 2745 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10 2746 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12) /* BitField tcp_agg_vars2Various aggregative variables timestamp was updated counter flag */ 2747 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12 2748 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF (0x3<<14) /* BitField tcp_agg_vars2Various aggregative variables auxiliary counter flag 8 */ 2749 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_SHIFT 14 2750 u8_t __tx_dest /* aggregated value 8 */; 2751 u8_t __agg_val8_th /* aggregated value 8 - threshold */; 2752#endif 2753 u32_t ack_to_far_end /* The ACK sequence to send to far end */; 2754 u32_t rto_timer /* The RTO timer value */; 2755 u32_t ka_timer /* The KA timer value */; 2756 u32_t ts_to_echo /* The time stamp value to echo to far end */; 2757#if defined(__BIG_ENDIAN) 2758 u16_t __agg_val7_th /* aggregated value 7 - threshold */; 2759 u16_t __agg_val7 /* aggregated value 7 */; 2760#elif defined(__LITTLE_ENDIAN) 2761 u16_t __agg_val7 /* aggregated value 7 */; 2762 u16_t __agg_val7_th /* aggregated value 7 - threshold */; 2763#endif 2764#if defined(__BIG_ENDIAN) 2765 u8_t __tcp_agg_vars5 /* Various aggregative variables*/; 2766 u8_t __tcp_agg_vars4 /* Various aggregative variables*/; 2767 u8_t __tcp_agg_vars3 /* Various aggregative variables*/; 2768 u8_t __force_pure_ack_cnt /* The number of force ACK commands arrived from the TSTORM */; 2769#elif defined(__LITTLE_ENDIAN) 2770 u8_t __force_pure_ack_cnt /* The number of force ACK commands arrived from the TSTORM */; 2771 u8_t __tcp_agg_vars3 /* Various aggregative variables*/; 2772 u8_t __tcp_agg_vars4 /* Various aggregative variables*/; 2773 u8_t __tcp_agg_vars5 /* Various aggregative variables*/; 2774#endif 2775 u32_t tcp_agg_vars6; 2776 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_CF_EN (0x1<<0) /* BitField tcp_agg_vars6Various aggregative variables Enable decision rules based on aux7_cf */ 2777 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_CF_EN_SHIFT 0 2778 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_EN (0x1<<1) /* BitField tcp_agg_vars6Various aggregative variables Enable decision rules based on aux8_cf */ 2779 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_EN_SHIFT 1 2780 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX9_CF_EN (0x1<<2) /* BitField tcp_agg_vars6Various aggregative variables Enable decision rules based on aux9_cf */ 2781 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX9_CF_EN_SHIFT 2 2782 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<3) /* BitField tcp_agg_vars6Various aggregative variables Enable decision rules based on aux10_cf */ 2783 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 3 2784 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX6_FLAG (0x1<<4) /* BitField tcp_agg_vars6Various aggregative variables auxiliary flag 6 */ 2785 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX6_FLAG_SHIFT 4 2786 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX7_FLAG (0x1<<5) /* BitField tcp_agg_vars6Various aggregative variables auxiliary flag 7 */ 2787 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX7_FLAG_SHIFT 5 2788 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX5_CF (0x3<<6) /* BitField tcp_agg_vars6Various aggregative variables auxiliary counter flag 5 */ 2789 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX5_CF_SHIFT 6 2790 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX9_CF (0x3<<8) /* BitField tcp_agg_vars6Various aggregative variables auxiliary counter flag 9 */ 2791 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX9_CF_SHIFT 8 2792 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX10_CF (0x3<<10) /* BitField tcp_agg_vars6Various aggregative variables auxiliary counter flag 10 */ 2793 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX10_CF_SHIFT 10 2794 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX11_CF (0x3<<12) /* BitField tcp_agg_vars6Various aggregative variables auxiliary counter flag 11 */ 2795 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX11_CF_SHIFT 12 2796 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX12_CF (0x3<<14) /* BitField tcp_agg_vars6Various aggregative variables auxiliary counter flag 12 */ 2797 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX12_CF_SHIFT 14 2798 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX13_CF (0x3<<16) /* BitField tcp_agg_vars6Various aggregative variables auxiliary counter flag 13 */ 2799 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX13_CF_SHIFT 16 2800 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX14_CF (0x3<<18) /* BitField tcp_agg_vars6Various aggregative variables auxiliary counter flag 14 */ 2801 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX14_CF_SHIFT 18 2802 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX15_CF (0x3<<20) /* BitField tcp_agg_vars6Various aggregative variables auxiliary counter flag 15 */ 2803 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX15_CF_SHIFT 20 2804 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX16_CF (0x3<<22) /* BitField tcp_agg_vars6Various aggregative variables auxiliary counter flag 16 */ 2805 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX16_CF_SHIFT 22 2806 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX17_CF (0x3<<24) /* BitField tcp_agg_vars6Various aggregative variables auxiliary counter flag 17 */ 2807 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_AUX17_CF_SHIFT 24 2808 #define XSTORM_TOE_TCP_AG_CONTEXT_SECTION_ECE_FLAG (0x1<<26) /* BitField tcp_agg_vars6Various aggregative variables Can be also used as general purpose if ECN is not used */ 2809 #define XSTORM_TOE_TCP_AG_CONTEXT_SECTION_ECE_FLAG_SHIFT 26 2810 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_RESERVED71 (0x1<<27) /* BitField tcp_agg_vars6Various aggregative variables Can be also used as general purpose if ECN is not used */ 2811 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_RESERVED71_SHIFT 27 2812 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_FORCE_PURE_ACK_CNT_DIRTY (0x1<<28) /* BitField tcp_agg_vars6Various aggregative variables This flag is set if the Force ACK count is set by the TSTORM. On QM output it is cleared. */ 2813 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_FORCE_PURE_ACK_CNT_DIRTY_SHIFT 28 2814 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_TCP_AUTO_STOP_FLAG (0x1<<29) /* BitField tcp_agg_vars6Various aggregative variables Indicates that the connection is in autostop mode */ 2815 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_TCP_AUTO_STOP_FLAG_SHIFT 29 2816 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_DO_TS_UPDATE_FLAG (0x1<<30) /* BitField tcp_agg_vars6Various aggregative variables This bit uses like a one shot that the TSTORM fires and the XSTORM arms. Used to allow a single TS update for each transmission */ 2817 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_DO_TS_UPDATE_FLAG_SHIFT 30 2818 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_CANCEL_RETRANSMIT_FLAG (0x1<<31) /* BitField tcp_agg_vars6Various aggregative variables This bit is set by the TSTORM when need to cancel precious fast retransmit */ 2819 #define __XSTORM_TOE_TCP_AG_CONTEXT_SECTION_CANCEL_RETRANSMIT_FLAG_SHIFT 31 2820#if defined(__BIG_ENDIAN) 2821 u16_t __agg_misc6 /* Misc aggregated variable 6 */; 2822 u16_t __tcp_agg_vars7 /* Various aggregative variables*/; 2823#elif defined(__LITTLE_ENDIAN) 2824 u16_t __tcp_agg_vars7 /* Various aggregative variables*/; 2825 u16_t __agg_misc6 /* Misc aggregated variable 6 */; 2826#endif 2827 u32_t __agg_val10 /* aggregated value 10 */; 2828 u32_t __agg_val10_th /* aggregated value 10 - threshold */; 2829#if defined(__BIG_ENDIAN) 2830 u16_t __reserved3; 2831 u8_t __reserved2; 2832 u8_t __da_only_cnt /* counts delayed acks and not window updates */; 2833#elif defined(__LITTLE_ENDIAN) 2834 u8_t __da_only_cnt /* counts delayed acks and not window updates */; 2835 u8_t __reserved2; 2836 u16_t __reserved3; 2837#endif 2838}; 2839 2840/* 2841 * The toe aggregative context of Xstorm 2842 */ 2843struct xstorm_toe_ag_context 2844{ 2845#if defined(__BIG_ENDIAN) 2846 u16_t agg_val1 /* aggregated value 1 */; 2847 u8_t agg_vars1; 2848 #define __XSTORM_TOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 0 */ 2849 #define __XSTORM_TOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 2850 #define __XSTORM_TOE_AG_CONTEXT_RESERVED50 (0x1<<1) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 1 */ 2851 #define __XSTORM_TOE_AG_CONTEXT_RESERVED50_SHIFT 1 2852 #define __XSTORM_TOE_AG_CONTEXT_RESERVED51 (0x1<<2) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 2 */ 2853 #define __XSTORM_TOE_AG_CONTEXT_RESERVED51_SHIFT 2 2854 #define __XSTORM_TOE_AG_CONTEXT_RESERVED52 (0x1<<3) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 3 */ 2855 #define __XSTORM_TOE_AG_CONTEXT_RESERVED52_SHIFT 3 2856 #define __XSTORM_TOE_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4) /* BitField agg_vars1Various aggregative variables Enables the decision rule of more_to_Send > 0 */ 2857 #define __XSTORM_TOE_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4 2858 #define XSTORM_TOE_AG_CONTEXT_NAGLE_EN (0x1<<5) /* BitField agg_vars1Various aggregative variables Enables the nagle decision */ 2859 #define XSTORM_TOE_AG_CONTEXT_NAGLE_EN_SHIFT 5 2860 #define __XSTORM_TOE_AG_CONTEXT_DQ_FLUSH_FLAG (0x1<<6) /* BitField agg_vars1Various aggregative variables used to indicate last doorbell for specific connection */ 2861 #define __XSTORM_TOE_AG_CONTEXT_DQ_FLUSH_FLAG_SHIFT 6 2862 #define __XSTORM_TOE_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7) /* BitField agg_vars1Various aggregative variables Enable decision rules based on equality between snd_una and snd_nxt */ 2863 #define __XSTORM_TOE_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7 2864 u8_t __state /* The state of the connection */; 2865#elif defined(__LITTLE_ENDIAN) 2866 u8_t __state /* The state of the connection */; 2867 u8_t agg_vars1; 2868 #define __XSTORM_TOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 0 */ 2869 #define __XSTORM_TOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 2870 #define __XSTORM_TOE_AG_CONTEXT_RESERVED50 (0x1<<1) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 1 */ 2871 #define __XSTORM_TOE_AG_CONTEXT_RESERVED50_SHIFT 1 2872 #define __XSTORM_TOE_AG_CONTEXT_RESERVED51 (0x1<<2) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 2 */ 2873 #define __XSTORM_TOE_AG_CONTEXT_RESERVED51_SHIFT 2 2874 #define __XSTORM_TOE_AG_CONTEXT_RESERVED52 (0x1<<3) /* BitField agg_vars1Various aggregative variables The connection is currently registered to the QM with queue index 3 */ 2875 #define __XSTORM_TOE_AG_CONTEXT_RESERVED52_SHIFT 3 2876 #define __XSTORM_TOE_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4) /* BitField agg_vars1Various aggregative variables Enables the decision rule of more_to_Send > 0 */ 2877 #define __XSTORM_TOE_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4 2878 #define XSTORM_TOE_AG_CONTEXT_NAGLE_EN (0x1<<5) /* BitField agg_vars1Various aggregative variables Enables the nagle decision */ 2879 #define XSTORM_TOE_AG_CONTEXT_NAGLE_EN_SHIFT 5 2880 #define __XSTORM_TOE_AG_CONTEXT_DQ_FLUSH_FLAG (0x1<<6) /* BitField agg_vars1Various aggregative variables used to indicate last doorbell for specific connection */ 2881 #define __XSTORM_TOE_AG_CONTEXT_DQ_FLUSH_FLAG_SHIFT 6 2882 #define __XSTORM_TOE_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7) /* BitField agg_vars1Various aggregative variables Enable decision rules based on equality between snd_una and snd_nxt */ 2883 #define __XSTORM_TOE_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7 2884 u16_t agg_val1 /* aggregated value 1 */; 2885#endif 2886#if defined(__BIG_ENDIAN) 2887 u8_t cdu_reserved /* Used by the CDU for validation and debugging */; 2888 u8_t __agg_vars4 /* Various aggregative variables*/; 2889 u8_t agg_vars3; 2890 #define XSTORM_TOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0) /* BitField agg_vars3Various aggregative variables The physical queue number of queue index 2 */ 2891 #define XSTORM_TOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0 2892 #define __XSTORM_TOE_AG_CONTEXT_QUEUES_FLUSH_Q1_CF (0x3<<6) /* BitField agg_vars3Various aggregative variables auxiliary counter flag 19 */ 2893 #define __XSTORM_TOE_AG_CONTEXT_QUEUES_FLUSH_Q1_CF_SHIFT 6 2894 u8_t agg_vars2; 2895 #define __XSTORM_TOE_AG_CONTEXT_DQ_CF (0x3<<0) /* BitField agg_vars2Various aggregative variables auxiliary counter flag 4 */ 2896 #define __XSTORM_TOE_AG_CONTEXT_DQ_CF_SHIFT 0 2897 #define __XSTORM_TOE_AG_CONTEXT_DQ_FLUSH_FLAG_EN (0x1<<2) /* BitField agg_vars2Various aggregative variables Enable decision rule based on dq_spare_flag */ 2898 #define __XSTORM_TOE_AG_CONTEXT_DQ_FLUSH_FLAG_EN_SHIFT 2 2899 #define __XSTORM_TOE_AG_CONTEXT_AUX8_FLAG (0x1<<3) /* BitField agg_vars2Various aggregative variables auxiliary flag 8 */ 2900 #define __XSTORM_TOE_AG_CONTEXT_AUX8_FLAG_SHIFT 3 2901 #define __XSTORM_TOE_AG_CONTEXT_AUX9_FLAG (0x1<<4) /* BitField agg_vars2Various aggregative variables auxiliary flag 9 */ 2902 #define __XSTORM_TOE_AG_CONTEXT_AUX9_FLAG_SHIFT 4 2903 #define XSTORM_TOE_AG_CONTEXT_RESERVED53 (0x3<<5) /* BitField agg_vars2Various aggregative variables 0-NOP,1-EQ,2-NEQ */ 2904 #define XSTORM_TOE_AG_CONTEXT_RESERVED53_SHIFT 5 2905 #define __XSTORM_TOE_AG_CONTEXT_DQ_CF_EN (0x1<<7) /* BitField agg_vars2Various aggregative variables Enable decision rules based on aux4_cf */ 2906 #define __XSTORM_TOE_AG_CONTEXT_DQ_CF_EN_SHIFT 7 2907#elif defined(__LITTLE_ENDIAN) 2908 u8_t agg_vars2; 2909 #define __XSTORM_TOE_AG_CONTEXT_DQ_CF (0x3<<0) /* BitField agg_vars2Various aggregative variables auxiliary counter flag 4 */ 2910 #define __XSTORM_TOE_AG_CONTEXT_DQ_CF_SHIFT 0 2911 #define __XSTORM_TOE_AG_CONTEXT_DQ_FLUSH_FLAG_EN (0x1<<2) /* BitField agg_vars2Various aggregative variables Enable decision rule based on dq_spare_flag */ 2912 #define __XSTORM_TOE_AG_CONTEXT_DQ_FLUSH_FLAG_EN_SHIFT 2 2913 #define __XSTORM_TOE_AG_CONTEXT_AUX8_FLAG (0x1<<3) /* BitField agg_vars2Various aggregative variables auxiliary flag 8 */ 2914 #define __XSTORM_TOE_AG_CONTEXT_AUX8_FLAG_SHIFT 3 2915 #define __XSTORM_TOE_AG_CONTEXT_AUX9_FLAG (0x1<<4) /* BitField agg_vars2Various aggregative variables auxiliary flag 9 */ 2916 #define __XSTORM_TOE_AG_CONTEXT_AUX9_FLAG_SHIFT 4 2917 #define XSTORM_TOE_AG_CONTEXT_RESERVED53 (0x3<<5) /* BitField agg_vars2Various aggregative variables 0-NOP,1-EQ,2-NEQ */ 2918 #define XSTORM_TOE_AG_CONTEXT_RESERVED53_SHIFT 5 2919 #define __XSTORM_TOE_AG_CONTEXT_DQ_CF_EN (0x1<<7) /* BitField agg_vars2Various aggregative variables Enable decision rules based on aux4_cf */ 2920 #define __XSTORM_TOE_AG_CONTEXT_DQ_CF_EN_SHIFT 7 2921 u8_t agg_vars3; 2922 #define XSTORM_TOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0) /* BitField agg_vars3Various aggregative variables The physical queue number of queue index 2 */ 2923 #define XSTORM_TOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0 2924 #define __XSTORM_TOE_AG_CONTEXT_QUEUES_FLUSH_Q1_CF (0x3<<6) /* BitField agg_vars3Various aggregative variables auxiliary counter flag 19 */ 2925 #define __XSTORM_TOE_AG_CONTEXT_QUEUES_FLUSH_Q1_CF_SHIFT 6 2926 u8_t __agg_vars4 /* Various aggregative variables*/; 2927 u8_t cdu_reserved /* Used by the CDU for validation and debugging */; 2928#endif 2929 u32_t more_to_send /* The number of bytes left to send */; 2930#if defined(__BIG_ENDIAN) 2931 u16_t agg_vars5; 2932 #define __XSTORM_TOE_AG_CONTEXT_RESERVED54 (0x3<<0) /* BitField agg_vars5Various aggregative variables 0-NOP,1-EQ,2-NEQ */ 2933 #define __XSTORM_TOE_AG_CONTEXT_RESERVED54_SHIFT 0 2934 #define XSTORM_TOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2) /* BitField agg_vars5Various aggregative variables The physical queue number of queue index 0 */ 2935 #define XSTORM_TOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2 2936 #define XSTORM_TOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8) /* BitField agg_vars5Various aggregative variables The physical queue number of queue index 1 */ 2937 #define XSTORM_TOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8 2938 #define __XSTORM_TOE_AG_CONTEXT_RESERVED56 (0x3<<14) /* BitField agg_vars5Various aggregative variables 0-NOP,1-EQ,2-NEQ */ 2939 #define __XSTORM_TOE_AG_CONTEXT_RESERVED56_SHIFT 14 2940 u16_t __agg_val4_th /* aggregated value 4 - threshold */; 2941#elif defined(__LITTLE_ENDIAN) 2942 u16_t __agg_val4_th /* aggregated value 4 - threshold */; 2943 u16_t agg_vars5; 2944 #define __XSTORM_TOE_AG_CONTEXT_RESERVED54 (0x3<<0) /* BitField agg_vars5Various aggregative variables 0-NOP,1-EQ,2-NEQ */ 2945 #define __XSTORM_TOE_AG_CONTEXT_RESERVED54_SHIFT 0 2946 #define XSTORM_TOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2) /* BitField agg_vars5Various aggregative variables The physical queue number of queue index 0 */ 2947 #define XSTORM_TOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2 2948 #define XSTORM_TOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8) /* BitField agg_vars5Various aggregative variables The physical queue number of queue index 1 */ 2949 #define XSTORM_TOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8 2950 #define __XSTORM_TOE_AG_CONTEXT_RESERVED56 (0x3<<14) /* BitField agg_vars5Various aggregative variables 0-NOP,1-EQ,2-NEQ */ 2951 #define __XSTORM_TOE_AG_CONTEXT_RESERVED56_SHIFT 14 2952#endif 2953 struct xstorm_toe_tcp_ag_context_section tcp /* TCP context section, shared in TOE and ISCSI */; 2954#if defined(__BIG_ENDIAN) 2955 u16_t __agg_vars7 /* Various aggregative variables*/; 2956 u8_t __agg_val3_th /* Aggregated value 3 - threshold */; 2957 u8_t __agg_vars6 /* Various aggregative variables*/; 2958#elif defined(__LITTLE_ENDIAN) 2959 u8_t __agg_vars6 /* Various aggregative variables*/; 2960 u8_t __agg_val3_th /* Aggregated value 3 - threshold */; 2961 u16_t __agg_vars7 /* Various aggregative variables*/; 2962#endif 2963#if defined(__BIG_ENDIAN) 2964 u16_t __agg_val11_th /* aggregated value 11 - threshold */; 2965 u16_t __agg_val11 /* aggregated value 11 */; 2966#elif defined(__LITTLE_ENDIAN) 2967 u16_t __agg_val11 /* aggregated value 11 */; 2968 u16_t __agg_val11_th /* aggregated value 11 - threshold */; 2969#endif 2970#if defined(__BIG_ENDIAN) 2971 u8_t __reserved1; 2972 u8_t __agg_val6_th /* aggregated value 6 - threshold */; 2973 u16_t __agg_val9 /* aggregated value 9 */; 2974#elif defined(__LITTLE_ENDIAN) 2975 u16_t __agg_val9 /* aggregated value 9 */; 2976 u8_t __agg_val6_th /* aggregated value 6 - threshold */; 2977 u8_t __reserved1; 2978#endif 2979#if defined(__BIG_ENDIAN) 2980 u16_t __agg_val2_th /* Aggregated value 2 - threshold */; 2981 u16_t cmp_bd_cons /* BD Consumer from the Completor */; 2982#elif defined(__LITTLE_ENDIAN) 2983 u16_t cmp_bd_cons /* BD Consumer from the Completor */; 2984 u16_t __agg_val2_th /* Aggregated value 2 - threshold */; 2985#endif 2986 u32_t __agg_vars8 /* Various aggregative variables*/; 2987#if defined(__BIG_ENDIAN) 2988 u16_t __agg_misc0 /* Misc aggregated variable 0 */; 2989 u16_t __agg_val4 /* aggregated value 4 */; 2990#elif defined(__LITTLE_ENDIAN) 2991 u16_t __agg_val4 /* aggregated value 4 */; 2992 u16_t __agg_misc0 /* Misc aggregated variable 0 */; 2993#endif 2994#if defined(__BIG_ENDIAN) 2995 u8_t __agg_val3 /* Aggregated value 3 */; 2996 u8_t __agg_val6 /* Aggregated value 6 */; 2997 u8_t __agg_val5_th /* Aggregated value 5 - threshold */; 2998 u8_t __agg_val5 /* Aggregated value 5 */; 2999#elif defined(__LITTLE_ENDIAN) 3000 u8_t __agg_val5 /* Aggregated value 5 */; 3001 u8_t __agg_val5_th /* Aggregated value 5 - threshold */; 3002 u8_t __agg_val6 /* Aggregated value 6 */; 3003 u8_t __agg_val3 /* Aggregated value 3 */; 3004#endif 3005#if defined(__BIG_ENDIAN) 3006 u16_t __agg_misc1 /* Spare value for aggregation. NOTE: this value is used in the retransmit decision rule if CmpSeqDecMask is 0. In that case it is intended to be CmpBdSize. */; 3007 u16_t __bd_ind_max_val /* modulo value for bd_prod */; 3008#elif defined(__LITTLE_ENDIAN) 3009 u16_t __bd_ind_max_val /* modulo value for bd_prod */; 3010 u16_t __agg_misc1 /* Spare value for aggregation. NOTE: this value is used in the retransmit decision rule if CmpSeqDecMask is 0. In that case it is intended to be CmpBdSize. */; 3011#endif 3012 u32_t cmp_bd_start_seq /* The sequence number of the start completion point (BD) */; 3013 u32_t cmp_bd_page_0_to_31 /* Misc aggregated variable 4 */; 3014 u32_t cmp_bd_page_32_to_63 /* spare aggregated variable 5 */; 3015}; 3016 3017 3018 3019/* 3020 * doorbell message sent to the chip 3021 */ 3022struct doorbell 3023{ 3024#if defined(__BIG_ENDIAN) 3025 u16_t zero_fill2 /* driver must zero this field! */; 3026 u8_t zero_fill1 /* driver must zero this field! */; 3027 struct doorbell_hdr_t header; 3028#elif defined(__LITTLE_ENDIAN) 3029 struct doorbell_hdr_t header; 3030 u8_t zero_fill1 /* driver must zero this field! */; 3031 u16_t zero_fill2 /* driver must zero this field! */; 3032#endif 3033}; 3034 3035 3036 3037/* 3038 * doorbell message sent to the chip 3039 */ 3040struct doorbell_set_prod 3041{ 3042#if defined(__BIG_ENDIAN) 3043 u16_t prod /* Producer index to be set */; 3044 u8_t zero_fill1 /* driver must zero this field! */; 3045 struct doorbell_hdr_t header; 3046#elif defined(__LITTLE_ENDIAN) 3047 struct doorbell_hdr_t header; 3048 u8_t zero_fill1 /* driver must zero this field! */; 3049 u16_t prod /* Producer index to be set */; 3050#endif 3051}; 3052 3053 3054struct regpair_native_t 3055{ 3056 u32_t lo /* low word for reg-pair */; 3057 u32_t hi /* high word for reg-pair */; 3058}; 3059 3060 3061struct regpair_t 3062{ 3063 u32_t lo /* low word for reg-pair */; 3064 u32_t hi /* high word for reg-pair */; 3065}; 3066 3067 3068 3069 3070 3071 3072 3073/* 3074 * Classify rule opcodes in E2/E3 3075 */ 3076enum classify_rule 3077{ 3078 CLASSIFY_RULE_OPCODE_MAC /* Add/remove a MAC address */, 3079 CLASSIFY_RULE_OPCODE_VLAN /* Add/remove a VLAN */, 3080 CLASSIFY_RULE_OPCODE_PAIR /* Add/remove a MAC-VLAN pair */, 3081 CLASSIFY_RULE_OPCODE_VXLAN /* Add/remove a VXLAN entry (Inner MAC / VNI pair) */, 3082 MAX_CLASSIFY_RULE}; 3083 3084 3085/* 3086 * Classify rule types in E2/E3 3087 */ 3088enum classify_rule_action_type 3089{ 3090 CLASSIFY_RULE_REMOVE, 3091 CLASSIFY_RULE_ADD, 3092 MAX_CLASSIFY_RULE_ACTION_TYPE}; 3093 3094 3095/* 3096 * client init ramrod data $$KEEP_ENDIANNESS$$ 3097 */ 3098struct client_init_general_data 3099{ 3100 u8_t client_id /* client_id */; 3101 u8_t statistics_counter_id /* statistics counter id */; 3102 u8_t statistics_en_flg /* statistics en flg */; 3103 u8_t is_fcoe_flg /* is this an fcoe connection. (1 bit is used) */; 3104 u8_t activate_flg /* if 0 - the client is deactivate else the client is activate client (1 bit is used) */; 3105 u8_t sp_client_id /* the slow path rings client Id. */; 3106 u16_t mtu /* Host MTU from client config */; 3107 u8_t statistics_zero_flg /* if set FW will reset the statistic counter of this client */; 3108 u8_t func_id /* PCI function ID (0-71) */; 3109 u8_t cos /* The connection cos, if applicable */; 3110 u8_t traffic_type; 3111 u8_t fp_hsi_ver /* Hsi version */; 3112 u8_t reserved0[3]; 3113}; 3114 3115 3116/* 3117 * client init rx data $$KEEP_ENDIANNESS$$ 3118 */ 3119struct client_init_rx_data 3120{ 3121 u8_t tpa_en; 3122 #define CLIENT_INIT_RX_DATA_TPA_EN_IPV4 (0x1<<0) /* BitField tpa_entpa_enable tpa enable flg ipv4 */ 3123 #define CLIENT_INIT_RX_DATA_TPA_EN_IPV4_SHIFT 0 3124 #define CLIENT_INIT_RX_DATA_TPA_EN_IPV6 (0x1<<1) /* BitField tpa_entpa_enable tpa enable flg ipv6 */ 3125 #define CLIENT_INIT_RX_DATA_TPA_EN_IPV6_SHIFT 1 3126 #define CLIENT_INIT_RX_DATA_TPA_MODE (0x1<<2) /* BitField tpa_entpa_enable tpa mode (LRO or GRO) (use enum tpa_mode) */ 3127 #define CLIENT_INIT_RX_DATA_TPA_MODE_SHIFT 2 3128 #define CLIENT_INIT_RX_DATA_RESERVED5 (0x1F<<3) /* BitField tpa_entpa_enable */ 3129 #define CLIENT_INIT_RX_DATA_RESERVED5_SHIFT 3 3130 u8_t vmqueue_mode_en_flg /* If set, working in VMQueue mode (always consume one sge) */; 3131 u8_t extra_data_over_sgl_en_flg /* if set, put over sgl data from end of input message */; 3132 u8_t cache_line_alignment_log_size /* The log size of cache line alignment in bytes. Must be a power of 2. */; 3133 u8_t enable_dynamic_hc /* If set, dynamic HC is enabled */; 3134 u8_t max_sges_for_packet /* The maximal number of SGEs that can be used for one packet. depends on MTU and SGE size. must be 0 if SGEs are disabled */; 3135 u8_t client_qzone_id /* used in E2 only, to specify the HW queue zone ID used for this client rx producers */; 3136 u8_t drop_ip_cs_err_flg /* If set, this client drops packets with IP checksum error */; 3137 u8_t drop_tcp_cs_err_flg /* If set, this client drops packets with TCP checksum error */; 3138 u8_t drop_ttl0_flg /* If set, this client drops packets with TTL=0 */; 3139 u8_t drop_udp_cs_err_flg /* If set, this client drops packets with UDP checksum error */; 3140 u8_t inner_vlan_removal_enable_flg /* If set, inner VLAN removal is enabled for this client */; 3141 u8_t outer_vlan_removal_enable_flg /* If set, outer VLAN removal is enabled for this client */; 3142 u8_t status_block_id /* rx status block id */; 3143 u8_t rx_sb_index_number /* status block indices */; 3144 u8_t dont_verify_rings_pause_thr_flg /* If set, the rings pause thresholds will not be verified by firmware. */; 3145 u8_t max_tpa_queues /* maximal TPA queues allowed for this client */; 3146 u8_t silent_vlan_removal_flg /* if set, and the vlan is equal to requested vlan according to mask, the vlan will be remove without notifying the driver */; 3147 u16_t max_bytes_on_bd /* Maximum bytes that can be placed on a BD. The BD allocated size should include 2 more bytes (ip alignment) and alignment size (in case the address is not aligned) */; 3148 u16_t sge_buff_size /* Size of the buffers pointed by SGEs */; 3149 u8_t approx_mcast_engine_id /* In Everest2, if is_approx_mcast is set, this field specified which approximate multicast engine is associate with this client */; 3150 u8_t rss_engine_id /* In Everest2, if rss_mode is set, this field specified which RSS engine is associate with this client */; 3151 struct regpair_t bd_page_base /* BD page base address at the host */; 3152 struct regpair_t sge_page_base /* SGE page base address at the host */; 3153 struct regpair_t cqe_page_base /* Completion queue base address */; 3154 u8_t is_leading_rss; 3155 u8_t is_approx_mcast; 3156 u16_t max_agg_size /* maximal size for the aggregated TPA packets, reprted by the host */; 3157 u16_t state; 3158 #define CLIENT_INIT_RX_DATA_UCAST_DROP_ALL (0x1<<0) /* BitField staterx filters state drop all unicast packets */ 3159 #define CLIENT_INIT_RX_DATA_UCAST_DROP_ALL_SHIFT 0 3160 #define CLIENT_INIT_RX_DATA_UCAST_ACCEPT_ALL (0x1<<1) /* BitField staterx filters state accept all unicast packets (subject to vlan) */ 3161 #define