1*eef4f27bSRobert Mustacchi /* 2*eef4f27bSRobert Mustacchi * Copyright 2014-2017 Cavium, Inc. 3*eef4f27bSRobert Mustacchi * The contents of this file are subject to the terms of the Common Development 4*eef4f27bSRobert Mustacchi * and Distribution License, v.1, (the "License"). 5*eef4f27bSRobert Mustacchi * 6*eef4f27bSRobert Mustacchi * You may not use this file except in compliance with the License. 7*eef4f27bSRobert Mustacchi * 8*eef4f27bSRobert Mustacchi * You can obtain a copy of the License at available 9*eef4f27bSRobert Mustacchi * at http://opensource.org/licenses/CDDL-1.0 10*eef4f27bSRobert Mustacchi * 11*eef4f27bSRobert Mustacchi * See the License for the specific language governing permissions and 12*eef4f27bSRobert Mustacchi * limitations under the License. 13*eef4f27bSRobert Mustacchi */ 14*eef4f27bSRobert Mustacchi 15*eef4f27bSRobert Mustacchi 16*eef4f27bSRobert Mustacchi #ifndef _l5_defs_h_ 17*eef4f27bSRobert Mustacchi #define _l5_defs_h_ 18*eef4f27bSRobert Mustacchi 19*eef4f27bSRobert Mustacchi #include "5706_reg.h" 20*eef4f27bSRobert Mustacchi #include "l2_defs.h" 21*eef4f27bSRobert Mustacchi #include "l2_ftq.h" 22*eef4f27bSRobert Mustacchi 23*eef4f27bSRobert Mustacchi /* data structure defs: */ 24*eef4f27bSRobert Mustacchi 25*eef4f27bSRobert Mustacchi typedef struct ddp_tagged_msg_header 26*eef4f27bSRobert Mustacchi { 27*eef4f27bSRobert Mustacchi u16_t mpa_length; 28*eef4f27bSRobert Mustacchi u16_t control; 29*eef4f27bSRobert Mustacchi u32_t stag; 30*eef4f27bSRobert Mustacchi u64_t to; 31*eef4f27bSRobert Mustacchi } ddp_tagged_msg_header_t; 32*eef4f27bSRobert Mustacchi 33*eef4f27bSRobert Mustacchi typedef struct ddp_untagged_msg_header 34*eef4f27bSRobert Mustacchi { 35*eef4f27bSRobert Mustacchi u16_t mpa_length; 36*eef4f27bSRobert Mustacchi u16_t control; 37*eef4f27bSRobert Mustacchi union 38*eef4f27bSRobert Mustacchi { 39*eef4f27bSRobert Mustacchi u32_t reserved; 40*eef4f27bSRobert Mustacchi u32_t invalidated_stag; 41*eef4f27bSRobert Mustacchi } rdmap_rsvd; 42*eef4f27bSRobert Mustacchi u32_t queue_number; 43*eef4f27bSRobert Mustacchi u32_t msn; 44*eef4f27bSRobert Mustacchi u32_t mo; 45*eef4f27bSRobert Mustacchi } ddp_untagged_msg_header_t; 46*eef4f27bSRobert Mustacchi 47*eef4f27bSRobert Mustacchi typedef struct rdmap_read_request_header 48*eef4f27bSRobert Mustacchi { 49*eef4f27bSRobert Mustacchi ddp_untagged_msg_header_t ddp_header; 50*eef4f27bSRobert Mustacchi u32_t sink_stag; 51*eef4f27bSRobert Mustacchi u64_t sink_to; 52*eef4f27bSRobert Mustacchi u32_t length; 53*eef4f27bSRobert Mustacchi u32_t source_stag; 54*eef4f27bSRobert Mustacchi u64_t source_to; 55*eef4f27bSRobert Mustacchi } rdmap_read_request_header_t; 56*eef4f27bSRobert Mustacchi 57*eef4f27bSRobert Mustacchi 58*eef4f27bSRobert Mustacchi /**************************************************************************** 59*eef4f27bSRobert Mustacchi * L5 Window Reference Count Table Entry 60*eef4f27bSRobert Mustacchi ****************************************************************************/ 61*eef4f27bSRobert Mustacchi 62*eef4f27bSRobert Mustacchi typedef struct l5_window_ref_cnt_table_entry 63*eef4f27bSRobert Mustacchi { 64*eef4f27bSRobert Mustacchi u8_t wrcte_pidx; /* Incremented by CP whenever a SQ work request or 65*eef4f27bSRobert Mustacchi incoming RDMA Read Request is processed that 66*eef4f27bSRobert Mustacchi references the associated window for source data. */ 67*eef4f27bSRobert Mustacchi 68*eef4f27bSRobert Mustacchi u8_t wrcte_cidx; /* Incremented by COM whenever an entry is removed from 69*eef4f27bSRobert Mustacchi the command queue where the associated window is 70*eef4f27bSRobert Mustacchi the data source. */ 71*eef4f27bSRobert Mustacchi 72*eef4f27bSRobert Mustacchi } l5_window_ref_cnt_table_entry_t; 73*eef4f27bSRobert Mustacchi 74*eef4f27bSRobert Mustacchi 75*eef4f27bSRobert Mustacchi /* constants and macros: */ 76*eef4f27bSRobert Mustacchi 77*eef4f27bSRobert Mustacchi #define RDMA_WRITE_CMD 0 78*eef4f27bSRobert Mustacchi #define RDMA_READ_REQ_CMD 1 79*eef4f27bSRobert Mustacchi #define RDMA_READ_RSP_CMD 2 80*eef4f27bSRobert Mustacchi #define RDMA_SEND_CMD 3 81*eef4f27bSRobert Mustacchi #define RDMA_SEND_W_EVENT 4 82*eef4f27bSRobert Mustacchi 83*eef4f27bSRobert Mustacchi #define RDMA_MPA_HDR_LENGTH 2 84*eef4f27bSRobert Mustacchi #define RDMA_MPA_CRC_LENGTH 4 85*eef4f27bSRobert Mustacchi #define RDMA_MPA_MARKER_SIZE 4 86*eef4f27bSRobert Mustacchi 87*eef4f27bSRobert Mustacchi #define RDMA_DDP_TAGGED_HDR_LENGTH 14 88*eef4f27bSRobert Mustacchi #define RDMA_DDP_UNTAGGED_HDR_LENGTH 18 89*eef4f27bSRobert Mustacchi 90*eef4f27bSRobert Mustacchi #define RDMA_READ_REQ_MSG_LENGTH 28 91*eef4f27bSRobert Mustacchi 92*eef4f27bSRobert Mustacchi #define RDMA_WRITE_HDR_LENGTH (RDMA_MPA_HDR_LENGTH + RDMA_DDP_TAGGED_HDR_LENGTH) 93*eef4f27bSRobert Mustacchi #define RDMA_SEND_MSG_HDR_LENGTH (RDMA_MPA_HDR_LENGTH + RDMA_DDP_UNTAGGED_HDR_LENGTH) 94*eef4f27bSRobert Mustacchi #define RDMA_READ_REQ_HDR_LENGTH (RDMA_MPA_HDR_LENGTH + RDMA_DDP_UNTAGGED_HDR_LENGTH + RDMA_READ_REQ_MSG_LENGTH) 95*eef4f27bSRobert Mustacchi #define RDMA_READ_RESP_HDR_LENGTH (RDMA_MPA_HDR_LENGTH + RDMA_DDP_TAGGED_HDR_LENGTH) 96*eef4f27bSRobert Mustacchi 97*eef4f27bSRobert Mustacchi #define RDMA_STANDARD_L5_OVERHEAD (RDMA_STANDARD_HDR_LENGTH + RDMA_MPA_HDR_LENGTH + RDMA_MPA_CRC_LENGTH) 98*eef4f27bSRobert Mustacchi #define RDMA_READ_REQ_L5_OVERHEAD (RDMA_READ_REQ_HDR_LENGTH + RDMA_MPA_HDR_LENGTH + RDMA_MPA_CRC_LENGTH) 99*eef4f27bSRobert Mustacchi 100*eef4f27bSRobert Mustacchi #define RDMA_SEND_QUEUE_NUMBER 0x00000000 101*eef4f27bSRobert Mustacchi #define RDMA_READ_QUEUE_NUMBER 0x00000001 102*eef4f27bSRobert Mustacchi #define RDMA_TERM_QUEUE_NUMBER 0x00000002 103*eef4f27bSRobert Mustacchi 104*eef4f27bSRobert Mustacchi #define RDMA_MPA_MARKER_INTERVAL 512 /* MPA marker interval */ 105*eef4f27bSRobert Mustacchi #define RDMA_DATA_MARKER_INTERVAL (RDMA_MPA_MARKER_INTERVAL - RDMA_MPA_MARKER_SIZE) /* Data between markers */ 106*eef4f27bSRobert Mustacchi #define RDMA_MPA_MARKER_INTERVAL_SHIFT 9 107*eef4f27bSRobert Mustacchi 108*eef4f27bSRobert Mustacchi #define DDP_CTRL_RDMA_WRITE 0x8000 109*eef4f27bSRobert Mustacchi #define DDP_CTRL_RDMA_READ_REQ 0x0001 110*eef4f27bSRobert Mustacchi #define DDP_CTRL_RDMA_READ_RSP 0x8002 111*eef4f27bSRobert Mustacchi #define DDP_CTRL_SEND_MSG 0x0003 112*eef4f27bSRobert Mustacchi #define DDP_CTRL_SEND_INV_MSG 0x0004 113*eef4f27bSRobert Mustacchi #define DDP_CTRL_SEND_EVT_MSG 0x0005 114*eef4f27bSRobert Mustacchi #define DDP_CTRL_SEND_INV_EVT_MSG 0x0006 115*eef4f27bSRobert Mustacchi 116*eef4f27bSRobert Mustacchi #define DDP_CTRL_L_BIT 0x4000 117*eef4f27bSRobert Mustacchi #define DDP_CTRL_T_BIT 0x8000 118*eef4f27bSRobert Mustacchi 119*eef4f27bSRobert Mustacchi #define DDP_CTRL_DDP_VERSION_MASK 0x0300 120*eef4f27bSRobert Mustacchi #define DDP_CTRL_DDP_VERSION 0x0000 121*eef4f27bSRobert Mustacchi 122*eef4f27bSRobert Mustacchi #define DDP_TAGGED_HDR_LENGTH 14 123*eef4f27bSRobert Mustacchi #define DDP_UNTAGGED_HDR_LENGTH 18 124*eef4f27bSRobert Mustacchi 125*eef4f27bSRobert Mustacchi #define DDP_QN_SEND_MESSAGE_QUEUE 0x00000000 126*eef4f27bSRobert Mustacchi #define DDP_QN_RDMA_READ_REQUEST_QUEUE 0x00000001 127*eef4f27bSRobert Mustacchi #define DDP_QN_RDMA_TERMINATE_QUEUE 0x00000002 128*eef4f27bSRobert Mustacchi 129*eef4f27bSRobert Mustacchi #define DDP_MAX_UNTAGGED_QUEUES 0x00000003 130*eef4f27bSRobert Mustacchi 131*eef4f27bSRobert Mustacchi #define RDMAP_CTRL_RDMAP_VERSION_MASK 0x00C0 132*eef4f27bSRobert Mustacchi #define RDMAP_CTRL_RDMAP_VERSION 0x0000 133*eef4f27bSRobert Mustacchi 134*eef4f27bSRobert Mustacchi #define RDMAP_CTRL_RDMAP_OPCODE_MASK 0x0F 135*eef4f27bSRobert Mustacchi 136*eef4f27bSRobert Mustacchi #define RDMAP_CTRL_RDMA_WRITE 0x00 137*eef4f27bSRobert Mustacchi #define RDMAP_CTRL_RDMA_READ_REQ 0x01 138*eef4f27bSRobert Mustacchi #define RDMAP_CTRL_RDMA_READ_RSP 0x02 139*eef4f27bSRobert Mustacchi #define RDMAP_CTRL_SEND_MSG 0x03 140*eef4f27bSRobert Mustacchi #define RDMAP_CTRL_SEND_W_INV_MSG 0x04 141*eef4f27bSRobert Mustacchi #define RDMAP_CTRL_SEND_W_EVT_MSG 0x05 142*eef4f27bSRobert Mustacchi #define RDMAP_CTRL_SEND_W_INV_EVT_MSG 0x06 143*eef4f27bSRobert Mustacchi 144*eef4f27bSRobert Mustacchi #define L5_MEMORY_REGION_STAG_BIT 0x00800000 145*eef4f27bSRobert Mustacchi #define L5_STAG_INDEX_MASK 0x00FFFFFF 146*eef4f27bSRobert Mustacchi #define L5_STAG_KEY_MASK 0xFF000000 147*eef4f27bSRobert Mustacchi #define L5_MIN_HOST_PAGE_SIZE 0x100 /* 256 bytes */ 148*eef4f27bSRobert Mustacchi #define L5_WINDOW_CACHE_KEY_BASE 0x2000 149*eef4f27bSRobert Mustacchi 150*eef4f27bSRobert Mustacchi 151*eef4f27bSRobert Mustacchi /* define context memory-related constants for things 152*eef4f27bSRobert Mustacchi like STag validation: */ 153*eef4f27bSRobert Mustacchi 154*eef4f27bSRobert Mustacchi #define L5_RX_VCID_SIZE 128 155*eef4f27bSRobert Mustacchi 156*eef4f27bSRobert Mustacchi 157*eef4f27bSRobert Mustacchi /* L5 RxP protocol errors: */ 158*eef4f27bSRobert Mustacchi 159*eef4f27bSRobert Mustacchi #define RX_PROTO_ERR_MPA_LEN_NON_MULT_FOUR 0x00000001 160*eef4f27bSRobert Mustacchi #define RX_PROTO_ERR_INVALID_MPA_LEN 0x00000002 161*eef4f27bSRobert Mustacchi #define RX_PROTO_ERR_INVALID_MARKER 0x00000003 162*eef4f27bSRobert Mustacchi #define RX_PROTO_ERR_INVALID_TAGGED_OPCODE 0x00000004 163*eef4f27bSRobert Mustacchi #define RX_PROTO_ERR_INVALID_UNTAGGED_OPCODE 0x00000005 164*eef4f27bSRobert Mustacchi 165*eef4f27bSRobert Mustacchi #define RX_PROTO_ERR_STAG_INVALID 0x00000006 166*eef4f27bSRobert Mustacchi #define RX_PROTO_ERR_STAG_BASE_BOUNDS 0x00000007 167*eef4f27bSRobert Mustacchi #define RX_PROTO_ERR_STAG_ACCESS_RIGHTS 0x00000008 168*eef4f27bSRobert Mustacchi #define RX_PROTO_ERR_STAG_PROTECTION 0x00000009 169*eef4f27bSRobert Mustacchi #define RX_PROTO_ERR_STAG_TO_WRAP 0x0000000A 170*eef4f27bSRobert Mustacchi 171*eef4f27bSRobert Mustacchi #define RX_PROTO_ERR_INVALID_DDP_VERSION 0x0000000B 172*eef4f27bSRobert Mustacchi #define RX_PROTO_ERR_INVALID_RDMAP_VERSION 0x0000000C 173*eef4f27bSRobert Mustacchi #define RX_PROTO_ERR_INVALID_DDP_QUEUE_NUMBER 0x0000000D 174*eef4f27bSRobert Mustacchi #define RX_PROTO_ERR_IRD_EXCEEDED 0x0000000E 175*eef4f27bSRobert Mustacchi 176*eef4f27bSRobert Mustacchi #define RX_PROTO_ERR_MSN_GAP 0x0000000F 177*eef4f27bSRobert Mustacchi #define RX_PROTO_ERR_MSN_RANGE 0x00000010 178*eef4f27bSRobert Mustacchi 179*eef4f27bSRobert Mustacchi #define RX_PROTO_ERR_NO_RCV_BUFF_AVAIL 0x00000011 180*eef4f27bSRobert Mustacchi #define RX_PROTO_ERR_RCV_BASE_BOUNDS 0x00000012 181*eef4f27bSRobert Mustacchi #define RX_PROTO_ERR_RCV_MO_WRAP 0x00000013 182*eef4f27bSRobert Mustacchi 183*eef4f27bSRobert Mustacchi #define RX_PROTO_ERR_INVALID_MPA_CRC 0x00000014 184*eef4f27bSRobert Mustacchi 185*eef4f27bSRobert Mustacchi #define RX_PROTO_ERR_NO_RCV_BUFF_POSTED 0x00000080 186*eef4f27bSRobert Mustacchi 187*eef4f27bSRobert Mustacchi #define RX_PROTO_ERR_TERM_MSG_RECEIVED 0x000000FF 188*eef4f27bSRobert Mustacchi 189*eef4f27bSRobert Mustacchi /* L5 */ 190*eef4f27bSRobert Mustacchi #define L5_TCP_MAX_DACK 2 191*eef4f27bSRobert Mustacchi 192*eef4f27bSRobert Mustacchi /* Iscsi */ 193*eef4f27bSRobert Mustacchi 194*eef4f27bSRobert Mustacchi //#define THIN_CONN_ESTAB 195*eef4f27bSRobert Mustacchi 196*eef4f27bSRobert Mustacchi #define RDMA_CONFIG_CRC_OFFSET_SHIFT 18 197*eef4f27bSRobert Mustacchi 198*eef4f27bSRobert Mustacchi #define VCID_SIZE 128 199*eef4f27bSRobert Mustacchi #define VCID_SHIFT 7 200*eef4f27bSRobert Mustacchi 201*eef4f27bSRobert Mustacchi #define CID_ENC(_idx) ((_idx)<<VCID_SHIFT) 202*eef4f27bSRobert Mustacchi 203*eef4f27bSRobert Mustacchi #define CID_ISCSI_CONF_PARAMS CID_ENC(46) // context ID of iSCSI configuration params 204*eef4f27bSRobert Mustacchi 205*eef4f27bSRobert Mustacchi #define MAX_RQ_BUF_SIZE 256 206*eef4f27bSRobert Mustacchi #define ISCSI_CRC_SIZE 4 207*eef4f27bSRobert Mustacchi #define ISCSI_CRC_SIZE_LOG2 2 208*eef4f27bSRobert Mustacchi #define ISCSI_HDR_SIZE 48 209*eef4f27bSRobert Mustacchi #define ISCSI_CRC_RESULT 0x1c2d19ed 210*eef4f27bSRobert Mustacchi 211*eef4f27bSRobert Mustacchi #define ISCSI_CRC_TABLE_SIZE 256 212*eef4f27bSRobert Mustacchi 213*eef4f27bSRobert Mustacchi #define ISCSI_PROCESS_ERROR (-1) 214*eef4f27bSRobert Mustacchi #define ISCSI_PROCESS_WARNING (-2) 215*eef4f27bSRobert Mustacchi #define ISCSI_SILENT_DROP (-3) 216*eef4f27bSRobert Mustacchi 217*eef4f27bSRobert Mustacchi /* Completion types */ 218*eef4f27bSRobert Mustacchi #define ISCSI_COMP_TYPE_MP (0<<0) 219*eef4f27bSRobert Mustacchi #define ISCSI_COMP_TYPE_FP (1<<0) 220*eef4f27bSRobert Mustacchi 221*eef4f27bSRobert Mustacchi /* Command types for placement in RV2P */ 222*eef4f27bSRobert Mustacchi #define ISCSI_PLACE_TYPE_RQ (0<<0) 223*eef4f27bSRobert Mustacchi #define ISCSI_PLACE_TYPE_SGL (1<<0) 224*eef4f27bSRobert Mustacchi 225*eef4f27bSRobert Mustacchi /* RV2P iscsi placement opcodes */ 226*eef4f27bSRobert Mustacchi #define GENERIC_OPCODE_RV2PPQ_VALUE_ISCSI_SGL_PLACE (22<<0) 227*eef4f27bSRobert Mustacchi #define GENERIC_OPCODE_RV2PPQ_VALUE_ISCSI_RQ_PLACE (23<<0) 228*eef4f27bSRobert Mustacchi #define GENERIC_OPCODE_RV2PPQ_VALUE_ISCSI_RQ_FLUSH (24<<0) 229*eef4f27bSRobert Mustacchi #define GENERIC_OPCODE_RV2PPQ_VALUE_ISCSI_SGL_FLUSH (25<<0) 230*eef4f27bSRobert Mustacchi 231*eef4f27bSRobert Mustacchi /* COM L5 (iSCSI/RDMA) opaque types */ 232*eef4f27bSRobert Mustacchi #define L5_OPAQUE_TCP_ACK_TYPE (0x80) 233*eef4f27bSRobert Mustacchi #define L5_OPAQUE_TCP_ERROR_TYPE (0x81) 234*eef4f27bSRobert Mustacchi 235*eef4f27bSRobert Mustacchi /* COM iSCSI opaque types */ 236*eef4f27bSRobert Mustacchi #define ISCSI_OPAQUE_COMPLETION_TYPE (0x82) 237*eef4f27bSRobert Mustacchi #define ISCSI_OPAQUE_FREE_MBUF_TYPE (0x83) 238*eef4f27bSRobert Mustacchi #define ISCSI_OPAQUE_ERROR_TYPE (0x84) 239*eef4f27bSRobert Mustacchi #define ISCSI_OPAQUE_FREE_CU_MBUF_TYPE (0x85) 240*eef4f27bSRobert Mustacchi 241*eef4f27bSRobert Mustacchi #define HDR_ISCSI_OPCODE (0x3f<<0) 242*eef4f27bSRobert Mustacchi 243*eef4f27bSRobert Mustacchi #define ISCSI_INVALID_VALUE (0xffffffff) 244*eef4f27bSRobert Mustacchi 245*eef4f27bSRobert Mustacchi #define TCP_L5CM_MAX_RETRIES 3 246*eef4f27bSRobert Mustacchi 247*eef4f27bSRobert Mustacchi typedef struct iscsi_ctx_offsets 248*eef4f27bSRobert Mustacchi { 249*eef4f27bSRobert Mustacchi u32_t task_offset; // offset of the task array 250*eef4f27bSRobert Mustacchi u32_t r2tq_offset; // offset of R2TQ section 251*eef4f27bSRobert Mustacchi 252*eef4f27bSRobert Mustacchi u32_t max_num_of_tasks; // maximal number of pending tasks 253*eef4f27bSRobert Mustacchi u32_t max_num_of_ccells; // maximal number of ccells 254*eef4f27bSRobert Mustacchi } iscsi_ctx_offsets_t; 255*eef4f27bSRobert Mustacchi 256*eef4f27bSRobert Mustacchi 257*eef4f27bSRobert Mustacchi /* 258*eef4f27bSRobert Mustacchi * rv2ppq_iscsi_sgl_place definition 259*eef4f27bSRobert Mustacchi */ 260*eef4f27bSRobert Mustacchi typedef struct rv2ppq_iscsi_sgl_place 261*eef4f27bSRobert Mustacchi { 262*eef4f27bSRobert Mustacchi u32_t iscsi_sgl_place_cid; 263*eef4f27bSRobert Mustacchi u32_t iscsi_sgl_place_mbuf_cluster; 264*eef4f27bSRobert Mustacchi u16_t iscsi_sgl_place_operand_flags; 265*eef4f27bSRobert Mustacchi #define ISCSI_PLACE_OPERAND_FLAGS_LAST_PKT (1<<7) 266*eef4f27bSRobert Mustacchi #define ISCSI_PLACE_OPERAND_FLAGS_FLUSH (1<<11) 267*eef4f27bSRobert Mustacchi #define ISCSI_PLACE_OPERAND_FLAGS_USE_SEED (1<<12) 268*eef4f27bSRobert Mustacchi #define ISCSI_PLACE_OPERAND_FLAGS_DIGEST_EN (1<<13) 269*eef4f27bSRobert Mustacchi #define ISCSI_PLACE_OPERAND_FLAGS_COMPLETE (1<<14) 270*eef4f27bSRobert Mustacchi /* overloading bit 14 */ 271*eef4f27bSRobert Mustacchi #define ISCSI_PLACE_OPERAND_FLAGS_CU_PKT (1<<14) 272*eef4f27bSRobert Mustacchi #define ISCSI_PLACE_OPERAND_FLAGS_FREE_MBUF (1<<15) 273*eef4f27bSRobert Mustacchi 274*eef4f27bSRobert Mustacchi u8_t iscsi_sgl_place_tcp_flags; 275*eef4f27bSRobert Mustacchi u8_t iscsi_sgl_place_opcode; 276*eef4f27bSRobert Mustacchi u16_t iscsi_sgl_place_offset; //cut in COM 277*eef4f27bSRobert Mustacchi u16_t iscsi_sgl_place_length; //cut in COM 278*eef4f27bSRobert Mustacchi u16_t iscsi_sgl_place_ctx_offset_to_pad_baddr; 279*eef4f27bSRobert Mustacchi u16_t iscsi_sgl_place_num_pad_bytes; 280*eef4f27bSRobert Mustacchi u32_t iscsi_sgl_place_reserved1; 281*eef4f27bSRobert Mustacchi u32_t iscsi_sgl_place_tcp_ack_sn; 282*eef4f27bSRobert Mustacchi u32_t iscsi_sgl_place_reserved2[2]; //cut in COM 283*eef4f27bSRobert Mustacchi u32_t iscsi_sgl_place_crc_seed; 284*eef4f27bSRobert Mustacchi #define ISCSI_PLACE_CRC_SEED_VAL (0xFFFFFFFF) 285*eef4f27bSRobert Mustacchi 286*eef4f27bSRobert Mustacchi u32_t iscsi_sgl_place_task_cache_key; 287*eef4f27bSRobert Mustacchi u32_t iscsi_sgl_place_task_cid; 288*eef4f27bSRobert Mustacchi u32_t iscsi_sgl_place_rdma_action; 289*eef4f27bSRobert Mustacchi } rv2ppq_iscsi_sgl_place_t; 290*eef4f27bSRobert Mustacchi 291*eef4f27bSRobert Mustacchi /* 292*eef4f27bSRobert Mustacchi * rv2ppq_iscsi_rq_place definition 293*eef4f27bSRobert Mustacchi */ 294*eef4f27bSRobert Mustacchi typedef struct rv2ppq_iscsi_rq_place 295*eef4f27bSRobert Mustacchi { 296*eef4f27bSRobert Mustacchi u32_t iscsi_rq_place_cid; 297*eef4f27bSRobert Mustacchi u32_t iscsi_rq_place_mbuf_cluster; 298*eef4f27bSRobert Mustacchi u16_t iscsi_rq_place_operand_flags; 299*eef4f27bSRobert Mustacchi #define ISCSI_PLACE_OPERAND_FLAGS_PAGE_SIZE_SHIFT (8) 300*eef4f27bSRobert Mustacchi #define ISCSI_PLACE_OPERAND_FLAGS_PAGE_SIZE_MASK (0xf<<8) 301*eef4f27bSRobert Mustacchi 302*eef4f27bSRobert Mustacchi u8_t iscsi_rq_place_tcp_flags; 303*eef4f27bSRobert Mustacchi u8_t iscsi_rq_place_opcode; 304*eef4f27bSRobert Mustacchi u16_t iscsi_rq_place_offset; //cut in COM 305*eef4f27bSRobert Mustacchi u16_t iscsi_rq_place_length; //cut in COM 306*eef4f27bSRobert Mustacchi u16_t iscsi_rq_place_ctx_offset_to_pad_baddr; 307*eef4f27bSRobert Mustacchi u16_t iscsi_rq_place_num_pad_bytes; 308*eef4f27bSRobert Mustacchi u32_t iscsi_rq_place_first_page_offset; 309*eef4f27bSRobert Mustacchi u32_t iscsi_rq_place_tcp_ack_sn; 310*eef4f27bSRobert Mustacchi u32_t iscsi_rq_place_page_table_base_addr_h; //cut in COM 311*eef4f27bSRobert Mustacchi u32_t iscsi_rq_place_page_table_base_addr_l; //cut in COM 312*eef4f27bSRobert Mustacchi u32_t iscsi_rq_place_crc_seed; 313*eef4f27bSRobert Mustacchi u32_t iscsi_rq_place_rbdc_key; 314*eef4f27bSRobert Mustacchi u32_t iscsi_rq_place_rq_buffer_offset; 315*eef4f27bSRobert Mustacchi u32_t iscsi_rq_place_rdma_action; 316*eef4f27bSRobert Mustacchi } rv2ppq_iscsi_rq_place_t; 317*eef4f27bSRobert Mustacchi 318*eef4f27bSRobert Mustacchi /* 319*eef4f27bSRobert Mustacchi * rv2ppq_iscsi_sgl_flush definition 320*eef4f27bSRobert Mustacchi */ 321*eef4f27bSRobert Mustacchi typedef struct rv2ppq_iscsi_sgl_flush 322*eef4f27bSRobert Mustacchi { 323*eef4f27bSRobert Mustacchi u32_t iscsi_sgl_flush_task_cid; 324*eef4f27bSRobert Mustacchi u32_t iscsi_sgl_flush_unused_a; 325*eef4f27bSRobert Mustacchi u16_t iscsi_sgl_flush_unsused_b; 326*eef4f27bSRobert Mustacchi u8_t iscsi_sgl_flush_unsused_c; 327*eef4f27bSRobert Mustacchi u8_t iscsi_sgl_flush_opcode; 328*eef4f27bSRobert Mustacchi u32_t iscsi_sgl_flush_unsused_d[9]; 329*eef4f27bSRobert Mustacchi } rv2ppq_iscsi_sgl_flush_t; 330*eef4f27bSRobert Mustacchi 331*eef4f27bSRobert Mustacchi /* 332*eef4f27bSRobert Mustacchi * rv2ppq_iscsi_rq_flush definition 333*eef4f27bSRobert Mustacchi */ 334*eef4f27bSRobert Mustacchi typedef struct rv2ppq_iscsi_rq_flush 335*eef4f27bSRobert Mustacchi { 336*eef4f27bSRobert Mustacchi u32_t iscsi_rq_flush_cid; 337*eef4f27bSRobert Mustacchi u32_t iscsi_rq_flush_unsused_a; 338*eef4f27bSRobert Mustacchi u16_t iscsi_rq_flush_unsused_b; 339*eef4f27bSRobert Mustacchi u8_t iscsi_rq_flush_unsused_c; 340*eef4f27bSRobert Mustacchi u8_t iscsi_rq_flush_opcode; 341*eef4f27bSRobert Mustacchi u32_t iscsi_rq_flush_unsused_d; 342*eef4f27bSRobert Mustacchi u16_t iscsi_rq_flush_rbdc_key; 343*eef4f27bSRobert Mustacchi u16_t iscsi_rq_flush_unsused_e; 344*eef4f27bSRobert Mustacchi u32_t iscsi_rq_flush_unsused_f[7]; 345*eef4f27bSRobert Mustacchi u32_t iscsi_rq_flush_rdma_spec; 346*eef4f27bSRobert Mustacchi } rv2ppq_iscsi_rq_flush_t; 347*eef4f27bSRobert Mustacchi 348*eef4f27bSRobert Mustacchi /* 349*eef4f27bSRobert Mustacchi * comq_iscsi_sgl_place definition 350*eef4f27bSRobert Mustacchi */ 351*eef4f27bSRobert Mustacchi typedef struct comq_iscsi_sgl_place 352*eef4f27bSRobert Mustacchi { 353*eef4f27bSRobert Mustacchi u32_t cid; 354*eef4f27bSRobert Mustacchi u32_t mbuf_cluster; 355*eef4f27bSRobert Mustacchi u16_t operand_flags; 356*eef4f27bSRobert Mustacchi u8_t tcp_flags; 357*eef4f27bSRobert Mustacchi u8_t opcode; 358*eef4f27bSRobert Mustacchi u16_t ctx_offset_to_pad_baddr; 359*eef4f27bSRobert Mustacchi u16_t num_pad_bytes; 360*eef4f27bSRobert Mustacchi u32_t unused; 361*eef4f27bSRobert Mustacchi u32_t tcp_ack_sn; 362*eef4f27bSRobert Mustacchi u32_t crc_result; 363*eef4f27bSRobert Mustacchi u32_t reserved; 364*eef4f27bSRobert Mustacchi u32_t task_cid; 365*eef4f27bSRobert Mustacchi 366*eef4f27bSRobert Mustacchi } comq_iscsi_sgl_place_t; 367*eef4f27bSRobert Mustacchi 368*eef4f27bSRobert Mustacchi typedef struct itt32_fields 369*eef4f27bSRobert Mustacchi { 370*eef4f27bSRobert Mustacchi u32_t task_rsrv : 16; 371*eef4f27bSRobert Mustacchi u32_t task_type : 2; 372*eef4f27bSRobert Mustacchi u32_t task_idx : 14; 373*eef4f27bSRobert Mustacchi 374*eef4f27bSRobert Mustacchi } itt32_fields_t; 375*eef4f27bSRobert Mustacchi 376*eef4f27bSRobert Mustacchi typedef union itt32_union 377*eef4f27bSRobert Mustacchi { 378*eef4f27bSRobert Mustacchi itt32_fields_t fields; 379*eef4f27bSRobert Mustacchi u32_t itt32; 380*eef4f27bSRobert Mustacchi 381*eef4f27bSRobert Mustacchi } itt32_union_t; 382*eef4f27bSRobert Mustacchi 383*eef4f27bSRobert Mustacchi /* 384*eef4f27bSRobert Mustacchi * rv2ppq_opaque_iscsi definition 385*eef4f27bSRobert Mustacchi */ 386*eef4f27bSRobert Mustacchi typedef struct rv2ppq_opaque_iscsi_comp_msg_a 387*eef4f27bSRobert Mustacchi { 388*eef4f27bSRobert Mustacchi u32_t cid; 389*eef4f27bSRobert Mustacchi u8_t unused_a; 390*eef4f27bSRobert Mustacchi u8_t iscsi_err_code; 391*eef4f27bSRobert Mustacchi u16_t hdr_itt; 392*eef4f27bSRobert Mustacchi u16_t opaque_flags_opcode; 393*eef4f27bSRobert Mustacchi u8_t tcp_flags; // Only 8 bits relevant 394*eef4f27bSRobert Mustacchi u8_t opcode; 395*eef4f27bSRobert Mustacchi u16_t o_iscsi_unused_b[2]; 396*eef4f27bSRobert Mustacchi u32_t hdr_dword0; 397*eef4f27bSRobert Mustacchi u32_t hdr_dword1; 398*eef4f27bSRobert Mustacchi u32_t tcp_ack_sn; 399*eef4f27bSRobert Mustacchi u32_t o_iscsi_unused_c[2]; 400*eef4f27bSRobert Mustacchi u32_t hdr_exp_cmd_sn; 401*eef4f27bSRobert Mustacchi u32_t hdr_max_cmd_sn; 402*eef4f27bSRobert Mustacchi u32_t hdr_res_count; 403*eef4f27bSRobert Mustacchi } rv2ppq_opaque_iscsi_comp_msg_a_t; 404*eef4f27bSRobert Mustacchi 405*eef4f27bSRobert Mustacchi typedef struct rv2ppq_opaque_iscsi_comp_msg_b 406*eef4f27bSRobert Mustacchi { 407*eef4f27bSRobert Mustacchi u32_t cid; 408*eef4f27bSRobert Mustacchi u32_t reserved0; 409*eef4f27bSRobert Mustacchi u16_t opaque_flags_opcode; 410*eef4f27bSRobert Mustacchi u8_t reserved1; 411*eef4f27bSRobert Mustacchi u8_t opcode; 412*eef4f27bSRobert Mustacchi u16_t o_iscsi_unused_a[2]; 413*eef4f27bSRobert Mustacchi u32_t hdr_dword2; 414*eef4f27bSRobert Mustacchi u32_t hdr_dword3; 415*eef4f27bSRobert Mustacchi u32_t hdr_ttt; 416*eef4f27bSRobert Mustacchi u32_t o_iscsi_unused_b[2]; 417*eef4f27bSRobert Mustacchi u32_t hdr_stat_sn; 418*eef4f27bSRobert Mustacchi u32_t hdr_dword9; 419*eef4f27bSRobert Mustacchi u32_t hdr_dword10; 420*eef4f27bSRobert Mustacchi } rv2ppq_opaque_iscsi_comp_msg_b_t; 421*eef4f27bSRobert Mustacchi 422*eef4f27bSRobert Mustacchi typedef struct rv2ppq_opaque_iscsi_free_mbuf 423*eef4f27bSRobert Mustacchi { 424*eef4f27bSRobert Mustacchi u32_t cid; 425*eef4f27bSRobert Mustacchi u32_t mbuf_cluster; 426*eef4f27bSRobert Mustacchi u16_t opaque_flags_opcode; 427*eef4f27bSRobert Mustacchi u8_t rsrv; 428*eef4f27bSRobert Mustacchi u8_t opcode; 429*eef4f27bSRobert Mustacchi u16_t o_iscsi_unused_a[2]; 430*eef4f27bSRobert Mustacchi u16_t o_iscsi_allowed16[6]; 431*eef4f27bSRobert Mustacchi u32_t o_iscsi_unused_b[2]; 432*eef4f27bSRobert Mustacchi u32_t o_iscsi_allowed32[3]; 433*eef4f27bSRobert Mustacchi } rv2ppq_opaque_iscsi_free_mbuf_t; 434*eef4f27bSRobert Mustacchi 435*eef4f27bSRobert Mustacchi typedef union rv2ppq_opaque_iscsi 436*eef4f27bSRobert Mustacchi { 437*eef4f27bSRobert Mustacchi rv2ppq_opaque_iscsi_comp_msg_a_t rv2p_o_comp_msg_a; 438*eef4f27bSRobert Mustacchi rv2ppq_opaque_iscsi_comp_msg_b_t rv2p_o_comp_msg_b; 439*eef4f27bSRobert Mustacchi rv2ppq_opaque_iscsi_free_mbuf_t rv2p_o_free_mbuf; 440*eef4f27bSRobert Mustacchi 441*eef4f27bSRobert Mustacchi } rv2ppq_opaque_iscsi_t; 442*eef4f27bSRobert Mustacchi 443*eef4f27bSRobert Mustacchi // Used for TCP messages from RXP to COM (Mutual to RDMA and iSCSI) 444*eef4f27bSRobert Mustacchi typedef struct rv2ppq_opaque_l5 445*eef4f27bSRobert Mustacchi { 446*eef4f27bSRobert Mustacchi u32_t cid; 447*eef4f27bSRobert Mustacchi u32_t o_l5_allowed32_a; 448*eef4f27bSRobert Mustacchi u16_t opaque_flags_opcode; 449*eef4f27bSRobert Mustacchi u8_t tcp_flags; 450*eef4f27bSRobert Mustacchi u8_t opcode; 451*eef4f27bSRobert Mustacchi u16_t o_l5_unused_a[2]; 452*eef4f27bSRobert Mustacchi u16_t o_l5_allowed16[4]; 453*eef4f27bSRobert Mustacchi u32_t tcp_ack_sn; 454*eef4f27bSRobert Mustacchi u32_t o_l5_unused_b[2]; 455*eef4f27bSRobert Mustacchi u32_t o_l5_allowed32_b[3]; 456*eef4f27bSRobert Mustacchi } rv2ppq_opaque_l5_t; 457*eef4f27bSRobert Mustacchi 458*eef4f27bSRobert Mustacchi /* 459*eef4f27bSRobert Mustacchi * comq_opaque_iscsi definition 460*eef4f27bSRobert Mustacchi */ 461*eef4f27bSRobert Mustacchi typedef struct comq_opaque_iscsi_comp_msg_a 462*eef4f27bSRobert Mustacchi { 463*eef4f27bSRobert Mustacchi u32_t cid; 464*eef4f27bSRobert Mustacchi u8_t unused; 465*eef4f27bSRobert Mustacchi u8_t iscsi_err_code; 466*eef4f27bSRobert Mustacchi u16_t hdr_itt; 467*eef4f27bSRobert Mustacchi u16_t opaque_flags_opcode; 468*eef4f27bSRobert Mustacchi u8_t tcp_flags; // Only 8 bits relevant 469*eef4f27bSRobert Mustacchi u8_t opcode; 470*eef4f27bSRobert Mustacchi u32_t hdr_dword0; 471*eef4f27bSRobert Mustacchi u32_t hdr_dword1; 472*eef4f27bSRobert Mustacchi u32_t tcp_ack_sn; 473*eef4f27bSRobert Mustacchi u32_t hdr_exp_cmd_sn; 474*eef4f27bSRobert Mustacchi u32_t hdr_max_cmd_sn; 475*eef4f27bSRobert Mustacchi u32_t hdr_res_count; 476*eef4f27bSRobert Mustacchi 477*eef4f27bSRobert Mustacchi } comq_opaque_iscsi_comp_msg_a_t; 478*eef4f27bSRobert Mustacchi 479*eef4f27bSRobert Mustacchi typedef struct comq_opaque_iscsi_comp_msg_b 480*eef4f27bSRobert Mustacchi { 481*eef4f27bSRobert Mustacchi u32_t cid; 482*eef4f27bSRobert Mustacchi u32_t reserved0; 483*eef4f27bSRobert Mustacchi u16_t opaque_flags_opcode; 484*eef4f27bSRobert Mustacchi u8_t reserved1; 485*eef4f27bSRobert Mustacchi u8_t opcode; 486*eef4f27bSRobert Mustacchi u32_t hdr_dword2; 487*eef4f27bSRobert Mustacchi u32_t hdr_dword3; 488*eef4f27bSRobert Mustacchi u32_t hdr_ttt; 489*eef4f27bSRobert Mustacchi u32_t hdr_stat_sn; 490*eef4f27bSRobert Mustacchi u32_t hdr_dword9; 491*eef4f27bSRobert Mustacchi u32_t hdr_dword10; 492*eef4f27bSRobert Mustacchi 493*eef4f27bSRobert Mustacchi } comq_opaque_iscsi_comp_msg_b_t; 494*eef4f27bSRobert Mustacchi 495*eef4f27bSRobert Mustacchi typedef union comq_opaque_iscsi 496*eef4f27bSRobert Mustacchi { 497*eef4f27bSRobert Mustacchi comq_opaque_iscsi_comp_msg_a_t com_o_comp_msg_a; 498*eef4f27bSRobert Mustacchi comq_opaque_iscsi_comp_msg_b_t com_o_comp_msg_b; 499*eef4f27bSRobert Mustacchi 500*eef4f27bSRobert Mustacchi } comq_opaque_iscsi_t; 501*eef4f27bSRobert Mustacchi 502*eef4f27bSRobert Mustacchi // TCP opaque message for L5 (no data) 503*eef4f27bSRobert Mustacchi typedef struct comq_opaque_l5 504*eef4f27bSRobert Mustacchi { 505*eef4f27bSRobert Mustacchi u32_t cid; 506*eef4f27bSRobert Mustacchi u32_t o_l5_allowed32_a; 507*eef4f27bSRobert Mustacchi u16_t opaque_flags_opcode; 508*eef4f27bSRobert Mustacchi u8_t tcp_flags; 509*eef4f27bSRobert Mustacchi u8_t opcode; 510*eef4f27bSRobert Mustacchi u16_t o_l5_allowed16[4]; 511*eef4f27bSRobert Mustacchi u32_t tcp_ack_sn; 512*eef4f27bSRobert Mustacchi u32_t o_l5_allowed32_b[3]; 513*eef4f27bSRobert Mustacchi 514*eef4f27bSRobert Mustacchi } comq_opaque_l5_t; 515*eef4f27bSRobert Mustacchi 516*eef4f27bSRobert Mustacchi typedef struct rv2ppq_opaque_iscsi_kcqe_comp 517*eef4f27bSRobert Mustacchi { 518*eef4f27bSRobert Mustacchi u32_t cid; 519*eef4f27bSRobert Mustacchi u32_t iscsi_conn_id; 520*eef4f27bSRobert Mustacchi u16_t opaque_flags_opcode; 521*eef4f27bSRobert Mustacchi u8_t reserved1; 522*eef4f27bSRobert Mustacchi u8_t opcode; 523*eef4f27bSRobert Mustacchi u16_t unused_a[2]; 524*eef4f27bSRobert Mustacchi u32_t reserved2[3]; 525*eef4f27bSRobert Mustacchi u32_t unused_b[2]; 526*eef4f27bSRobert Mustacchi u32_t status_code; 527*eef4f27bSRobert Mustacchi u32_t reserved3[2]; 528*eef4f27bSRobert Mustacchi } rv2ppq_opaque_iscsi_kcqe_comp_t; 529*eef4f27bSRobert Mustacchi 530*eef4f27bSRobert Mustacchi typedef struct comq_opaque_iscsi_kcqe_comp 531*eef4f27bSRobert Mustacchi { 532*eef4f27bSRobert Mustacchi u32_t cid; 533*eef4f27bSRobert Mustacchi u32_t iscsi_conn_id; 534*eef4f27bSRobert Mustacchi u16_t opaque_flags_opcode; 535*eef4f27bSRobert Mustacchi u8_t reserved1; 536*eef4f27bSRobert Mustacchi u8_t opcode; 537*eef4f27bSRobert Mustacchi u32_t reserved2[3]; 538*eef4f27bSRobert Mustacchi u32_t status_code; 539*eef4f27bSRobert Mustacchi u32_t reserved3[2]; 540*eef4f27bSRobert Mustacchi 541*eef4f27bSRobert Mustacchi } comq_opaque_iscsi_kcqe_comp_t; 542*eef4f27bSRobert Mustacchi 543*eef4f27bSRobert Mustacchi // L5 context manager parameters context struct 544*eef4f27bSRobert Mustacchi typedef struct l5_cm_fixed_connect_context 545*eef4f27bSRobert Mustacchi { 546*eef4f27bSRobert Mustacchi u32_t fixed_seed /* 32 bits of secret passed by the driver for port 0 */; 547*eef4f27bSRobert Mustacchi u32_t rsrv[31] /* */; 548*eef4f27bSRobert Mustacchi 549*eef4f27bSRobert Mustacchi } l5_cm_fixed_connect_context_t; 550*eef4f27bSRobert Mustacchi 551*eef4f27bSRobert Mustacchi // TCP general message for L5 552*eef4f27bSRobert Mustacchi typedef struct comq_l5_tcp 553*eef4f27bSRobert Mustacchi { 554*eef4f27bSRobert Mustacchi u32_t cid; 555*eef4f27bSRobert Mustacchi u32_t reserved0; 556*eef4f27bSRobert Mustacchi u16_t reserved1; 557*eef4f27bSRobert Mustacchi u8_t tcp_flags; 558*eef4f27bSRobert Mustacchi #define L5_FLAGS_TCP_SMALL_WIN (1<<0) 559*eef4f27bSRobert Mustacchi #define L5_FLAGS_TCP_SILENT_DROP (1<<1) 560*eef4f27bSRobert Mustacchi #define L5_FLAGS_TCP_RELEASE_MBUF (1<<2) 561*eef4f27bSRobert Mustacchi #define L5_FLAGS_TCP_ACK_PROCESS (1<<3) 562*eef4f27bSRobert Mustacchi #define L5_FLAGS_TCP_PURE_ACK (1<<4) // No payload and no window update 563*eef4f27bSRobert Mustacchi #define L5_FLAGS_TCP_IP_FRAG (1<<5) 564*eef4f27bSRobert Mustacchi #define L5_FLAGS_TCP_IP_OPTION (1<<6) 565*eef4f27bSRobert Mustacchi #define L5_FLAGS_TCP_URGENT_FLAG (1<<7) 566*eef4f27bSRobert Mustacchi 567*eef4f27bSRobert Mustacchi u8_t reserved2; 568*eef4f27bSRobert Mustacchi u32_t reserved3[2]; 569*eef4f27bSRobert Mustacchi u32_t tcp_ack_sn; 570*eef4f27bSRobert Mustacchi u32_t reserved4[3]; 571*eef4f27bSRobert Mustacchi 572*eef4f27bSRobert Mustacchi } comq_l5_tcp_t; 573*eef4f27bSRobert Mustacchi 574*eef4f27bSRobert Mustacchi 575*eef4f27bSRobert Mustacchi 576*eef4f27bSRobert Mustacchi 577*eef4f27bSRobert Mustacchi /* 578*eef4f27bSRobert Mustacchi * rv2ppq_l5_place definition 579*eef4f27bSRobert Mustacchi */ 580*eef4f27bSRobert Mustacchi typedef struct rv2ppq_l5_place_b 581*eef4f27bSRobert Mustacchi { 582*eef4f27bSRobert Mustacchi u32_t l5_place_cid; 583*eef4f27bSRobert Mustacchi u32_t l5_place_mbuf_cluster; 584*eef4f27bSRobert Mustacchi u16_t l5_place_operand_flags; 585*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_MARKERS_PRESENT (1<<0) 586*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_NEW_ISLAND (1<<1) 587*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_TCP_HOLE_CLOSED (1<<2) 588*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_IN_ORDER (1<<3) 589*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_LBIT_STATUS (1<<4) 590*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_FLUSH (1<<5) 591*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ (0xf<<8) 592*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_256 (0<<8) 593*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_512 (1<<8) 594*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_1K (2<<8) 595*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_2K (3<<8) 596*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_4K (4<<8) 597*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_8K (5<<8) 598*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_16K (6<<8) 599*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_32K (7<<8) 600*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_64K (8<<8) 601*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_128K (9<<8) 602*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_256K (10<<8) 603*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_512K (11<<8) 604*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_1M (12<<8) 605*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_2M (13<<8) 606*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_4M (14<<8) 607*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_8M (15<<8) 608*eef4f27bSRobert Mustacchi 609*eef4f27bSRobert Mustacchi u8_t l5_place_knum; 610*eef4f27bSRobert Mustacchi u8_t l5_place_opcode; 611*eef4f27bSRobert Mustacchi u16_t l5_place_offset; 612*eef4f27bSRobert Mustacchi u16_t l5_place_length; 613*eef4f27bSRobert Mustacchi u16_t l5_place_offset_to_first_marker; 614*eef4f27bSRobert Mustacchi u16_t l5_place_rbdc_key; 615*eef4f27bSRobert Mustacchi u32_t l5_place_first_page_offset; 616*eef4f27bSRobert Mustacchi u16_t l5_place_l5_header_length; 617*eef4f27bSRobert Mustacchi u16_t l5_place_l5_cmd_type; 618*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE (0xf<<0) 619*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_UNDEFINED (0<<0) 620*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_SEND (1<<0) 621*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_SEND_W_SE (2<<0) 622*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_SEND_W_INV (3<<0) 623*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_SEND_W_SE_INV (4<<0) 624*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_RDMA_WRITE (5<<0) 625*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_RDMA_READ (6<<0) 626*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_RDMA_READ_W_INV (7<<0) 627*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_WINDOW_BIND (8<<0) 628*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_FAST_REGISTER (9<<0) 629*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_LOCAL_INVALIDATE (10<<0) 630*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_RDMA_READ_RESPONSE (11<<0) 631*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_TCP_ACK (12<<0) 632*eef4f27bSRobert Mustacchi 633*eef4f27bSRobert Mustacchi u32_t l5_place_page_table_base_addr_h; 634*eef4f27bSRobert Mustacchi u32_t l5_place_page_table_base_addr_l; 635*eef4f27bSRobert Mustacchi u32_t l5_place_tcp_ack_seq; 636*eef4f27bSRobert Mustacchi u32_t l5_place_sink_bfr_target_offset_h; 637*eef4f27bSRobert Mustacchi u32_t l5_place_sink_bfr_target_offset_l; 638*eef4f27bSRobert Mustacchi u8_t l5_place_rdma_action; // no need to be cleared by RXP, RV2P will do it 639*eef4f27bSRobert Mustacchi u8_t l5_place_cs16_pkt_len; 640*eef4f27bSRobert Mustacchi u16_t l5_place_cs16; 641*eef4f27bSRobert Mustacchi } rv2ppq_l5_place_b_t; 642*eef4f27bSRobert Mustacchi 643*eef4f27bSRobert Mustacchi typedef struct rv2ppq_l5_place_l 644*eef4f27bSRobert Mustacchi { 645*eef4f27bSRobert Mustacchi u32_t l5_place_cid; 646*eef4f27bSRobert Mustacchi u32_t l5_place_mbuf_cluster; 647*eef4f27bSRobert Mustacchi u8_t l5_place_opcode; 648*eef4f27bSRobert Mustacchi u8_t l5_place_knum; 649*eef4f27bSRobert Mustacchi u16_t l5_place_operand_flags; 650*eef4f27bSRobert Mustacchi u16_t l5_place_length; 651*eef4f27bSRobert Mustacchi u16_t l5_place_offset; 652*eef4f27bSRobert Mustacchi u16_t l5_place_rbdc_key; 653*eef4f27bSRobert Mustacchi u16_t l5_place_offset_to_first_marker; 654*eef4f27bSRobert Mustacchi u32_t l5_place_first_page_offset; 655*eef4f27bSRobert Mustacchi u16_t l5_place_l5_cmd_type; 656*eef4f27bSRobert Mustacchi u16_t l5_place_l5_header_length; 657*eef4f27bSRobert Mustacchi u32_t l5_place_page_table_base_addr_h; 658*eef4f27bSRobert Mustacchi u32_t l5_place_page_table_base_addr_l; 659*eef4f27bSRobert Mustacchi u32_t l5_place_tcp_ack_seq; 660*eef4f27bSRobert Mustacchi u32_t l5_place_sink_bfr_target_offset_h; 661*eef4f27bSRobert Mustacchi u32_t l5_place_sink_bfr_target_offset_l; 662*eef4f27bSRobert Mustacchi u16_t l5_place_cs16; 663*eef4f27bSRobert Mustacchi u8_t l5_place_cs16_pkt_len; 664*eef4f27bSRobert Mustacchi u8_t l5_place_rdma_action; // no need to be cleared by RXP, RV2P will do it 665*eef4f27bSRobert Mustacchi } rv2ppq_l5_place_l_t; 666*eef4f27bSRobert Mustacchi 667*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN) 668*eef4f27bSRobert Mustacchi typedef rv2ppq_l5_place_l_t rv2ppq_l5_place_t; 669*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN) 670*eef4f27bSRobert Mustacchi typedef rv2ppq_l5_place_b_t rv2ppq_l5_place_t; 671*eef4f27bSRobert Mustacchi #endif 672*eef4f27bSRobert Mustacchi 673*eef4f27bSRobert Mustacchi 674*eef4f27bSRobert Mustacchi /* 675*eef4f27bSRobert Mustacchi * rv2ppq_l5_flush definition 676*eef4f27bSRobert Mustacchi */ 677*eef4f27bSRobert Mustacchi typedef struct rv2ppq_l5_flush_b 678*eef4f27bSRobert Mustacchi { 679*eef4f27bSRobert Mustacchi u32_t unused_0[2]; 680*eef4f27bSRobert Mustacchi u16_t unused_1; 681*eef4f27bSRobert Mustacchi u8_t unused_2; 682*eef4f27bSRobert Mustacchi u8_t l5_flush_opcode; 683*eef4f27bSRobert Mustacchi u32_t unused_3; 684*eef4f27bSRobert Mustacchi u16_t l5_flush_rbdc_key; 685*eef4f27bSRobert Mustacchi u16_t unused_4; 686*eef4f27bSRobert Mustacchi u32_t unused_5[7]; 687*eef4f27bSRobert Mustacchi u8_t l5_flush_rdma_action; // no need to be cleared by RXP, RV2P will do it 688*eef4f27bSRobert Mustacchi u8_t l5_flush_cs16_pkt_len; 689*eef4f27bSRobert Mustacchi u16_t l5_flush_cs16; 690*eef4f27bSRobert Mustacchi } rv2ppq_l5_flush_b_t; 691*eef4f27bSRobert Mustacchi 692*eef4f27bSRobert Mustacchi typedef struct rv2ppq_l5_flush_l 693*eef4f27bSRobert Mustacchi { 694*eef4f27bSRobert Mustacchi u32_t unused_0[2]; 695*eef4f27bSRobert Mustacchi u8_t l5_flush_opcode; 696*eef4f27bSRobert Mustacchi u8_t unused_2; 697*eef4f27bSRobert Mustacchi u16_t unused_1; 698*eef4f27bSRobert Mustacchi u32_t unused_3; 699*eef4f27bSRobert Mustacchi u16_t unused_4; 700*eef4f27bSRobert Mustacchi u16_t l5_flush_rbdc_key; 701*eef4f27bSRobert Mustacchi u32_t unused_5[7]; 702*eef4f27bSRobert Mustacchi u16_t l5_flush_cs16; 703*eef4f27bSRobert Mustacchi u8_t l5_flush_cs16_pkt_len; 704*eef4f27bSRobert Mustacchi u8_t l5_flush_rdma_action; // no need to be cleared by RXP, RV2P will do it 705*eef4f27bSRobert Mustacchi } rv2ppq_l5_flush_l_t; 706*eef4f27bSRobert Mustacchi 707*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN) 708*eef4f27bSRobert Mustacchi typedef rv2ppq_l5_flush_l_t rv2ppq_l5_flush_t; 709*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN) 710*eef4f27bSRobert Mustacchi typedef rv2ppq_l5_flush_b_t rv2ppq_l5_flush_t; 711*eef4f27bSRobert Mustacchi #endif 712*eef4f27bSRobert Mustacchi 713*eef4f27bSRobert Mustacchi 714*eef4f27bSRobert Mustacchi 715*eef4f27bSRobert Mustacchi /* 716*eef4f27bSRobert Mustacchi * comq_l5_place definition 717*eef4f27bSRobert Mustacchi */ 718*eef4f27bSRobert Mustacchi typedef struct comq_l5_place_b 719*eef4f27bSRobert Mustacchi { 720*eef4f27bSRobert Mustacchi u32_t l5_place_cid; 721*eef4f27bSRobert Mustacchi u32_t l5_place_mbuf_cluster; 722*eef4f27bSRobert Mustacchi u16_t l5_place_operand_flags; 723*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_MARKERS_PRESENT (1<<0) 724*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_NEW_ISLAND (1<<1) 725*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_TCP_HOLE_CLOSED (1<<2) 726*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_IN_ORDER (1<<3) 727*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_LBIT_STATUS (1<<4) 728*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ (0xf<<8) 729*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_256 (0<<8) 730*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_512 (1<<8) 731*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_1K (2<<8) 732*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_2K (3<<8) 733*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_4K (4<<8) 734*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_8K (5<<8) 735*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_16K (6<<8) 736*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_32K (7<<8) 737*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_64K (8<<8) 738*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_128K (9<<8) 739*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_256K (10<<8) 740*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_512K (11<<8) 741*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_1M (12<<8) 742*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_2M (13<<8) 743*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_4M (14<<8) 744*eef4f27bSRobert Mustacchi #define L5_PLACE_OPERAND_FLAGS_PG_SZ_8M (15<<8) 745*eef4f27bSRobert Mustacchi 746*eef4f27bSRobert Mustacchi u8_t l5_place_knum; 747*eef4f27bSRobert Mustacchi u8_t l5_place_opcode; 748*eef4f27bSRobert Mustacchi u16_t l5_place_offset_to_first_marker; 749*eef4f27bSRobert Mustacchi u16_t l5_place_rbdc_key; 750*eef4f27bSRobert Mustacchi u32_t l5_place_first_page_offset; 751*eef4f27bSRobert Mustacchi u16_t l5_place_l5_header_length; 752*eef4f27bSRobert Mustacchi u16_t l5_place_l5_cmd_type; 753*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE (0xf<<0) 754*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_UNDEFINED (0<<0) 755*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_SEND (1<<0) 756*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_SEND_W_SE (2<<0) 757*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_SEND_W_INV (3<<0) 758*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_SEND_W_SE_INV (4<<0) 759*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_RDMA_WRITE (5<<0) 760*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_RDMA_READ (6<<0) 761*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_RDMA_READ_W_INV (7<<0) 762*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_WINDOW_BIND (8<<0) 763*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_FAST_REGISTER (9<<0) 764*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_LOCAL_INVALIDATE (10<<0) 765*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_RDMA_READ_RESPONSE (11<<0) 766*eef4f27bSRobert Mustacchi #define L5_PLACE_L5_CMD_TYPE_CMD_VALUE_TCP_ACK (12<<0) 767*eef4f27bSRobert Mustacchi 768*eef4f27bSRobert Mustacchi u32_t l5_place_tcp_ack_seq; 769*eef4f27bSRobert Mustacchi u32_t l5_place_sink_bfr_target_offset_h; 770*eef4f27bSRobert Mustacchi u32_t l5_place_sink_bfr_target_offset_l; 771*eef4f27bSRobert Mustacchi u8_t l5_place_rdma_action; 772*eef4f27bSRobert Mustacchi u8_t l5_place_cs16_pkt_len; 773*eef4f27bSRobert Mustacchi u16_t l5_place_cs16; 774*eef4f27bSRobert Mustacchi } comq_l5_place_b_t; 775*eef4f27bSRobert Mustacchi 776*eef4f27bSRobert Mustacchi typedef struct comq_l5_place_l 777*eef4f27bSRobert Mustacchi 778*eef4f27bSRobert Mustacchi { 779*eef4f27bSRobert Mustacchi u32_t l5_place_cid; 780*eef4f27bSRobert Mustacchi u32_t l5_place_mbuf_cluster; 781*eef4f27bSRobert Mustacchi u8_t l5_place_opcode; 782*eef4f27bSRobert Mustacchi u8_t l5_place_knum; 783*eef4f27bSRobert Mustacchi u16_t l5_place_operand_flags; 784*eef4f27bSRobert Mustacchi u16_t l5_place_rbdc_key; 785*eef4f27bSRobert Mustacchi u16_t l5_place_offset_to_first_marker; 786*eef4f27bSRobert Mustacchi u32_t l5_place_first_page_offset; 787*eef4f27bSRobert Mustacchi u16_t l5_place_l5_cmd_type; 788*eef4f27bSRobert Mustacchi u16_t l5_place_l5_header_length; 789*eef4f27bSRobert Mustacchi u32_t l5_place_tcp_ack_seq; 790*eef4f27bSRobert Mustacchi u32_t l5_place_sink_bfr_target_offset_h; 791*eef4f27bSRobert Mustacchi u32_t l5_place_sink_bfr_target_offset_l; 792*eef4f27bSRobert Mustacchi u16_t l5_place_cs16; 793*eef4f27bSRobert Mustacchi u8_t l5_place_cs16_pkt_len; 794*eef4f27bSRobert Mustacchi u8_t l5_place_rdma_action; 795*eef4f27bSRobert Mustacchi } comq_l5_place_l_t; 796*eef4f27bSRobert Mustacchi 797*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN) 798*eef4f27bSRobert Mustacchi typedef comq_l5_place_l_t comq_l5_place_t; 799*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN) 800*eef4f27bSRobert Mustacchi typedef comq_l5_place_b_t comq_l5_place_t; 801*eef4f27bSRobert Mustacchi #endif 802*eef4f27bSRobert Mustacchi 803*eef4f27bSRobert Mustacchi 804*eef4f27bSRobert Mustacchi /* 805*eef4f27bSRobert Mustacchi * comq_l5_flush definition 806*eef4f27bSRobert Mustacchi */ 807*eef4f27bSRobert Mustacchi typedef struct comq_l5_flush_b 808*eef4f27bSRobert Mustacchi { 809*eef4f27bSRobert Mustacchi u32_t unused_0[2]; 810*eef4f27bSRobert Mustacchi u16_t unused_1; 811*eef4f27bSRobert Mustacchi u8_t unused_2; 812*eef4f27bSRobert Mustacchi u8_t l5_flush_opcode; 813*eef4f27bSRobert Mustacchi u16_t l5_flush_rbdc_key; 814*eef4f27bSRobert Mustacchi u16_t unused_3; 815*eef4f27bSRobert Mustacchi u32_t unused_4[5]; 816*eef4f27bSRobert Mustacchi u8_t l5_flush_rdma_action; 817*eef4f27bSRobert Mustacchi u8_t l5_flush_cs16_pkt_len; 818*eef4f27bSRobert Mustacchi u16_t l5_flush_cs16; 819*eef4f27bSRobert Mustacchi } comq_l5_flush_b_t; 820*eef4f27bSRobert Mustacchi 821*eef4f27bSRobert Mustacchi typedef struct comq_l5_flush_l 822*eef4f27bSRobert Mustacchi { 823*eef4f27bSRobert Mustacchi u32_t unused_0[2]; 824*eef4f27bSRobert Mustacchi u8_t l5_flush_opcode; 825*eef4f27bSRobert Mustacchi u8_t unused_2; 826*eef4f27bSRobert Mustacchi u16_t unused_1; 827*eef4f27bSRobert Mustacchi u16_t unused_3; 828*eef4f27bSRobert Mustacchi u16_t l5_flush_rbdc_key; 829*eef4f27bSRobert Mustacchi u32_t unused_4[5]; 830*eef4f27bSRobert Mustacchi u16_t l5_flush_cs16; 831*eef4f27bSRobert Mustacchi u8_t l5_flush_cs16_pkt_len; 832*eef4f27bSRobert Mustacchi u8_t l5_flush_rdma_action; 833*eef4f27bSRobert Mustacchi } comq_l5_flush_l_t; 834*eef4f27bSRobert Mustacchi 835*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN) 836*eef4f27bSRobert Mustacchi typedef comq_l5_flush_l_t comq_l5_flush_t; 837*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN) 838*eef4f27bSRobert Mustacchi typedef comq_l5_flush_b_t comq_l5_flush_t; 839*eef4f27bSRobert Mustacchi #endif 840*eef4f27bSRobert Mustacchi 841*eef4f27bSRobert Mustacchi /* 842*eef4f27bSRobert Mustacchi * l5_local_region_table_entry_b definition 843*eef4f27bSRobert Mustacchi */ 844*eef4f27bSRobert Mustacchi typedef struct l5_local_region_table_entry_b 845*eef4f27bSRobert Mustacchi { 846*eef4f27bSRobert Mustacchi u8_t rte_flags; 847*eef4f27bSRobert Mustacchi 848*eef4f27bSRobert Mustacchi u8_t rte_bind_cnt; 849*eef4f27bSRobert Mustacchi u16_t rte_pd; 850*eef4f27bSRobert Mustacchi } l5_local_region_table_entry_b_t; 851*eef4f27bSRobert Mustacchi 852*eef4f27bSRobert Mustacchi 853*eef4f27bSRobert Mustacchi 854*eef4f27bSRobert Mustacchi /* 855*eef4f27bSRobert Mustacchi * l5_local_region_table_entry_b definition 856*eef4f27bSRobert Mustacchi */ 857*eef4f27bSRobert Mustacchi typedef struct l5_local_region_table_entry_b_xi 858*eef4f27bSRobert Mustacchi { 859*eef4f27bSRobert Mustacchi u8_t rte_flags; 860*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK (0xff<<0) 861*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_UNDEFINED (0<<0) 862*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_VALID (1<<0) 863*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_LOCAL_READ (2<<0) 864*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_LOCAL_WRITE (4<<0) 865*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_REMOTE_REGION (8<<0) 866*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_ALLOW_WIND_BIND (16<<0) 867*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_INVALIDATE_IN_PROGRESS (32<<0) 868*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_RX_FLUSH_IN_PROGRESS (64<<0) 869*eef4f27bSRobert Mustacchi 870*eef4f27bSRobert Mustacchi u8_t rte_bind_cnt; 871*eef4f27bSRobert Mustacchi u16_t rte_pd; 872*eef4f27bSRobert Mustacchi } l5_local_region_table_entry_b_xi_t; 873*eef4f27bSRobert Mustacchi 874*eef4f27bSRobert Mustacchi 875*eef4f27bSRobert Mustacchi /* 876*eef4f27bSRobert Mustacchi * l5_local_region_table_entry_l definition 877*eef4f27bSRobert Mustacchi */ 878*eef4f27bSRobert Mustacchi typedef struct l5_local_region_table_entry_l 879*eef4f27bSRobert Mustacchi { 880*eef4f27bSRobert Mustacchi u16_t rte_pd; 881*eef4f27bSRobert Mustacchi u8_t rte_bind_cnt; 882*eef4f27bSRobert Mustacchi u8_t rte_flags; 883*eef4f27bSRobert Mustacchi 884*eef4f27bSRobert Mustacchi } l5_local_region_table_entry_l_t; 885*eef4f27bSRobert Mustacchi 886*eef4f27bSRobert Mustacchi 887*eef4f27bSRobert Mustacchi 888*eef4f27bSRobert Mustacchi /* 889*eef4f27bSRobert Mustacchi * l5_local_region_table_entry_l definition 890*eef4f27bSRobert Mustacchi */ 891*eef4f27bSRobert Mustacchi typedef struct l5_local_region_table_entry_l_xi 892*eef4f27bSRobert Mustacchi { 893*eef4f27bSRobert Mustacchi u16_t rte_pd; 894*eef4f27bSRobert Mustacchi u8_t rte_bind_cnt; 895*eef4f27bSRobert Mustacchi u8_t rte_flags; 896*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK (0xff<<0) 897*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_UNDEFINED (0<<0) 898*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_VALID (1<<0) 899*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_LOCAL_READ (2<<0) 900*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_LOCAL_WRITE (4<<0) 901*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_REMOTE_REGION (8<<0) 902*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_ALLOW_WIND_BIND (16<<0) 903*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_INVALIDATE_IN_PROGRESS (32<<0) 904*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_RX_FLUSH_IN_PROGRESS (64<<0) 905*eef4f27bSRobert Mustacchi 906*eef4f27bSRobert Mustacchi } l5_local_region_table_entry_l_xi_t; 907*eef4f27bSRobert Mustacchi 908*eef4f27bSRobert Mustacchi 909*eef4f27bSRobert Mustacchi /* 910*eef4f27bSRobert Mustacchi * l5_local_region_table_entry select 911*eef4f27bSRobert Mustacchi */ 912*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN) 913*eef4f27bSRobert Mustacchi typedef l5_local_region_table_entry_l_t l5_local_region_table_entry_t; 914*eef4f27bSRobert Mustacchi typedef l5_local_region_table_entry_l_xi_t l5_local_region_table_entry_xi_t; 915*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN) 916*eef4f27bSRobert Mustacchi typedef l5_local_region_table_entry_b_t l5_local_region_table_entry_t; 917*eef4f27bSRobert Mustacchi typedef l5_local_region_table_entry_b_xi_t l5_local_region_table_entry_xi_t; 918*eef4f27bSRobert Mustacchi #endif 919*eef4f27bSRobert Mustacchi 920*eef4f27bSRobert Mustacchi 921*eef4f27bSRobert Mustacchi /* 922*eef4f27bSRobert Mustacchi * l5_remote_region_table_entry_b definition 923*eef4f27bSRobert Mustacchi */ 924*eef4f27bSRobert Mustacchi typedef struct l5_remote_region_table_entry_b 925*eef4f27bSRobert Mustacchi { 926*eef4f27bSRobert Mustacchi u8_t rte_flags; 927*eef4f27bSRobert Mustacchi 928*eef4f27bSRobert Mustacchi u8_t rte_wintbl_stag_hi; 929*eef4f27bSRobert Mustacchi u16_t rte_wintbl_stag_lo; 930*eef4f27bSRobert Mustacchi } l5_remote_region_table_entry_b_t; 931*eef4f27bSRobert Mustacchi 932*eef4f27bSRobert Mustacchi 933*eef4f27bSRobert Mustacchi 934*eef4f27bSRobert Mustacchi /* 935*eef4f27bSRobert Mustacchi * l5_remote_region_table_entry_b definition 936*eef4f27bSRobert Mustacchi */ 937*eef4f27bSRobert Mustacchi typedef struct l5_remote_region_table_entry_b_xi 938*eef4f27bSRobert Mustacchi { 939*eef4f27bSRobert Mustacchi u8_t rte_flags; 940*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK (0xff<<0) 941*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_UNDEFINED (0<<0) 942*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_VALID (1<<0) 943*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_LOCAL_READ (2<<0) 944*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_LOCAL_WRITE (4<<0) 945*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_REMOTE_REGION (8<<0) 946*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_ALLOW_WIND_BIND (16<<0) 947*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_INVALIDATE_IN_PROGRESS (32<<0) 948*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_RX_FLUSH_IN_PROGRESS (64<<0) 949*eef4f27bSRobert Mustacchi 950*eef4f27bSRobert Mustacchi u8_t rte_wintbl_stag_hi; 951*eef4f27bSRobert Mustacchi u16_t rte_wintbl_stag_lo; 952*eef4f27bSRobert Mustacchi } l5_remote_region_table_entry_b_xi_t; 953*eef4f27bSRobert Mustacchi 954*eef4f27bSRobert Mustacchi 955*eef4f27bSRobert Mustacchi /* 956*eef4f27bSRobert Mustacchi * l5_remote_region_table_entry_l definition 957*eef4f27bSRobert Mustacchi */ 958*eef4f27bSRobert Mustacchi typedef struct l5_remote_region_table_entry_l 959*eef4f27bSRobert Mustacchi { 960*eef4f27bSRobert Mustacchi u16_t rte_wintbl_stag_lo; 961*eef4f27bSRobert Mustacchi u8_t rte_wintbl_stag_hi; 962*eef4f27bSRobert Mustacchi u8_t rte_flags; 963*eef4f27bSRobert Mustacchi 964*eef4f27bSRobert Mustacchi } l5_remote_region_table_entry_l_t; 965*eef4f27bSRobert Mustacchi 966*eef4f27bSRobert Mustacchi 967*eef4f27bSRobert Mustacchi 968*eef4f27bSRobert Mustacchi /* 969*eef4f27bSRobert Mustacchi * l5_remote_region_table_entry_l definition 970*eef4f27bSRobert Mustacchi */ 971*eef4f27bSRobert Mustacchi typedef struct l5_remote_region_table_entry_l_xi 972*eef4f27bSRobert Mustacchi { 973*eef4f27bSRobert Mustacchi u16_t rte_wintbl_stag_lo; 974*eef4f27bSRobert Mustacchi u8_t rte_wintbl_stag_hi; 975*eef4f27bSRobert Mustacchi u8_t rte_flags; 976*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK (0xff<<0) 977*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_UNDEFINED (0<<0) 978*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_VALID (1<<0) 979*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_LOCAL_READ (2<<0) 980*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_LOCAL_WRITE (4<<0) 981*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_REMOTE_REGION (8<<0) 982*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_ALLOW_WIND_BIND (16<<0) 983*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_INVALIDATE_IN_PROGRESS (32<<0) 984*eef4f27bSRobert Mustacchi #define RTE_FLAGS_FLAGS_MASK_RX_FLUSH_IN_PROGRESS (64<<0) 985*eef4f27bSRobert Mustacchi 986*eef4f27bSRobert Mustacchi } l5_remote_region_table_entry_l_xi_t; 987*eef4f27bSRobert Mustacchi 988*eef4f27bSRobert Mustacchi 989*eef4f27bSRobert Mustacchi /* 990*eef4f27bSRobert Mustacchi * l5_remote_region_table_entry select 991*eef4f27bSRobert Mustacchi */ 992*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN) 993*eef4f27bSRobert Mustacchi typedef l5_remote_region_table_entry_l_t l5_remote_region_table_entry_t; 994*eef4f27bSRobert Mustacchi typedef l5_remote_region_table_entry_l_xi_t l5_remote_region_table_entry_xi_t; 995*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN) 996*eef4f27bSRobert Mustacchi typedef l5_remote_region_table_entry_b_t l5_remote_region_table_entry_t; 997*eef4f27bSRobert Mustacchi typedef l5_remote_region_table_entry_b_xi_t l5_remote_region_table_entry_xi_t; 998*eef4f27bSRobert Mustacchi #endif 999*eef4f27bSRobert Mustacchi 1000*eef4f27bSRobert Mustacchi 1001*eef4f27bSRobert Mustacchi /* 1002*eef4f27bSRobert Mustacchi * l5_region_ref_cnt_table_entry_b definition 1003*eef4f27bSRobert Mustacchi */ 1004*eef4f27bSRobert Mustacchi typedef struct l5_region_ref_cnt_table_entry_b 1005*eef4f27bSRobert Mustacchi { 1006*eef4f27bSRobert Mustacchi u16_t rrcte_pidx; 1007*eef4f27bSRobert Mustacchi u16_t rrcte_cidx; 1008*eef4f27bSRobert Mustacchi } l5_region_ref_cnt_table_entry_b_t; 1009*eef4f27bSRobert Mustacchi 1010*eef4f27bSRobert Mustacchi 1011*eef4f27bSRobert Mustacchi 1012*eef4f27bSRobert Mustacchi /* 1013*eef4f27bSRobert Mustacchi * l5_region_ref_cnt_table_entry_b definition 1014*eef4f27bSRobert Mustacchi */ 1015*eef4f27bSRobert Mustacchi typedef struct l5_region_ref_cnt_table_entry_b_xi 1016*eef4f27bSRobert Mustacchi { 1017*eef4f27bSRobert Mustacchi u16_t rrcte_pidx; 1018*eef4f27bSRobert Mustacchi u16_t rrcte_cidx; 1019*eef4f27bSRobert Mustacchi } l5_region_ref_cnt_table_entry_b_xi_t; 1020*eef4f27bSRobert Mustacchi 1021*eef4f27bSRobert Mustacchi 1022*eef4f27bSRobert Mustacchi /* 1023*eef4f27bSRobert Mustacchi * l5_region_ref_cnt_table_entry_l definition 1024*eef4f27bSRobert Mustacchi */ 1025*eef4f27bSRobert Mustacchi typedef struct l5_region_ref_cnt_table_entry_l 1026*eef4f27bSRobert Mustacchi { 1027*eef4f27bSRobert Mustacchi u16_t rrcte_cidx; 1028*eef4f27bSRobert Mustacchi u16_t rrcte_pidx; 1029*eef4f27bSRobert Mustacchi } l5_region_ref_cnt_table_entry_l_t; 1030*eef4f27bSRobert Mustacchi 1031*eef4f27bSRobert Mustacchi 1032*eef4f27bSRobert Mustacchi 1033*eef4f27bSRobert Mustacchi /* 1034*eef4f27bSRobert Mustacchi * l5_region_ref_cnt_table_entry_l definition 1035*eef4f27bSRobert Mustacchi */ 1036*eef4f27bSRobert Mustacchi typedef struct l5_region_ref_cnt_table_entry_l_xi 1037*eef4f27bSRobert Mustacchi { 1038*eef4f27bSRobert Mustacchi u16_t rrcte_cidx; 1039*eef4f27bSRobert Mustacchi u16_t rrcte_pidx; 1040*eef4f27bSRobert Mustacchi } l5_region_ref_cnt_table_entry_l_xi_t; 1041*eef4f27bSRobert Mustacchi 1042*eef4f27bSRobert Mustacchi 1043*eef4f27bSRobert Mustacchi /* 1044*eef4f27bSRobert Mustacchi * l5_region_ref_cnt_table_entry select 1045*eef4f27bSRobert Mustacchi */ 1046*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN) 1047*eef4f27bSRobert Mustacchi typedef l5_region_ref_cnt_table_entry_l_t l5_region_ref_cnt_table_entry_t; 1048*eef4f27bSRobert Mustacchi typedef l5_region_ref_cnt_table_entry_l_xi_t l5_region_ref_cnt_table_entry_xi_t; 1049*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN) 1050*eef4f27bSRobert Mustacchi typedef l5_region_ref_cnt_table_entry_b_t l5_region_ref_cnt_table_entry_t; 1051*eef4f27bSRobert Mustacchi typedef l5_region_ref_cnt_table_entry_b_xi_t l5_region_ref_cnt_table_entry_xi_t; 1052*eef4f27bSRobert Mustacchi #endif 1053*eef4f27bSRobert Mustacchi 1054*eef4f27bSRobert Mustacchi 1055*eef4f27bSRobert Mustacchi /* 1056*eef4f27bSRobert Mustacchi * l5_window_table_entry_b definition 1057*eef4f27bSRobert Mustacchi */ 1058*eef4f27bSRobert Mustacchi typedef struct l5_window_table_entry_b 1059*eef4f27bSRobert Mustacchi { 1060*eef4f27bSRobert Mustacchi u32_t wte_virtual_base_addr_hi; 1061*eef4f27bSRobert Mustacchi u32_t wte_virtual_base_addr_lo; 1062*eef4f27bSRobert Mustacchi u32_t wte_pt_phy_base_addr_hi; 1063*eef4f27bSRobert Mustacchi u32_t wte_pt_phy_base_addr_lo; 1064*eef4f27bSRobert Mustacchi u32_t wte_length; 1065*eef4f27bSRobert Mustacchi u32_t wte_qp_or_pd; 1066*eef4f27bSRobert Mustacchi u16_t wte_region_table_index; 1067*eef4f27bSRobert Mustacchi u16_t wte_cache_key; 1068*eef4f27bSRobert Mustacchi u16_t wte_flags; 1069*eef4f27bSRobert Mustacchi 1070*eef4f27bSRobert Mustacchi u8_t wte_bind_cnt; 1071*eef4f27bSRobert Mustacchi u8_t wte_stag_key; 1072*eef4f27bSRobert Mustacchi } l5_window_table_entry_b_t; 1073*eef4f27bSRobert Mustacchi 1074*eef4f27bSRobert Mustacchi 1075*eef4f27bSRobert Mustacchi 1076*eef4f27bSRobert Mustacchi /* 1077*eef4f27bSRobert Mustacchi * l5_window_table_entry_b definition 1078*eef4f27bSRobert Mustacchi */ 1079*eef4f27bSRobert Mustacchi typedef struct l5_window_table_entry_b_xi 1080*eef4f27bSRobert Mustacchi { 1081*eef4f27bSRobert Mustacchi u32_t wte_virtual_base_addr_hi; 1082*eef4f27bSRobert Mustacchi u32_t wte_virtual_base_addr_lo; 1083*eef4f27bSRobert Mustacchi u32_t wte_pt_phy_base_addr_hi; 1084*eef4f27bSRobert Mustacchi u32_t wte_pt_phy_base_addr_lo; 1085*eef4f27bSRobert Mustacchi u32_t wte_length; 1086*eef4f27bSRobert Mustacchi u32_t wte_qp_or_pd; 1087*eef4f27bSRobert Mustacchi u16_t wte_region_table_index; 1088*eef4f27bSRobert Mustacchi u16_t wte_cache_key; 1089*eef4f27bSRobert Mustacchi u16_t wte_flags; 1090*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE (0xf<<0) 1091*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_256 (0<<0) 1092*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_512 (1<<0) 1093*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_1K (2<<0) 1094*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_2K (3<<0) 1095*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_4K (4<<0) 1096*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_8K (5<<0) 1097*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_16K (6<<0) 1098*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_32K (7<<0) 1099*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_64K (8<<0) 1100*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_128K (9<<0) 1101*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_256K (10<<0) 1102*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_512K (11<<0) 1103*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_1M (12<<0) 1104*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_2M (13<<0) 1105*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_4M (14<<0) 1106*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_8M (15<<0) 1107*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS (0xfff<<4) 1108*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS_WT_UNDEFINED (0<<4) 1109*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS_VALID (1<<4) 1110*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS_REGION (2<<4) 1111*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS_UNBOUND_WINDOW (4<<4) 1112*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS_BOUND_WINDOW (8<<4) 1113*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS_REMOTE_READ (16<<4) 1114*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS_REMOTE_WRITE (32<<4) 1115*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS_ALLOW_WINDOW_BINDS (64<<4) 1116*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS_INVALIDATE_IN_PROGRESS (128<<4) 1117*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS_RX_FLUSH_IN_PROGRESS (256<<4) 1118*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS_READ_W_LINV_IN_PROGRESS (512<<4) 1119*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS_DEALLOCATE_FLUSH_INITIATED (1024<<4) 1120*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS_DEALLOCATE_FLUSH_COMPLETE (2048<<4) 1121*eef4f27bSRobert Mustacchi 1122*eef4f27bSRobert Mustacchi u8_t wte_bind_cnt; 1123*eef4f27bSRobert Mustacchi u8_t wte_stag_key; 1124*eef4f27bSRobert Mustacchi } l5_window_table_entry_b_xi_t; 1125*eef4f27bSRobert Mustacchi 1126*eef4f27bSRobert Mustacchi 1127*eef4f27bSRobert Mustacchi /* 1128*eef4f27bSRobert Mustacchi * l5_window_table_entry_l definition 1129*eef4f27bSRobert Mustacchi */ 1130*eef4f27bSRobert Mustacchi typedef struct l5_window_table_entry_l 1131*eef4f27bSRobert Mustacchi { 1132*eef4f27bSRobert Mustacchi u32_t wte_virtual_base_addr_hi; 1133*eef4f27bSRobert Mustacchi u32_t wte_virtual_base_addr_lo; 1134*eef4f27bSRobert Mustacchi u32_t wte_pt_phy_base_addr_hi; 1135*eef4f27bSRobert Mustacchi u32_t wte_pt_phy_base_addr_lo; 1136*eef4f27bSRobert Mustacchi u32_t wte_length; 1137*eef4f27bSRobert Mustacchi u32_t wte_qp_or_pd; 1138*eef4f27bSRobert Mustacchi u16_t wte_cache_key; 1139*eef4f27bSRobert Mustacchi u16_t wte_region_table_index; 1140*eef4f27bSRobert Mustacchi u8_t wte_stag_key; 1141*eef4f27bSRobert Mustacchi u8_t wte_bind_cnt; 1142*eef4f27bSRobert Mustacchi u16_t wte_flags; 1143*eef4f27bSRobert Mustacchi 1144*eef4f27bSRobert Mustacchi } l5_window_table_entry_l_t; 1145*eef4f27bSRobert Mustacchi 1146*eef4f27bSRobert Mustacchi 1147*eef4f27bSRobert Mustacchi 1148*eef4f27bSRobert Mustacchi /* 1149*eef4f27bSRobert Mustacchi * l5_window_table_entry_l definition 1150*eef4f27bSRobert Mustacchi */ 1151*eef4f27bSRobert Mustacchi typedef struct l5_window_table_entry_l_xi 1152*eef4f27bSRobert Mustacchi { 1153*eef4f27bSRobert Mustacchi u32_t wte_virtual_base_addr_hi; 1154*eef4f27bSRobert Mustacchi u32_t wte_virtual_base_addr_lo; 1155*eef4f27bSRobert Mustacchi u32_t wte_pt_phy_base_addr_hi; 1156*eef4f27bSRobert Mustacchi u32_t wte_pt_phy_base_addr_lo; 1157*eef4f27bSRobert Mustacchi u32_t wte_length; 1158*eef4f27bSRobert Mustacchi u32_t wte_qp_or_pd; 1159*eef4f27bSRobert Mustacchi u16_t wte_cache_key; 1160*eef4f27bSRobert Mustacchi u16_t wte_region_table_index; 1161*eef4f27bSRobert Mustacchi u8_t wte_stag_key; 1162*eef4f27bSRobert Mustacchi u8_t wte_bind_cnt; 1163*eef4f27bSRobert Mustacchi u16_t wte_flags; 1164*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE (0xf<<0) 1165*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_256 (0<<0) 1166*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_512 (1<<0) 1167*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_1K (2<<0) 1168*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_2K (3<<0) 1169*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_4K (4<<0) 1170*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_8K (5<<0) 1171*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_16K (6<<0) 1172*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_32K (7<<0) 1173*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_64K (8<<0) 1174*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_128K (9<<0) 1175*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_256K (10<<0) 1176*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_512K (11<<0) 1177*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_1M (12<<0) 1178*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_2M (13<<0) 1179*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_4M (14<<0) 1180*eef4f27bSRobert Mustacchi #define WTE_FLAGS_REGION_PAGE_SIZE_8M (15<<0) 1181*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS (0xfff<<4) 1182*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS_WT_UNDEFINED (0<<4) 1183*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS_VALID (1<<4) 1184*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS_REGION (2<<4) 1185*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS_UNBOUND_WINDOW (4<<4) 1186*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS_BOUND_WINDOW (8<<4) 1187*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS_REMOTE_READ (16<<4) 1188*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS_REMOTE_WRITE (32<<4) 1189*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS_ALLOW_WINDOW_BINDS (64<<4) 1190*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS_INVALIDATE_IN_PROGRESS (128<<4) 1191*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS_RX_FLUSH_IN_PROGRESS (256<<4) 1192*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS_READ_W_LINV_IN_PROGRESS (512<<4) 1193*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS_DEALLOCATE_FLUSH_INITIATED (1024<<4) 1194*eef4f27bSRobert Mustacchi #define WTE_FLAGS_WT_FLAGS_DEALLOCATE_FLUSH_COMPLETE (2048<<4) 1195*eef4f27bSRobert Mustacchi 1196*eef4f27bSRobert Mustacchi } l5_window_table_entry_l_xi_t; 1197*eef4f27bSRobert Mustacchi 1198*eef4f27bSRobert Mustacchi 1199*eef4f27bSRobert Mustacchi /* 1200*eef4f27bSRobert Mustacchi * l5_window_table_entry select 1201*eef4f27bSRobert Mustacchi */ 1202*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN) 1203*eef4f27bSRobert Mustacchi typedef l5_window_table_entry_l_t l5_window_table_entry_t; 1204*eef4f27bSRobert Mustacchi typedef l5_window_table_entry_l_xi_t l5_window_table_entry_xi_t; 1205*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN) 1206*eef4f27bSRobert Mustacchi typedef l5_window_table_entry_b_t l5_window_table_entry_t; 1207*eef4f27bSRobert Mustacchi typedef l5_window_table_entry_b_xi_t l5_window_table_entry_xi_t; 1208*eef4f27bSRobert Mustacchi #endif 1209*eef4f27bSRobert Mustacchi 1210*eef4f27bSRobert Mustacchi 1211*eef4f27bSRobert Mustacchi /* 1212*eef4f27bSRobert Mustacchi * l5_cq_table_entry_b definition 1213*eef4f27bSRobert Mustacchi */ 1214*eef4f27bSRobert Mustacchi typedef struct l5_cq_table_entry_b 1215*eef4f27bSRobert Mustacchi { 1216*eef4f27bSRobert Mustacchi u32_t cqte_pgtbl_phaddr_hi; 1217*eef4f27bSRobert Mustacchi u8_t cqte_pgtbl_phaddr_lo[3]; 1218*eef4f27bSRobert Mustacchi u8_t cqte_flags; 1219*eef4f27bSRobert Mustacchi 1220*eef4f27bSRobert Mustacchi u16_t cqte_pidx; 1221*eef4f27bSRobert Mustacchi u16_t cqte_cqes_per_page; 1222*eef4f27bSRobert Mustacchi u16_t cqte_max_cqes; 1223*eef4f27bSRobert Mustacchi u16_t cqte_nx_qe_self_seq; 1224*eef4f27bSRobert Mustacchi u16_t cqte_nx_pg_qidx; 1225*eef4f27bSRobert Mustacchi u16_t cqte_pgtbl_pgidx; 1226*eef4f27bSRobert Mustacchi u16_t cqte_pgtbl_npages; 1227*eef4f27bSRobert Mustacchi u16_t cqte_cqe_pidx; 1228*eef4f27bSRobert Mustacchi u32_t cqte_cached_pte_phaddr_hi; 1229*eef4f27bSRobert Mustacchi u32_t cqte_cached_pte_phaddr_lo; 1230*eef4f27bSRobert Mustacchi } l5_cq_table_entry_b_t; 1231*eef4f27bSRobert Mustacchi 1232*eef4f27bSRobert Mustacchi 1233*eef4f27bSRobert Mustacchi /* 1234*eef4f27bSRobert Mustacchi * l5_cq_table_entry_b definition 1235*eef4f27bSRobert Mustacchi */ 1236*eef4f27bSRobert Mustacchi typedef struct l5_cq_table_entry_b_xi 1237*eef4f27bSRobert Mustacchi { 1238*eef4f27bSRobert Mustacchi u32_t cqte_pgtbl_phaddr_hi; 1239*eef4f27bSRobert Mustacchi u8_t cqte_pgtbl_phaddr_lo[3]; 1240*eef4f27bSRobert Mustacchi u8_t cqte_flags; 1241*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE (0xf<<0) 1242*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_256 (0<<0) 1243*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_512 (1<<0) 1244*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_1K (2<<0) 1245*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_2K (3<<0) 1246*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_4K (4<<0) 1247*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_8K (5<<0) 1248*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_16K (6<<0) 1249*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_32K (7<<0) 1250*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_64K (8<<0) 1251*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_128K (9<<0) 1252*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_256K (10<<0) 1253*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_512K (11<<0) 1254*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_1M (12<<0) 1255*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_2M (13<<0) 1256*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_FLAGS (0xf<<4) 1257*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_FLAGS_UNDEFINED (0<<4) 1258*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_FLAGS_VALID (1<<4) 1259*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_FLAGS_ARMED (2<<4) 1260*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_FLAGS_ARMED_SEND_SE (4<<4) 1261*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_FLAGS_CQE_NOT_ARMED (8<<4) 1262*eef4f27bSRobert Mustacchi 1263*eef4f27bSRobert Mustacchi u16_t cqte_pidx; 1264*eef4f27bSRobert Mustacchi u16_t cqte_cqes_per_page; 1265*eef4f27bSRobert Mustacchi u16_t cqte_max_cqes; 1266*eef4f27bSRobert Mustacchi u16_t cqte_nx_qe_self_seq; 1267*eef4f27bSRobert Mustacchi u16_t cqte_nx_pg_qidx; 1268*eef4f27bSRobert Mustacchi u16_t cqte_pgtbl_pgidx; 1269*eef4f27bSRobert Mustacchi u16_t cqte_pgtbl_npages; 1270*eef4f27bSRobert Mustacchi u16_t cqte_cqe_pidx; 1271*eef4f27bSRobert Mustacchi u32_t cqte_cached_pte_phaddr_hi; 1272*eef4f27bSRobert Mustacchi u32_t cqte_cached_pte_phaddr_lo; 1273*eef4f27bSRobert Mustacchi } l5_cq_table_entry_b_xi_t; 1274*eef4f27bSRobert Mustacchi 1275*eef4f27bSRobert Mustacchi 1276*eef4f27bSRobert Mustacchi /* 1277*eef4f27bSRobert Mustacchi * l5_cq_table_entry_l definition 1278*eef4f27bSRobert Mustacchi */ 1279*eef4f27bSRobert Mustacchi typedef struct l5_cq_table_entry_l 1280*eef4f27bSRobert Mustacchi { 1281*eef4f27bSRobert Mustacchi u32_t cqte_pgtbl_phaddr_hi; 1282*eef4f27bSRobert Mustacchi u8_t cqte_flags; 1283*eef4f27bSRobert Mustacchi 1284*eef4f27bSRobert Mustacchi u8_t cqte_pgtbl_phaddr_lo[3]; 1285*eef4f27bSRobert Mustacchi u16_t cqte_cqes_per_page; 1286*eef4f27bSRobert Mustacchi u16_t cqte_pidx; 1287*eef4f27bSRobert Mustacchi u16_t cqte_nx_qe_self_seq; 1288*eef4f27bSRobert Mustacchi u16_t cqte_max_cqes; 1289*eef4f27bSRobert Mustacchi u16_t cqte_pgtbl_pgidx; 1290*eef4f27bSRobert Mustacchi u16_t cqte_nx_pg_qidx; 1291*eef4f27bSRobert Mustacchi u16_t cqte_cqe_pidx; 1292*eef4f27bSRobert Mustacchi u16_t cqte_pgtbl_npages; 1293*eef4f27bSRobert Mustacchi u32_t cqte_cached_pte_phaddr_hi; 1294*eef4f27bSRobert Mustacchi u32_t cqte_cached_pte_phaddr_lo; 1295*eef4f27bSRobert Mustacchi } l5_cq_table_entry_l_t; 1296*eef4f27bSRobert Mustacchi 1297*eef4f27bSRobert Mustacchi 1298*eef4f27bSRobert Mustacchi 1299*eef4f27bSRobert Mustacchi /* 1300*eef4f27bSRobert Mustacchi * l5_cq_table_entry_l definition 1301*eef4f27bSRobert Mustacchi */ 1302*eef4f27bSRobert Mustacchi typedef struct l5_cq_table_entry_l_xi 1303*eef4f27bSRobert Mustacchi { 1304*eef4f27bSRobert Mustacchi u32_t cqte_pgtbl_phaddr_hi; 1305*eef4f27bSRobert Mustacchi u8_t cqte_flags; 1306*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE (0xf<<0) 1307*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_256 (0<<0) 1308*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_512 (1<<0) 1309*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_1K (2<<0) 1310*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_2K (3<<0) 1311*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_4K (4<<0) 1312*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_8K (5<<0) 1313*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_16K (6<<0) 1314*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_32K (7<<0) 1315*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_64K (8<<0) 1316*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_128K (9<<0) 1317*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_256K (10<<0) 1318*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_512K (11<<0) 1319*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_1M (12<<0) 1320*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_PAGE_SIZE_2M (13<<0) 1321*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_FLAGS (0xf<<4) 1322*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_FLAGS_UNDEFINED (0<<4) 1323*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_FLAGS_VALID (1<<4) 1324*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_FLAGS_ARMED (2<<4) 1325*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_FLAGS_ARMED_SEND_SE (4<<4) 1326*eef4f27bSRobert Mustacchi #define CQTE_FLAGS_FLAGS_CQE_NOT_ARMED (8<<4) 1327*eef4f27bSRobert Mustacchi 1328*eef4f27bSRobert Mustacchi u8_t cqte_pgtbl_phaddr_lo[3]; 1329*eef4f27bSRobert Mustacchi u16_t cqte_cqes_per_page; 1330*eef4f27bSRobert Mustacchi u16_t cqte_pidx; 1331*eef4f27bSRobert Mustacchi u16_t cqte_nx_qe_self_seq; 1332*eef4f27bSRobert Mustacchi u16_t cqte_max_cqes; 1333*eef4f27bSRobert Mustacchi u16_t cqte_pgtbl_pgidx; 1334*eef4f27bSRobert Mustacchi u16_t cqte_nx_pg_qidx; 1335*eef4f27bSRobert Mustacchi u16_t cqte_cqe_pidx; 1336*eef4f27bSRobert Mustacchi u16_t cqte_pgtbl_npages; 1337*eef4f27bSRobert Mustacchi u32_t cqte_cached_pte_phaddr_hi; 1338*eef4f27bSRobert Mustacchi u32_t cqte_cached_pte_phaddr_lo; 1339*eef4f27bSRobert Mustacchi } l5_cq_table_entry_l_xi_t; 1340*eef4f27bSRobert Mustacchi 1341*eef4f27bSRobert Mustacchi 1342*eef4f27bSRobert Mustacchi /* 1343*eef4f27bSRobert Mustacchi * l5_cq_table_entry select 1344*eef4f27bSRobert Mustacchi */ 1345*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN) 1346*eef4f27bSRobert Mustacchi typedef l5_cq_table_entry_l_t l5_cq_table_entry_t; 1347*eef4f27bSRobert Mustacchi typedef l5_cq_table_entry_l_xi_t l5_cq_table_entry_xi_t; 1348*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN) 1349*eef4f27bSRobert Mustacchi typedef l5_cq_table_entry_b_t l5_cq_table_entry_t; 1350*eef4f27bSRobert Mustacchi typedef l5_cq_table_entry_b_xi_t l5_cq_table_entry_xi_t; 1351*eef4f27bSRobert Mustacchi #endif 1352*eef4f27bSRobert Mustacchi 1353*eef4f27bSRobert Mustacchi 1354*eef4f27bSRobert Mustacchi /* 1355*eef4f27bSRobert Mustacchi * l5_cmd_cell_b definition 1356*eef4f27bSRobert Mustacchi */ 1357*eef4f27bSRobert Mustacchi typedef struct l5_cmd_cell_b 1358*eef4f27bSRobert Mustacchi { 1359*eef4f27bSRobert Mustacchi u16_t l5ccell_cmd_type; 1360*eef4f27bSRobert Mustacchi 1361*eef4f27bSRobert Mustacchi u16_t l5ccell_wq_idx; 1362*eef4f27bSRobert Mustacchi u8_t unused_0; 1363*eef4f27bSRobert Mustacchi u8_t l5ccell_cmd_val; 1364*eef4f27bSRobert Mustacchi u16_t l5ccell_distance_to_first_marker; 1365*eef4f27bSRobert Mustacchi u32_t unused_1; 1366*eef4f27bSRobert Mustacchi u32_t l5ccell_ddp_hdr_word1; 1367*eef4f27bSRobert Mustacchi u32_t l5ccell_ddp_hdr_word2; 1368*eef4f27bSRobert Mustacchi u32_t l5ccell_ddp_hdr_word3; 1369*eef4f27bSRobert Mustacchi u32_t l5ccell_tcp_sn_first_byte; 1370*eef4f27bSRobert Mustacchi u32_t l5ccell_tcp_sn_last_byte; 1371*eef4f27bSRobert Mustacchi } l5_cmd_cell_b_t; 1372*eef4f27bSRobert Mustacchi 1373*eef4f27bSRobert Mustacchi 1374*eef4f27bSRobert Mustacchi 1375*eef4f27bSRobert Mustacchi /* 1376*eef4f27bSRobert Mustacchi * l5_cmd_cell_l definition 1377*eef4f27bSRobert Mustacchi */ 1378*eef4f27bSRobert Mustacchi typedef struct l5_cmd_cell_l 1379*eef4f27bSRobert Mustacchi { 1380*eef4f27bSRobert Mustacchi u16_t l5ccell_wq_idx; 1381*eef4f27bSRobert Mustacchi u16_t l5ccell_cmd_type; 1382*eef4f27bSRobert Mustacchi 1383*eef4f27bSRobert Mustacchi u16_t l5ccell_distance_to_first_marker; 1384*eef4f27bSRobert Mustacchi u8_t l5ccell_cmd_val; 1385*eef4f27bSRobert Mustacchi u8_t unused_0; 1386*eef4f27bSRobert Mustacchi u32_t unused_1; 1387*eef4f27bSRobert Mustacchi u32_t l5ccell_ddp_hdr_word1; 1388*eef4f27bSRobert Mustacchi u32_t l5ccell_ddp_hdr_word2; 1389*eef4f27bSRobert Mustacchi u32_t l5ccell_ddp_hdr_word3; 1390*eef4f27bSRobert Mustacchi u32_t l5ccell_tcp_sn_first_byte; 1391*eef4f27bSRobert Mustacchi u32_t l5ccell_tcp_sn_last_byte; 1392*eef4f27bSRobert Mustacchi } l5_cmd_cell_l_t; 1393*eef4f27bSRobert Mustacchi 1394*eef4f27bSRobert Mustacchi 1395*eef4f27bSRobert Mustacchi 1396*eef4f27bSRobert Mustacchi /* 1397*eef4f27bSRobert Mustacchi * l5_cmd_cell select 1398*eef4f27bSRobert Mustacchi */ 1399*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN) 1400*eef4f27bSRobert Mustacchi typedef l5_cmd_cell_l_t l5_cmd_cell_t; 1401*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN) 1402*eef4f27bSRobert Mustacchi typedef l5_cmd_cell_b_t l5_cmd_cell_t; 1403*eef4f27bSRobert Mustacchi #endif 1404*eef4f27bSRobert Mustacchi 1405*eef4f27bSRobert Mustacchi 1406*eef4f27bSRobert Mustacchi /* 1407*eef4f27bSRobert Mustacchi * l5_abuf_cell_b definition 1408*eef4f27bSRobert Mustacchi */ 1409*eef4f27bSRobert Mustacchi typedef struct l5_abuf_cell_b 1410*eef4f27bSRobert Mustacchi { 1411*eef4f27bSRobert Mustacchi u32_t l5acell_pgtbl_phaddr_hi; 1412*eef4f27bSRobert Mustacchi u8_t l5acell_pgtbl_phaddr_lo[3]; 1413*eef4f27bSRobert Mustacchi u8_t l5acell_flags; 1414*eef4f27bSRobert Mustacchi 1415*eef4f27bSRobert Mustacchi u16_t l5acell_wq_idx; 1416*eef4f27bSRobert Mustacchi u16_t l5acell_first_page_offset; 1417*eef4f27bSRobert Mustacchi u32_t l5acell_buffer_offset; 1418*eef4f27bSRobert Mustacchi u16_t l5acell_rbdc_key; 1419*eef4f27bSRobert Mustacchi u16_t l5acell_receive_length; 1420*eef4f27bSRobert Mustacchi u32_t l5acell_buffer_length; 1421*eef4f27bSRobert Mustacchi u32_t l5acell_tcp_sn_L_bit_segment; 1422*eef4f27bSRobert Mustacchi } l5_abuf_cell_b_t; 1423*eef4f27bSRobert Mustacchi 1424*eef4f27bSRobert Mustacchi 1425*eef4f27bSRobert Mustacchi 1426*eef4f27bSRobert Mustacchi /* 1427*eef4f27bSRobert Mustacchi * l5_abuf_cell_b definition 1428*eef4f27bSRobert Mustacchi */ 1429*eef4f27bSRobert Mustacchi typedef struct l5_abuf_cell_b_xi 1430*eef4f27bSRobert Mustacchi { 1431*eef4f27bSRobert Mustacchi u32_t l5acell_pgtbl_phaddr_hi; 1432*eef4f27bSRobert Mustacchi u8_t l5acell_pgtbl_phaddr_lo[3]; 1433*eef4f27bSRobert Mustacchi u8_t l5acell_flags; 1434*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE (0xf<<0) 1435*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_256 (0<<0) 1436*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_512 (1<<0) 1437*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_1K (2<<0) 1438*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_2K (3<<0) 1439*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_4K (4<<0) 1440*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_8K (5<<0) 1441*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_16K (6<<0) 1442*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_32K (7<<0) 1443*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_64K (8<<0) 1444*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_128K (9<<0) 1445*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_256K (10<<0) 1446*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_512K (11<<0) 1447*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_1M (12<<0) 1448*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_2M (13<<0) 1449*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_4M (14<<0) 1450*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_8M (15<<0) 1451*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_ABUF_FLAGS (0xf<<4) 1452*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_ABUF_FLAGS_ABUF_UNDEFINED (0<<4) 1453*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_ABUF_FLAGS_L_BIT_RCVD (1<<4) 1454*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_ABUF_FLAGS_GEN_EVT (2<<4) 1455*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_ABUF_FLAGS_INV_STAG (4<<4) 1456*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_ABUF_FLAGS_COMP_ERROR (8<<4) 1457*eef4f27bSRobert Mustacchi 1458*eef4f27bSRobert Mustacchi u16_t l5acell_wq_idx; 1459*eef4f27bSRobert Mustacchi u16_t l5acell_first_page_offset; 1460*eef4f27bSRobert Mustacchi u32_t l5acell_buffer_offset; 1461*eef4f27bSRobert Mustacchi u16_t l5acell_rbdc_key; 1462*eef4f27bSRobert Mustacchi u16_t l5acell_receive_length; 1463*eef4f27bSRobert Mustacchi u32_t l5acell_buffer_length; 1464*eef4f27bSRobert Mustacchi u32_t l5acell_tcp_sn_L_bit_segment; 1465*eef4f27bSRobert Mustacchi } l5_abuf_cell_b_xi_t; 1466*eef4f27bSRobert Mustacchi 1467*eef4f27bSRobert Mustacchi 1468*eef4f27bSRobert Mustacchi /* 1469*eef4f27bSRobert Mustacchi * l5_abuf_cell_l definition 1470*eef4f27bSRobert Mustacchi */ 1471*eef4f27bSRobert Mustacchi typedef struct l5_abuf_cell_l 1472*eef4f27bSRobert Mustacchi { 1473*eef4f27bSRobert Mustacchi u32_t l5acell_pgtbl_phaddr_hi; 1474*eef4f27bSRobert Mustacchi u8_t l5acell_flags; 1475*eef4f27bSRobert Mustacchi 1476*eef4f27bSRobert Mustacchi u8_t l5acell_pgtbl_phaddr_lo[3]; 1477*eef4f27bSRobert Mustacchi u16_t l5acell_first_page_offset; 1478*eef4f27bSRobert Mustacchi u16_t l5acell_wq_idx; 1479*eef4f27bSRobert Mustacchi u32_t l5acell_buffer_offset; 1480*eef4f27bSRobert Mustacchi u16_t l5acell_receive_length; 1481*eef4f27bSRobert Mustacchi u16_t l5acell_rbdc_key; 1482*eef4f27bSRobert Mustacchi u32_t l5acell_buffer_length; 1483*eef4f27bSRobert Mustacchi u32_t l5acell_tcp_sn_L_bit_segment; 1484*eef4f27bSRobert Mustacchi } l5_abuf_cell_l_t; 1485*eef4f27bSRobert Mustacchi 1486*eef4f27bSRobert Mustacchi 1487*eef4f27bSRobert Mustacchi 1488*eef4f27bSRobert Mustacchi /* 1489*eef4f27bSRobert Mustacchi * l5_abuf_cell_l definition 1490*eef4f27bSRobert Mustacchi */ 1491*eef4f27bSRobert Mustacchi typedef struct l5_abuf_cell_l_xi 1492*eef4f27bSRobert Mustacchi { 1493*eef4f27bSRobert Mustacchi u32_t l5acell_pgtbl_phaddr_hi; 1494*eef4f27bSRobert Mustacchi u8_t l5acell_flags; 1495*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE (0xf<<0) 1496*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_256 (0<<0) 1497*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_512 (1<<0) 1498*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_1K (2<<0) 1499*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_2K (3<<0) 1500*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_4K (4<<0) 1501*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_8K (5<<0) 1502*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_16K (6<<0) 1503*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_32K (7<<0) 1504*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_64K (8<<0) 1505*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_128K (9<<0) 1506*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_256K (10<<0) 1507*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_512K (11<<0) 1508*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_1M (12<<0) 1509*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_2M (13<<0) 1510*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_4M (14<<0) 1511*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_REGION_PAGE_SIZE_8M (15<<0) 1512*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_ABUF_FLAGS (0xf<<4) 1513*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_ABUF_FLAGS_ABUF_UNDEFINED (0<<4) 1514*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_ABUF_FLAGS_L_BIT_RCVD (1<<4) 1515*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_ABUF_FLAGS_GEN_EVT (2<<4) 1516*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_ABUF_FLAGS_INV_STAG (4<<4) 1517*eef4f27bSRobert Mustacchi #define L5ACELL_FLAGS_ABUF_FLAGS_COMP_ERROR (8<<4) 1518*eef4f27bSRobert Mustacchi 1519*eef4f27bSRobert Mustacchi u8_t l5acell_pgtbl_phaddr_lo[3]; 1520*eef4f27bSRobert Mustacchi u16_t l5acell_first_page_offset; 1521*eef4f27bSRobert Mustacchi u16_t l5acell_wq_idx; 1522*eef4f27bSRobert Mustacchi u32_t l5acell_buffer_offset; 1523*eef4f27bSRobert Mustacchi u16_t l5acell_receive_length; 1524*eef4f27bSRobert Mustacchi u16_t l5acell_rbdc_key; 1525*eef4f27bSRobert Mustacchi u32_t l5acell_buffer_length; 1526*eef4f27bSRobert Mustacchi u32_t l5acell_tcp_sn_L_bit_segment; 1527*eef4f27bSRobert Mustacchi } l5_abuf_cell_l_xi_t; 1528*eef4f27bSRobert Mustacchi 1529*eef4f27bSRobert Mustacchi 1530*eef4f27bSRobert Mustacchi /* 1531*eef4f27bSRobert Mustacchi * l5_abuf_cell select 1532*eef4f27bSRobert Mustacchi */ 1533*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN) 1534*eef4f27bSRobert Mustacchi typedef l5_abuf_cell_l_t l5_abuf_cell_t; 1535*eef4f27bSRobert Mustacchi typedef l5_abuf_cell_l_xi_t l5_abuf_cell_xi_t; 1536*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN) 1537*eef4f27bSRobert Mustacchi typedef l5_abuf_cell_b_t l5_abuf_cell_t; 1538*eef4f27bSRobert Mustacchi typedef l5_abuf_cell_b_xi_t l5_abuf_cell_xi_t; 1539*eef4f27bSRobert Mustacchi #endif 1540*eef4f27bSRobert Mustacchi 1541*eef4f27bSRobert Mustacchi 1542*eef4f27bSRobert Mustacchi /* 1543*eef4f27bSRobert Mustacchi * l5_irrq_entry_b definition 1544*eef4f27bSRobert Mustacchi */ 1545*eef4f27bSRobert Mustacchi typedef struct l5_irrq_entry_b 1546*eef4f27bSRobert Mustacchi { 1547*eef4f27bSRobert Mustacchi u32_t irrqe_sink_stag; 1548*eef4f27bSRobert Mustacchi u32_t irrqe_sink_to_hi; 1549*eef4f27bSRobert Mustacchi u32_t irrqe_sink_to_lo; 1550*eef4f27bSRobert Mustacchi u32_t irrqe_msg_length; 1551*eef4f27bSRobert Mustacchi u32_t irrqe_source_stag; 1552*eef4f27bSRobert Mustacchi u32_t irrqe_source_to_hi; 1553*eef4f27bSRobert Mustacchi u32_t irrqe_source_to_lo; 1554*eef4f27bSRobert Mustacchi } l5_irrq_entry_b_t; 1555*eef4f27bSRobert Mustacchi 1556*eef4f27bSRobert Mustacchi 1557*eef4f27bSRobert Mustacchi 1558*eef4f27bSRobert Mustacchi /* 1559*eef4f27bSRobert Mustacchi * l5_irrq_entry_b definition 1560*eef4f27bSRobert Mustacchi */ 1561*eef4f27bSRobert Mustacchi typedef struct l5_irrq_entry_b_xi 1562*eef4f27bSRobert Mustacchi { 1563*eef4f27bSRobert Mustacchi u32_t irrqe_sink_stag; 1564*eef4f27bSRobert Mustacchi u32_t irrqe_sink_to_hi; 1565*eef4f27bSRobert Mustacchi u32_t irrqe_sink_to_lo; 1566*eef4f27bSRobert Mustacchi u32_t irrqe_msg_length; 1567*eef4f27bSRobert Mustacchi u32_t irrqe_source_stag; 1568*eef4f27bSRobert Mustacchi u32_t irrqe_source_to_hi; 1569*eef4f27bSRobert Mustacchi u32_t irrqe_source_to_lo; 1570*eef4f27bSRobert Mustacchi } l5_irrq_entry_b_xi_t; 1571*eef4f27bSRobert Mustacchi 1572*eef4f27bSRobert Mustacchi 1573*eef4f27bSRobert Mustacchi /* 1574*eef4f27bSRobert Mustacchi * l5_irrq_entry_l definition 1575*eef4f27bSRobert Mustacchi */ 1576*eef4f27bSRobert Mustacchi typedef struct l5_irrq_entry_l 1577*eef4f27bSRobert Mustacchi { 1578*eef4f27bSRobert Mustacchi u32_t irrqe_sink_stag; 1579*eef4f27bSRobert Mustacchi u32_t irrqe_sink_to_hi; 1580*eef4f27bSRobert Mustacchi u32_t irrqe_sink_to_lo; 1581*eef4f27bSRobert Mustacchi u32_t irrqe_msg_length; 1582*eef4f27bSRobert Mustacchi u32_t irrqe_source_stag; 1583*eef4f27bSRobert Mustacchi u32_t irrqe_source_to_hi; 1584*eef4f27bSRobert Mustacchi u32_t irrqe_source_to_lo; 1585*eef4f27bSRobert Mustacchi } l5_irrq_entry_l_t; 1586*eef4f27bSRobert Mustacchi 1587*eef4f27bSRobert Mustacchi 1588*eef4f27bSRobert Mustacchi 1589*eef4f27bSRobert Mustacchi /* 1590*eef4f27bSRobert Mustacchi * l5_irrq_entry_l definition 1591*eef4f27bSRobert Mustacchi */ 1592*eef4f27bSRobert Mustacchi typedef struct l5_irrq_entry_l_xi 1593*eef4f27bSRobert Mustacchi { 1594*eef4f27bSRobert Mustacchi u32_t irrqe_sink_stag; 1595*eef4f27bSRobert Mustacchi u32_t irrqe_sink_to_hi; 1596*eef4f27bSRobert Mustacchi u32_t irrqe_sink_to_lo; 1597*eef4f27bSRobert Mustacchi u32_t irrqe_msg_length; 1598*eef4f27bSRobert Mustacchi u32_t irrqe_source_stag; 1599*eef4f27bSRobert Mustacchi u32_t irrqe_source_to_hi; 1600*eef4f27bSRobert Mustacchi u32_t irrqe_source_to_lo; 1601*eef4f27bSRobert Mustacchi } l5_irrq_entry_l_xi_t; 1602*eef4f27bSRobert Mustacchi 1603*eef4f27bSRobert Mustacchi 1604*eef4f27bSRobert Mustacchi /* 1605*eef4f27bSRobert Mustacchi * l5_irrq_entry select 1606*eef4f27bSRobert Mustacchi */ 1607*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN) 1608*eef4f27bSRobert Mustacchi typedef l5_irrq_entry_l_t l5_irrq_entry_t; 1609*eef4f27bSRobert Mustacchi typedef l5_irrq_entry_l_xi_t l5_irrq_entry_xi_t; 1610*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN) 1611*eef4f27bSRobert Mustacchi typedef l5_irrq_entry_b_t l5_irrq_entry_t; 1612*eef4f27bSRobert Mustacchi typedef l5_irrq_entry_b_xi_t l5_irrq_entry_xi_t; 1613*eef4f27bSRobert Mustacchi #endif 1614*eef4f27bSRobert Mustacchi 1615*eef4f27bSRobert Mustacchi 1616*eef4f27bSRobert Mustacchi /* 1617*eef4f27bSRobert Mustacchi * l5_orrq_entry_b definition 1618*eef4f27bSRobert Mustacchi */ 1619*eef4f27bSRobert Mustacchi typedef struct l5_orrq_entry_b 1620*eef4f27bSRobert Mustacchi { 1621*eef4f27bSRobert Mustacchi u32_t orrqe_tcp_sn_read_rsp_L_bit_segment; 1622*eef4f27bSRobert Mustacchi u32_t orrqe_source_to_hi; 1623*eef4f27bSRobert Mustacchi u32_t orrqe_source_to_low; 1624*eef4f27bSRobert Mustacchi } l5_orrq_entry_b_t; 1625*eef4f27bSRobert Mustacchi 1626*eef4f27bSRobert Mustacchi 1627*eef4f27bSRobert Mustacchi 1628*eef4f27bSRobert Mustacchi /* 1629*eef4f27bSRobert Mustacchi * l5_orrq_entry_b definition 1630*eef4f27bSRobert Mustacchi */ 1631*eef4f27bSRobert Mustacchi typedef struct l5_orrq_entry_b_xi 1632*eef4f27bSRobert Mustacchi { 1633*eef4f27bSRobert Mustacchi u32_t orrqe_tcp_sn_read_rsp_L_bit_segment; 1634*eef4f27bSRobert Mustacchi u32_t orrqe_source_to_hi; 1635*eef4f27bSRobert Mustacchi u32_t orrqe_source_to_low; 1636*eef4f27bSRobert Mustacchi } l5_orrq_entry_b_xi_t; 1637*eef4f27bSRobert Mustacchi 1638*eef4f27bSRobert Mustacchi 1639*eef4f27bSRobert Mustacchi /* 1640*eef4f27bSRobert Mustacchi * l5_orrq_entry_l definition 1641*eef4f27bSRobert Mustacchi */ 1642*eef4f27bSRobert Mustacchi typedef struct l5_orrq_entry_l 1643*eef4f27bSRobert Mustacchi { 1644*eef4f27bSRobert Mustacchi u32_t orrqe_tcp_sn_read_rsp_L_bit_segment; 1645*eef4f27bSRobert Mustacchi u32_t orrqe_source_to_hi; 1646*eef4f27bSRobert Mustacchi u32_t orrqe_source_to_low; 1647*eef4f27bSRobert Mustacchi } l5_orrq_entry_l_t; 1648*eef4f27bSRobert Mustacchi 1649*eef4f27bSRobert Mustacchi 1650*eef4f27bSRobert Mustacchi 1651*eef4f27bSRobert Mustacchi /* 1652*eef4f27bSRobert Mustacchi * l5_orrq_entry_l definition 1653*eef4f27bSRobert Mustacchi */ 1654*eef4f27bSRobert Mustacchi typedef struct l5_orrq_entry_l_xi 1655*eef4f27bSRobert Mustacchi { 1656*eef4f27bSRobert Mustacchi u32_t orrqe_tcp_sn_read_rsp_L_bit_segment; 1657*eef4f27bSRobert Mustacchi u32_t orrqe_source_to_hi; 1658*eef4f27bSRobert Mustacchi u32_t orrqe_source_to_low; 1659*eef4f27bSRobert Mustacchi } l5_orrq_entry_l_xi_t; 1660*eef4f27bSRobert Mustacchi 1661*eef4f27bSRobert Mustacchi 1662*eef4f27bSRobert Mustacchi /* 1663*eef4f27bSRobert Mustacchi * l5_orrq_entry select 1664*eef4f27bSRobert Mustacchi */ 1665*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN) 1666*eef4f27bSRobert Mustacchi typedef l5_orrq_entry_l_t l5_orrq_entry_t; 1667*eef4f27bSRobert Mustacchi typedef l5_orrq_entry_l_xi_t l5_orrq_entry_xi_t; 1668*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN) 1669*eef4f27bSRobert Mustacchi typedef l5_orrq_entry_b_t l5_orrq_entry_t; 1670*eef4f27bSRobert Mustacchi typedef l5_orrq_entry_b_xi_t l5_orrq_entry_xi_t; 1671*eef4f27bSRobert Mustacchi #endif 1672*eef4f27bSRobert Mustacchi 1673*eef4f27bSRobert Mustacchi 1674*eef4f27bSRobert Mustacchi /* 1675*eef4f27bSRobert Mustacchi * l5_context_b definition 1676*eef4f27bSRobert Mustacchi */ 1677*eef4f27bSRobert Mustacchi typedef struct l5_context_b 1678*eef4f27bSRobert Mustacchi { 1679*eef4f27bSRobert Mustacchi u8_t l5ctx_type; 1680*eef4f27bSRobert Mustacchi 1681*eef4f27bSRobert Mustacchi u8_t l5ctx_size; 1682*eef4f27bSRobert Mustacchi u16_t l5ctx_cq_cidx; 1683*eef4f27bSRobert Mustacchi u8_t l5ctx_gen_bd_max; 1684*eef4f27bSRobert Mustacchi u8_t l5ctx_oubits; 1685*eef4f27bSRobert Mustacchi 1686*eef4f27bSRobert Mustacchi u16_t l5ctx_sq_pidx; 1687*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_pgid; 1688*eef4f27bSRobert Mustacchi u16_t l5ctx_rq_pidx; 1689*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_timer1; 1690*eef4f27bSRobert Mustacchi 1691*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_timer2; 1692*eef4f27bSRobert Mustacchi 1693*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_timer3; 1694*eef4f27bSRobert Mustacchi 1695*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_timer4; 1696*eef4f27bSRobert Mustacchi 1697*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_timer5; 1698*eef4f27bSRobert Mustacchi 1699*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_wl1; 1700*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_wl2; 1701*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_ttl; 1702*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_tos; 1703*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_dack; 1704*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_modes; 1705*eef4f27bSRobert Mustacchi 1706*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_max_adv_win; 1707*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_timer; 1708*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_ip_src; 1709*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_ip_dst; 1710*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_iphdr_nbytes; 1711*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_snd_seg_scale; 1712*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_rcv_seg_scale; 1713*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_tcp_hlen; 1714*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_src_port; 1715*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_dst_port; 1716*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_mss; 1717*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_flags; 1718*eef4f27bSRobert Mustacchi 1719*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_state; 1720*eef4f27bSRobert Mustacchi 1721*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_rcv_next; 1722*eef4f27bSRobert Mustacchi u32_t l5ctx_last_ack_sent; 1723*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_rcv_win_seq; 1724*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_una; 1725*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_next; 1726*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_max; 1727*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_win; 1728*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_cwin; 1729*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_tstamp; 1730*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_ssthresh; 1731*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_sm_rtt; 1732*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_sm_delta; 1733*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_max_snd_win; 1734*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_tsch_snd_next; 1735*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_slot_size; 1736*eef4f27bSRobert Mustacchi 1737*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_cp_cmd; 1738*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_tsch_cmd; 1739*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_cons_retx_num; 1740*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_tsch_xnum; 1741*eef4f27bSRobert Mustacchi 1742*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_num_dupack; 1743*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_tx_protocol_flags; 1744*eef4f27bSRobert Mustacchi 1745*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_prod_retx_num; 1746*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_tsch_cons_retx_num; 1747*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_comp_cons_retx_num; 1748*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_num_retx; 1749*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_upload_reason; 1750*eef4f27bSRobert Mustacchi 1751*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_txp_cmd; 1752*eef4f27bSRobert Mustacchi u32_t unused_0; 1753*eef4f27bSRobert Mustacchi tcp_context_cmd_cell_b_te_t l5ctx_cmd[3]; 1754*eef4f27bSRobert Mustacchi u16_t l5ctx_snd_q_max_wqes; 1755*eef4f27bSRobert Mustacchi u16_t l5ctx_snd_q_fw_qidx; 1756*eef4f27bSRobert Mustacchi u16_t l5ctx_snd_q_nx_pg_qidx; 1757*eef4f27bSRobert Mustacchi u16_t l5ctx_snd_q_pgtbl_pgidx; 1758*eef4f27bSRobert Mustacchi u16_t l5ctx_snd_q_wqes_per_page; 1759*eef4f27bSRobert Mustacchi u16_t l5ctx_snd_q_num_pages; 1760*eef4f27bSRobert Mustacchi u8_t l5ctx_snd_q_pidx; 1761*eef4f27bSRobert Mustacchi u8_t l5ctx_snd_q_cidx; 1762*eef4f27bSRobert Mustacchi u8_t l5ctx_snd_q_max_cached_wqes; 1763*eef4f27bSRobert Mustacchi u8_t l5ctx_snd_q_flags; 1764*eef4f27bSRobert Mustacchi 1765*eef4f27bSRobert Mustacchi u32_t l5ctx_snd_q_pgtbl_phaddr_hi; 1766*eef4f27bSRobert Mustacchi u8_t l5ctx_snd_q_pgtbl_phaddr_lo[3]; 1767*eef4f27bSRobert Mustacchi u8_t l5ctx_snd_q_read_rsp_wait; 1768*eef4f27bSRobert Mustacchi u32_t l5ctx_snd_q_cached_pte_phaddr_hi; 1769*eef4f27bSRobert Mustacchi u32_t l5ctx_snd_q_cached_pte_phaddr_lo; 1770*eef4f27bSRobert Mustacchi l5_cmd_cell_b_t l5ctx_snd_q_cmd[3]; 1771*eef4f27bSRobert Mustacchi u16_t l5ctx_rcv_q_max_wqes; 1772*eef4f27bSRobert Mustacchi u16_t l5ctx_rcv_q_fw_qidx; 1773*eef4f27bSRobert Mustacchi u16_t l5ctx_rcv_q_nx_pg_qidx; 1774*eef4f27bSRobert Mustacchi u16_t l5ctx_rcv_q_pgtbl_pgidx; 1775*eef4f27bSRobert Mustacchi u16_t l5ctx_rcv_q_wqes_per_page; 1776*eef4f27bSRobert Mustacchi u16_t l5ctx_rcv_q_num_pages; 1777*eef4f27bSRobert Mustacchi u8_t l5ctx_rcv_q_pidx; 1778*eef4f27bSRobert Mustacchi u8_t l5ctx_rcv_q_rxp_cidx; 1779*eef4f27bSRobert Mustacchi u8_t l5ctx_rcv_q_com_cidx; 1780*eef4f27bSRobert Mustacchi u8_t l5ctx_rcv_q_flags; 1781*eef4f27bSRobert Mustacchi 1782*eef4f27bSRobert Mustacchi u32_t l5ctx_rcv_q_pgtbl_phaddr_hi; 1783*eef4f27bSRobert Mustacchi u8_t l5ctx_rcv_q_pgtbl_phaddr_lo[3]; 1784*eef4f27bSRobert Mustacchi u8_t l5ctx_rcv_q_qp_ou_state; 1785*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_QP_OU_STATE_UPLOADED (1<<0) 1786*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_QP_OU_STATE_OFFLOADED (1<<1) 1787*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_QP_OU_STATE_UPLOAD_REQ (1<<2) 1788*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_QP_OU_STATE_OFFLOAD_REQ (1<<3) 1789*eef4f27bSRobert Mustacchi 1790*eef4f27bSRobert Mustacchi u32_t l5ctx_rcv_q_cached_pte_phaddr_hi; 1791*eef4f27bSRobert Mustacchi u32_t l5ctx_rcv_q_cached_pte_phaddr_lo; 1792*eef4f27bSRobert Mustacchi l5_abuf_cell_b_t l5ctx_rcv_q_abuf[2]; 1793*eef4f27bSRobert Mustacchi u32_t l5ctx_cq_cid; 1794*eef4f27bSRobert Mustacchi u32_t l5ctx_curr_send_msn; 1795*eef4f27bSRobert Mustacchi u32_t l5ctx_curr_rdma_read_msn; 1796*eef4f27bSRobert Mustacchi u16_t l5ctx_pd; 1797*eef4f27bSRobert Mustacchi u8_t l5ctx_rcv_path_op_state; 1798*eef4f27bSRobert Mustacchi 1799*eef4f27bSRobert Mustacchi u8_t l5ctx_ird; 1800*eef4f27bSRobert Mustacchi u32_t l5ctx_tx_initial_tcp_sn; 1801*eef4f27bSRobert Mustacchi u16_t l5ctx_tsch_mult_value; 1802*eef4f27bSRobert Mustacchi u8_t l5ctx_null_cmd_cell_pidx; 1803*eef4f27bSRobert Mustacchi u8_t l5ctx_null_cmd_cell_cidx; 1804*eef4f27bSRobert Mustacchi l5_orrq_entry_b_t l5ctx_orrq[1]; 1805*eef4f27bSRobert Mustacchi l5_irrq_entry_b_t l5ctx_irrq[1]; 1806*eef4f27bSRobert Mustacchi u8_t l5ctx_miq_index; 1807*eef4f27bSRobert Mustacchi u8_t l5ctx_rx_comp_flags; 1808*eef4f27bSRobert Mustacchi 1809*eef4f27bSRobert Mustacchi u8_t l5ctx_qp_flags; 1810*eef4f27bSRobert Mustacchi 1811*eef4f27bSRobert Mustacchi u8_t l5ctx_upload_flag; 1812*eef4f27bSRobert Mustacchi 1813*eef4f27bSRobert Mustacchi u8_t l5ctx_upload_rxp; 1814*eef4f27bSRobert Mustacchi 1815*eef4f27bSRobert Mustacchi u8_t l5ctx_ooo_read_resp_segs_w_L_bit; 1816*eef4f27bSRobert Mustacchi u8_t l5ctx_ooo_send_msg_segs_w_L_bit; 1817*eef4f27bSRobert Mustacchi u8_t l5ctx_ooo_read_request_msgs; 1818*eef4f27bSRobert Mustacchi u32_t l5ctx_high_tcp_ack_sn_rcvd; 1819*eef4f27bSRobert Mustacchi u32_t l5ctx_rx_initial_tcp_sn; 1820*eef4f27bSRobert Mustacchi u32_t l5ctx_send_msg_high_msn_completed; 1821*eef4f27bSRobert Mustacchi u32_t l5ctx_read_req_high_msn_queued; 1822*eef4f27bSRobert Mustacchi u32_t l5ctx_rsvd_l4_hole_mgmt[3]; 1823*eef4f27bSRobert Mustacchi u16_t l5ctx_cam_index; 1824*eef4f27bSRobert Mustacchi u16_t l5ctx_offload_flag; 1825*eef4f27bSRobert Mustacchi } l5_context_b_t; 1826*eef4f27bSRobert Mustacchi 1827*eef4f27bSRobert Mustacchi 1828*eef4f27bSRobert Mustacchi 1829*eef4f27bSRobert Mustacchi /* 1830*eef4f27bSRobert Mustacchi * l5_context_b definition 1831*eef4f27bSRobert Mustacchi */ 1832*eef4f27bSRobert Mustacchi typedef struct l5_context_b_xi 1833*eef4f27bSRobert Mustacchi { 1834*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_tsch_snd_next; 1835*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_max; 1836*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_cp_cmd; 1837*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_tsch_cmd; 1838*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_cons_retx_num; 1839*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_tsch_xnum; 1840*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TSCH_XNUM_VAL (0x7f<<0) 1841*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TSCH_XNUM_L4 (1<<7) 1842*eef4f27bSRobert Mustacchi 1843*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_pgid; 1844*eef4f27bSRobert Mustacchi #define L5CTX_TCP_PGID_VAL (0x3fff<<0) 1845*eef4f27bSRobert Mustacchi 1846*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_prod_retx_num; 1847*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_tsch_cons_retx_num; 1848*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_l2_slot_size; 1849*eef4f27bSRobert Mustacchi u8_t unused_0; 1850*eef4f27bSRobert Mustacchi u16_t unused_1; 1851*eef4f27bSRobert Mustacchi u32_t unused_2; 1852*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_ttl; 1853*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_tos; 1854*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_dack; 1855*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_modes; 1856*eef4f27bSRobert Mustacchi #define L5CTX_TCP_MODES_RST_INDICATED (1<<0) 1857*eef4f27bSRobert Mustacchi #define L5CTX_TCP_MODES_DISC_BD (1<<1) 1858*eef4f27bSRobert Mustacchi #define L5CTX_TCP_MODES_UPLOAD_INITED (1<<2) 1859*eef4f27bSRobert Mustacchi #define L5CTX_TCP_MODES_RMT_DISC (1<<3) 1860*eef4f27bSRobert Mustacchi #define L5CTX_TCP_MODES_PG_INVALIDATED (1<<4) 1861*eef4f27bSRobert Mustacchi #define L5CTX_TCP_MODES_ABORT_PENDING (1<<5) 1862*eef4f27bSRobert Mustacchi #define L5CTX_TCP_MODES_DISC_PENDING (1<<6) 1863*eef4f27bSRobert Mustacchi #define L5CTX_TCP_MODES_SS (1<<7) 1864*eef4f27bSRobert Mustacchi 1865*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_max_adv_win; 1866*eef4f27bSRobert Mustacchi u32_t l5ctx_timer; 1867*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_ip_src; 1868*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_ip_dst; 1869*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_iphdr_nbytes; 1870*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_snd_seg_scale; 1871*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_rcv_seg_scale; 1872*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_tcp_hlen; 1873*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_src_port; 1874*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_dst_port; 1875*eef4f27bSRobert Mustacchi u32_t l5ctx_tx_initial_tcp_sn; 1876*eef4f27bSRobert Mustacchi u8_t l5ctx_upload_flag; 1877*eef4f27bSRobert Mustacchi #define L5CTX_UPLOAD_FLAG_TXP (1<<0) 1878*eef4f27bSRobert Mustacchi #define L5CTX_UPLOAD_FLAG_TXP_COM (1<<1) 1879*eef4f27bSRobert Mustacchi u8_t unused_3; 1880*eef4f27bSRobert Mustacchi u16_t unused_4; 1881*eef4f27bSRobert Mustacchi u32_t unused_5[17]; 1882*eef4f27bSRobert Mustacchi 1883*eef4f27bSRobert Mustacchi u8_t l5ctx_type; 1884*eef4f27bSRobert Mustacchi #define L5CTX_TYPE_TYPE (0xf<<4) 1885*eef4f27bSRobert Mustacchi #define L5CTX_TYPE_TYPE_EMPTY (0<<4) 1886*eef4f27bSRobert Mustacchi #define L5CTX_TYPE_TYPE_L2 (1<<4) 1887*eef4f27bSRobert Mustacchi #define L5CTX_TYPE_TYPE_TCP (2<<4) 1888*eef4f27bSRobert Mustacchi #define L5CTX_TYPE_TYPE_L5 (3<<4) 1889*eef4f27bSRobert Mustacchi #define L5CTX_TYPE_TYPE_L2_BD_CHN (4<<4) 1890*eef4f27bSRobert Mustacchi 1891*eef4f27bSRobert Mustacchi u8_t l5ctx_size; 1892*eef4f27bSRobert Mustacchi #define L5CTX_SIZE_ARM_CQ (1<<0) 1893*eef4f27bSRobert Mustacchi 1894*eef4f27bSRobert Mustacchi u16_t l5ctx_cq_cidx; 1895*eef4f27bSRobert Mustacchi u8_t l5ctx_gen_bd_max; 1896*eef4f27bSRobert Mustacchi u8_t l5ctx_oubits; 1897*eef4f27bSRobert Mustacchi #define L5CTX_OUBITS_ACTIVATE (1<<0) 1898*eef4f27bSRobert Mustacchi #define L5CTX_OUBITS_CP_UPLOAD (1<<1) 1899*eef4f27bSRobert Mustacchi #define L5CTX_OUBITS_RXP_UPLOAD (1<<2) 1900*eef4f27bSRobert Mustacchi #define L5CTX_OUBITS_TXP_UPLOAD (1<<3) 1901*eef4f27bSRobert Mustacchi #define L5CTX_OUBITS_COM_RX_UPLOAD (1<<4) 1902*eef4f27bSRobert Mustacchi #define L5CTX_OUBITS_COM_TX_UPLOAD (1<<5) 1903*eef4f27bSRobert Mustacchi #define L5CTX_OUBITS_CP_UPLOAD_COMP (1<<6) 1904*eef4f27bSRobert Mustacchi #define L5CTX_OUBITS_HOST_ACK (1<<7) 1905*eef4f27bSRobert Mustacchi 1906*eef4f27bSRobert Mustacchi u16_t l5ctx_sq_pidx; 1907*eef4f27bSRobert Mustacchi u16_t unused_6; 1908*eef4f27bSRobert Mustacchi u16_t l5ctx_rq_pidx; 1909*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_timer1; 1910*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TIMER1_DISABLE (1UL<<0) 1911*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TIMER1_VALUE (0x7fffffffL<<1) 1912*eef4f27bSRobert Mustacchi 1913*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_timer2; 1914*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TIMER2_DISABLE (1<<0) 1915*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TIMER2_VALUE (0x7fff<<1) 1916*eef4f27bSRobert Mustacchi 1917*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_timer3; 1918*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TIMER3_DISABLE (1<<0) 1919*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TIMER3_VALUE (0x7fff<<1) 1920*eef4f27bSRobert Mustacchi 1921*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_timer4; 1922*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TIMER4_DISABLE (1<<0) 1923*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TIMER4_VALUE (0x7fff<<1) 1924*eef4f27bSRobert Mustacchi 1925*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_timer5; 1926*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TIMER5_DISABLE (1<<0) 1927*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TIMER5_VALUE (0x7fff<<1) 1928*eef4f27bSRobert Mustacchi 1929*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_slot_size; 1930*eef4f27bSRobert Mustacchi #define L5CTX_TCP_SLOT_SIZE_SLOT_SIZE (0xffffffL<<0) 1931*eef4f27bSRobert Mustacchi #define L5CTX_TCP_SLOT_SIZE_CMD_MAX (0x7fL<<24) 1932*eef4f27bSRobert Mustacchi #define L5CTX_TCP_SLOT_SIZE_STOP (1UL<<31) 1933*eef4f27bSRobert Mustacchi 1934*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_cwin; 1935*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_win; 1936*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_num_dupack; 1937*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_tx_protocol_flags; 1938*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TX_PROTOCOL_FLAGS_TIMER_DELAY_ACK (1<<0) 1939*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TX_PROTOCOL_FLAGS_UPLOAD (1<<1) 1940*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TX_PROTOCOL_FLAGS_FORCE_ACK (1<<2) 1941*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TX_PROTOCOL_FLAGS_LAST_ACK (1<<3) 1942*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TX_PROTOCOL_FLAGS_LAST_RST (1<<4) 1943*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TX_PROTOCOL_FLAGS_FORCE_RST (1<<5) 1944*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TX_PROTOCOL_FLAGS_FORCE_ACK_MINUS (1<<6) 1945*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TX_PROTOCOL_FLAGS_TSCH_WA (1<<7) 1946*eef4f27bSRobert Mustacchi 1947*eef4f27bSRobert Mustacchi u8_t l5ctx_upload_rxp; 1948*eef4f27bSRobert Mustacchi #define L5CTX_UPLOAD_RXP_COM (1<<0) 1949*eef4f27bSRobert Mustacchi 1950*eef4f27bSRobert Mustacchi u8_t l5ctx_qp_ou_state; 1951*eef4f27bSRobert Mustacchi #define L5CTX_QP_OU_STATE_UPLOADED (1<<0) 1952*eef4f27bSRobert Mustacchi #define L5CTX_QP_OU_STATE_OFFLOADED (1<<1) 1953*eef4f27bSRobert Mustacchi #define L5CTX_QP_OU_STATE_UPLOAD_REQ (1<<2) 1954*eef4f27bSRobert Mustacchi #define L5CTX_QP_OU_STATE_OFFLOAD_REQ (1<<3) 1955*eef4f27bSRobert Mustacchi u32_t unused_7; 1956*eef4f27bSRobert Mustacchi 1957*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_mss; 1958*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_flags; 1959*eef4f27bSRobert Mustacchi #define L5CTX_TCP_FLAGS_NO_DELAY_ACK (1<<0) 1960*eef4f27bSRobert Mustacchi #define L5CTX_TCP_FLAGS_KEEP_ALIVE (1<<1) 1961*eef4f27bSRobert Mustacchi #define L5CTX_TCP_FLAGS_NAGLE (1<<2) 1962*eef4f27bSRobert Mustacchi #define L5CTX_TCP_FLAGS_TIME_STAMP (1<<3) 1963*eef4f27bSRobert Mustacchi #define L5CTX_TCP_FLAGS_SACK (1<<4) 1964*eef4f27bSRobert Mustacchi #define L5CTX_TCP_FLAGS_SEG_SCALING (1<<5) 1965*eef4f27bSRobert Mustacchi 1966*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_state; 1967*eef4f27bSRobert Mustacchi #define L5CTX_TCP_STATE_VALUE (0xff<<0) 1968*eef4f27bSRobert Mustacchi #define L5CTX_TCP_STATE_VALUE_UNDEFINED (0<<0) 1969*eef4f27bSRobert Mustacchi #define L5CTX_TCP_STATE_VALUE_LISTEN (2<<0) 1970*eef4f27bSRobert Mustacchi #define L5CTX_TCP_STATE_VALUE_SYN_SENT (4<<0) 1971*eef4f27bSRobert Mustacchi #define L5CTX_TCP_STATE_VALUE_SYN_RECV (6<<0) 1972*eef4f27bSRobert Mustacchi #define L5CTX_TCP_STATE_VALUE_CLOSE_WAIT (8<<0) 1973*eef4f27bSRobert Mustacchi #define L5CTX_TCP_STATE_VALUE_ESTABLISHED (10<<0) 1974*eef4f27bSRobert Mustacchi #define L5CTX_TCP_STATE_VALUE_FIN_WAIT1 (12<<0) 1975*eef4f27bSRobert Mustacchi #define L5CTX_TCP_STATE_VALUE_FIN_WAIT2 (14<<0) 1976*eef4f27bSRobert Mustacchi #define L5CTX_TCP_STATE_VALUE_TIME_WAIT (16<<0) 1977*eef4f27bSRobert Mustacchi #define L5CTX_TCP_STATE_VALUE_CLOSE (18<<0) 1978*eef4f27bSRobert Mustacchi #define L5CTX_TCP_STATE_VALUE_LAST_ACK (20<<0) 1979*eef4f27bSRobert Mustacchi #define L5CTX_TCP_STATE_VALUE_CLOSING (22<<0) 1980*eef4f27bSRobert Mustacchi 1981*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_rcv_next; 1982*eef4f27bSRobert Mustacchi u32_t l5ctx_last_ack_sent; 1983*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_rcv_win_seq; 1984*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_una; 1985*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_next; 1986*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_tstamp; 1987*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_ssthresh; 1988*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_sm_rtt; 1989*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_sm_delta; 1990*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_max_snd_win; 1991*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_comp_cons_retx_num; 1992*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_num_retx; 1993*eef4f27bSRobert Mustacchi u8_t unused_8; 1994*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_txp_cmd; 1995*eef4f27bSRobert Mustacchi u32_t unused_9; 1996*eef4f27bSRobert Mustacchi u8_t l5ctx_snd_q_max_cached_wqes; 1997*eef4f27bSRobert Mustacchi u8_t l5ctx_null_cmd_cell_pidx; 1998*eef4f27bSRobert Mustacchi u8_t l5ctx_null_cmd_cell_cidx; 1999*eef4f27bSRobert Mustacchi u8_t l5ctx_qp_flags; 2000*eef4f27bSRobert Mustacchi #define L5CTX_QP_FLAGS_QP_VALID (1<<0) 2001*eef4f27bSRobert Mustacchi #define L5CTX_QP_FLAGS_SUPPORTS_LAZY_WQES (1<<1) 2002*eef4f27bSRobert Mustacchi #define L5CTX_QP_FLAGS_INBOUND_RDMA_READ_DISABLED (1<<2) 2003*eef4f27bSRobert Mustacchi #define L5CTX_QP_FLAGS_INBOUND_RDMA_WRITE_DISABLED (1<<3) 2004*eef4f27bSRobert Mustacchi #define L5CTX_QP_FLAGS_WINDOW_BINDS_ENABLED (1<<4) 2005*eef4f27bSRobert Mustacchi #define L5CTX_QP_FLAGS_LOCAL_INVALIDATE_IN_PROGRESS (1<<5) 2006*eef4f27bSRobert Mustacchi 2007*eef4f27bSRobert Mustacchi l5_orrq_entry_b_xi_t l5ctx_orrq[1]; 2008*eef4f27bSRobert Mustacchi u32_t l5ctx_cq_cid; 2009*eef4f27bSRobert Mustacchi u32_t unused_10[4]; 2010*eef4f27bSRobert Mustacchi u32_t l5ctx_rdma_crc; 2011*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_wl1; 2012*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_wl2; 2013*eef4f27bSRobert Mustacchi u16_t unused_11; 2014*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_upload_reason; 2015*eef4f27bSRobert Mustacchi #define L5CTX_TCP_UPLOAD_REASON_KEEP_ALIVE (1<<0) 2016*eef4f27bSRobert Mustacchi #define L5CTX_TCP_UPLOAD_REASON_FIN (1<<1) 2017*eef4f27bSRobert Mustacchi #define L5CTX_TCP_UPLOAD_REASON_URG (1<<2) 2018*eef4f27bSRobert Mustacchi #define L5CTX_TCP_UPLOAD_REASON_FRAGMENT (1<<3) 2019*eef4f27bSRobert Mustacchi #define L5CTX_TCP_UPLOAD_REASON_IP_OPTION (1<<4) 2020*eef4f27bSRobert Mustacchi #define L5CTX_TCP_UPLOAD_REASON_RST (1<<5) 2021*eef4f27bSRobert Mustacchi #define L5CTX_TCP_UPLOAD_REASON_SYN (1<<6) 2022*eef4f27bSRobert Mustacchi #define L5CTX_TCP_UPLOAD_REASON_TIMEOUT (1<<7) 2023*eef4f27bSRobert Mustacchi u8_t unused_12; 2024*eef4f27bSRobert Mustacchi 2025*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_offload_seq; 2026*eef4f27bSRobert Mustacchi u32_t l5ctx_pg_cwin; 2027*eef4f27bSRobert Mustacchi u32_t l5ctx_high_tcp_ack_sn_rcvd; 2028*eef4f27bSRobert Mustacchi u16_t l5ctx_pd; 2029*eef4f27bSRobert Mustacchi u8_t l5ctx_snd_q_cidx; 2030*eef4f27bSRobert Mustacchi u8_t l5ctx_snd_q_pidx; 2031*eef4f27bSRobert Mustacchi u8_t l5ctx_read_rsp_wait; 2032*eef4f27bSRobert Mustacchi u8_t l5ctx_rcv_q_flags; 2033*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE (0xf<<0) 2034*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_256 (0<<0) 2035*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_512 (1<<0) 2036*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_1K (2<<0) 2037*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_2K (3<<0) 2038*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_4K (4<<0) 2039*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_8K (5<<0) 2040*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_16K (6<<0) 2041*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_32K (7<<0) 2042*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_64K (8<<0) 2043*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_128K (9<<0) 2044*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_256K (10<<0) 2045*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_512K (11<<0) 2046*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_1M (12<<0) 2047*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_2M (13<<0) 2048*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE (0xf<<4) 2049*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_1 (0<<4) 2050*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_2 (1<<4) 2051*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_4 (2<<4) 2052*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_8 (3<<4) 2053*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_16 (4<<4) 2054*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_32 (5<<4) 2055*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_64 (6<<4) 2056*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_128 (7<<4) 2057*eef4f27bSRobert Mustacchi 2058*eef4f27bSRobert Mustacchi u8_t l5ctx_rcv_q_pidx; 2059*eef4f27bSRobert Mustacchi u8_t l5ctx_rcv_q_rxp_cidx; 2060*eef4f27bSRobert Mustacchi u8_t l5ctx_rcv_q_com_cidx; 2061*eef4f27bSRobert Mustacchi u8_t l5ctx_ird; 2062*eef4f27bSRobert Mustacchi u8_t l5ctx_rx_comp_flags; 2063*eef4f27bSRobert Mustacchi #define L5CTX_RX_COMP_FLAGS_TCP_HOLE_EXISTS (1<<0) 2064*eef4f27bSRobert Mustacchi #define L5CTX_RX_COMP_FLAGS_MARKER_IN_ISLAND (1<<1) 2065*eef4f27bSRobert Mustacchi #define L5CTX_RX_COMP_FLAGS_READ_REQ_OUTSTANDING (1<<2) 2066*eef4f27bSRobert Mustacchi #define L5CTX_RX_COMP_FLAGS_TCP_ISLAND_CREATED (1<<3) 2067*eef4f27bSRobert Mustacchi 2068*eef4f27bSRobert Mustacchi u8_t l5ctx_ooo_read_resp_segs_w_L_bit; 2069*eef4f27bSRobert Mustacchi u8_t l5ctx_ooo_send_msg_segs_w_L_bit; 2070*eef4f27bSRobert Mustacchi u8_t l5ctx_ooo_read_request_msgs; 2071*eef4f27bSRobert Mustacchi u8_t l5ctx_miq_index; 2072*eef4f27bSRobert Mustacchi u8_t l5ctx_rcv_path_op_state; 2073*eef4f27bSRobert Mustacchi #define L5CTX_RCV_PATH_OP_STATE_OPERATIONAL (1<<0) 2074*eef4f27bSRobert Mustacchi #define L5CTX_RCV_PATH_OP_STATE_BYPASS (1<<1) 2075*eef4f27bSRobert Mustacchi 2076*eef4f27bSRobert Mustacchi u32_t l5ctx_send_msg_high_msn_completed; 2077*eef4f27bSRobert Mustacchi u32_t l5ctx_read_req_high_msn_queued; 2078*eef4f27bSRobert Mustacchi u32_t l5ctx_rx_initial_tcp_sn; 2079*eef4f27bSRobert Mustacchi u32_t l5ctx_rsvd_l4_hole_mgmt[4]; 2080*eef4f27bSRobert Mustacchi l5_irrq_entry_b_xi_t l5ctx_irrq[1]; 2081*eef4f27bSRobert Mustacchi l5_abuf_cell_b_xi_t l5ctx_rcv_q_abuf[2]; 2082*eef4f27bSRobert Mustacchi u32_t unused_13[9]; 2083*eef4f27bSRobert Mustacchi u16_t l5ctx_snd_q_max_wqes; 2084*eef4f27bSRobert Mustacchi u16_t l5ctx_snd_q_fw_qidx; 2085*eef4f27bSRobert Mustacchi u16_t l5ctx_snd_q_pgtbl_pgidx; 2086*eef4f27bSRobert Mustacchi u16_t l5ctx_snd_q_wqes_per_page; 2087*eef4f27bSRobert Mustacchi u16_t l5ctx_snd_q_num_pages; 2088*eef4f27bSRobert Mustacchi u16_t l5ctx_snd_q_nx_pg_qidx; 2089*eef4f27bSRobert Mustacchi u32_t l5ctx_snd_q_pgtbl_phaddr_hi; 2090*eef4f27bSRobert Mustacchi u8_t l5ctx_snd_q_pgtbl_phaddr_lo[3]; 2091*eef4f27bSRobert Mustacchi u8_t l5ctx_snd_q_flags; 2092*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE (0xf<<0) 2093*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_256 (0<<0) 2094*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_512 (1<<0) 2095*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_1K (2<<0) 2096*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_2K (3<<0) 2097*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_4K (4<<0) 2098*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_8K (5<<0) 2099*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_16K (6<<0) 2100*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_32K (7<<0) 2101*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_64K (8<<0) 2102*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_128K (9<<0) 2103*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_256K (10<<0) 2104*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_512K (11<<0) 2105*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_1M (12<<0) 2106*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_2M (13<<0) 2107*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE (0xf<<4) 2108*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_1 (0<<4) 2109*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_2 (1<<4) 2110*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_4 (2<<4) 2111*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_8 (3<<4) 2112*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_16 (4<<4) 2113*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_32 (5<<4) 2114*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_64 (6<<4) 2115*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_128 (7<<4) 2116*eef4f27bSRobert Mustacchi 2117*eef4f27bSRobert Mustacchi u32_t l5ctx_rcv_q_pgtbl_phaddr_hi; 2118*eef4f27bSRobert Mustacchi u8_t l5ctx_rcv_q_pgtbl_phaddr_lo[3]; 2119*eef4f27bSRobert Mustacchi u8_t l5ctx_ord; 2120*eef4f27bSRobert Mustacchi u16_t l5ctx_rcv_q_nx_pg_qidx; 2121*eef4f27bSRobert Mustacchi u16_t l5ctx_tsch_mult_value; 2122*eef4f27bSRobert Mustacchi u16_t l5ctx_rcv_q_max_wqes; 2123*eef4f27bSRobert Mustacchi u16_t l5ctx_rcv_q_fw_qidx; 2124*eef4f27bSRobert Mustacchi u16_t l5ctx_rcv_q_pgtbl_pgidx; 2125*eef4f27bSRobert Mustacchi u16_t l5ctx_rcv_q_wqes_per_page; 2126*eef4f27bSRobert Mustacchi u16_t l5ctx_rcv_q_num_pages; 2127*eef4f27bSRobert Mustacchi u8_t l5ctx_max_scatter_list_elements; 2128*eef4f27bSRobert Mustacchi u8_t l5ctx_max_gather_list_elements; 2129*eef4f27bSRobert Mustacchi u32_t l5ctx_curr_send_msn; 2130*eef4f27bSRobert Mustacchi u32_t l5ctx_curr_rdma_read_msn; 2131*eef4f27bSRobert Mustacchi u32_t l5ctx_snd_q_cached_pte_phaddr_hi; 2132*eef4f27bSRobert Mustacchi u32_t l5ctx_snd_q_cached_pte_phaddr_lo; 2133*eef4f27bSRobert Mustacchi u32_t l5ctx_rcv_q_cached_pte_phaddr_hi; 2134*eef4f27bSRobert Mustacchi u32_t l5ctx_rcv_q_cached_pte_phaddr_lo; 2135*eef4f27bSRobert Mustacchi u32_t unused_14[15]; 2136*eef4f27bSRobert Mustacchi tcp_context_cmd_cell_b_xi_t l5ctx_cmd[3]; 2137*eef4f27bSRobert Mustacchi } l5_context_b_xi_t; 2138*eef4f27bSRobert Mustacchi 2139*eef4f27bSRobert Mustacchi 2140*eef4f27bSRobert Mustacchi /* 2141*eef4f27bSRobert Mustacchi * l5_context_l definition 2142*eef4f27bSRobert Mustacchi */ 2143*eef4f27bSRobert Mustacchi typedef struct l5_context_l 2144*eef4f27bSRobert Mustacchi { 2145*eef4f27bSRobert Mustacchi u16_t l5ctx_cq_cidx; 2146*eef4f27bSRobert Mustacchi u8_t l5ctx_size; 2147*eef4f27bSRobert Mustacchi u8_t l5ctx_type; 2148*eef4f27bSRobert Mustacchi 2149*eef4f27bSRobert Mustacchi u16_t l5ctx_sq_pidx; 2150*eef4f27bSRobert Mustacchi u8_t l5ctx_oubits; 2151*eef4f27bSRobert Mustacchi 2152*eef4f27bSRobert Mustacchi u8_t l5ctx_gen_bd_max; 2153*eef4f27bSRobert Mustacchi u16_t l5ctx_rq_pidx; 2154*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_pgid; 2155*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_timer1; 2156*eef4f27bSRobert Mustacchi 2157*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_timer3; 2158*eef4f27bSRobert Mustacchi 2159*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_timer2; 2160*eef4f27bSRobert Mustacchi 2161*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_timer5; 2162*eef4f27bSRobert Mustacchi 2163*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_timer4; 2164*eef4f27bSRobert Mustacchi 2165*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_wl1; 2166*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_wl2; 2167*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_modes; 2168*eef4f27bSRobert Mustacchi 2169*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_dack; 2170*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_tos; 2171*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_ttl; 2172*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_max_adv_win; 2173*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_timer; 2174*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_ip_src; 2175*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_ip_dst; 2176*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_tcp_hlen; 2177*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_rcv_seg_scale; 2178*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_snd_seg_scale; 2179*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_iphdr_nbytes; 2180*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_dst_port; 2181*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_src_port; 2182*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_state; 2183*eef4f27bSRobert Mustacchi 2184*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_flags; 2185*eef4f27bSRobert Mustacchi 2186*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_mss; 2187*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_rcv_next; 2188*eef4f27bSRobert Mustacchi u32_t l5ctx_last_ack_sent; 2189*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_rcv_win_seq; 2190*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_una; 2191*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_next; 2192*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_max; 2193*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_win; 2194*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_cwin; 2195*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_tstamp; 2196*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_ssthresh; 2197*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_sm_delta; 2198*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_sm_rtt; 2199*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_max_snd_win; 2200*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_tsch_snd_next; 2201*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_slot_size; 2202*eef4f27bSRobert Mustacchi 2203*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_tsch_xnum; 2204*eef4f27bSRobert Mustacchi 2205*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_cons_retx_num; 2206*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_tsch_cmd; 2207*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_cp_cmd; 2208*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_tsch_cons_retx_num; 2209*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_prod_retx_num; 2210*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_tx_protocol_flags; 2211*eef4f27bSRobert Mustacchi 2212*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_num_dupack; 2213*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_txp_cmd; 2214*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_upload_reason; 2215*eef4f27bSRobert Mustacchi 2216*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_num_retx; 2217*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_comp_cons_retx_num; 2218*eef4f27bSRobert Mustacchi u32_t unused_0; 2219*eef4f27bSRobert Mustacchi tcp_context_cmd_cell_l_te_t l5ctx_cmd[3]; 2220*eef4f27bSRobert Mustacchi u16_t l5ctx_snd_q_fw_qidx; 2221*eef4f27bSRobert Mustacchi u16_t l5ctx_snd_q_max_wqes; 2222*eef4f27bSRobert Mustacchi u16_t l5ctx_snd_q_pgtbl_pgidx; 2223*eef4f27bSRobert Mustacchi u16_t l5ctx_snd_q_nx_pg_qidx; 2224*eef4f27bSRobert Mustacchi u16_t l5ctx_snd_q_num_pages; 2225*eef4f27bSRobert Mustacchi u16_t l5ctx_snd_q_wqes_per_page; 2226*eef4f27bSRobert Mustacchi u8_t l5ctx_snd_q_flags; 2227*eef4f27bSRobert Mustacchi 2228*eef4f27bSRobert Mustacchi u8_t l5ctx_snd_q_max_cached_wqes; 2229*eef4f27bSRobert Mustacchi u8_t l5ctx_snd_q_cidx; 2230*eef4f27bSRobert Mustacchi u8_t l5ctx_snd_q_pidx; 2231*eef4f27bSRobert Mustacchi u32_t l5ctx_snd_q_pgtbl_phaddr_hi; 2232*eef4f27bSRobert Mustacchi u8_t l5ctx_snd_q_read_rsp_wait; 2233*eef4f27bSRobert Mustacchi u8_t l5ctx_snd_q_pgtbl_phaddr_lo[3]; 2234*eef4f27bSRobert Mustacchi u32_t l5ctx_snd_q_cached_pte_phaddr_hi; 2235*eef4f27bSRobert Mustacchi u32_t l5ctx_snd_q_cached_pte_phaddr_lo; 2236*eef4f27bSRobert Mustacchi l5_cmd_cell_l_t l5ctx_snd_q_cmd[3]; 2237*eef4f27bSRobert Mustacchi u16_t l5ctx_rcv_q_fw_qidx; 2238*eef4f27bSRobert Mustacchi u16_t l5ctx_rcv_q_max_wqes; 2239*eef4f27bSRobert Mustacchi u16_t l5ctx_rcv_q_pgtbl_pgidx; 2240*eef4f27bSRobert Mustacchi u16_t l5ctx_rcv_q_nx_pg_qidx; 2241*eef4f27bSRobert Mustacchi u16_t l5ctx_rcv_q_num_pages; 2242*eef4f27bSRobert Mustacchi u16_t l5ctx_rcv_q_wqes_per_page; 2243*eef4f27bSRobert Mustacchi u8_t l5ctx_rcv_q_flags; 2244*eef4f27bSRobert Mustacchi 2245*eef4f27bSRobert Mustacchi u8_t l5ctx_rcv_q_com_cidx; 2246*eef4f27bSRobert Mustacchi u8_t l5ctx_rcv_q_rxp_cidx; 2247*eef4f27bSRobert Mustacchi u8_t l5ctx_rcv_q_pidx; 2248*eef4f27bSRobert Mustacchi u32_t l5ctx_rcv_q_pgtbl_phaddr_hi; 2249*eef4f27bSRobert Mustacchi u8_t l5ctx_rcv_q_qp_ou_state; 2250*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_QP_OU_STATE_UPLOADED (1<<0) 2251*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_QP_OU_STATE_OFFLOADED (1<<1) 2252*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_QP_OU_STATE_UPLOAD_REQ (1<<2) 2253*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_QP_OU_STATE_OFFLOAD_REQ (1<<3) 2254*eef4f27bSRobert Mustacchi 2255*eef4f27bSRobert Mustacchi u8_t l5ctx_rcv_q_pgtbl_phaddr_lo[3]; 2256*eef4f27bSRobert Mustacchi u32_t l5ctx_rcv_q_cached_pte_phaddr_hi; 2257*eef4f27bSRobert Mustacchi u32_t l5ctx_rcv_q_cached_pte_phaddr_lo; 2258*eef4f27bSRobert Mustacchi l5_abuf_cell_l_t l5ctx_rcv_q_abuf[2]; 2259*eef4f27bSRobert Mustacchi u32_t l5ctx_cq_cid; 2260*eef4f27bSRobert Mustacchi u32_t l5ctx_curr_send_msn; 2261*eef4f27bSRobert Mustacchi u32_t l5ctx_curr_rdma_read_msn; 2262*eef4f27bSRobert Mustacchi u8_t l5ctx_ird; 2263*eef4f27bSRobert Mustacchi u8_t l5ctx_rcv_path_op_state; 2264*eef4f27bSRobert Mustacchi 2265*eef4f27bSRobert Mustacchi u16_t l5ctx_pd; 2266*eef4f27bSRobert Mustacchi u32_t l5ctx_tx_initial_tcp_sn; 2267*eef4f27bSRobert Mustacchi u8_t l5ctx_null_cmd_cell_cidx; 2268*eef4f27bSRobert Mustacchi u8_t l5ctx_null_cmd_cell_pidx; 2269*eef4f27bSRobert Mustacchi u16_t l5ctx_tsch_mult_value; 2270*eef4f27bSRobert Mustacchi l5_orrq_entry_l_t l5ctx_orrq[1]; 2271*eef4f27bSRobert Mustacchi l5_irrq_entry_l_t l5ctx_irrq[1]; 2272*eef4f27bSRobert Mustacchi u8_t l5ctx_upload_flag; 2273*eef4f27bSRobert Mustacchi 2274*eef4f27bSRobert Mustacchi u8_t l5ctx_qp_flags; 2275*eef4f27bSRobert Mustacchi 2276*eef4f27bSRobert Mustacchi u8_t l5ctx_rx_comp_flags; 2277*eef4f27bSRobert Mustacchi 2278*eef4f27bSRobert Mustacchi u8_t l5ctx_miq_index; 2279*eef4f27bSRobert Mustacchi u8_t l5ctx_ooo_read_request_msgs; 2280*eef4f27bSRobert Mustacchi u8_t l5ctx_ooo_send_msg_segs_w_L_bit; 2281*eef4f27bSRobert Mustacchi u8_t l5ctx_ooo_read_resp_segs_w_L_bit; 2282*eef4f27bSRobert Mustacchi u8_t l5ctx_upload_rxp; 2283*eef4f27bSRobert Mustacchi 2284*eef4f27bSRobert Mustacchi u32_t l5ctx_high_tcp_ack_sn_rcvd; 2285*eef4f27bSRobert Mustacchi u32_t l5ctx_rx_initial_tcp_sn; 2286*eef4f27bSRobert Mustacchi u32_t l5ctx_send_msg_high_msn_completed; 2287*eef4f27bSRobert Mustacchi u32_t l5ctx_read_req_high_msn_queued; 2288*eef4f27bSRobert Mustacchi u32_t l5ctx_rsvd_l4_hole_mgmt[3]; 2289*eef4f27bSRobert Mustacchi u16_t l5ctx_offload_flag; 2290*eef4f27bSRobert Mustacchi u16_t l5ctx_cam_index; 2291*eef4f27bSRobert Mustacchi } l5_context_l_t; 2292*eef4f27bSRobert Mustacchi 2293*eef4f27bSRobert Mustacchi 2294*eef4f27bSRobert Mustacchi 2295*eef4f27bSRobert Mustacchi /* 2296*eef4f27bSRobert Mustacchi * l5_context_l definition 2297*eef4f27bSRobert Mustacchi */ 2298*eef4f27bSRobert Mustacchi typedef struct l5_context_l_xi 2299*eef4f27bSRobert Mustacchi { 2300*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_tsch_snd_next; 2301*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_max; 2302*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_tsch_xnum; 2303*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TSCH_XNUM_VAL (0x7f<<0) 2304*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TSCH_XNUM_L4 (1<<7) 2305*eef4f27bSRobert Mustacchi 2306*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_cons_retx_num; 2307*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_tsch_cmd; 2308*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_cp_cmd; 2309*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_tsch_cons_retx_num; 2310*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_prod_retx_num; 2311*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_pgid; 2312*eef4f27bSRobert Mustacchi #define L5CTX_TCP_PGID_VAL (0x3fff<<0) 2313*eef4f27bSRobert Mustacchi u16_t unused_0; 2314*eef4f27bSRobert Mustacchi u8_t unused_1; 2315*eef4f27bSRobert Mustacchi 2316*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_l2_slot_size; 2317*eef4f27bSRobert Mustacchi u32_t unused_2; 2318*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_modes; 2319*eef4f27bSRobert Mustacchi #define L5CTX_TCP_MODES_RST_INDICATED (1<<0) 2320*eef4f27bSRobert Mustacchi #define L5CTX_TCP_MODES_DISC_BD (1<<1) 2321*eef4f27bSRobert Mustacchi #define L5CTX_TCP_MODES_UPLOAD_INITED (1<<2) 2322*eef4f27bSRobert Mustacchi #define L5CTX_TCP_MODES_RMT_DISC (1<<3) 2323*eef4f27bSRobert Mustacchi #define L5CTX_TCP_MODES_PG_INVALIDATED (1<<4) 2324*eef4f27bSRobert Mustacchi #define L5CTX_TCP_MODES_ABORT_PENDING (1<<5) 2325*eef4f27bSRobert Mustacchi #define L5CTX_TCP_MODES_DISC_PENDING (1<<6) 2326*eef4f27bSRobert Mustacchi #define L5CTX_TCP_MODES_SS (1<<7) 2327*eef4f27bSRobert Mustacchi 2328*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_dack; 2329*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_tos; 2330*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_ttl; 2331*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_max_adv_win; 2332*eef4f27bSRobert Mustacchi u32_t l5ctx_timer; 2333*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_ip_src; 2334*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_ip_dst; 2335*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_tcp_hlen; 2336*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_rcv_seg_scale; 2337*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_snd_seg_scale; 2338*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_iphdr_nbytes; 2339*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_dst_port; 2340*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_src_port; 2341*eef4f27bSRobert Mustacchi u32_t l5ctx_tx_initial_tcp_sn; 2342*eef4f27bSRobert Mustacchi u16_t unused_3; 2343*eef4f27bSRobert Mustacchi u8_t unused_4; 2344*eef4f27bSRobert Mustacchi u8_t l5ctx_upload_flag; 2345*eef4f27bSRobert Mustacchi #define L5CTX_UPLOAD_FLAG_TXP (1<<0) 2346*eef4f27bSRobert Mustacchi #define L5CTX_UPLOAD_FLAG_TXP_COM (1<<1) 2347*eef4f27bSRobert Mustacchi u32_t unused_5[17]; 2348*eef4f27bSRobert Mustacchi 2349*eef4f27bSRobert Mustacchi u16_t l5ctx_cq_cidx; 2350*eef4f27bSRobert Mustacchi u8_t l5ctx_size; 2351*eef4f27bSRobert Mustacchi #define L5CTX_SIZE_ARM_CQ (1<<0) 2352*eef4f27bSRobert Mustacchi 2353*eef4f27bSRobert Mustacchi u8_t l5ctx_type; 2354*eef4f27bSRobert Mustacchi #define L5CTX_TYPE_TYPE (0xf<<4) 2355*eef4f27bSRobert Mustacchi #define L5CTX_TYPE_TYPE_EMPTY (0<<4) 2356*eef4f27bSRobert Mustacchi #define L5CTX_TYPE_TYPE_L2 (1<<4) 2357*eef4f27bSRobert Mustacchi #define L5CTX_TYPE_TYPE_TCP (2<<4) 2358*eef4f27bSRobert Mustacchi #define L5CTX_TYPE_TYPE_L5 (3<<4) 2359*eef4f27bSRobert Mustacchi #define L5CTX_TYPE_TYPE_L2_BD_CHN (4<<4) 2360*eef4f27bSRobert Mustacchi 2361*eef4f27bSRobert Mustacchi u16_t l5ctx_sq_pidx; 2362*eef4f27bSRobert Mustacchi u8_t l5ctx_oubits; 2363*eef4f27bSRobert Mustacchi #define L5CTX_OUBITS_ACTIVATE (1<<0) 2364*eef4f27bSRobert Mustacchi #define L5CTX_OUBITS_CP_UPLOAD (1<<1) 2365*eef4f27bSRobert Mustacchi #define L5CTX_OUBITS_RXP_UPLOAD (1<<2) 2366*eef4f27bSRobert Mustacchi #define L5CTX_OUBITS_TXP_UPLOAD (1<<3) 2367*eef4f27bSRobert Mustacchi #define L5CTX_OUBITS_COM_RX_UPLOAD (1<<4) 2368*eef4f27bSRobert Mustacchi #define L5CTX_OUBITS_COM_TX_UPLOAD (1<<5) 2369*eef4f27bSRobert Mustacchi #define L5CTX_OUBITS_CP_UPLOAD_COMP (1<<6) 2370*eef4f27bSRobert Mustacchi #define L5CTX_OUBITS_HOST_ACK (1<<7) 2371*eef4f27bSRobert Mustacchi 2372*eef4f27bSRobert Mustacchi u8_t l5ctx_gen_bd_max; 2373*eef4f27bSRobert Mustacchi u16_t l5ctx_rq_pidx; 2374*eef4f27bSRobert Mustacchi u16_t unused_6; 2375*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_timer1; 2376*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TIMER1_DISABLE (1UL<<0) 2377*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TIMER1_VALUE (0x7fffffffL<<1) 2378*eef4f27bSRobert Mustacchi 2379*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_timer3; 2380*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TIMER3_DISABLE (1<<0) 2381*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TIMER3_VALUE (0x7fff<<1) 2382*eef4f27bSRobert Mustacchi 2383*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_timer2; 2384*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TIMER2_DISABLE (1<<0) 2385*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TIMER2_VALUE (0x7fff<<1) 2386*eef4f27bSRobert Mustacchi 2387*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_timer5; 2388*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TIMER5_DISABLE (1<<0) 2389*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TIMER5_VALUE (0x7fff<<1) 2390*eef4f27bSRobert Mustacchi 2391*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_timer4; 2392*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TIMER4_DISABLE (1<<0) 2393*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TIMER4_VALUE (0x7fff<<1) 2394*eef4f27bSRobert Mustacchi 2395*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_slot_size; 2396*eef4f27bSRobert Mustacchi #define L5CTX_TCP_SLOT_SIZE_SLOT_SIZE (0xffffffL<<0) 2397*eef4f27bSRobert Mustacchi #define L5CTX_TCP_SLOT_SIZE_CMD_MAX (0x7fL<<24) 2398*eef4f27bSRobert Mustacchi #define L5CTX_TCP_SLOT_SIZE_STOP (1UL<<31) 2399*eef4f27bSRobert Mustacchi 2400*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_cwin; 2401*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_win; 2402*eef4f27bSRobert Mustacchi u8_t l5ctx_qp_ou_state; 2403*eef4f27bSRobert Mustacchi #define L5CTX_QP_OU_STATE_UPLOADED (1<<0) 2404*eef4f27bSRobert Mustacchi #define L5CTX_QP_OU_STATE_OFFLOADED (1<<1) 2405*eef4f27bSRobert Mustacchi #define L5CTX_QP_OU_STATE_UPLOAD_REQ (1<<2) 2406*eef4f27bSRobert Mustacchi #define L5CTX_QP_OU_STATE_OFFLOAD_REQ (1<<3) 2407*eef4f27bSRobert Mustacchi 2408*eef4f27bSRobert Mustacchi u8_t l5ctx_upload_rxp; 2409*eef4f27bSRobert Mustacchi #define L5CTX_UPLOAD_RXP_COM (1<<0) 2410*eef4f27bSRobert Mustacchi 2411*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_tx_protocol_flags; 2412*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TX_PROTOCOL_FLAGS_TIMER_DELAY_ACK (1<<0) 2413*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TX_PROTOCOL_FLAGS_UPLOAD (1<<1) 2414*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TX_PROTOCOL_FLAGS_FORCE_ACK (1<<2) 2415*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TX_PROTOCOL_FLAGS_LAST_ACK (1<<3) 2416*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TX_PROTOCOL_FLAGS_LAST_RST (1<<4) 2417*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TX_PROTOCOL_FLAGS_FORCE_RST (1<<5) 2418*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TX_PROTOCOL_FLAGS_FORCE_ACK_MINUS (1<<6) 2419*eef4f27bSRobert Mustacchi #define L5CTX_TCP_TX_PROTOCOL_FLAGS_TSCH_WA (1<<7) 2420*eef4f27bSRobert Mustacchi 2421*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_num_dupack; 2422*eef4f27bSRobert Mustacchi u32_t unused_7; 2423*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_state; 2424*eef4f27bSRobert Mustacchi #define L5CTX_TCP_STATE_VALUE (0xff<<0) 2425*eef4f27bSRobert Mustacchi #define L5CTX_TCP_STATE_VALUE_UNDEFINED (0<<0) 2426*eef4f27bSRobert Mustacchi #define L5CTX_TCP_STATE_VALUE_LISTEN (2<<0) 2427*eef4f27bSRobert Mustacchi #define L5CTX_TCP_STATE_VALUE_SYN_SENT (4<<0) 2428*eef4f27bSRobert Mustacchi #define L5CTX_TCP_STATE_VALUE_SYN_RECV (6<<0) 2429*eef4f27bSRobert Mustacchi #define L5CTX_TCP_STATE_VALUE_CLOSE_WAIT (8<<0) 2430*eef4f27bSRobert Mustacchi #define L5CTX_TCP_STATE_VALUE_ESTABLISHED (10<<0) 2431*eef4f27bSRobert Mustacchi #define L5CTX_TCP_STATE_VALUE_FIN_WAIT1 (12<<0) 2432*eef4f27bSRobert Mustacchi #define L5CTX_TCP_STATE_VALUE_FIN_WAIT2 (14<<0) 2433*eef4f27bSRobert Mustacchi #define L5CTX_TCP_STATE_VALUE_TIME_WAIT (16<<0) 2434*eef4f27bSRobert Mustacchi #define L5CTX_TCP_STATE_VALUE_CLOSE (18<<0) 2435*eef4f27bSRobert Mustacchi #define L5CTX_TCP_STATE_VALUE_LAST_ACK (20<<0) 2436*eef4f27bSRobert Mustacchi #define L5CTX_TCP_STATE_VALUE_CLOSING (22<<0) 2437*eef4f27bSRobert Mustacchi 2438*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_flags; 2439*eef4f27bSRobert Mustacchi #define L5CTX_TCP_FLAGS_NO_DELAY_ACK (1<<0) 2440*eef4f27bSRobert Mustacchi #define L5CTX_TCP_FLAGS_KEEP_ALIVE (1<<1) 2441*eef4f27bSRobert Mustacchi #define L5CTX_TCP_FLAGS_NAGLE (1<<2) 2442*eef4f27bSRobert Mustacchi #define L5CTX_TCP_FLAGS_TIME_STAMP (1<<3) 2443*eef4f27bSRobert Mustacchi #define L5CTX_TCP_FLAGS_SACK (1<<4) 2444*eef4f27bSRobert Mustacchi #define L5CTX_TCP_FLAGS_SEG_SCALING (1<<5) 2445*eef4f27bSRobert Mustacchi 2446*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_mss; 2447*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_rcv_next; 2448*eef4f27bSRobert Mustacchi u32_t l5ctx_last_ack_sent; 2449*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_rcv_win_seq; 2450*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_una; 2451*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_next; 2452*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_tstamp; 2453*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_ssthresh; 2454*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_sm_delta; 2455*eef4f27bSRobert Mustacchi u16_t l5ctx_tcp_sm_rtt; 2456*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_max_snd_win; 2457*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_txp_cmd; 2458*eef4f27bSRobert Mustacchi u8_t unused_8; 2459*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_num_retx; 2460*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_comp_cons_retx_num; 2461*eef4f27bSRobert Mustacchi u32_t unused_9; 2462*eef4f27bSRobert Mustacchi u8_t l5ctx_qp_flags; 2463*eef4f27bSRobert Mustacchi #define L5CTX_QP_FLAGS_QP_VALID (1<<0) 2464*eef4f27bSRobert Mustacchi #define L5CTX_QP_FLAGS_SUPPORTS_LAZY_WQES (1<<1) 2465*eef4f27bSRobert Mustacchi #define L5CTX_QP_FLAGS_INBOUND_RDMA_READ_DISABLED (1<<2) 2466*eef4f27bSRobert Mustacchi #define L5CTX_QP_FLAGS_INBOUND_RDMA_WRITE_DISABLED (1<<3) 2467*eef4f27bSRobert Mustacchi #define L5CTX_QP_FLAGS_WINDOW_BINDS_ENABLED (1<<4) 2468*eef4f27bSRobert Mustacchi #define L5CTX_QP_FLAGS_LOCAL_INVALIDATE_IN_PROGRESS (1<<5) 2469*eef4f27bSRobert Mustacchi 2470*eef4f27bSRobert Mustacchi u8_t l5ctx_null_cmd_cell_cidx; 2471*eef4f27bSRobert Mustacchi u8_t l5ctx_null_cmd_cell_pidx; 2472*eef4f27bSRobert Mustacchi u8_t l5ctx_snd_q_max_cached_wqes; 2473*eef4f27bSRobert Mustacchi l5_orrq_entry_l_xi_t l5ctx_orrq[1]; 2474*eef4f27bSRobert Mustacchi u32_t l5ctx_cq_cid; 2475*eef4f27bSRobert Mustacchi u32_t unused_10[4]; 2476*eef4f27bSRobert Mustacchi u32_t l5ctx_rdma_crc; 2477*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_wl1; 2478*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_snd_wl2; 2479*eef4f27bSRobert Mustacchi u8_t unused_11; 2480*eef4f27bSRobert Mustacchi u8_t l5ctx_tcp_upload_reason; 2481*eef4f27bSRobert Mustacchi #define L5CTX_TCP_UPLOAD_REASON_KEEP_ALIVE (1<<0) 2482*eef4f27bSRobert Mustacchi #define L5CTX_TCP_UPLOAD_REASON_FIN (1<<1) 2483*eef4f27bSRobert Mustacchi #define L5CTX_TCP_UPLOAD_REASON_URG (1<<2) 2484*eef4f27bSRobert Mustacchi #define L5CTX_TCP_UPLOAD_REASON_FRAGMENT (1<<3) 2485*eef4f27bSRobert Mustacchi #define L5CTX_TCP_UPLOAD_REASON_IP_OPTION (1<<4) 2486*eef4f27bSRobert Mustacchi #define L5CTX_TCP_UPLOAD_REASON_RST (1<<5) 2487*eef4f27bSRobert Mustacchi #define L5CTX_TCP_UPLOAD_REASON_SYN (1<<6) 2488*eef4f27bSRobert Mustacchi #define L5CTX_TCP_UPLOAD_REASON_TIMEOUT (1<<7) 2489*eef4f27bSRobert Mustacchi u16_t unused_12; 2490*eef4f27bSRobert Mustacchi 2491*eef4f27bSRobert Mustacchi u32_t l5ctx_tcp_offload_seq; 2492*eef4f27bSRobert Mustacchi u32_t l5ctx_pg_cwin; 2493*eef4f27bSRobert Mustacchi u32_t l5ctx_high_tcp_ack_sn_rcvd; 2494*eef4f27bSRobert Mustacchi u8_t l5ctx_snd_q_pidx; 2495*eef4f27bSRobert Mustacchi u8_t l5ctx_snd_q_cidx; 2496*eef4f27bSRobert Mustacchi u16_t l5ctx_pd; 2497*eef4f27bSRobert Mustacchi u8_t l5ctx_rcv_q_rxp_cidx; 2498*eef4f27bSRobert Mustacchi u8_t l5ctx_rcv_q_pidx; 2499*eef4f27bSRobert Mustacchi u8_t l5ctx_rcv_q_flags; 2500*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE (0xf<<0) 2501*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_256 (0<<0) 2502*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_512 (1<<0) 2503*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_1K (2<<0) 2504*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_2K (3<<0) 2505*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_4K (4<<0) 2506*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_8K (5<<0) 2507*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_16K (6<<0) 2508*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_32K (7<<0) 2509*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_64K (8<<0) 2510*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_128K (9<<0) 2511*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_256K (10<<0) 2512*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_512K (11<<0) 2513*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_1M (12<<0) 2514*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_PAGE_SIZE_2M (13<<0) 2515*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE (0xf<<4) 2516*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_1 (0<<4) 2517*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_2 (1<<4) 2518*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_4 (2<<4) 2519*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_8 (3<<4) 2520*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_16 (4<<4) 2521*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_32 (5<<4) 2522*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_64 (6<<4) 2523*eef4f27bSRobert Mustacchi #define L5CTX_RCV_Q_FLAGS_QUEUE_SIZE_128 (7<<4) 2524*eef4f27bSRobert Mustacchi 2525*eef4f27bSRobert Mustacchi u8_t l5ctx_read_rsp_wait; 2526*eef4f27bSRobert Mustacchi u8_t l5ctx_ooo_read_resp_segs_w_L_bit; 2527*eef4f27bSRobert Mustacchi u8_t l5ctx_rx_comp_flags; 2528*eef4f27bSRobert Mustacchi #define L5CTX_RX_COMP_FLAGS_TCP_HOLE_EXISTS (1<<0) 2529*eef4f27bSRobert Mustacchi #define L5CTX_RX_COMP_FLAGS_MARKER_IN_ISLAND (1<<1) 2530*eef4f27bSRobert Mustacchi #define L5CTX_RX_COMP_FLAGS_READ_REQ_OUTSTANDING (1<<2) 2531*eef4f27bSRobert Mustacchi #define L5CTX_RX_COMP_FLAGS_TCP_ISLAND_CREATED (1<<3) 2532*eef4f27bSRobert Mustacchi 2533*eef4f27bSRobert Mustacchi u8_t l5ctx_ird; 2534*eef4f27bSRobert Mustacchi u8_t l5ctx_rcv_q_com_cidx; 2535*eef4f27bSRobert Mustacchi u8_t l5ctx_rcv_path_op_state; 2536*eef4f27bSRobert Mustacchi #define L5CTX_RCV_PATH_OP_STATE_OPERATIONAL (1<<0) 2537*eef4f27bSRobert Mustacchi #define L5CTX_RCV_PATH_OP_STATE_BYPASS (1<<1) 2538*eef4f27bSRobert Mustacchi 2539*eef4f27bSRobert Mustacchi u8_t l5ctx_miq_index; 2540*eef4f27bSRobert Mustacchi u8_t l5ctx_ooo_read_request_msgs; 2541*eef4f27bSRobert Mustacchi u8_t l5ctx_ooo_send_msg_segs_w_L_bit; 2542*eef4f27bSRobert Mustacchi u32_t l5ctx_send_msg_high_msn_completed; 2543*eef4f27bSRobert Mustacchi u32_t l5ctx_read_req_high_msn_queued; 2544*eef4f27bSRobert Mustacchi u32_t l5ctx_rx_initial_tcp_sn; 2545*eef4f27bSRobert Mustacchi u32_t l5ctx_rsvd_l4_hole_mgmt[4]; 2546*eef4f27bSRobert Mustacchi l5_irrq_entry_l_xi_t l5ctx_irrq[1]; 2547*eef4f27bSRobert Mustacchi l5_abuf_cell_l_xi_t l5ctx_rcv_q_abuf[2]; 2548*eef4f27bSRobert Mustacchi u32_t unused_13[9]; 2549*eef4f27bSRobert Mustacchi u16_t l5ctx_snd_q_fw_qidx; 2550*eef4f27bSRobert Mustacchi u16_t l5ctx_snd_q_max_wqes; 2551*eef4f27bSRobert Mustacchi u16_t l5ctx_snd_q_wqes_per_page; 2552*eef4f27bSRobert Mustacchi u16_t l5ctx_snd_q_pgtbl_pgidx; 2553*eef4f27bSRobert Mustacchi u16_t l5ctx_snd_q_nx_pg_qidx; 2554*eef4f27bSRobert Mustacchi u16_t l5ctx_snd_q_num_pages; 2555*eef4f27bSRobert Mustacchi u32_t l5ctx_snd_q_pgtbl_phaddr_hi; 2556*eef4f27bSRobert Mustacchi u8_t l5ctx_snd_q_flags; 2557*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE (0xf<<0) 2558*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_256 (0<<0) 2559*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_512 (1<<0) 2560*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_1K (2<<0) 2561*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_2K (3<<0) 2562*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_4K (4<<0) 2563*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_8K (5<<0) 2564*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_16K (6<<0) 2565*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_32K (7<<0) 2566*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_64K (8<<0) 2567*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_128K (9<<0) 2568*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_256K (10<<0) 2569*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_512K (11<<0) 2570*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_1M (12<<0) 2571*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_PAGE_SIZE_2M (13<<0) 2572*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE (0xf<<4) 2573*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_1 (0<<4) 2574*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_2 (1<<4) 2575*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_4 (2<<4) 2576*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_8 (3<<4) 2577*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_16 (4<<4) 2578*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_32 (5<<4) 2579*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_64 (6<<4) 2580*eef4f27bSRobert Mustacchi #define L5CTX_SND_Q_FLAGS_QUEUE_SIZE_128 (7<<4) 2581*eef4f27bSRobert Mustacchi 2582*eef4f27bSRobert Mustacchi u8_t l5ctx_snd_q_pgtbl_phaddr_lo[3]; 2583*eef4f27bSRobert Mustacchi u32_t l5ctx_rcv_q_pgtbl_phaddr_hi; 2584*eef4f27bSRobert Mustacchi u8_t l5ctx_ord; 2585*eef4f27bSRobert Mustacchi u8_t l5ctx_rcv_q_pgtbl_phaddr_lo[3]; 2586*eef4f27bSRobert Mustacchi u16_t l5ctx_tsch_mult_value; 2587*eef4f27bSRobert Mustacchi u16_t l5ctx_rcv_q_nx_pg_qidx; 2588*eef4f27bSRobert Mustacchi u16_t l5ctx_rcv_q_fw_qidx; 2589*eef4f27bSRobert Mustacchi u16_t l5ctx_rcv_q_max_wqes; 2590*eef4f27bSRobert Mustacchi u16_t l5ctx_rcv_q_wqes_per_page; 2591*eef4f27bSRobert Mustacchi u16_t l5ctx_rcv_q_pgtbl_pgidx; 2592*eef4f27bSRobert Mustacchi u8_t l5ctx_max_gather_list_elements; 2593*eef4f27bSRobert Mustacchi u8_t l5ctx_max_scatter_list_elements; 2594*eef4f27bSRobert Mustacchi u16_t l5ctx_rcv_q_num_pages; 2595*eef4f27bSRobert Mustacchi u32_t l5ctx_curr_send_msn; 2596*eef4f27bSRobert Mustacchi u32_t l5ctx_curr_rdma_read_msn; 2597*eef4f27bSRobert Mustacchi u32_t l5ctx_snd_q_cached_pte_phaddr_hi; 2598*eef4f27bSRobert Mustacchi u32_t l5ctx_snd_q_cached_pte_phaddr_lo; 2599*eef4f27bSRobert Mustacchi u32_t l5ctx_rcv_q_cached_pte_phaddr_hi; 2600*eef4f27bSRobert Mustacchi u32_t l5ctx_rcv_q_cached_pte_phaddr_lo; 2601*eef4f27bSRobert Mustacchi u32_t unused_14[15]; 2602*eef4f27bSRobert Mustacchi tcp_context_cmd_cell_l_xi_t l5ctx_cmd[3]; 2603*eef4f27bSRobert Mustacchi } l5_context_l_xi_t; 2604*eef4f27bSRobert Mustacchi 2605*eef4f27bSRobert Mustacchi 2606*eef4f27bSRobert Mustacchi /* 2607*eef4f27bSRobert Mustacchi * l5_context select 2608*eef4f27bSRobert Mustacchi */ 2609*eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN) 2610*eef4f27bSRobert Mustacchi typedef l5_context_l_t l5_context_t; 2611*eef4f27bSRobert Mustacchi typedef l5_context_l_xi_t l5_context_xi_t; 2612*eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN) 2613*eef4f27bSRobert Mustacchi typedef l5_context_b_t l5_context_t; 2614*eef4f27bSRobert Mustacchi typedef l5_context_b_xi_t l5_context_xi_t; 2615*eef4f27bSRobert Mustacchi #endif 2616*eef4f27bSRobert Mustacchi 2617*eef4f27bSRobert Mustacchi 2618*eef4f27bSRobert Mustacchi #endif /* _l5_defs_h_ */ 2619