1*4882a593Smuzhiyun 2*4882a593Smuzhiyun /* cnic.c: QLogic CNIC core network driver. 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Copyright (c) 2006-2014 Broadcom Corporation 5*4882a593Smuzhiyun * Copyright (c) 2014 QLogic Corporation 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * This program is free software; you can redistribute it and/or modify 8*4882a593Smuzhiyun * it under the terms of the GNU General Public License as published by 9*4882a593Smuzhiyun * the Free Software Foundation. 10*4882a593Smuzhiyun * 11*4882a593Smuzhiyun */ 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #ifndef CNIC_DEFS_H 14*4882a593Smuzhiyun #define CNIC_DEFS_H 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun /* KWQ (kernel work queue) request op codes */ 17*4882a593Smuzhiyun #define L2_KWQE_OPCODE_VALUE_FLUSH (4) 18*4882a593Smuzhiyun #define L2_KWQE_OPCODE_VALUE_VM_FREE_RX_QUEUE (8) 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun #define L4_KWQE_OPCODE_VALUE_CONNECT1 (50) 21*4882a593Smuzhiyun #define L4_KWQE_OPCODE_VALUE_CONNECT2 (51) 22*4882a593Smuzhiyun #define L4_KWQE_OPCODE_VALUE_CONNECT3 (52) 23*4882a593Smuzhiyun #define L4_KWQE_OPCODE_VALUE_RESET (53) 24*4882a593Smuzhiyun #define L4_KWQE_OPCODE_VALUE_CLOSE (54) 25*4882a593Smuzhiyun #define L4_KWQE_OPCODE_VALUE_UPDATE_SECRET (60) 26*4882a593Smuzhiyun #define L4_KWQE_OPCODE_VALUE_INIT_ULP (61) 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun #define L4_KWQE_OPCODE_VALUE_OFFLOAD_PG (1) 29*4882a593Smuzhiyun #define L4_KWQE_OPCODE_VALUE_UPDATE_PG (9) 30*4882a593Smuzhiyun #define L4_KWQE_OPCODE_VALUE_UPLOAD_PG (14) 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun #define L5CM_RAMROD_CMD_ID_BASE (0x80) 33*4882a593Smuzhiyun #define L5CM_RAMROD_CMD_ID_TCP_CONNECT (L5CM_RAMROD_CMD_ID_BASE + 3) 34*4882a593Smuzhiyun #define L5CM_RAMROD_CMD_ID_CLOSE (L5CM_RAMROD_CMD_ID_BASE + 12) 35*4882a593Smuzhiyun #define L5CM_RAMROD_CMD_ID_ABORT (L5CM_RAMROD_CMD_ID_BASE + 13) 36*4882a593Smuzhiyun #define L5CM_RAMROD_CMD_ID_SEARCHER_DELETE (L5CM_RAMROD_CMD_ID_BASE + 14) 37*4882a593Smuzhiyun #define L5CM_RAMROD_CMD_ID_TERMINATE_OFFLOAD (L5CM_RAMROD_CMD_ID_BASE + 15) 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun #define FCOE_RAMROD_CMD_ID_INIT_FUNC (FCOE_KCQE_OPCODE_INIT_FUNC) 40*4882a593Smuzhiyun #define FCOE_RAMROD_CMD_ID_DESTROY_FUNC (FCOE_KCQE_OPCODE_DESTROY_FUNC) 41*4882a593Smuzhiyun #define FCOE_RAMROD_CMD_ID_STAT_FUNC (FCOE_KCQE_OPCODE_STAT_FUNC) 42*4882a593Smuzhiyun #define FCOE_RAMROD_CMD_ID_OFFLOAD_CONN (FCOE_KCQE_OPCODE_OFFLOAD_CONN) 43*4882a593Smuzhiyun #define FCOE_RAMROD_CMD_ID_ENABLE_CONN (FCOE_KCQE_OPCODE_ENABLE_CONN) 44*4882a593Smuzhiyun #define FCOE_RAMROD_CMD_ID_DISABLE_CONN (FCOE_KCQE_OPCODE_DISABLE_CONN) 45*4882a593Smuzhiyun #define FCOE_RAMROD_CMD_ID_DESTROY_CONN (FCOE_KCQE_OPCODE_DESTROY_CONN) 46*4882a593Smuzhiyun #define FCOE_RAMROD_CMD_ID_TERMINATE_CONN (0x81) 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun /* KCQ (kernel completion queue) response op codes */ 49*4882a593Smuzhiyun #define L4_KCQE_OPCODE_VALUE_CLOSE_COMP (53) 50*4882a593Smuzhiyun #define L4_KCQE_OPCODE_VALUE_RESET_COMP (54) 51*4882a593Smuzhiyun #define L4_KCQE_OPCODE_VALUE_FW_TCP_UPDATE (55) 52*4882a593Smuzhiyun #define L4_KCQE_OPCODE_VALUE_CONNECT_COMPLETE (56) 53*4882a593Smuzhiyun #define L4_KCQE_OPCODE_VALUE_RESET_RECEIVED (57) 54*4882a593Smuzhiyun #define L4_KCQE_OPCODE_VALUE_CLOSE_RECEIVED (58) 55*4882a593Smuzhiyun #define L4_KCQE_OPCODE_VALUE_INIT_ULP (61) 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun #define L4_KCQE_OPCODE_VALUE_OFFLOAD_PG (1) 58*4882a593Smuzhiyun #define L4_KCQE_OPCODE_VALUE_UPDATE_PG (9) 59*4882a593Smuzhiyun #define L4_KCQE_OPCODE_VALUE_UPLOAD_PG (14) 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun /* KCQ (kernel completion queue) completion status */ 62*4882a593Smuzhiyun #define L4_KCQE_COMPLETION_STATUS_SUCCESS (0) 63*4882a593Smuzhiyun #define L4_KCQE_COMPLETION_STATUS_NIC_ERROR (4) 64*4882a593Smuzhiyun #define L4_KCQE_COMPLETION_STATUS_PARITY_ERROR (0x81) 65*4882a593Smuzhiyun #define L4_KCQE_COMPLETION_STATUS_TIMEOUT (0x93) 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun #define L4_KCQE_COMPLETION_STATUS_CTX_ALLOC_FAIL (0x83) 68*4882a593Smuzhiyun #define L4_KCQE_COMPLETION_STATUS_OFFLOADED_PG (0x89) 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun #define L4_KCQE_OPCODE_VALUE_OOO_EVENT_NOTIFICATION (0xa0) 71*4882a593Smuzhiyun #define L4_KCQE_OPCODE_VALUE_OOO_FLUSH (0xa1) 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun #define L4_LAYER_CODE (4) 74*4882a593Smuzhiyun #define L2_LAYER_CODE (2) 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun /* 77*4882a593Smuzhiyun * L4 KCQ CQE 78*4882a593Smuzhiyun */ 79*4882a593Smuzhiyun struct l4_kcq { 80*4882a593Smuzhiyun u32 cid; 81*4882a593Smuzhiyun u32 pg_cid; 82*4882a593Smuzhiyun u32 conn_id; 83*4882a593Smuzhiyun u32 pg_host_opaque; 84*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 85*4882a593Smuzhiyun u16 status; 86*4882a593Smuzhiyun u16 reserved1; 87*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 88*4882a593Smuzhiyun u16 reserved1; 89*4882a593Smuzhiyun u16 status; 90*4882a593Smuzhiyun #endif 91*4882a593Smuzhiyun u32 reserved2[2]; 92*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 93*4882a593Smuzhiyun u8 flags; 94*4882a593Smuzhiyun #define L4_KCQ_RESERVED3 (0x7<<0) 95*4882a593Smuzhiyun #define L4_KCQ_RESERVED3_SHIFT 0 96*4882a593Smuzhiyun #define L4_KCQ_RAMROD_COMPLETION (0x1<<3) /* Everest only */ 97*4882a593Smuzhiyun #define L4_KCQ_RAMROD_COMPLETION_SHIFT 3 98*4882a593Smuzhiyun #define L4_KCQ_LAYER_CODE (0x7<<4) 99*4882a593Smuzhiyun #define L4_KCQ_LAYER_CODE_SHIFT 4 100*4882a593Smuzhiyun #define L4_KCQ_RESERVED4 (0x1<<7) 101*4882a593Smuzhiyun #define L4_KCQ_RESERVED4_SHIFT 7 102*4882a593Smuzhiyun u8 op_code; 103*4882a593Smuzhiyun u16 qe_self_seq; 104*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 105*4882a593Smuzhiyun u16 qe_self_seq; 106*4882a593Smuzhiyun u8 op_code; 107*4882a593Smuzhiyun u8 flags; 108*4882a593Smuzhiyun #define L4_KCQ_RESERVED3 (0xF<<0) 109*4882a593Smuzhiyun #define L4_KCQ_RESERVED3_SHIFT 0 110*4882a593Smuzhiyun #define L4_KCQ_RAMROD_COMPLETION (0x1<<3) /* Everest only */ 111*4882a593Smuzhiyun #define L4_KCQ_RAMROD_COMPLETION_SHIFT 3 112*4882a593Smuzhiyun #define L4_KCQ_LAYER_CODE (0x7<<4) 113*4882a593Smuzhiyun #define L4_KCQ_LAYER_CODE_SHIFT 4 114*4882a593Smuzhiyun #define L4_KCQ_RESERVED4 (0x1<<7) 115*4882a593Smuzhiyun #define L4_KCQ_RESERVED4_SHIFT 7 116*4882a593Smuzhiyun #endif 117*4882a593Smuzhiyun }; 118*4882a593Smuzhiyun 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun /* 121*4882a593Smuzhiyun * L4 KCQ CQE PG upload 122*4882a593Smuzhiyun */ 123*4882a593Smuzhiyun struct l4_kcq_upload_pg { 124*4882a593Smuzhiyun u32 pg_cid; 125*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 126*4882a593Smuzhiyun u16 pg_status; 127*4882a593Smuzhiyun u16 pg_ipid_count; 128*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 129*4882a593Smuzhiyun u16 pg_ipid_count; 130*4882a593Smuzhiyun u16 pg_status; 131*4882a593Smuzhiyun #endif 132*4882a593Smuzhiyun u32 reserved1[5]; 133*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 134*4882a593Smuzhiyun u8 flags; 135*4882a593Smuzhiyun #define L4_KCQ_UPLOAD_PG_RESERVED3 (0xF<<0) 136*4882a593Smuzhiyun #define L4_KCQ_UPLOAD_PG_RESERVED3_SHIFT 0 137*4882a593Smuzhiyun #define L4_KCQ_UPLOAD_PG_LAYER_CODE (0x7<<4) 138*4882a593Smuzhiyun #define L4_KCQ_UPLOAD_PG_LAYER_CODE_SHIFT 4 139*4882a593Smuzhiyun #define L4_KCQ_UPLOAD_PG_RESERVED4 (0x1<<7) 140*4882a593Smuzhiyun #define L4_KCQ_UPLOAD_PG_RESERVED4_SHIFT 7 141*4882a593Smuzhiyun u8 op_code; 142*4882a593Smuzhiyun u16 qe_self_seq; 143*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 144*4882a593Smuzhiyun u16 qe_self_seq; 145*4882a593Smuzhiyun u8 op_code; 146*4882a593Smuzhiyun u8 flags; 147*4882a593Smuzhiyun #define L4_KCQ_UPLOAD_PG_RESERVED3 (0xF<<0) 148*4882a593Smuzhiyun #define L4_KCQ_UPLOAD_PG_RESERVED3_SHIFT 0 149*4882a593Smuzhiyun #define L4_KCQ_UPLOAD_PG_LAYER_CODE (0x7<<4) 150*4882a593Smuzhiyun #define L4_KCQ_UPLOAD_PG_LAYER_CODE_SHIFT 4 151*4882a593Smuzhiyun #define L4_KCQ_UPLOAD_PG_RESERVED4 (0x1<<7) 152*4882a593Smuzhiyun #define L4_KCQ_UPLOAD_PG_RESERVED4_SHIFT 7 153*4882a593Smuzhiyun #endif 154*4882a593Smuzhiyun }; 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun /* 158*4882a593Smuzhiyun * Gracefully close the connection request 159*4882a593Smuzhiyun */ 160*4882a593Smuzhiyun struct l4_kwq_close_req { 161*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 162*4882a593Smuzhiyun u8 flags; 163*4882a593Smuzhiyun #define L4_KWQ_CLOSE_REQ_RESERVED1 (0xF<<0) 164*4882a593Smuzhiyun #define L4_KWQ_CLOSE_REQ_RESERVED1_SHIFT 0 165*4882a593Smuzhiyun #define L4_KWQ_CLOSE_REQ_LAYER_CODE (0x7<<4) 166*4882a593Smuzhiyun #define L4_KWQ_CLOSE_REQ_LAYER_CODE_SHIFT 4 167*4882a593Smuzhiyun #define L4_KWQ_CLOSE_REQ_LINKED_WITH_NEXT (0x1<<7) 168*4882a593Smuzhiyun #define L4_KWQ_CLOSE_REQ_LINKED_WITH_NEXT_SHIFT 7 169*4882a593Smuzhiyun u8 op_code; 170*4882a593Smuzhiyun u16 reserved0; 171*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 172*4882a593Smuzhiyun u16 reserved0; 173*4882a593Smuzhiyun u8 op_code; 174*4882a593Smuzhiyun u8 flags; 175*4882a593Smuzhiyun #define L4_KWQ_CLOSE_REQ_RESERVED1 (0xF<<0) 176*4882a593Smuzhiyun #define L4_KWQ_CLOSE_REQ_RESERVED1_SHIFT 0 177*4882a593Smuzhiyun #define L4_KWQ_CLOSE_REQ_LAYER_CODE (0x7<<4) 178*4882a593Smuzhiyun #define L4_KWQ_CLOSE_REQ_LAYER_CODE_SHIFT 4 179*4882a593Smuzhiyun #define L4_KWQ_CLOSE_REQ_LINKED_WITH_NEXT (0x1<<7) 180*4882a593Smuzhiyun #define L4_KWQ_CLOSE_REQ_LINKED_WITH_NEXT_SHIFT 7 181*4882a593Smuzhiyun #endif 182*4882a593Smuzhiyun u32 cid; 183*4882a593Smuzhiyun u32 reserved2[6]; 184*4882a593Smuzhiyun }; 185*4882a593Smuzhiyun 186*4882a593Smuzhiyun 187*4882a593Smuzhiyun /* 188*4882a593Smuzhiyun * The first request to be passed in order to establish connection in option2 189*4882a593Smuzhiyun */ 190*4882a593Smuzhiyun struct l4_kwq_connect_req1 { 191*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 192*4882a593Smuzhiyun u8 flags; 193*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_RESERVED1 (0xF<<0) 194*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_RESERVED1_SHIFT 0 195*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_LAYER_CODE (0x7<<4) 196*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_LAYER_CODE_SHIFT 4 197*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_LINKED_WITH_NEXT (0x1<<7) 198*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_LINKED_WITH_NEXT_SHIFT 7 199*4882a593Smuzhiyun u8 op_code; 200*4882a593Smuzhiyun u8 reserved0; 201*4882a593Smuzhiyun u8 conn_flags; 202*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_IS_PG_HOST_OPAQUE (0x1<<0) 203*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_IS_PG_HOST_OPAQUE_SHIFT 0 204*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_IP_V6 (0x1<<1) 205*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_IP_V6_SHIFT 1 206*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_PASSIVE_FLAG (0x1<<2) 207*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_PASSIVE_FLAG_SHIFT 2 208*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_RSRV (0x1F<<3) 209*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_RSRV_SHIFT 3 210*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 211*4882a593Smuzhiyun u8 conn_flags; 212*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_IS_PG_HOST_OPAQUE (0x1<<0) 213*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_IS_PG_HOST_OPAQUE_SHIFT 0 214*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_IP_V6 (0x1<<1) 215*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_IP_V6_SHIFT 1 216*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_PASSIVE_FLAG (0x1<<2) 217*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_PASSIVE_FLAG_SHIFT 2 218*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_RSRV (0x1F<<3) 219*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_RSRV_SHIFT 3 220*4882a593Smuzhiyun u8 reserved0; 221*4882a593Smuzhiyun u8 op_code; 222*4882a593Smuzhiyun u8 flags; 223*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_RESERVED1 (0xF<<0) 224*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_RESERVED1_SHIFT 0 225*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_LAYER_CODE (0x7<<4) 226*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_LAYER_CODE_SHIFT 4 227*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_LINKED_WITH_NEXT (0x1<<7) 228*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_LINKED_WITH_NEXT_SHIFT 7 229*4882a593Smuzhiyun #endif 230*4882a593Smuzhiyun u32 cid; 231*4882a593Smuzhiyun u32 pg_cid; 232*4882a593Smuzhiyun u32 src_ip; 233*4882a593Smuzhiyun u32 dst_ip; 234*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 235*4882a593Smuzhiyun u16 dst_port; 236*4882a593Smuzhiyun u16 src_port; 237*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 238*4882a593Smuzhiyun u16 src_port; 239*4882a593Smuzhiyun u16 dst_port; 240*4882a593Smuzhiyun #endif 241*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 242*4882a593Smuzhiyun u8 rsrv1[3]; 243*4882a593Smuzhiyun u8 tcp_flags; 244*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_NO_DELAY_ACK (0x1<<0) 245*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_NO_DELAY_ACK_SHIFT 0 246*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_KEEP_ALIVE (0x1<<1) 247*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_KEEP_ALIVE_SHIFT 1 248*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_NAGLE_ENABLE (0x1<<2) 249*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_NAGLE_ENABLE_SHIFT 2 250*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_TIME_STAMP (0x1<<3) 251*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_TIME_STAMP_SHIFT 3 252*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_SACK (0x1<<4) 253*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_SACK_SHIFT 4 254*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_SEG_SCALING (0x1<<5) 255*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_SEG_SCALING_SHIFT 5 256*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_RESERVED2 (0x3<<6) 257*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_RESERVED2_SHIFT 6 258*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 259*4882a593Smuzhiyun u8 tcp_flags; 260*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_NO_DELAY_ACK (0x1<<0) 261*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_NO_DELAY_ACK_SHIFT 0 262*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_KEEP_ALIVE (0x1<<1) 263*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_KEEP_ALIVE_SHIFT 1 264*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_NAGLE_ENABLE (0x1<<2) 265*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_NAGLE_ENABLE_SHIFT 2 266*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_TIME_STAMP (0x1<<3) 267*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_TIME_STAMP_SHIFT 3 268*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_SACK (0x1<<4) 269*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_SACK_SHIFT 4 270*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_SEG_SCALING (0x1<<5) 271*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_SEG_SCALING_SHIFT 5 272*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_RESERVED2 (0x3<<6) 273*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ1_RESERVED2_SHIFT 6 274*4882a593Smuzhiyun u8 rsrv1[3]; 275*4882a593Smuzhiyun #endif 276*4882a593Smuzhiyun u32 rsrv2; 277*4882a593Smuzhiyun }; 278*4882a593Smuzhiyun 279*4882a593Smuzhiyun 280*4882a593Smuzhiyun /* 281*4882a593Smuzhiyun * The second ( optional )request to be passed in order to establish 282*4882a593Smuzhiyun * connection in option2 - for IPv6 only 283*4882a593Smuzhiyun */ 284*4882a593Smuzhiyun struct l4_kwq_connect_req2 { 285*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 286*4882a593Smuzhiyun u8 flags; 287*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ2_RESERVED1 (0xF<<0) 288*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ2_RESERVED1_SHIFT 0 289*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ2_LAYER_CODE (0x7<<4) 290*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ2_LAYER_CODE_SHIFT 4 291*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ2_LINKED_WITH_NEXT (0x1<<7) 292*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ2_LINKED_WITH_NEXT_SHIFT 7 293*4882a593Smuzhiyun u8 op_code; 294*4882a593Smuzhiyun u8 reserved0; 295*4882a593Smuzhiyun u8 rsrv; 296*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 297*4882a593Smuzhiyun u8 rsrv; 298*4882a593Smuzhiyun u8 reserved0; 299*4882a593Smuzhiyun u8 op_code; 300*4882a593Smuzhiyun u8 flags; 301*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ2_RESERVED1 (0xF<<0) 302*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ2_RESERVED1_SHIFT 0 303*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ2_LAYER_CODE (0x7<<4) 304*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ2_LAYER_CODE_SHIFT 4 305*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ2_LINKED_WITH_NEXT (0x1<<7) 306*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ2_LINKED_WITH_NEXT_SHIFT 7 307*4882a593Smuzhiyun #endif 308*4882a593Smuzhiyun u32 reserved2; 309*4882a593Smuzhiyun u32 src_ip_v6_2; 310*4882a593Smuzhiyun u32 src_ip_v6_3; 311*4882a593Smuzhiyun u32 src_ip_v6_4; 312*4882a593Smuzhiyun u32 dst_ip_v6_2; 313*4882a593Smuzhiyun u32 dst_ip_v6_3; 314*4882a593Smuzhiyun u32 dst_ip_v6_4; 315*4882a593Smuzhiyun }; 316*4882a593Smuzhiyun 317*4882a593Smuzhiyun 318*4882a593Smuzhiyun /* 319*4882a593Smuzhiyun * The third ( and last )request to be passed in order to establish 320*4882a593Smuzhiyun * connection in option2 321*4882a593Smuzhiyun */ 322*4882a593Smuzhiyun struct l4_kwq_connect_req3 { 323*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 324*4882a593Smuzhiyun u8 flags; 325*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ3_RESERVED1 (0xF<<0) 326*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ3_RESERVED1_SHIFT 0 327*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ3_LAYER_CODE (0x7<<4) 328*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ3_LAYER_CODE_SHIFT 4 329*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ3_LINKED_WITH_NEXT (0x1<<7) 330*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ3_LINKED_WITH_NEXT_SHIFT 7 331*4882a593Smuzhiyun u8 op_code; 332*4882a593Smuzhiyun u16 reserved0; 333*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 334*4882a593Smuzhiyun u16 reserved0; 335*4882a593Smuzhiyun u8 op_code; 336*4882a593Smuzhiyun u8 flags; 337*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ3_RESERVED1 (0xF<<0) 338*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ3_RESERVED1_SHIFT 0 339*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ3_LAYER_CODE (0x7<<4) 340*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ3_LAYER_CODE_SHIFT 4 341*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ3_LINKED_WITH_NEXT (0x1<<7) 342*4882a593Smuzhiyun #define L4_KWQ_CONNECT_REQ3_LINKED_WITH_NEXT_SHIFT 7 343*4882a593Smuzhiyun #endif 344*4882a593Smuzhiyun u32 ka_timeout; 345*4882a593Smuzhiyun u32 ka_interval ; 346*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 347*4882a593Smuzhiyun u8 snd_seq_scale; 348*4882a593Smuzhiyun u8 ttl; 349*4882a593Smuzhiyun u8 tos; 350*4882a593Smuzhiyun u8 ka_max_probe_count; 351*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 352*4882a593Smuzhiyun u8 ka_max_probe_count; 353*4882a593Smuzhiyun u8 tos; 354*4882a593Smuzhiyun u8 ttl; 355*4882a593Smuzhiyun u8 snd_seq_scale; 356*4882a593Smuzhiyun #endif 357*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 358*4882a593Smuzhiyun u16 pmtu; 359*4882a593Smuzhiyun u16 mss; 360*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 361*4882a593Smuzhiyun u16 mss; 362*4882a593Smuzhiyun u16 pmtu; 363*4882a593Smuzhiyun #endif 364*4882a593Smuzhiyun u32 rcv_buf; 365*4882a593Smuzhiyun u32 snd_buf; 366*4882a593Smuzhiyun u32 seed; 367*4882a593Smuzhiyun }; 368*4882a593Smuzhiyun 369*4882a593Smuzhiyun 370*4882a593Smuzhiyun /* 371*4882a593Smuzhiyun * a KWQE request to offload a PG connection 372*4882a593Smuzhiyun */ 373*4882a593Smuzhiyun struct l4_kwq_offload_pg { 374*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 375*4882a593Smuzhiyun u8 flags; 376*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_RESERVED1 (0xF<<0) 377*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_RESERVED1_SHIFT 0 378*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_LAYER_CODE (0x7<<4) 379*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_LAYER_CODE_SHIFT 4 380*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_LINKED_WITH_NEXT (0x1<<7) 381*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_LINKED_WITH_NEXT_SHIFT 7 382*4882a593Smuzhiyun u8 op_code; 383*4882a593Smuzhiyun u16 reserved0; 384*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 385*4882a593Smuzhiyun u16 reserved0; 386*4882a593Smuzhiyun u8 op_code; 387*4882a593Smuzhiyun u8 flags; 388*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_RESERVED1 (0xF<<0) 389*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_RESERVED1_SHIFT 0 390*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_LAYER_CODE (0x7<<4) 391*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_LAYER_CODE_SHIFT 4 392*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_LINKED_WITH_NEXT (0x1<<7) 393*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_LINKED_WITH_NEXT_SHIFT 7 394*4882a593Smuzhiyun #endif 395*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 396*4882a593Smuzhiyun u8 l2hdr_nbytes; 397*4882a593Smuzhiyun u8 pg_flags; 398*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_SNAP_ENCAP (0x1<<0) 399*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_SNAP_ENCAP_SHIFT 0 400*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_VLAN_TAGGING (0x1<<1) 401*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_VLAN_TAGGING_SHIFT 1 402*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_RESERVED2 (0x3F<<2) 403*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_RESERVED2_SHIFT 2 404*4882a593Smuzhiyun u8 da0; 405*4882a593Smuzhiyun u8 da1; 406*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 407*4882a593Smuzhiyun u8 da1; 408*4882a593Smuzhiyun u8 da0; 409*4882a593Smuzhiyun u8 pg_flags; 410*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_SNAP_ENCAP (0x1<<0) 411*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_SNAP_ENCAP_SHIFT 0 412*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_VLAN_TAGGING (0x1<<1) 413*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_VLAN_TAGGING_SHIFT 1 414*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_RESERVED2 (0x3F<<2) 415*4882a593Smuzhiyun #define L4_KWQ_OFFLOAD_PG_RESERVED2_SHIFT 2 416*4882a593Smuzhiyun u8 l2hdr_nbytes; 417*4882a593Smuzhiyun #endif 418*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 419*4882a593Smuzhiyun u8 da2; 420*4882a593Smuzhiyun u8 da3; 421*4882a593Smuzhiyun u8 da4; 422*4882a593Smuzhiyun u8 da5; 423*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 424*4882a593Smuzhiyun u8 da5; 425*4882a593Smuzhiyun u8 da4; 426*4882a593Smuzhiyun u8 da3; 427*4882a593Smuzhiyun u8 da2; 428*4882a593Smuzhiyun #endif 429*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 430*4882a593Smuzhiyun u8 sa0; 431*4882a593Smuzhiyun u8 sa1; 432*4882a593Smuzhiyun u8 sa2; 433*4882a593Smuzhiyun u8 sa3; 434*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 435*4882a593Smuzhiyun u8 sa3; 436*4882a593Smuzhiyun u8 sa2; 437*4882a593Smuzhiyun u8 sa1; 438*4882a593Smuzhiyun u8 sa0; 439*4882a593Smuzhiyun #endif 440*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 441*4882a593Smuzhiyun u8 sa4; 442*4882a593Smuzhiyun u8 sa5; 443*4882a593Smuzhiyun u16 etype; 444*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 445*4882a593Smuzhiyun u16 etype; 446*4882a593Smuzhiyun u8 sa5; 447*4882a593Smuzhiyun u8 sa4; 448*4882a593Smuzhiyun #endif 449*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 450*4882a593Smuzhiyun u16 vlan_tag; 451*4882a593Smuzhiyun u16 ipid_start; 452*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 453*4882a593Smuzhiyun u16 ipid_start; 454*4882a593Smuzhiyun u16 vlan_tag; 455*4882a593Smuzhiyun #endif 456*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 457*4882a593Smuzhiyun u16 ipid_count; 458*4882a593Smuzhiyun u16 reserved3; 459*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 460*4882a593Smuzhiyun u16 reserved3; 461*4882a593Smuzhiyun u16 ipid_count; 462*4882a593Smuzhiyun #endif 463*4882a593Smuzhiyun u32 host_opaque; 464*4882a593Smuzhiyun }; 465*4882a593Smuzhiyun 466*4882a593Smuzhiyun 467*4882a593Smuzhiyun /* 468*4882a593Smuzhiyun * Abortively close the connection request 469*4882a593Smuzhiyun */ 470*4882a593Smuzhiyun struct l4_kwq_reset_req { 471*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 472*4882a593Smuzhiyun u8 flags; 473*4882a593Smuzhiyun #define L4_KWQ_RESET_REQ_RESERVED1 (0xF<<0) 474*4882a593Smuzhiyun #define L4_KWQ_RESET_REQ_RESERVED1_SHIFT 0 475*4882a593Smuzhiyun #define L4_KWQ_RESET_REQ_LAYER_CODE (0x7<<4) 476*4882a593Smuzhiyun #define L4_KWQ_RESET_REQ_LAYER_CODE_SHIFT 4 477*4882a593Smuzhiyun #define L4_KWQ_RESET_REQ_LINKED_WITH_NEXT (0x1<<7) 478*4882a593Smuzhiyun #define L4_KWQ_RESET_REQ_LINKED_WITH_NEXT_SHIFT 7 479*4882a593Smuzhiyun u8 op_code; 480*4882a593Smuzhiyun u16 reserved0; 481*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 482*4882a593Smuzhiyun u16 reserved0; 483*4882a593Smuzhiyun u8 op_code; 484*4882a593Smuzhiyun u8 flags; 485*4882a593Smuzhiyun #define L4_KWQ_RESET_REQ_RESERVED1 (0xF<<0) 486*4882a593Smuzhiyun #define L4_KWQ_RESET_REQ_RESERVED1_SHIFT 0 487*4882a593Smuzhiyun #define L4_KWQ_RESET_REQ_LAYER_CODE (0x7<<4) 488*4882a593Smuzhiyun #define L4_KWQ_RESET_REQ_LAYER_CODE_SHIFT 4 489*4882a593Smuzhiyun #define L4_KWQ_RESET_REQ_LINKED_WITH_NEXT (0x1<<7) 490*4882a593Smuzhiyun #define L4_KWQ_RESET_REQ_LINKED_WITH_NEXT_SHIFT 7 491*4882a593Smuzhiyun #endif 492*4882a593Smuzhiyun u32 cid; 493*4882a593Smuzhiyun u32 reserved2[6]; 494*4882a593Smuzhiyun }; 495*4882a593Smuzhiyun 496*4882a593Smuzhiyun 497*4882a593Smuzhiyun /* 498*4882a593Smuzhiyun * a KWQE request to update a PG connection 499*4882a593Smuzhiyun */ 500*4882a593Smuzhiyun struct l4_kwq_update_pg { 501*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 502*4882a593Smuzhiyun u8 flags; 503*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_RESERVED1 (0xF<<0) 504*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_RESERVED1_SHIFT 0 505*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_LAYER_CODE (0x7<<4) 506*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_LAYER_CODE_SHIFT 4 507*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_LINKED_WITH_NEXT (0x1<<7) 508*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_LINKED_WITH_NEXT_SHIFT 7 509*4882a593Smuzhiyun u8 opcode; 510*4882a593Smuzhiyun u16 oper16; 511*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 512*4882a593Smuzhiyun u16 oper16; 513*4882a593Smuzhiyun u8 opcode; 514*4882a593Smuzhiyun u8 flags; 515*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_RESERVED1 (0xF<<0) 516*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_RESERVED1_SHIFT 0 517*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_LAYER_CODE (0x7<<4) 518*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_LAYER_CODE_SHIFT 4 519*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_LINKED_WITH_NEXT (0x1<<7) 520*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_LINKED_WITH_NEXT_SHIFT 7 521*4882a593Smuzhiyun #endif 522*4882a593Smuzhiyun u32 pg_cid; 523*4882a593Smuzhiyun u32 pg_host_opaque; 524*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 525*4882a593Smuzhiyun u8 pg_valids; 526*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_VALIDS_IPID_COUNT (0x1<<0) 527*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_VALIDS_IPID_COUNT_SHIFT 0 528*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_VALIDS_DA (0x1<<1) 529*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_VALIDS_DA_SHIFT 1 530*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_RESERVERD2 (0x3F<<2) 531*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_RESERVERD2_SHIFT 2 532*4882a593Smuzhiyun u8 pg_unused_a; 533*4882a593Smuzhiyun u16 pg_ipid_count; 534*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 535*4882a593Smuzhiyun u16 pg_ipid_count; 536*4882a593Smuzhiyun u8 pg_unused_a; 537*4882a593Smuzhiyun u8 pg_valids; 538*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_VALIDS_IPID_COUNT (0x1<<0) 539*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_VALIDS_IPID_COUNT_SHIFT 0 540*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_VALIDS_DA (0x1<<1) 541*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_VALIDS_DA_SHIFT 1 542*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_RESERVERD2 (0x3F<<2) 543*4882a593Smuzhiyun #define L4_KWQ_UPDATE_PG_RESERVERD2_SHIFT 2 544*4882a593Smuzhiyun #endif 545*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 546*4882a593Smuzhiyun u16 reserved3; 547*4882a593Smuzhiyun u8 da0; 548*4882a593Smuzhiyun u8 da1; 549*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 550*4882a593Smuzhiyun u8 da1; 551*4882a593Smuzhiyun u8 da0; 552*4882a593Smuzhiyun u16 reserved3; 553*4882a593Smuzhiyun #endif 554*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 555*4882a593Smuzhiyun u8 da2; 556*4882a593Smuzhiyun u8 da3; 557*4882a593Smuzhiyun u8 da4; 558*4882a593Smuzhiyun u8 da5; 559*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 560*4882a593Smuzhiyun u8 da5; 561*4882a593Smuzhiyun u8 da4; 562*4882a593Smuzhiyun u8 da3; 563*4882a593Smuzhiyun u8 da2; 564*4882a593Smuzhiyun #endif 565*4882a593Smuzhiyun u32 reserved4; 566*4882a593Smuzhiyun u32 reserved5; 567*4882a593Smuzhiyun }; 568*4882a593Smuzhiyun 569*4882a593Smuzhiyun 570*4882a593Smuzhiyun /* 571*4882a593Smuzhiyun * a KWQE request to upload a PG or L4 context 572*4882a593Smuzhiyun */ 573*4882a593Smuzhiyun struct l4_kwq_upload { 574*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 575*4882a593Smuzhiyun u8 flags; 576*4882a593Smuzhiyun #define L4_KWQ_UPLOAD_RESERVED1 (0xF<<0) 577*4882a593Smuzhiyun #define L4_KWQ_UPLOAD_RESERVED1_SHIFT 0 578*4882a593Smuzhiyun #define L4_KWQ_UPLOAD_LAYER_CODE (0x7<<4) 579*4882a593Smuzhiyun #define L4_KWQ_UPLOAD_LAYER_CODE_SHIFT 4 580*4882a593Smuzhiyun #define L4_KWQ_UPLOAD_LINKED_WITH_NEXT (0x1<<7) 581*4882a593Smuzhiyun #define L4_KWQ_UPLOAD_LINKED_WITH_NEXT_SHIFT 7 582*4882a593Smuzhiyun u8 opcode; 583*4882a593Smuzhiyun u16 oper16; 584*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 585*4882a593Smuzhiyun u16 oper16; 586*4882a593Smuzhiyun u8 opcode; 587*4882a593Smuzhiyun u8 flags; 588*4882a593Smuzhiyun #define L4_KWQ_UPLOAD_RESERVED1 (0xF<<0) 589*4882a593Smuzhiyun #define L4_KWQ_UPLOAD_RESERVED1_SHIFT 0 590*4882a593Smuzhiyun #define L4_KWQ_UPLOAD_LAYER_CODE (0x7<<4) 591*4882a593Smuzhiyun #define L4_KWQ_UPLOAD_LAYER_CODE_SHIFT 4 592*4882a593Smuzhiyun #define L4_KWQ_UPLOAD_LINKED_WITH_NEXT (0x1<<7) 593*4882a593Smuzhiyun #define L4_KWQ_UPLOAD_LINKED_WITH_NEXT_SHIFT 7 594*4882a593Smuzhiyun #endif 595*4882a593Smuzhiyun u32 cid; 596*4882a593Smuzhiyun u32 reserved2[6]; 597*4882a593Smuzhiyun }; 598*4882a593Smuzhiyun 599*4882a593Smuzhiyun /* 600*4882a593Smuzhiyun * bnx2x structures 601*4882a593Smuzhiyun */ 602*4882a593Smuzhiyun 603*4882a593Smuzhiyun /* 604*4882a593Smuzhiyun * The iscsi aggregative context of Cstorm 605*4882a593Smuzhiyun */ 606*4882a593Smuzhiyun struct cstorm_iscsi_ag_context { 607*4882a593Smuzhiyun u32 agg_vars1; 608*4882a593Smuzhiyun #define CSTORM_ISCSI_AG_CONTEXT_STATE (0xFF<<0) 609*4882a593Smuzhiyun #define CSTORM_ISCSI_AG_CONTEXT_STATE_SHIFT 0 610*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<8) 611*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 8 612*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<9) 613*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 9 614*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<10) 615*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 10 616*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<11) 617*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 11 618*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_SE_CF_EN (0x1<<12) 619*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_SE_CF_EN_SHIFT 12 620*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_INV_CF_EN (0x1<<13) 621*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_INV_CF_EN_SHIFT 13 622*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_AUX4_CF (0x3<<14) 623*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_AUX4_CF_SHIFT 14 624*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED66 (0x3<<16) 625*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED66_SHIFT 16 626*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_FIN_RECEIVED_CF_EN (0x1<<18) 627*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_FIN_RECEIVED_CF_EN_SHIFT 18 628*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN (0x1<<19) 629*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN_SHIFT 19 630*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_AUX2_CF_EN (0x1<<20) 631*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_AUX2_CF_EN_SHIFT 20 632*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<21) 633*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 21 634*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_AUX4_CF_EN (0x1<<22) 635*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_AUX4_CF_EN_SHIFT 22 636*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_REL_SEQ_RULE (0x7<<23) 637*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_REL_SEQ_RULE_SHIFT 23 638*4882a593Smuzhiyun #define CSTORM_ISCSI_AG_CONTEXT_HQ_PROD_RULE (0x3<<26) 639*4882a593Smuzhiyun #define CSTORM_ISCSI_AG_CONTEXT_HQ_PROD_RULE_SHIFT 26 640*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED52 (0x3<<28) 641*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED52_SHIFT 28 642*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED53 (0x3<<30) 643*4882a593Smuzhiyun #define __CSTORM_ISCSI_AG_CONTEXT_RESERVED53_SHIFT 30 644*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 645*4882a593Smuzhiyun u8 __aux1_th; 646*4882a593Smuzhiyun u8 __aux1_val; 647*4882a593Smuzhiyun u16 __agg_vars2; 648*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 649*4882a593Smuzhiyun u16 __agg_vars2; 650*4882a593Smuzhiyun u8 __aux1_val; 651*4882a593Smuzhiyun u8 __aux1_th; 652*4882a593Smuzhiyun #endif 653*4882a593Smuzhiyun u32 rel_seq; 654*4882a593Smuzhiyun u32 rel_seq_th; 655*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 656*4882a593Smuzhiyun u16 hq_cons; 657*4882a593Smuzhiyun u16 hq_prod; 658*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 659*4882a593Smuzhiyun u16 hq_prod; 660*4882a593Smuzhiyun u16 hq_cons; 661*4882a593Smuzhiyun #endif 662*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 663*4882a593Smuzhiyun u8 __reserved62; 664*4882a593Smuzhiyun u8 __reserved61; 665*4882a593Smuzhiyun u8 __reserved60; 666*4882a593Smuzhiyun u8 __reserved59; 667*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 668*4882a593Smuzhiyun u8 __reserved59; 669*4882a593Smuzhiyun u8 __reserved60; 670*4882a593Smuzhiyun u8 __reserved61; 671*4882a593Smuzhiyun u8 __reserved62; 672*4882a593Smuzhiyun #endif 673*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 674*4882a593Smuzhiyun u16 __reserved64; 675*4882a593Smuzhiyun u16 cq_u_prod; 676*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 677*4882a593Smuzhiyun u16 cq_u_prod; 678*4882a593Smuzhiyun u16 __reserved64; 679*4882a593Smuzhiyun #endif 680*4882a593Smuzhiyun u32 __cq_u_prod1; 681*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 682*4882a593Smuzhiyun u16 __agg_vars3; 683*4882a593Smuzhiyun u16 cq_u_pend; 684*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 685*4882a593Smuzhiyun u16 cq_u_pend; 686*4882a593Smuzhiyun u16 __agg_vars3; 687*4882a593Smuzhiyun #endif 688*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 689*4882a593Smuzhiyun u16 __aux2_th; 690*4882a593Smuzhiyun u16 aux2_val; 691*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 692*4882a593Smuzhiyun u16 aux2_val; 693*4882a593Smuzhiyun u16 __aux2_th; 694*4882a593Smuzhiyun #endif 695*4882a593Smuzhiyun }; 696*4882a593Smuzhiyun 697*4882a593Smuzhiyun /* 698*4882a593Smuzhiyun * The fcoe extra aggregative context section of Tstorm 699*4882a593Smuzhiyun */ 700*4882a593Smuzhiyun struct tstorm_fcoe_extra_ag_context_section { 701*4882a593Smuzhiyun u32 __agg_val1; 702*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 703*4882a593Smuzhiyun u8 __tcp_agg_vars2; 704*4882a593Smuzhiyun u8 __agg_val3; 705*4882a593Smuzhiyun u16 __agg_val2; 706*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 707*4882a593Smuzhiyun u16 __agg_val2; 708*4882a593Smuzhiyun u8 __agg_val3; 709*4882a593Smuzhiyun u8 __tcp_agg_vars2; 710*4882a593Smuzhiyun #endif 711*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 712*4882a593Smuzhiyun u16 __agg_val5; 713*4882a593Smuzhiyun u8 __agg_val6; 714*4882a593Smuzhiyun u8 __tcp_agg_vars3; 715*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 716*4882a593Smuzhiyun u8 __tcp_agg_vars3; 717*4882a593Smuzhiyun u8 __agg_val6; 718*4882a593Smuzhiyun u16 __agg_val5; 719*4882a593Smuzhiyun #endif 720*4882a593Smuzhiyun u32 __lcq_prod; 721*4882a593Smuzhiyun u32 rtt_seq; 722*4882a593Smuzhiyun u32 rtt_time; 723*4882a593Smuzhiyun u32 __reserved66; 724*4882a593Smuzhiyun u32 wnd_right_edge; 725*4882a593Smuzhiyun u32 tcp_agg_vars1; 726*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<0) 727*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 0 728*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG (0x1<<1) 729*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG_SHIFT 1 730*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF (0x3<<2) 731*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF_SHIFT 2 732*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF (0x3<<4) 733*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF_SHIFT 4 734*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF_EN (0x1<<6) 735*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF_EN_SHIFT 6 736*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF_EN (0x1<<7) 737*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF_EN_SHIFT 7 738*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN (0x1<<8) 739*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN_SHIFT 8 740*4882a593Smuzhiyun #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LCQ_SND_EN (0x1<<9) 741*4882a593Smuzhiyun #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LCQ_SND_EN_SHIFT 9 742*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<10) 743*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 10 744*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_FLAG (0x1<<11) 745*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_FLAG_SHIFT 11 746*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF_EN (0x1<<12) 747*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF_EN_SHIFT 12 748*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF_EN (0x1<<13) 749*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF_EN_SHIFT 13 750*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF (0x3<<14) 751*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF_SHIFT 14 752*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF (0x3<<16) 753*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF_SHIFT 16 754*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_BLOCKED (0x1<<18) 755*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_BLOCKED_SHIFT 18 756*4882a593Smuzhiyun #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<19) 757*4882a593Smuzhiyun #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 19 758*4882a593Smuzhiyun #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX11_CF_EN (0x1<<20) 759*4882a593Smuzhiyun #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX11_CF_EN_SHIFT 20 760*4882a593Smuzhiyun #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX12_CF_EN (0x1<<21) 761*4882a593Smuzhiyun #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX12_CF_EN_SHIFT 21 762*4882a593Smuzhiyun #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED1 (0x3<<22) 763*4882a593Smuzhiyun #define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED1_SHIFT 22 764*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ (0xF<<24) 765*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ_SHIFT 24 766*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ (0xF<<28) 767*4882a593Smuzhiyun #define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ_SHIFT 28 768*4882a593Smuzhiyun u32 snd_max; 769*4882a593Smuzhiyun u32 __lcq_cons; 770*4882a593Smuzhiyun u32 __reserved2; 771*4882a593Smuzhiyun }; 772*4882a593Smuzhiyun 773*4882a593Smuzhiyun /* 774*4882a593Smuzhiyun * The fcoe aggregative context of Tstorm 775*4882a593Smuzhiyun */ 776*4882a593Smuzhiyun struct tstorm_fcoe_ag_context { 777*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 778*4882a593Smuzhiyun u16 ulp_credit; 779*4882a593Smuzhiyun u8 agg_vars1; 780*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) 781*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 782*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) 783*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 784*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2) 785*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2 786*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3) 787*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3 788*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF (0x3<<4) 789*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_SHIFT 4 790*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG (0x1<<6) 791*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG_SHIFT 6 792*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG (0x1<<7) 793*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG_SHIFT 7 794*4882a593Smuzhiyun u8 state; 795*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 796*4882a593Smuzhiyun u8 state; 797*4882a593Smuzhiyun u8 agg_vars1; 798*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) 799*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 800*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) 801*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 802*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2) 803*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2 804*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3) 805*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3 806*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF (0x3<<4) 807*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_SHIFT 4 808*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG (0x1<<6) 809*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG_SHIFT 6 810*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG (0x1<<7) 811*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG_SHIFT 7 812*4882a593Smuzhiyun u16 ulp_credit; 813*4882a593Smuzhiyun #endif 814*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 815*4882a593Smuzhiyun u16 __agg_val4; 816*4882a593Smuzhiyun u16 agg_vars2; 817*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG (0x1<<0) 818*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG_SHIFT 0 819*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG (0x1<<1) 820*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG_SHIFT 1 821*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF (0x3<<2) 822*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF_SHIFT 2 823*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF (0x3<<4) 824*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF_SHIFT 4 825*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF (0x3<<6) 826*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF_SHIFT 6 827*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF (0x3<<8) 828*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF_SHIFT 8 829*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG (0x1<<10) 830*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG_SHIFT 10 831*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN (0x1<<11) 832*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN_SHIFT 11 833*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN (0x1<<12) 834*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN_SHIFT 12 835*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN (0x1<<13) 836*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN_SHIFT 13 837*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN (0x1<<14) 838*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN_SHIFT 14 839*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN (0x1<<15) 840*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN_SHIFT 15 841*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 842*4882a593Smuzhiyun u16 agg_vars2; 843*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG (0x1<<0) 844*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG_SHIFT 0 845*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG (0x1<<1) 846*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG_SHIFT 1 847*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF (0x3<<2) 848*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF_SHIFT 2 849*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF (0x3<<4) 850*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF_SHIFT 4 851*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF (0x3<<6) 852*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF_SHIFT 6 853*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF (0x3<<8) 854*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF_SHIFT 8 855*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG (0x1<<10) 856*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG_SHIFT 10 857*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN (0x1<<11) 858*4882a593Smuzhiyun #define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN_SHIFT 11 859*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN (0x1<<12) 860*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN_SHIFT 12 861*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN (0x1<<13) 862*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN_SHIFT 13 863*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN (0x1<<14) 864*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN_SHIFT 14 865*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN (0x1<<15) 866*4882a593Smuzhiyun #define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN_SHIFT 15 867*4882a593Smuzhiyun u16 __agg_val4; 868*4882a593Smuzhiyun #endif 869*4882a593Smuzhiyun struct tstorm_fcoe_extra_ag_context_section __extra_section; 870*4882a593Smuzhiyun }; 871*4882a593Smuzhiyun 872*4882a593Smuzhiyun 873*4882a593Smuzhiyun 874*4882a593Smuzhiyun /* 875*4882a593Smuzhiyun * The tcp aggregative context section of Tstorm 876*4882a593Smuzhiyun */ 877*4882a593Smuzhiyun struct tstorm_tcp_tcp_ag_context_section { 878*4882a593Smuzhiyun u32 __agg_val1; 879*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 880*4882a593Smuzhiyun u8 __tcp_agg_vars2; 881*4882a593Smuzhiyun u8 __agg_val3; 882*4882a593Smuzhiyun u16 __agg_val2; 883*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 884*4882a593Smuzhiyun u16 __agg_val2; 885*4882a593Smuzhiyun u8 __agg_val3; 886*4882a593Smuzhiyun u8 __tcp_agg_vars2; 887*4882a593Smuzhiyun #endif 888*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 889*4882a593Smuzhiyun u16 __agg_val5; 890*4882a593Smuzhiyun u8 __agg_val6; 891*4882a593Smuzhiyun u8 __tcp_agg_vars3; 892*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 893*4882a593Smuzhiyun u8 __tcp_agg_vars3; 894*4882a593Smuzhiyun u8 __agg_val6; 895*4882a593Smuzhiyun u16 __agg_val5; 896*4882a593Smuzhiyun #endif 897*4882a593Smuzhiyun u32 snd_nxt; 898*4882a593Smuzhiyun u32 rtt_seq; 899*4882a593Smuzhiyun u32 rtt_time; 900*4882a593Smuzhiyun u32 wnd_right_edge_local; 901*4882a593Smuzhiyun u32 wnd_right_edge; 902*4882a593Smuzhiyun u32 tcp_agg_vars1; 903*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<0) 904*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 0 905*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG (0x1<<1) 906*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG_SHIFT 1 907*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF (0x3<<2) 908*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_SHIFT 2 909*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF (0x3<<4) 910*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_SHIFT 4 911*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_EN (0x1<<6) 912*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_EN_SHIFT 6 913*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_EN (0x1<<7) 914*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_EN_SHIFT 7 915*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN (0x1<<8) 916*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN_SHIFT 8 917*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_SND_NXT_EN (0x1<<9) 918*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_SND_NXT_EN_SHIFT 9 919*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<10) 920*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 10 921*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_FLAG (0x1<<11) 922*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_FLAG_SHIFT 11 923*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_EN (0x1<<12) 924*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_EN_SHIFT 12 925*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_EN (0x1<<13) 926*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_EN_SHIFT 13 927*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF (0x3<<14) 928*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_SHIFT 14 929*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF (0x3<<16) 930*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_SHIFT 16 931*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_BLOCKED (0x1<<18) 932*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_BLOCKED_SHIFT 18 933*4882a593Smuzhiyun #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<19) 934*4882a593Smuzhiyun #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 19 935*4882a593Smuzhiyun #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_EN (0x1<<20) 936*4882a593Smuzhiyun #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_EN_SHIFT 20 937*4882a593Smuzhiyun #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_EN (0x1<<21) 938*4882a593Smuzhiyun #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_EN_SHIFT 21 939*4882a593Smuzhiyun #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED1 (0x3<<22) 940*4882a593Smuzhiyun #define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED1_SHIFT 22 941*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ (0xF<<24) 942*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ_SHIFT 24 943*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ (0xF<<28) 944*4882a593Smuzhiyun #define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ_SHIFT 28 945*4882a593Smuzhiyun u32 snd_max; 946*4882a593Smuzhiyun u32 snd_una; 947*4882a593Smuzhiyun u32 __reserved2; 948*4882a593Smuzhiyun }; 949*4882a593Smuzhiyun 950*4882a593Smuzhiyun /* 951*4882a593Smuzhiyun * The iscsi aggregative context of Tstorm 952*4882a593Smuzhiyun */ 953*4882a593Smuzhiyun struct tstorm_iscsi_ag_context { 954*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 955*4882a593Smuzhiyun u16 ulp_credit; 956*4882a593Smuzhiyun u8 agg_vars1; 957*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) 958*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 959*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) 960*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 961*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2) 962*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2 963*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3) 964*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3 965*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF (0x3<<4) 966*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_SHIFT 4 967*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG (0x1<<6) 968*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG_SHIFT 6 969*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG (0x1<<7) 970*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG_SHIFT 7 971*4882a593Smuzhiyun u8 state; 972*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 973*4882a593Smuzhiyun u8 state; 974*4882a593Smuzhiyun u8 agg_vars1; 975*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) 976*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 977*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) 978*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 979*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2) 980*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2 981*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3) 982*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3 983*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF (0x3<<4) 984*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_SHIFT 4 985*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG (0x1<<6) 986*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG_SHIFT 6 987*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG (0x1<<7) 988*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG_SHIFT 7 989*4882a593Smuzhiyun u16 ulp_credit; 990*4882a593Smuzhiyun #endif 991*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 992*4882a593Smuzhiyun u16 __agg_val4; 993*4882a593Smuzhiyun u16 agg_vars2; 994*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG (0x1<<0) 995*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG_SHIFT 0 996*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG (0x1<<1) 997*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG_SHIFT 1 998*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF (0x3<<2) 999*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_SHIFT 2 1000*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF (0x3<<4) 1001*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_SHIFT 4 1002*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF (0x3<<6) 1003*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_SHIFT 6 1004*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF (0x3<<8) 1005*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_SHIFT 8 1006*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG (0x1<<10) 1007*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG_SHIFT 10 1008*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<11) 1009*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 11 1010*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN (0x1<<12) 1011*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN_SHIFT 12 1012*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN (0x1<<13) 1013*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN_SHIFT 13 1014*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN (0x1<<14) 1015*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN_SHIFT 14 1016*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN (0x1<<15) 1017*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN_SHIFT 15 1018*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1019*4882a593Smuzhiyun u16 agg_vars2; 1020*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG (0x1<<0) 1021*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG_SHIFT 0 1022*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG (0x1<<1) 1023*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG_SHIFT 1 1024*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF (0x3<<2) 1025*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_SHIFT 2 1026*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF (0x3<<4) 1027*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_SHIFT 4 1028*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF (0x3<<6) 1029*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_SHIFT 6 1030*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF (0x3<<8) 1031*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_SHIFT 8 1032*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG (0x1<<10) 1033*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG_SHIFT 10 1034*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<11) 1035*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 11 1036*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN (0x1<<12) 1037*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN_SHIFT 12 1038*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN (0x1<<13) 1039*4882a593Smuzhiyun #define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN_SHIFT 13 1040*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN (0x1<<14) 1041*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN_SHIFT 14 1042*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN (0x1<<15) 1043*4882a593Smuzhiyun #define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN_SHIFT 15 1044*4882a593Smuzhiyun u16 __agg_val4; 1045*4882a593Smuzhiyun #endif 1046*4882a593Smuzhiyun struct tstorm_tcp_tcp_ag_context_section tcp; 1047*4882a593Smuzhiyun }; 1048*4882a593Smuzhiyun 1049*4882a593Smuzhiyun 1050*4882a593Smuzhiyun 1051*4882a593Smuzhiyun /* 1052*4882a593Smuzhiyun * The fcoe aggregative context of Ustorm 1053*4882a593Smuzhiyun */ 1054*4882a593Smuzhiyun struct ustorm_fcoe_ag_context { 1055*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1056*4882a593Smuzhiyun u8 __aux_counter_flags; 1057*4882a593Smuzhiyun u8 agg_vars2; 1058*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_TX_CF (0x3<<0) 1059*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_TX_CF_SHIFT 0 1060*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF (0x3<<2) 1061*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_SHIFT 2 1062*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4) 1063*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4 1064*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7) 1065*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7 1066*4882a593Smuzhiyun u8 agg_vars1; 1067*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) 1068*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 1069*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) 1070*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 1071*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2) 1072*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2 1073*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3) 1074*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3 1075*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_INV_CF (0x3<<4) 1076*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_INV_CF_SHIFT 4 1077*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF (0x3<<6) 1078*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_SHIFT 6 1079*4882a593Smuzhiyun u8 state; 1080*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1081*4882a593Smuzhiyun u8 state; 1082*4882a593Smuzhiyun u8 agg_vars1; 1083*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) 1084*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 1085*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) 1086*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 1087*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2) 1088*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2 1089*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3) 1090*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3 1091*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_INV_CF (0x3<<4) 1092*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_INV_CF_SHIFT 4 1093*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF (0x3<<6) 1094*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_SHIFT 6 1095*4882a593Smuzhiyun u8 agg_vars2; 1096*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_TX_CF (0x3<<0) 1097*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_TX_CF_SHIFT 0 1098*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF (0x3<<2) 1099*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_SHIFT 2 1100*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4) 1101*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4 1102*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7) 1103*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7 1104*4882a593Smuzhiyun u8 __aux_counter_flags; 1105*4882a593Smuzhiyun #endif 1106*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1107*4882a593Smuzhiyun u8 cdu_usage; 1108*4882a593Smuzhiyun u8 agg_misc2; 1109*4882a593Smuzhiyun u16 pbf_tx_seq_ack; 1110*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1111*4882a593Smuzhiyun u16 pbf_tx_seq_ack; 1112*4882a593Smuzhiyun u8 agg_misc2; 1113*4882a593Smuzhiyun u8 cdu_usage; 1114*4882a593Smuzhiyun #endif 1115*4882a593Smuzhiyun u32 agg_misc4; 1116*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1117*4882a593Smuzhiyun u8 agg_val3_th; 1118*4882a593Smuzhiyun u8 agg_val3; 1119*4882a593Smuzhiyun u16 agg_misc3; 1120*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1121*4882a593Smuzhiyun u16 agg_misc3; 1122*4882a593Smuzhiyun u8 agg_val3; 1123*4882a593Smuzhiyun u8 agg_val3_th; 1124*4882a593Smuzhiyun #endif 1125*4882a593Smuzhiyun u32 expired_task_id; 1126*4882a593Smuzhiyun u32 agg_misc4_th; 1127*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1128*4882a593Smuzhiyun u16 cq_prod; 1129*4882a593Smuzhiyun u16 cq_cons; 1130*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1131*4882a593Smuzhiyun u16 cq_cons; 1132*4882a593Smuzhiyun u16 cq_prod; 1133*4882a593Smuzhiyun #endif 1134*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1135*4882a593Smuzhiyun u16 __reserved2; 1136*4882a593Smuzhiyun u8 decision_rules; 1137*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE (0x7<<0) 1138*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE_SHIFT 0 1139*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3) 1140*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3 1141*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG (0x1<<6) 1142*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG_SHIFT 6 1143*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_RESERVED1 (0x1<<7) 1144*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_RESERVED1_SHIFT 7 1145*4882a593Smuzhiyun u8 decision_rule_enable_bits; 1146*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN (0x1<<0) 1147*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN_SHIFT 0 1148*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1) 1149*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1 1150*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_TX_CF_EN (0x1<<2) 1151*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_TX_CF_EN_SHIFT 2 1152*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN (0x1<<3) 1153*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN_SHIFT 3 1154*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN (0x1<<4) 1155*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN_SHIFT 4 1156*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN (0x1<<5) 1157*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN_SHIFT 5 1158*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN (0x1<<6) 1159*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN_SHIFT 6 1160*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN (0x1<<7) 1161*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN_SHIFT 7 1162*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1163*4882a593Smuzhiyun u8 decision_rule_enable_bits; 1164*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN (0x1<<0) 1165*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN_SHIFT 0 1166*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1) 1167*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1 1168*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_TX_CF_EN (0x1<<2) 1169*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_TX_CF_EN_SHIFT 2 1170*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN (0x1<<3) 1171*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN_SHIFT 3 1172*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN (0x1<<4) 1173*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN_SHIFT 4 1174*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN (0x1<<5) 1175*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN_SHIFT 5 1176*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN (0x1<<6) 1177*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN_SHIFT 6 1178*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN (0x1<<7) 1179*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN_SHIFT 7 1180*4882a593Smuzhiyun u8 decision_rules; 1181*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE (0x7<<0) 1182*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE_SHIFT 0 1183*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3) 1184*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3 1185*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG (0x1<<6) 1186*4882a593Smuzhiyun #define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG_SHIFT 6 1187*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_RESERVED1 (0x1<<7) 1188*4882a593Smuzhiyun #define __USTORM_FCOE_AG_CONTEXT_RESERVED1_SHIFT 7 1189*4882a593Smuzhiyun u16 __reserved2; 1190*4882a593Smuzhiyun #endif 1191*4882a593Smuzhiyun }; 1192*4882a593Smuzhiyun 1193*4882a593Smuzhiyun 1194*4882a593Smuzhiyun /* 1195*4882a593Smuzhiyun * The iscsi aggregative context of Ustorm 1196*4882a593Smuzhiyun */ 1197*4882a593Smuzhiyun struct ustorm_iscsi_ag_context { 1198*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1199*4882a593Smuzhiyun u8 __aux_counter_flags; 1200*4882a593Smuzhiyun u8 agg_vars2; 1201*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_TX_CF (0x3<<0) 1202*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_TX_CF_SHIFT 0 1203*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF (0x3<<2) 1204*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_SHIFT 2 1205*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4) 1206*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4 1207*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7) 1208*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7 1209*4882a593Smuzhiyun u8 agg_vars1; 1210*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) 1211*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 1212*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) 1213*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 1214*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2) 1215*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2 1216*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3) 1217*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3 1218*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_INV_CF (0x3<<4) 1219*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_INV_CF_SHIFT 4 1220*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF (0x3<<6) 1221*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_SHIFT 6 1222*4882a593Smuzhiyun u8 state; 1223*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1224*4882a593Smuzhiyun u8 state; 1225*4882a593Smuzhiyun u8 agg_vars1; 1226*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) 1227*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 1228*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) 1229*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 1230*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2) 1231*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2 1232*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3) 1233*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3 1234*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_INV_CF (0x3<<4) 1235*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_INV_CF_SHIFT 4 1236*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF (0x3<<6) 1237*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_SHIFT 6 1238*4882a593Smuzhiyun u8 agg_vars2; 1239*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_TX_CF (0x3<<0) 1240*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_TX_CF_SHIFT 0 1241*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF (0x3<<2) 1242*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_SHIFT 2 1243*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4) 1244*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4 1245*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7) 1246*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7 1247*4882a593Smuzhiyun u8 __aux_counter_flags; 1248*4882a593Smuzhiyun #endif 1249*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1250*4882a593Smuzhiyun u8 cdu_usage; 1251*4882a593Smuzhiyun u8 agg_misc2; 1252*4882a593Smuzhiyun u16 __cq_local_comp_itt_val; 1253*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1254*4882a593Smuzhiyun u16 __cq_local_comp_itt_val; 1255*4882a593Smuzhiyun u8 agg_misc2; 1256*4882a593Smuzhiyun u8 cdu_usage; 1257*4882a593Smuzhiyun #endif 1258*4882a593Smuzhiyun u32 agg_misc4; 1259*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1260*4882a593Smuzhiyun u8 agg_val3_th; 1261*4882a593Smuzhiyun u8 agg_val3; 1262*4882a593Smuzhiyun u16 agg_misc3; 1263*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1264*4882a593Smuzhiyun u16 agg_misc3; 1265*4882a593Smuzhiyun u8 agg_val3; 1266*4882a593Smuzhiyun u8 agg_val3_th; 1267*4882a593Smuzhiyun #endif 1268*4882a593Smuzhiyun u32 agg_val1; 1269*4882a593Smuzhiyun u32 agg_misc4_th; 1270*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1271*4882a593Smuzhiyun u16 agg_val2_th; 1272*4882a593Smuzhiyun u16 agg_val2; 1273*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1274*4882a593Smuzhiyun u16 agg_val2; 1275*4882a593Smuzhiyun u16 agg_val2_th; 1276*4882a593Smuzhiyun #endif 1277*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1278*4882a593Smuzhiyun u16 __reserved2; 1279*4882a593Smuzhiyun u8 decision_rules; 1280*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE (0x7<<0) 1281*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE_SHIFT 0 1282*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3) 1283*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3 1284*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG (0x1<<6) 1285*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG_SHIFT 6 1286*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_RESERVED1 (0x1<<7) 1287*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_RESERVED1_SHIFT 7 1288*4882a593Smuzhiyun u8 decision_rule_enable_bits; 1289*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN (0x1<<0) 1290*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN_SHIFT 0 1291*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1) 1292*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1 1293*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN (0x1<<2) 1294*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN_SHIFT 2 1295*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN (0x1<<3) 1296*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN_SHIFT 3 1297*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN (0x1<<4) 1298*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN_SHIFT 4 1299*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<5) 1300*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 5 1301*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<6) 1302*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 6 1303*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7) 1304*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7 1305*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1306*4882a593Smuzhiyun u8 decision_rule_enable_bits; 1307*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN (0x1<<0) 1308*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN_SHIFT 0 1309*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1) 1310*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1 1311*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN (0x1<<2) 1312*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN_SHIFT 2 1313*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN (0x1<<3) 1314*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN_SHIFT 3 1315*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN (0x1<<4) 1316*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN_SHIFT 4 1317*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<5) 1318*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 5 1319*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<6) 1320*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 6 1321*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7) 1322*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7 1323*4882a593Smuzhiyun u8 decision_rules; 1324*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE (0x7<<0) 1325*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE_SHIFT 0 1326*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3) 1327*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3 1328*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG (0x1<<6) 1329*4882a593Smuzhiyun #define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG_SHIFT 6 1330*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_RESERVED1 (0x1<<7) 1331*4882a593Smuzhiyun #define __USTORM_ISCSI_AG_CONTEXT_RESERVED1_SHIFT 7 1332*4882a593Smuzhiyun u16 __reserved2; 1333*4882a593Smuzhiyun #endif 1334*4882a593Smuzhiyun }; 1335*4882a593Smuzhiyun 1336*4882a593Smuzhiyun 1337*4882a593Smuzhiyun /* 1338*4882a593Smuzhiyun * The fcoe aggregative context section of Xstorm 1339*4882a593Smuzhiyun */ 1340*4882a593Smuzhiyun struct xstorm_fcoe_extra_ag_context_section { 1341*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1342*4882a593Smuzhiyun u8 tcp_agg_vars1; 1343*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED51 (0x3<<0) 1344*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED51_SHIFT 0 1345*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED (0x3<<2) 1346*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_SHIFT 2 1347*4882a593Smuzhiyun #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF (0x3<<4) 1348*4882a593Smuzhiyun #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_SHIFT 4 1349*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN (0x1<<6) 1350*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN_SHIFT 6 1351*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_DA_EXPIRATION_FLAG (0x1<<7) 1352*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_DA_EXPIRATION_FLAG_SHIFT 7 1353*4882a593Smuzhiyun u8 __reserved_da_cnt; 1354*4882a593Smuzhiyun u16 __mtu; 1355*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1356*4882a593Smuzhiyun u16 __mtu; 1357*4882a593Smuzhiyun u8 __reserved_da_cnt; 1358*4882a593Smuzhiyun u8 tcp_agg_vars1; 1359*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED51 (0x3<<0) 1360*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED51_SHIFT 0 1361*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED (0x3<<2) 1362*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_SHIFT 2 1363*4882a593Smuzhiyun #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF (0x3<<4) 1364*4882a593Smuzhiyun #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_SHIFT 4 1365*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN (0x1<<6) 1366*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN_SHIFT 6 1367*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_DA_EXPIRATION_FLAG (0x1<<7) 1368*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_DA_EXPIRATION_FLAG_SHIFT 7 1369*4882a593Smuzhiyun #endif 1370*4882a593Smuzhiyun u32 snd_nxt; 1371*4882a593Smuzhiyun u32 __xfrqe_bd_addr_lo; 1372*4882a593Smuzhiyun u32 __xfrqe_bd_addr_hi; 1373*4882a593Smuzhiyun u32 __xfrqe_data1; 1374*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1375*4882a593Smuzhiyun u8 __agg_val8_th; 1376*4882a593Smuzhiyun u8 __tx_dest; 1377*4882a593Smuzhiyun u16 tcp_agg_vars2; 1378*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED57 (0x1<<0) 1379*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED57_SHIFT 0 1380*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED58 (0x1<<1) 1381*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED58_SHIFT 1 1382*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED59 (0x1<<2) 1383*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED59_SHIFT 2 1384*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX3_FLAG (0x1<<3) 1385*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX3_FLAG_SHIFT 3 1386*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX4_FLAG (0x1<<4) 1387*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX4_FLAG_SHIFT 4 1388*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED60 (0x1<<5) 1389*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED60_SHIFT 5 1390*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_ACK_TO_FE_UPDATED_EN (0x1<<6) 1391*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_ACK_TO_FE_UPDATED_EN_SHIFT 6 1392*4882a593Smuzhiyun #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN (0x1<<7) 1393*4882a593Smuzhiyun #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN_SHIFT 7 1394*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_TX_FIN_FLAG_EN (0x1<<8) 1395*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_TX_FIN_FLAG_EN_SHIFT 8 1396*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9) 1397*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 9 1398*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SET_RTO_CF (0x3<<10) 1399*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10 1400*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12) 1401*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12 1402*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF (0x3<<14) 1403*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_SHIFT 14 1404*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1405*4882a593Smuzhiyun u16 tcp_agg_vars2; 1406*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED57 (0x1<<0) 1407*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED57_SHIFT 0 1408*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED58 (0x1<<1) 1409*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED58_SHIFT 1 1410*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED59 (0x1<<2) 1411*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED59_SHIFT 2 1412*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX3_FLAG (0x1<<3) 1413*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX3_FLAG_SHIFT 3 1414*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX4_FLAG (0x1<<4) 1415*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX4_FLAG_SHIFT 4 1416*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED60 (0x1<<5) 1417*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED60_SHIFT 5 1418*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_ACK_TO_FE_UPDATED_EN (0x1<<6) 1419*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_ACK_TO_FE_UPDATED_EN_SHIFT 6 1420*4882a593Smuzhiyun #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN (0x1<<7) 1421*4882a593Smuzhiyun #define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN_SHIFT 7 1422*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_TX_FIN_FLAG_EN (0x1<<8) 1423*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_TX_FIN_FLAG_EN_SHIFT 8 1424*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9) 1425*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 9 1426*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SET_RTO_CF (0x3<<10) 1427*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10 1428*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12) 1429*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12 1430*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF (0x3<<14) 1431*4882a593Smuzhiyun #define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_SHIFT 14 1432*4882a593Smuzhiyun u8 __tx_dest; 1433*4882a593Smuzhiyun u8 __agg_val8_th; 1434*4882a593Smuzhiyun #endif 1435*4882a593Smuzhiyun u32 __sq_base_addr_lo; 1436*4882a593Smuzhiyun u32 __sq_base_addr_hi; 1437*4882a593Smuzhiyun u32 __xfrq_base_addr_lo; 1438*4882a593Smuzhiyun u32 __xfrq_base_addr_hi; 1439*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1440*4882a593Smuzhiyun u16 __xfrq_cons; 1441*4882a593Smuzhiyun u16 __xfrq_prod; 1442*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1443*4882a593Smuzhiyun u16 __xfrq_prod; 1444*4882a593Smuzhiyun u16 __xfrq_cons; 1445*4882a593Smuzhiyun #endif 1446*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1447*4882a593Smuzhiyun u8 __tcp_agg_vars5; 1448*4882a593Smuzhiyun u8 __tcp_agg_vars4; 1449*4882a593Smuzhiyun u8 __tcp_agg_vars3; 1450*4882a593Smuzhiyun u8 __reserved_force_pure_ack_cnt; 1451*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1452*4882a593Smuzhiyun u8 __reserved_force_pure_ack_cnt; 1453*4882a593Smuzhiyun u8 __tcp_agg_vars3; 1454*4882a593Smuzhiyun u8 __tcp_agg_vars4; 1455*4882a593Smuzhiyun u8 __tcp_agg_vars5; 1456*4882a593Smuzhiyun #endif 1457*4882a593Smuzhiyun u32 __tcp_agg_vars6; 1458*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1459*4882a593Smuzhiyun u16 __xfrqe_mng; 1460*4882a593Smuzhiyun u16 __tcp_agg_vars7; 1461*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1462*4882a593Smuzhiyun u16 __tcp_agg_vars7; 1463*4882a593Smuzhiyun u16 __xfrqe_mng; 1464*4882a593Smuzhiyun #endif 1465*4882a593Smuzhiyun u32 __xfrqe_data0; 1466*4882a593Smuzhiyun u32 __agg_val10_th; 1467*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1468*4882a593Smuzhiyun u16 __reserved3; 1469*4882a593Smuzhiyun u8 __reserved2; 1470*4882a593Smuzhiyun u8 __da_only_cnt; 1471*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1472*4882a593Smuzhiyun u8 __da_only_cnt; 1473*4882a593Smuzhiyun u8 __reserved2; 1474*4882a593Smuzhiyun u16 __reserved3; 1475*4882a593Smuzhiyun #endif 1476*4882a593Smuzhiyun }; 1477*4882a593Smuzhiyun 1478*4882a593Smuzhiyun /* 1479*4882a593Smuzhiyun * The fcoe aggregative context of Xstorm 1480*4882a593Smuzhiyun */ 1481*4882a593Smuzhiyun struct xstorm_fcoe_ag_context { 1482*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1483*4882a593Smuzhiyun u16 agg_val1; 1484*4882a593Smuzhiyun u8 agg_vars1; 1485*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) 1486*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 1487*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) 1488*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 1489*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED51 (0x1<<2) 1490*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED51_SHIFT 2 1491*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED52 (0x1<<3) 1492*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED52_SHIFT 3 1493*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4) 1494*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4 1495*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_NAGLE_EN (0x1<<5) 1496*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_NAGLE_EN_SHIFT 5 1497*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6) 1498*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6 1499*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED_UNA_GT_NXT_EN (0x1<<7) 1500*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED_UNA_GT_NXT_EN_SHIFT 7 1501*4882a593Smuzhiyun u8 __state; 1502*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1503*4882a593Smuzhiyun u8 __state; 1504*4882a593Smuzhiyun u8 agg_vars1; 1505*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) 1506*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 1507*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) 1508*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 1509*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED51 (0x1<<2) 1510*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED51_SHIFT 2 1511*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED52 (0x1<<3) 1512*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED52_SHIFT 3 1513*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4) 1514*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4 1515*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_NAGLE_EN (0x1<<5) 1516*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_NAGLE_EN_SHIFT 5 1517*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6) 1518*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6 1519*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED_UNA_GT_NXT_EN (0x1<<7) 1520*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED_UNA_GT_NXT_EN_SHIFT 7 1521*4882a593Smuzhiyun u16 agg_val1; 1522*4882a593Smuzhiyun #endif 1523*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1524*4882a593Smuzhiyun u8 cdu_reserved; 1525*4882a593Smuzhiyun u8 __agg_vars4; 1526*4882a593Smuzhiyun u8 agg_vars3; 1527*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0) 1528*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0 1529*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX19_CF (0x3<<6) 1530*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX19_CF_SHIFT 6 1531*4882a593Smuzhiyun u8 agg_vars2; 1532*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_CF (0x3<<0) 1533*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_CF_SHIFT 0 1534*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2) 1535*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2 1536*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX8_FLAG (0x1<<3) 1537*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX8_FLAG_SHIFT 3 1538*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX9_FLAG (0x1<<4) 1539*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX9_FLAG_SHIFT 4 1540*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE1 (0x3<<5) 1541*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE1_SHIFT 5 1542*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_CF_EN (0x1<<7) 1543*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_CF_EN_SHIFT 7 1544*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1545*4882a593Smuzhiyun u8 agg_vars2; 1546*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_CF (0x3<<0) 1547*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_CF_SHIFT 0 1548*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2) 1549*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2 1550*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX8_FLAG (0x1<<3) 1551*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX8_FLAG_SHIFT 3 1552*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX9_FLAG (0x1<<4) 1553*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX9_FLAG_SHIFT 4 1554*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE1 (0x3<<5) 1555*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE1_SHIFT 5 1556*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_CF_EN (0x1<<7) 1557*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_DQ_CF_EN_SHIFT 7 1558*4882a593Smuzhiyun u8 agg_vars3; 1559*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0) 1560*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0 1561*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX19_CF (0x3<<6) 1562*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX19_CF_SHIFT 6 1563*4882a593Smuzhiyun u8 __agg_vars4; 1564*4882a593Smuzhiyun u8 cdu_reserved; 1565*4882a593Smuzhiyun #endif 1566*4882a593Smuzhiyun u32 more_to_send; 1567*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1568*4882a593Smuzhiyun u16 agg_vars5; 1569*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE5 (0x3<<0) 1570*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE5_SHIFT 0 1571*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2) 1572*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2 1573*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8) 1574*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8 1575*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_CONFQ_DEC_RULE (0x3<<14) 1576*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_CONFQ_DEC_RULE_SHIFT 14 1577*4882a593Smuzhiyun u16 sq_cons; 1578*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1579*4882a593Smuzhiyun u16 sq_cons; 1580*4882a593Smuzhiyun u16 agg_vars5; 1581*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE5 (0x3<<0) 1582*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE5_SHIFT 0 1583*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2) 1584*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2 1585*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8) 1586*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8 1587*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_CONFQ_DEC_RULE (0x3<<14) 1588*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_CONFQ_DEC_RULE_SHIFT 14 1589*4882a593Smuzhiyun #endif 1590*4882a593Smuzhiyun struct xstorm_fcoe_extra_ag_context_section __extra_section; 1591*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1592*4882a593Smuzhiyun u16 agg_vars7; 1593*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0) 1594*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0 1595*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX13_FLAG (0x1<<3) 1596*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX13_FLAG_SHIFT 3 1597*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_QUEUE0_CF (0x3<<4) 1598*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_QUEUE0_CF_SHIFT 4 1599*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE3 (0x3<<6) 1600*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE3_SHIFT 6 1601*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_AUX1_CF (0x3<<8) 1602*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_AUX1_CF_SHIFT 8 1603*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED62 (0x1<<10) 1604*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED62_SHIFT 10 1605*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX1_CF_EN (0x1<<11) 1606*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX1_CF_EN_SHIFT 11 1607*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX10_FLAG (0x1<<12) 1608*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX10_FLAG_SHIFT 12 1609*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX11_FLAG (0x1<<13) 1610*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX11_FLAG_SHIFT 13 1611*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX12_FLAG (0x1<<14) 1612*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX12_FLAG_SHIFT 14 1613*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX2_FLAG (0x1<<15) 1614*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX2_FLAG_SHIFT 15 1615*4882a593Smuzhiyun u8 agg_val3_th; 1616*4882a593Smuzhiyun u8 agg_vars6; 1617*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE6 (0x7<<0) 1618*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE6_SHIFT 0 1619*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_XFRQ_DEC_RULE (0x7<<3) 1620*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_XFRQ_DEC_RULE_SHIFT 3 1621*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_SQ_DEC_RULE (0x3<<6) 1622*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_SQ_DEC_RULE_SHIFT 6 1623*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1624*4882a593Smuzhiyun u8 agg_vars6; 1625*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE6 (0x7<<0) 1626*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE6_SHIFT 0 1627*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_XFRQ_DEC_RULE (0x7<<3) 1628*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_XFRQ_DEC_RULE_SHIFT 3 1629*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_SQ_DEC_RULE (0x3<<6) 1630*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_SQ_DEC_RULE_SHIFT 6 1631*4882a593Smuzhiyun u8 agg_val3_th; 1632*4882a593Smuzhiyun u16 agg_vars7; 1633*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0) 1634*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0 1635*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX13_FLAG (0x1<<3) 1636*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX13_FLAG_SHIFT 3 1637*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_QUEUE0_CF (0x3<<4) 1638*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_QUEUE0_CF_SHIFT 4 1639*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE3 (0x3<<6) 1640*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE3_SHIFT 6 1641*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_AUX1_CF (0x3<<8) 1642*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_AUX1_CF_SHIFT 8 1643*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED62 (0x1<<10) 1644*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_RESERVED62_SHIFT 10 1645*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX1_CF_EN (0x1<<11) 1646*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX1_CF_EN_SHIFT 11 1647*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX10_FLAG (0x1<<12) 1648*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX10_FLAG_SHIFT 12 1649*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX11_FLAG (0x1<<13) 1650*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX11_FLAG_SHIFT 13 1651*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX12_FLAG (0x1<<14) 1652*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX12_FLAG_SHIFT 14 1653*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX2_FLAG (0x1<<15) 1654*4882a593Smuzhiyun #define __XSTORM_FCOE_AG_CONTEXT_AUX2_FLAG_SHIFT 15 1655*4882a593Smuzhiyun #endif 1656*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1657*4882a593Smuzhiyun u16 __agg_val11_th; 1658*4882a593Smuzhiyun u16 __agg_val11; 1659*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1660*4882a593Smuzhiyun u16 __agg_val11; 1661*4882a593Smuzhiyun u16 __agg_val11_th; 1662*4882a593Smuzhiyun #endif 1663*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1664*4882a593Smuzhiyun u8 __reserved1; 1665*4882a593Smuzhiyun u8 __agg_val6_th; 1666*4882a593Smuzhiyun u16 __agg_val9; 1667*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1668*4882a593Smuzhiyun u16 __agg_val9; 1669*4882a593Smuzhiyun u8 __agg_val6_th; 1670*4882a593Smuzhiyun u8 __reserved1; 1671*4882a593Smuzhiyun #endif 1672*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1673*4882a593Smuzhiyun u16 confq_cons; 1674*4882a593Smuzhiyun u16 confq_prod; 1675*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1676*4882a593Smuzhiyun u16 confq_prod; 1677*4882a593Smuzhiyun u16 confq_cons; 1678*4882a593Smuzhiyun #endif 1679*4882a593Smuzhiyun u32 agg_vars8; 1680*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_AGG_MISC2 (0xFFFFFF<<0) 1681*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_AGG_MISC2_SHIFT 0 1682*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_AGG_MISC3 (0xFF<<24) 1683*4882a593Smuzhiyun #define XSTORM_FCOE_AG_CONTEXT_AGG_MISC3_SHIFT 24 1684*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1685*4882a593Smuzhiyun u16 __cache_wqe_db; 1686*4882a593Smuzhiyun u16 sq_prod; 1687*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1688*4882a593Smuzhiyun u16 sq_prod; 1689*4882a593Smuzhiyun u16 __cache_wqe_db; 1690*4882a593Smuzhiyun #endif 1691*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1692*4882a593Smuzhiyun u8 agg_val3; 1693*4882a593Smuzhiyun u8 agg_val6; 1694*4882a593Smuzhiyun u8 agg_val5_th; 1695*4882a593Smuzhiyun u8 agg_val5; 1696*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1697*4882a593Smuzhiyun u8 agg_val5; 1698*4882a593Smuzhiyun u8 agg_val5_th; 1699*4882a593Smuzhiyun u8 agg_val6; 1700*4882a593Smuzhiyun u8 agg_val3; 1701*4882a593Smuzhiyun #endif 1702*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1703*4882a593Smuzhiyun u16 __agg_misc1; 1704*4882a593Smuzhiyun u16 agg_limit1; 1705*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1706*4882a593Smuzhiyun u16 agg_limit1; 1707*4882a593Smuzhiyun u16 __agg_misc1; 1708*4882a593Smuzhiyun #endif 1709*4882a593Smuzhiyun u32 completion_seq; 1710*4882a593Smuzhiyun u32 confq_pbl_base_lo; 1711*4882a593Smuzhiyun u32 confq_pbl_base_hi; 1712*4882a593Smuzhiyun }; 1713*4882a593Smuzhiyun 1714*4882a593Smuzhiyun 1715*4882a593Smuzhiyun 1716*4882a593Smuzhiyun /* 1717*4882a593Smuzhiyun * The tcp aggregative context section of Xstorm 1718*4882a593Smuzhiyun */ 1719*4882a593Smuzhiyun struct xstorm_tcp_tcp_ag_context_section { 1720*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1721*4882a593Smuzhiyun u8 tcp_agg_vars1; 1722*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_DA_TIMER_CF (0x3<<0) 1723*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_DA_TIMER_CF_SHIFT 0 1724*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED (0x3<<2) 1725*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_SHIFT 2 1726*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF (0x3<<4) 1727*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_SHIFT 4 1728*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CLEAR_DA_TIMER_EN (0x1<<6) 1729*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CLEAR_DA_TIMER_EN_SHIFT 6 1730*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_EXPIRATION_FLAG (0x1<<7) 1731*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_EXPIRATION_FLAG_SHIFT 7 1732*4882a593Smuzhiyun u8 __da_cnt; 1733*4882a593Smuzhiyun u16 mss; 1734*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1735*4882a593Smuzhiyun u16 mss; 1736*4882a593Smuzhiyun u8 __da_cnt; 1737*4882a593Smuzhiyun u8 tcp_agg_vars1; 1738*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_DA_TIMER_CF (0x3<<0) 1739*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_DA_TIMER_CF_SHIFT 0 1740*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED (0x3<<2) 1741*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_SHIFT 2 1742*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF (0x3<<4) 1743*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_SHIFT 4 1744*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CLEAR_DA_TIMER_EN (0x1<<6) 1745*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CLEAR_DA_TIMER_EN_SHIFT 6 1746*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_EXPIRATION_FLAG (0x1<<7) 1747*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_EXPIRATION_FLAG_SHIFT 7 1748*4882a593Smuzhiyun #endif 1749*4882a593Smuzhiyun u32 snd_nxt; 1750*4882a593Smuzhiyun u32 tx_wnd; 1751*4882a593Smuzhiyun u32 snd_una; 1752*4882a593Smuzhiyun u32 local_adv_wnd; 1753*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1754*4882a593Smuzhiyun u8 __agg_val8_th; 1755*4882a593Smuzhiyun u8 __tx_dest; 1756*4882a593Smuzhiyun u16 tcp_agg_vars2; 1757*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG (0x1<<0) 1758*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_SHIFT 0 1759*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED (0x1<<1) 1760*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED_SHIFT 1 1761*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE (0x1<<2) 1762*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE_SHIFT 2 1763*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG (0x1<<3) 1764*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG_SHIFT 3 1765*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG (0x1<<4) 1766*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG_SHIFT 4 1767*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE (0x1<<5) 1768*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE_SHIFT 5 1769*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN (0x1<<6) 1770*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN_SHIFT 6 1771*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN (0x1<<7) 1772*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN_SHIFT 7 1773*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN (0x1<<8) 1774*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN_SHIFT 8 1775*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9) 1776*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 9 1777*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF (0x3<<10) 1778*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10 1779*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12) 1780*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12 1781*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF (0x3<<14) 1782*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_SHIFT 14 1783*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1784*4882a593Smuzhiyun u16 tcp_agg_vars2; 1785*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG (0x1<<0) 1786*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_SHIFT 0 1787*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED (0x1<<1) 1788*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED_SHIFT 1 1789*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE (0x1<<2) 1790*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE_SHIFT 2 1791*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG (0x1<<3) 1792*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG_SHIFT 3 1793*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG (0x1<<4) 1794*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG_SHIFT 4 1795*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE (0x1<<5) 1796*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE_SHIFT 5 1797*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN (0x1<<6) 1798*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN_SHIFT 6 1799*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN (0x1<<7) 1800*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN_SHIFT 7 1801*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN (0x1<<8) 1802*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN_SHIFT 8 1803*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9) 1804*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 9 1805*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF (0x3<<10) 1806*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10 1807*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12) 1808*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12 1809*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF (0x3<<14) 1810*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_SHIFT 14 1811*4882a593Smuzhiyun u8 __tx_dest; 1812*4882a593Smuzhiyun u8 __agg_val8_th; 1813*4882a593Smuzhiyun #endif 1814*4882a593Smuzhiyun u32 ack_to_far_end; 1815*4882a593Smuzhiyun u32 rto_timer; 1816*4882a593Smuzhiyun u32 ka_timer; 1817*4882a593Smuzhiyun u32 ts_to_echo; 1818*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1819*4882a593Smuzhiyun u16 __agg_val7_th; 1820*4882a593Smuzhiyun u16 __agg_val7; 1821*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1822*4882a593Smuzhiyun u16 __agg_val7; 1823*4882a593Smuzhiyun u16 __agg_val7_th; 1824*4882a593Smuzhiyun #endif 1825*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1826*4882a593Smuzhiyun u8 __tcp_agg_vars5; 1827*4882a593Smuzhiyun u8 __tcp_agg_vars4; 1828*4882a593Smuzhiyun u8 __tcp_agg_vars3; 1829*4882a593Smuzhiyun u8 __force_pure_ack_cnt; 1830*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1831*4882a593Smuzhiyun u8 __force_pure_ack_cnt; 1832*4882a593Smuzhiyun u8 __tcp_agg_vars3; 1833*4882a593Smuzhiyun u8 __tcp_agg_vars4; 1834*4882a593Smuzhiyun u8 __tcp_agg_vars5; 1835*4882a593Smuzhiyun #endif 1836*4882a593Smuzhiyun u32 tcp_agg_vars6; 1837*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_CF_EN (0x1<<0) 1838*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_CF_EN_SHIFT 0 1839*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_EN (0x1<<1) 1840*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_EN_SHIFT 1 1841*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF_EN (0x1<<2) 1842*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF_EN_SHIFT 2 1843*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<3) 1844*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 3 1845*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX6_FLAG (0x1<<4) 1846*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX6_FLAG_SHIFT 4 1847*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX7_FLAG (0x1<<5) 1848*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX7_FLAG_SHIFT 5 1849*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX5_CF (0x3<<6) 1850*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX5_CF_SHIFT 6 1851*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF (0x3<<8) 1852*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF_SHIFT 8 1853*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF (0x3<<10) 1854*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_SHIFT 10 1855*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF (0x3<<12) 1856*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_SHIFT 12 1857*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF (0x3<<14) 1858*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_SHIFT 14 1859*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX13_CF (0x3<<16) 1860*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX13_CF_SHIFT 16 1861*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX14_CF (0x3<<18) 1862*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX14_CF_SHIFT 18 1863*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX15_CF (0x3<<20) 1864*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX15_CF_SHIFT 20 1865*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX16_CF (0x3<<22) 1866*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX16_CF_SHIFT 22 1867*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX17_CF (0x3<<24) 1868*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX17_CF_SHIFT 24 1869*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ECE_FLAG (0x1<<26) 1870*4882a593Smuzhiyun #define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ECE_FLAG_SHIFT 26 1871*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED71 (0x1<<27) 1872*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED71_SHIFT 27 1873*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_FORCE_PURE_ACK_CNT_DIRTY (0x1<<28) 1874*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_FORCE_PURE_ACK_CNT_DIRTY_SHIFT 28 1875*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TCP_AUTO_STOP_FLAG (0x1<<29) 1876*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TCP_AUTO_STOP_FLAG_SHIFT 29 1877*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DO_TS_UPDATE_FLAG (0x1<<30) 1878*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DO_TS_UPDATE_FLAG_SHIFT 30 1879*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CANCEL_RETRANSMIT_FLAG (0x1<<31) 1880*4882a593Smuzhiyun #define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CANCEL_RETRANSMIT_FLAG_SHIFT 31 1881*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1882*4882a593Smuzhiyun u16 __agg_misc6; 1883*4882a593Smuzhiyun u16 __tcp_agg_vars7; 1884*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1885*4882a593Smuzhiyun u16 __tcp_agg_vars7; 1886*4882a593Smuzhiyun u16 __agg_misc6; 1887*4882a593Smuzhiyun #endif 1888*4882a593Smuzhiyun u32 __agg_val10; 1889*4882a593Smuzhiyun u32 __agg_val10_th; 1890*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1891*4882a593Smuzhiyun u16 __reserved3; 1892*4882a593Smuzhiyun u8 __reserved2; 1893*4882a593Smuzhiyun u8 __da_only_cnt; 1894*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1895*4882a593Smuzhiyun u8 __da_only_cnt; 1896*4882a593Smuzhiyun u8 __reserved2; 1897*4882a593Smuzhiyun u16 __reserved3; 1898*4882a593Smuzhiyun #endif 1899*4882a593Smuzhiyun }; 1900*4882a593Smuzhiyun 1901*4882a593Smuzhiyun /* 1902*4882a593Smuzhiyun * The iscsi aggregative context of Xstorm 1903*4882a593Smuzhiyun */ 1904*4882a593Smuzhiyun struct xstorm_iscsi_ag_context { 1905*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1906*4882a593Smuzhiyun u16 agg_val1; 1907*4882a593Smuzhiyun u8 agg_vars1; 1908*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) 1909*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 1910*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) 1911*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 1912*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2) 1913*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2 1914*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3) 1915*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3 1916*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4) 1917*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4 1918*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN (0x1<<5) 1919*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN_SHIFT 5 1920*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6) 1921*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6 1922*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7) 1923*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7 1924*4882a593Smuzhiyun u8 state; 1925*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1926*4882a593Smuzhiyun u8 state; 1927*4882a593Smuzhiyun u8 agg_vars1; 1928*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) 1929*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 1930*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) 1931*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 1932*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2) 1933*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2 1934*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3) 1935*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3 1936*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4) 1937*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4 1938*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN (0x1<<5) 1939*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN_SHIFT 5 1940*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6) 1941*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6 1942*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7) 1943*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7 1944*4882a593Smuzhiyun u16 agg_val1; 1945*4882a593Smuzhiyun #endif 1946*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1947*4882a593Smuzhiyun u8 cdu_reserved; 1948*4882a593Smuzhiyun u8 __agg_vars4; 1949*4882a593Smuzhiyun u8 agg_vars3; 1950*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0) 1951*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0 1952*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF (0x3<<6) 1953*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF_SHIFT 6 1954*4882a593Smuzhiyun u8 agg_vars2; 1955*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF (0x3<<0) 1956*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_SHIFT 0 1957*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2) 1958*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2 1959*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG (0x1<<3) 1960*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG_SHIFT 3 1961*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG (0x1<<4) 1962*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG_SHIFT 4 1963*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1 (0x3<<5) 1964*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1_SHIFT 5 1965*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7) 1966*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7 1967*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 1968*4882a593Smuzhiyun u8 agg_vars2; 1969*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF (0x3<<0) 1970*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_SHIFT 0 1971*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2) 1972*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2 1973*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG (0x1<<3) 1974*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG_SHIFT 3 1975*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG (0x1<<4) 1976*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG_SHIFT 4 1977*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1 (0x3<<5) 1978*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1_SHIFT 5 1979*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7) 1980*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7 1981*4882a593Smuzhiyun u8 agg_vars3; 1982*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0) 1983*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0 1984*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF (0x3<<6) 1985*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF_SHIFT 6 1986*4882a593Smuzhiyun u8 __agg_vars4; 1987*4882a593Smuzhiyun u8 cdu_reserved; 1988*4882a593Smuzhiyun #endif 1989*4882a593Smuzhiyun u32 more_to_send; 1990*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 1991*4882a593Smuzhiyun u16 agg_vars5; 1992*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5 (0x3<<0) 1993*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5_SHIFT 0 1994*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2) 1995*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2 1996*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8) 1997*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8 1998*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2 (0x3<<14) 1999*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2_SHIFT 14 2000*4882a593Smuzhiyun u16 sq_cons; 2001*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 2002*4882a593Smuzhiyun u16 sq_cons; 2003*4882a593Smuzhiyun u16 agg_vars5; 2004*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5 (0x3<<0) 2005*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5_SHIFT 0 2006*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2) 2007*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2 2008*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8) 2009*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8 2010*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2 (0x3<<14) 2011*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2_SHIFT 14 2012*4882a593Smuzhiyun #endif 2013*4882a593Smuzhiyun struct xstorm_tcp_tcp_ag_context_section tcp; 2014*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 2015*4882a593Smuzhiyun u16 agg_vars7; 2016*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0) 2017*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0 2018*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG (0x1<<3) 2019*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG_SHIFT 3 2020*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF (0x3<<4) 2021*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF_SHIFT 4 2022*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3 (0x3<<6) 2023*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3_SHIFT 6 2024*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF (0x3<<8) 2025*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_SHIFT 8 2026*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10) 2027*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10 2028*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN (0x1<<11) 2029*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN_SHIFT 11 2030*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG (0x1<<12) 2031*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG_SHIFT 12 2032*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG (0x1<<13) 2033*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG_SHIFT 13 2034*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG (0x1<<14) 2035*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG_SHIFT 14 2036*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN (0x1<<15) 2037*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN_SHIFT 15 2038*4882a593Smuzhiyun u8 agg_val3_th; 2039*4882a593Smuzhiyun u8 agg_vars6; 2040*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6 (0x7<<0) 2041*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6_SHIFT 0 2042*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7 (0x7<<3) 2043*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7_SHIFT 3 2044*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4 (0x3<<6) 2045*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4_SHIFT 6 2046*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 2047*4882a593Smuzhiyun u8 agg_vars6; 2048*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6 (0x7<<0) 2049*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6_SHIFT 0 2050*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7 (0x7<<3) 2051*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7_SHIFT 3 2052*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4 (0x3<<6) 2053*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4_SHIFT 6 2054*4882a593Smuzhiyun u8 agg_val3_th; 2055*4882a593Smuzhiyun u16 agg_vars7; 2056*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0) 2057*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0 2058*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG (0x1<<3) 2059*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG_SHIFT 3 2060*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF (0x3<<4) 2061*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF_SHIFT 4 2062*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3 (0x3<<6) 2063*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3_SHIFT 6 2064*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF (0x3<<8) 2065*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_SHIFT 8 2066*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10) 2067*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10 2068*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN (0x1<<11) 2069*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN_SHIFT 11 2070*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG (0x1<<12) 2071*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG_SHIFT 12 2072*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG (0x1<<13) 2073*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG_SHIFT 13 2074*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG (0x1<<14) 2075*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG_SHIFT 14 2076*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN (0x1<<15) 2077*4882a593Smuzhiyun #define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN_SHIFT 15 2078*4882a593Smuzhiyun #endif 2079*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 2080*4882a593Smuzhiyun u16 __agg_val11_th; 2081*4882a593Smuzhiyun u16 __gen_data; 2082*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 2083*4882a593Smuzhiyun u16 __gen_data; 2084*4882a593Smuzhiyun u16 __agg_val11_th; 2085*4882a593Smuzhiyun #endif 2086*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 2087*4882a593Smuzhiyun u8 __reserved1; 2088*4882a593Smuzhiyun u8 __agg_val6_th; 2089*4882a593Smuzhiyun u16 __agg_val9; 2090*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 2091*4882a593Smuzhiyun u16 __agg_val9; 2092*4882a593Smuzhiyun u8 __agg_val6_th; 2093*4882a593Smuzhiyun u8 __reserved1; 2094*4882a593Smuzhiyun #endif 2095*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 2096*4882a593Smuzhiyun u16 hq_prod; 2097*4882a593Smuzhiyun u16 hq_cons; 2098*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 2099*4882a593Smuzhiyun u16 hq_cons; 2100*4882a593Smuzhiyun u16 hq_prod; 2101*4882a593Smuzhiyun #endif 2102*4882a593Smuzhiyun u32 agg_vars8; 2103*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC2 (0xFFFFFF<<0) 2104*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC2_SHIFT 0 2105*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC3 (0xFF<<24) 2106*4882a593Smuzhiyun #define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC3_SHIFT 24 2107*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 2108*4882a593Smuzhiyun u16 r2tq_prod; 2109*4882a593Smuzhiyun u16 sq_prod; 2110*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 2111*4882a593Smuzhiyun u16 sq_prod; 2112*4882a593Smuzhiyun u16 r2tq_prod; 2113*4882a593Smuzhiyun #endif 2114*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 2115*4882a593Smuzhiyun u8 agg_val3; 2116*4882a593Smuzhiyun u8 agg_val6; 2117*4882a593Smuzhiyun u8 agg_val5_th; 2118*4882a593Smuzhiyun u8 agg_val5; 2119*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 2120*4882a593Smuzhiyun u8 agg_val5; 2121*4882a593Smuzhiyun u8 agg_val5_th; 2122*4882a593Smuzhiyun u8 agg_val6; 2123*4882a593Smuzhiyun u8 agg_val3; 2124*4882a593Smuzhiyun #endif 2125*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 2126*4882a593Smuzhiyun u16 __agg_misc1; 2127*4882a593Smuzhiyun u16 agg_limit1; 2128*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 2129*4882a593Smuzhiyun u16 agg_limit1; 2130*4882a593Smuzhiyun u16 __agg_misc1; 2131*4882a593Smuzhiyun #endif 2132*4882a593Smuzhiyun u32 hq_cons_tcp_seq; 2133*4882a593Smuzhiyun u32 exp_stat_sn; 2134*4882a593Smuzhiyun u32 rst_seq_num; 2135*4882a593Smuzhiyun }; 2136*4882a593Smuzhiyun 2137*4882a593Smuzhiyun 2138*4882a593Smuzhiyun /* 2139*4882a593Smuzhiyun * The L5cm aggregative context of XStorm 2140*4882a593Smuzhiyun */ 2141*4882a593Smuzhiyun struct xstorm_l5cm_ag_context { 2142*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 2143*4882a593Smuzhiyun u16 agg_val1; 2144*4882a593Smuzhiyun u8 agg_vars1; 2145*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) 2146*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 2147*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) 2148*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 2149*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2) 2150*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2 2151*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3) 2152*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3 2153*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4) 2154*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4 2155*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_NAGLE_EN (0x1<<5) 2156*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_NAGLE_EN_SHIFT 5 2157*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6) 2158*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6 2159*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7) 2160*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7 2161*4882a593Smuzhiyun u8 state; 2162*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 2163*4882a593Smuzhiyun u8 state; 2164*4882a593Smuzhiyun u8 agg_vars1; 2165*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0) 2166*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0 2167*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1) 2168*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1 2169*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2) 2170*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2 2171*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3) 2172*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3 2173*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4) 2174*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4 2175*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_NAGLE_EN (0x1<<5) 2176*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_NAGLE_EN_SHIFT 5 2177*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6) 2178*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6 2179*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7) 2180*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7 2181*4882a593Smuzhiyun u16 agg_val1; 2182*4882a593Smuzhiyun #endif 2183*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 2184*4882a593Smuzhiyun u8 cdu_reserved; 2185*4882a593Smuzhiyun u8 __agg_vars4; 2186*4882a593Smuzhiyun u8 agg_vars3; 2187*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0) 2188*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0 2189*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_RX_TS_EN_CF (0x3<<6) 2190*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_RX_TS_EN_CF_SHIFT 6 2191*4882a593Smuzhiyun u8 agg_vars2; 2192*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AUX4_CF (0x3<<0) 2193*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_SHIFT 0 2194*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2) 2195*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2 2196*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX8_FLAG (0x1<<3) 2197*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX8_FLAG_SHIFT 3 2198*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX9_FLAG (0x1<<4) 2199*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX9_FLAG_SHIFT 4 2200*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE1 (0x3<<5) 2201*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE1_SHIFT 5 2202*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_EN (0x1<<7) 2203*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_EN_SHIFT 7 2204*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 2205*4882a593Smuzhiyun u8 agg_vars2; 2206*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AUX4_CF (0x3<<0) 2207*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_SHIFT 0 2208*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2) 2209*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2 2210*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX8_FLAG (0x1<<3) 2211*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX8_FLAG_SHIFT 3 2212*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX9_FLAG (0x1<<4) 2213*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX9_FLAG_SHIFT 4 2214*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE1 (0x3<<5) 2215*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE1_SHIFT 5 2216*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_EN (0x1<<7) 2217*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_EN_SHIFT 7 2218*4882a593Smuzhiyun u8 agg_vars3; 2219*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0) 2220*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0 2221*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_RX_TS_EN_CF (0x3<<6) 2222*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_RX_TS_EN_CF_SHIFT 6 2223*4882a593Smuzhiyun u8 __agg_vars4; 2224*4882a593Smuzhiyun u8 cdu_reserved; 2225*4882a593Smuzhiyun #endif 2226*4882a593Smuzhiyun u32 more_to_send; 2227*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 2228*4882a593Smuzhiyun u16 agg_vars5; 2229*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE5 (0x3<<0) 2230*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE5_SHIFT 0 2231*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2) 2232*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2 2233*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8) 2234*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8 2235*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE2 (0x3<<14) 2236*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE2_SHIFT 14 2237*4882a593Smuzhiyun u16 agg_val4_th; 2238*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 2239*4882a593Smuzhiyun u16 agg_val4_th; 2240*4882a593Smuzhiyun u16 agg_vars5; 2241*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE5 (0x3<<0) 2242*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE5_SHIFT 0 2243*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2) 2244*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2 2245*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8) 2246*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8 2247*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE2 (0x3<<14) 2248*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE2_SHIFT 14 2249*4882a593Smuzhiyun #endif 2250*4882a593Smuzhiyun struct xstorm_tcp_tcp_ag_context_section tcp; 2251*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 2252*4882a593Smuzhiyun u16 agg_vars7; 2253*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0) 2254*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0 2255*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX13_FLAG (0x1<<3) 2256*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX13_FLAG_SHIFT 3 2257*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_STORMS_SYNC_CF (0x3<<4) 2258*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_STORMS_SYNC_CF_SHIFT 4 2259*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE3 (0x3<<6) 2260*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE3_SHIFT 6 2261*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AUX1_CF (0x3<<8) 2262*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AUX1_CF_SHIFT 8 2263*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10) 2264*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10 2265*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX1_CF_EN (0x1<<11) 2266*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX1_CF_EN_SHIFT 11 2267*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX10_FLAG (0x1<<12) 2268*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX10_FLAG_SHIFT 12 2269*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX11_FLAG (0x1<<13) 2270*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX11_FLAG_SHIFT 13 2271*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX12_FLAG (0x1<<14) 2272*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX12_FLAG_SHIFT 14 2273*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_RX_WND_SCL_EN (0x1<<15) 2274*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_RX_WND_SCL_EN_SHIFT 15 2275*4882a593Smuzhiyun u8 agg_val3_th; 2276*4882a593Smuzhiyun u8 agg_vars6; 2277*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE6 (0x7<<0) 2278*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE6_SHIFT 0 2279*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE7 (0x7<<3) 2280*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE7_SHIFT 3 2281*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE4 (0x3<<6) 2282*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE4_SHIFT 6 2283*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 2284*4882a593Smuzhiyun u8 agg_vars6; 2285*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE6 (0x7<<0) 2286*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE6_SHIFT 0 2287*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE7 (0x7<<3) 2288*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE7_SHIFT 3 2289*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE4 (0x3<<6) 2290*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE4_SHIFT 6 2291*4882a593Smuzhiyun u8 agg_val3_th; 2292*4882a593Smuzhiyun u16 agg_vars7; 2293*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0) 2294*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0 2295*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX13_FLAG (0x1<<3) 2296*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX13_FLAG_SHIFT 3 2297*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_STORMS_SYNC_CF (0x3<<4) 2298*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_STORMS_SYNC_CF_SHIFT 4 2299*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE3 (0x3<<6) 2300*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE3_SHIFT 6 2301*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AUX1_CF (0x3<<8) 2302*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AUX1_CF_SHIFT 8 2303*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10) 2304*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10 2305*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX1_CF_EN (0x1<<11) 2306*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX1_CF_EN_SHIFT 11 2307*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX10_FLAG (0x1<<12) 2308*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX10_FLAG_SHIFT 12 2309*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX11_FLAG (0x1<<13) 2310*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX11_FLAG_SHIFT 13 2311*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX12_FLAG (0x1<<14) 2312*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_AUX12_FLAG_SHIFT 14 2313*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_RX_WND_SCL_EN (0x1<<15) 2314*4882a593Smuzhiyun #define __XSTORM_L5CM_AG_CONTEXT_RX_WND_SCL_EN_SHIFT 15 2315*4882a593Smuzhiyun #endif 2316*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 2317*4882a593Smuzhiyun u16 __agg_val11_th; 2318*4882a593Smuzhiyun u16 __gen_data; 2319*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 2320*4882a593Smuzhiyun u16 __gen_data; 2321*4882a593Smuzhiyun u16 __agg_val11_th; 2322*4882a593Smuzhiyun #endif 2323*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 2324*4882a593Smuzhiyun u8 __reserved1; 2325*4882a593Smuzhiyun u8 __agg_val6_th; 2326*4882a593Smuzhiyun u16 __agg_val9; 2327*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 2328*4882a593Smuzhiyun u16 __agg_val9; 2329*4882a593Smuzhiyun u8 __agg_val6_th; 2330*4882a593Smuzhiyun u8 __reserved1; 2331*4882a593Smuzhiyun #endif 2332*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 2333*4882a593Smuzhiyun u16 agg_val2_th; 2334*4882a593Smuzhiyun u16 agg_val2; 2335*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 2336*4882a593Smuzhiyun u16 agg_val2; 2337*4882a593Smuzhiyun u16 agg_val2_th; 2338*4882a593Smuzhiyun #endif 2339*4882a593Smuzhiyun u32 agg_vars8; 2340*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AGG_MISC2 (0xFFFFFF<<0) 2341*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AGG_MISC2_SHIFT 0 2342*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AGG_MISC3 (0xFF<<24) 2343*4882a593Smuzhiyun #define XSTORM_L5CM_AG_CONTEXT_AGG_MISC3_SHIFT 24 2344*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 2345*4882a593Smuzhiyun u16 agg_misc0; 2346*4882a593Smuzhiyun u16 agg_val4; 2347*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 2348*4882a593Smuzhiyun u16 agg_val4; 2349*4882a593Smuzhiyun u16 agg_misc0; 2350*4882a593Smuzhiyun #endif 2351*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 2352*4882a593Smuzhiyun u8 agg_val3; 2353*4882a593Smuzhiyun u8 agg_val6; 2354*4882a593Smuzhiyun u8 agg_val5_th; 2355*4882a593Smuzhiyun u8 agg_val5; 2356*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 2357*4882a593Smuzhiyun u8 agg_val5; 2358*4882a593Smuzhiyun u8 agg_val5_th; 2359*4882a593Smuzhiyun u8 agg_val6; 2360*4882a593Smuzhiyun u8 agg_val3; 2361*4882a593Smuzhiyun #endif 2362*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 2363*4882a593Smuzhiyun u16 __agg_misc1; 2364*4882a593Smuzhiyun u16 agg_limit1; 2365*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 2366*4882a593Smuzhiyun u16 agg_limit1; 2367*4882a593Smuzhiyun u16 __agg_misc1; 2368*4882a593Smuzhiyun #endif 2369*4882a593Smuzhiyun u32 completion_seq; 2370*4882a593Smuzhiyun u32 agg_misc4; 2371*4882a593Smuzhiyun u32 rst_seq_num; 2372*4882a593Smuzhiyun }; 2373*4882a593Smuzhiyun 2374*4882a593Smuzhiyun /* 2375*4882a593Smuzhiyun * ABTS info $$KEEP_ENDIANNESS$$ 2376*4882a593Smuzhiyun */ 2377*4882a593Smuzhiyun struct fcoe_abts_info { 2378*4882a593Smuzhiyun __le16 aborted_task_id; 2379*4882a593Smuzhiyun __le16 reserved0; 2380*4882a593Smuzhiyun __le32 reserved1; 2381*4882a593Smuzhiyun }; 2382*4882a593Smuzhiyun 2383*4882a593Smuzhiyun 2384*4882a593Smuzhiyun /* 2385*4882a593Smuzhiyun * Fixed size structure in order to plant it in Union structure 2386*4882a593Smuzhiyun * $$KEEP_ENDIANNESS$$ 2387*4882a593Smuzhiyun */ 2388*4882a593Smuzhiyun struct fcoe_abts_rsp_union { 2389*4882a593Smuzhiyun u8 r_ctl; 2390*4882a593Smuzhiyun u8 rsrv[3]; 2391*4882a593Smuzhiyun __le32 abts_rsp_payload[7]; 2392*4882a593Smuzhiyun }; 2393*4882a593Smuzhiyun 2394*4882a593Smuzhiyun 2395*4882a593Smuzhiyun /* 2396*4882a593Smuzhiyun * 4 regs size $$KEEP_ENDIANNESS$$ 2397*4882a593Smuzhiyun */ 2398*4882a593Smuzhiyun struct fcoe_bd_ctx { 2399*4882a593Smuzhiyun __le32 buf_addr_hi; 2400*4882a593Smuzhiyun __le32 buf_addr_lo; 2401*4882a593Smuzhiyun __le16 buf_len; 2402*4882a593Smuzhiyun __le16 rsrv0; 2403*4882a593Smuzhiyun __le16 flags; 2404*4882a593Smuzhiyun __le16 rsrv1; 2405*4882a593Smuzhiyun }; 2406*4882a593Smuzhiyun 2407*4882a593Smuzhiyun 2408*4882a593Smuzhiyun /* 2409*4882a593Smuzhiyun * FCoE cached sges context $$KEEP_ENDIANNESS$$ 2410*4882a593Smuzhiyun */ 2411*4882a593Smuzhiyun struct fcoe_cached_sge_ctx { 2412*4882a593Smuzhiyun struct regpair cur_buf_addr; 2413*4882a593Smuzhiyun __le16 cur_buf_rem; 2414*4882a593Smuzhiyun __le16 second_buf_rem; 2415*4882a593Smuzhiyun struct regpair second_buf_addr; 2416*4882a593Smuzhiyun }; 2417*4882a593Smuzhiyun 2418*4882a593Smuzhiyun 2419*4882a593Smuzhiyun /* 2420*4882a593Smuzhiyun * Cleanup info $$KEEP_ENDIANNESS$$ 2421*4882a593Smuzhiyun */ 2422*4882a593Smuzhiyun struct fcoe_cleanup_info { 2423*4882a593Smuzhiyun __le16 cleaned_task_id; 2424*4882a593Smuzhiyun __le16 rolled_tx_seq_cnt; 2425*4882a593Smuzhiyun __le32 rolled_tx_data_offset; 2426*4882a593Smuzhiyun }; 2427*4882a593Smuzhiyun 2428*4882a593Smuzhiyun 2429*4882a593Smuzhiyun /* 2430*4882a593Smuzhiyun * Fcp RSP flags $$KEEP_ENDIANNESS$$ 2431*4882a593Smuzhiyun */ 2432*4882a593Smuzhiyun struct fcoe_fcp_rsp_flags { 2433*4882a593Smuzhiyun u8 flags; 2434*4882a593Smuzhiyun #define FCOE_FCP_RSP_FLAGS_FCP_RSP_LEN_VALID (0x1<<0) 2435*4882a593Smuzhiyun #define FCOE_FCP_RSP_FLAGS_FCP_RSP_LEN_VALID_SHIFT 0 2436*4882a593Smuzhiyun #define FCOE_FCP_RSP_FLAGS_FCP_SNS_LEN_VALID (0x1<<1) 2437*4882a593Smuzhiyun #define FCOE_FCP_RSP_FLAGS_FCP_SNS_LEN_VALID_SHIFT 1 2438*4882a593Smuzhiyun #define FCOE_FCP_RSP_FLAGS_FCP_RESID_OVER (0x1<<2) 2439*4882a593Smuzhiyun #define FCOE_FCP_RSP_FLAGS_FCP_RESID_OVER_SHIFT 2 2440*4882a593Smuzhiyun #define FCOE_FCP_RSP_FLAGS_FCP_RESID_UNDER (0x1<<3) 2441*4882a593Smuzhiyun #define FCOE_FCP_RSP_FLAGS_FCP_RESID_UNDER_SHIFT 3 2442*4882a593Smuzhiyun #define FCOE_FCP_RSP_FLAGS_FCP_CONF_REQ (0x1<<4) 2443*4882a593Smuzhiyun #define FCOE_FCP_RSP_FLAGS_FCP_CONF_REQ_SHIFT 4 2444*4882a593Smuzhiyun #define FCOE_FCP_RSP_FLAGS_FCP_BIDI_FLAGS (0x7<<5) 2445*4882a593Smuzhiyun #define FCOE_FCP_RSP_FLAGS_FCP_BIDI_FLAGS_SHIFT 5 2446*4882a593Smuzhiyun }; 2447*4882a593Smuzhiyun 2448*4882a593Smuzhiyun /* 2449*4882a593Smuzhiyun * Fcp RSP payload $$KEEP_ENDIANNESS$$ 2450*4882a593Smuzhiyun */ 2451*4882a593Smuzhiyun struct fcoe_fcp_rsp_payload { 2452*4882a593Smuzhiyun struct regpair reserved0; 2453*4882a593Smuzhiyun __le32 fcp_resid; 2454*4882a593Smuzhiyun u8 scsi_status_code; 2455*4882a593Smuzhiyun struct fcoe_fcp_rsp_flags fcp_flags; 2456*4882a593Smuzhiyun __le16 retry_delay_timer; 2457*4882a593Smuzhiyun __le32 fcp_rsp_len; 2458*4882a593Smuzhiyun __le32 fcp_sns_len; 2459*4882a593Smuzhiyun }; 2460*4882a593Smuzhiyun 2461*4882a593Smuzhiyun /* 2462*4882a593Smuzhiyun * Fixed size structure in order to plant it in Union structure 2463*4882a593Smuzhiyun * $$KEEP_ENDIANNESS$$ 2464*4882a593Smuzhiyun */ 2465*4882a593Smuzhiyun struct fcoe_fcp_rsp_union { 2466*4882a593Smuzhiyun struct fcoe_fcp_rsp_payload payload; 2467*4882a593Smuzhiyun struct regpair reserved0; 2468*4882a593Smuzhiyun }; 2469*4882a593Smuzhiyun 2470*4882a593Smuzhiyun /* 2471*4882a593Smuzhiyun * FC header $$KEEP_ENDIANNESS$$ 2472*4882a593Smuzhiyun */ 2473*4882a593Smuzhiyun struct fcoe_fc_hdr { 2474*4882a593Smuzhiyun u8 s_id[3]; 2475*4882a593Smuzhiyun u8 cs_ctl; 2476*4882a593Smuzhiyun u8 d_id[3]; 2477*4882a593Smuzhiyun u8 r_ctl; 2478*4882a593Smuzhiyun __le16 seq_cnt; 2479*4882a593Smuzhiyun u8 df_ctl; 2480*4882a593Smuzhiyun u8 seq_id; 2481*4882a593Smuzhiyun u8 f_ctl[3]; 2482*4882a593Smuzhiyun u8 type; 2483*4882a593Smuzhiyun __le32 parameters; 2484*4882a593Smuzhiyun __le16 rx_id; 2485*4882a593Smuzhiyun __le16 ox_id; 2486*4882a593Smuzhiyun }; 2487*4882a593Smuzhiyun 2488*4882a593Smuzhiyun /* 2489*4882a593Smuzhiyun * FC header union $$KEEP_ENDIANNESS$$ 2490*4882a593Smuzhiyun */ 2491*4882a593Smuzhiyun struct fcoe_mp_rsp_union { 2492*4882a593Smuzhiyun struct fcoe_fc_hdr fc_hdr; 2493*4882a593Smuzhiyun __le32 mp_payload_len; 2494*4882a593Smuzhiyun __le32 rsrv; 2495*4882a593Smuzhiyun }; 2496*4882a593Smuzhiyun 2497*4882a593Smuzhiyun /* 2498*4882a593Smuzhiyun * Completion information $$KEEP_ENDIANNESS$$ 2499*4882a593Smuzhiyun */ 2500*4882a593Smuzhiyun union fcoe_comp_flow_info { 2501*4882a593Smuzhiyun struct fcoe_fcp_rsp_union fcp_rsp; 2502*4882a593Smuzhiyun struct fcoe_abts_rsp_union abts_rsp; 2503*4882a593Smuzhiyun struct fcoe_mp_rsp_union mp_rsp; 2504*4882a593Smuzhiyun __le32 opaque[8]; 2505*4882a593Smuzhiyun }; 2506*4882a593Smuzhiyun 2507*4882a593Smuzhiyun 2508*4882a593Smuzhiyun /* 2509*4882a593Smuzhiyun * External ABTS info $$KEEP_ENDIANNESS$$ 2510*4882a593Smuzhiyun */ 2511*4882a593Smuzhiyun struct fcoe_ext_abts_info { 2512*4882a593Smuzhiyun __le32 rsrv0[6]; 2513*4882a593Smuzhiyun struct fcoe_abts_info ctx; 2514*4882a593Smuzhiyun }; 2515*4882a593Smuzhiyun 2516*4882a593Smuzhiyun 2517*4882a593Smuzhiyun /* 2518*4882a593Smuzhiyun * External cleanup info $$KEEP_ENDIANNESS$$ 2519*4882a593Smuzhiyun */ 2520*4882a593Smuzhiyun struct fcoe_ext_cleanup_info { 2521*4882a593Smuzhiyun __le32 rsrv0[6]; 2522*4882a593Smuzhiyun struct fcoe_cleanup_info ctx; 2523*4882a593Smuzhiyun }; 2524*4882a593Smuzhiyun 2525*4882a593Smuzhiyun 2526*4882a593Smuzhiyun /* 2527*4882a593Smuzhiyun * Fcoe FW Tx sequence context $$KEEP_ENDIANNESS$$ 2528*4882a593Smuzhiyun */ 2529*4882a593Smuzhiyun struct fcoe_fw_tx_seq_ctx { 2530*4882a593Smuzhiyun __le32 data_offset; 2531*4882a593Smuzhiyun __le16 seq_cnt; 2532*4882a593Smuzhiyun __le16 rsrv0; 2533*4882a593Smuzhiyun }; 2534*4882a593Smuzhiyun 2535*4882a593Smuzhiyun /* 2536*4882a593Smuzhiyun * Fcoe external FW Tx sequence context $$KEEP_ENDIANNESS$$ 2537*4882a593Smuzhiyun */ 2538*4882a593Smuzhiyun struct fcoe_ext_fw_tx_seq_ctx { 2539*4882a593Smuzhiyun __le32 rsrv0[6]; 2540*4882a593Smuzhiyun struct fcoe_fw_tx_seq_ctx ctx; 2541*4882a593Smuzhiyun }; 2542*4882a593Smuzhiyun 2543*4882a593Smuzhiyun 2544*4882a593Smuzhiyun /* 2545*4882a593Smuzhiyun * FCoE multiple sges context $$KEEP_ENDIANNESS$$ 2546*4882a593Smuzhiyun */ 2547*4882a593Smuzhiyun struct fcoe_mul_sges_ctx { 2548*4882a593Smuzhiyun struct regpair cur_sge_addr; 2549*4882a593Smuzhiyun __le16 cur_sge_off; 2550*4882a593Smuzhiyun u8 cur_sge_idx; 2551*4882a593Smuzhiyun u8 sgl_size; 2552*4882a593Smuzhiyun }; 2553*4882a593Smuzhiyun 2554*4882a593Smuzhiyun /* 2555*4882a593Smuzhiyun * FCoE external multiple sges context $$KEEP_ENDIANNESS$$ 2556*4882a593Smuzhiyun */ 2557*4882a593Smuzhiyun struct fcoe_ext_mul_sges_ctx { 2558*4882a593Smuzhiyun struct fcoe_mul_sges_ctx mul_sgl; 2559*4882a593Smuzhiyun struct regpair rsrv0; 2560*4882a593Smuzhiyun }; 2561*4882a593Smuzhiyun 2562*4882a593Smuzhiyun 2563*4882a593Smuzhiyun /* 2564*4882a593Smuzhiyun * FCP CMD payload $$KEEP_ENDIANNESS$$ 2565*4882a593Smuzhiyun */ 2566*4882a593Smuzhiyun struct fcoe_fcp_cmd_payload { 2567*4882a593Smuzhiyun __le32 opaque[8]; 2568*4882a593Smuzhiyun }; 2569*4882a593Smuzhiyun 2570*4882a593Smuzhiyun 2571*4882a593Smuzhiyun 2572*4882a593Smuzhiyun 2573*4882a593Smuzhiyun 2574*4882a593Smuzhiyun /* 2575*4882a593Smuzhiyun * Fcp xfr rdy payload $$KEEP_ENDIANNESS$$ 2576*4882a593Smuzhiyun */ 2577*4882a593Smuzhiyun struct fcoe_fcp_xfr_rdy_payload { 2578*4882a593Smuzhiyun __le32 burst_len; 2579*4882a593Smuzhiyun __le32 data_ro; 2580*4882a593Smuzhiyun }; 2581*4882a593Smuzhiyun 2582*4882a593Smuzhiyun 2583*4882a593Smuzhiyun /* 2584*4882a593Smuzhiyun * FC frame $$KEEP_ENDIANNESS$$ 2585*4882a593Smuzhiyun */ 2586*4882a593Smuzhiyun struct fcoe_fc_frame { 2587*4882a593Smuzhiyun struct fcoe_fc_hdr fc_hdr; 2588*4882a593Smuzhiyun __le32 reserved0[2]; 2589*4882a593Smuzhiyun }; 2590*4882a593Smuzhiyun 2591*4882a593Smuzhiyun 2592*4882a593Smuzhiyun 2593*4882a593Smuzhiyun 2594*4882a593Smuzhiyun /* 2595*4882a593Smuzhiyun * FCoE KCQ CQE parameters $$KEEP_ENDIANNESS$$ 2596*4882a593Smuzhiyun */ 2597*4882a593Smuzhiyun union fcoe_kcqe_params { 2598*4882a593Smuzhiyun __le32 reserved0[4]; 2599*4882a593Smuzhiyun }; 2600*4882a593Smuzhiyun 2601*4882a593Smuzhiyun /* 2602*4882a593Smuzhiyun * FCoE KCQ CQE $$KEEP_ENDIANNESS$$ 2603*4882a593Smuzhiyun */ 2604*4882a593Smuzhiyun struct fcoe_kcqe { 2605*4882a593Smuzhiyun __le32 fcoe_conn_id; 2606*4882a593Smuzhiyun __le32 completion_status; 2607*4882a593Smuzhiyun __le32 fcoe_conn_context_id; 2608*4882a593Smuzhiyun union fcoe_kcqe_params params; 2609*4882a593Smuzhiyun __le16 qe_self_seq; 2610*4882a593Smuzhiyun u8 op_code; 2611*4882a593Smuzhiyun u8 flags; 2612*4882a593Smuzhiyun #define FCOE_KCQE_RESERVED0 (0x7<<0) 2613*4882a593Smuzhiyun #define FCOE_KCQE_RESERVED0_SHIFT 0 2614*4882a593Smuzhiyun #define FCOE_KCQE_RAMROD_COMPLETION (0x1<<3) 2615*4882a593Smuzhiyun #define FCOE_KCQE_RAMROD_COMPLETION_SHIFT 3 2616*4882a593Smuzhiyun #define FCOE_KCQE_LAYER_CODE (0x7<<4) 2617*4882a593Smuzhiyun #define FCOE_KCQE_LAYER_CODE_SHIFT 4 2618*4882a593Smuzhiyun #define FCOE_KCQE_LINKED_WITH_NEXT (0x1<<7) 2619*4882a593Smuzhiyun #define FCOE_KCQE_LINKED_WITH_NEXT_SHIFT 7 2620*4882a593Smuzhiyun }; 2621*4882a593Smuzhiyun 2622*4882a593Smuzhiyun 2623*4882a593Smuzhiyun 2624*4882a593Smuzhiyun /* 2625*4882a593Smuzhiyun * FCoE KWQE header $$KEEP_ENDIANNESS$$ 2626*4882a593Smuzhiyun */ 2627*4882a593Smuzhiyun struct fcoe_kwqe_header { 2628*4882a593Smuzhiyun u8 op_code; 2629*4882a593Smuzhiyun u8 flags; 2630*4882a593Smuzhiyun #define FCOE_KWQE_HEADER_RESERVED0 (0xF<<0) 2631*4882a593Smuzhiyun #define FCOE_KWQE_HEADER_RESERVED0_SHIFT 0 2632*4882a593Smuzhiyun #define FCOE_KWQE_HEADER_LAYER_CODE (0x7<<4) 2633*4882a593Smuzhiyun #define FCOE_KWQE_HEADER_LAYER_CODE_SHIFT 4 2634*4882a593Smuzhiyun #define FCOE_KWQE_HEADER_RESERVED1 (0x1<<7) 2635*4882a593Smuzhiyun #define FCOE_KWQE_HEADER_RESERVED1_SHIFT 7 2636*4882a593Smuzhiyun }; 2637*4882a593Smuzhiyun 2638*4882a593Smuzhiyun /* 2639*4882a593Smuzhiyun * FCoE firmware init request 1 $$KEEP_ENDIANNESS$$ 2640*4882a593Smuzhiyun */ 2641*4882a593Smuzhiyun struct fcoe_kwqe_init1 { 2642*4882a593Smuzhiyun __le16 num_tasks; 2643*4882a593Smuzhiyun struct fcoe_kwqe_header hdr; 2644*4882a593Smuzhiyun __le32 task_list_pbl_addr_lo; 2645*4882a593Smuzhiyun __le32 task_list_pbl_addr_hi; 2646*4882a593Smuzhiyun __le32 dummy_buffer_addr_lo; 2647*4882a593Smuzhiyun __le32 dummy_buffer_addr_hi; 2648*4882a593Smuzhiyun __le16 sq_num_wqes; 2649*4882a593Smuzhiyun __le16 rq_num_wqes; 2650*4882a593Smuzhiyun __le16 rq_buffer_log_size; 2651*4882a593Smuzhiyun __le16 cq_num_wqes; 2652*4882a593Smuzhiyun __le16 mtu; 2653*4882a593Smuzhiyun u8 num_sessions_log; 2654*4882a593Smuzhiyun u8 flags; 2655*4882a593Smuzhiyun #define FCOE_KWQE_INIT1_LOG_PAGE_SIZE (0xF<<0) 2656*4882a593Smuzhiyun #define FCOE_KWQE_INIT1_LOG_PAGE_SIZE_SHIFT 0 2657*4882a593Smuzhiyun #define FCOE_KWQE_INIT1_LOG_CACHED_PBES_PER_FUNC (0x7<<4) 2658*4882a593Smuzhiyun #define FCOE_KWQE_INIT1_LOG_CACHED_PBES_PER_FUNC_SHIFT 4 2659*4882a593Smuzhiyun #define FCOE_KWQE_INIT1_RESERVED1 (0x1<<7) 2660*4882a593Smuzhiyun #define FCOE_KWQE_INIT1_RESERVED1_SHIFT 7 2661*4882a593Smuzhiyun }; 2662*4882a593Smuzhiyun 2663*4882a593Smuzhiyun /* 2664*4882a593Smuzhiyun * FCoE firmware init request 2 $$KEEP_ENDIANNESS$$ 2665*4882a593Smuzhiyun */ 2666*4882a593Smuzhiyun struct fcoe_kwqe_init2 { 2667*4882a593Smuzhiyun u8 hsi_major_version; 2668*4882a593Smuzhiyun u8 hsi_minor_version; 2669*4882a593Smuzhiyun struct fcoe_kwqe_header hdr; 2670*4882a593Smuzhiyun __le32 hash_tbl_pbl_addr_lo; 2671*4882a593Smuzhiyun __le32 hash_tbl_pbl_addr_hi; 2672*4882a593Smuzhiyun __le32 t2_hash_tbl_addr_lo; 2673*4882a593Smuzhiyun __le32 t2_hash_tbl_addr_hi; 2674*4882a593Smuzhiyun __le32 t2_ptr_hash_tbl_addr_lo; 2675*4882a593Smuzhiyun __le32 t2_ptr_hash_tbl_addr_hi; 2676*4882a593Smuzhiyun __le32 free_list_count; 2677*4882a593Smuzhiyun }; 2678*4882a593Smuzhiyun 2679*4882a593Smuzhiyun /* 2680*4882a593Smuzhiyun * FCoE firmware init request 3 $$KEEP_ENDIANNESS$$ 2681*4882a593Smuzhiyun */ 2682*4882a593Smuzhiyun struct fcoe_kwqe_init3 { 2683*4882a593Smuzhiyun __le16 reserved0; 2684*4882a593Smuzhiyun struct fcoe_kwqe_header hdr; 2685*4882a593Smuzhiyun __le32 error_bit_map_lo; 2686*4882a593Smuzhiyun __le32 error_bit_map_hi; 2687*4882a593Smuzhiyun u8 perf_config; 2688*4882a593Smuzhiyun u8 reserved21[3]; 2689*4882a593Smuzhiyun __le32 reserved2[4]; 2690*4882a593Smuzhiyun }; 2691*4882a593Smuzhiyun 2692*4882a593Smuzhiyun /* 2693*4882a593Smuzhiyun * FCoE connection offload request 1 $$KEEP_ENDIANNESS$$ 2694*4882a593Smuzhiyun */ 2695*4882a593Smuzhiyun struct fcoe_kwqe_conn_offload1 { 2696*4882a593Smuzhiyun __le16 fcoe_conn_id; 2697*4882a593Smuzhiyun struct fcoe_kwqe_header hdr; 2698*4882a593Smuzhiyun __le32 sq_addr_lo; 2699*4882a593Smuzhiyun __le32 sq_addr_hi; 2700*4882a593Smuzhiyun __le32 rq_pbl_addr_lo; 2701*4882a593Smuzhiyun __le32 rq_pbl_addr_hi; 2702*4882a593Smuzhiyun __le32 rq_first_pbe_addr_lo; 2703*4882a593Smuzhiyun __le32 rq_first_pbe_addr_hi; 2704*4882a593Smuzhiyun __le16 rq_prod; 2705*4882a593Smuzhiyun __le16 reserved0; 2706*4882a593Smuzhiyun }; 2707*4882a593Smuzhiyun 2708*4882a593Smuzhiyun /* 2709*4882a593Smuzhiyun * FCoE connection offload request 2 $$KEEP_ENDIANNESS$$ 2710*4882a593Smuzhiyun */ 2711*4882a593Smuzhiyun struct fcoe_kwqe_conn_offload2 { 2712*4882a593Smuzhiyun __le16 tx_max_fc_pay_len; 2713*4882a593Smuzhiyun struct fcoe_kwqe_header hdr; 2714*4882a593Smuzhiyun __le32 cq_addr_lo; 2715*4882a593Smuzhiyun __le32 cq_addr_hi; 2716*4882a593Smuzhiyun __le32 xferq_addr_lo; 2717*4882a593Smuzhiyun __le32 xferq_addr_hi; 2718*4882a593Smuzhiyun __le32 conn_db_addr_lo; 2719*4882a593Smuzhiyun __le32 conn_db_addr_hi; 2720*4882a593Smuzhiyun __le32 reserved1; 2721*4882a593Smuzhiyun }; 2722*4882a593Smuzhiyun 2723*4882a593Smuzhiyun /* 2724*4882a593Smuzhiyun * FCoE connection offload request 3 $$KEEP_ENDIANNESS$$ 2725*4882a593Smuzhiyun */ 2726*4882a593Smuzhiyun struct fcoe_kwqe_conn_offload3 { 2727*4882a593Smuzhiyun __le16 vlan_tag; 2728*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_VLAN_ID (0xFFF<<0) 2729*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_VLAN_ID_SHIFT 0 2730*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_CFI (0x1<<12) 2731*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_CFI_SHIFT 12 2732*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_PRIORITY (0x7<<13) 2733*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_PRIORITY_SHIFT 13 2734*4882a593Smuzhiyun struct fcoe_kwqe_header hdr; 2735*4882a593Smuzhiyun u8 s_id[3]; 2736*4882a593Smuzhiyun u8 tx_max_conc_seqs_c3; 2737*4882a593Smuzhiyun u8 d_id[3]; 2738*4882a593Smuzhiyun u8 flags; 2739*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_MUL_N_PORT_IDS (0x1<<0) 2740*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_MUL_N_PORT_IDS_SHIFT 0 2741*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_E_D_TOV_RES (0x1<<1) 2742*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_E_D_TOV_RES_SHIFT 1 2743*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_CONT_INCR_SEQ_CNT (0x1<<2) 2744*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_CONT_INCR_SEQ_CNT_SHIFT 2 2745*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_CONF_REQ (0x1<<3) 2746*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_CONF_REQ_SHIFT 3 2747*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_REC_VALID (0x1<<4) 2748*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_REC_VALID_SHIFT 4 2749*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_C2_VALID (0x1<<5) 2750*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_C2_VALID_SHIFT 5 2751*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_ACK_0 (0x1<<6) 2752*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_ACK_0_SHIFT 6 2753*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_VLAN_FLAG (0x1<<7) 2754*4882a593Smuzhiyun #define FCOE_KWQE_CONN_OFFLOAD3_B_VLAN_FLAG_SHIFT 7 2755*4882a593Smuzhiyun __le32 reserved; 2756*4882a593Smuzhiyun __le32 confq_first_pbe_addr_lo; 2757*4882a593Smuzhiyun __le32 confq_first_pbe_addr_hi; 2758*4882a593Smuzhiyun __le16 tx_total_conc_seqs; 2759*4882a593Smuzhiyun __le16 rx_max_fc_pay_len; 2760*4882a593Smuzhiyun __le16 rx_total_conc_seqs; 2761*4882a593Smuzhiyun u8 rx_max_conc_seqs_c3; 2762*4882a593Smuzhiyun u8 rx_open_seqs_exch_c3; 2763*4882a593Smuzhiyun }; 2764*4882a593Smuzhiyun 2765*4882a593Smuzhiyun /* 2766*4882a593Smuzhiyun * FCoE connection offload request 4 $$KEEP_ENDIANNESS$$ 2767*4882a593Smuzhiyun */ 2768*4882a593Smuzhiyun struct fcoe_kwqe_conn_offload4 { 2769*4882a593Smuzhiyun u8 e_d_tov_timer_val; 2770*4882a593Smuzhiyun u8 reserved2; 2771*4882a593Smuzhiyun struct fcoe_kwqe_header hdr; 2772*4882a593Smuzhiyun u8 src_mac_addr_lo[2]; 2773*4882a593Smuzhiyun u8 src_mac_addr_mid[2]; 2774*4882a593Smuzhiyun u8 src_mac_addr_hi[2]; 2775*4882a593Smuzhiyun u8 dst_mac_addr_hi[2]; 2776*4882a593Smuzhiyun u8 dst_mac_addr_lo[2]; 2777*4882a593Smuzhiyun u8 dst_mac_addr_mid[2]; 2778*4882a593Smuzhiyun __le32 lcq_addr_lo; 2779*4882a593Smuzhiyun __le32 lcq_addr_hi; 2780*4882a593Smuzhiyun __le32 confq_pbl_base_addr_lo; 2781*4882a593Smuzhiyun __le32 confq_pbl_base_addr_hi; 2782*4882a593Smuzhiyun }; 2783*4882a593Smuzhiyun 2784*4882a593Smuzhiyun /* 2785*4882a593Smuzhiyun * FCoE connection enable request $$KEEP_ENDIANNESS$$ 2786*4882a593Smuzhiyun */ 2787*4882a593Smuzhiyun struct fcoe_kwqe_conn_enable_disable { 2788*4882a593Smuzhiyun __le16 reserved0; 2789*4882a593Smuzhiyun struct fcoe_kwqe_header hdr; 2790*4882a593Smuzhiyun u8 src_mac_addr_lo[2]; 2791*4882a593Smuzhiyun u8 src_mac_addr_mid[2]; 2792*4882a593Smuzhiyun u8 src_mac_addr_hi[2]; 2793*4882a593Smuzhiyun u16 vlan_tag; 2794*4882a593Smuzhiyun #define FCOE_KWQE_CONN_ENABLE_DISABLE_VLAN_ID (0xFFF<<0) 2795*4882a593Smuzhiyun #define FCOE_KWQE_CONN_ENABLE_DISABLE_VLAN_ID_SHIFT 0 2796*4882a593Smuzhiyun #define FCOE_KWQE_CONN_ENABLE_DISABLE_CFI (0x1<<12) 2797*4882a593Smuzhiyun #define FCOE_KWQE_CONN_ENABLE_DISABLE_CFI_SHIFT 12 2798*4882a593Smuzhiyun #define FCOE_KWQE_CONN_ENABLE_DISABLE_PRIORITY (0x7<<13) 2799*4882a593Smuzhiyun #define FCOE_KWQE_CONN_ENABLE_DISABLE_PRIORITY_SHIFT 13 2800*4882a593Smuzhiyun u8 dst_mac_addr_lo[2]; 2801*4882a593Smuzhiyun u8 dst_mac_addr_mid[2]; 2802*4882a593Smuzhiyun u8 dst_mac_addr_hi[2]; 2803*4882a593Smuzhiyun __le16 reserved1; 2804*4882a593Smuzhiyun u8 s_id[3]; 2805*4882a593Smuzhiyun u8 vlan_flag; 2806*4882a593Smuzhiyun u8 d_id[3]; 2807*4882a593Smuzhiyun u8 reserved3; 2808*4882a593Smuzhiyun __le32 context_id; 2809*4882a593Smuzhiyun __le32 conn_id; 2810*4882a593Smuzhiyun __le32 reserved4; 2811*4882a593Smuzhiyun }; 2812*4882a593Smuzhiyun 2813*4882a593Smuzhiyun /* 2814*4882a593Smuzhiyun * FCoE connection destroy request $$KEEP_ENDIANNESS$$ 2815*4882a593Smuzhiyun */ 2816*4882a593Smuzhiyun struct fcoe_kwqe_conn_destroy { 2817*4882a593Smuzhiyun __le16 reserved0; 2818*4882a593Smuzhiyun struct fcoe_kwqe_header hdr; 2819*4882a593Smuzhiyun __le32 context_id; 2820*4882a593Smuzhiyun __le32 conn_id; 2821*4882a593Smuzhiyun __le32 reserved1[5]; 2822*4882a593Smuzhiyun }; 2823*4882a593Smuzhiyun 2824*4882a593Smuzhiyun /* 2825*4882a593Smuzhiyun * FCoe destroy request $$KEEP_ENDIANNESS$$ 2826*4882a593Smuzhiyun */ 2827*4882a593Smuzhiyun struct fcoe_kwqe_destroy { 2828*4882a593Smuzhiyun __le16 reserved0; 2829*4882a593Smuzhiyun struct fcoe_kwqe_header hdr; 2830*4882a593Smuzhiyun __le32 reserved1[7]; 2831*4882a593Smuzhiyun }; 2832*4882a593Smuzhiyun 2833*4882a593Smuzhiyun /* 2834*4882a593Smuzhiyun * FCoe statistics request $$KEEP_ENDIANNESS$$ 2835*4882a593Smuzhiyun */ 2836*4882a593Smuzhiyun struct fcoe_kwqe_stat { 2837*4882a593Smuzhiyun __le16 reserved0; 2838*4882a593Smuzhiyun struct fcoe_kwqe_header hdr; 2839*4882a593Smuzhiyun __le32 stat_params_addr_lo; 2840*4882a593Smuzhiyun __le32 stat_params_addr_hi; 2841*4882a593Smuzhiyun __le32 reserved1[5]; 2842*4882a593Smuzhiyun }; 2843*4882a593Smuzhiyun 2844*4882a593Smuzhiyun /* 2845*4882a593Smuzhiyun * FCoE KWQ WQE $$KEEP_ENDIANNESS$$ 2846*4882a593Smuzhiyun */ 2847*4882a593Smuzhiyun union fcoe_kwqe { 2848*4882a593Smuzhiyun struct fcoe_kwqe_init1 init1; 2849*4882a593Smuzhiyun struct fcoe_kwqe_init2 init2; 2850*4882a593Smuzhiyun struct fcoe_kwqe_init3 init3; 2851*4882a593Smuzhiyun struct fcoe_kwqe_conn_offload1 conn_offload1; 2852*4882a593Smuzhiyun struct fcoe_kwqe_conn_offload2 conn_offload2; 2853*4882a593Smuzhiyun struct fcoe_kwqe_conn_offload3 conn_offload3; 2854*4882a593Smuzhiyun struct fcoe_kwqe_conn_offload4 conn_offload4; 2855*4882a593Smuzhiyun struct fcoe_kwqe_conn_enable_disable conn_enable_disable; 2856*4882a593Smuzhiyun struct fcoe_kwqe_conn_destroy conn_destroy; 2857*4882a593Smuzhiyun struct fcoe_kwqe_destroy destroy; 2858*4882a593Smuzhiyun struct fcoe_kwqe_stat statistics; 2859*4882a593Smuzhiyun }; 2860*4882a593Smuzhiyun 2861*4882a593Smuzhiyun 2862*4882a593Smuzhiyun 2863*4882a593Smuzhiyun 2864*4882a593Smuzhiyun 2865*4882a593Smuzhiyun 2866*4882a593Smuzhiyun 2867*4882a593Smuzhiyun 2868*4882a593Smuzhiyun 2869*4882a593Smuzhiyun 2870*4882a593Smuzhiyun 2871*4882a593Smuzhiyun 2872*4882a593Smuzhiyun 2873*4882a593Smuzhiyun 2874*4882a593Smuzhiyun 2875*4882a593Smuzhiyun 2876*4882a593Smuzhiyun /* 2877*4882a593Smuzhiyun * TX SGL context $$KEEP_ENDIANNESS$$ 2878*4882a593Smuzhiyun */ 2879*4882a593Smuzhiyun union fcoe_sgl_union_ctx { 2880*4882a593Smuzhiyun struct fcoe_cached_sge_ctx cached_sge; 2881*4882a593Smuzhiyun struct fcoe_ext_mul_sges_ctx sgl; 2882*4882a593Smuzhiyun __le32 opaque[5]; 2883*4882a593Smuzhiyun }; 2884*4882a593Smuzhiyun 2885*4882a593Smuzhiyun /* 2886*4882a593Smuzhiyun * Data-In/ELS/BLS information $$KEEP_ENDIANNESS$$ 2887*4882a593Smuzhiyun */ 2888*4882a593Smuzhiyun struct fcoe_read_flow_info { 2889*4882a593Smuzhiyun union fcoe_sgl_union_ctx sgl_ctx; 2890*4882a593Smuzhiyun __le32 rsrv0[3]; 2891*4882a593Smuzhiyun }; 2892*4882a593Smuzhiyun 2893*4882a593Smuzhiyun 2894*4882a593Smuzhiyun /* 2895*4882a593Smuzhiyun * Fcoe stat context $$KEEP_ENDIANNESS$$ 2896*4882a593Smuzhiyun */ 2897*4882a593Smuzhiyun struct fcoe_s_stat_ctx { 2898*4882a593Smuzhiyun u8 flags; 2899*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_ACTIVE (0x1<<0) 2900*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_ACTIVE_SHIFT 0 2901*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_ACK_ABORT_SEQ_COND (0x1<<1) 2902*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_ACK_ABORT_SEQ_COND_SHIFT 1 2903*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_ABTS_PERFORMED (0x1<<2) 2904*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_ABTS_PERFORMED_SHIFT 2 2905*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_SEQ_TIMEOUT (0x1<<3) 2906*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_SEQ_TIMEOUT_SHIFT 3 2907*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_P_RJT (0x1<<4) 2908*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_P_RJT_SHIFT 4 2909*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_ACK_EOFT (0x1<<5) 2910*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_ACK_EOFT_SHIFT 5 2911*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_RSRV1 (0x3<<6) 2912*4882a593Smuzhiyun #define FCOE_S_STAT_CTX_RSRV1_SHIFT 6 2913*4882a593Smuzhiyun }; 2914*4882a593Smuzhiyun 2915*4882a593Smuzhiyun /* 2916*4882a593Smuzhiyun * Fcoe rx seq context $$KEEP_ENDIANNESS$$ 2917*4882a593Smuzhiyun */ 2918*4882a593Smuzhiyun struct fcoe_rx_seq_ctx { 2919*4882a593Smuzhiyun u8 seq_id; 2920*4882a593Smuzhiyun struct fcoe_s_stat_ctx s_stat; 2921*4882a593Smuzhiyun __le16 seq_cnt; 2922*4882a593Smuzhiyun __le32 low_exp_ro; 2923*4882a593Smuzhiyun __le32 high_exp_ro; 2924*4882a593Smuzhiyun }; 2925*4882a593Smuzhiyun 2926*4882a593Smuzhiyun 2927*4882a593Smuzhiyun /* 2928*4882a593Smuzhiyun * Fcoe rx_wr union context $$KEEP_ENDIANNESS$$ 2929*4882a593Smuzhiyun */ 2930*4882a593Smuzhiyun union fcoe_rx_wr_union_ctx { 2931*4882a593Smuzhiyun struct fcoe_read_flow_info read_info; 2932*4882a593Smuzhiyun union fcoe_comp_flow_info comp_info; 2933*4882a593Smuzhiyun __le32 opaque[8]; 2934*4882a593Smuzhiyun }; 2935*4882a593Smuzhiyun 2936*4882a593Smuzhiyun 2937*4882a593Smuzhiyun 2938*4882a593Smuzhiyun /* 2939*4882a593Smuzhiyun * FCoE SQ element $$KEEP_ENDIANNESS$$ 2940*4882a593Smuzhiyun */ 2941*4882a593Smuzhiyun struct fcoe_sqe { 2942*4882a593Smuzhiyun __le16 wqe; 2943*4882a593Smuzhiyun #define FCOE_SQE_TASK_ID (0x7FFF<<0) 2944*4882a593Smuzhiyun #define FCOE_SQE_TASK_ID_SHIFT 0 2945*4882a593Smuzhiyun #define FCOE_SQE_TOGGLE_BIT (0x1<<15) 2946*4882a593Smuzhiyun #define FCOE_SQE_TOGGLE_BIT_SHIFT 15 2947*4882a593Smuzhiyun }; 2948*4882a593Smuzhiyun 2949*4882a593Smuzhiyun 2950*4882a593Smuzhiyun 2951*4882a593Smuzhiyun /* 2952*4882a593Smuzhiyun * 14 regs $$KEEP_ENDIANNESS$$ 2953*4882a593Smuzhiyun */ 2954*4882a593Smuzhiyun struct fcoe_tce_tx_only { 2955*4882a593Smuzhiyun union fcoe_sgl_union_ctx sgl_ctx; 2956*4882a593Smuzhiyun __le32 rsrv0; 2957*4882a593Smuzhiyun }; 2958*4882a593Smuzhiyun 2959*4882a593Smuzhiyun /* 2960*4882a593Smuzhiyun * 32 bytes (8 regs) used for TX only purposes $$KEEP_ENDIANNESS$$ 2961*4882a593Smuzhiyun */ 2962*4882a593Smuzhiyun union fcoe_tx_wr_rx_rd_union_ctx { 2963*4882a593Smuzhiyun struct fcoe_fc_frame tx_frame; 2964*4882a593Smuzhiyun struct fcoe_fcp_cmd_payload fcp_cmd; 2965*4882a593Smuzhiyun struct fcoe_ext_cleanup_info cleanup; 2966*4882a593Smuzhiyun struct fcoe_ext_abts_info abts; 2967*4882a593Smuzhiyun struct fcoe_ext_fw_tx_seq_ctx tx_seq; 2968*4882a593Smuzhiyun __le32 opaque[8]; 2969*4882a593Smuzhiyun }; 2970*4882a593Smuzhiyun 2971*4882a593Smuzhiyun /* 2972*4882a593Smuzhiyun * tce_tx_wr_rx_rd_const $$KEEP_ENDIANNESS$$ 2973*4882a593Smuzhiyun */ 2974*4882a593Smuzhiyun struct fcoe_tce_tx_wr_rx_rd_const { 2975*4882a593Smuzhiyun u8 init_flags; 2976*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_TASK_TYPE (0x7<<0) 2977*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_TASK_TYPE_SHIFT 0 2978*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_DEV_TYPE (0x1<<3) 2979*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_DEV_TYPE_SHIFT 3 2980*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_CLASS_TYPE (0x1<<4) 2981*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_CLASS_TYPE_SHIFT 4 2982*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_CACHED_SGE (0x3<<5) 2983*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_CACHED_SGE_SHIFT 5 2984*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_SUPPORT_REC_TOV (0x1<<7) 2985*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_SUPPORT_REC_TOV_SHIFT 7 2986*4882a593Smuzhiyun u8 tx_flags; 2987*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_TX_VALID (0x1<<0) 2988*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_TX_VALID_SHIFT 0 2989*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_TX_STATE (0xF<<1) 2990*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_TX_STATE_SHIFT 1 2991*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_RSRV1 (0x1<<5) 2992*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_RSRV1_SHIFT 5 2993*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_TX_SEQ_INIT (0x1<<6) 2994*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_TX_SEQ_INIT_SHIFT 6 2995*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_TX_COMP_TRNS (0x1<<7) 2996*4882a593Smuzhiyun #define FCOE_TCE_TX_WR_RX_RD_CONST_TX_COMP_TRNS_SHIFT 7 2997*4882a593Smuzhiyun __le16 rsrv3; 2998*4882a593Smuzhiyun __le32 verify_tx_seq; 2999*4882a593Smuzhiyun }; 3000*4882a593Smuzhiyun 3001*4882a593Smuzhiyun /* 3002*4882a593Smuzhiyun * tce_tx_wr_rx_rd $$KEEP_ENDIANNESS$$ 3003*4882a593Smuzhiyun */ 3004*4882a593Smuzhiyun struct fcoe_tce_tx_wr_rx_rd { 3005*4882a593Smuzhiyun union fcoe_tx_wr_rx_rd_union_ctx union_ctx; 3006*4882a593Smuzhiyun struct fcoe_tce_tx_wr_rx_rd_const const_ctx; 3007*4882a593Smuzhiyun }; 3008*4882a593Smuzhiyun 3009*4882a593Smuzhiyun /* 3010*4882a593Smuzhiyun * tce_rx_wr_tx_rd_const $$KEEP_ENDIANNESS$$ 3011*4882a593Smuzhiyun */ 3012*4882a593Smuzhiyun struct fcoe_tce_rx_wr_tx_rd_const { 3013*4882a593Smuzhiyun __le32 data_2_trns; 3014*4882a593Smuzhiyun __le32 init_flags; 3015*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_CONST_CID (0xFFFFFF<<0) 3016*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_CONST_CID_SHIFT 0 3017*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_CONST_RSRV0 (0xFF<<24) 3018*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_CONST_RSRV0_SHIFT 24 3019*4882a593Smuzhiyun }; 3020*4882a593Smuzhiyun 3021*4882a593Smuzhiyun /* 3022*4882a593Smuzhiyun * tce_rx_wr_tx_rd_var $$KEEP_ENDIANNESS$$ 3023*4882a593Smuzhiyun */ 3024*4882a593Smuzhiyun struct fcoe_tce_rx_wr_tx_rd_var { 3025*4882a593Smuzhiyun __le16 rx_flags; 3026*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_RSRV1 (0xF<<0) 3027*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_RSRV1_SHIFT 0 3028*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_NUM_RQ_WQE (0x7<<4) 3029*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_NUM_RQ_WQE_SHIFT 4 3030*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_CONF_REQ (0x1<<7) 3031*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_CONF_REQ_SHIFT 7 3032*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_RX_STATE (0xF<<8) 3033*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_RX_STATE_SHIFT 8 3034*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_EXP_FIRST_FRAME (0x1<<12) 3035*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_EXP_FIRST_FRAME_SHIFT 12 3036*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_RX_SEQ_INIT (0x1<<13) 3037*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_RX_SEQ_INIT_SHIFT 13 3038*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_RSRV2 (0x1<<14) 3039*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_RSRV2_SHIFT 14 3040*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_RX_VALID (0x1<<15) 3041*4882a593Smuzhiyun #define FCOE_TCE_RX_WR_TX_RD_VAR_RX_VALID_SHIFT 15 3042*4882a593Smuzhiyun __le16 rx_id; 3043*4882a593Smuzhiyun struct fcoe_fcp_xfr_rdy_payload fcp_xfr_rdy; 3044*4882a593Smuzhiyun }; 3045*4882a593Smuzhiyun 3046*4882a593Smuzhiyun /* 3047*4882a593Smuzhiyun * tce_rx_wr_tx_rd $$KEEP_ENDIANNESS$$ 3048*4882a593Smuzhiyun */ 3049*4882a593Smuzhiyun struct fcoe_tce_rx_wr_tx_rd { 3050*4882a593Smuzhiyun struct fcoe_tce_rx_wr_tx_rd_const const_ctx; 3051*4882a593Smuzhiyun struct fcoe_tce_rx_wr_tx_rd_var var_ctx; 3052*4882a593Smuzhiyun }; 3053*4882a593Smuzhiyun 3054*4882a593Smuzhiyun /* 3055*4882a593Smuzhiyun * tce_rx_only $$KEEP_ENDIANNESS$$ 3056*4882a593Smuzhiyun */ 3057*4882a593Smuzhiyun struct fcoe_tce_rx_only { 3058*4882a593Smuzhiyun struct fcoe_rx_seq_ctx rx_seq_ctx; 3059*4882a593Smuzhiyun union fcoe_rx_wr_union_ctx union_ctx; 3060*4882a593Smuzhiyun }; 3061*4882a593Smuzhiyun 3062*4882a593Smuzhiyun /* 3063*4882a593Smuzhiyun * task_ctx_entry $$KEEP_ENDIANNESS$$ 3064*4882a593Smuzhiyun */ 3065*4882a593Smuzhiyun struct fcoe_task_ctx_entry { 3066*4882a593Smuzhiyun struct fcoe_tce_tx_only txwr_only; 3067*4882a593Smuzhiyun struct fcoe_tce_tx_wr_rx_rd txwr_rxrd; 3068*4882a593Smuzhiyun struct fcoe_tce_rx_wr_tx_rd rxwr_txrd; 3069*4882a593Smuzhiyun struct fcoe_tce_rx_only rxwr_only; 3070*4882a593Smuzhiyun }; 3071*4882a593Smuzhiyun 3072*4882a593Smuzhiyun 3073*4882a593Smuzhiyun 3074*4882a593Smuzhiyun 3075*4882a593Smuzhiyun 3076*4882a593Smuzhiyun 3077*4882a593Smuzhiyun 3078*4882a593Smuzhiyun 3079*4882a593Smuzhiyun 3080*4882a593Smuzhiyun 3081*4882a593Smuzhiyun /* 3082*4882a593Smuzhiyun * FCoE XFRQ element $$KEEP_ENDIANNESS$$ 3083*4882a593Smuzhiyun */ 3084*4882a593Smuzhiyun struct fcoe_xfrqe { 3085*4882a593Smuzhiyun __le16 wqe; 3086*4882a593Smuzhiyun #define FCOE_XFRQE_TASK_ID (0x7FFF<<0) 3087*4882a593Smuzhiyun #define FCOE_XFRQE_TASK_ID_SHIFT 0 3088*4882a593Smuzhiyun #define FCOE_XFRQE_TOGGLE_BIT (0x1<<15) 3089*4882a593Smuzhiyun #define FCOE_XFRQE_TOGGLE_BIT_SHIFT 15 3090*4882a593Smuzhiyun }; 3091*4882a593Smuzhiyun 3092*4882a593Smuzhiyun 3093*4882a593Smuzhiyun /* 3094*4882a593Smuzhiyun * Cached SGEs $$KEEP_ENDIANNESS$$ 3095*4882a593Smuzhiyun */ 3096*4882a593Smuzhiyun struct common_fcoe_sgl { 3097*4882a593Smuzhiyun struct fcoe_bd_ctx sge[3]; 3098*4882a593Smuzhiyun }; 3099*4882a593Smuzhiyun 3100*4882a593Smuzhiyun 3101*4882a593Smuzhiyun /* 3102*4882a593Smuzhiyun * FCoE SQ\XFRQ element 3103*4882a593Smuzhiyun */ 3104*4882a593Smuzhiyun struct fcoe_cached_wqe { 3105*4882a593Smuzhiyun struct fcoe_sqe sqe; 3106*4882a593Smuzhiyun struct fcoe_xfrqe xfrqe; 3107*4882a593Smuzhiyun }; 3108*4882a593Smuzhiyun 3109*4882a593Smuzhiyun 3110*4882a593Smuzhiyun /* 3111*4882a593Smuzhiyun * FCoE connection enable\disable params passed by driver to FW in FCoE enable 3112*4882a593Smuzhiyun * ramrod $$KEEP_ENDIANNESS$$ 3113*4882a593Smuzhiyun */ 3114*4882a593Smuzhiyun struct fcoe_conn_enable_disable_ramrod_params { 3115*4882a593Smuzhiyun struct fcoe_kwqe_conn_enable_disable enable_disable_kwqe; 3116*4882a593Smuzhiyun }; 3117*4882a593Smuzhiyun 3118*4882a593Smuzhiyun 3119*4882a593Smuzhiyun /* 3120*4882a593Smuzhiyun * FCoE connection offload params passed by driver to FW in FCoE offload ramrod 3121*4882a593Smuzhiyun * $$KEEP_ENDIANNESS$$ 3122*4882a593Smuzhiyun */ 3123*4882a593Smuzhiyun struct fcoe_conn_offload_ramrod_params { 3124*4882a593Smuzhiyun struct fcoe_kwqe_conn_offload1 offload_kwqe1; 3125*4882a593Smuzhiyun struct fcoe_kwqe_conn_offload2 offload_kwqe2; 3126*4882a593Smuzhiyun struct fcoe_kwqe_conn_offload3 offload_kwqe3; 3127*4882a593Smuzhiyun struct fcoe_kwqe_conn_offload4 offload_kwqe4; 3128*4882a593Smuzhiyun }; 3129*4882a593Smuzhiyun 3130*4882a593Smuzhiyun 3131*4882a593Smuzhiyun struct ustorm_fcoe_mng_ctx { 3132*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3133*4882a593Smuzhiyun u8 mid_seq_proc_flag; 3134*4882a593Smuzhiyun u8 tce_in_cam_flag; 3135*4882a593Smuzhiyun u8 tce_on_ior_flag; 3136*4882a593Smuzhiyun u8 en_cached_tce_flag; 3137*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3138*4882a593Smuzhiyun u8 en_cached_tce_flag; 3139*4882a593Smuzhiyun u8 tce_on_ior_flag; 3140*4882a593Smuzhiyun u8 tce_in_cam_flag; 3141*4882a593Smuzhiyun u8 mid_seq_proc_flag; 3142*4882a593Smuzhiyun #endif 3143*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3144*4882a593Smuzhiyun u8 tce_cam_addr; 3145*4882a593Smuzhiyun u8 cached_conn_flag; 3146*4882a593Smuzhiyun u16 rsrv0; 3147*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3148*4882a593Smuzhiyun u16 rsrv0; 3149*4882a593Smuzhiyun u8 cached_conn_flag; 3150*4882a593Smuzhiyun u8 tce_cam_addr; 3151*4882a593Smuzhiyun #endif 3152*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3153*4882a593Smuzhiyun u16 dma_tce_ram_addr; 3154*4882a593Smuzhiyun u16 tce_ram_addr; 3155*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3156*4882a593Smuzhiyun u16 tce_ram_addr; 3157*4882a593Smuzhiyun u16 dma_tce_ram_addr; 3158*4882a593Smuzhiyun #endif 3159*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3160*4882a593Smuzhiyun u16 ox_id; 3161*4882a593Smuzhiyun u16 wr_done_seq; 3162*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3163*4882a593Smuzhiyun u16 wr_done_seq; 3164*4882a593Smuzhiyun u16 ox_id; 3165*4882a593Smuzhiyun #endif 3166*4882a593Smuzhiyun struct regpair task_addr; 3167*4882a593Smuzhiyun }; 3168*4882a593Smuzhiyun 3169*4882a593Smuzhiyun /* 3170*4882a593Smuzhiyun * Parameters initialized during offloaded according to FLOGI/PLOGI/PRLI and 3171*4882a593Smuzhiyun * used in FCoE context section 3172*4882a593Smuzhiyun */ 3173*4882a593Smuzhiyun struct ustorm_fcoe_params { 3174*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3175*4882a593Smuzhiyun u16 fcoe_conn_id; 3176*4882a593Smuzhiyun u16 flags; 3177*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_MUL_N_PORT_IDS (0x1<<0) 3178*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_MUL_N_PORT_IDS_SHIFT 0 3179*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_E_D_TOV_RES (0x1<<1) 3180*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_E_D_TOV_RES_SHIFT 1 3181*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_CONT_INCR_SEQ_CNT (0x1<<2) 3182*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_CONT_INCR_SEQ_CNT_SHIFT 2 3183*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_CONF_REQ (0x1<<3) 3184*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_CONF_REQ_SHIFT 3 3185*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_REC_VALID (0x1<<4) 3186*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_REC_VALID_SHIFT 4 3187*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_CQ_TOGGLE_BIT (0x1<<5) 3188*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_CQ_TOGGLE_BIT_SHIFT 5 3189*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_XFRQ_TOGGLE_BIT (0x1<<6) 3190*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_XFRQ_TOGGLE_BIT_SHIFT 6 3191*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_RSRV0 (0x1FF<<7) 3192*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_RSRV0_SHIFT 7 3193*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3194*4882a593Smuzhiyun u16 flags; 3195*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_MUL_N_PORT_IDS (0x1<<0) 3196*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_MUL_N_PORT_IDS_SHIFT 0 3197*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_E_D_TOV_RES (0x1<<1) 3198*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_E_D_TOV_RES_SHIFT 1 3199*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_CONT_INCR_SEQ_CNT (0x1<<2) 3200*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_CONT_INCR_SEQ_CNT_SHIFT 2 3201*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_CONF_REQ (0x1<<3) 3202*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_CONF_REQ_SHIFT 3 3203*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_REC_VALID (0x1<<4) 3204*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_REC_VALID_SHIFT 4 3205*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_CQ_TOGGLE_BIT (0x1<<5) 3206*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_CQ_TOGGLE_BIT_SHIFT 5 3207*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_XFRQ_TOGGLE_BIT (0x1<<6) 3208*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_B_XFRQ_TOGGLE_BIT_SHIFT 6 3209*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_RSRV0 (0x1FF<<7) 3210*4882a593Smuzhiyun #define USTORM_FCOE_PARAMS_RSRV0_SHIFT 7 3211*4882a593Smuzhiyun u16 fcoe_conn_id; 3212*4882a593Smuzhiyun #endif 3213*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3214*4882a593Smuzhiyun u8 hc_csdm_byte_en; 3215*4882a593Smuzhiyun u8 func_id; 3216*4882a593Smuzhiyun u8 port_id; 3217*4882a593Smuzhiyun u8 vnic_id; 3218*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3219*4882a593Smuzhiyun u8 vnic_id; 3220*4882a593Smuzhiyun u8 port_id; 3221*4882a593Smuzhiyun u8 func_id; 3222*4882a593Smuzhiyun u8 hc_csdm_byte_en; 3223*4882a593Smuzhiyun #endif 3224*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3225*4882a593Smuzhiyun u16 rx_total_conc_seqs; 3226*4882a593Smuzhiyun u16 rx_max_fc_pay_len; 3227*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3228*4882a593Smuzhiyun u16 rx_max_fc_pay_len; 3229*4882a593Smuzhiyun u16 rx_total_conc_seqs; 3230*4882a593Smuzhiyun #endif 3231*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3232*4882a593Smuzhiyun u8 task_pbe_idx_off; 3233*4882a593Smuzhiyun u8 task_in_page_log_size; 3234*4882a593Smuzhiyun u16 rx_max_conc_seqs; 3235*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3236*4882a593Smuzhiyun u16 rx_max_conc_seqs; 3237*4882a593Smuzhiyun u8 task_in_page_log_size; 3238*4882a593Smuzhiyun u8 task_pbe_idx_off; 3239*4882a593Smuzhiyun #endif 3240*4882a593Smuzhiyun }; 3241*4882a593Smuzhiyun 3242*4882a593Smuzhiyun /* 3243*4882a593Smuzhiyun * FCoE 16-bits index structure 3244*4882a593Smuzhiyun */ 3245*4882a593Smuzhiyun struct fcoe_idx16_fields { 3246*4882a593Smuzhiyun u16 fields; 3247*4882a593Smuzhiyun #define FCOE_IDX16_FIELDS_IDX (0x7FFF<<0) 3248*4882a593Smuzhiyun #define FCOE_IDX16_FIELDS_IDX_SHIFT 0 3249*4882a593Smuzhiyun #define FCOE_IDX16_FIELDS_MSB (0x1<<15) 3250*4882a593Smuzhiyun #define FCOE_IDX16_FIELDS_MSB_SHIFT 15 3251*4882a593Smuzhiyun }; 3252*4882a593Smuzhiyun 3253*4882a593Smuzhiyun /* 3254*4882a593Smuzhiyun * FCoE 16-bits index union 3255*4882a593Smuzhiyun */ 3256*4882a593Smuzhiyun union fcoe_idx16_field_union { 3257*4882a593Smuzhiyun struct fcoe_idx16_fields fields; 3258*4882a593Smuzhiyun u16 val; 3259*4882a593Smuzhiyun }; 3260*4882a593Smuzhiyun 3261*4882a593Smuzhiyun /* 3262*4882a593Smuzhiyun * Parameters required for placement according to SGL 3263*4882a593Smuzhiyun */ 3264*4882a593Smuzhiyun struct ustorm_fcoe_data_place_mng { 3265*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3266*4882a593Smuzhiyun u16 sge_off; 3267*4882a593Smuzhiyun u8 num_sges; 3268*4882a593Smuzhiyun u8 sge_idx; 3269*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3270*4882a593Smuzhiyun u8 sge_idx; 3271*4882a593Smuzhiyun u8 num_sges; 3272*4882a593Smuzhiyun u16 sge_off; 3273*4882a593Smuzhiyun #endif 3274*4882a593Smuzhiyun }; 3275*4882a593Smuzhiyun 3276*4882a593Smuzhiyun /* 3277*4882a593Smuzhiyun * Parameters required for placement according to SGL 3278*4882a593Smuzhiyun */ 3279*4882a593Smuzhiyun struct ustorm_fcoe_data_place { 3280*4882a593Smuzhiyun struct ustorm_fcoe_data_place_mng cached_mng; 3281*4882a593Smuzhiyun struct fcoe_bd_ctx cached_sge[2]; 3282*4882a593Smuzhiyun }; 3283*4882a593Smuzhiyun 3284*4882a593Smuzhiyun /* 3285*4882a593Smuzhiyun * TX processing shall write and RX processing shall read from this section 3286*4882a593Smuzhiyun */ 3287*4882a593Smuzhiyun union fcoe_u_tce_tx_wr_rx_rd_union { 3288*4882a593Smuzhiyun struct fcoe_abts_info abts; 3289*4882a593Smuzhiyun struct fcoe_cleanup_info cleanup; 3290*4882a593Smuzhiyun struct fcoe_fw_tx_seq_ctx tx_seq_ctx; 3291*4882a593Smuzhiyun u32 opaque[2]; 3292*4882a593Smuzhiyun }; 3293*4882a593Smuzhiyun 3294*4882a593Smuzhiyun /* 3295*4882a593Smuzhiyun * TX processing shall write and RX processing shall read from this section 3296*4882a593Smuzhiyun */ 3297*4882a593Smuzhiyun struct fcoe_u_tce_tx_wr_rx_rd { 3298*4882a593Smuzhiyun union fcoe_u_tce_tx_wr_rx_rd_union union_ctx; 3299*4882a593Smuzhiyun struct fcoe_tce_tx_wr_rx_rd_const const_ctx; 3300*4882a593Smuzhiyun }; 3301*4882a593Smuzhiyun 3302*4882a593Smuzhiyun struct ustorm_fcoe_tce { 3303*4882a593Smuzhiyun struct fcoe_u_tce_tx_wr_rx_rd txwr_rxrd; 3304*4882a593Smuzhiyun struct fcoe_tce_rx_wr_tx_rd rxwr_txrd; 3305*4882a593Smuzhiyun struct fcoe_tce_rx_only rxwr; 3306*4882a593Smuzhiyun }; 3307*4882a593Smuzhiyun 3308*4882a593Smuzhiyun struct ustorm_fcoe_cache_ctx { 3309*4882a593Smuzhiyun u32 rsrv0; 3310*4882a593Smuzhiyun struct ustorm_fcoe_data_place data_place; 3311*4882a593Smuzhiyun struct ustorm_fcoe_tce tce; 3312*4882a593Smuzhiyun }; 3313*4882a593Smuzhiyun 3314*4882a593Smuzhiyun /* 3315*4882a593Smuzhiyun * Ustorm FCoE Storm Context 3316*4882a593Smuzhiyun */ 3317*4882a593Smuzhiyun struct ustorm_fcoe_st_context { 3318*4882a593Smuzhiyun struct ustorm_fcoe_mng_ctx mng_ctx; 3319*4882a593Smuzhiyun struct ustorm_fcoe_params fcoe_params; 3320*4882a593Smuzhiyun struct regpair cq_base_addr; 3321*4882a593Smuzhiyun struct regpair rq_pbl_base; 3322*4882a593Smuzhiyun struct regpair rq_cur_page_addr; 3323*4882a593Smuzhiyun struct regpair confq_pbl_base_addr; 3324*4882a593Smuzhiyun struct regpair conn_db_base; 3325*4882a593Smuzhiyun struct regpair xfrq_base_addr; 3326*4882a593Smuzhiyun struct regpair lcq_base_addr; 3327*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3328*4882a593Smuzhiyun union fcoe_idx16_field_union rq_cons; 3329*4882a593Smuzhiyun union fcoe_idx16_field_union rq_prod; 3330*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3331*4882a593Smuzhiyun union fcoe_idx16_field_union rq_prod; 3332*4882a593Smuzhiyun union fcoe_idx16_field_union rq_cons; 3333*4882a593Smuzhiyun #endif 3334*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3335*4882a593Smuzhiyun u16 xfrq_prod; 3336*4882a593Smuzhiyun u16 cq_cons; 3337*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3338*4882a593Smuzhiyun u16 cq_cons; 3339*4882a593Smuzhiyun u16 xfrq_prod; 3340*4882a593Smuzhiyun #endif 3341*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3342*4882a593Smuzhiyun u16 lcq_cons; 3343*4882a593Smuzhiyun u16 hc_cram_address; 3344*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3345*4882a593Smuzhiyun u16 hc_cram_address; 3346*4882a593Smuzhiyun u16 lcq_cons; 3347*4882a593Smuzhiyun #endif 3348*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3349*4882a593Smuzhiyun u16 sq_xfrq_lcq_confq_size; 3350*4882a593Smuzhiyun u16 confq_prod; 3351*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3352*4882a593Smuzhiyun u16 confq_prod; 3353*4882a593Smuzhiyun u16 sq_xfrq_lcq_confq_size; 3354*4882a593Smuzhiyun #endif 3355*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3356*4882a593Smuzhiyun u8 hc_csdm_agg_int; 3357*4882a593Smuzhiyun u8 rsrv2; 3358*4882a593Smuzhiyun u8 available_rqes; 3359*4882a593Smuzhiyun u8 sp_q_flush_cnt; 3360*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3361*4882a593Smuzhiyun u8 sp_q_flush_cnt; 3362*4882a593Smuzhiyun u8 available_rqes; 3363*4882a593Smuzhiyun u8 rsrv2; 3364*4882a593Smuzhiyun u8 hc_csdm_agg_int; 3365*4882a593Smuzhiyun #endif 3366*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3367*4882a593Smuzhiyun u16 num_pend_tasks; 3368*4882a593Smuzhiyun u16 pbf_ack_ram_addr; 3369*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3370*4882a593Smuzhiyun u16 pbf_ack_ram_addr; 3371*4882a593Smuzhiyun u16 num_pend_tasks; 3372*4882a593Smuzhiyun #endif 3373*4882a593Smuzhiyun struct ustorm_fcoe_cache_ctx cache_ctx; 3374*4882a593Smuzhiyun }; 3375*4882a593Smuzhiyun 3376*4882a593Smuzhiyun /* 3377*4882a593Smuzhiyun * The FCoE non-aggregative context of Tstorm 3378*4882a593Smuzhiyun */ 3379*4882a593Smuzhiyun struct tstorm_fcoe_st_context { 3380*4882a593Smuzhiyun struct regpair reserved0; 3381*4882a593Smuzhiyun struct regpair reserved1; 3382*4882a593Smuzhiyun }; 3383*4882a593Smuzhiyun 3384*4882a593Smuzhiyun /* 3385*4882a593Smuzhiyun * Ethernet context section 3386*4882a593Smuzhiyun */ 3387*4882a593Smuzhiyun struct xstorm_fcoe_eth_context_section { 3388*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3389*4882a593Smuzhiyun u8 remote_addr_4; 3390*4882a593Smuzhiyun u8 remote_addr_5; 3391*4882a593Smuzhiyun u8 local_addr_0; 3392*4882a593Smuzhiyun u8 local_addr_1; 3393*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3394*4882a593Smuzhiyun u8 local_addr_1; 3395*4882a593Smuzhiyun u8 local_addr_0; 3396*4882a593Smuzhiyun u8 remote_addr_5; 3397*4882a593Smuzhiyun u8 remote_addr_4; 3398*4882a593Smuzhiyun #endif 3399*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3400*4882a593Smuzhiyun u8 remote_addr_0; 3401*4882a593Smuzhiyun u8 remote_addr_1; 3402*4882a593Smuzhiyun u8 remote_addr_2; 3403*4882a593Smuzhiyun u8 remote_addr_3; 3404*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3405*4882a593Smuzhiyun u8 remote_addr_3; 3406*4882a593Smuzhiyun u8 remote_addr_2; 3407*4882a593Smuzhiyun u8 remote_addr_1; 3408*4882a593Smuzhiyun u8 remote_addr_0; 3409*4882a593Smuzhiyun #endif 3410*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3411*4882a593Smuzhiyun u16 reserved_vlan_type; 3412*4882a593Smuzhiyun u16 params; 3413*4882a593Smuzhiyun #define XSTORM_FCOE_ETH_CONTEXT_SECTION_VLAN_ID (0xFFF<<0) 3414*4882a593Smuzhiyun #define XSTORM_FCOE_ETH_CONTEXT_SECTION_VLAN_ID_SHIFT 0 3415*4882a593Smuzhiyun #define XSTORM_FCOE_ETH_CONTEXT_SECTION_CFI (0x1<<12) 3416*4882a593Smuzhiyun #define XSTORM_FCOE_ETH_CONTEXT_SECTION_CFI_SHIFT 12 3417*4882a593Smuzhiyun #define XSTORM_FCOE_ETH_CONTEXT_SECTION_PRIORITY (0x7<<13) 3418*4882a593Smuzhiyun #define XSTORM_FCOE_ETH_CONTEXT_SECTION_PRIORITY_SHIFT 13 3419*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3420*4882a593Smuzhiyun u16 params; 3421*4882a593Smuzhiyun #define XSTORM_FCOE_ETH_CONTEXT_SECTION_VLAN_ID (0xFFF<<0) 3422*4882a593Smuzhiyun #define XSTORM_FCOE_ETH_CONTEXT_SECTION_VLAN_ID_SHIFT 0 3423*4882a593Smuzhiyun #define XSTORM_FCOE_ETH_CONTEXT_SECTION_CFI (0x1<<12) 3424*4882a593Smuzhiyun #define XSTORM_FCOE_ETH_CONTEXT_SECTION_CFI_SHIFT 12 3425*4882a593Smuzhiyun #define XSTORM_FCOE_ETH_CONTEXT_SECTION_PRIORITY (0x7<<13) 3426*4882a593Smuzhiyun #define XSTORM_FCOE_ETH_CONTEXT_SECTION_PRIORITY_SHIFT 13 3427*4882a593Smuzhiyun u16 reserved_vlan_type; 3428*4882a593Smuzhiyun #endif 3429*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3430*4882a593Smuzhiyun u8 local_addr_2; 3431*4882a593Smuzhiyun u8 local_addr_3; 3432*4882a593Smuzhiyun u8 local_addr_4; 3433*4882a593Smuzhiyun u8 local_addr_5; 3434*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3435*4882a593Smuzhiyun u8 local_addr_5; 3436*4882a593Smuzhiyun u8 local_addr_4; 3437*4882a593Smuzhiyun u8 local_addr_3; 3438*4882a593Smuzhiyun u8 local_addr_2; 3439*4882a593Smuzhiyun #endif 3440*4882a593Smuzhiyun }; 3441*4882a593Smuzhiyun 3442*4882a593Smuzhiyun /* 3443*4882a593Smuzhiyun * Flags used in FCoE context section - 1 byte 3444*4882a593Smuzhiyun */ 3445*4882a593Smuzhiyun struct xstorm_fcoe_context_flags { 3446*4882a593Smuzhiyun u8 flags; 3447*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_PROC_Q (0x3<<0) 3448*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_PROC_Q_SHIFT 0 3449*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_MID_SEQ (0x1<<2) 3450*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_MID_SEQ_SHIFT 2 3451*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_BLOCK_SQ (0x1<<3) 3452*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_BLOCK_SQ_SHIFT 3 3453*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_REC_SUPPORT (0x1<<4) 3454*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_REC_SUPPORT_SHIFT 4 3455*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_SQ_TOGGLE (0x1<<5) 3456*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_SQ_TOGGLE_SHIFT 5 3457*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_XFRQ_TOGGLE (0x1<<6) 3458*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_XFRQ_TOGGLE_SHIFT 6 3459*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_VNTAG_VLAN (0x1<<7) 3460*4882a593Smuzhiyun #define XSTORM_FCOE_CONTEXT_FLAGS_B_VNTAG_VLAN_SHIFT 7 3461*4882a593Smuzhiyun }; 3462*4882a593Smuzhiyun 3463*4882a593Smuzhiyun struct xstorm_fcoe_tce { 3464*4882a593Smuzhiyun struct fcoe_tce_tx_only txwr; 3465*4882a593Smuzhiyun struct fcoe_tce_tx_wr_rx_rd txwr_rxrd; 3466*4882a593Smuzhiyun }; 3467*4882a593Smuzhiyun 3468*4882a593Smuzhiyun /* 3469*4882a593Smuzhiyun * FCP_DATA parameters required for transmission 3470*4882a593Smuzhiyun */ 3471*4882a593Smuzhiyun struct xstorm_fcoe_fcp_data { 3472*4882a593Smuzhiyun u32 io_rem; 3473*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3474*4882a593Smuzhiyun u16 cached_sge_off; 3475*4882a593Smuzhiyun u8 cached_num_sges; 3476*4882a593Smuzhiyun u8 cached_sge_idx; 3477*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3478*4882a593Smuzhiyun u8 cached_sge_idx; 3479*4882a593Smuzhiyun u8 cached_num_sges; 3480*4882a593Smuzhiyun u16 cached_sge_off; 3481*4882a593Smuzhiyun #endif 3482*4882a593Smuzhiyun u32 buf_addr_hi_0; 3483*4882a593Smuzhiyun u32 buf_addr_lo_0; 3484*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3485*4882a593Smuzhiyun u16 num_of_pending_tasks; 3486*4882a593Smuzhiyun u16 buf_len_0; 3487*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3488*4882a593Smuzhiyun u16 buf_len_0; 3489*4882a593Smuzhiyun u16 num_of_pending_tasks; 3490*4882a593Smuzhiyun #endif 3491*4882a593Smuzhiyun u32 buf_addr_hi_1; 3492*4882a593Smuzhiyun u32 buf_addr_lo_1; 3493*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3494*4882a593Smuzhiyun u16 task_pbe_idx_off; 3495*4882a593Smuzhiyun u16 buf_len_1; 3496*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3497*4882a593Smuzhiyun u16 buf_len_1; 3498*4882a593Smuzhiyun u16 task_pbe_idx_off; 3499*4882a593Smuzhiyun #endif 3500*4882a593Smuzhiyun u32 buf_addr_hi_2; 3501*4882a593Smuzhiyun u32 buf_addr_lo_2; 3502*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3503*4882a593Smuzhiyun u16 ox_id; 3504*4882a593Smuzhiyun u16 buf_len_2; 3505*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3506*4882a593Smuzhiyun u16 buf_len_2; 3507*4882a593Smuzhiyun u16 ox_id; 3508*4882a593Smuzhiyun #endif 3509*4882a593Smuzhiyun }; 3510*4882a593Smuzhiyun 3511*4882a593Smuzhiyun /* 3512*4882a593Smuzhiyun * vlan configuration 3513*4882a593Smuzhiyun */ 3514*4882a593Smuzhiyun struct xstorm_fcoe_vlan_conf { 3515*4882a593Smuzhiyun u8 vlan_conf; 3516*4882a593Smuzhiyun #define XSTORM_FCOE_VLAN_CONF_PRIORITY (0x7<<0) 3517*4882a593Smuzhiyun #define XSTORM_FCOE_VLAN_CONF_PRIORITY_SHIFT 0 3518*4882a593Smuzhiyun #define XSTORM_FCOE_VLAN_CONF_INNER_VLAN_FLAG (0x1<<3) 3519*4882a593Smuzhiyun #define XSTORM_FCOE_VLAN_CONF_INNER_VLAN_FLAG_SHIFT 3 3520*4882a593Smuzhiyun #define XSTORM_FCOE_VLAN_CONF_RESERVED (0xF<<4) 3521*4882a593Smuzhiyun #define XSTORM_FCOE_VLAN_CONF_RESERVED_SHIFT 4 3522*4882a593Smuzhiyun }; 3523*4882a593Smuzhiyun 3524*4882a593Smuzhiyun /* 3525*4882a593Smuzhiyun * FCoE 16-bits vlan structure 3526*4882a593Smuzhiyun */ 3527*4882a593Smuzhiyun struct fcoe_vlan_fields { 3528*4882a593Smuzhiyun u16 fields; 3529*4882a593Smuzhiyun #define FCOE_VLAN_FIELDS_VID (0xFFF<<0) 3530*4882a593Smuzhiyun #define FCOE_VLAN_FIELDS_VID_SHIFT 0 3531*4882a593Smuzhiyun #define FCOE_VLAN_FIELDS_CLI (0x1<<12) 3532*4882a593Smuzhiyun #define FCOE_VLAN_FIELDS_CLI_SHIFT 12 3533*4882a593Smuzhiyun #define FCOE_VLAN_FIELDS_PRI (0x7<<13) 3534*4882a593Smuzhiyun #define FCOE_VLAN_FIELDS_PRI_SHIFT 13 3535*4882a593Smuzhiyun }; 3536*4882a593Smuzhiyun 3537*4882a593Smuzhiyun /* 3538*4882a593Smuzhiyun * FCoE 16-bits vlan union 3539*4882a593Smuzhiyun */ 3540*4882a593Smuzhiyun union fcoe_vlan_field_union { 3541*4882a593Smuzhiyun struct fcoe_vlan_fields fields; 3542*4882a593Smuzhiyun u16 val; 3543*4882a593Smuzhiyun }; 3544*4882a593Smuzhiyun 3545*4882a593Smuzhiyun /* 3546*4882a593Smuzhiyun * FCoE 16-bits vlan, vif union 3547*4882a593Smuzhiyun */ 3548*4882a593Smuzhiyun union fcoe_vlan_vif_field_union { 3549*4882a593Smuzhiyun union fcoe_vlan_field_union vlan; 3550*4882a593Smuzhiyun u16 vif; 3551*4882a593Smuzhiyun }; 3552*4882a593Smuzhiyun 3553*4882a593Smuzhiyun /* 3554*4882a593Smuzhiyun * FCoE context section 3555*4882a593Smuzhiyun */ 3556*4882a593Smuzhiyun struct xstorm_fcoe_context_section { 3557*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3558*4882a593Smuzhiyun u8 cs_ctl; 3559*4882a593Smuzhiyun u8 s_id[3]; 3560*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3561*4882a593Smuzhiyun u8 s_id[3]; 3562*4882a593Smuzhiyun u8 cs_ctl; 3563*4882a593Smuzhiyun #endif 3564*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3565*4882a593Smuzhiyun u8 rctl; 3566*4882a593Smuzhiyun u8 d_id[3]; 3567*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3568*4882a593Smuzhiyun u8 d_id[3]; 3569*4882a593Smuzhiyun u8 rctl; 3570*4882a593Smuzhiyun #endif 3571*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3572*4882a593Smuzhiyun u16 sq_xfrq_lcq_confq_size; 3573*4882a593Smuzhiyun u16 tx_max_fc_pay_len; 3574*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3575*4882a593Smuzhiyun u16 tx_max_fc_pay_len; 3576*4882a593Smuzhiyun u16 sq_xfrq_lcq_confq_size; 3577*4882a593Smuzhiyun #endif 3578*4882a593Smuzhiyun u32 lcq_prod; 3579*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3580*4882a593Smuzhiyun u8 port_id; 3581*4882a593Smuzhiyun u8 func_id; 3582*4882a593Smuzhiyun u8 seq_id; 3583*4882a593Smuzhiyun struct xstorm_fcoe_context_flags tx_flags; 3584*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3585*4882a593Smuzhiyun struct xstorm_fcoe_context_flags tx_flags; 3586*4882a593Smuzhiyun u8 seq_id; 3587*4882a593Smuzhiyun u8 func_id; 3588*4882a593Smuzhiyun u8 port_id; 3589*4882a593Smuzhiyun #endif 3590*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3591*4882a593Smuzhiyun u16 mtu; 3592*4882a593Smuzhiyun u8 func_mode; 3593*4882a593Smuzhiyun u8 vnic_id; 3594*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3595*4882a593Smuzhiyun u8 vnic_id; 3596*4882a593Smuzhiyun u8 func_mode; 3597*4882a593Smuzhiyun u16 mtu; 3598*4882a593Smuzhiyun #endif 3599*4882a593Smuzhiyun struct regpair confq_curr_page_addr; 3600*4882a593Smuzhiyun struct fcoe_cached_wqe cached_wqe[8]; 3601*4882a593Smuzhiyun struct regpair lcq_base_addr; 3602*4882a593Smuzhiyun struct xstorm_fcoe_tce tce; 3603*4882a593Smuzhiyun struct xstorm_fcoe_fcp_data fcp_data; 3604*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3605*4882a593Smuzhiyun u8 tx_max_conc_seqs_c3; 3606*4882a593Smuzhiyun u8 vlan_flag; 3607*4882a593Smuzhiyun u8 dcb_val; 3608*4882a593Smuzhiyun u8 data_pb_cmd_size; 3609*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3610*4882a593Smuzhiyun u8 data_pb_cmd_size; 3611*4882a593Smuzhiyun u8 dcb_val; 3612*4882a593Smuzhiyun u8 vlan_flag; 3613*4882a593Smuzhiyun u8 tx_max_conc_seqs_c3; 3614*4882a593Smuzhiyun #endif 3615*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3616*4882a593Smuzhiyun u16 fcoe_tx_stat_params_ram_addr; 3617*4882a593Smuzhiyun u16 fcoe_tx_fc_seq_ram_addr; 3618*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3619*4882a593Smuzhiyun u16 fcoe_tx_fc_seq_ram_addr; 3620*4882a593Smuzhiyun u16 fcoe_tx_stat_params_ram_addr; 3621*4882a593Smuzhiyun #endif 3622*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3623*4882a593Smuzhiyun u8 fcp_cmd_line_credit; 3624*4882a593Smuzhiyun u8 eth_hdr_size; 3625*4882a593Smuzhiyun u16 pbf_addr; 3626*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3627*4882a593Smuzhiyun u16 pbf_addr; 3628*4882a593Smuzhiyun u8 eth_hdr_size; 3629*4882a593Smuzhiyun u8 fcp_cmd_line_credit; 3630*4882a593Smuzhiyun #endif 3631*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3632*4882a593Smuzhiyun union fcoe_vlan_vif_field_union multi_func_val; 3633*4882a593Smuzhiyun u8 page_log_size; 3634*4882a593Smuzhiyun struct xstorm_fcoe_vlan_conf orig_vlan_conf; 3635*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3636*4882a593Smuzhiyun struct xstorm_fcoe_vlan_conf orig_vlan_conf; 3637*4882a593Smuzhiyun u8 page_log_size; 3638*4882a593Smuzhiyun union fcoe_vlan_vif_field_union multi_func_val; 3639*4882a593Smuzhiyun #endif 3640*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3641*4882a593Smuzhiyun u16 fcp_cmd_frame_size; 3642*4882a593Smuzhiyun u16 pbf_addr_ff; 3643*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3644*4882a593Smuzhiyun u16 pbf_addr_ff; 3645*4882a593Smuzhiyun u16 fcp_cmd_frame_size; 3646*4882a593Smuzhiyun #endif 3647*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3648*4882a593Smuzhiyun u8 vlan_num; 3649*4882a593Smuzhiyun u8 cos; 3650*4882a593Smuzhiyun u8 cache_xfrq_cons; 3651*4882a593Smuzhiyun u8 cache_sq_cons; 3652*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3653*4882a593Smuzhiyun u8 cache_sq_cons; 3654*4882a593Smuzhiyun u8 cache_xfrq_cons; 3655*4882a593Smuzhiyun u8 cos; 3656*4882a593Smuzhiyun u8 vlan_num; 3657*4882a593Smuzhiyun #endif 3658*4882a593Smuzhiyun u32 verify_tx_seq; 3659*4882a593Smuzhiyun }; 3660*4882a593Smuzhiyun 3661*4882a593Smuzhiyun /* 3662*4882a593Smuzhiyun * Xstorm FCoE Storm Context 3663*4882a593Smuzhiyun */ 3664*4882a593Smuzhiyun struct xstorm_fcoe_st_context { 3665*4882a593Smuzhiyun struct xstorm_fcoe_eth_context_section eth; 3666*4882a593Smuzhiyun struct xstorm_fcoe_context_section fcoe; 3667*4882a593Smuzhiyun }; 3668*4882a593Smuzhiyun 3669*4882a593Smuzhiyun /* 3670*4882a593Smuzhiyun * Fcoe connection context 3671*4882a593Smuzhiyun */ 3672*4882a593Smuzhiyun struct fcoe_context { 3673*4882a593Smuzhiyun struct ustorm_fcoe_st_context ustorm_st_context; 3674*4882a593Smuzhiyun struct tstorm_fcoe_st_context tstorm_st_context; 3675*4882a593Smuzhiyun struct xstorm_fcoe_ag_context xstorm_ag_context; 3676*4882a593Smuzhiyun struct tstorm_fcoe_ag_context tstorm_ag_context; 3677*4882a593Smuzhiyun struct ustorm_fcoe_ag_context ustorm_ag_context; 3678*4882a593Smuzhiyun struct timers_block_context timers_context; 3679*4882a593Smuzhiyun struct xstorm_fcoe_st_context xstorm_st_context; 3680*4882a593Smuzhiyun }; 3681*4882a593Smuzhiyun 3682*4882a593Smuzhiyun /* 3683*4882a593Smuzhiyun * FCoE init params passed by driver to FW in FCoE init ramrod 3684*4882a593Smuzhiyun * $$KEEP_ENDIANNESS$$ 3685*4882a593Smuzhiyun */ 3686*4882a593Smuzhiyun struct fcoe_init_ramrod_params { 3687*4882a593Smuzhiyun struct fcoe_kwqe_init1 init_kwqe1; 3688*4882a593Smuzhiyun struct fcoe_kwqe_init2 init_kwqe2; 3689*4882a593Smuzhiyun struct fcoe_kwqe_init3 init_kwqe3; 3690*4882a593Smuzhiyun struct regpair eq_pbl_base; 3691*4882a593Smuzhiyun __le32 eq_pbl_size; 3692*4882a593Smuzhiyun __le32 reserved2; 3693*4882a593Smuzhiyun __le16 eq_prod; 3694*4882a593Smuzhiyun __le16 sb_num; 3695*4882a593Smuzhiyun u8 sb_id; 3696*4882a593Smuzhiyun u8 reserved0; 3697*4882a593Smuzhiyun __le16 reserved1; 3698*4882a593Smuzhiyun }; 3699*4882a593Smuzhiyun 3700*4882a593Smuzhiyun /* 3701*4882a593Smuzhiyun * FCoE statistics params buffer passed by driver to FW in FCoE statistics 3702*4882a593Smuzhiyun * ramrod $$KEEP_ENDIANNESS$$ 3703*4882a593Smuzhiyun */ 3704*4882a593Smuzhiyun struct fcoe_stat_ramrod_params { 3705*4882a593Smuzhiyun struct fcoe_kwqe_stat stat_kwqe; 3706*4882a593Smuzhiyun }; 3707*4882a593Smuzhiyun 3708*4882a593Smuzhiyun /* 3709*4882a593Smuzhiyun * CQ DB CQ producer and pending completion counter 3710*4882a593Smuzhiyun */ 3711*4882a593Smuzhiyun struct iscsi_cq_db_prod_pnd_cmpltn_cnt { 3712*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3713*4882a593Smuzhiyun u16 cntr; 3714*4882a593Smuzhiyun u16 prod; 3715*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3716*4882a593Smuzhiyun u16 prod; 3717*4882a593Smuzhiyun u16 cntr; 3718*4882a593Smuzhiyun #endif 3719*4882a593Smuzhiyun }; 3720*4882a593Smuzhiyun 3721*4882a593Smuzhiyun /* 3722*4882a593Smuzhiyun * CQ DB pending completion ITT array 3723*4882a593Smuzhiyun */ 3724*4882a593Smuzhiyun struct iscsi_cq_db_prod_pnd_cmpltn_cnt_arr { 3725*4882a593Smuzhiyun struct iscsi_cq_db_prod_pnd_cmpltn_cnt prod_pend_comp[8]; 3726*4882a593Smuzhiyun }; 3727*4882a593Smuzhiyun 3728*4882a593Smuzhiyun /* 3729*4882a593Smuzhiyun * Cstorm CQ sequence to notify array, updated by driver 3730*4882a593Smuzhiyun */ 3731*4882a593Smuzhiyun struct iscsi_cq_db_sqn_2_notify_arr { 3732*4882a593Smuzhiyun u16 sqn[8]; 3733*4882a593Smuzhiyun }; 3734*4882a593Smuzhiyun 3735*4882a593Smuzhiyun /* 3736*4882a593Smuzhiyun * Cstorm iSCSI Storm Context 3737*4882a593Smuzhiyun */ 3738*4882a593Smuzhiyun struct cstorm_iscsi_st_context { 3739*4882a593Smuzhiyun struct iscsi_cq_db_prod_pnd_cmpltn_cnt_arr cq_c_prod_pend_comp_ctr_arr; 3740*4882a593Smuzhiyun struct iscsi_cq_db_sqn_2_notify_arr cq_c_prod_sqn_arr; 3741*4882a593Smuzhiyun struct iscsi_cq_db_sqn_2_notify_arr cq_c_sqn_2_notify_arr; 3742*4882a593Smuzhiyun struct regpair hq_pbl_base; 3743*4882a593Smuzhiyun struct regpair hq_curr_pbe; 3744*4882a593Smuzhiyun struct regpair task_pbl_base; 3745*4882a593Smuzhiyun struct regpair cq_db_base; 3746*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3747*4882a593Smuzhiyun u16 hq_bd_itt; 3748*4882a593Smuzhiyun u16 iscsi_conn_id; 3749*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3750*4882a593Smuzhiyun u16 iscsi_conn_id; 3751*4882a593Smuzhiyun u16 hq_bd_itt; 3752*4882a593Smuzhiyun #endif 3753*4882a593Smuzhiyun u32 hq_bd_data_segment_len; 3754*4882a593Smuzhiyun u32 hq_bd_buffer_offset; 3755*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3756*4882a593Smuzhiyun u8 rsrv; 3757*4882a593Smuzhiyun u8 cq_proc_en_bit_map; 3758*4882a593Smuzhiyun u8 cq_pend_comp_itt_valid_bit_map; 3759*4882a593Smuzhiyun u8 hq_bd_opcode; 3760*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3761*4882a593Smuzhiyun u8 hq_bd_opcode; 3762*4882a593Smuzhiyun u8 cq_pend_comp_itt_valid_bit_map; 3763*4882a593Smuzhiyun u8 cq_proc_en_bit_map; 3764*4882a593Smuzhiyun u8 rsrv; 3765*4882a593Smuzhiyun #endif 3766*4882a593Smuzhiyun u32 hq_tcp_seq; 3767*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3768*4882a593Smuzhiyun u16 flags; 3769*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN (0x1<<0) 3770*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN_SHIFT 0 3771*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN (0x1<<1) 3772*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN_SHIFT 1 3773*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID (0x1<<2) 3774*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID_SHIFT 2 3775*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG (0x1<<3) 3776*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG_SHIFT 3 3777*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK (0x1<<4) 3778*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK_SHIFT 4 3779*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV (0x7FF<<5) 3780*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV_SHIFT 5 3781*4882a593Smuzhiyun u16 hq_cons; 3782*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3783*4882a593Smuzhiyun u16 hq_cons; 3784*4882a593Smuzhiyun u16 flags; 3785*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN (0x1<<0) 3786*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN_SHIFT 0 3787*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN (0x1<<1) 3788*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN_SHIFT 1 3789*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID (0x1<<2) 3790*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID_SHIFT 2 3791*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG (0x1<<3) 3792*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG_SHIFT 3 3793*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK (0x1<<4) 3794*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK_SHIFT 4 3795*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV (0x7FF<<5) 3796*4882a593Smuzhiyun #define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV_SHIFT 5 3797*4882a593Smuzhiyun #endif 3798*4882a593Smuzhiyun struct regpair rsrv1; 3799*4882a593Smuzhiyun }; 3800*4882a593Smuzhiyun 3801*4882a593Smuzhiyun 3802*4882a593Smuzhiyun /* 3803*4882a593Smuzhiyun * SCSI read/write SQ WQE 3804*4882a593Smuzhiyun */ 3805*4882a593Smuzhiyun struct iscsi_cmd_pdu_hdr_little_endian { 3806*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3807*4882a593Smuzhiyun u8 opcode; 3808*4882a593Smuzhiyun u8 op_attr; 3809*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_ATTRIBUTES (0x7<<0) 3810*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_ATTRIBUTES_SHIFT 0 3811*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_RSRV1 (0x3<<3) 3812*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 3 3813*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_WRITE_FLAG (0x1<<5) 3814*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_WRITE_FLAG_SHIFT 5 3815*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_READ_FLAG (0x1<<6) 3816*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_READ_FLAG_SHIFT 6 3817*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG (0x1<<7) 3818*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG_SHIFT 7 3819*4882a593Smuzhiyun u16 rsrv0; 3820*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3821*4882a593Smuzhiyun u16 rsrv0; 3822*4882a593Smuzhiyun u8 op_attr; 3823*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_ATTRIBUTES (0x7<<0) 3824*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_ATTRIBUTES_SHIFT 0 3825*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_RSRV1 (0x3<<3) 3826*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 3 3827*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_WRITE_FLAG (0x1<<5) 3828*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_WRITE_FLAG_SHIFT 5 3829*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_READ_FLAG (0x1<<6) 3830*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_READ_FLAG_SHIFT 6 3831*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG (0x1<<7) 3832*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG_SHIFT 7 3833*4882a593Smuzhiyun u8 opcode; 3834*4882a593Smuzhiyun #endif 3835*4882a593Smuzhiyun u32 data_fields; 3836*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0) 3837*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0 3838*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24) 3839*4882a593Smuzhiyun #define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24 3840*4882a593Smuzhiyun struct regpair lun; 3841*4882a593Smuzhiyun u32 itt; 3842*4882a593Smuzhiyun u32 expected_data_transfer_length; 3843*4882a593Smuzhiyun u32 cmd_sn; 3844*4882a593Smuzhiyun u32 exp_stat_sn; 3845*4882a593Smuzhiyun u32 scsi_command_block[4]; 3846*4882a593Smuzhiyun }; 3847*4882a593Smuzhiyun 3848*4882a593Smuzhiyun 3849*4882a593Smuzhiyun /* 3850*4882a593Smuzhiyun * Buffer per connection, used in Tstorm 3851*4882a593Smuzhiyun */ 3852*4882a593Smuzhiyun struct iscsi_conn_buf { 3853*4882a593Smuzhiyun struct regpair reserved[8]; 3854*4882a593Smuzhiyun }; 3855*4882a593Smuzhiyun 3856*4882a593Smuzhiyun 3857*4882a593Smuzhiyun /* 3858*4882a593Smuzhiyun * iSCSI context region, used only in iSCSI 3859*4882a593Smuzhiyun */ 3860*4882a593Smuzhiyun struct ustorm_iscsi_rq_db { 3861*4882a593Smuzhiyun struct regpair pbl_base; 3862*4882a593Smuzhiyun struct regpair curr_pbe; 3863*4882a593Smuzhiyun }; 3864*4882a593Smuzhiyun 3865*4882a593Smuzhiyun /* 3866*4882a593Smuzhiyun * iSCSI context region, used only in iSCSI 3867*4882a593Smuzhiyun */ 3868*4882a593Smuzhiyun struct ustorm_iscsi_r2tq_db { 3869*4882a593Smuzhiyun struct regpair pbl_base; 3870*4882a593Smuzhiyun struct regpair curr_pbe; 3871*4882a593Smuzhiyun }; 3872*4882a593Smuzhiyun 3873*4882a593Smuzhiyun /* 3874*4882a593Smuzhiyun * iSCSI context region, used only in iSCSI 3875*4882a593Smuzhiyun */ 3876*4882a593Smuzhiyun struct ustorm_iscsi_cq_db { 3877*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3878*4882a593Smuzhiyun u16 cq_sn; 3879*4882a593Smuzhiyun u16 prod; 3880*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3881*4882a593Smuzhiyun u16 prod; 3882*4882a593Smuzhiyun u16 cq_sn; 3883*4882a593Smuzhiyun #endif 3884*4882a593Smuzhiyun struct regpair curr_pbe; 3885*4882a593Smuzhiyun }; 3886*4882a593Smuzhiyun 3887*4882a593Smuzhiyun /* 3888*4882a593Smuzhiyun * iSCSI context region, used only in iSCSI 3889*4882a593Smuzhiyun */ 3890*4882a593Smuzhiyun struct rings_db { 3891*4882a593Smuzhiyun struct ustorm_iscsi_rq_db rq; 3892*4882a593Smuzhiyun struct ustorm_iscsi_r2tq_db r2tq; 3893*4882a593Smuzhiyun struct ustorm_iscsi_cq_db cq[8]; 3894*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3895*4882a593Smuzhiyun u16 rq_prod; 3896*4882a593Smuzhiyun u16 r2tq_prod; 3897*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3898*4882a593Smuzhiyun u16 r2tq_prod; 3899*4882a593Smuzhiyun u16 rq_prod; 3900*4882a593Smuzhiyun #endif 3901*4882a593Smuzhiyun struct regpair cq_pbl_base; 3902*4882a593Smuzhiyun }; 3903*4882a593Smuzhiyun 3904*4882a593Smuzhiyun /* 3905*4882a593Smuzhiyun * iSCSI context region, used only in iSCSI 3906*4882a593Smuzhiyun */ 3907*4882a593Smuzhiyun struct ustorm_iscsi_placement_db { 3908*4882a593Smuzhiyun u32 sgl_base_lo; 3909*4882a593Smuzhiyun u32 sgl_base_hi; 3910*4882a593Smuzhiyun u32 local_sge_0_address_hi; 3911*4882a593Smuzhiyun u32 local_sge_0_address_lo; 3912*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3913*4882a593Smuzhiyun u16 curr_sge_offset; 3914*4882a593Smuzhiyun u16 local_sge_0_size; 3915*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3916*4882a593Smuzhiyun u16 local_sge_0_size; 3917*4882a593Smuzhiyun u16 curr_sge_offset; 3918*4882a593Smuzhiyun #endif 3919*4882a593Smuzhiyun u32 local_sge_1_address_hi; 3920*4882a593Smuzhiyun u32 local_sge_1_address_lo; 3921*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3922*4882a593Smuzhiyun u8 exp_padding_2b; 3923*4882a593Smuzhiyun u8 nal_len_3b; 3924*4882a593Smuzhiyun u16 local_sge_1_size; 3925*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3926*4882a593Smuzhiyun u16 local_sge_1_size; 3927*4882a593Smuzhiyun u8 nal_len_3b; 3928*4882a593Smuzhiyun u8 exp_padding_2b; 3929*4882a593Smuzhiyun #endif 3930*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3931*4882a593Smuzhiyun u8 sgl_size; 3932*4882a593Smuzhiyun u8 local_sge_index_2b; 3933*4882a593Smuzhiyun u16 reserved7; 3934*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3935*4882a593Smuzhiyun u16 reserved7; 3936*4882a593Smuzhiyun u8 local_sge_index_2b; 3937*4882a593Smuzhiyun u8 sgl_size; 3938*4882a593Smuzhiyun #endif 3939*4882a593Smuzhiyun u32 rem_pdu; 3940*4882a593Smuzhiyun u32 place_db_bitfield_1; 3941*4882a593Smuzhiyun #define USTORM_ISCSI_PLACEMENT_DB_REM_PDU_PAYLOAD (0xFFFFFF<<0) 3942*4882a593Smuzhiyun #define USTORM_ISCSI_PLACEMENT_DB_REM_PDU_PAYLOAD_SHIFT 0 3943*4882a593Smuzhiyun #define USTORM_ISCSI_PLACEMENT_DB_CQ_ID (0xFF<<24) 3944*4882a593Smuzhiyun #define USTORM_ISCSI_PLACEMENT_DB_CQ_ID_SHIFT 24 3945*4882a593Smuzhiyun u32 place_db_bitfield_2; 3946*4882a593Smuzhiyun #define USTORM_ISCSI_PLACEMENT_DB_BYTES_2_TRUNCATE (0xFFFFFF<<0) 3947*4882a593Smuzhiyun #define USTORM_ISCSI_PLACEMENT_DB_BYTES_2_TRUNCATE_SHIFT 0 3948*4882a593Smuzhiyun #define USTORM_ISCSI_PLACEMENT_DB_HOST_SGE_INDEX (0xFF<<24) 3949*4882a593Smuzhiyun #define USTORM_ISCSI_PLACEMENT_DB_HOST_SGE_INDEX_SHIFT 24 3950*4882a593Smuzhiyun u32 nal; 3951*4882a593Smuzhiyun #define USTORM_ISCSI_PLACEMENT_DB_REM_SGE_SIZE (0xFFFFFF<<0) 3952*4882a593Smuzhiyun #define USTORM_ISCSI_PLACEMENT_DB_REM_SGE_SIZE_SHIFT 0 3953*4882a593Smuzhiyun #define USTORM_ISCSI_PLACEMENT_DB_EXP_DIGEST_3B (0xFF<<24) 3954*4882a593Smuzhiyun #define USTORM_ISCSI_PLACEMENT_DB_EXP_DIGEST_3B_SHIFT 24 3955*4882a593Smuzhiyun }; 3956*4882a593Smuzhiyun 3957*4882a593Smuzhiyun /* 3958*4882a593Smuzhiyun * Ustorm iSCSI Storm Context 3959*4882a593Smuzhiyun */ 3960*4882a593Smuzhiyun struct ustorm_iscsi_st_context { 3961*4882a593Smuzhiyun u32 exp_stat_sn; 3962*4882a593Smuzhiyun u32 exp_data_sn; 3963*4882a593Smuzhiyun struct rings_db ring; 3964*4882a593Smuzhiyun struct regpair task_pbl_base; 3965*4882a593Smuzhiyun struct regpair tce_phy_addr; 3966*4882a593Smuzhiyun struct ustorm_iscsi_placement_db place_db; 3967*4882a593Smuzhiyun u32 reserved8; 3968*4882a593Smuzhiyun u32 rem_rcv_len; 3969*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3970*4882a593Smuzhiyun u16 hdr_itt; 3971*4882a593Smuzhiyun u16 iscsi_conn_id; 3972*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3973*4882a593Smuzhiyun u16 iscsi_conn_id; 3974*4882a593Smuzhiyun u16 hdr_itt; 3975*4882a593Smuzhiyun #endif 3976*4882a593Smuzhiyun u32 nal_bytes; 3977*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 3978*4882a593Smuzhiyun u8 hdr_second_byte_union; 3979*4882a593Smuzhiyun u8 bitfield_0; 3980*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_BMIDDLEOFPDU (0x1<<0) 3981*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_BMIDDLEOFPDU_SHIFT 0 3982*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_BFENCECQE (0x1<<1) 3983*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_BFENCECQE_SHIFT 1 3984*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_BRESETCRC (0x1<<2) 3985*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_BRESETCRC_SHIFT 2 3986*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_RESERVED1 (0x1F<<3) 3987*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_RESERVED1_SHIFT 3 3988*4882a593Smuzhiyun u8 task_pdu_cache_index; 3989*4882a593Smuzhiyun u8 task_pbe_cache_index; 3990*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 3991*4882a593Smuzhiyun u8 task_pbe_cache_index; 3992*4882a593Smuzhiyun u8 task_pdu_cache_index; 3993*4882a593Smuzhiyun u8 bitfield_0; 3994*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_BMIDDLEOFPDU (0x1<<0) 3995*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_BMIDDLEOFPDU_SHIFT 0 3996*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_BFENCECQE (0x1<<1) 3997*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_BFENCECQE_SHIFT 1 3998*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_BRESETCRC (0x1<<2) 3999*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_BRESETCRC_SHIFT 2 4000*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_RESERVED1 (0x1F<<3) 4001*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_RESERVED1_SHIFT 3 4002*4882a593Smuzhiyun u8 hdr_second_byte_union; 4003*4882a593Smuzhiyun #endif 4004*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4005*4882a593Smuzhiyun u16 reserved3; 4006*4882a593Smuzhiyun u8 reserved2; 4007*4882a593Smuzhiyun u8 acDecrement; 4008*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4009*4882a593Smuzhiyun u8 acDecrement; 4010*4882a593Smuzhiyun u8 reserved2; 4011*4882a593Smuzhiyun u16 reserved3; 4012*4882a593Smuzhiyun #endif 4013*4882a593Smuzhiyun u32 task_stat; 4014*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4015*4882a593Smuzhiyun u8 hdr_opcode; 4016*4882a593Smuzhiyun u8 num_cqs; 4017*4882a593Smuzhiyun u16 reserved5; 4018*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4019*4882a593Smuzhiyun u16 reserved5; 4020*4882a593Smuzhiyun u8 num_cqs; 4021*4882a593Smuzhiyun u8 hdr_opcode; 4022*4882a593Smuzhiyun #endif 4023*4882a593Smuzhiyun u32 negotiated_rx; 4024*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_MAX_RECV_PDU_LENGTH (0xFFFFFF<<0) 4025*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_MAX_RECV_PDU_LENGTH_SHIFT 0 4026*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_MAX_OUTSTANDING_R2TS (0xFF<<24) 4027*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_MAX_OUTSTANDING_R2TS_SHIFT 24 4028*4882a593Smuzhiyun u32 negotiated_rx_and_flags; 4029*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_MAX_BURST_LENGTH (0xFFFFFF<<0) 4030*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_MAX_BURST_LENGTH_SHIFT 0 4031*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_B_CQE_POSTED_OR_HEADER_CACHED (0x1<<24) 4032*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_B_CQE_POSTED_OR_HEADER_CACHED_SHIFT 24 4033*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_B_HDR_DIGEST_EN (0x1<<25) 4034*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_B_HDR_DIGEST_EN_SHIFT 25 4035*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_B_DATA_DIGEST_EN (0x1<<26) 4036*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_B_DATA_DIGEST_EN_SHIFT 26 4037*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_B_PROTOCOL_ERROR (0x1<<27) 4038*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_B_PROTOCOL_ERROR_SHIFT 27 4039*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_B_TASK_VALID (0x1<<28) 4040*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_B_TASK_VALID_SHIFT 28 4041*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_TASK_TYPE (0x3<<29) 4042*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_TASK_TYPE_SHIFT 29 4043*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_B_ALL_DATA_ACKED (0x1<<31) 4044*4882a593Smuzhiyun #define USTORM_ISCSI_ST_CONTEXT_B_ALL_DATA_ACKED_SHIFT 31 4045*4882a593Smuzhiyun }; 4046*4882a593Smuzhiyun 4047*4882a593Smuzhiyun /* 4048*4882a593Smuzhiyun * TCP context region, shared in TOE, RDMA and ISCSI 4049*4882a593Smuzhiyun */ 4050*4882a593Smuzhiyun struct tstorm_tcp_st_context_section { 4051*4882a593Smuzhiyun u32 flags1; 4052*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_RTT_SRTT (0xFFFFFF<<0) 4053*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_RTT_SRTT_SHIFT 0 4054*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_PAWS_INVALID (0x1<<24) 4055*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_PAWS_INVALID_SHIFT 24 4056*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_TIMESTAMP_EXISTS (0x1<<25) 4057*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_TIMESTAMP_EXISTS_SHIFT 25 4058*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_RESERVED0 (0x1<<26) 4059*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_RESERVED0_SHIFT 26 4060*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_STOP_RX_PAYLOAD (0x1<<27) 4061*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_STOP_RX_PAYLOAD_SHIFT 27 4062*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_KA_ENABLED (0x1<<28) 4063*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_KA_ENABLED_SHIFT 28 4064*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_FIRST_RTO_ESTIMATE (0x1<<29) 4065*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_FIRST_RTO_ESTIMATE_SHIFT 29 4066*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_MAX_SEG_RETRANSMIT_EN (0x1<<30) 4067*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_MAX_SEG_RETRANSMIT_EN_SHIFT 30 4068*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_LAST_ISLE_HAS_FIN (0x1<<31) 4069*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_LAST_ISLE_HAS_FIN_SHIFT 31 4070*4882a593Smuzhiyun u32 flags2; 4071*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_RTT_VARIATION (0xFFFFFF<<0) 4072*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_RTT_VARIATION_SHIFT 0 4073*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_DA_EN (0x1<<24) 4074*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_DA_EN_SHIFT 24 4075*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_DA_COUNTER_EN (0x1<<25) 4076*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_DA_COUNTER_EN_SHIFT 25 4077*4882a593Smuzhiyun #define __TSTORM_TCP_ST_CONTEXT_SECTION_KA_PROBE_SENT (0x1<<26) 4078*4882a593Smuzhiyun #define __TSTORM_TCP_ST_CONTEXT_SECTION_KA_PROBE_SENT_SHIFT 26 4079*4882a593Smuzhiyun #define __TSTORM_TCP_ST_CONTEXT_SECTION_PERSIST_PROBE_SENT (0x1<<27) 4080*4882a593Smuzhiyun #define __TSTORM_TCP_ST_CONTEXT_SECTION_PERSIST_PROBE_SENT_SHIFT 27 4081*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_UPDATE_L2_STATSTICS (0x1<<28) 4082*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_UPDATE_L2_STATSTICS_SHIFT 28 4083*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_UPDATE_L4_STATSTICS (0x1<<29) 4084*4882a593Smuzhiyun #define TSTORM_TCP_ST_CONTEXT_SECTION_UPDATE_L4_STATSTICS_SHIFT 29 4085*4882a593Smuzhiyun #define __TSTORM_TCP_ST_CONTEXT_SECTION_IN_WINDOW_RST_ATTACK (0x1<<30) 4086*4882a593Smuzhiyun #define __TSTORM_TCP_ST_CONTEXT_SECTION_IN_WINDOW_RST_ATTACK_SHIFT 30 4087*4882a593Smuzhiyun #define __TSTORM_TCP_ST_CONTEXT_SECTION_IN_WINDOW_SYN_ATTACK (0x1<<31) 4088*4882a593Smuzhiyun #define __TSTORM_TCP_ST_CONTEXT_SECTION_IN_WINDOW_SYN_ATTACK_SHIFT 31 4089*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4090*4882a593Smuzhiyun u16 mss; 4091*4882a593Smuzhiyun u8 tcp_sm_state; 4092*4882a593Smuzhiyun u8 rto_exp; 4093*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4094*4882a593Smuzhiyun u8 rto_exp; 4095*4882a593Smuzhiyun u8 tcp_sm_state; 4096*4882a593Smuzhiyun u16 mss; 4097*4882a593Smuzhiyun #endif 4098*4882a593Smuzhiyun u32 rcv_nxt; 4099*4882a593Smuzhiyun u32 timestamp_recent; 4100*4882a593Smuzhiyun u32 timestamp_recent_time; 4101*4882a593Smuzhiyun u32 cwnd; 4102*4882a593Smuzhiyun u32 ss_thresh; 4103*4882a593Smuzhiyun u32 cwnd_accum; 4104*4882a593Smuzhiyun u32 prev_seg_seq; 4105*4882a593Smuzhiyun u32 expected_rel_seq; 4106*4882a593Smuzhiyun u32 recover; 4107*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4108*4882a593Smuzhiyun u8 retransmit_count; 4109*4882a593Smuzhiyun u8 ka_max_probe_count; 4110*4882a593Smuzhiyun u8 persist_probe_count; 4111*4882a593Smuzhiyun u8 ka_probe_count; 4112*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4113*4882a593Smuzhiyun u8 ka_probe_count; 4114*4882a593Smuzhiyun u8 persist_probe_count; 4115*4882a593Smuzhiyun u8 ka_max_probe_count; 4116*4882a593Smuzhiyun u8 retransmit_count; 4117*4882a593Smuzhiyun #endif 4118*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4119*4882a593Smuzhiyun u8 statistics_counter_id; 4120*4882a593Smuzhiyun u8 ooo_support_mode; 4121*4882a593Smuzhiyun u8 snd_wnd_scale; 4122*4882a593Smuzhiyun u8 dup_ack_count; 4123*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4124*4882a593Smuzhiyun u8 dup_ack_count; 4125*4882a593Smuzhiyun u8 snd_wnd_scale; 4126*4882a593Smuzhiyun u8 ooo_support_mode; 4127*4882a593Smuzhiyun u8 statistics_counter_id; 4128*4882a593Smuzhiyun #endif 4129*4882a593Smuzhiyun u32 retransmit_start_time; 4130*4882a593Smuzhiyun u32 ka_timeout; 4131*4882a593Smuzhiyun u32 ka_interval; 4132*4882a593Smuzhiyun u32 isle_start_seq; 4133*4882a593Smuzhiyun u32 isle_end_seq; 4134*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4135*4882a593Smuzhiyun u16 second_isle_address; 4136*4882a593Smuzhiyun u16 recent_seg_wnd; 4137*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4138*4882a593Smuzhiyun u16 recent_seg_wnd; 4139*4882a593Smuzhiyun u16 second_isle_address; 4140*4882a593Smuzhiyun #endif 4141*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4142*4882a593Smuzhiyun u8 max_isles_ever_happened; 4143*4882a593Smuzhiyun u8 isles_number; 4144*4882a593Smuzhiyun u16 last_isle_address; 4145*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4146*4882a593Smuzhiyun u16 last_isle_address; 4147*4882a593Smuzhiyun u8 isles_number; 4148*4882a593Smuzhiyun u8 max_isles_ever_happened; 4149*4882a593Smuzhiyun #endif 4150*4882a593Smuzhiyun u32 max_rt_time; 4151*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4152*4882a593Smuzhiyun u16 lsb_mac_address; 4153*4882a593Smuzhiyun u16 vlan_id; 4154*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4155*4882a593Smuzhiyun u16 vlan_id; 4156*4882a593Smuzhiyun u16 lsb_mac_address; 4157*4882a593Smuzhiyun #endif 4158*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4159*4882a593Smuzhiyun u16 msb_mac_address; 4160*4882a593Smuzhiyun u16 mid_mac_address; 4161*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4162*4882a593Smuzhiyun u16 mid_mac_address; 4163*4882a593Smuzhiyun u16 msb_mac_address; 4164*4882a593Smuzhiyun #endif 4165*4882a593Smuzhiyun u32 rightmost_received_seq; 4166*4882a593Smuzhiyun }; 4167*4882a593Smuzhiyun 4168*4882a593Smuzhiyun /* 4169*4882a593Smuzhiyun * Termination variables 4170*4882a593Smuzhiyun */ 4171*4882a593Smuzhiyun struct iscsi_term_vars { 4172*4882a593Smuzhiyun u8 BitMap; 4173*4882a593Smuzhiyun #define ISCSI_TERM_VARS_TCP_STATE (0xF<<0) 4174*4882a593Smuzhiyun #define ISCSI_TERM_VARS_TCP_STATE_SHIFT 0 4175*4882a593Smuzhiyun #define ISCSI_TERM_VARS_FIN_RECEIVED_SBIT (0x1<<4) 4176*4882a593Smuzhiyun #define ISCSI_TERM_VARS_FIN_RECEIVED_SBIT_SHIFT 4 4177*4882a593Smuzhiyun #define ISCSI_TERM_VARS_ACK_ON_FIN_RECEIVED_SBIT (0x1<<5) 4178*4882a593Smuzhiyun #define ISCSI_TERM_VARS_ACK_ON_FIN_RECEIVED_SBIT_SHIFT 5 4179*4882a593Smuzhiyun #define ISCSI_TERM_VARS_TERM_ON_CHIP (0x1<<6) 4180*4882a593Smuzhiyun #define ISCSI_TERM_VARS_TERM_ON_CHIP_SHIFT 6 4181*4882a593Smuzhiyun #define ISCSI_TERM_VARS_RSRV (0x1<<7) 4182*4882a593Smuzhiyun #define ISCSI_TERM_VARS_RSRV_SHIFT 7 4183*4882a593Smuzhiyun }; 4184*4882a593Smuzhiyun 4185*4882a593Smuzhiyun /* 4186*4882a593Smuzhiyun * iSCSI context region, used only in iSCSI 4187*4882a593Smuzhiyun */ 4188*4882a593Smuzhiyun struct tstorm_iscsi_st_context_section { 4189*4882a593Smuzhiyun u32 nalPayload; 4190*4882a593Smuzhiyun u32 b2nh; 4191*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4192*4882a593Smuzhiyun u16 rq_cons; 4193*4882a593Smuzhiyun u8 flags; 4194*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_HDR_DIGEST_EN (0x1<<0) 4195*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_HDR_DIGEST_EN_SHIFT 0 4196*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DATA_DIGEST_EN (0x1<<1) 4197*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DATA_DIGEST_EN_SHIFT 1 4198*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_PARTIAL_HEADER (0x1<<2) 4199*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_PARTIAL_HEADER_SHIFT 2 4200*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_FULL_FEATURE (0x1<<3) 4201*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_FULL_FEATURE_SHIFT 3 4202*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS (0x1<<4) 4203*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS_SHIFT 4 4204*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_NALLEN (0x3<<5) 4205*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_NALLEN_SHIFT 5 4206*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_RSRV0 (0x1<<7) 4207*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_RSRV0_SHIFT 7 4208*4882a593Smuzhiyun u8 hdr_bytes_2_fetch; 4209*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4210*4882a593Smuzhiyun u8 hdr_bytes_2_fetch; 4211*4882a593Smuzhiyun u8 flags; 4212*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_HDR_DIGEST_EN (0x1<<0) 4213*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_HDR_DIGEST_EN_SHIFT 0 4214*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DATA_DIGEST_EN (0x1<<1) 4215*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DATA_DIGEST_EN_SHIFT 1 4216*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_PARTIAL_HEADER (0x1<<2) 4217*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_PARTIAL_HEADER_SHIFT 2 4218*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_FULL_FEATURE (0x1<<3) 4219*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_FULL_FEATURE_SHIFT 3 4220*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS (0x1<<4) 4221*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS_SHIFT 4 4222*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_NALLEN (0x3<<5) 4223*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_NALLEN_SHIFT 5 4224*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_RSRV0 (0x1<<7) 4225*4882a593Smuzhiyun #define TSTORM_ISCSI_ST_CONTEXT_SECTION_RSRV0_SHIFT 7 4226*4882a593Smuzhiyun u16 rq_cons; 4227*4882a593Smuzhiyun #endif 4228*4882a593Smuzhiyun struct regpair rq_db_phy_addr; 4229*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4230*4882a593Smuzhiyun struct iscsi_term_vars term_vars; 4231*4882a593Smuzhiyun u8 rsrv1; 4232*4882a593Smuzhiyun u16 iscsi_conn_id; 4233*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4234*4882a593Smuzhiyun u16 iscsi_conn_id; 4235*4882a593Smuzhiyun u8 rsrv1; 4236*4882a593Smuzhiyun struct iscsi_term_vars term_vars; 4237*4882a593Smuzhiyun #endif 4238*4882a593Smuzhiyun u32 process_nxt; 4239*4882a593Smuzhiyun }; 4240*4882a593Smuzhiyun 4241*4882a593Smuzhiyun /* 4242*4882a593Smuzhiyun * The iSCSI non-aggregative context of Tstorm 4243*4882a593Smuzhiyun */ 4244*4882a593Smuzhiyun struct tstorm_iscsi_st_context { 4245*4882a593Smuzhiyun struct tstorm_tcp_st_context_section tcp; 4246*4882a593Smuzhiyun struct tstorm_iscsi_st_context_section iscsi; 4247*4882a593Smuzhiyun }; 4248*4882a593Smuzhiyun 4249*4882a593Smuzhiyun /* 4250*4882a593Smuzhiyun * Ethernet context section, shared in TOE, RDMA and ISCSI 4251*4882a593Smuzhiyun */ 4252*4882a593Smuzhiyun struct xstorm_eth_context_section { 4253*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4254*4882a593Smuzhiyun u8 remote_addr_4; 4255*4882a593Smuzhiyun u8 remote_addr_5; 4256*4882a593Smuzhiyun u8 local_addr_0; 4257*4882a593Smuzhiyun u8 local_addr_1; 4258*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4259*4882a593Smuzhiyun u8 local_addr_1; 4260*4882a593Smuzhiyun u8 local_addr_0; 4261*4882a593Smuzhiyun u8 remote_addr_5; 4262*4882a593Smuzhiyun u8 remote_addr_4; 4263*4882a593Smuzhiyun #endif 4264*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4265*4882a593Smuzhiyun u8 remote_addr_0; 4266*4882a593Smuzhiyun u8 remote_addr_1; 4267*4882a593Smuzhiyun u8 remote_addr_2; 4268*4882a593Smuzhiyun u8 remote_addr_3; 4269*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4270*4882a593Smuzhiyun u8 remote_addr_3; 4271*4882a593Smuzhiyun u8 remote_addr_2; 4272*4882a593Smuzhiyun u8 remote_addr_1; 4273*4882a593Smuzhiyun u8 remote_addr_0; 4274*4882a593Smuzhiyun #endif 4275*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4276*4882a593Smuzhiyun u16 reserved_vlan_type; 4277*4882a593Smuzhiyun u16 vlan_params; 4278*4882a593Smuzhiyun #define XSTORM_ETH_CONTEXT_SECTION_VLAN_ID (0xFFF<<0) 4279*4882a593Smuzhiyun #define XSTORM_ETH_CONTEXT_SECTION_VLAN_ID_SHIFT 0 4280*4882a593Smuzhiyun #define XSTORM_ETH_CONTEXT_SECTION_CFI (0x1<<12) 4281*4882a593Smuzhiyun #define XSTORM_ETH_CONTEXT_SECTION_CFI_SHIFT 12 4282*4882a593Smuzhiyun #define XSTORM_ETH_CONTEXT_SECTION_PRIORITY (0x7<<13) 4283*4882a593Smuzhiyun #define XSTORM_ETH_CONTEXT_SECTION_PRIORITY_SHIFT 13 4284*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4285*4882a593Smuzhiyun u16 vlan_params; 4286*4882a593Smuzhiyun #define XSTORM_ETH_CONTEXT_SECTION_VLAN_ID (0xFFF<<0) 4287*4882a593Smuzhiyun #define XSTORM_ETH_CONTEXT_SECTION_VLAN_ID_SHIFT 0 4288*4882a593Smuzhiyun #define XSTORM_ETH_CONTEXT_SECTION_CFI (0x1<<12) 4289*4882a593Smuzhiyun #define XSTORM_ETH_CONTEXT_SECTION_CFI_SHIFT 12 4290*4882a593Smuzhiyun #define XSTORM_ETH_CONTEXT_SECTION_PRIORITY (0x7<<13) 4291*4882a593Smuzhiyun #define XSTORM_ETH_CONTEXT_SECTION_PRIORITY_SHIFT 13 4292*4882a593Smuzhiyun u16 reserved_vlan_type; 4293*4882a593Smuzhiyun #endif 4294*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4295*4882a593Smuzhiyun u8 local_addr_2; 4296*4882a593Smuzhiyun u8 local_addr_3; 4297*4882a593Smuzhiyun u8 local_addr_4; 4298*4882a593Smuzhiyun u8 local_addr_5; 4299*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4300*4882a593Smuzhiyun u8 local_addr_5; 4301*4882a593Smuzhiyun u8 local_addr_4; 4302*4882a593Smuzhiyun u8 local_addr_3; 4303*4882a593Smuzhiyun u8 local_addr_2; 4304*4882a593Smuzhiyun #endif 4305*4882a593Smuzhiyun }; 4306*4882a593Smuzhiyun 4307*4882a593Smuzhiyun /* 4308*4882a593Smuzhiyun * IpV4 context section, shared in TOE, RDMA and ISCSI 4309*4882a593Smuzhiyun */ 4310*4882a593Smuzhiyun struct xstorm_ip_v4_context_section { 4311*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4312*4882a593Smuzhiyun u16 __pbf_hdr_cmd_rsvd_id; 4313*4882a593Smuzhiyun u16 __pbf_hdr_cmd_rsvd_flags_offset; 4314*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4315*4882a593Smuzhiyun u16 __pbf_hdr_cmd_rsvd_flags_offset; 4316*4882a593Smuzhiyun u16 __pbf_hdr_cmd_rsvd_id; 4317*4882a593Smuzhiyun #endif 4318*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4319*4882a593Smuzhiyun u8 __pbf_hdr_cmd_rsvd_ver_ihl; 4320*4882a593Smuzhiyun u8 tos; 4321*4882a593Smuzhiyun u16 __pbf_hdr_cmd_rsvd_length; 4322*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4323*4882a593Smuzhiyun u16 __pbf_hdr_cmd_rsvd_length; 4324*4882a593Smuzhiyun u8 tos; 4325*4882a593Smuzhiyun u8 __pbf_hdr_cmd_rsvd_ver_ihl; 4326*4882a593Smuzhiyun #endif 4327*4882a593Smuzhiyun u32 ip_local_addr; 4328*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4329*4882a593Smuzhiyun u8 ttl; 4330*4882a593Smuzhiyun u8 __pbf_hdr_cmd_rsvd_protocol; 4331*4882a593Smuzhiyun u16 __pbf_hdr_cmd_rsvd_csum; 4332*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4333*4882a593Smuzhiyun u16 __pbf_hdr_cmd_rsvd_csum; 4334*4882a593Smuzhiyun u8 __pbf_hdr_cmd_rsvd_protocol; 4335*4882a593Smuzhiyun u8 ttl; 4336*4882a593Smuzhiyun #endif 4337*4882a593Smuzhiyun u32 __pbf_hdr_cmd_rsvd_1; 4338*4882a593Smuzhiyun u32 ip_remote_addr; 4339*4882a593Smuzhiyun }; 4340*4882a593Smuzhiyun 4341*4882a593Smuzhiyun /* 4342*4882a593Smuzhiyun * context section, shared in TOE, RDMA and ISCSI 4343*4882a593Smuzhiyun */ 4344*4882a593Smuzhiyun struct xstorm_padded_ip_v4_context_section { 4345*4882a593Smuzhiyun struct xstorm_ip_v4_context_section ip_v4; 4346*4882a593Smuzhiyun u32 reserved1[4]; 4347*4882a593Smuzhiyun }; 4348*4882a593Smuzhiyun 4349*4882a593Smuzhiyun /* 4350*4882a593Smuzhiyun * IpV6 context section, shared in TOE, RDMA and ISCSI 4351*4882a593Smuzhiyun */ 4352*4882a593Smuzhiyun struct xstorm_ip_v6_context_section { 4353*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4354*4882a593Smuzhiyun u16 pbf_hdr_cmd_rsvd_payload_len; 4355*4882a593Smuzhiyun u8 pbf_hdr_cmd_rsvd_nxt_hdr; 4356*4882a593Smuzhiyun u8 hop_limit; 4357*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4358*4882a593Smuzhiyun u8 hop_limit; 4359*4882a593Smuzhiyun u8 pbf_hdr_cmd_rsvd_nxt_hdr; 4360*4882a593Smuzhiyun u16 pbf_hdr_cmd_rsvd_payload_len; 4361*4882a593Smuzhiyun #endif 4362*4882a593Smuzhiyun u32 priority_flow_label; 4363*4882a593Smuzhiyun #define XSTORM_IP_V6_CONTEXT_SECTION_FLOW_LABEL (0xFFFFF<<0) 4364*4882a593Smuzhiyun #define XSTORM_IP_V6_CONTEXT_SECTION_FLOW_LABEL_SHIFT 0 4365*4882a593Smuzhiyun #define XSTORM_IP_V6_CONTEXT_SECTION_TRAFFIC_CLASS (0xFF<<20) 4366*4882a593Smuzhiyun #define XSTORM_IP_V6_CONTEXT_SECTION_TRAFFIC_CLASS_SHIFT 20 4367*4882a593Smuzhiyun #define XSTORM_IP_V6_CONTEXT_SECTION_PBF_HDR_CMD_RSVD_VER (0xF<<28) 4368*4882a593Smuzhiyun #define XSTORM_IP_V6_CONTEXT_SECTION_PBF_HDR_CMD_RSVD_VER_SHIFT 28 4369*4882a593Smuzhiyun u32 ip_local_addr_lo_hi; 4370*4882a593Smuzhiyun u32 ip_local_addr_lo_lo; 4371*4882a593Smuzhiyun u32 ip_local_addr_hi_hi; 4372*4882a593Smuzhiyun u32 ip_local_addr_hi_lo; 4373*4882a593Smuzhiyun u32 ip_remote_addr_lo_hi; 4374*4882a593Smuzhiyun u32 ip_remote_addr_lo_lo; 4375*4882a593Smuzhiyun u32 ip_remote_addr_hi_hi; 4376*4882a593Smuzhiyun u32 ip_remote_addr_hi_lo; 4377*4882a593Smuzhiyun }; 4378*4882a593Smuzhiyun 4379*4882a593Smuzhiyun union xstorm_ip_context_section_types { 4380*4882a593Smuzhiyun struct xstorm_padded_ip_v4_context_section padded_ip_v4; 4381*4882a593Smuzhiyun struct xstorm_ip_v6_context_section ip_v6; 4382*4882a593Smuzhiyun }; 4383*4882a593Smuzhiyun 4384*4882a593Smuzhiyun /* 4385*4882a593Smuzhiyun * TCP context section, shared in TOE, RDMA and ISCSI 4386*4882a593Smuzhiyun */ 4387*4882a593Smuzhiyun struct xstorm_tcp_context_section { 4388*4882a593Smuzhiyun u32 snd_max; 4389*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4390*4882a593Smuzhiyun u16 remote_port; 4391*4882a593Smuzhiyun u16 local_port; 4392*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4393*4882a593Smuzhiyun u16 local_port; 4394*4882a593Smuzhiyun u16 remote_port; 4395*4882a593Smuzhiyun #endif 4396*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4397*4882a593Smuzhiyun u8 original_nagle_1b; 4398*4882a593Smuzhiyun u8 ts_enabled; 4399*4882a593Smuzhiyun u16 tcp_params; 4400*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_TOTAL_HEADER_SIZE (0xFF<<0) 4401*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_TOTAL_HEADER_SIZE_SHIFT 0 4402*4882a593Smuzhiyun #define __XSTORM_TCP_CONTEXT_SECTION_ECT_BIT (0x1<<8) 4403*4882a593Smuzhiyun #define __XSTORM_TCP_CONTEXT_SECTION_ECT_BIT_SHIFT 8 4404*4882a593Smuzhiyun #define __XSTORM_TCP_CONTEXT_SECTION_ECN_ENABLED (0x1<<9) 4405*4882a593Smuzhiyun #define __XSTORM_TCP_CONTEXT_SECTION_ECN_ENABLED_SHIFT 9 4406*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_SACK_ENABLED (0x1<<10) 4407*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_SACK_ENABLED_SHIFT 10 4408*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_SMALL_WIN_ADV (0x1<<11) 4409*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_SMALL_WIN_ADV_SHIFT 11 4410*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<12) 4411*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 12 4412*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_WINDOW_SATURATED (0x1<<13) 4413*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_WINDOW_SATURATED_SHIFT 13 4414*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_SLOWPATH_QUEUES_FLUSH_COUNTER (0x3<<14) 4415*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_SLOWPATH_QUEUES_FLUSH_COUNTER_SHIFT 14 4416*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4417*4882a593Smuzhiyun u16 tcp_params; 4418*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_TOTAL_HEADER_SIZE (0xFF<<0) 4419*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_TOTAL_HEADER_SIZE_SHIFT 0 4420*4882a593Smuzhiyun #define __XSTORM_TCP_CONTEXT_SECTION_ECT_BIT (0x1<<8) 4421*4882a593Smuzhiyun #define __XSTORM_TCP_CONTEXT_SECTION_ECT_BIT_SHIFT 8 4422*4882a593Smuzhiyun #define __XSTORM_TCP_CONTEXT_SECTION_ECN_ENABLED (0x1<<9) 4423*4882a593Smuzhiyun #define __XSTORM_TCP_CONTEXT_SECTION_ECN_ENABLED_SHIFT 9 4424*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_SACK_ENABLED (0x1<<10) 4425*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_SACK_ENABLED_SHIFT 10 4426*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_SMALL_WIN_ADV (0x1<<11) 4427*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_SMALL_WIN_ADV_SHIFT 11 4428*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<12) 4429*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 12 4430*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_WINDOW_SATURATED (0x1<<13) 4431*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_WINDOW_SATURATED_SHIFT 13 4432*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_SLOWPATH_QUEUES_FLUSH_COUNTER (0x3<<14) 4433*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_SLOWPATH_QUEUES_FLUSH_COUNTER_SHIFT 14 4434*4882a593Smuzhiyun u8 ts_enabled; 4435*4882a593Smuzhiyun u8 original_nagle_1b; 4436*4882a593Smuzhiyun #endif 4437*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4438*4882a593Smuzhiyun u16 pseudo_csum; 4439*4882a593Smuzhiyun u16 window_scaling_factor; 4440*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4441*4882a593Smuzhiyun u16 window_scaling_factor; 4442*4882a593Smuzhiyun u16 pseudo_csum; 4443*4882a593Smuzhiyun #endif 4444*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4445*4882a593Smuzhiyun u16 reserved2; 4446*4882a593Smuzhiyun u8 statistics_counter_id; 4447*4882a593Smuzhiyun u8 statistics_params; 4448*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L2_STATSTICS (0x1<<0) 4449*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L2_STATSTICS_SHIFT 0 4450*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L4_STATSTICS (0x1<<1) 4451*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L4_STATSTICS_SHIFT 1 4452*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_RESERVED (0x3F<<2) 4453*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_RESERVED_SHIFT 2 4454*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4455*4882a593Smuzhiyun u8 statistics_params; 4456*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L2_STATSTICS (0x1<<0) 4457*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L2_STATSTICS_SHIFT 0 4458*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L4_STATSTICS (0x1<<1) 4459*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L4_STATSTICS_SHIFT 1 4460*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_RESERVED (0x3F<<2) 4461*4882a593Smuzhiyun #define XSTORM_TCP_CONTEXT_SECTION_RESERVED_SHIFT 2 4462*4882a593Smuzhiyun u8 statistics_counter_id; 4463*4882a593Smuzhiyun u16 reserved2; 4464*4882a593Smuzhiyun #endif 4465*4882a593Smuzhiyun u32 ts_time_diff; 4466*4882a593Smuzhiyun u32 __next_timer_expir; 4467*4882a593Smuzhiyun }; 4468*4882a593Smuzhiyun 4469*4882a593Smuzhiyun /* 4470*4882a593Smuzhiyun * Common context section, shared in TOE, RDMA and ISCSI 4471*4882a593Smuzhiyun */ 4472*4882a593Smuzhiyun struct xstorm_common_context_section { 4473*4882a593Smuzhiyun struct xstorm_eth_context_section ethernet; 4474*4882a593Smuzhiyun union xstorm_ip_context_section_types ip_union; 4475*4882a593Smuzhiyun struct xstorm_tcp_context_section tcp; 4476*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4477*4882a593Smuzhiyun u8 __dcb_val; 4478*4882a593Smuzhiyun u8 flags; 4479*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_PHYSQ_INITIALIZED (0x1<<0) 4480*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_PHYSQ_INITIALIZED_SHIFT 0 4481*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_PBF_PORT (0x7<<1) 4482*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_PBF_PORT_SHIFT 1 4483*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_VLAN_MODE (0x1<<4) 4484*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_VLAN_MODE_SHIFT 4 4485*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_ORIGINAL_PRIORITY (0x7<<5) 4486*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_ORIGINAL_PRIORITY_SHIFT 5 4487*4882a593Smuzhiyun u8 reserved; 4488*4882a593Smuzhiyun u8 ip_version_1b; 4489*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4490*4882a593Smuzhiyun u8 ip_version_1b; 4491*4882a593Smuzhiyun u8 reserved; 4492*4882a593Smuzhiyun u8 flags; 4493*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_PHYSQ_INITIALIZED (0x1<<0) 4494*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_PHYSQ_INITIALIZED_SHIFT 0 4495*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_PBF_PORT (0x7<<1) 4496*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_PBF_PORT_SHIFT 1 4497*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_VLAN_MODE (0x1<<4) 4498*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_VLAN_MODE_SHIFT 4 4499*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_ORIGINAL_PRIORITY (0x7<<5) 4500*4882a593Smuzhiyun #define XSTORM_COMMON_CONTEXT_SECTION_ORIGINAL_PRIORITY_SHIFT 5 4501*4882a593Smuzhiyun u8 __dcb_val; 4502*4882a593Smuzhiyun #endif 4503*4882a593Smuzhiyun }; 4504*4882a593Smuzhiyun 4505*4882a593Smuzhiyun /* 4506*4882a593Smuzhiyun * Flags used in ISCSI context section 4507*4882a593Smuzhiyun */ 4508*4882a593Smuzhiyun struct xstorm_iscsi_context_flags { 4509*4882a593Smuzhiyun u8 flags; 4510*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_IMMEDIATE_DATA (0x1<<0) 4511*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_IMMEDIATE_DATA_SHIFT 0 4512*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_INITIAL_R2T (0x1<<1) 4513*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_INITIAL_R2T_SHIFT 1 4514*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_EN_HEADER_DIGEST (0x1<<2) 4515*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_EN_HEADER_DIGEST_SHIFT 2 4516*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_EN_DATA_DIGEST (0x1<<3) 4517*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_EN_DATA_DIGEST_SHIFT 3 4518*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_HQ_BD_WRITTEN (0x1<<4) 4519*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_HQ_BD_WRITTEN_SHIFT 4 4520*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_LAST_OP_SQ (0x1<<5) 4521*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_LAST_OP_SQ_SHIFT 5 4522*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_UPDATE_SND_NXT (0x1<<6) 4523*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_B_UPDATE_SND_NXT_SHIFT 6 4524*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_RESERVED4 (0x1<<7) 4525*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_FLAGS_RESERVED4_SHIFT 7 4526*4882a593Smuzhiyun }; 4527*4882a593Smuzhiyun 4528*4882a593Smuzhiyun struct iscsi_task_context_entry_x { 4529*4882a593Smuzhiyun u32 data_out_buffer_offset; 4530*4882a593Smuzhiyun u32 itt; 4531*4882a593Smuzhiyun u32 data_sn; 4532*4882a593Smuzhiyun }; 4533*4882a593Smuzhiyun 4534*4882a593Smuzhiyun struct iscsi_task_context_entry_xuc_x_write_only { 4535*4882a593Smuzhiyun u32 tx_r2t_sn; 4536*4882a593Smuzhiyun }; 4537*4882a593Smuzhiyun 4538*4882a593Smuzhiyun struct iscsi_task_context_entry_xuc_xu_write_both { 4539*4882a593Smuzhiyun u32 sgl_base_lo; 4540*4882a593Smuzhiyun u32 sgl_base_hi; 4541*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4542*4882a593Smuzhiyun u8 sgl_size; 4543*4882a593Smuzhiyun u8 sge_index; 4544*4882a593Smuzhiyun u16 sge_offset; 4545*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4546*4882a593Smuzhiyun u16 sge_offset; 4547*4882a593Smuzhiyun u8 sge_index; 4548*4882a593Smuzhiyun u8 sgl_size; 4549*4882a593Smuzhiyun #endif 4550*4882a593Smuzhiyun }; 4551*4882a593Smuzhiyun 4552*4882a593Smuzhiyun /* 4553*4882a593Smuzhiyun * iSCSI context section 4554*4882a593Smuzhiyun */ 4555*4882a593Smuzhiyun struct xstorm_iscsi_context_section { 4556*4882a593Smuzhiyun u32 first_burst_length; 4557*4882a593Smuzhiyun u32 max_send_pdu_length; 4558*4882a593Smuzhiyun struct regpair sq_pbl_base; 4559*4882a593Smuzhiyun struct regpair sq_curr_pbe; 4560*4882a593Smuzhiyun struct regpair hq_pbl_base; 4561*4882a593Smuzhiyun struct regpair hq_curr_pbe_base; 4562*4882a593Smuzhiyun struct regpair r2tq_pbl_base; 4563*4882a593Smuzhiyun struct regpair r2tq_curr_pbe_base; 4564*4882a593Smuzhiyun struct regpair task_pbl_base; 4565*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4566*4882a593Smuzhiyun u16 data_out_count; 4567*4882a593Smuzhiyun struct xstorm_iscsi_context_flags flags; 4568*4882a593Smuzhiyun u8 task_pbl_cache_idx; 4569*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4570*4882a593Smuzhiyun u8 task_pbl_cache_idx; 4571*4882a593Smuzhiyun struct xstorm_iscsi_context_flags flags; 4572*4882a593Smuzhiyun u16 data_out_count; 4573*4882a593Smuzhiyun #endif 4574*4882a593Smuzhiyun u32 seq_more_2_send; 4575*4882a593Smuzhiyun u32 pdu_more_2_send; 4576*4882a593Smuzhiyun struct iscsi_task_context_entry_x temp_tce_x; 4577*4882a593Smuzhiyun struct iscsi_task_context_entry_xuc_x_write_only temp_tce_x_wr; 4578*4882a593Smuzhiyun struct iscsi_task_context_entry_xuc_xu_write_both temp_tce_xu_wr; 4579*4882a593Smuzhiyun struct regpair lun; 4580*4882a593Smuzhiyun u32 exp_data_transfer_len_ttt; 4581*4882a593Smuzhiyun u32 pdu_data_2_rxmit; 4582*4882a593Smuzhiyun u32 rxmit_bytes_2_dr; 4583*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4584*4882a593Smuzhiyun u16 rxmit_sge_offset; 4585*4882a593Smuzhiyun u16 hq_rxmit_cons; 4586*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4587*4882a593Smuzhiyun u16 hq_rxmit_cons; 4588*4882a593Smuzhiyun u16 rxmit_sge_offset; 4589*4882a593Smuzhiyun #endif 4590*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4591*4882a593Smuzhiyun u16 r2tq_cons; 4592*4882a593Smuzhiyun u8 rxmit_flags; 4593*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_NEW_HQ_BD (0x1<<0) 4594*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_NEW_HQ_BD_SHIFT 0 4595*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PDU_HDR (0x1<<1) 4596*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PDU_HDR_SHIFT 1 4597*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_END_PDU (0x1<<2) 4598*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_END_PDU_SHIFT 2 4599*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_DR (0x1<<3) 4600*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_DR_SHIFT 3 4601*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_START_DR (0x1<<4) 4602*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_START_DR_SHIFT 4 4603*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PADDING (0x3<<5) 4604*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PADDING_SHIFT 5 4605*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_ISCSI_CONT_FAST_RXMIT (0x1<<7) 4606*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_ISCSI_CONT_FAST_RXMIT_SHIFT 7 4607*4882a593Smuzhiyun u8 rxmit_sge_idx; 4608*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4609*4882a593Smuzhiyun u8 rxmit_sge_idx; 4610*4882a593Smuzhiyun u8 rxmit_flags; 4611*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_NEW_HQ_BD (0x1<<0) 4612*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_NEW_HQ_BD_SHIFT 0 4613*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PDU_HDR (0x1<<1) 4614*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PDU_HDR_SHIFT 1 4615*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_END_PDU (0x1<<2) 4616*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_END_PDU_SHIFT 2 4617*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_DR (0x1<<3) 4618*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_DR_SHIFT 3 4619*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_START_DR (0x1<<4) 4620*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_START_DR_SHIFT 4 4621*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PADDING (0x3<<5) 4622*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PADDING_SHIFT 5 4623*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_ISCSI_CONT_FAST_RXMIT (0x1<<7) 4624*4882a593Smuzhiyun #define XSTORM_ISCSI_CONTEXT_SECTION_B_ISCSI_CONT_FAST_RXMIT_SHIFT 7 4625*4882a593Smuzhiyun u16 r2tq_cons; 4626*4882a593Smuzhiyun #endif 4627*4882a593Smuzhiyun u32 hq_rxmit_tcp_seq; 4628*4882a593Smuzhiyun }; 4629*4882a593Smuzhiyun 4630*4882a593Smuzhiyun /* 4631*4882a593Smuzhiyun * Xstorm iSCSI Storm Context 4632*4882a593Smuzhiyun */ 4633*4882a593Smuzhiyun struct xstorm_iscsi_st_context { 4634*4882a593Smuzhiyun struct xstorm_common_context_section common; 4635*4882a593Smuzhiyun struct xstorm_iscsi_context_section iscsi; 4636*4882a593Smuzhiyun }; 4637*4882a593Smuzhiyun 4638*4882a593Smuzhiyun /* 4639*4882a593Smuzhiyun * Iscsi connection context 4640*4882a593Smuzhiyun */ 4641*4882a593Smuzhiyun struct iscsi_context { 4642*4882a593Smuzhiyun struct ustorm_iscsi_st_context ustorm_st_context; 4643*4882a593Smuzhiyun struct tstorm_iscsi_st_context tstorm_st_context; 4644*4882a593Smuzhiyun struct xstorm_iscsi_ag_context xstorm_ag_context; 4645*4882a593Smuzhiyun struct tstorm_iscsi_ag_context tstorm_ag_context; 4646*4882a593Smuzhiyun struct cstorm_iscsi_ag_context cstorm_ag_context; 4647*4882a593Smuzhiyun struct ustorm_iscsi_ag_context ustorm_ag_context; 4648*4882a593Smuzhiyun struct timers_block_context timers_context; 4649*4882a593Smuzhiyun struct regpair upb_context; 4650*4882a593Smuzhiyun struct xstorm_iscsi_st_context xstorm_st_context; 4651*4882a593Smuzhiyun struct regpair xpb_context; 4652*4882a593Smuzhiyun struct cstorm_iscsi_st_context cstorm_st_context; 4653*4882a593Smuzhiyun }; 4654*4882a593Smuzhiyun 4655*4882a593Smuzhiyun 4656*4882a593Smuzhiyun /* 4657*4882a593Smuzhiyun * PDU header of an iSCSI DATA-OUT 4658*4882a593Smuzhiyun */ 4659*4882a593Smuzhiyun struct iscsi_data_pdu_hdr_little_endian { 4660*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4661*4882a593Smuzhiyun u8 opcode; 4662*4882a593Smuzhiyun u8 op_attr; 4663*4882a593Smuzhiyun #define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_RSRV1 (0x7F<<0) 4664*4882a593Smuzhiyun #define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 0 4665*4882a593Smuzhiyun #define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG (0x1<<7) 4666*4882a593Smuzhiyun #define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG_SHIFT 7 4667*4882a593Smuzhiyun u16 rsrv0; 4668*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4669*4882a593Smuzhiyun u16 rsrv0; 4670*4882a593Smuzhiyun u8 op_attr; 4671*4882a593Smuzhiyun #define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_RSRV1 (0x7F<<0) 4672*4882a593Smuzhiyun #define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 0 4673*4882a593Smuzhiyun #define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG (0x1<<7) 4674*4882a593Smuzhiyun #define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG_SHIFT 7 4675*4882a593Smuzhiyun u8 opcode; 4676*4882a593Smuzhiyun #endif 4677*4882a593Smuzhiyun u32 data_fields; 4678*4882a593Smuzhiyun #define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0) 4679*4882a593Smuzhiyun #define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0 4680*4882a593Smuzhiyun #define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24) 4681*4882a593Smuzhiyun #define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24 4682*4882a593Smuzhiyun struct regpair lun; 4683*4882a593Smuzhiyun u32 itt; 4684*4882a593Smuzhiyun u32 ttt; 4685*4882a593Smuzhiyun u32 rsrv2; 4686*4882a593Smuzhiyun u32 exp_stat_sn; 4687*4882a593Smuzhiyun u32 rsrv3; 4688*4882a593Smuzhiyun u32 data_sn; 4689*4882a593Smuzhiyun u32 buffer_offset; 4690*4882a593Smuzhiyun u32 rsrv4; 4691*4882a593Smuzhiyun }; 4692*4882a593Smuzhiyun 4693*4882a593Smuzhiyun 4694*4882a593Smuzhiyun /* 4695*4882a593Smuzhiyun * PDU header of an iSCSI login request 4696*4882a593Smuzhiyun */ 4697*4882a593Smuzhiyun struct iscsi_login_req_hdr_little_endian { 4698*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4699*4882a593Smuzhiyun u8 opcode; 4700*4882a593Smuzhiyun u8 op_attr; 4701*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_NSG (0x3<<0) 4702*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_NSG_SHIFT 0 4703*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CSG (0x3<<2) 4704*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CSG_SHIFT 2 4705*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_RSRV0 (0x3<<4) 4706*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_RSRV0_SHIFT 4 4707*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG (0x1<<6) 4708*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG_SHIFT 6 4709*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_TRANSIT (0x1<<7) 4710*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_TRANSIT_SHIFT 7 4711*4882a593Smuzhiyun u8 version_max; 4712*4882a593Smuzhiyun u8 version_min; 4713*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4714*4882a593Smuzhiyun u8 version_min; 4715*4882a593Smuzhiyun u8 version_max; 4716*4882a593Smuzhiyun u8 op_attr; 4717*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_NSG (0x3<<0) 4718*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_NSG_SHIFT 0 4719*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CSG (0x3<<2) 4720*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CSG_SHIFT 2 4721*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_RSRV0 (0x3<<4) 4722*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_RSRV0_SHIFT 4 4723*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG (0x1<<6) 4724*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG_SHIFT 6 4725*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_TRANSIT (0x1<<7) 4726*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_TRANSIT_SHIFT 7 4727*4882a593Smuzhiyun u8 opcode; 4728*4882a593Smuzhiyun #endif 4729*4882a593Smuzhiyun u32 data_fields; 4730*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0) 4731*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0 4732*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24) 4733*4882a593Smuzhiyun #define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24 4734*4882a593Smuzhiyun u32 isid_lo; 4735*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4736*4882a593Smuzhiyun u16 isid_hi; 4737*4882a593Smuzhiyun u16 tsih; 4738*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4739*4882a593Smuzhiyun u16 tsih; 4740*4882a593Smuzhiyun u16 isid_hi; 4741*4882a593Smuzhiyun #endif 4742*4882a593Smuzhiyun u32 itt; 4743*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4744*4882a593Smuzhiyun u16 cid; 4745*4882a593Smuzhiyun u16 rsrv1; 4746*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4747*4882a593Smuzhiyun u16 rsrv1; 4748*4882a593Smuzhiyun u16 cid; 4749*4882a593Smuzhiyun #endif 4750*4882a593Smuzhiyun u32 cmd_sn; 4751*4882a593Smuzhiyun u32 exp_stat_sn; 4752*4882a593Smuzhiyun u32 rsrv2[4]; 4753*4882a593Smuzhiyun }; 4754*4882a593Smuzhiyun 4755*4882a593Smuzhiyun /* 4756*4882a593Smuzhiyun * PDU header of an iSCSI logout request 4757*4882a593Smuzhiyun */ 4758*4882a593Smuzhiyun struct iscsi_logout_req_hdr_little_endian { 4759*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4760*4882a593Smuzhiyun u8 opcode; 4761*4882a593Smuzhiyun u8 op_attr; 4762*4882a593Smuzhiyun #define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_REASON_CODE (0x7F<<0) 4763*4882a593Smuzhiyun #define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_REASON_CODE_SHIFT 0 4764*4882a593Smuzhiyun #define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_RSRV1_1 (0x1<<7) 4765*4882a593Smuzhiyun #define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_RSRV1_1_SHIFT 7 4766*4882a593Smuzhiyun u16 rsrv0; 4767*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4768*4882a593Smuzhiyun u16 rsrv0; 4769*4882a593Smuzhiyun u8 op_attr; 4770*4882a593Smuzhiyun #define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_REASON_CODE (0x7F<<0) 4771*4882a593Smuzhiyun #define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_REASON_CODE_SHIFT 0 4772*4882a593Smuzhiyun #define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_RSRV1_1 (0x1<<7) 4773*4882a593Smuzhiyun #define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_RSRV1_1_SHIFT 7 4774*4882a593Smuzhiyun u8 opcode; 4775*4882a593Smuzhiyun #endif 4776*4882a593Smuzhiyun u32 data_fields; 4777*4882a593Smuzhiyun #define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0) 4778*4882a593Smuzhiyun #define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0 4779*4882a593Smuzhiyun #define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24) 4780*4882a593Smuzhiyun #define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24 4781*4882a593Smuzhiyun u32 rsrv2[2]; 4782*4882a593Smuzhiyun u32 itt; 4783*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4784*4882a593Smuzhiyun u16 cid; 4785*4882a593Smuzhiyun u16 rsrv1; 4786*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4787*4882a593Smuzhiyun u16 rsrv1; 4788*4882a593Smuzhiyun u16 cid; 4789*4882a593Smuzhiyun #endif 4790*4882a593Smuzhiyun u32 cmd_sn; 4791*4882a593Smuzhiyun u32 exp_stat_sn; 4792*4882a593Smuzhiyun u32 rsrv3[4]; 4793*4882a593Smuzhiyun }; 4794*4882a593Smuzhiyun 4795*4882a593Smuzhiyun /* 4796*4882a593Smuzhiyun * PDU header of an iSCSI TMF request 4797*4882a593Smuzhiyun */ 4798*4882a593Smuzhiyun struct iscsi_tmf_req_hdr_little_endian { 4799*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4800*4882a593Smuzhiyun u8 opcode; 4801*4882a593Smuzhiyun u8 op_attr; 4802*4882a593Smuzhiyun #define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_FUNCTION (0x7F<<0) 4803*4882a593Smuzhiyun #define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_FUNCTION_SHIFT 0 4804*4882a593Smuzhiyun #define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_RSRV1_1 (0x1<<7) 4805*4882a593Smuzhiyun #define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_RSRV1_1_SHIFT 7 4806*4882a593Smuzhiyun u16 rsrv0; 4807*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4808*4882a593Smuzhiyun u16 rsrv0; 4809*4882a593Smuzhiyun u8 op_attr; 4810*4882a593Smuzhiyun #define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_FUNCTION (0x7F<<0) 4811*4882a593Smuzhiyun #define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_FUNCTION_SHIFT 0 4812*4882a593Smuzhiyun #define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_RSRV1_1 (0x1<<7) 4813*4882a593Smuzhiyun #define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_RSRV1_1_SHIFT 7 4814*4882a593Smuzhiyun u8 opcode; 4815*4882a593Smuzhiyun #endif 4816*4882a593Smuzhiyun u32 data_fields; 4817*4882a593Smuzhiyun #define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0) 4818*4882a593Smuzhiyun #define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0 4819*4882a593Smuzhiyun #define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24) 4820*4882a593Smuzhiyun #define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24 4821*4882a593Smuzhiyun struct regpair lun; 4822*4882a593Smuzhiyun u32 itt; 4823*4882a593Smuzhiyun u32 referenced_task_tag; 4824*4882a593Smuzhiyun u32 cmd_sn; 4825*4882a593Smuzhiyun u32 exp_stat_sn; 4826*4882a593Smuzhiyun u32 ref_cmd_sn; 4827*4882a593Smuzhiyun u32 exp_data_sn; 4828*4882a593Smuzhiyun u32 rsrv2[2]; 4829*4882a593Smuzhiyun }; 4830*4882a593Smuzhiyun 4831*4882a593Smuzhiyun /* 4832*4882a593Smuzhiyun * PDU header of an iSCSI Text request 4833*4882a593Smuzhiyun */ 4834*4882a593Smuzhiyun struct iscsi_text_req_hdr_little_endian { 4835*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4836*4882a593Smuzhiyun u8 opcode; 4837*4882a593Smuzhiyun u8 op_attr; 4838*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_RSRV1 (0x3F<<0) 4839*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 0 4840*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG (0x1<<6) 4841*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG_SHIFT 6 4842*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_FINAL (0x1<<7) 4843*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_FINAL_SHIFT 7 4844*4882a593Smuzhiyun u16 rsrv0; 4845*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4846*4882a593Smuzhiyun u16 rsrv0; 4847*4882a593Smuzhiyun u8 op_attr; 4848*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_RSRV1 (0x3F<<0) 4849*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 0 4850*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG (0x1<<6) 4851*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG_SHIFT 6 4852*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_FINAL (0x1<<7) 4853*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_FINAL_SHIFT 7 4854*4882a593Smuzhiyun u8 opcode; 4855*4882a593Smuzhiyun #endif 4856*4882a593Smuzhiyun u32 data_fields; 4857*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0) 4858*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0 4859*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24) 4860*4882a593Smuzhiyun #define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24 4861*4882a593Smuzhiyun struct regpair lun; 4862*4882a593Smuzhiyun u32 itt; 4863*4882a593Smuzhiyun u32 ttt; 4864*4882a593Smuzhiyun u32 cmd_sn; 4865*4882a593Smuzhiyun u32 exp_stat_sn; 4866*4882a593Smuzhiyun u32 rsrv3[4]; 4867*4882a593Smuzhiyun }; 4868*4882a593Smuzhiyun 4869*4882a593Smuzhiyun /* 4870*4882a593Smuzhiyun * PDU header of an iSCSI Nop-Out 4871*4882a593Smuzhiyun */ 4872*4882a593Smuzhiyun struct iscsi_nop_out_hdr_little_endian { 4873*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4874*4882a593Smuzhiyun u8 opcode; 4875*4882a593Smuzhiyun u8 op_attr; 4876*4882a593Smuzhiyun #define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV1 (0x7F<<0) 4877*4882a593Smuzhiyun #define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 0 4878*4882a593Smuzhiyun #define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV2_1 (0x1<<7) 4879*4882a593Smuzhiyun #define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV2_1_SHIFT 7 4880*4882a593Smuzhiyun u16 rsrv0; 4881*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4882*4882a593Smuzhiyun u16 rsrv0; 4883*4882a593Smuzhiyun u8 op_attr; 4884*4882a593Smuzhiyun #define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV1 (0x7F<<0) 4885*4882a593Smuzhiyun #define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 0 4886*4882a593Smuzhiyun #define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV2_1 (0x1<<7) 4887*4882a593Smuzhiyun #define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV2_1_SHIFT 7 4888*4882a593Smuzhiyun u8 opcode; 4889*4882a593Smuzhiyun #endif 4890*4882a593Smuzhiyun u32 data_fields; 4891*4882a593Smuzhiyun #define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0) 4892*4882a593Smuzhiyun #define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0 4893*4882a593Smuzhiyun #define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24) 4894*4882a593Smuzhiyun #define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24 4895*4882a593Smuzhiyun struct regpair lun; 4896*4882a593Smuzhiyun u32 itt; 4897*4882a593Smuzhiyun u32 ttt; 4898*4882a593Smuzhiyun u32 cmd_sn; 4899*4882a593Smuzhiyun u32 exp_stat_sn; 4900*4882a593Smuzhiyun u32 rsrv3[4]; 4901*4882a593Smuzhiyun }; 4902*4882a593Smuzhiyun 4903*4882a593Smuzhiyun /* 4904*4882a593Smuzhiyun * iscsi pdu headers in little endian form. 4905*4882a593Smuzhiyun */ 4906*4882a593Smuzhiyun union iscsi_pdu_headers_little_endian { 4907*4882a593Smuzhiyun u32 fullHeaderSize[12]; 4908*4882a593Smuzhiyun struct iscsi_cmd_pdu_hdr_little_endian command_pdu_hdr; 4909*4882a593Smuzhiyun struct iscsi_data_pdu_hdr_little_endian data_out_pdu_hdr; 4910*4882a593Smuzhiyun struct iscsi_login_req_hdr_little_endian login_req_pdu_hdr; 4911*4882a593Smuzhiyun struct iscsi_logout_req_hdr_little_endian logout_req_pdu_hdr; 4912*4882a593Smuzhiyun struct iscsi_tmf_req_hdr_little_endian tmf_req_pdu_hdr; 4913*4882a593Smuzhiyun struct iscsi_text_req_hdr_little_endian text_req_pdu_hdr; 4914*4882a593Smuzhiyun struct iscsi_nop_out_hdr_little_endian nop_out_pdu_hdr; 4915*4882a593Smuzhiyun }; 4916*4882a593Smuzhiyun 4917*4882a593Smuzhiyun struct iscsi_hq_bd { 4918*4882a593Smuzhiyun union iscsi_pdu_headers_little_endian pdu_header; 4919*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4920*4882a593Smuzhiyun u16 reserved1; 4921*4882a593Smuzhiyun u16 lcl_cmp_flg; 4922*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4923*4882a593Smuzhiyun u16 lcl_cmp_flg; 4924*4882a593Smuzhiyun u16 reserved1; 4925*4882a593Smuzhiyun #endif 4926*4882a593Smuzhiyun u32 sgl_base_lo; 4927*4882a593Smuzhiyun u32 sgl_base_hi; 4928*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4929*4882a593Smuzhiyun u8 sgl_size; 4930*4882a593Smuzhiyun u8 sge_index; 4931*4882a593Smuzhiyun u16 sge_offset; 4932*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4933*4882a593Smuzhiyun u16 sge_offset; 4934*4882a593Smuzhiyun u8 sge_index; 4935*4882a593Smuzhiyun u8 sgl_size; 4936*4882a593Smuzhiyun #endif 4937*4882a593Smuzhiyun }; 4938*4882a593Smuzhiyun 4939*4882a593Smuzhiyun 4940*4882a593Smuzhiyun /* 4941*4882a593Smuzhiyun * CQE data for L2 OOO connection $$KEEP_ENDIANNESS$$ 4942*4882a593Smuzhiyun */ 4943*4882a593Smuzhiyun struct iscsi_l2_ooo_data { 4944*4882a593Smuzhiyun __le32 iscsi_cid; 4945*4882a593Smuzhiyun u8 drop_isle; 4946*4882a593Smuzhiyun u8 drop_size; 4947*4882a593Smuzhiyun u8 ooo_opcode; 4948*4882a593Smuzhiyun u8 ooo_isle; 4949*4882a593Smuzhiyun u8 reserved[8]; 4950*4882a593Smuzhiyun }; 4951*4882a593Smuzhiyun 4952*4882a593Smuzhiyun 4953*4882a593Smuzhiyun 4954*4882a593Smuzhiyun 4955*4882a593Smuzhiyun 4956*4882a593Smuzhiyun 4957*4882a593Smuzhiyun struct iscsi_task_context_entry_xuc_c_write_only { 4958*4882a593Smuzhiyun u32 total_data_acked; 4959*4882a593Smuzhiyun }; 4960*4882a593Smuzhiyun 4961*4882a593Smuzhiyun struct iscsi_task_context_r2t_table_entry { 4962*4882a593Smuzhiyun u32 ttt; 4963*4882a593Smuzhiyun u32 desired_data_len; 4964*4882a593Smuzhiyun }; 4965*4882a593Smuzhiyun 4966*4882a593Smuzhiyun struct iscsi_task_context_entry_xuc_u_write_only { 4967*4882a593Smuzhiyun u32 exp_r2t_sn; 4968*4882a593Smuzhiyun struct iscsi_task_context_r2t_table_entry r2t_table[4]; 4969*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4970*4882a593Smuzhiyun u16 data_in_count; 4971*4882a593Smuzhiyun u8 cq_id; 4972*4882a593Smuzhiyun u8 valid_1b; 4973*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 4974*4882a593Smuzhiyun u8 valid_1b; 4975*4882a593Smuzhiyun u8 cq_id; 4976*4882a593Smuzhiyun u16 data_in_count; 4977*4882a593Smuzhiyun #endif 4978*4882a593Smuzhiyun }; 4979*4882a593Smuzhiyun 4980*4882a593Smuzhiyun struct iscsi_task_context_entry_xuc { 4981*4882a593Smuzhiyun struct iscsi_task_context_entry_xuc_c_write_only write_c; 4982*4882a593Smuzhiyun u32 exp_data_transfer_len; 4983*4882a593Smuzhiyun struct iscsi_task_context_entry_xuc_x_write_only write_x; 4984*4882a593Smuzhiyun u32 lun_lo; 4985*4882a593Smuzhiyun struct iscsi_task_context_entry_xuc_xu_write_both write_xu; 4986*4882a593Smuzhiyun u32 lun_hi; 4987*4882a593Smuzhiyun struct iscsi_task_context_entry_xuc_u_write_only write_u; 4988*4882a593Smuzhiyun }; 4989*4882a593Smuzhiyun 4990*4882a593Smuzhiyun struct iscsi_task_context_entry_u { 4991*4882a593Smuzhiyun u32 exp_r2t_buff_offset; 4992*4882a593Smuzhiyun u32 rem_rcv_len; 4993*4882a593Smuzhiyun u32 exp_data_sn; 4994*4882a593Smuzhiyun }; 4995*4882a593Smuzhiyun 4996*4882a593Smuzhiyun struct iscsi_task_context_entry { 4997*4882a593Smuzhiyun struct iscsi_task_context_entry_x tce_x; 4998*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 4999*4882a593Smuzhiyun u16 data_out_count; 5000*4882a593Smuzhiyun u16 rsrv0; 5001*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 5002*4882a593Smuzhiyun u16 rsrv0; 5003*4882a593Smuzhiyun u16 data_out_count; 5004*4882a593Smuzhiyun #endif 5005*4882a593Smuzhiyun struct iscsi_task_context_entry_xuc tce_xuc; 5006*4882a593Smuzhiyun struct iscsi_task_context_entry_u tce_u; 5007*4882a593Smuzhiyun u32 rsrv1[7]; 5008*4882a593Smuzhiyun }; 5009*4882a593Smuzhiyun 5010*4882a593Smuzhiyun 5011*4882a593Smuzhiyun 5012*4882a593Smuzhiyun 5013*4882a593Smuzhiyun 5014*4882a593Smuzhiyun 5015*4882a593Smuzhiyun 5016*4882a593Smuzhiyun 5017*4882a593Smuzhiyun struct iscsi_task_context_entry_xuc_x_init_only { 5018*4882a593Smuzhiyun struct regpair lun; 5019*4882a593Smuzhiyun u32 exp_data_transfer_len; 5020*4882a593Smuzhiyun }; 5021*4882a593Smuzhiyun 5022*4882a593Smuzhiyun 5023*4882a593Smuzhiyun 5024*4882a593Smuzhiyun 5025*4882a593Smuzhiyun 5026*4882a593Smuzhiyun 5027*4882a593Smuzhiyun 5028*4882a593Smuzhiyun 5029*4882a593Smuzhiyun 5030*4882a593Smuzhiyun 5031*4882a593Smuzhiyun 5032*4882a593Smuzhiyun 5033*4882a593Smuzhiyun 5034*4882a593Smuzhiyun 5035*4882a593Smuzhiyun 5036*4882a593Smuzhiyun 5037*4882a593Smuzhiyun 5038*4882a593Smuzhiyun /* 5039*4882a593Smuzhiyun * ipv6 structure 5040*4882a593Smuzhiyun */ 5041*4882a593Smuzhiyun struct ip_v6_addr { 5042*4882a593Smuzhiyun u32 ip_addr_lo_lo; 5043*4882a593Smuzhiyun u32 ip_addr_lo_hi; 5044*4882a593Smuzhiyun u32 ip_addr_hi_lo; 5045*4882a593Smuzhiyun u32 ip_addr_hi_hi; 5046*4882a593Smuzhiyun }; 5047*4882a593Smuzhiyun 5048*4882a593Smuzhiyun 5049*4882a593Smuzhiyun 5050*4882a593Smuzhiyun /* 5051*4882a593Smuzhiyun * l5cm- connection identification params 5052*4882a593Smuzhiyun */ 5053*4882a593Smuzhiyun struct l5cm_conn_addr_params { 5054*4882a593Smuzhiyun u32 pmtu; 5055*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 5056*4882a593Smuzhiyun u8 remote_addr_3; 5057*4882a593Smuzhiyun u8 remote_addr_2; 5058*4882a593Smuzhiyun u8 remote_addr_1; 5059*4882a593Smuzhiyun u8 remote_addr_0; 5060*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 5061*4882a593Smuzhiyun u8 remote_addr_0; 5062*4882a593Smuzhiyun u8 remote_addr_1; 5063*4882a593Smuzhiyun u8 remote_addr_2; 5064*4882a593Smuzhiyun u8 remote_addr_3; 5065*4882a593Smuzhiyun #endif 5066*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 5067*4882a593Smuzhiyun u16 params; 5068*4882a593Smuzhiyun #define L5CM_CONN_ADDR_PARAMS_IP_VERSION (0x1<<0) 5069*4882a593Smuzhiyun #define L5CM_CONN_ADDR_PARAMS_IP_VERSION_SHIFT 0 5070*4882a593Smuzhiyun #define L5CM_CONN_ADDR_PARAMS_RSRV (0x7FFF<<1) 5071*4882a593Smuzhiyun #define L5CM_CONN_ADDR_PARAMS_RSRV_SHIFT 1 5072*4882a593Smuzhiyun u8 remote_addr_5; 5073*4882a593Smuzhiyun u8 remote_addr_4; 5074*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 5075*4882a593Smuzhiyun u8 remote_addr_4; 5076*4882a593Smuzhiyun u8 remote_addr_5; 5077*4882a593Smuzhiyun u16 params; 5078*4882a593Smuzhiyun #define L5CM_CONN_ADDR_PARAMS_IP_VERSION (0x1<<0) 5079*4882a593Smuzhiyun #define L5CM_CONN_ADDR_PARAMS_IP_VERSION_SHIFT 0 5080*4882a593Smuzhiyun #define L5CM_CONN_ADDR_PARAMS_RSRV (0x7FFF<<1) 5081*4882a593Smuzhiyun #define L5CM_CONN_ADDR_PARAMS_RSRV_SHIFT 1 5082*4882a593Smuzhiyun #endif 5083*4882a593Smuzhiyun struct ip_v6_addr local_ip_addr; 5084*4882a593Smuzhiyun struct ip_v6_addr remote_ip_addr; 5085*4882a593Smuzhiyun u32 ipv6_flow_label_20b; 5086*4882a593Smuzhiyun u32 reserved1; 5087*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 5088*4882a593Smuzhiyun u16 remote_tcp_port; 5089*4882a593Smuzhiyun u16 local_tcp_port; 5090*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 5091*4882a593Smuzhiyun u16 local_tcp_port; 5092*4882a593Smuzhiyun u16 remote_tcp_port; 5093*4882a593Smuzhiyun #endif 5094*4882a593Smuzhiyun }; 5095*4882a593Smuzhiyun 5096*4882a593Smuzhiyun /* 5097*4882a593Smuzhiyun * l5cm-xstorm connection buffer 5098*4882a593Smuzhiyun */ 5099*4882a593Smuzhiyun struct l5cm_xstorm_conn_buffer { 5100*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 5101*4882a593Smuzhiyun u16 rsrv1; 5102*4882a593Smuzhiyun u16 params; 5103*4882a593Smuzhiyun #define L5CM_XSTORM_CONN_BUFFER_NAGLE_ENABLE (0x1<<0) 5104*4882a593Smuzhiyun #define L5CM_XSTORM_CONN_BUFFER_NAGLE_ENABLE_SHIFT 0 5105*4882a593Smuzhiyun #define L5CM_XSTORM_CONN_BUFFER_RSRV (0x7FFF<<1) 5106*4882a593Smuzhiyun #define L5CM_XSTORM_CONN_BUFFER_RSRV_SHIFT 1 5107*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 5108*4882a593Smuzhiyun u16 params; 5109*4882a593Smuzhiyun #define L5CM_XSTORM_CONN_BUFFER_NAGLE_ENABLE (0x1<<0) 5110*4882a593Smuzhiyun #define L5CM_XSTORM_CONN_BUFFER_NAGLE_ENABLE_SHIFT 0 5111*4882a593Smuzhiyun #define L5CM_XSTORM_CONN_BUFFER_RSRV (0x7FFF<<1) 5112*4882a593Smuzhiyun #define L5CM_XSTORM_CONN_BUFFER_RSRV_SHIFT 1 5113*4882a593Smuzhiyun u16 rsrv1; 5114*4882a593Smuzhiyun #endif 5115*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 5116*4882a593Smuzhiyun u16 mss; 5117*4882a593Smuzhiyun u16 pseudo_header_checksum; 5118*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 5119*4882a593Smuzhiyun u16 pseudo_header_checksum; 5120*4882a593Smuzhiyun u16 mss; 5121*4882a593Smuzhiyun #endif 5122*4882a593Smuzhiyun u32 rcv_buf; 5123*4882a593Smuzhiyun u32 rsrv2; 5124*4882a593Smuzhiyun struct regpair context_addr; 5125*4882a593Smuzhiyun }; 5126*4882a593Smuzhiyun 5127*4882a593Smuzhiyun /* 5128*4882a593Smuzhiyun * l5cm-tstorm connection buffer 5129*4882a593Smuzhiyun */ 5130*4882a593Smuzhiyun struct l5cm_tstorm_conn_buffer { 5131*4882a593Smuzhiyun u32 rsrv1[2]; 5132*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 5133*4882a593Smuzhiyun u16 params; 5134*4882a593Smuzhiyun #define L5CM_TSTORM_CONN_BUFFER_DELAYED_ACK_ENABLE (0x1<<0) 5135*4882a593Smuzhiyun #define L5CM_TSTORM_CONN_BUFFER_DELAYED_ACK_ENABLE_SHIFT 0 5136*4882a593Smuzhiyun #define L5CM_TSTORM_CONN_BUFFER_RSRV (0x7FFF<<1) 5137*4882a593Smuzhiyun #define L5CM_TSTORM_CONN_BUFFER_RSRV_SHIFT 1 5138*4882a593Smuzhiyun u8 ka_max_probe_count; 5139*4882a593Smuzhiyun u8 ka_enable; 5140*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 5141*4882a593Smuzhiyun u8 ka_enable; 5142*4882a593Smuzhiyun u8 ka_max_probe_count; 5143*4882a593Smuzhiyun u16 params; 5144*4882a593Smuzhiyun #define L5CM_TSTORM_CONN_BUFFER_DELAYED_ACK_ENABLE (0x1<<0) 5145*4882a593Smuzhiyun #define L5CM_TSTORM_CONN_BUFFER_DELAYED_ACK_ENABLE_SHIFT 0 5146*4882a593Smuzhiyun #define L5CM_TSTORM_CONN_BUFFER_RSRV (0x7FFF<<1) 5147*4882a593Smuzhiyun #define L5CM_TSTORM_CONN_BUFFER_RSRV_SHIFT 1 5148*4882a593Smuzhiyun #endif 5149*4882a593Smuzhiyun u32 ka_timeout; 5150*4882a593Smuzhiyun u32 ka_interval; 5151*4882a593Smuzhiyun u32 max_rt_time; 5152*4882a593Smuzhiyun }; 5153*4882a593Smuzhiyun 5154*4882a593Smuzhiyun /* 5155*4882a593Smuzhiyun * l5cm connection buffer for active side 5156*4882a593Smuzhiyun */ 5157*4882a593Smuzhiyun struct l5cm_active_conn_buffer { 5158*4882a593Smuzhiyun struct l5cm_conn_addr_params conn_addr_buf; 5159*4882a593Smuzhiyun struct l5cm_xstorm_conn_buffer xstorm_conn_buffer; 5160*4882a593Smuzhiyun struct l5cm_tstorm_conn_buffer tstorm_conn_buffer; 5161*4882a593Smuzhiyun }; 5162*4882a593Smuzhiyun 5163*4882a593Smuzhiyun 5164*4882a593Smuzhiyun 5165*4882a593Smuzhiyun /* 5166*4882a593Smuzhiyun * The l5cm opaque buffer passed in add new connection ramrod passive side 5167*4882a593Smuzhiyun */ 5168*4882a593Smuzhiyun struct l5cm_hash_input_string { 5169*4882a593Smuzhiyun u32 __opaque1; 5170*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 5171*4882a593Smuzhiyun u16 __opaque3; 5172*4882a593Smuzhiyun u16 __opaque2; 5173*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 5174*4882a593Smuzhiyun u16 __opaque2; 5175*4882a593Smuzhiyun u16 __opaque3; 5176*4882a593Smuzhiyun #endif 5177*4882a593Smuzhiyun struct ip_v6_addr __opaque4; 5178*4882a593Smuzhiyun struct ip_v6_addr __opaque5; 5179*4882a593Smuzhiyun u32 __opaque6; 5180*4882a593Smuzhiyun u32 __opaque7[5]; 5181*4882a593Smuzhiyun }; 5182*4882a593Smuzhiyun 5183*4882a593Smuzhiyun 5184*4882a593Smuzhiyun /* 5185*4882a593Smuzhiyun * syn cookie component 5186*4882a593Smuzhiyun */ 5187*4882a593Smuzhiyun struct l5cm_syn_cookie_comp { 5188*4882a593Smuzhiyun u32 __opaque; 5189*4882a593Smuzhiyun }; 5190*4882a593Smuzhiyun 5191*4882a593Smuzhiyun /* 5192*4882a593Smuzhiyun * data related to listeners of a TCP port 5193*4882a593Smuzhiyun */ 5194*4882a593Smuzhiyun struct l5cm_port_listener_data { 5195*4882a593Smuzhiyun u8 params; 5196*4882a593Smuzhiyun #define L5CM_PORT_LISTENER_DATA_ENABLE (0x1<<0) 5197*4882a593Smuzhiyun #define L5CM_PORT_LISTENER_DATA_ENABLE_SHIFT 0 5198*4882a593Smuzhiyun #define L5CM_PORT_LISTENER_DATA_IP_INDEX (0xF<<1) 5199*4882a593Smuzhiyun #define L5CM_PORT_LISTENER_DATA_IP_INDEX_SHIFT 1 5200*4882a593Smuzhiyun #define L5CM_PORT_LISTENER_DATA_NET_FILTER (0x1<<5) 5201*4882a593Smuzhiyun #define L5CM_PORT_LISTENER_DATA_NET_FILTER_SHIFT 5 5202*4882a593Smuzhiyun #define L5CM_PORT_LISTENER_DATA_DEFFERED_MODE (0x1<<6) 5203*4882a593Smuzhiyun #define L5CM_PORT_LISTENER_DATA_DEFFERED_MODE_SHIFT 6 5204*4882a593Smuzhiyun #define L5CM_PORT_LISTENER_DATA_MPA_MODE (0x1<<7) 5205*4882a593Smuzhiyun #define L5CM_PORT_LISTENER_DATA_MPA_MODE_SHIFT 7 5206*4882a593Smuzhiyun }; 5207*4882a593Smuzhiyun 5208*4882a593Smuzhiyun /* 5209*4882a593Smuzhiyun * Opaque structure passed from U to X when final ack arrives 5210*4882a593Smuzhiyun */ 5211*4882a593Smuzhiyun struct l5cm_opaque_buf { 5212*4882a593Smuzhiyun u32 __opaque1; 5213*4882a593Smuzhiyun u32 __opaque2; 5214*4882a593Smuzhiyun u32 __opaque3; 5215*4882a593Smuzhiyun u32 __opaque4; 5216*4882a593Smuzhiyun struct l5cm_syn_cookie_comp __opaque5; 5217*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 5218*4882a593Smuzhiyun u16 rsrv2; 5219*4882a593Smuzhiyun u8 rsrv; 5220*4882a593Smuzhiyun struct l5cm_port_listener_data __opaque6; 5221*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 5222*4882a593Smuzhiyun struct l5cm_port_listener_data __opaque6; 5223*4882a593Smuzhiyun u8 rsrv; 5224*4882a593Smuzhiyun u16 rsrv2; 5225*4882a593Smuzhiyun #endif 5226*4882a593Smuzhiyun }; 5227*4882a593Smuzhiyun 5228*4882a593Smuzhiyun 5229*4882a593Smuzhiyun /* 5230*4882a593Smuzhiyun * l5cm slow path element 5231*4882a593Smuzhiyun */ 5232*4882a593Smuzhiyun struct l5cm_packet_size { 5233*4882a593Smuzhiyun u32 size; 5234*4882a593Smuzhiyun u32 rsrv; 5235*4882a593Smuzhiyun }; 5236*4882a593Smuzhiyun 5237*4882a593Smuzhiyun 5238*4882a593Smuzhiyun /* 5239*4882a593Smuzhiyun * The final-ack union structure in PCS entry after final ack arrived 5240*4882a593Smuzhiyun */ 5241*4882a593Smuzhiyun struct l5cm_pcse_ack { 5242*4882a593Smuzhiyun struct l5cm_xstorm_conn_buffer tx_socket_params; 5243*4882a593Smuzhiyun struct l5cm_opaque_buf opaque_buf; 5244*4882a593Smuzhiyun struct l5cm_tstorm_conn_buffer rx_socket_params; 5245*4882a593Smuzhiyun }; 5246*4882a593Smuzhiyun 5247*4882a593Smuzhiyun 5248*4882a593Smuzhiyun /* 5249*4882a593Smuzhiyun * The syn union structure in PCS entry after syn arrived 5250*4882a593Smuzhiyun */ 5251*4882a593Smuzhiyun struct l5cm_pcse_syn { 5252*4882a593Smuzhiyun struct l5cm_opaque_buf opaque_buf; 5253*4882a593Smuzhiyun u32 rsrv[12]; 5254*4882a593Smuzhiyun }; 5255*4882a593Smuzhiyun 5256*4882a593Smuzhiyun 5257*4882a593Smuzhiyun /* 5258*4882a593Smuzhiyun * pcs entry data for passive connections 5259*4882a593Smuzhiyun */ 5260*4882a593Smuzhiyun struct l5cm_pcs_attributes { 5261*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 5262*4882a593Smuzhiyun u16 pcs_id; 5263*4882a593Smuzhiyun u8 status; 5264*4882a593Smuzhiyun u8 flags; 5265*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_NET_FILTER (0x1<<0) 5266*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_NET_FILTER_SHIFT 0 5267*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_CALCULATE_HASH (0x1<<1) 5268*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_CALCULATE_HASH_SHIFT 1 5269*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_COMPARE_HASH_RESULT (0x1<<2) 5270*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_COMPARE_HASH_RESULT_SHIFT 2 5271*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_QUERY_ULP_ACCEPT (0x1<<3) 5272*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_QUERY_ULP_ACCEPT_SHIFT 3 5273*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_FIND_DEST_MAC (0x1<<4) 5274*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_FIND_DEST_MAC_SHIFT 4 5275*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_L4_OFFLOAD (0x1<<5) 5276*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_L4_OFFLOAD_SHIFT 5 5277*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_FORWARD_PACKET (0x1<<6) 5278*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_FORWARD_PACKET_SHIFT 6 5279*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_RSRV (0x1<<7) 5280*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_RSRV_SHIFT 7 5281*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 5282*4882a593Smuzhiyun u8 flags; 5283*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_NET_FILTER (0x1<<0) 5284*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_NET_FILTER_SHIFT 0 5285*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_CALCULATE_HASH (0x1<<1) 5286*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_CALCULATE_HASH_SHIFT 1 5287*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_COMPARE_HASH_RESULT (0x1<<2) 5288*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_COMPARE_HASH_RESULT_SHIFT 2 5289*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_QUERY_ULP_ACCEPT (0x1<<3) 5290*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_QUERY_ULP_ACCEPT_SHIFT 3 5291*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_FIND_DEST_MAC (0x1<<4) 5292*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_FIND_DEST_MAC_SHIFT 4 5293*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_L4_OFFLOAD (0x1<<5) 5294*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_L4_OFFLOAD_SHIFT 5 5295*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_FORWARD_PACKET (0x1<<6) 5296*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_FORWARD_PACKET_SHIFT 6 5297*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_RSRV (0x1<<7) 5298*4882a593Smuzhiyun #define L5CM_PCS_ATTRIBUTES_RSRV_SHIFT 7 5299*4882a593Smuzhiyun u8 status; 5300*4882a593Smuzhiyun u16 pcs_id; 5301*4882a593Smuzhiyun #endif 5302*4882a593Smuzhiyun }; 5303*4882a593Smuzhiyun 5304*4882a593Smuzhiyun 5305*4882a593Smuzhiyun union l5cm_seg_params { 5306*4882a593Smuzhiyun struct l5cm_pcse_syn syn_seg_params; 5307*4882a593Smuzhiyun struct l5cm_pcse_ack ack_seg_params; 5308*4882a593Smuzhiyun }; 5309*4882a593Smuzhiyun 5310*4882a593Smuzhiyun /* 5311*4882a593Smuzhiyun * pcs entry data for passive connections 5312*4882a593Smuzhiyun */ 5313*4882a593Smuzhiyun struct l5cm_pcs_hdr { 5314*4882a593Smuzhiyun struct l5cm_hash_input_string hash_input_string; 5315*4882a593Smuzhiyun struct l5cm_conn_addr_params conn_addr_buf; 5316*4882a593Smuzhiyun u32 cid; 5317*4882a593Smuzhiyun u32 hash_result; 5318*4882a593Smuzhiyun union l5cm_seg_params seg_params; 5319*4882a593Smuzhiyun struct l5cm_pcs_attributes att; 5320*4882a593Smuzhiyun #if defined(__BIG_ENDIAN) 5321*4882a593Smuzhiyun u16 rsrv; 5322*4882a593Smuzhiyun u16 rx_seg_size; 5323*4882a593Smuzhiyun #elif defined(__LITTLE_ENDIAN) 5324*4882a593Smuzhiyun u16 rx_seg_size; 5325*4882a593Smuzhiyun u16 rsrv; 5326*4882a593Smuzhiyun #endif 5327*4882a593Smuzhiyun }; 5328*4882a593Smuzhiyun 5329*4882a593Smuzhiyun /* 5330*4882a593Smuzhiyun * pcs entry for passive connections 5331*4882a593Smuzhiyun */ 5332*4882a593Smuzhiyun struct l5cm_pcs_entry { 5333*4882a593Smuzhiyun struct l5cm_pcs_hdr hdr; 5334*4882a593Smuzhiyun u8 rx_segment[1516]; 5335*4882a593Smuzhiyun }; 5336*4882a593Smuzhiyun 5337*4882a593Smuzhiyun 5338*4882a593Smuzhiyun 5339*4882a593Smuzhiyun 5340*4882a593Smuzhiyun /* 5341*4882a593Smuzhiyun * l5cm connection parameters 5342*4882a593Smuzhiyun */ 5343*4882a593Smuzhiyun union l5cm_reduce_param_union { 5344*4882a593Smuzhiyun u32 opaque1; 5345*4882a593Smuzhiyun u32 opaque2; 5346*4882a593Smuzhiyun }; 5347*4882a593Smuzhiyun 5348*4882a593Smuzhiyun /* 5349*4882a593Smuzhiyun * l5cm connection parameters 5350*4882a593Smuzhiyun */ 5351*4882a593Smuzhiyun struct l5cm_reduce_conn { 5352*4882a593Smuzhiyun union l5cm_reduce_param_union opaque1; 5353*4882a593Smuzhiyun u32 opaque2; 5354*4882a593Smuzhiyun }; 5355*4882a593Smuzhiyun 5356*4882a593Smuzhiyun /* 5357*4882a593Smuzhiyun * l5cm slow path element 5358*4882a593Smuzhiyun */ 5359*4882a593Smuzhiyun union l5cm_specific_data { 5360*4882a593Smuzhiyun u8 protocol_data[8]; 5361*4882a593Smuzhiyun struct regpair phy_address; 5362*4882a593Smuzhiyun struct l5cm_packet_size packet_size; 5363*4882a593Smuzhiyun struct l5cm_reduce_conn reduced_conn; 5364*4882a593Smuzhiyun }; 5365*4882a593Smuzhiyun 5366*4882a593Smuzhiyun /* 5367*4882a593Smuzhiyun * l5 slow path element 5368*4882a593Smuzhiyun */ 5369*4882a593Smuzhiyun struct l5cm_spe { 5370*4882a593Smuzhiyun struct spe_hdr hdr; 5371*4882a593Smuzhiyun union l5cm_specific_data data; 5372*4882a593Smuzhiyun }; 5373*4882a593Smuzhiyun 5374*4882a593Smuzhiyun 5375*4882a593Smuzhiyun 5376*4882a593Smuzhiyun 5377*4882a593Smuzhiyun /* 5378*4882a593Smuzhiyun * Termination variables 5379*4882a593Smuzhiyun */ 5380*4882a593Smuzhiyun struct l5cm_term_vars { 5381*4882a593Smuzhiyun u8 BitMap; 5382*4882a593Smuzhiyun #define L5CM_TERM_VARS_TCP_STATE (0xF<<0) 5383*4882a593Smuzhiyun #define L5CM_TERM_VARS_TCP_STATE_SHIFT 0 5384*4882a593Smuzhiyun #define L5CM_TERM_VARS_FIN_RECEIVED_SBIT (0x1<<4) 5385*4882a593Smuzhiyun #define L5CM_TERM_VARS_FIN_RECEIVED_SBIT_SHIFT 4 5386*4882a593Smuzhiyun #define L5CM_TERM_VARS_ACK_ON_FIN_RECEIVED_SBIT (0x1<<5) 5387*4882a593Smuzhiyun #define L5CM_TERM_VARS_ACK_ON_FIN_RECEIVED_SBIT_SHIFT 5 5388*4882a593Smuzhiyun #define L5CM_TERM_VARS_TERM_ON_CHIP (0x1<<6) 5389*4882a593Smuzhiyun #define L5CM_TERM_VARS_TERM_ON_CHIP_SHIFT 6 5390*4882a593Smuzhiyun #define L5CM_TERM_VARS_RSRV (0x1<<7) 5391*4882a593Smuzhiyun #define L5CM_TERM_VARS_RSRV_SHIFT 7 5392*4882a593Smuzhiyun }; 5393*4882a593Smuzhiyun 5394*4882a593Smuzhiyun 5395*4882a593Smuzhiyun 5396*4882a593Smuzhiyun 5397*4882a593Smuzhiyun /* 5398*4882a593Smuzhiyun * Tstorm Tcp flags 5399*4882a593Smuzhiyun */ 5400*4882a593Smuzhiyun struct tstorm_l5cm_tcp_flags { 5401*4882a593Smuzhiyun u16 flags; 5402*4882a593Smuzhiyun #define TSTORM_L5CM_TCP_FLAGS_VLAN_ID (0xFFF<<0) 5403*4882a593Smuzhiyun #define TSTORM_L5CM_TCP_FLAGS_VLAN_ID_SHIFT 0 5404*4882a593Smuzhiyun #define TSTORM_L5CM_TCP_FLAGS_DELAYED_ACK_EN (0x1<<12) 5405*4882a593Smuzhiyun #define TSTORM_L5CM_TCP_FLAGS_DELAYED_ACK_SHIFT 12 5406*4882a593Smuzhiyun #define TSTORM_L5CM_TCP_FLAGS_TS_ENABLED (0x1<<13) 5407*4882a593Smuzhiyun #define TSTORM_L5CM_TCP_FLAGS_TS_ENABLED_SHIFT 13 5408*4882a593Smuzhiyun #define TSTORM_L5CM_TCP_FLAGS_RSRV1 (0x3<<14) 5409*4882a593Smuzhiyun #define TSTORM_L5CM_TCP_FLAGS_RSRV1_SHIFT 14 5410*4882a593Smuzhiyun }; 5411*4882a593Smuzhiyun 5412*4882a593Smuzhiyun 5413*4882a593Smuzhiyun /* 5414*4882a593Smuzhiyun * Xstorm Tcp flags 5415*4882a593Smuzhiyun */ 5416*4882a593Smuzhiyun struct xstorm_l5cm_tcp_flags { 5417*4882a593Smuzhiyun u8 flags; 5418*4882a593Smuzhiyun #define XSTORM_L5CM_TCP_FLAGS_ENC_ENABLED (0x1<<0) 5419*4882a593Smuzhiyun #define XSTORM_L5CM_TCP_FLAGS_ENC_ENABLED_SHIFT 0 5420*4882a593Smuzhiyun #define XSTORM_L5CM_TCP_FLAGS_TS_ENABLED (0x1<<1) 5421*4882a593Smuzhiyun #define XSTORM_L5CM_TCP_FLAGS_TS_ENABLED_SHIFT 1 5422*4882a593Smuzhiyun #define XSTORM_L5CM_TCP_FLAGS_WND_SCL_EN (0x1<<2) 5423*4882a593Smuzhiyun #define XSTORM_L5CM_TCP_FLAGS_WND_SCL_EN_SHIFT 2 5424*4882a593Smuzhiyun #define XSTORM_L5CM_TCP_FLAGS_RSRV (0x1F<<3) 5425*4882a593Smuzhiyun #define XSTORM_L5CM_TCP_FLAGS_RSRV_SHIFT 3 5426*4882a593Smuzhiyun }; 5427*4882a593Smuzhiyun 5428*4882a593Smuzhiyun 5429*4882a593Smuzhiyun 5430*4882a593Smuzhiyun /* 5431*4882a593Smuzhiyun * Out-of-order states 5432*4882a593Smuzhiyun */ 5433*4882a593Smuzhiyun enum tcp_ooo_event { 5434*4882a593Smuzhiyun TCP_EVENT_ADD_PEN = 0, 5435*4882a593Smuzhiyun TCP_EVENT_ADD_NEW_ISLE = 1, 5436*4882a593Smuzhiyun TCP_EVENT_ADD_ISLE_RIGHT = 2, 5437*4882a593Smuzhiyun TCP_EVENT_ADD_ISLE_LEFT = 3, 5438*4882a593Smuzhiyun TCP_EVENT_JOIN = 4, 5439*4882a593Smuzhiyun TCP_EVENT_NOP = 5, 5440*4882a593Smuzhiyun MAX_TCP_OOO_EVENT 5441*4882a593Smuzhiyun }; 5442*4882a593Smuzhiyun 5443*4882a593Smuzhiyun 5444*4882a593Smuzhiyun /* 5445*4882a593Smuzhiyun * OOO support modes 5446*4882a593Smuzhiyun */ 5447*4882a593Smuzhiyun enum tcp_tstorm_ooo { 5448*4882a593Smuzhiyun TCP_TSTORM_OOO_DROP_AND_PROC_ACK = 0, 5449*4882a593Smuzhiyun TCP_TSTORM_OOO_SEND_PURE_ACK = 1, 5450*4882a593Smuzhiyun TCP_TSTORM_OOO_SUPPORTED = 2, 5451*4882a593Smuzhiyun MAX_TCP_TSTORM_OOO 5452*4882a593Smuzhiyun }; 5453*4882a593Smuzhiyun 5454*4882a593Smuzhiyun 5455*4882a593Smuzhiyun 5456*4882a593Smuzhiyun 5457*4882a593Smuzhiyun 5458*4882a593Smuzhiyun 5459*4882a593Smuzhiyun 5460*4882a593Smuzhiyun 5461*4882a593Smuzhiyun 5462*4882a593Smuzhiyun #endif /* __5710_HSI_CNIC_LE__ */ 5463