1f7917c00SJeff Kirsher /* 2f7917c00SJeff Kirsher * Copyright (c) 2004-2008 Chelsio, Inc. All rights reserved. 3f7917c00SJeff Kirsher * 4f7917c00SJeff Kirsher * This software is available to you under a choice of one of two 5f7917c00SJeff Kirsher * licenses. You may choose to be licensed under the terms of the GNU 6f7917c00SJeff Kirsher * General Public License (GPL) Version 2, available from the file 7f7917c00SJeff Kirsher * COPYING in the main directory of this source tree, or the 8f7917c00SJeff Kirsher * OpenIB.org BSD license below: 9f7917c00SJeff Kirsher * 10f7917c00SJeff Kirsher * Redistribution and use in source and binary forms, with or 11f7917c00SJeff Kirsher * without modification, are permitted provided that the following 12f7917c00SJeff Kirsher * conditions are met: 13f7917c00SJeff Kirsher * 14f7917c00SJeff Kirsher * - Redistributions of source code must retain the above 15f7917c00SJeff Kirsher * copyright notice, this list of conditions and the following 16f7917c00SJeff Kirsher * disclaimer. 17f7917c00SJeff Kirsher * 18f7917c00SJeff Kirsher * - Redistributions in binary form must reproduce the above 19f7917c00SJeff Kirsher * copyright notice, this list of conditions and the following 20f7917c00SJeff Kirsher * disclaimer in the documentation and/or other materials 21f7917c00SJeff Kirsher * provided with the distribution. 22f7917c00SJeff Kirsher * 23f7917c00SJeff Kirsher * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 24f7917c00SJeff Kirsher * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 25f7917c00SJeff Kirsher * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 26f7917c00SJeff Kirsher * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 27f7917c00SJeff Kirsher * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 28f7917c00SJeff Kirsher * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 29f7917c00SJeff Kirsher * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 30f7917c00SJeff Kirsher * SOFTWARE. 31f7917c00SJeff Kirsher */ 32f7917c00SJeff Kirsher #ifndef T3_CPL_H 33f7917c00SJeff Kirsher #define T3_CPL_H 34f7917c00SJeff Kirsher 35f7917c00SJeff Kirsher #if !defined(__LITTLE_ENDIAN_BITFIELD) && !defined(__BIG_ENDIAN_BITFIELD) 36f7917c00SJeff Kirsher # include <asm/byteorder.h> 37f7917c00SJeff Kirsher #endif 38f7917c00SJeff Kirsher 39f7917c00SJeff Kirsher enum CPL_opcode { 40f7917c00SJeff Kirsher CPL_PASS_OPEN_REQ = 0x1, 41f7917c00SJeff Kirsher CPL_PASS_ACCEPT_RPL = 0x2, 42f7917c00SJeff Kirsher CPL_ACT_OPEN_REQ = 0x3, 43f7917c00SJeff Kirsher CPL_SET_TCB = 0x4, 44f7917c00SJeff Kirsher CPL_SET_TCB_FIELD = 0x5, 45f7917c00SJeff Kirsher CPL_GET_TCB = 0x6, 46f7917c00SJeff Kirsher CPL_PCMD = 0x7, 47f7917c00SJeff Kirsher CPL_CLOSE_CON_REQ = 0x8, 48f7917c00SJeff Kirsher CPL_CLOSE_LISTSRV_REQ = 0x9, 49f7917c00SJeff Kirsher CPL_ABORT_REQ = 0xA, 50f7917c00SJeff Kirsher CPL_ABORT_RPL = 0xB, 51f7917c00SJeff Kirsher CPL_TX_DATA = 0xC, 52f7917c00SJeff Kirsher CPL_RX_DATA_ACK = 0xD, 53f7917c00SJeff Kirsher CPL_TX_PKT = 0xE, 54f7917c00SJeff Kirsher CPL_RTE_DELETE_REQ = 0xF, 55f7917c00SJeff Kirsher CPL_RTE_WRITE_REQ = 0x10, 56f7917c00SJeff Kirsher CPL_RTE_READ_REQ = 0x11, 57f7917c00SJeff Kirsher CPL_L2T_WRITE_REQ = 0x12, 58f7917c00SJeff Kirsher CPL_L2T_READ_REQ = 0x13, 59f7917c00SJeff Kirsher CPL_SMT_WRITE_REQ = 0x14, 60f7917c00SJeff Kirsher CPL_SMT_READ_REQ = 0x15, 61f7917c00SJeff Kirsher CPL_TX_PKT_LSO = 0x16, 62f7917c00SJeff Kirsher CPL_PCMD_READ = 0x17, 63f7917c00SJeff Kirsher CPL_BARRIER = 0x18, 64f7917c00SJeff Kirsher CPL_TID_RELEASE = 0x1A, 65f7917c00SJeff Kirsher 66f7917c00SJeff Kirsher CPL_CLOSE_LISTSRV_RPL = 0x20, 67f7917c00SJeff Kirsher CPL_ERROR = 0x21, 68f7917c00SJeff Kirsher CPL_GET_TCB_RPL = 0x22, 69f7917c00SJeff Kirsher CPL_L2T_WRITE_RPL = 0x23, 70f7917c00SJeff Kirsher CPL_PCMD_READ_RPL = 0x24, 71f7917c00SJeff Kirsher CPL_PCMD_RPL = 0x25, 72f7917c00SJeff Kirsher CPL_PEER_CLOSE = 0x26, 73f7917c00SJeff Kirsher CPL_RTE_DELETE_RPL = 0x27, 74f7917c00SJeff Kirsher CPL_RTE_WRITE_RPL = 0x28, 75f7917c00SJeff Kirsher CPL_RX_DDP_COMPLETE = 0x29, 76f7917c00SJeff Kirsher CPL_RX_PHYS_ADDR = 0x2A, 77f7917c00SJeff Kirsher CPL_RX_PKT = 0x2B, 78f7917c00SJeff Kirsher CPL_RX_URG_NOTIFY = 0x2C, 79f7917c00SJeff Kirsher CPL_SET_TCB_RPL = 0x2D, 80f7917c00SJeff Kirsher CPL_SMT_WRITE_RPL = 0x2E, 81f7917c00SJeff Kirsher CPL_TX_DATA_ACK = 0x2F, 82f7917c00SJeff Kirsher 83f7917c00SJeff Kirsher CPL_ABORT_REQ_RSS = 0x30, 84f7917c00SJeff Kirsher CPL_ABORT_RPL_RSS = 0x31, 85f7917c00SJeff Kirsher CPL_CLOSE_CON_RPL = 0x32, 86f7917c00SJeff Kirsher CPL_ISCSI_HDR = 0x33, 87f7917c00SJeff Kirsher CPL_L2T_READ_RPL = 0x34, 88f7917c00SJeff Kirsher CPL_RDMA_CQE = 0x35, 89f7917c00SJeff Kirsher CPL_RDMA_CQE_READ_RSP = 0x36, 90f7917c00SJeff Kirsher CPL_RDMA_CQE_ERR = 0x37, 91f7917c00SJeff Kirsher CPL_RTE_READ_RPL = 0x38, 92f7917c00SJeff Kirsher CPL_RX_DATA = 0x39, 93f7917c00SJeff Kirsher 94f7917c00SJeff Kirsher CPL_ACT_OPEN_RPL = 0x40, 95f7917c00SJeff Kirsher CPL_PASS_OPEN_RPL = 0x41, 96f7917c00SJeff Kirsher CPL_RX_DATA_DDP = 0x42, 97f7917c00SJeff Kirsher CPL_SMT_READ_RPL = 0x43, 98f7917c00SJeff Kirsher 99f7917c00SJeff Kirsher CPL_ACT_ESTABLISH = 0x50, 100f7917c00SJeff Kirsher CPL_PASS_ESTABLISH = 0x51, 101f7917c00SJeff Kirsher 102f7917c00SJeff Kirsher CPL_PASS_ACCEPT_REQ = 0x70, 103f7917c00SJeff Kirsher 104f7917c00SJeff Kirsher CPL_ASYNC_NOTIF = 0x80, /* fake opcode for async notifications */ 105f7917c00SJeff Kirsher 106f7917c00SJeff Kirsher CPL_TX_DMA_ACK = 0xA0, 107f7917c00SJeff Kirsher CPL_RDMA_READ_REQ = 0xA1, 108f7917c00SJeff Kirsher CPL_RDMA_TERMINATE = 0xA2, 109f7917c00SJeff Kirsher CPL_TRACE_PKT = 0xA3, 110f7917c00SJeff Kirsher CPL_RDMA_EC_STATUS = 0xA5, 111f7917c00SJeff Kirsher 112f7917c00SJeff Kirsher NUM_CPL_CMDS /* must be last and previous entries must be sorted */ 113f7917c00SJeff Kirsher }; 114f7917c00SJeff Kirsher 115f7917c00SJeff Kirsher enum CPL_error { 116f7917c00SJeff Kirsher CPL_ERR_NONE = 0, 117f7917c00SJeff Kirsher CPL_ERR_TCAM_PARITY = 1, 118f7917c00SJeff Kirsher CPL_ERR_TCAM_FULL = 3, 119f7917c00SJeff Kirsher CPL_ERR_CONN_RESET = 20, 120f7917c00SJeff Kirsher CPL_ERR_CONN_EXIST = 22, 121f7917c00SJeff Kirsher CPL_ERR_ARP_MISS = 23, 122f7917c00SJeff Kirsher CPL_ERR_BAD_SYN = 24, 123f7917c00SJeff Kirsher CPL_ERR_CONN_TIMEDOUT = 30, 124f7917c00SJeff Kirsher CPL_ERR_XMIT_TIMEDOUT = 31, 125f7917c00SJeff Kirsher CPL_ERR_PERSIST_TIMEDOUT = 32, 126f7917c00SJeff Kirsher CPL_ERR_FINWAIT2_TIMEDOUT = 33, 127f7917c00SJeff Kirsher CPL_ERR_KEEPALIVE_TIMEDOUT = 34, 128f7917c00SJeff Kirsher CPL_ERR_RTX_NEG_ADVICE = 35, 129f7917c00SJeff Kirsher CPL_ERR_PERSIST_NEG_ADVICE = 36, 130f7917c00SJeff Kirsher CPL_ERR_ABORT_FAILED = 42, 131f7917c00SJeff Kirsher CPL_ERR_GENERAL = 99 132f7917c00SJeff Kirsher }; 133f7917c00SJeff Kirsher 134f7917c00SJeff Kirsher enum { 135f7917c00SJeff Kirsher CPL_CONN_POLICY_AUTO = 0, 136f7917c00SJeff Kirsher CPL_CONN_POLICY_ASK = 1, 137f7917c00SJeff Kirsher CPL_CONN_POLICY_DENY = 3 138f7917c00SJeff Kirsher }; 139f7917c00SJeff Kirsher 140f7917c00SJeff Kirsher enum { 141f7917c00SJeff Kirsher ULP_MODE_NONE = 0, 142f7917c00SJeff Kirsher ULP_MODE_ISCSI = 2, 143f7917c00SJeff Kirsher ULP_MODE_RDMA = 4, 144f7917c00SJeff Kirsher ULP_MODE_TCPDDP = 5 145f7917c00SJeff Kirsher }; 146f7917c00SJeff Kirsher 147f7917c00SJeff Kirsher enum { 148f7917c00SJeff Kirsher ULP_CRC_HEADER = 1 << 0, 149f7917c00SJeff Kirsher ULP_CRC_DATA = 1 << 1 150f7917c00SJeff Kirsher }; 151f7917c00SJeff Kirsher 152f7917c00SJeff Kirsher enum { 153f7917c00SJeff Kirsher CPL_PASS_OPEN_ACCEPT, 154f7917c00SJeff Kirsher CPL_PASS_OPEN_REJECT 155f7917c00SJeff Kirsher }; 156f7917c00SJeff Kirsher 157f7917c00SJeff Kirsher enum { 158f7917c00SJeff Kirsher CPL_ABORT_SEND_RST = 0, 159f7917c00SJeff Kirsher CPL_ABORT_NO_RST, 160f7917c00SJeff Kirsher CPL_ABORT_POST_CLOSE_REQ = 2 161f7917c00SJeff Kirsher }; 162f7917c00SJeff Kirsher 163f7917c00SJeff Kirsher enum { /* TX_PKT_LSO ethernet types */ 164f7917c00SJeff Kirsher CPL_ETH_II, 165f7917c00SJeff Kirsher CPL_ETH_II_VLAN, 166f7917c00SJeff Kirsher CPL_ETH_802_3, 167f7917c00SJeff Kirsher CPL_ETH_802_3_VLAN 168f7917c00SJeff Kirsher }; 169f7917c00SJeff Kirsher 170f7917c00SJeff Kirsher enum { /* TCP congestion control algorithms */ 171f7917c00SJeff Kirsher CONG_ALG_RENO, 172f7917c00SJeff Kirsher CONG_ALG_TAHOE, 173f7917c00SJeff Kirsher CONG_ALG_NEWRENO, 174f7917c00SJeff Kirsher CONG_ALG_HIGHSPEED 175f7917c00SJeff Kirsher }; 176f7917c00SJeff Kirsher 177f7917c00SJeff Kirsher enum { /* RSS hash type */ 178f7917c00SJeff Kirsher RSS_HASH_NONE = 0, 179f7917c00SJeff Kirsher RSS_HASH_2_TUPLE = 1, 180f7917c00SJeff Kirsher RSS_HASH_4_TUPLE = 2, 181f7917c00SJeff Kirsher RSS_HASH_TCPV6 = 3 182f7917c00SJeff Kirsher }; 183f7917c00SJeff Kirsher 184f7917c00SJeff Kirsher union opcode_tid { 185f7917c00SJeff Kirsher __be32 opcode_tid; 186f7917c00SJeff Kirsher __u8 opcode; 187f7917c00SJeff Kirsher }; 188f7917c00SJeff Kirsher 189f7917c00SJeff Kirsher #define S_OPCODE 24 190f7917c00SJeff Kirsher #define V_OPCODE(x) ((x) << S_OPCODE) 191f7917c00SJeff Kirsher #define G_OPCODE(x) (((x) >> S_OPCODE) & 0xFF) 192f7917c00SJeff Kirsher #define G_TID(x) ((x) & 0xFFFFFF) 193f7917c00SJeff Kirsher 194f7917c00SJeff Kirsher #define S_QNUM 0 195f7917c00SJeff Kirsher #define G_QNUM(x) (((x) >> S_QNUM) & 0xFFFF) 196f7917c00SJeff Kirsher 197f7917c00SJeff Kirsher #define S_HASHTYPE 22 198f7917c00SJeff Kirsher #define M_HASHTYPE 0x3 199f7917c00SJeff Kirsher #define G_HASHTYPE(x) (((x) >> S_HASHTYPE) & M_HASHTYPE) 200f7917c00SJeff Kirsher 201f7917c00SJeff Kirsher /* tid is assumed to be 24-bits */ 202f7917c00SJeff Kirsher #define MK_OPCODE_TID(opcode, tid) (V_OPCODE(opcode) | (tid)) 203f7917c00SJeff Kirsher 204f7917c00SJeff Kirsher #define OPCODE_TID(cmd) ((cmd)->ot.opcode_tid) 205f7917c00SJeff Kirsher 206f7917c00SJeff Kirsher /* extract the TID from a CPL command */ 207f7917c00SJeff Kirsher #define GET_TID(cmd) (G_TID(ntohl(OPCODE_TID(cmd)))) 208f7917c00SJeff Kirsher 209f7917c00SJeff Kirsher struct tcp_options { 210f7917c00SJeff Kirsher __be16 mss; 211f7917c00SJeff Kirsher __u8 wsf; 212f7917c00SJeff Kirsher #if defined(__LITTLE_ENDIAN_BITFIELD) 213f7917c00SJeff Kirsher __u8:5; 214f7917c00SJeff Kirsher __u8 ecn:1; 215f7917c00SJeff Kirsher __u8 sack:1; 216f7917c00SJeff Kirsher __u8 tstamp:1; 217f7917c00SJeff Kirsher #else 218f7917c00SJeff Kirsher __u8 tstamp:1; 219f7917c00SJeff Kirsher __u8 sack:1; 220f7917c00SJeff Kirsher __u8 ecn:1; 221f7917c00SJeff Kirsher __u8:5; 222f7917c00SJeff Kirsher #endif 223f7917c00SJeff Kirsher }; 224f7917c00SJeff Kirsher 225f7917c00SJeff Kirsher struct rss_header { 226f7917c00SJeff Kirsher __u8 opcode; 227f7917c00SJeff Kirsher #if defined(__LITTLE_ENDIAN_BITFIELD) 228f7917c00SJeff Kirsher __u8 cpu_idx:6; 229f7917c00SJeff Kirsher __u8 hash_type:2; 230f7917c00SJeff Kirsher #else 231f7917c00SJeff Kirsher __u8 hash_type:2; 232f7917c00SJeff Kirsher __u8 cpu_idx:6; 233f7917c00SJeff Kirsher #endif 234f7917c00SJeff Kirsher __be16 cq_idx; 235f7917c00SJeff Kirsher __be32 rss_hash_val; 236f7917c00SJeff Kirsher }; 237f7917c00SJeff Kirsher 238f7917c00SJeff Kirsher #ifndef CHELSIO_FW 239f7917c00SJeff Kirsher struct work_request_hdr { 240f7917c00SJeff Kirsher __be32 wr_hi; 241f7917c00SJeff Kirsher __be32 wr_lo; 242f7917c00SJeff Kirsher }; 243f7917c00SJeff Kirsher 244f7917c00SJeff Kirsher /* wr_hi fields */ 245f7917c00SJeff Kirsher #define S_WR_SGE_CREDITS 0 246f7917c00SJeff Kirsher #define M_WR_SGE_CREDITS 0xFF 247f7917c00SJeff Kirsher #define V_WR_SGE_CREDITS(x) ((x) << S_WR_SGE_CREDITS) 248f7917c00SJeff Kirsher #define G_WR_SGE_CREDITS(x) (((x) >> S_WR_SGE_CREDITS) & M_WR_SGE_CREDITS) 249f7917c00SJeff Kirsher 250f7917c00SJeff Kirsher #define S_WR_SGLSFLT 8 251f7917c00SJeff Kirsher #define M_WR_SGLSFLT 0xFF 252f7917c00SJeff Kirsher #define V_WR_SGLSFLT(x) ((x) << S_WR_SGLSFLT) 253f7917c00SJeff Kirsher #define G_WR_SGLSFLT(x) (((x) >> S_WR_SGLSFLT) & M_WR_SGLSFLT) 254f7917c00SJeff Kirsher 255f7917c00SJeff Kirsher #define S_WR_BCNTLFLT 16 256f7917c00SJeff Kirsher #define M_WR_BCNTLFLT 0xF 257f7917c00SJeff Kirsher #define V_WR_BCNTLFLT(x) ((x) << S_WR_BCNTLFLT) 258f7917c00SJeff Kirsher #define G_WR_BCNTLFLT(x) (((x) >> S_WR_BCNTLFLT) & M_WR_BCNTLFLT) 259f7917c00SJeff Kirsher 260f7917c00SJeff Kirsher #define S_WR_DATATYPE 20 261f7917c00SJeff Kirsher #define V_WR_DATATYPE(x) ((x) << S_WR_DATATYPE) 262f7917c00SJeff Kirsher #define F_WR_DATATYPE V_WR_DATATYPE(1U) 263f7917c00SJeff Kirsher 264f7917c00SJeff Kirsher #define S_WR_COMPL 21 265f7917c00SJeff Kirsher #define V_WR_COMPL(x) ((x) << S_WR_COMPL) 266f7917c00SJeff Kirsher #define F_WR_COMPL V_WR_COMPL(1U) 267f7917c00SJeff Kirsher 268f7917c00SJeff Kirsher #define S_WR_EOP 22 269f7917c00SJeff Kirsher #define V_WR_EOP(x) ((x) << S_WR_EOP) 270f7917c00SJeff Kirsher #define F_WR_EOP V_WR_EOP(1U) 271f7917c00SJeff Kirsher 272f7917c00SJeff Kirsher #define S_WR_SOP 23 273f7917c00SJeff Kirsher #define V_WR_SOP(x) ((x) << S_WR_SOP) 274f7917c00SJeff Kirsher #define F_WR_SOP V_WR_SOP(1U) 275f7917c00SJeff Kirsher 276f7917c00SJeff Kirsher #define S_WR_OP 24 277f7917c00SJeff Kirsher #define M_WR_OP 0xFF 278f7917c00SJeff Kirsher #define V_WR_OP(x) ((x) << S_WR_OP) 279f7917c00SJeff Kirsher #define G_WR_OP(x) (((x) >> S_WR_OP) & M_WR_OP) 280f7917c00SJeff Kirsher 281f7917c00SJeff Kirsher /* wr_lo fields */ 282f7917c00SJeff Kirsher #define S_WR_LEN 0 283f7917c00SJeff Kirsher #define M_WR_LEN 0xFF 284f7917c00SJeff Kirsher #define V_WR_LEN(x) ((x) << S_WR_LEN) 285f7917c00SJeff Kirsher #define G_WR_LEN(x) (((x) >> S_WR_LEN) & M_WR_LEN) 286f7917c00SJeff Kirsher 287f7917c00SJeff Kirsher #define S_WR_TID 8 288f7917c00SJeff Kirsher #define M_WR_TID 0xFFFFF 289f7917c00SJeff Kirsher #define V_WR_TID(x) ((x) << S_WR_TID) 290f7917c00SJeff Kirsher #define G_WR_TID(x) (((x) >> S_WR_TID) & M_WR_TID) 291f7917c00SJeff Kirsher 292f7917c00SJeff Kirsher #define S_WR_CR_FLUSH 30 293f7917c00SJeff Kirsher #define V_WR_CR_FLUSH(x) ((x) << S_WR_CR_FLUSH) 294f7917c00SJeff Kirsher #define F_WR_CR_FLUSH V_WR_CR_FLUSH(1U) 295f7917c00SJeff Kirsher 296f7917c00SJeff Kirsher #define S_WR_GEN 31 297f7917c00SJeff Kirsher #define V_WR_GEN(x) ((x) << S_WR_GEN) 298f7917c00SJeff Kirsher #define F_WR_GEN V_WR_GEN(1U) 299f7917c00SJeff Kirsher 300f7917c00SJeff Kirsher # define WR_HDR struct work_request_hdr wr 301f7917c00SJeff Kirsher # define RSS_HDR 302f7917c00SJeff Kirsher #else 303f7917c00SJeff Kirsher # define WR_HDR 304f7917c00SJeff Kirsher # define RSS_HDR struct rss_header rss_hdr; 305f7917c00SJeff Kirsher #endif 306f7917c00SJeff Kirsher 307f7917c00SJeff Kirsher /* option 0 lower-half fields */ 308f7917c00SJeff Kirsher #define S_CPL_STATUS 0 309f7917c00SJeff Kirsher #define M_CPL_STATUS 0xFF 310f7917c00SJeff Kirsher #define V_CPL_STATUS(x) ((x) << S_CPL_STATUS) 311f7917c00SJeff Kirsher #define G_CPL_STATUS(x) (((x) >> S_CPL_STATUS) & M_CPL_STATUS) 312f7917c00SJeff Kirsher 313f7917c00SJeff Kirsher #define S_INJECT_TIMER 6 314f7917c00SJeff Kirsher #define V_INJECT_TIMER(x) ((x) << S_INJECT_TIMER) 315f7917c00SJeff Kirsher #define F_INJECT_TIMER V_INJECT_TIMER(1U) 316f7917c00SJeff Kirsher 317f7917c00SJeff Kirsher #define S_NO_OFFLOAD 7 318f7917c00SJeff Kirsher #define V_NO_OFFLOAD(x) ((x) << S_NO_OFFLOAD) 319f7917c00SJeff Kirsher #define F_NO_OFFLOAD V_NO_OFFLOAD(1U) 320f7917c00SJeff Kirsher 321f7917c00SJeff Kirsher #define S_ULP_MODE 8 322f7917c00SJeff Kirsher #define M_ULP_MODE 0xF 323f7917c00SJeff Kirsher #define V_ULP_MODE(x) ((x) << S_ULP_MODE) 324f7917c00SJeff Kirsher #define G_ULP_MODE(x) (((x) >> S_ULP_MODE) & M_ULP_MODE) 325f7917c00SJeff Kirsher 326f7917c00SJeff Kirsher #define S_RCV_BUFSIZ 12 327f7917c00SJeff Kirsher #define M_RCV_BUFSIZ 0x3FFF 328f7917c00SJeff Kirsher #define V_RCV_BUFSIZ(x) ((x) << S_RCV_BUFSIZ) 329f7917c00SJeff Kirsher #define G_RCV_BUFSIZ(x) (((x) >> S_RCV_BUFSIZ) & M_RCV_BUFSIZ) 330f7917c00SJeff Kirsher 331f7917c00SJeff Kirsher #define S_TOS 26 332f7917c00SJeff Kirsher #define M_TOS 0x3F 333f7917c00SJeff Kirsher #define V_TOS(x) ((x) << S_TOS) 334f7917c00SJeff Kirsher #define G_TOS(x) (((x) >> S_TOS) & M_TOS) 335f7917c00SJeff Kirsher 336f7917c00SJeff Kirsher /* option 0 upper-half fields */ 337f7917c00SJeff Kirsher #define S_DELACK 0 338f7917c00SJeff Kirsher #define V_DELACK(x) ((x) << S_DELACK) 339f7917c00SJeff Kirsher #define F_DELACK V_DELACK(1U) 340f7917c00SJeff Kirsher 341f7917c00SJeff Kirsher #define S_NO_CONG 1 342f7917c00SJeff Kirsher #define V_NO_CONG(x) ((x) << S_NO_CONG) 343f7917c00SJeff Kirsher #define F_NO_CONG V_NO_CONG(1U) 344f7917c00SJeff Kirsher 345f7917c00SJeff Kirsher #define S_SRC_MAC_SEL 2 346f7917c00SJeff Kirsher #define M_SRC_MAC_SEL 0x3 347f7917c00SJeff Kirsher #define V_SRC_MAC_SEL(x) ((x) << S_SRC_MAC_SEL) 348f7917c00SJeff Kirsher #define G_SRC_MAC_SEL(x) (((x) >> S_SRC_MAC_SEL) & M_SRC_MAC_SEL) 349f7917c00SJeff Kirsher 350f7917c00SJeff Kirsher #define S_L2T_IDX 4 351f7917c00SJeff Kirsher #define M_L2T_IDX 0x7FF 352f7917c00SJeff Kirsher #define V_L2T_IDX(x) ((x) << S_L2T_IDX) 353f7917c00SJeff Kirsher #define G_L2T_IDX(x) (((x) >> S_L2T_IDX) & M_L2T_IDX) 354f7917c00SJeff Kirsher 355f7917c00SJeff Kirsher #define S_TX_CHANNEL 15 356f7917c00SJeff Kirsher #define V_TX_CHANNEL(x) ((x) << S_TX_CHANNEL) 357f7917c00SJeff Kirsher #define F_TX_CHANNEL V_TX_CHANNEL(1U) 358f7917c00SJeff Kirsher 359f7917c00SJeff Kirsher #define S_TCAM_BYPASS 16 360f7917c00SJeff Kirsher #define V_TCAM_BYPASS(x) ((x) << S_TCAM_BYPASS) 361f7917c00SJeff Kirsher #define F_TCAM_BYPASS V_TCAM_BYPASS(1U) 362f7917c00SJeff Kirsher 363f7917c00SJeff Kirsher #define S_NAGLE 17 364f7917c00SJeff Kirsher #define V_NAGLE(x) ((x) << S_NAGLE) 365f7917c00SJeff Kirsher #define F_NAGLE V_NAGLE(1U) 366f7917c00SJeff Kirsher 367f7917c00SJeff Kirsher #define S_WND_SCALE 18 368f7917c00SJeff Kirsher #define M_WND_SCALE 0xF 369f7917c00SJeff Kirsher #define V_WND_SCALE(x) ((x) << S_WND_SCALE) 370f7917c00SJeff Kirsher #define G_WND_SCALE(x) (((x) >> S_WND_SCALE) & M_WND_SCALE) 371f7917c00SJeff Kirsher 372f7917c00SJeff Kirsher #define S_KEEP_ALIVE 22 373f7917c00SJeff Kirsher #define V_KEEP_ALIVE(x) ((x) << S_KEEP_ALIVE) 374f7917c00SJeff Kirsher #define F_KEEP_ALIVE V_KEEP_ALIVE(1U) 375f7917c00SJeff Kirsher 376f7917c00SJeff Kirsher #define S_MAX_RETRANS 23 377f7917c00SJeff Kirsher #define M_MAX_RETRANS 0xF 378f7917c00SJeff Kirsher #define V_MAX_RETRANS(x) ((x) << S_MAX_RETRANS) 379f7917c00SJeff Kirsher #define G_MAX_RETRANS(x) (((x) >> S_MAX_RETRANS) & M_MAX_RETRANS) 380f7917c00SJeff Kirsher 381f7917c00SJeff Kirsher #define S_MAX_RETRANS_OVERRIDE 27 382f7917c00SJeff Kirsher #define V_MAX_RETRANS_OVERRIDE(x) ((x) << S_MAX_RETRANS_OVERRIDE) 383f7917c00SJeff Kirsher #define F_MAX_RETRANS_OVERRIDE V_MAX_RETRANS_OVERRIDE(1U) 384f7917c00SJeff Kirsher 385f7917c00SJeff Kirsher #define S_MSS_IDX 28 386f7917c00SJeff Kirsher #define M_MSS_IDX 0xF 387f7917c00SJeff Kirsher #define V_MSS_IDX(x) ((x) << S_MSS_IDX) 388f7917c00SJeff Kirsher #define G_MSS_IDX(x) (((x) >> S_MSS_IDX) & M_MSS_IDX) 389f7917c00SJeff Kirsher 390f7917c00SJeff Kirsher /* option 1 fields */ 391f7917c00SJeff Kirsher #define S_RSS_ENABLE 0 392f7917c00SJeff Kirsher #define V_RSS_ENABLE(x) ((x) << S_RSS_ENABLE) 393f7917c00SJeff Kirsher #define F_RSS_ENABLE V_RSS_ENABLE(1U) 394f7917c00SJeff Kirsher 395f7917c00SJeff Kirsher #define S_RSS_MASK_LEN 1 396f7917c00SJeff Kirsher #define M_RSS_MASK_LEN 0x7 397f7917c00SJeff Kirsher #define V_RSS_MASK_LEN(x) ((x) << S_RSS_MASK_LEN) 398f7917c00SJeff Kirsher #define G_RSS_MASK_LEN(x) (((x) >> S_RSS_MASK_LEN) & M_RSS_MASK_LEN) 399f7917c00SJeff Kirsher 400f7917c00SJeff Kirsher #define S_CPU_IDX 4 401f7917c00SJeff Kirsher #define M_CPU_IDX 0x3F 402f7917c00SJeff Kirsher #define V_CPU_IDX(x) ((x) << S_CPU_IDX) 403f7917c00SJeff Kirsher #define G_CPU_IDX(x) (((x) >> S_CPU_IDX) & M_CPU_IDX) 404f7917c00SJeff Kirsher 405f7917c00SJeff Kirsher #define S_MAC_MATCH_VALID 18 406f7917c00SJeff Kirsher #define V_MAC_MATCH_VALID(x) ((x) << S_MAC_MATCH_VALID) 407f7917c00SJeff Kirsher #define F_MAC_MATCH_VALID V_MAC_MATCH_VALID(1U) 408f7917c00SJeff Kirsher 409f7917c00SJeff Kirsher #define S_CONN_POLICY 19 410f7917c00SJeff Kirsher #define M_CONN_POLICY 0x3 411f7917c00SJeff Kirsher #define V_CONN_POLICY(x) ((x) << S_CONN_POLICY) 412f7917c00SJeff Kirsher #define G_CONN_POLICY(x) (((x) >> S_CONN_POLICY) & M_CONN_POLICY) 413f7917c00SJeff Kirsher 414f7917c00SJeff Kirsher #define S_SYN_DEFENSE 21 415f7917c00SJeff Kirsher #define V_SYN_DEFENSE(x) ((x) << S_SYN_DEFENSE) 416f7917c00SJeff Kirsher #define F_SYN_DEFENSE V_SYN_DEFENSE(1U) 417f7917c00SJeff Kirsher 418f7917c00SJeff Kirsher #define S_VLAN_PRI 22 419f7917c00SJeff Kirsher #define M_VLAN_PRI 0x3 420f7917c00SJeff Kirsher #define V_VLAN_PRI(x) ((x) << S_VLAN_PRI) 421f7917c00SJeff Kirsher #define G_VLAN_PRI(x) (((x) >> S_VLAN_PRI) & M_VLAN_PRI) 422f7917c00SJeff Kirsher 423f7917c00SJeff Kirsher #define S_VLAN_PRI_VALID 24 424f7917c00SJeff Kirsher #define V_VLAN_PRI_VALID(x) ((x) << S_VLAN_PRI_VALID) 425f7917c00SJeff Kirsher #define F_VLAN_PRI_VALID V_VLAN_PRI_VALID(1U) 426f7917c00SJeff Kirsher 427f7917c00SJeff Kirsher #define S_PKT_TYPE 25 428f7917c00SJeff Kirsher #define M_PKT_TYPE 0x3 429f7917c00SJeff Kirsher #define V_PKT_TYPE(x) ((x) << S_PKT_TYPE) 430f7917c00SJeff Kirsher #define G_PKT_TYPE(x) (((x) >> S_PKT_TYPE) & M_PKT_TYPE) 431f7917c00SJeff Kirsher 432f7917c00SJeff Kirsher #define S_MAC_MATCH 27 433f7917c00SJeff Kirsher #define M_MAC_MATCH 0x1F 434f7917c00SJeff Kirsher #define V_MAC_MATCH(x) ((x) << S_MAC_MATCH) 435f7917c00SJeff Kirsher #define G_MAC_MATCH(x) (((x) >> S_MAC_MATCH) & M_MAC_MATCH) 436f7917c00SJeff Kirsher 437f7917c00SJeff Kirsher /* option 2 fields */ 438f7917c00SJeff Kirsher #define S_CPU_INDEX 0 439f7917c00SJeff Kirsher #define M_CPU_INDEX 0x7F 440f7917c00SJeff Kirsher #define V_CPU_INDEX(x) ((x) << S_CPU_INDEX) 441f7917c00SJeff Kirsher #define G_CPU_INDEX(x) (((x) >> S_CPU_INDEX) & M_CPU_INDEX) 442f7917c00SJeff Kirsher 443f7917c00SJeff Kirsher #define S_CPU_INDEX_VALID 7 444f7917c00SJeff Kirsher #define V_CPU_INDEX_VALID(x) ((x) << S_CPU_INDEX_VALID) 445f7917c00SJeff Kirsher #define F_CPU_INDEX_VALID V_CPU_INDEX_VALID(1U) 446f7917c00SJeff Kirsher 447f7917c00SJeff Kirsher #define S_RX_COALESCE 8 448f7917c00SJeff Kirsher #define M_RX_COALESCE 0x3 449f7917c00SJeff Kirsher #define V_RX_COALESCE(x) ((x) << S_RX_COALESCE) 450f7917c00SJeff Kirsher #define G_RX_COALESCE(x) (((x) >> S_RX_COALESCE) & M_RX_COALESCE) 451f7917c00SJeff Kirsher 452f7917c00SJeff Kirsher #define S_RX_COALESCE_VALID 10 453f7917c00SJeff Kirsher #define V_RX_COALESCE_VALID(x) ((x) << S_RX_COALESCE_VALID) 454f7917c00SJeff Kirsher #define F_RX_COALESCE_VALID V_RX_COALESCE_VALID(1U) 455f7917c00SJeff Kirsher 456f7917c00SJeff Kirsher #define S_CONG_CONTROL_FLAVOR 11 457f7917c00SJeff Kirsher #define M_CONG_CONTROL_FLAVOR 0x3 458f7917c00SJeff Kirsher #define V_CONG_CONTROL_FLAVOR(x) ((x) << S_CONG_CONTROL_FLAVOR) 459f7917c00SJeff Kirsher #define G_CONG_CONTROL_FLAVOR(x) (((x) >> S_CONG_CONTROL_FLAVOR) & M_CONG_CONTROL_FLAVOR) 460f7917c00SJeff Kirsher 461f7917c00SJeff Kirsher #define S_PACING_FLAVOR 13 462f7917c00SJeff Kirsher #define M_PACING_FLAVOR 0x3 463f7917c00SJeff Kirsher #define V_PACING_FLAVOR(x) ((x) << S_PACING_FLAVOR) 464f7917c00SJeff Kirsher #define G_PACING_FLAVOR(x) (((x) >> S_PACING_FLAVOR) & M_PACING_FLAVOR) 465f7917c00SJeff Kirsher 466f7917c00SJeff Kirsher #define S_FLAVORS_VALID 15 467f7917c00SJeff Kirsher #define V_FLAVORS_VALID(x) ((x) << S_FLAVORS_VALID) 468f7917c00SJeff Kirsher #define F_FLAVORS_VALID V_FLAVORS_VALID(1U) 469f7917c00SJeff Kirsher 470f7917c00SJeff Kirsher #define S_RX_FC_DISABLE 16 471f7917c00SJeff Kirsher #define V_RX_FC_DISABLE(x) ((x) << S_RX_FC_DISABLE) 472f7917c00SJeff Kirsher #define F_RX_FC_DISABLE V_RX_FC_DISABLE(1U) 473f7917c00SJeff Kirsher 474f7917c00SJeff Kirsher #define S_RX_FC_VALID 17 475f7917c00SJeff Kirsher #define V_RX_FC_VALID(x) ((x) << S_RX_FC_VALID) 476f7917c00SJeff Kirsher #define F_RX_FC_VALID V_RX_FC_VALID(1U) 477f7917c00SJeff Kirsher 478f7917c00SJeff Kirsher struct cpl_pass_open_req { 479f7917c00SJeff Kirsher WR_HDR; 480f7917c00SJeff Kirsher union opcode_tid ot; 481f7917c00SJeff Kirsher __be16 local_port; 482f7917c00SJeff Kirsher __be16 peer_port; 483f7917c00SJeff Kirsher __be32 local_ip; 484f7917c00SJeff Kirsher __be32 peer_ip; 485f7917c00SJeff Kirsher __be32 opt0h; 486f7917c00SJeff Kirsher __be32 opt0l; 487f7917c00SJeff Kirsher __be32 peer_netmask; 488f7917c00SJeff Kirsher __be32 opt1; 489f7917c00SJeff Kirsher }; 490f7917c00SJeff Kirsher 491f7917c00SJeff Kirsher struct cpl_pass_open_rpl { 492f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 493f7917c00SJeff Kirsher __be16 local_port; 494f7917c00SJeff Kirsher __be16 peer_port; 495f7917c00SJeff Kirsher __be32 local_ip; 496f7917c00SJeff Kirsher __be32 peer_ip; 497f7917c00SJeff Kirsher __u8 resvd[7]; 498f7917c00SJeff Kirsher __u8 status; 499f7917c00SJeff Kirsher }; 500f7917c00SJeff Kirsher 501f7917c00SJeff Kirsher struct cpl_pass_establish { 502f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 503f7917c00SJeff Kirsher __be16 local_port; 504f7917c00SJeff Kirsher __be16 peer_port; 505f7917c00SJeff Kirsher __be32 local_ip; 506f7917c00SJeff Kirsher __be32 peer_ip; 507f7917c00SJeff Kirsher __be32 tos_tid; 508f7917c00SJeff Kirsher __be16 l2t_idx; 509f7917c00SJeff Kirsher __be16 tcp_opt; 510f7917c00SJeff Kirsher __be32 snd_isn; 511f7917c00SJeff Kirsher __be32 rcv_isn; 512f7917c00SJeff Kirsher }; 513f7917c00SJeff Kirsher 514f7917c00SJeff Kirsher /* cpl_pass_establish.tos_tid fields */ 515f7917c00SJeff Kirsher #define S_PASS_OPEN_TID 0 516f7917c00SJeff Kirsher #define M_PASS_OPEN_TID 0xFFFFFF 517f7917c00SJeff Kirsher #define V_PASS_OPEN_TID(x) ((x) << S_PASS_OPEN_TID) 518f7917c00SJeff Kirsher #define G_PASS_OPEN_TID(x) (((x) >> S_PASS_OPEN_TID) & M_PASS_OPEN_TID) 519f7917c00SJeff Kirsher 520f7917c00SJeff Kirsher #define S_PASS_OPEN_TOS 24 521f7917c00SJeff Kirsher #define M_PASS_OPEN_TOS 0xFF 522f7917c00SJeff Kirsher #define V_PASS_OPEN_TOS(x) ((x) << S_PASS_OPEN_TOS) 523f7917c00SJeff Kirsher #define G_PASS_OPEN_TOS(x) (((x) >> S_PASS_OPEN_TOS) & M_PASS_OPEN_TOS) 524f7917c00SJeff Kirsher 525f7917c00SJeff Kirsher /* cpl_pass_establish.l2t_idx fields */ 526f7917c00SJeff Kirsher #define S_L2T_IDX16 5 527f7917c00SJeff Kirsher #define M_L2T_IDX16 0x7FF 528f7917c00SJeff Kirsher #define V_L2T_IDX16(x) ((x) << S_L2T_IDX16) 529f7917c00SJeff Kirsher #define G_L2T_IDX16(x) (((x) >> S_L2T_IDX16) & M_L2T_IDX16) 530f7917c00SJeff Kirsher 531f7917c00SJeff Kirsher /* cpl_pass_establish.tcp_opt fields (also applies act_open_establish) */ 532f7917c00SJeff Kirsher #define G_TCPOPT_WSCALE_OK(x) (((x) >> 5) & 1) 533f7917c00SJeff Kirsher #define G_TCPOPT_SACK(x) (((x) >> 6) & 1) 534f7917c00SJeff Kirsher #define G_TCPOPT_TSTAMP(x) (((x) >> 7) & 1) 535f7917c00SJeff Kirsher #define G_TCPOPT_SND_WSCALE(x) (((x) >> 8) & 0xf) 536f7917c00SJeff Kirsher #define G_TCPOPT_MSS(x) (((x) >> 12) & 0xf) 537f7917c00SJeff Kirsher 538f7917c00SJeff Kirsher struct cpl_pass_accept_req { 539f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 540f7917c00SJeff Kirsher __be16 local_port; 541f7917c00SJeff Kirsher __be16 peer_port; 542f7917c00SJeff Kirsher __be32 local_ip; 543f7917c00SJeff Kirsher __be32 peer_ip; 544f7917c00SJeff Kirsher __be32 tos_tid; 545f7917c00SJeff Kirsher struct tcp_options tcp_options; 546f7917c00SJeff Kirsher __u8 dst_mac[6]; 547f7917c00SJeff Kirsher __be16 vlan_tag; 548f7917c00SJeff Kirsher __u8 src_mac[6]; 549f7917c00SJeff Kirsher #if defined(__LITTLE_ENDIAN_BITFIELD) 550f7917c00SJeff Kirsher __u8:3; 551f7917c00SJeff Kirsher __u8 addr_idx:3; 552f7917c00SJeff Kirsher __u8 port_idx:1; 553f7917c00SJeff Kirsher __u8 exact_match:1; 554f7917c00SJeff Kirsher #else 555f7917c00SJeff Kirsher __u8 exact_match:1; 556f7917c00SJeff Kirsher __u8 port_idx:1; 557f7917c00SJeff Kirsher __u8 addr_idx:3; 558f7917c00SJeff Kirsher __u8:3; 559f7917c00SJeff Kirsher #endif 560f7917c00SJeff Kirsher __u8 rsvd; 561f7917c00SJeff Kirsher __be32 rcv_isn; 562f7917c00SJeff Kirsher __be32 rsvd2; 563f7917c00SJeff Kirsher }; 564f7917c00SJeff Kirsher 565f7917c00SJeff Kirsher struct cpl_pass_accept_rpl { 566f7917c00SJeff Kirsher WR_HDR; 567f7917c00SJeff Kirsher union opcode_tid ot; 568f7917c00SJeff Kirsher __be32 opt2; 569f7917c00SJeff Kirsher __be32 rsvd; 570f7917c00SJeff Kirsher __be32 peer_ip; 571f7917c00SJeff Kirsher __be32 opt0h; 572f7917c00SJeff Kirsher __be32 opt0l_status; 573f7917c00SJeff Kirsher }; 574f7917c00SJeff Kirsher 575f7917c00SJeff Kirsher struct cpl_act_open_req { 576f7917c00SJeff Kirsher WR_HDR; 577f7917c00SJeff Kirsher union opcode_tid ot; 578f7917c00SJeff Kirsher __be16 local_port; 579f7917c00SJeff Kirsher __be16 peer_port; 580f7917c00SJeff Kirsher __be32 local_ip; 581f7917c00SJeff Kirsher __be32 peer_ip; 582f7917c00SJeff Kirsher __be32 opt0h; 583f7917c00SJeff Kirsher __be32 opt0l; 584f7917c00SJeff Kirsher __be32 params; 585f7917c00SJeff Kirsher __be32 opt2; 586f7917c00SJeff Kirsher }; 587f7917c00SJeff Kirsher 588f7917c00SJeff Kirsher /* cpl_act_open_req.params fields */ 589f7917c00SJeff Kirsher #define S_AOPEN_VLAN_PRI 9 590f7917c00SJeff Kirsher #define M_AOPEN_VLAN_PRI 0x3 591f7917c00SJeff Kirsher #define V_AOPEN_VLAN_PRI(x) ((x) << S_AOPEN_VLAN_PRI) 592f7917c00SJeff Kirsher #define G_AOPEN_VLAN_PRI(x) (((x) >> S_AOPEN_VLAN_PRI) & M_AOPEN_VLAN_PRI) 593f7917c00SJeff Kirsher 594f7917c00SJeff Kirsher #define S_AOPEN_VLAN_PRI_VALID 11 595f7917c00SJeff Kirsher #define V_AOPEN_VLAN_PRI_VALID(x) ((x) << S_AOPEN_VLAN_PRI_VALID) 596f7917c00SJeff Kirsher #define F_AOPEN_VLAN_PRI_VALID V_AOPEN_VLAN_PRI_VALID(1U) 597f7917c00SJeff Kirsher 598f7917c00SJeff Kirsher #define S_AOPEN_PKT_TYPE 12 599f7917c00SJeff Kirsher #define M_AOPEN_PKT_TYPE 0x3 600f7917c00SJeff Kirsher #define V_AOPEN_PKT_TYPE(x) ((x) << S_AOPEN_PKT_TYPE) 601f7917c00SJeff Kirsher #define G_AOPEN_PKT_TYPE(x) (((x) >> S_AOPEN_PKT_TYPE) & M_AOPEN_PKT_TYPE) 602f7917c00SJeff Kirsher 603f7917c00SJeff Kirsher #define S_AOPEN_MAC_MATCH 14 604f7917c00SJeff Kirsher #define M_AOPEN_MAC_MATCH 0x1F 605f7917c00SJeff Kirsher #define V_AOPEN_MAC_MATCH(x) ((x) << S_AOPEN_MAC_MATCH) 606f7917c00SJeff Kirsher #define G_AOPEN_MAC_MATCH(x) (((x) >> S_AOPEN_MAC_MATCH) & M_AOPEN_MAC_MATCH) 607f7917c00SJeff Kirsher 608f7917c00SJeff Kirsher #define S_AOPEN_MAC_MATCH_VALID 19 609f7917c00SJeff Kirsher #define V_AOPEN_MAC_MATCH_VALID(x) ((x) << S_AOPEN_MAC_MATCH_VALID) 610f7917c00SJeff Kirsher #define F_AOPEN_MAC_MATCH_VALID V_AOPEN_MAC_MATCH_VALID(1U) 611f7917c00SJeff Kirsher 612f7917c00SJeff Kirsher #define S_AOPEN_IFF_VLAN 20 613f7917c00SJeff Kirsher #define M_AOPEN_IFF_VLAN 0xFFF 614f7917c00SJeff Kirsher #define V_AOPEN_IFF_VLAN(x) ((x) << S_AOPEN_IFF_VLAN) 615f7917c00SJeff Kirsher #define G_AOPEN_IFF_VLAN(x) (((x) >> S_AOPEN_IFF_VLAN) & M_AOPEN_IFF_VLAN) 616f7917c00SJeff Kirsher 617f7917c00SJeff Kirsher struct cpl_act_open_rpl { 618f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 619f7917c00SJeff Kirsher __be16 local_port; 620f7917c00SJeff Kirsher __be16 peer_port; 621f7917c00SJeff Kirsher __be32 local_ip; 622f7917c00SJeff Kirsher __be32 peer_ip; 623f7917c00SJeff Kirsher __be32 atid; 624f7917c00SJeff Kirsher __u8 rsvd[3]; 625f7917c00SJeff Kirsher __u8 status; 626f7917c00SJeff Kirsher }; 627f7917c00SJeff Kirsher 628f7917c00SJeff Kirsher struct cpl_act_establish { 629f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 630f7917c00SJeff Kirsher __be16 local_port; 631f7917c00SJeff Kirsher __be16 peer_port; 632f7917c00SJeff Kirsher __be32 local_ip; 633f7917c00SJeff Kirsher __be32 peer_ip; 634f7917c00SJeff Kirsher __be32 tos_tid; 635f7917c00SJeff Kirsher __be16 l2t_idx; 636f7917c00SJeff Kirsher __be16 tcp_opt; 637f7917c00SJeff Kirsher __be32 snd_isn; 638f7917c00SJeff Kirsher __be32 rcv_isn; 639f7917c00SJeff Kirsher }; 640f7917c00SJeff Kirsher 641f7917c00SJeff Kirsher struct cpl_get_tcb { 642f7917c00SJeff Kirsher WR_HDR; 643f7917c00SJeff Kirsher union opcode_tid ot; 644f7917c00SJeff Kirsher __be16 cpuno; 645f7917c00SJeff Kirsher __be16 rsvd; 646f7917c00SJeff Kirsher }; 647f7917c00SJeff Kirsher 648f7917c00SJeff Kirsher struct cpl_get_tcb_rpl { 649f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 650f7917c00SJeff Kirsher __u8 rsvd; 651f7917c00SJeff Kirsher __u8 status; 652f7917c00SJeff Kirsher __be16 len; 653f7917c00SJeff Kirsher }; 654f7917c00SJeff Kirsher 655f7917c00SJeff Kirsher struct cpl_set_tcb { 656f7917c00SJeff Kirsher WR_HDR; 657f7917c00SJeff Kirsher union opcode_tid ot; 658f7917c00SJeff Kirsher __u8 reply; 659f7917c00SJeff Kirsher __u8 cpu_idx; 660f7917c00SJeff Kirsher __be16 len; 661f7917c00SJeff Kirsher }; 662f7917c00SJeff Kirsher 663f7917c00SJeff Kirsher /* cpl_set_tcb.reply fields */ 664f7917c00SJeff Kirsher #define S_NO_REPLY 7 665f7917c00SJeff Kirsher #define V_NO_REPLY(x) ((x) << S_NO_REPLY) 666f7917c00SJeff Kirsher #define F_NO_REPLY V_NO_REPLY(1U) 667f7917c00SJeff Kirsher 668f7917c00SJeff Kirsher struct cpl_set_tcb_field { 669f7917c00SJeff Kirsher WR_HDR; 670f7917c00SJeff Kirsher union opcode_tid ot; 671f7917c00SJeff Kirsher __u8 reply; 672f7917c00SJeff Kirsher __u8 cpu_idx; 673f7917c00SJeff Kirsher __be16 word; 674f7917c00SJeff Kirsher __be64 mask; 675f7917c00SJeff Kirsher __be64 val; 676f7917c00SJeff Kirsher }; 677f7917c00SJeff Kirsher 678f7917c00SJeff Kirsher struct cpl_set_tcb_rpl { 679f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 680f7917c00SJeff Kirsher __u8 rsvd[3]; 681f7917c00SJeff Kirsher __u8 status; 682f7917c00SJeff Kirsher }; 683f7917c00SJeff Kirsher 684f7917c00SJeff Kirsher struct cpl_pcmd { 685f7917c00SJeff Kirsher WR_HDR; 686f7917c00SJeff Kirsher union opcode_tid ot; 687f7917c00SJeff Kirsher __u8 rsvd[3]; 688f7917c00SJeff Kirsher #if defined(__LITTLE_ENDIAN_BITFIELD) 689f7917c00SJeff Kirsher __u8 src:1; 690f7917c00SJeff Kirsher __u8 bundle:1; 691f7917c00SJeff Kirsher __u8 channel:1; 692f7917c00SJeff Kirsher __u8:5; 693f7917c00SJeff Kirsher #else 694f7917c00SJeff Kirsher __u8:5; 695f7917c00SJeff Kirsher __u8 channel:1; 696f7917c00SJeff Kirsher __u8 bundle:1; 697f7917c00SJeff Kirsher __u8 src:1; 698f7917c00SJeff Kirsher #endif 699f7917c00SJeff Kirsher __be32 pcmd_parm[2]; 700f7917c00SJeff Kirsher }; 701f7917c00SJeff Kirsher 702f7917c00SJeff Kirsher struct cpl_pcmd_reply { 703f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 704f7917c00SJeff Kirsher __u8 status; 705f7917c00SJeff Kirsher __u8 rsvd; 706f7917c00SJeff Kirsher __be16 len; 707f7917c00SJeff Kirsher }; 708f7917c00SJeff Kirsher 709f7917c00SJeff Kirsher struct cpl_close_con_req { 710f7917c00SJeff Kirsher WR_HDR; 711f7917c00SJeff Kirsher union opcode_tid ot; 712f7917c00SJeff Kirsher __be32 rsvd; 713f7917c00SJeff Kirsher }; 714f7917c00SJeff Kirsher 715f7917c00SJeff Kirsher struct cpl_close_con_rpl { 716f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 717f7917c00SJeff Kirsher __u8 rsvd[3]; 718f7917c00SJeff Kirsher __u8 status; 719f7917c00SJeff Kirsher __be32 snd_nxt; 720f7917c00SJeff Kirsher __be32 rcv_nxt; 721f7917c00SJeff Kirsher }; 722f7917c00SJeff Kirsher 723f7917c00SJeff Kirsher struct cpl_close_listserv_req { 724f7917c00SJeff Kirsher WR_HDR; 725f7917c00SJeff Kirsher union opcode_tid ot; 726f7917c00SJeff Kirsher __u8 rsvd0; 727f7917c00SJeff Kirsher __u8 cpu_idx; 728f7917c00SJeff Kirsher __be16 rsvd1; 729f7917c00SJeff Kirsher }; 730f7917c00SJeff Kirsher 731f7917c00SJeff Kirsher struct cpl_close_listserv_rpl { 732f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 733f7917c00SJeff Kirsher __u8 rsvd[3]; 734f7917c00SJeff Kirsher __u8 status; 735f7917c00SJeff Kirsher }; 736f7917c00SJeff Kirsher 737f7917c00SJeff Kirsher struct cpl_abort_req_rss { 738f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 739f7917c00SJeff Kirsher __be32 rsvd0; 740f7917c00SJeff Kirsher __u8 rsvd1; 741f7917c00SJeff Kirsher __u8 status; 742f7917c00SJeff Kirsher __u8 rsvd2[6]; 743f7917c00SJeff Kirsher }; 744f7917c00SJeff Kirsher 745f7917c00SJeff Kirsher struct cpl_abort_req { 746f7917c00SJeff Kirsher WR_HDR; 747f7917c00SJeff Kirsher union opcode_tid ot; 748f7917c00SJeff Kirsher __be32 rsvd0; 749f7917c00SJeff Kirsher __u8 rsvd1; 750f7917c00SJeff Kirsher __u8 cmd; 751f7917c00SJeff Kirsher __u8 rsvd2[6]; 752f7917c00SJeff Kirsher }; 753f7917c00SJeff Kirsher 754f7917c00SJeff Kirsher struct cpl_abort_rpl_rss { 755f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 756f7917c00SJeff Kirsher __be32 rsvd0; 757f7917c00SJeff Kirsher __u8 rsvd1; 758f7917c00SJeff Kirsher __u8 status; 759f7917c00SJeff Kirsher __u8 rsvd2[6]; 760f7917c00SJeff Kirsher }; 761f7917c00SJeff Kirsher 762f7917c00SJeff Kirsher struct cpl_abort_rpl { 763f7917c00SJeff Kirsher WR_HDR; 764f7917c00SJeff Kirsher union opcode_tid ot; 765f7917c00SJeff Kirsher __be32 rsvd0; 766f7917c00SJeff Kirsher __u8 rsvd1; 767f7917c00SJeff Kirsher __u8 cmd; 768f7917c00SJeff Kirsher __u8 rsvd2[6]; 769f7917c00SJeff Kirsher }; 770f7917c00SJeff Kirsher 771f7917c00SJeff Kirsher struct cpl_peer_close { 772f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 773f7917c00SJeff Kirsher __be32 rcv_nxt; 774f7917c00SJeff Kirsher }; 775f7917c00SJeff Kirsher 776f7917c00SJeff Kirsher struct tx_data_wr { 777f7917c00SJeff Kirsher __be32 wr_hi; 778f7917c00SJeff Kirsher __be32 wr_lo; 779f7917c00SJeff Kirsher __be32 len; 780f7917c00SJeff Kirsher __be32 flags; 781f7917c00SJeff Kirsher __be32 sndseq; 782f7917c00SJeff Kirsher __be32 param; 783f7917c00SJeff Kirsher }; 784f7917c00SJeff Kirsher 785f7917c00SJeff Kirsher /* tx_data_wr.flags fields */ 786f7917c00SJeff Kirsher #define S_TX_ACK_PAGES 21 787f7917c00SJeff Kirsher #define M_TX_ACK_PAGES 0x7 788f7917c00SJeff Kirsher #define V_TX_ACK_PAGES(x) ((x) << S_TX_ACK_PAGES) 789f7917c00SJeff Kirsher #define G_TX_ACK_PAGES(x) (((x) >> S_TX_ACK_PAGES) & M_TX_ACK_PAGES) 790f7917c00SJeff Kirsher 791f7917c00SJeff Kirsher /* tx_data_wr.param fields */ 792f7917c00SJeff Kirsher #define S_TX_PORT 0 793f7917c00SJeff Kirsher #define M_TX_PORT 0x7 794f7917c00SJeff Kirsher #define V_TX_PORT(x) ((x) << S_TX_PORT) 795f7917c00SJeff Kirsher #define G_TX_PORT(x) (((x) >> S_TX_PORT) & M_TX_PORT) 796f7917c00SJeff Kirsher 797f7917c00SJeff Kirsher #define S_TX_MSS 4 798f7917c00SJeff Kirsher #define M_TX_MSS 0xF 799f7917c00SJeff Kirsher #define V_TX_MSS(x) ((x) << S_TX_MSS) 800f7917c00SJeff Kirsher #define G_TX_MSS(x) (((x) >> S_TX_MSS) & M_TX_MSS) 801f7917c00SJeff Kirsher 802f7917c00SJeff Kirsher #define S_TX_QOS 8 803f7917c00SJeff Kirsher #define M_TX_QOS 0xFF 804f7917c00SJeff Kirsher #define V_TX_QOS(x) ((x) << S_TX_QOS) 805f7917c00SJeff Kirsher #define G_TX_QOS(x) (((x) >> S_TX_QOS) & M_TX_QOS) 806f7917c00SJeff Kirsher 807f7917c00SJeff Kirsher #define S_TX_SNDBUF 16 808f7917c00SJeff Kirsher #define M_TX_SNDBUF 0xFFFF 809f7917c00SJeff Kirsher #define V_TX_SNDBUF(x) ((x) << S_TX_SNDBUF) 810f7917c00SJeff Kirsher #define G_TX_SNDBUF(x) (((x) >> S_TX_SNDBUF) & M_TX_SNDBUF) 811f7917c00SJeff Kirsher 812f7917c00SJeff Kirsher struct cpl_tx_data { 813f7917c00SJeff Kirsher union opcode_tid ot; 814f7917c00SJeff Kirsher __be32 len; 815f7917c00SJeff Kirsher __be32 rsvd; 816f7917c00SJeff Kirsher __be16 urg; 817f7917c00SJeff Kirsher __be16 flags; 818f7917c00SJeff Kirsher }; 819f7917c00SJeff Kirsher 820f7917c00SJeff Kirsher /* cpl_tx_data.flags fields */ 821f7917c00SJeff Kirsher #define S_TX_ULP_SUBMODE 6 822f7917c00SJeff Kirsher #define M_TX_ULP_SUBMODE 0xF 823f7917c00SJeff Kirsher #define V_TX_ULP_SUBMODE(x) ((x) << S_TX_ULP_SUBMODE) 824f7917c00SJeff Kirsher #define G_TX_ULP_SUBMODE(x) (((x) >> S_TX_ULP_SUBMODE) & M_TX_ULP_SUBMODE) 825f7917c00SJeff Kirsher 826f7917c00SJeff Kirsher #define S_TX_ULP_MODE 10 827f7917c00SJeff Kirsher #define M_TX_ULP_MODE 0xF 828f7917c00SJeff Kirsher #define V_TX_ULP_MODE(x) ((x) << S_TX_ULP_MODE) 829f7917c00SJeff Kirsher #define G_TX_ULP_MODE(x) (((x) >> S_TX_ULP_MODE) & M_TX_ULP_MODE) 830f7917c00SJeff Kirsher 831f7917c00SJeff Kirsher #define S_TX_SHOVE 14 832f7917c00SJeff Kirsher #define V_TX_SHOVE(x) ((x) << S_TX_SHOVE) 833f7917c00SJeff Kirsher #define F_TX_SHOVE V_TX_SHOVE(1U) 834f7917c00SJeff Kirsher 835f7917c00SJeff Kirsher #define S_TX_MORE 15 836f7917c00SJeff Kirsher #define V_TX_MORE(x) ((x) << S_TX_MORE) 837f7917c00SJeff Kirsher #define F_TX_MORE V_TX_MORE(1U) 838f7917c00SJeff Kirsher 839f7917c00SJeff Kirsher /* additional tx_data_wr.flags fields */ 840f7917c00SJeff Kirsher #define S_TX_CPU_IDX 0 841f7917c00SJeff Kirsher #define M_TX_CPU_IDX 0x3F 842f7917c00SJeff Kirsher #define V_TX_CPU_IDX(x) ((x) << S_TX_CPU_IDX) 843f7917c00SJeff Kirsher #define G_TX_CPU_IDX(x) (((x) >> S_TX_CPU_IDX) & M_TX_CPU_IDX) 844f7917c00SJeff Kirsher 845f7917c00SJeff Kirsher #define S_TX_URG 16 846f7917c00SJeff Kirsher #define V_TX_URG(x) ((x) << S_TX_URG) 847f7917c00SJeff Kirsher #define F_TX_URG V_TX_URG(1U) 848f7917c00SJeff Kirsher 849f7917c00SJeff Kirsher #define S_TX_CLOSE 17 850f7917c00SJeff Kirsher #define V_TX_CLOSE(x) ((x) << S_TX_CLOSE) 851f7917c00SJeff Kirsher #define F_TX_CLOSE V_TX_CLOSE(1U) 852f7917c00SJeff Kirsher 853f7917c00SJeff Kirsher #define S_TX_INIT 18 854f7917c00SJeff Kirsher #define V_TX_INIT(x) ((x) << S_TX_INIT) 855f7917c00SJeff Kirsher #define F_TX_INIT V_TX_INIT(1U) 856f7917c00SJeff Kirsher 857f7917c00SJeff Kirsher #define S_TX_IMM_ACK 19 858f7917c00SJeff Kirsher #define V_TX_IMM_ACK(x) ((x) << S_TX_IMM_ACK) 859f7917c00SJeff Kirsher #define F_TX_IMM_ACK V_TX_IMM_ACK(1U) 860f7917c00SJeff Kirsher 861f7917c00SJeff Kirsher #define S_TX_IMM_DMA 20 862f7917c00SJeff Kirsher #define V_TX_IMM_DMA(x) ((x) << S_TX_IMM_DMA) 863f7917c00SJeff Kirsher #define F_TX_IMM_DMA V_TX_IMM_DMA(1U) 864f7917c00SJeff Kirsher 865f7917c00SJeff Kirsher struct cpl_tx_data_ack { 866f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 867f7917c00SJeff Kirsher __be32 ack_seq; 868f7917c00SJeff Kirsher }; 869f7917c00SJeff Kirsher 870f7917c00SJeff Kirsher struct cpl_wr_ack { 871f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 872f7917c00SJeff Kirsher __be16 credits; 873f7917c00SJeff Kirsher __be16 rsvd; 874f7917c00SJeff Kirsher __be32 snd_nxt; 875f7917c00SJeff Kirsher __be32 snd_una; 876f7917c00SJeff Kirsher }; 877f7917c00SJeff Kirsher 878f7917c00SJeff Kirsher struct cpl_rdma_ec_status { 879f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 880f7917c00SJeff Kirsher __u8 rsvd[3]; 881f7917c00SJeff Kirsher __u8 status; 882f7917c00SJeff Kirsher }; 883f7917c00SJeff Kirsher 884f7917c00SJeff Kirsher struct mngt_pktsched_wr { 885f7917c00SJeff Kirsher __be32 wr_hi; 886f7917c00SJeff Kirsher __be32 wr_lo; 887f7917c00SJeff Kirsher __u8 mngt_opcode; 888f7917c00SJeff Kirsher __u8 rsvd[7]; 889f7917c00SJeff Kirsher __u8 sched; 890f7917c00SJeff Kirsher __u8 idx; 891f7917c00SJeff Kirsher __u8 min; 892f7917c00SJeff Kirsher __u8 max; 893f7917c00SJeff Kirsher __u8 binding; 894f7917c00SJeff Kirsher __u8 rsvd1[3]; 895f7917c00SJeff Kirsher }; 896f7917c00SJeff Kirsher 897f7917c00SJeff Kirsher struct cpl_iscsi_hdr { 898f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 899f7917c00SJeff Kirsher __be16 pdu_len_ddp; 900f7917c00SJeff Kirsher __be16 len; 901f7917c00SJeff Kirsher __be32 seq; 902f7917c00SJeff Kirsher __be16 urg; 903f7917c00SJeff Kirsher __u8 rsvd; 904f7917c00SJeff Kirsher __u8 status; 905f7917c00SJeff Kirsher }; 906f7917c00SJeff Kirsher 907f7917c00SJeff Kirsher /* cpl_iscsi_hdr.pdu_len_ddp fields */ 908f7917c00SJeff Kirsher #define S_ISCSI_PDU_LEN 0 909f7917c00SJeff Kirsher #define M_ISCSI_PDU_LEN 0x7FFF 910f7917c00SJeff Kirsher #define V_ISCSI_PDU_LEN(x) ((x) << S_ISCSI_PDU_LEN) 911f7917c00SJeff Kirsher #define G_ISCSI_PDU_LEN(x) (((x) >> S_ISCSI_PDU_LEN) & M_ISCSI_PDU_LEN) 912f7917c00SJeff Kirsher 913f7917c00SJeff Kirsher #define S_ISCSI_DDP 15 914f7917c00SJeff Kirsher #define V_ISCSI_DDP(x) ((x) << S_ISCSI_DDP) 915f7917c00SJeff Kirsher #define F_ISCSI_DDP V_ISCSI_DDP(1U) 916f7917c00SJeff Kirsher 917f7917c00SJeff Kirsher struct cpl_rx_data { 918f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 919f7917c00SJeff Kirsher __be16 rsvd; 920f7917c00SJeff Kirsher __be16 len; 921f7917c00SJeff Kirsher __be32 seq; 922f7917c00SJeff Kirsher __be16 urg; 923f7917c00SJeff Kirsher #if defined(__LITTLE_ENDIAN_BITFIELD) 924f7917c00SJeff Kirsher __u8 dack_mode:2; 925f7917c00SJeff Kirsher __u8 psh:1; 926f7917c00SJeff Kirsher __u8 heartbeat:1; 927f7917c00SJeff Kirsher __u8:4; 928f7917c00SJeff Kirsher #else 929f7917c00SJeff Kirsher __u8:4; 930f7917c00SJeff Kirsher __u8 heartbeat:1; 931f7917c00SJeff Kirsher __u8 psh:1; 932f7917c00SJeff Kirsher __u8 dack_mode:2; 933f7917c00SJeff Kirsher #endif 934f7917c00SJeff Kirsher __u8 status; 935f7917c00SJeff Kirsher }; 936f7917c00SJeff Kirsher 937f7917c00SJeff Kirsher struct cpl_rx_data_ack { 938f7917c00SJeff Kirsher WR_HDR; 939f7917c00SJeff Kirsher union opcode_tid ot; 940f7917c00SJeff Kirsher __be32 credit_dack; 941f7917c00SJeff Kirsher }; 942f7917c00SJeff Kirsher 943f7917c00SJeff Kirsher /* cpl_rx_data_ack.ack_seq fields */ 944f7917c00SJeff Kirsher #define S_RX_CREDITS 0 945f7917c00SJeff Kirsher #define M_RX_CREDITS 0x7FFFFFF 946f7917c00SJeff Kirsher #define V_RX_CREDITS(x) ((x) << S_RX_CREDITS) 947f7917c00SJeff Kirsher #define G_RX_CREDITS(x) (((x) >> S_RX_CREDITS) & M_RX_CREDITS) 948f7917c00SJeff Kirsher 949f7917c00SJeff Kirsher #define S_RX_MODULATE 27 950f7917c00SJeff Kirsher #define V_RX_MODULATE(x) ((x) << S_RX_MODULATE) 951f7917c00SJeff Kirsher #define F_RX_MODULATE V_RX_MODULATE(1U) 952f7917c00SJeff Kirsher 953f7917c00SJeff Kirsher #define S_RX_FORCE_ACK 28 954f7917c00SJeff Kirsher #define V_RX_FORCE_ACK(x) ((x) << S_RX_FORCE_ACK) 955f7917c00SJeff Kirsher #define F_RX_FORCE_ACK V_RX_FORCE_ACK(1U) 956f7917c00SJeff Kirsher 957f7917c00SJeff Kirsher #define S_RX_DACK_MODE 29 958f7917c00SJeff Kirsher #define M_RX_DACK_MODE 0x3 959f7917c00SJeff Kirsher #define V_RX_DACK_MODE(x) ((x) << S_RX_DACK_MODE) 960f7917c00SJeff Kirsher #define G_RX_DACK_MODE(x) (((x) >> S_RX_DACK_MODE) & M_RX_DACK_MODE) 961f7917c00SJeff Kirsher 962f7917c00SJeff Kirsher #define S_RX_DACK_CHANGE 31 963f7917c00SJeff Kirsher #define V_RX_DACK_CHANGE(x) ((x) << S_RX_DACK_CHANGE) 964f7917c00SJeff Kirsher #define F_RX_DACK_CHANGE V_RX_DACK_CHANGE(1U) 965f7917c00SJeff Kirsher 966f7917c00SJeff Kirsher struct cpl_rx_urg_notify { 967f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 968f7917c00SJeff Kirsher __be32 seq; 969f7917c00SJeff Kirsher }; 970f7917c00SJeff Kirsher 971f7917c00SJeff Kirsher struct cpl_rx_ddp_complete { 972f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 973f7917c00SJeff Kirsher __be32 ddp_report; 974f7917c00SJeff Kirsher }; 975f7917c00SJeff Kirsher 976f7917c00SJeff Kirsher struct cpl_rx_data_ddp { 977f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 978f7917c00SJeff Kirsher __be16 urg; 979f7917c00SJeff Kirsher __be16 len; 980f7917c00SJeff Kirsher __be32 seq; 981f7917c00SJeff Kirsher union { 982f7917c00SJeff Kirsher __be32 nxt_seq; 983f7917c00SJeff Kirsher __be32 ddp_report; 984f7917c00SJeff Kirsher }; 985f7917c00SJeff Kirsher __be32 ulp_crc; 986f7917c00SJeff Kirsher __be32 ddpvld_status; 987f7917c00SJeff Kirsher }; 988f7917c00SJeff Kirsher 989f7917c00SJeff Kirsher /* cpl_rx_data_ddp.ddpvld_status fields */ 990f7917c00SJeff Kirsher #define S_DDP_STATUS 0 991f7917c00SJeff Kirsher #define M_DDP_STATUS 0xFF 992f7917c00SJeff Kirsher #define V_DDP_STATUS(x) ((x) << S_DDP_STATUS) 993f7917c00SJeff Kirsher #define G_DDP_STATUS(x) (((x) >> S_DDP_STATUS) & M_DDP_STATUS) 994f7917c00SJeff Kirsher 995f7917c00SJeff Kirsher #define S_DDP_VALID 15 996f7917c00SJeff Kirsher #define M_DDP_VALID 0x1FFFF 997f7917c00SJeff Kirsher #define V_DDP_VALID(x) ((x) << S_DDP_VALID) 998f7917c00SJeff Kirsher #define G_DDP_VALID(x) (((x) >> S_DDP_VALID) & M_DDP_VALID) 999f7917c00SJeff Kirsher 1000f7917c00SJeff Kirsher #define S_DDP_PPOD_MISMATCH 15 1001f7917c00SJeff Kirsher #define V_DDP_PPOD_MISMATCH(x) ((x) << S_DDP_PPOD_MISMATCH) 1002f7917c00SJeff Kirsher #define F_DDP_PPOD_MISMATCH V_DDP_PPOD_MISMATCH(1U) 1003f7917c00SJeff Kirsher 1004f7917c00SJeff Kirsher #define S_DDP_PDU 16 1005f7917c00SJeff Kirsher #define V_DDP_PDU(x) ((x) << S_DDP_PDU) 1006f7917c00SJeff Kirsher #define F_DDP_PDU V_DDP_PDU(1U) 1007f7917c00SJeff Kirsher 1008f7917c00SJeff Kirsher #define S_DDP_LLIMIT_ERR 17 1009f7917c00SJeff Kirsher #define V_DDP_LLIMIT_ERR(x) ((x) << S_DDP_LLIMIT_ERR) 1010f7917c00SJeff Kirsher #define F_DDP_LLIMIT_ERR V_DDP_LLIMIT_ERR(1U) 1011f7917c00SJeff Kirsher 1012f7917c00SJeff Kirsher #define S_DDP_PPOD_PARITY_ERR 18 1013f7917c00SJeff Kirsher #define V_DDP_PPOD_PARITY_ERR(x) ((x) << S_DDP_PPOD_PARITY_ERR) 1014f7917c00SJeff Kirsher #define F_DDP_PPOD_PARITY_ERR V_DDP_PPOD_PARITY_ERR(1U) 1015f7917c00SJeff Kirsher 1016f7917c00SJeff Kirsher #define S_DDP_PADDING_ERR 19 1017f7917c00SJeff Kirsher #define V_DDP_PADDING_ERR(x) ((x) << S_DDP_PADDING_ERR) 1018f7917c00SJeff Kirsher #define F_DDP_PADDING_ERR V_DDP_PADDING_ERR(1U) 1019f7917c00SJeff Kirsher 1020f7917c00SJeff Kirsher #define S_DDP_HDRCRC_ERR 20 1021f7917c00SJeff Kirsher #define V_DDP_HDRCRC_ERR(x) ((x) << S_DDP_HDRCRC_ERR) 1022f7917c00SJeff Kirsher #define F_DDP_HDRCRC_ERR V_DDP_HDRCRC_ERR(1U) 1023f7917c00SJeff Kirsher 1024f7917c00SJeff Kirsher #define S_DDP_DATACRC_ERR 21 1025f7917c00SJeff Kirsher #define V_DDP_DATACRC_ERR(x) ((x) << S_DDP_DATACRC_ERR) 1026f7917c00SJeff Kirsher #define F_DDP_DATACRC_ERR V_DDP_DATACRC_ERR(1U) 1027f7917c00SJeff Kirsher 1028f7917c00SJeff Kirsher #define S_DDP_INVALID_TAG 22 1029f7917c00SJeff Kirsher #define V_DDP_INVALID_TAG(x) ((x) << S_DDP_INVALID_TAG) 1030f7917c00SJeff Kirsher #define F_DDP_INVALID_TAG V_DDP_INVALID_TAG(1U) 1031f7917c00SJeff Kirsher 1032f7917c00SJeff Kirsher #define S_DDP_ULIMIT_ERR 23 1033f7917c00SJeff Kirsher #define V_DDP_ULIMIT_ERR(x) ((x) << S_DDP_ULIMIT_ERR) 1034f7917c00SJeff Kirsher #define F_DDP_ULIMIT_ERR V_DDP_ULIMIT_ERR(1U) 1035f7917c00SJeff Kirsher 1036f7917c00SJeff Kirsher #define S_DDP_OFFSET_ERR 24 1037f7917c00SJeff Kirsher #define V_DDP_OFFSET_ERR(x) ((x) << S_DDP_OFFSET_ERR) 1038f7917c00SJeff Kirsher #define F_DDP_OFFSET_ERR V_DDP_OFFSET_ERR(1U) 1039f7917c00SJeff Kirsher 1040f7917c00SJeff Kirsher #define S_DDP_COLOR_ERR 25 1041f7917c00SJeff Kirsher #define V_DDP_COLOR_ERR(x) ((x) << S_DDP_COLOR_ERR) 1042f7917c00SJeff Kirsher #define F_DDP_COLOR_ERR V_DDP_COLOR_ERR(1U) 1043f7917c00SJeff Kirsher 1044f7917c00SJeff Kirsher #define S_DDP_TID_MISMATCH 26 1045f7917c00SJeff Kirsher #define V_DDP_TID_MISMATCH(x) ((x) << S_DDP_TID_MISMATCH) 1046f7917c00SJeff Kirsher #define F_DDP_TID_MISMATCH V_DDP_TID_MISMATCH(1U) 1047f7917c00SJeff Kirsher 1048f7917c00SJeff Kirsher #define S_DDP_INVALID_PPOD 27 1049f7917c00SJeff Kirsher #define V_DDP_INVALID_PPOD(x) ((x) << S_DDP_INVALID_PPOD) 1050f7917c00SJeff Kirsher #define F_DDP_INVALID_PPOD V_DDP_INVALID_PPOD(1U) 1051f7917c00SJeff Kirsher 1052f7917c00SJeff Kirsher #define S_DDP_ULP_MODE 28 1053f7917c00SJeff Kirsher #define M_DDP_ULP_MODE 0xF 1054f7917c00SJeff Kirsher #define V_DDP_ULP_MODE(x) ((x) << S_DDP_ULP_MODE) 1055f7917c00SJeff Kirsher #define G_DDP_ULP_MODE(x) (((x) >> S_DDP_ULP_MODE) & M_DDP_ULP_MODE) 1056f7917c00SJeff Kirsher 1057f7917c00SJeff Kirsher /* cpl_rx_data_ddp.ddp_report fields */ 1058f7917c00SJeff Kirsher #define S_DDP_OFFSET 0 1059f7917c00SJeff Kirsher #define M_DDP_OFFSET 0x3FFFFF 1060f7917c00SJeff Kirsher #define V_DDP_OFFSET(x) ((x) << S_DDP_OFFSET) 1061f7917c00SJeff Kirsher #define G_DDP_OFFSET(x) (((x) >> S_DDP_OFFSET) & M_DDP_OFFSET) 1062f7917c00SJeff Kirsher 1063f7917c00SJeff Kirsher #define S_DDP_URG 24 1064f7917c00SJeff Kirsher #define V_DDP_URG(x) ((x) << S_DDP_URG) 1065f7917c00SJeff Kirsher #define F_DDP_URG V_DDP_URG(1U) 1066f7917c00SJeff Kirsher 1067f7917c00SJeff Kirsher #define S_DDP_PSH 25 1068f7917c00SJeff Kirsher #define V_DDP_PSH(x) ((x) << S_DDP_PSH) 1069f7917c00SJeff Kirsher #define F_DDP_PSH V_DDP_PSH(1U) 1070f7917c00SJeff Kirsher 1071f7917c00SJeff Kirsher #define S_DDP_BUF_COMPLETE 26 1072f7917c00SJeff Kirsher #define V_DDP_BUF_COMPLETE(x) ((x) << S_DDP_BUF_COMPLETE) 1073f7917c00SJeff Kirsher #define F_DDP_BUF_COMPLETE V_DDP_BUF_COMPLETE(1U) 1074f7917c00SJeff Kirsher 1075f7917c00SJeff Kirsher #define S_DDP_BUF_TIMED_OUT 27 1076f7917c00SJeff Kirsher #define V_DDP_BUF_TIMED_OUT(x) ((x) << S_DDP_BUF_TIMED_OUT) 1077f7917c00SJeff Kirsher #define F_DDP_BUF_TIMED_OUT V_DDP_BUF_TIMED_OUT(1U) 1078f7917c00SJeff Kirsher 1079f7917c00SJeff Kirsher #define S_DDP_BUF_IDX 28 1080f7917c00SJeff Kirsher #define V_DDP_BUF_IDX(x) ((x) << S_DDP_BUF_IDX) 1081f7917c00SJeff Kirsher #define F_DDP_BUF_IDX V_DDP_BUF_IDX(1U) 1082f7917c00SJeff Kirsher 1083f7917c00SJeff Kirsher struct cpl_tx_pkt { 1084f7917c00SJeff Kirsher WR_HDR; 1085f7917c00SJeff Kirsher __be32 cntrl; 1086f7917c00SJeff Kirsher __be32 len; 1087f7917c00SJeff Kirsher }; 1088f7917c00SJeff Kirsher 1089f7917c00SJeff Kirsher struct cpl_tx_pkt_lso { 1090f7917c00SJeff Kirsher WR_HDR; 1091f7917c00SJeff Kirsher __be32 cntrl; 1092f7917c00SJeff Kirsher __be32 len; 1093f7917c00SJeff Kirsher 1094f7917c00SJeff Kirsher __be32 rsvd; 1095f7917c00SJeff Kirsher __be32 lso_info; 1096f7917c00SJeff Kirsher }; 1097f7917c00SJeff Kirsher 1098f7917c00SJeff Kirsher /* cpl_tx_pkt*.cntrl fields */ 1099f7917c00SJeff Kirsher #define S_TXPKT_VLAN 0 1100f7917c00SJeff Kirsher #define M_TXPKT_VLAN 0xFFFF 1101f7917c00SJeff Kirsher #define V_TXPKT_VLAN(x) ((x) << S_TXPKT_VLAN) 1102f7917c00SJeff Kirsher #define G_TXPKT_VLAN(x) (((x) >> S_TXPKT_VLAN) & M_TXPKT_VLAN) 1103f7917c00SJeff Kirsher 1104f7917c00SJeff Kirsher #define S_TXPKT_INTF 16 1105f7917c00SJeff Kirsher #define M_TXPKT_INTF 0xF 1106f7917c00SJeff Kirsher #define V_TXPKT_INTF(x) ((x) << S_TXPKT_INTF) 1107f7917c00SJeff Kirsher #define G_TXPKT_INTF(x) (((x) >> S_TXPKT_INTF) & M_TXPKT_INTF) 1108f7917c00SJeff Kirsher 1109f7917c00SJeff Kirsher #define S_TXPKT_IPCSUM_DIS 20 1110f7917c00SJeff Kirsher #define V_TXPKT_IPCSUM_DIS(x) ((x) << S_TXPKT_IPCSUM_DIS) 1111f7917c00SJeff Kirsher #define F_TXPKT_IPCSUM_DIS V_TXPKT_IPCSUM_DIS(1U) 1112f7917c00SJeff Kirsher 1113f7917c00SJeff Kirsher #define S_TXPKT_L4CSUM_DIS 21 1114f7917c00SJeff Kirsher #define V_TXPKT_L4CSUM_DIS(x) ((x) << S_TXPKT_L4CSUM_DIS) 1115f7917c00SJeff Kirsher #define F_TXPKT_L4CSUM_DIS V_TXPKT_L4CSUM_DIS(1U) 1116f7917c00SJeff Kirsher 1117f7917c00SJeff Kirsher #define S_TXPKT_VLAN_VLD 22 1118f7917c00SJeff Kirsher #define V_TXPKT_VLAN_VLD(x) ((x) << S_TXPKT_VLAN_VLD) 1119f7917c00SJeff Kirsher #define F_TXPKT_VLAN_VLD V_TXPKT_VLAN_VLD(1U) 1120f7917c00SJeff Kirsher 1121f7917c00SJeff Kirsher #define S_TXPKT_LOOPBACK 23 1122f7917c00SJeff Kirsher #define V_TXPKT_LOOPBACK(x) ((x) << S_TXPKT_LOOPBACK) 1123f7917c00SJeff Kirsher #define F_TXPKT_LOOPBACK V_TXPKT_LOOPBACK(1U) 1124f7917c00SJeff Kirsher 1125f7917c00SJeff Kirsher #define S_TXPKT_OPCODE 24 1126f7917c00SJeff Kirsher #define M_TXPKT_OPCODE 0xFF 1127f7917c00SJeff Kirsher #define V_TXPKT_OPCODE(x) ((x) << S_TXPKT_OPCODE) 1128f7917c00SJeff Kirsher #define G_TXPKT_OPCODE(x) (((x) >> S_TXPKT_OPCODE) & M_TXPKT_OPCODE) 1129f7917c00SJeff Kirsher 1130f7917c00SJeff Kirsher /* cpl_tx_pkt_lso.lso_info fields */ 1131f7917c00SJeff Kirsher #define S_LSO_MSS 0 1132f7917c00SJeff Kirsher #define M_LSO_MSS 0x3FFF 1133f7917c00SJeff Kirsher #define V_LSO_MSS(x) ((x) << S_LSO_MSS) 1134f7917c00SJeff Kirsher #define G_LSO_MSS(x) (((x) >> S_LSO_MSS) & M_LSO_MSS) 1135f7917c00SJeff Kirsher 1136f7917c00SJeff Kirsher #define S_LSO_ETH_TYPE 14 1137f7917c00SJeff Kirsher #define M_LSO_ETH_TYPE 0x3 1138f7917c00SJeff Kirsher #define V_LSO_ETH_TYPE(x) ((x) << S_LSO_ETH_TYPE) 1139f7917c00SJeff Kirsher #define G_LSO_ETH_TYPE(x) (((x) >> S_LSO_ETH_TYPE) & M_LSO_ETH_TYPE) 1140f7917c00SJeff Kirsher 1141f7917c00SJeff Kirsher #define S_LSO_TCPHDR_WORDS 16 1142f7917c00SJeff Kirsher #define M_LSO_TCPHDR_WORDS 0xF 1143f7917c00SJeff Kirsher #define V_LSO_TCPHDR_WORDS(x) ((x) << S_LSO_TCPHDR_WORDS) 1144f7917c00SJeff Kirsher #define G_LSO_TCPHDR_WORDS(x) (((x) >> S_LSO_TCPHDR_WORDS) & M_LSO_TCPHDR_WORDS) 1145f7917c00SJeff Kirsher 1146f7917c00SJeff Kirsher #define S_LSO_IPHDR_WORDS 20 1147f7917c00SJeff Kirsher #define M_LSO_IPHDR_WORDS 0xF 1148f7917c00SJeff Kirsher #define V_LSO_IPHDR_WORDS(x) ((x) << S_LSO_IPHDR_WORDS) 1149f7917c00SJeff Kirsher #define G_LSO_IPHDR_WORDS(x) (((x) >> S_LSO_IPHDR_WORDS) & M_LSO_IPHDR_WORDS) 1150f7917c00SJeff Kirsher 1151f7917c00SJeff Kirsher #define S_LSO_IPV6 24 1152f7917c00SJeff Kirsher #define V_LSO_IPV6(x) ((x) << S_LSO_IPV6) 1153f7917c00SJeff Kirsher #define F_LSO_IPV6 V_LSO_IPV6(1U) 1154f7917c00SJeff Kirsher 1155f7917c00SJeff Kirsher struct cpl_trace_pkt { 1156f7917c00SJeff Kirsher #ifdef CHELSIO_FW 1157f7917c00SJeff Kirsher __u8 rss_opcode; 1158f7917c00SJeff Kirsher #if defined(__LITTLE_ENDIAN_BITFIELD) 1159f7917c00SJeff Kirsher __u8 err:1; 1160f7917c00SJeff Kirsher __u8:7; 1161f7917c00SJeff Kirsher #else 1162f7917c00SJeff Kirsher __u8:7; 1163f7917c00SJeff Kirsher __u8 err:1; 1164f7917c00SJeff Kirsher #endif 1165f7917c00SJeff Kirsher __u8 rsvd0; 1166f7917c00SJeff Kirsher #if defined(__LITTLE_ENDIAN_BITFIELD) 1167f7917c00SJeff Kirsher __u8 qid:4; 1168f7917c00SJeff Kirsher __u8:4; 1169f7917c00SJeff Kirsher #else 1170f7917c00SJeff Kirsher __u8:4; 1171f7917c00SJeff Kirsher __u8 qid:4; 1172f7917c00SJeff Kirsher #endif 1173f7917c00SJeff Kirsher __be32 tstamp; 1174f7917c00SJeff Kirsher #endif /* CHELSIO_FW */ 1175f7917c00SJeff Kirsher 1176f7917c00SJeff Kirsher __u8 opcode; 1177f7917c00SJeff Kirsher #if defined(__LITTLE_ENDIAN_BITFIELD) 1178f7917c00SJeff Kirsher __u8 iff:4; 1179f7917c00SJeff Kirsher __u8:4; 1180f7917c00SJeff Kirsher #else 1181f7917c00SJeff Kirsher __u8:4; 1182f7917c00SJeff Kirsher __u8 iff:4; 1183f7917c00SJeff Kirsher #endif 1184f7917c00SJeff Kirsher __u8 rsvd[4]; 1185f7917c00SJeff Kirsher __be16 len; 1186f7917c00SJeff Kirsher }; 1187f7917c00SJeff Kirsher 1188f7917c00SJeff Kirsher struct cpl_rx_pkt { 1189f7917c00SJeff Kirsher RSS_HDR __u8 opcode; 1190f7917c00SJeff Kirsher #if defined(__LITTLE_ENDIAN_BITFIELD) 1191f7917c00SJeff Kirsher __u8 iff:4; 1192f7917c00SJeff Kirsher __u8 csum_valid:1; 1193f7917c00SJeff Kirsher __u8 ipmi_pkt:1; 1194f7917c00SJeff Kirsher __u8 vlan_valid:1; 1195f7917c00SJeff Kirsher __u8 fragment:1; 1196f7917c00SJeff Kirsher #else 1197f7917c00SJeff Kirsher __u8 fragment:1; 1198f7917c00SJeff Kirsher __u8 vlan_valid:1; 1199f7917c00SJeff Kirsher __u8 ipmi_pkt:1; 1200f7917c00SJeff Kirsher __u8 csum_valid:1; 1201f7917c00SJeff Kirsher __u8 iff:4; 1202f7917c00SJeff Kirsher #endif 1203f7917c00SJeff Kirsher __be16 csum; 1204f7917c00SJeff Kirsher __be16 vlan; 1205f7917c00SJeff Kirsher __be16 len; 1206f7917c00SJeff Kirsher }; 1207f7917c00SJeff Kirsher 1208f7917c00SJeff Kirsher struct cpl_l2t_write_req { 1209f7917c00SJeff Kirsher WR_HDR; 1210f7917c00SJeff Kirsher union opcode_tid ot; 1211f7917c00SJeff Kirsher __be32 params; 1212f7917c00SJeff Kirsher __u8 rsvd[2]; 1213f7917c00SJeff Kirsher __u8 dst_mac[6]; 1214f7917c00SJeff Kirsher }; 1215f7917c00SJeff Kirsher 1216f7917c00SJeff Kirsher /* cpl_l2t_write_req.params fields */ 1217f7917c00SJeff Kirsher #define S_L2T_W_IDX 0 1218f7917c00SJeff Kirsher #define M_L2T_W_IDX 0x7FF 1219f7917c00SJeff Kirsher #define V_L2T_W_IDX(x) ((x) << S_L2T_W_IDX) 1220f7917c00SJeff Kirsher #define G_L2T_W_IDX(x) (((x) >> S_L2T_W_IDX) & M_L2T_W_IDX) 1221f7917c00SJeff Kirsher 1222f7917c00SJeff Kirsher #define S_L2T_W_VLAN 11 1223f7917c00SJeff Kirsher #define M_L2T_W_VLAN 0xFFF 1224f7917c00SJeff Kirsher #define V_L2T_W_VLAN(x) ((x) << S_L2T_W_VLAN) 1225f7917c00SJeff Kirsher #define G_L2T_W_VLAN(x) (((x) >> S_L2T_W_VLAN) & M_L2T_W_VLAN) 1226f7917c00SJeff Kirsher 1227f7917c00SJeff Kirsher #define S_L2T_W_IFF 23 1228f7917c00SJeff Kirsher #define M_L2T_W_IFF 0xF 1229f7917c00SJeff Kirsher #define V_L2T_W_IFF(x) ((x) << S_L2T_W_IFF) 1230f7917c00SJeff Kirsher #define G_L2T_W_IFF(x) (((x) >> S_L2T_W_IFF) & M_L2T_W_IFF) 1231f7917c00SJeff Kirsher 1232f7917c00SJeff Kirsher #define S_L2T_W_PRIO 27 1233f7917c00SJeff Kirsher #define M_L2T_W_PRIO 0x7 1234f7917c00SJeff Kirsher #define V_L2T_W_PRIO(x) ((x) << S_L2T_W_PRIO) 1235f7917c00SJeff Kirsher #define G_L2T_W_PRIO(x) (((x) >> S_L2T_W_PRIO) & M_L2T_W_PRIO) 1236f7917c00SJeff Kirsher 1237f7917c00SJeff Kirsher struct cpl_l2t_write_rpl { 1238f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 1239f7917c00SJeff Kirsher __u8 status; 1240f7917c00SJeff Kirsher __u8 rsvd[3]; 1241f7917c00SJeff Kirsher }; 1242f7917c00SJeff Kirsher 1243f7917c00SJeff Kirsher struct cpl_l2t_read_req { 1244f7917c00SJeff Kirsher WR_HDR; 1245f7917c00SJeff Kirsher union opcode_tid ot; 1246f7917c00SJeff Kirsher __be16 rsvd; 1247f7917c00SJeff Kirsher __be16 l2t_idx; 1248f7917c00SJeff Kirsher }; 1249f7917c00SJeff Kirsher 1250f7917c00SJeff Kirsher struct cpl_l2t_read_rpl { 1251f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 1252f7917c00SJeff Kirsher __be32 params; 1253f7917c00SJeff Kirsher __u8 rsvd[2]; 1254f7917c00SJeff Kirsher __u8 dst_mac[6]; 1255f7917c00SJeff Kirsher }; 1256f7917c00SJeff Kirsher 1257f7917c00SJeff Kirsher /* cpl_l2t_read_rpl.params fields */ 1258f7917c00SJeff Kirsher #define S_L2T_R_PRIO 0 1259f7917c00SJeff Kirsher #define M_L2T_R_PRIO 0x7 1260f7917c00SJeff Kirsher #define V_L2T_R_PRIO(x) ((x) << S_L2T_R_PRIO) 1261f7917c00SJeff Kirsher #define G_L2T_R_PRIO(x) (((x) >> S_L2T_R_PRIO) & M_L2T_R_PRIO) 1262f7917c00SJeff Kirsher 1263f7917c00SJeff Kirsher #define S_L2T_R_VLAN 8 1264f7917c00SJeff Kirsher #define M_L2T_R_VLAN 0xFFF 1265f7917c00SJeff Kirsher #define V_L2T_R_VLAN(x) ((x) << S_L2T_R_VLAN) 1266f7917c00SJeff Kirsher #define G_L2T_R_VLAN(x) (((x) >> S_L2T_R_VLAN) & M_L2T_R_VLAN) 1267f7917c00SJeff Kirsher 1268f7917c00SJeff Kirsher #define S_L2T_R_IFF 20 1269f7917c00SJeff Kirsher #define M_L2T_R_IFF 0xF 1270f7917c00SJeff Kirsher #define V_L2T_R_IFF(x) ((x) << S_L2T_R_IFF) 1271f7917c00SJeff Kirsher #define G_L2T_R_IFF(x) (((x) >> S_L2T_R_IFF) & M_L2T_R_IFF) 1272f7917c00SJeff Kirsher 1273f7917c00SJeff Kirsher #define S_L2T_STATUS 24 1274f7917c00SJeff Kirsher #define M_L2T_STATUS 0xFF 1275f7917c00SJeff Kirsher #define V_L2T_STATUS(x) ((x) << S_L2T_STATUS) 1276f7917c00SJeff Kirsher #define G_L2T_STATUS(x) (((x) >> S_L2T_STATUS) & M_L2T_STATUS) 1277f7917c00SJeff Kirsher 1278f7917c00SJeff Kirsher struct cpl_smt_write_req { 1279f7917c00SJeff Kirsher WR_HDR; 1280f7917c00SJeff Kirsher union opcode_tid ot; 1281f7917c00SJeff Kirsher __u8 rsvd0; 1282f7917c00SJeff Kirsher #if defined(__LITTLE_ENDIAN_BITFIELD) 1283f7917c00SJeff Kirsher __u8 mtu_idx:4; 1284f7917c00SJeff Kirsher __u8 iff:4; 1285f7917c00SJeff Kirsher #else 1286f7917c00SJeff Kirsher __u8 iff:4; 1287f7917c00SJeff Kirsher __u8 mtu_idx:4; 1288f7917c00SJeff Kirsher #endif 1289f7917c00SJeff Kirsher __be16 rsvd2; 1290f7917c00SJeff Kirsher __be16 rsvd3; 1291f7917c00SJeff Kirsher __u8 src_mac1[6]; 1292f7917c00SJeff Kirsher __be16 rsvd4; 1293f7917c00SJeff Kirsher __u8 src_mac0[6]; 1294f7917c00SJeff Kirsher }; 1295f7917c00SJeff Kirsher 1296f7917c00SJeff Kirsher struct cpl_smt_write_rpl { 1297f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 1298f7917c00SJeff Kirsher __u8 status; 1299f7917c00SJeff Kirsher __u8 rsvd[3]; 1300f7917c00SJeff Kirsher }; 1301f7917c00SJeff Kirsher 1302f7917c00SJeff Kirsher struct cpl_smt_read_req { 1303f7917c00SJeff Kirsher WR_HDR; 1304f7917c00SJeff Kirsher union opcode_tid ot; 1305f7917c00SJeff Kirsher __u8 rsvd0; 1306f7917c00SJeff Kirsher #if defined(__LITTLE_ENDIAN_BITFIELD) 1307f7917c00SJeff Kirsher __u8:4; 1308f7917c00SJeff Kirsher __u8 iff:4; 1309f7917c00SJeff Kirsher #else 1310f7917c00SJeff Kirsher __u8 iff:4; 1311f7917c00SJeff Kirsher __u8:4; 1312f7917c00SJeff Kirsher #endif 1313f7917c00SJeff Kirsher __be16 rsvd2; 1314f7917c00SJeff Kirsher }; 1315f7917c00SJeff Kirsher 1316f7917c00SJeff Kirsher struct cpl_smt_read_rpl { 1317f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 1318f7917c00SJeff Kirsher __u8 status; 1319f7917c00SJeff Kirsher #if defined(__LITTLE_ENDIAN_BITFIELD) 1320f7917c00SJeff Kirsher __u8 mtu_idx:4; 1321f7917c00SJeff Kirsher __u8:4; 1322f7917c00SJeff Kirsher #else 1323f7917c00SJeff Kirsher __u8:4; 1324f7917c00SJeff Kirsher __u8 mtu_idx:4; 1325f7917c00SJeff Kirsher #endif 1326f7917c00SJeff Kirsher __be16 rsvd2; 1327f7917c00SJeff Kirsher __be16 rsvd3; 1328f7917c00SJeff Kirsher __u8 src_mac1[6]; 1329f7917c00SJeff Kirsher __be16 rsvd4; 1330f7917c00SJeff Kirsher __u8 src_mac0[6]; 1331f7917c00SJeff Kirsher }; 1332f7917c00SJeff Kirsher 1333f7917c00SJeff Kirsher struct cpl_rte_delete_req { 1334f7917c00SJeff Kirsher WR_HDR; 1335f7917c00SJeff Kirsher union opcode_tid ot; 1336f7917c00SJeff Kirsher __be32 params; 1337f7917c00SJeff Kirsher }; 1338f7917c00SJeff Kirsher 1339f7917c00SJeff Kirsher /* { cpl_rte_delete_req, cpl_rte_read_req }.params fields */ 1340f7917c00SJeff Kirsher #define S_RTE_REQ_LUT_IX 8 1341f7917c00SJeff Kirsher #define M_RTE_REQ_LUT_IX 0x7FF 1342f7917c00SJeff Kirsher #define V_RTE_REQ_LUT_IX(x) ((x) << S_RTE_REQ_LUT_IX) 1343f7917c00SJeff Kirsher #define G_RTE_REQ_LUT_IX(x) (((x) >> S_RTE_REQ_LUT_IX) & M_RTE_REQ_LUT_IX) 1344f7917c00SJeff Kirsher 1345f7917c00SJeff Kirsher #define S_RTE_REQ_LUT_BASE 19 1346f7917c00SJeff Kirsher #define M_RTE_REQ_LUT_BASE 0x7FF 1347f7917c00SJeff Kirsher #define V_RTE_REQ_LUT_BASE(x) ((x) << S_RTE_REQ_LUT_BASE) 1348f7917c00SJeff Kirsher #define G_RTE_REQ_LUT_BASE(x) (((x) >> S_RTE_REQ_LUT_BASE) & M_RTE_REQ_LUT_BASE) 1349f7917c00SJeff Kirsher 1350f7917c00SJeff Kirsher #define S_RTE_READ_REQ_SELECT 31 1351f7917c00SJeff Kirsher #define V_RTE_READ_REQ_SELECT(x) ((x) << S_RTE_READ_REQ_SELECT) 1352f7917c00SJeff Kirsher #define F_RTE_READ_REQ_SELECT V_RTE_READ_REQ_SELECT(1U) 1353f7917c00SJeff Kirsher 1354f7917c00SJeff Kirsher struct cpl_rte_delete_rpl { 1355f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 1356f7917c00SJeff Kirsher __u8 status; 1357f7917c00SJeff Kirsher __u8 rsvd[3]; 1358f7917c00SJeff Kirsher }; 1359f7917c00SJeff Kirsher 1360f7917c00SJeff Kirsher struct cpl_rte_write_req { 1361f7917c00SJeff Kirsher WR_HDR; 1362f7917c00SJeff Kirsher union opcode_tid ot; 1363f7917c00SJeff Kirsher #if defined(__LITTLE_ENDIAN_BITFIELD) 1364f7917c00SJeff Kirsher __u8:6; 1365f7917c00SJeff Kirsher __u8 write_tcam:1; 1366f7917c00SJeff Kirsher __u8 write_l2t_lut:1; 1367f7917c00SJeff Kirsher #else 1368f7917c00SJeff Kirsher __u8 write_l2t_lut:1; 1369f7917c00SJeff Kirsher __u8 write_tcam:1; 1370f7917c00SJeff Kirsher __u8:6; 1371f7917c00SJeff Kirsher #endif 1372f7917c00SJeff Kirsher __u8 rsvd[3]; 1373f7917c00SJeff Kirsher __be32 lut_params; 1374f7917c00SJeff Kirsher __be16 rsvd2; 1375f7917c00SJeff Kirsher __be16 l2t_idx; 1376f7917c00SJeff Kirsher __be32 netmask; 1377f7917c00SJeff Kirsher __be32 faddr; 1378f7917c00SJeff Kirsher }; 1379f7917c00SJeff Kirsher 1380f7917c00SJeff Kirsher /* cpl_rte_write_req.lut_params fields */ 1381f7917c00SJeff Kirsher #define S_RTE_WRITE_REQ_LUT_IX 10 1382f7917c00SJeff Kirsher #define M_RTE_WRITE_REQ_LUT_IX 0x7FF 1383f7917c00SJeff Kirsher #define V_RTE_WRITE_REQ_LUT_IX(x) ((x) << S_RTE_WRITE_REQ_LUT_IX) 1384f7917c00SJeff Kirsher #define G_RTE_WRITE_REQ_LUT_IX(x) (((x) >> S_RTE_WRITE_REQ_LUT_IX) & M_RTE_WRITE_REQ_LUT_IX) 1385f7917c00SJeff Kirsher 1386f7917c00SJeff Kirsher #define S_RTE_WRITE_REQ_LUT_BASE 21 1387f7917c00SJeff Kirsher #define M_RTE_WRITE_REQ_LUT_BASE 0x7FF 1388f7917c00SJeff Kirsher #define V_RTE_WRITE_REQ_LUT_BASE(x) ((x) << S_RTE_WRITE_REQ_LUT_BASE) 1389f7917c00SJeff Kirsher #define G_RTE_WRITE_REQ_LUT_BASE(x) (((x) >> S_RTE_WRITE_REQ_LUT_BASE) & M_RTE_WRITE_REQ_LUT_BASE) 1390f7917c00SJeff Kirsher 1391f7917c00SJeff Kirsher struct cpl_rte_write_rpl { 1392f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 1393f7917c00SJeff Kirsher __u8 status; 1394f7917c00SJeff Kirsher __u8 rsvd[3]; 1395f7917c00SJeff Kirsher }; 1396f7917c00SJeff Kirsher 1397f7917c00SJeff Kirsher struct cpl_rte_read_req { 1398f7917c00SJeff Kirsher WR_HDR; 1399f7917c00SJeff Kirsher union opcode_tid ot; 1400f7917c00SJeff Kirsher __be32 params; 1401f7917c00SJeff Kirsher }; 1402f7917c00SJeff Kirsher 1403f7917c00SJeff Kirsher struct cpl_rte_read_rpl { 1404f7917c00SJeff Kirsher RSS_HDR union opcode_tid ot; 1405f7917c00SJeff Kirsher __u8 status; 1406f7917c00SJeff Kirsher __u8 rsvd0; 1407f7917c00SJeff Kirsher __be16 l2t_idx; 1408f7917c00SJeff Kirsher #if defined(__LITTLE_ENDIAN_BITFIELD) 1409f7917c00SJeff Kirsher __u8:7; 1410f7917c00SJeff Kirsher __u8 select:1; 1411f7917c00SJeff Kirsher #else 1412f7917c00SJeff Kirsher __u8 select:1; 1413f7917c00SJeff Kirsher __u8:7; 1414f7917c00SJeff Kirsher #endif 1415f7917c00SJeff Kirsher __u8 rsvd2[3]; 1416f7917c00SJeff Kirsher __be32 addr; 1417f7917c00SJeff Kirsher }; 1418f7917c00SJeff Kirsher 1419f7917c00SJeff Kirsher struct cpl_tid_release { 1420f7917c00SJeff Kirsher WR_HDR; 1421f7917c00SJeff Kirsher union opcode_tid ot; 1422f7917c00SJeff Kirsher __be32 rsvd; 1423f7917c00SJeff Kirsher }; 1424f7917c00SJeff Kirsher 1425f7917c00SJeff Kirsher struct cpl_barrier { 1426f7917c00SJeff Kirsher WR_HDR; 1427f7917c00SJeff Kirsher __u8 opcode; 1428f7917c00SJeff Kirsher __u8 rsvd[7]; 1429f7917c00SJeff Kirsher }; 1430f7917c00SJeff Kirsher 1431f7917c00SJeff Kirsher struct cpl_rdma_read_req { 1432f7917c00SJeff Kirsher __u8 opcode; 1433f7917c00SJeff Kirsher __u8 rsvd[15]; 1434f7917c00SJeff Kirsher }; 1435f7917c00SJeff Kirsher 1436f7917c00SJeff Kirsher struct cpl_rdma_terminate { 1437f7917c00SJeff Kirsher #ifdef CHELSIO_FW 1438f7917c00SJeff Kirsher __u8 opcode; 1439f7917c00SJeff Kirsher __u8 rsvd[2]; 1440f7917c00SJeff Kirsher #if defined(__LITTLE_ENDIAN_BITFIELD) 1441f7917c00SJeff Kirsher __u8 rspq:3; 1442f7917c00SJeff Kirsher __u8:5; 1443f7917c00SJeff Kirsher #else 1444f7917c00SJeff Kirsher __u8:5; 1445f7917c00SJeff Kirsher __u8 rspq:3; 1446f7917c00SJeff Kirsher #endif 1447f7917c00SJeff Kirsher __be32 tid_len; 1448f7917c00SJeff Kirsher #endif 1449f7917c00SJeff Kirsher __be32 msn; 1450f7917c00SJeff Kirsher __be32 mo; 145165dc2f1aSGustavo A. R. Silva __u8 data[]; 1452f7917c00SJeff Kirsher }; 1453f7917c00SJeff Kirsher 1454f7917c00SJeff Kirsher /* cpl_rdma_terminate.tid_len fields */ 1455f7917c00SJeff Kirsher #define S_FLIT_CNT 0 1456f7917c00SJeff Kirsher #define M_FLIT_CNT 0xFF 1457f7917c00SJeff Kirsher #define V_FLIT_CNT(x) ((x) << S_FLIT_CNT) 1458f7917c00SJeff Kirsher #define G_FLIT_CNT(x) (((x) >> S_FLIT_CNT) & M_FLIT_CNT) 1459f7917c00SJeff Kirsher 1460f7917c00SJeff Kirsher #define S_TERM_TID 8 1461f7917c00SJeff Kirsher #define M_TERM_TID 0xFFFFF 1462f7917c00SJeff Kirsher #define V_TERM_TID(x) ((x) << S_TERM_TID) 1463f7917c00SJeff Kirsher #define G_TERM_TID(x) (((x) >> S_TERM_TID) & M_TERM_TID) 1464f7917c00SJeff Kirsher 1465f7917c00SJeff Kirsher /* ULP_TX opcodes */ 1466f7917c00SJeff Kirsher enum { ULP_MEM_READ = 2, ULP_MEM_WRITE = 3, ULP_TXPKT = 4 }; 1467f7917c00SJeff Kirsher 1468f7917c00SJeff Kirsher #define S_ULPTX_CMD 28 1469f7917c00SJeff Kirsher #define M_ULPTX_CMD 0xF 1470f7917c00SJeff Kirsher #define V_ULPTX_CMD(x) ((x) << S_ULPTX_CMD) 1471f7917c00SJeff Kirsher 1472f7917c00SJeff Kirsher #define S_ULPTX_NFLITS 0 1473f7917c00SJeff Kirsher #define M_ULPTX_NFLITS 0xFF 1474f7917c00SJeff Kirsher #define V_ULPTX_NFLITS(x) ((x) << S_ULPTX_NFLITS) 1475f7917c00SJeff Kirsher 1476f7917c00SJeff Kirsher struct ulp_mem_io { 1477f7917c00SJeff Kirsher WR_HDR; 1478f7917c00SJeff Kirsher __be32 cmd_lock_addr; 1479f7917c00SJeff Kirsher __be32 len; 1480f7917c00SJeff Kirsher }; 1481f7917c00SJeff Kirsher 1482f7917c00SJeff Kirsher /* ulp_mem_io.cmd_lock_addr fields */ 1483f7917c00SJeff Kirsher #define S_ULP_MEMIO_ADDR 0 1484f7917c00SJeff Kirsher #define M_ULP_MEMIO_ADDR 0x7FFFFFF 1485f7917c00SJeff Kirsher #define V_ULP_MEMIO_ADDR(x) ((x) << S_ULP_MEMIO_ADDR) 1486f7917c00SJeff Kirsher #define S_ULP_MEMIO_LOCK 27 1487f7917c00SJeff Kirsher #define V_ULP_MEMIO_LOCK(x) ((x) << S_ULP_MEMIO_LOCK) 1488f7917c00SJeff Kirsher #define F_ULP_MEMIO_LOCK V_ULP_MEMIO_LOCK(1U) 1489f7917c00SJeff Kirsher 1490f7917c00SJeff Kirsher /* ulp_mem_io.len fields */ 1491f7917c00SJeff Kirsher #define S_ULP_MEMIO_DATA_LEN 28 1492f7917c00SJeff Kirsher #define M_ULP_MEMIO_DATA_LEN 0xF 1493f7917c00SJeff Kirsher #define V_ULP_MEMIO_DATA_LEN(x) ((x) << S_ULP_MEMIO_DATA_LEN) 1494f7917c00SJeff Kirsher 1495f7917c00SJeff Kirsher #endif /* T3_CPL_H */ 1496