1218792Snp/*- 2218792Snp * Copyright (c) 2011 Chelsio Communications, Inc. 3218792Snp * All rights reserved. 4218792Snp * 5218792Snp * Redistribution and use in source and binary forms, with or without 6218792Snp * modification, are permitted provided that the following conditions 7218792Snp * are met: 8218792Snp * 1. Redistributions of source code must retain the above copyright 9218792Snp * notice, this list of conditions and the following disclaimer. 10218792Snp * 2. Redistributions in binary form must reproduce the above copyright 11218792Snp * notice, this list of conditions and the following disclaimer in the 12218792Snp * documentation and/or other materials provided with the distribution. 13218792Snp * 14218792Snp * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15218792Snp * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16218792Snp * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17218792Snp * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18218792Snp * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19218792Snp * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20218792Snp * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21218792Snp * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22218792Snp * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23218792Snp * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24218792Snp * SUCH DAMAGE. 25218792Snp * 26218792Snp * $FreeBSD$ 27218792Snp * 28218792Snp */ 29218792Snp 30218792Snp#ifndef T4_MSG_H 31218792Snp#define T4_MSG_H 32218792Snp 33218792Snpenum { 34218792Snp CPL_PASS_OPEN_REQ = 0x1, 35218792Snp CPL_PASS_ACCEPT_RPL = 0x2, 36218792Snp CPL_ACT_OPEN_REQ = 0x3, 37218792Snp CPL_SET_TCB = 0x4, 38218792Snp CPL_SET_TCB_FIELD = 0x5, 39218792Snp CPL_GET_TCB = 0x6, 40218792Snp CPL_CLOSE_CON_REQ = 0x8, 41218792Snp CPL_CLOSE_LISTSRV_REQ = 0x9, 42218792Snp CPL_ABORT_REQ = 0xA, 43218792Snp CPL_ABORT_RPL = 0xB, 44218792Snp CPL_TX_DATA = 0xC, 45218792Snp CPL_RX_DATA_ACK = 0xD, 46218792Snp CPL_TX_PKT = 0xE, 47218792Snp CPL_RTE_DELETE_REQ = 0xF, 48218792Snp CPL_RTE_WRITE_REQ = 0x10, 49218792Snp CPL_RTE_READ_REQ = 0x11, 50218792Snp CPL_L2T_WRITE_REQ = 0x12, 51218792Snp CPL_L2T_READ_REQ = 0x13, 52218792Snp CPL_SMT_WRITE_REQ = 0x14, 53218792Snp CPL_SMT_READ_REQ = 0x15, 54237925Snp CPL_TAG_WRITE_REQ = 0x16, 55218792Snp CPL_BARRIER = 0x18, 56218792Snp CPL_TID_RELEASE = 0x1A, 57237925Snp CPL_TAG_READ_REQ = 0x1B, 58237925Snp CPL_TX_PKT_FSO = 0x1E, 59237925Snp CPL_TX_PKT_ISO = 0x1F, 60218792Snp 61218792Snp CPL_CLOSE_LISTSRV_RPL = 0x20, 62218792Snp CPL_ERROR = 0x21, 63218792Snp CPL_GET_TCB_RPL = 0x22, 64218792Snp CPL_L2T_WRITE_RPL = 0x23, 65218792Snp CPL_PASS_OPEN_RPL = 0x24, 66218792Snp CPL_ACT_OPEN_RPL = 0x25, 67218792Snp CPL_PEER_CLOSE = 0x26, 68218792Snp CPL_RTE_DELETE_RPL = 0x27, 69218792Snp CPL_RTE_WRITE_RPL = 0x28, 70218792Snp CPL_RX_URG_PKT = 0x29, 71237925Snp CPL_TAG_WRITE_RPL = 0x2A, 72218792Snp CPL_ABORT_REQ_RSS = 0x2B, 73218792Snp CPL_RX_URG_NOTIFY = 0x2C, 74218792Snp CPL_ABORT_RPL_RSS = 0x2D, 75218792Snp CPL_SMT_WRITE_RPL = 0x2E, 76218792Snp CPL_TX_DATA_ACK = 0x2F, 77218792Snp 78218792Snp CPL_RX_PHYS_ADDR = 0x30, 79218792Snp CPL_PCMD_READ_RPL = 0x31, 80218792Snp CPL_CLOSE_CON_RPL = 0x32, 81218792Snp CPL_ISCSI_HDR = 0x33, 82218792Snp CPL_L2T_READ_RPL = 0x34, 83218792Snp CPL_RDMA_CQE = 0x35, 84218792Snp CPL_RDMA_CQE_READ_RSP = 0x36, 85218792Snp CPL_RDMA_CQE_ERR = 0x37, 86218792Snp CPL_RTE_READ_RPL = 0x38, 87218792Snp CPL_RX_DATA = 0x39, 88218792Snp CPL_SET_TCB_RPL = 0x3A, 89218792Snp CPL_RX_PKT = 0x3B, 90237925Snp CPL_TAG_READ_RPL = 0x3C, 91218792Snp CPL_HIT_NOTIFY = 0x3D, 92218792Snp CPL_PKT_NOTIFY = 0x3E, 93218792Snp CPL_RX_DDP_COMPLETE = 0x3F, 94218792Snp 95218792Snp CPL_ACT_ESTABLISH = 0x40, 96218792Snp CPL_PASS_ESTABLISH = 0x41, 97218792Snp CPL_RX_DATA_DDP = 0x42, 98218792Snp CPL_SMT_READ_RPL = 0x43, 99218792Snp CPL_PASS_ACCEPT_REQ = 0x44, 100218792Snp CPL_RX2TX_PKT = 0x45, 101218792Snp CPL_RX_FCOE_DDP = 0x46, 102218792Snp CPL_FCOE_HDR = 0x47, 103237925Snp CPL_T5_TRACE_PKT = 0x48, 104237925Snp CPL_RX_ISCSI_DDP = 0x49, 105237925Snp CPL_RX_FCOE_DIF = 0x4A, 106237925Snp CPL_RX_DATA_DIF = 0x4B, 107252495Snp CPL_ERR_NOTIFY = 0x4D, 108218792Snp 109218792Snp CPL_RDMA_READ_REQ = 0x60, 110237925Snp CPL_RX_ISCSI_DIF = 0x60, 111218792Snp 112218792Snp CPL_SET_LE_REQ = 0x80, 113218792Snp CPL_PASS_OPEN_REQ6 = 0x81, 114218792Snp CPL_ACT_OPEN_REQ6 = 0x83, 115218792Snp 116218792Snp CPL_RDMA_TERMINATE = 0xA2, 117218792Snp CPL_RDMA_WRITE = 0xA4, 118218792Snp CPL_SGE_EGR_UPDATE = 0xA5, 119218792Snp CPL_SET_LE_RPL = 0xA6, 120218792Snp CPL_FW2_MSG = 0xA7, 121218792Snp CPL_FW2_PLD = 0xA8, 122237925Snp CPL_T5_RDMA_READ_REQ = 0xA9, 123237925Snp CPL_RDMA_ATOMIC_REQ = 0xAA, 124237925Snp CPL_RDMA_ATOMIC_RPL = 0xAB, 125237925Snp CPL_RDMA_IMM_DATA = 0xAC, 126237925Snp CPL_RDMA_IMM_DATA_SE = 0xAD, 127218792Snp 128218792Snp CPL_TRACE_PKT = 0xB0, 129252495Snp CPL_TRACE_PKT_T5 = 0x48, 130218792Snp CPL_RX2TX_DATA = 0xB1, 131237925Snp CPL_ISCSI_DATA = 0xB2, 132237925Snp CPL_FCOE_DATA = 0xB3, 133218792Snp 134218792Snp CPL_FW4_MSG = 0xC0, 135218792Snp CPL_FW4_PLD = 0xC1, 136218792Snp CPL_FW4_ACK = 0xC3, 137218792Snp 138218792Snp CPL_FW6_MSG = 0xE0, 139218792Snp CPL_FW6_PLD = 0xE1, 140218792Snp CPL_TX_PKT_LSO = 0xED, 141218792Snp CPL_TX_PKT_XT = 0xEE, 142218792Snp 143218792Snp NUM_CPL_CMDS /* must be last and previous entries must be sorted */ 144218792Snp}; 145218792Snp 146218792Snpenum CPL_error { 147218792Snp CPL_ERR_NONE = 0, 148218792Snp CPL_ERR_TCAM_PARITY = 1, 149218792Snp CPL_ERR_TCAM_FULL = 3, 150218792Snp CPL_ERR_BAD_LENGTH = 15, 151218792Snp CPL_ERR_BAD_ROUTE = 18, 152218792Snp CPL_ERR_CONN_RESET = 20, 153218792Snp CPL_ERR_CONN_EXIST_SYNRECV = 21, 154218792Snp CPL_ERR_CONN_EXIST = 22, 155218792Snp CPL_ERR_ARP_MISS = 23, 156218792Snp CPL_ERR_BAD_SYN = 24, 157218792Snp CPL_ERR_CONN_TIMEDOUT = 30, 158218792Snp CPL_ERR_XMIT_TIMEDOUT = 31, 159218792Snp CPL_ERR_PERSIST_TIMEDOUT = 32, 160218792Snp CPL_ERR_FINWAIT2_TIMEDOUT = 33, 161218792Snp CPL_ERR_KEEPALIVE_TIMEDOUT = 34, 162218792Snp CPL_ERR_RTX_NEG_ADVICE = 35, 163218792Snp CPL_ERR_PERSIST_NEG_ADVICE = 36, 164247434Snp CPL_ERR_KEEPALV_NEG_ADVICE = 37, 165247434Snp CPL_ERR_WAIT_ARP_RPL = 41, 166218792Snp CPL_ERR_ABORT_FAILED = 42, 167218792Snp CPL_ERR_IWARP_FLM = 50, 168218792Snp}; 169218792Snp 170218792Snpenum { 171218792Snp CPL_CONN_POLICY_AUTO = 0, 172218792Snp CPL_CONN_POLICY_ASK = 1, 173218792Snp CPL_CONN_POLICY_FILTER = 2, 174218792Snp CPL_CONN_POLICY_DENY = 3 175218792Snp}; 176218792Snp 177218792Snpenum { 178218792Snp ULP_MODE_NONE = 0, 179218792Snp ULP_MODE_ISCSI = 2, 180218792Snp ULP_MODE_RDMA = 4, 181218792Snp ULP_MODE_TCPDDP = 5, 182218792Snp ULP_MODE_FCOE = 6, 183218792Snp}; 184218792Snp 185218792Snpenum { 186218792Snp ULP_CRC_HEADER = 1 << 0, 187218792Snp ULP_CRC_DATA = 1 << 1 188218792Snp}; 189218792Snp 190218792Snpenum { 191218792Snp CPL_PASS_OPEN_ACCEPT, 192218792Snp CPL_PASS_OPEN_REJECT, 193218792Snp CPL_PASS_OPEN_ACCEPT_TNL 194218792Snp}; 195218792Snp 196218792Snpenum { 197218792Snp CPL_ABORT_SEND_RST = 0, 198218792Snp CPL_ABORT_NO_RST, 199218792Snp}; 200218792Snp 201218792Snpenum { /* TX_PKT_XT checksum types */ 202218792Snp TX_CSUM_TCP = 0, 203218792Snp TX_CSUM_UDP = 1, 204218792Snp TX_CSUM_CRC16 = 4, 205218792Snp TX_CSUM_CRC32 = 5, 206218792Snp TX_CSUM_CRC32C = 6, 207218792Snp TX_CSUM_FCOE = 7, 208218792Snp TX_CSUM_TCPIP = 8, 209218792Snp TX_CSUM_UDPIP = 9, 210218792Snp TX_CSUM_TCPIP6 = 10, 211218792Snp TX_CSUM_UDPIP6 = 11, 212218792Snp TX_CSUM_IP = 12, 213218792Snp}; 214218792Snp 215218792Snpenum { /* packet type in CPL_RX_PKT */ 216218792Snp PKTYPE_XACT_UCAST = 0, 217218792Snp PKTYPE_HASH_UCAST = 1, 218218792Snp PKTYPE_XACT_MCAST = 2, 219218792Snp PKTYPE_HASH_MCAST = 3, 220218792Snp PKTYPE_PROMISC = 4, 221218792Snp PKTYPE_HPROMISC = 5, 222218792Snp PKTYPE_BCAST = 6 223218792Snp}; 224218792Snp 225218792Snpenum { /* DMAC type in CPL_RX_PKT */ 226218792Snp DATYPE_UCAST, 227218792Snp DATYPE_MCAST, 228218792Snp DATYPE_BCAST 229218792Snp}; 230218792Snp 231218792Snpenum { /* TCP congestion control algorithms */ 232218792Snp CONG_ALG_RENO, 233218792Snp CONG_ALG_TAHOE, 234218792Snp CONG_ALG_NEWRENO, 235218792Snp CONG_ALG_HIGHSPEED 236218792Snp}; 237218792Snp 238218792Snpenum { /* RSS hash type */ 239218792Snp RSS_HASH_NONE = 0, /* no hash computed */ 240218792Snp RSS_HASH_IP = 1, /* IP or IPv6 2-tuple hash */ 241218792Snp RSS_HASH_TCP = 2, /* TCP 4-tuple hash */ 242218792Snp RSS_HASH_UDP = 3 /* UDP 4-tuple hash */ 243218792Snp}; 244218792Snp 245218792Snpenum { /* LE commands */ 246218792Snp LE_CMD_READ = 0x4, 247218792Snp LE_CMD_WRITE = 0xb 248218792Snp}; 249218792Snp 250218792Snpenum { /* LE request size */ 251218792Snp LE_SZ_NONE = 0, 252218792Snp LE_SZ_33 = 1, 253218792Snp LE_SZ_66 = 2, 254218792Snp LE_SZ_132 = 3, 255218792Snp LE_SZ_264 = 4, 256218792Snp LE_SZ_528 = 5 257218792Snp}; 258218792Snp 259218792Snpunion opcode_tid { 260218792Snp __be32 opcode_tid; 261218792Snp __u8 opcode; 262218792Snp}; 263218792Snp 264218792Snp#define S_CPL_OPCODE 24 265218792Snp#define V_CPL_OPCODE(x) ((x) << S_CPL_OPCODE) 266218792Snp#define G_CPL_OPCODE(x) (((x) >> S_CPL_OPCODE) & 0xFF) 267218792Snp#define G_TID(x) ((x) & 0xFFFFFF) 268218792Snp 269218792Snp/* tid is assumed to be 24-bits */ 270218792Snp#define MK_OPCODE_TID(opcode, tid) (V_CPL_OPCODE(opcode) | (tid)) 271218792Snp 272218792Snp#define OPCODE_TID(cmd) ((cmd)->ot.opcode_tid) 273218792Snp 274218792Snp/* extract the TID from a CPL command */ 275218792Snp#define GET_TID(cmd) (G_TID(ntohl(OPCODE_TID(cmd)))) 276218792Snp 277218792Snp/* partitioning of TID fields that also carry a queue id */ 278218792Snp#define S_TID_TID 0 279218792Snp#define M_TID_TID 0x3fff 280218792Snp#define V_TID_TID(x) ((x) << S_TID_TID) 281218792Snp#define G_TID_TID(x) (((x) >> S_TID_TID) & M_TID_TID) 282218792Snp 283218792Snp#define S_TID_QID 14 284218792Snp#define M_TID_QID 0x3ff 285218792Snp#define V_TID_QID(x) ((x) << S_TID_QID) 286218792Snp#define G_TID_QID(x) (((x) >> S_TID_QID) & M_TID_QID) 287218792Snp 288218792Snpunion opcode_info { 289218792Snp __be64 opcode_info; 290218792Snp __u8 opcode; 291218792Snp}; 292218792Snp 293218792Snpstruct tcp_options { 294218792Snp __be16 mss; 295218792Snp __u8 wsf; 296218792Snp#if defined(__LITTLE_ENDIAN_BITFIELD) 297218792Snp __u8 :4; 298218792Snp __u8 unknown:1; 299237925Snp __u8 ecn:1; 300218792Snp __u8 sack:1; 301218792Snp __u8 tstamp:1; 302218792Snp#else 303218792Snp __u8 tstamp:1; 304218792Snp __u8 sack:1; 305237925Snp __u8 ecn:1; 306218792Snp __u8 unknown:1; 307218792Snp __u8 :4; 308218792Snp#endif 309218792Snp}; 310218792Snp 311218792Snpstruct rss_header { 312218792Snp __u8 opcode; 313218792Snp#if defined(__LITTLE_ENDIAN_BITFIELD) 314218792Snp __u8 channel:2; 315218792Snp __u8 filter_hit:1; 316218792Snp __u8 filter_tid:1; 317218792Snp __u8 hash_type:2; 318218792Snp __u8 ipv6:1; 319218792Snp __u8 send2fw:1; 320218792Snp#else 321218792Snp __u8 send2fw:1; 322218792Snp __u8 ipv6:1; 323218792Snp __u8 hash_type:2; 324218792Snp __u8 filter_tid:1; 325218792Snp __u8 filter_hit:1; 326218792Snp __u8 channel:2; 327218792Snp#endif 328218792Snp __be16 qid; 329218792Snp __be32 hash_val; 330218792Snp}; 331218792Snp 332218792Snp#define S_HASHTYPE 20 333218792Snp#define M_HASHTYPE 0x3 334218792Snp#define G_HASHTYPE(x) (((x) >> S_HASHTYPE) & M_HASHTYPE) 335218792Snp 336218792Snp#define S_QNUM 0 337218792Snp#define M_QNUM 0xFFFF 338218792Snp#define G_QNUM(x) (((x) >> S_QNUM) & M_QNUM) 339218792Snp 340218792Snp#ifndef CHELSIO_FW 341218792Snpstruct work_request_hdr { 342218792Snp __be32 wr_hi; 343218792Snp __be32 wr_mid; 344218792Snp __be64 wr_lo; 345218792Snp}; 346218792Snp 347218792Snp/* wr_mid fields */ 348218792Snp#define S_WR_LEN16 0 349218792Snp#define M_WR_LEN16 0xFF 350218792Snp#define V_WR_LEN16(x) ((x) << S_WR_LEN16) 351218792Snp#define G_WR_LEN16(x) (((x) >> S_WR_LEN16) & M_WR_LEN16) 352218792Snp 353218792Snp/* wr_hi fields */ 354218792Snp#define S_WR_OP 24 355218792Snp#define M_WR_OP 0xFF 356218792Snp#define V_WR_OP(x) ((__u64)(x) << S_WR_OP) 357218792Snp#define G_WR_OP(x) (((x) >> S_WR_OP) & M_WR_OP) 358218792Snp 359218792Snp# define WR_HDR struct work_request_hdr wr 360218792Snp# define WR_HDR_SIZE sizeof(struct work_request_hdr) 361218792Snp# define RSS_HDR 362218792Snp#else 363218792Snp# define WR_HDR 364218792Snp# define WR_HDR_SIZE 0 365218792Snp# define RSS_HDR struct rss_header rss_hdr; 366218792Snp#endif 367218792Snp 368218792Snp/* option 0 fields */ 369218792Snp#define S_ACCEPT_MODE 0 370218792Snp#define M_ACCEPT_MODE 0x3 371218792Snp#define V_ACCEPT_MODE(x) ((x) << S_ACCEPT_MODE) 372218792Snp#define G_ACCEPT_MODE(x) (((x) >> S_ACCEPT_MODE) & M_ACCEPT_MODE) 373218792Snp 374218792Snp#define S_TX_CHAN 2 375218792Snp#define M_TX_CHAN 0x3 376218792Snp#define V_TX_CHAN(x) ((x) << S_TX_CHAN) 377218792Snp#define G_TX_CHAN(x) (((x) >> S_TX_CHAN) & M_TX_CHAN) 378218792Snp 379218792Snp#define S_NO_CONG 4 380218792Snp#define V_NO_CONG(x) ((x) << S_NO_CONG) 381218792Snp#define F_NO_CONG V_NO_CONG(1U) 382218792Snp 383218792Snp#define S_DELACK 5 384218792Snp#define V_DELACK(x) ((x) << S_DELACK) 385218792Snp#define F_DELACK V_DELACK(1U) 386218792Snp 387218792Snp#define S_INJECT_TIMER 6 388218792Snp#define V_INJECT_TIMER(x) ((x) << S_INJECT_TIMER) 389218792Snp#define F_INJECT_TIMER V_INJECT_TIMER(1U) 390218792Snp 391218792Snp#define S_NON_OFFLOAD 7 392218792Snp#define V_NON_OFFLOAD(x) ((x) << S_NON_OFFLOAD) 393218792Snp#define F_NON_OFFLOAD V_NON_OFFLOAD(1U) 394218792Snp 395218792Snp#define S_ULP_MODE 8 396218792Snp#define M_ULP_MODE 0xF 397218792Snp#define V_ULP_MODE(x) ((x) << S_ULP_MODE) 398218792Snp#define G_ULP_MODE(x) (((x) >> S_ULP_MODE) & M_ULP_MODE) 399218792Snp 400218792Snp#define S_RCV_BUFSIZ 12 401218792Snp#define M_RCV_BUFSIZ 0x3FFU 402218792Snp#define V_RCV_BUFSIZ(x) ((x) << S_RCV_BUFSIZ) 403218792Snp#define G_RCV_BUFSIZ(x) (((x) >> S_RCV_BUFSIZ) & M_RCV_BUFSIZ) 404218792Snp 405218792Snp#define S_DSCP 22 406218792Snp#define M_DSCP 0x3F 407218792Snp#define V_DSCP(x) ((x) << S_DSCP) 408218792Snp#define G_DSCP(x) (((x) >> S_DSCP) & M_DSCP) 409218792Snp 410218792Snp#define S_SMAC_SEL 28 411218792Snp#define M_SMAC_SEL 0xFF 412218792Snp#define V_SMAC_SEL(x) ((__u64)(x) << S_SMAC_SEL) 413218792Snp#define G_SMAC_SEL(x) (((x) >> S_SMAC_SEL) & M_SMAC_SEL) 414218792Snp 415218792Snp#define S_L2T_IDX 36 416218792Snp#define M_L2T_IDX 0xFFF 417218792Snp#define V_L2T_IDX(x) ((__u64)(x) << S_L2T_IDX) 418218792Snp#define G_L2T_IDX(x) (((x) >> S_L2T_IDX) & M_L2T_IDX) 419218792Snp 420218792Snp#define S_TCAM_BYPASS 48 421218792Snp#define V_TCAM_BYPASS(x) ((__u64)(x) << S_TCAM_BYPASS) 422218792Snp#define F_TCAM_BYPASS V_TCAM_BYPASS(1ULL) 423218792Snp 424218792Snp#define S_NAGLE 49 425218792Snp#define V_NAGLE(x) ((__u64)(x) << S_NAGLE) 426218792Snp#define F_NAGLE V_NAGLE(1ULL) 427218792Snp 428218792Snp#define S_WND_SCALE 50 429218792Snp#define M_WND_SCALE 0xF 430218792Snp#define V_WND_SCALE(x) ((__u64)(x) << S_WND_SCALE) 431218792Snp#define G_WND_SCALE(x) (((x) >> S_WND_SCALE) & M_WND_SCALE) 432218792Snp 433218792Snp#define S_KEEP_ALIVE 54 434218792Snp#define V_KEEP_ALIVE(x) ((__u64)(x) << S_KEEP_ALIVE) 435218792Snp#define F_KEEP_ALIVE V_KEEP_ALIVE(1ULL) 436218792Snp 437218792Snp#define S_MAX_RT 55 438218792Snp#define M_MAX_RT 0xF 439218792Snp#define V_MAX_RT(x) ((__u64)(x) << S_MAX_RT) 440218792Snp#define G_MAX_RT(x) (((x) >> S_MAX_RT) & M_MAX_RT) 441218792Snp 442218792Snp#define S_MAX_RT_OVERRIDE 59 443218792Snp#define V_MAX_RT_OVERRIDE(x) ((__u64)(x) << S_MAX_RT_OVERRIDE) 444218792Snp#define F_MAX_RT_OVERRIDE V_MAX_RT_OVERRIDE(1ULL) 445218792Snp 446218792Snp#define S_MSS_IDX 60 447218792Snp#define M_MSS_IDX 0xF 448218792Snp#define V_MSS_IDX(x) ((__u64)(x) << S_MSS_IDX) 449218792Snp#define G_MSS_IDX(x) (((x) >> S_MSS_IDX) & M_MSS_IDX) 450218792Snp 451218792Snp/* option 1 fields */ 452218792Snp#define S_SYN_RSS_ENABLE 0 453218792Snp#define V_SYN_RSS_ENABLE(x) ((x) << S_SYN_RSS_ENABLE) 454218792Snp#define F_SYN_RSS_ENABLE V_SYN_RSS_ENABLE(1U) 455218792Snp 456218792Snp#define S_SYN_RSS_USE_HASH 1 457218792Snp#define V_SYN_RSS_USE_HASH(x) ((x) << S_SYN_RSS_USE_HASH) 458218792Snp#define F_SYN_RSS_USE_HASH V_SYN_RSS_USE_HASH(1U) 459218792Snp 460218792Snp#define S_SYN_RSS_QUEUE 2 461218792Snp#define M_SYN_RSS_QUEUE 0x3FF 462218792Snp#define V_SYN_RSS_QUEUE(x) ((x) << S_SYN_RSS_QUEUE) 463218792Snp#define G_SYN_RSS_QUEUE(x) (((x) >> S_SYN_RSS_QUEUE) & M_SYN_RSS_QUEUE) 464218792Snp 465218792Snp#define S_LISTEN_INTF 12 466218792Snp#define M_LISTEN_INTF 0xFF 467218792Snp#define V_LISTEN_INTF(x) ((x) << S_LISTEN_INTF) 468218792Snp#define G_LISTEN_INTF(x) (((x) >> S_LISTEN_INTF) & M_LISTEN_INTF) 469218792Snp 470218792Snp#define S_LISTEN_FILTER 20 471218792Snp#define V_LISTEN_FILTER(x) ((x) << S_LISTEN_FILTER) 472218792Snp#define F_LISTEN_FILTER V_LISTEN_FILTER(1U) 473218792Snp 474218792Snp#define S_SYN_DEFENSE 21 475218792Snp#define V_SYN_DEFENSE(x) ((x) << S_SYN_DEFENSE) 476218792Snp#define F_SYN_DEFENSE V_SYN_DEFENSE(1U) 477218792Snp 478218792Snp#define S_CONN_POLICY 22 479218792Snp#define M_CONN_POLICY 0x3 480218792Snp#define V_CONN_POLICY(x) ((x) << S_CONN_POLICY) 481218792Snp#define G_CONN_POLICY(x) (((x) >> S_CONN_POLICY) & M_CONN_POLICY) 482218792Snp 483252495Snp#define S_FILT_INFO 28 484252495Snp#define M_FILT_INFO 0xfffffffffULL 485252495Snp#define V_FILT_INFO(x) ((x) << S_FILT_INFO) 486252495Snp#define G_FILT_INFO(x) (((x) >> S_FILT_INFO) & M_FILT_INFO) 487252495Snp 488218792Snp/* option 2 fields */ 489218792Snp#define S_RSS_QUEUE 0 490218792Snp#define M_RSS_QUEUE 0x3FF 491218792Snp#define V_RSS_QUEUE(x) ((x) << S_RSS_QUEUE) 492218792Snp#define G_RSS_QUEUE(x) (((x) >> S_RSS_QUEUE) & M_RSS_QUEUE) 493218792Snp 494218792Snp#define S_RSS_QUEUE_VALID 10 495218792Snp#define V_RSS_QUEUE_VALID(x) ((x) << S_RSS_QUEUE_VALID) 496218792Snp#define F_RSS_QUEUE_VALID V_RSS_QUEUE_VALID(1U) 497218792Snp 498218792Snp#define S_RX_COALESCE_VALID 11 499218792Snp#define V_RX_COALESCE_VALID(x) ((x) << S_RX_COALESCE_VALID) 500218792Snp#define F_RX_COALESCE_VALID V_RX_COALESCE_VALID(1U) 501218792Snp 502218792Snp#define S_RX_COALESCE 12 503218792Snp#define M_RX_COALESCE 0x3 504218792Snp#define V_RX_COALESCE(x) ((x) << S_RX_COALESCE) 505218792Snp#define G_RX_COALESCE(x) (((x) >> S_RX_COALESCE) & M_RX_COALESCE) 506218792Snp 507218792Snp#define S_CONG_CNTRL 14 508218792Snp#define M_CONG_CNTRL 0x3 509218792Snp#define V_CONG_CNTRL(x) ((x) << S_CONG_CNTRL) 510218792Snp#define G_CONG_CNTRL(x) (((x) >> S_CONG_CNTRL) & M_CONG_CNTRL) 511218792Snp 512218792Snp#define S_PACE 16 513218792Snp#define M_PACE 0x3 514218792Snp#define V_PACE(x) ((x) << S_PACE) 515218792Snp#define G_PACE(x) (((x) >> S_PACE) & M_PACE) 516218792Snp 517218792Snp#define S_CONG_CNTRL_VALID 18 518218792Snp#define V_CONG_CNTRL_VALID(x) ((x) << S_CONG_CNTRL_VALID) 519218792Snp#define F_CONG_CNTRL_VALID V_CONG_CNTRL_VALID(1U) 520218792Snp 521218792Snp#define S_PACE_VALID 19 522218792Snp#define V_PACE_VALID(x) ((x) << S_PACE_VALID) 523218792Snp#define F_PACE_VALID V_PACE_VALID(1U) 524218792Snp 525218792Snp#define S_RX_FC_DISABLE 20 526218792Snp#define V_RX_FC_DISABLE(x) ((x) << S_RX_FC_DISABLE) 527218792Snp#define F_RX_FC_DISABLE V_RX_FC_DISABLE(1U) 528218792Snp 529218792Snp#define S_RX_FC_DDP 21 530218792Snp#define V_RX_FC_DDP(x) ((x) << S_RX_FC_DDP) 531218792Snp#define F_RX_FC_DDP V_RX_FC_DDP(1U) 532218792Snp 533218792Snp#define S_RX_FC_VALID 22 534218792Snp#define V_RX_FC_VALID(x) ((x) << S_RX_FC_VALID) 535218792Snp#define F_RX_FC_VALID V_RX_FC_VALID(1U) 536218792Snp 537218792Snp#define S_TX_QUEUE 23 538218792Snp#define M_TX_QUEUE 0x7 539218792Snp#define V_TX_QUEUE(x) ((x) << S_TX_QUEUE) 540218792Snp#define G_TX_QUEUE(x) (((x) >> S_TX_QUEUE) & M_TX_QUEUE) 541218792Snp 542218792Snp#define S_RX_CHANNEL 26 543218792Snp#define V_RX_CHANNEL(x) ((x) << S_RX_CHANNEL) 544218792Snp#define F_RX_CHANNEL V_RX_CHANNEL(1U) 545218792Snp 546218792Snp#define S_CCTRL_ECN 27 547218792Snp#define V_CCTRL_ECN(x) ((x) << S_CCTRL_ECN) 548218792Snp#define F_CCTRL_ECN V_CCTRL_ECN(1U) 549218792Snp 550218792Snp#define S_WND_SCALE_EN 28 551218792Snp#define V_WND_SCALE_EN(x) ((x) << S_WND_SCALE_EN) 552218792Snp#define F_WND_SCALE_EN V_WND_SCALE_EN(1U) 553218792Snp 554218792Snp#define S_TSTAMPS_EN 29 555218792Snp#define V_TSTAMPS_EN(x) ((x) << S_TSTAMPS_EN) 556218792Snp#define F_TSTAMPS_EN V_TSTAMPS_EN(1U) 557218792Snp 558218792Snp#define S_SACK_EN 30 559218792Snp#define V_SACK_EN(x) ((x) << S_SACK_EN) 560218792Snp#define F_SACK_EN V_SACK_EN(1U) 561218792Snp 562252495Snp#define S_T5_OPT_2_VALID 31 563252495Snp#define V_T5_OPT_2_VALID(x) ((x) << S_T5_OPT_2_VALID) 564252495Snp#define F_T5_OPT_2_VALID V_T5_OPT_2_VALID(1U) 565252495Snp 566218792Snpstruct cpl_pass_open_req { 567218792Snp WR_HDR; 568218792Snp union opcode_tid ot; 569218792Snp __be16 local_port; 570218792Snp __be16 peer_port; 571218792Snp __be32 local_ip; 572218792Snp __be32 peer_ip; 573218792Snp __be64 opt0; 574218792Snp __be64 opt1; 575218792Snp}; 576218792Snp 577218792Snpstruct cpl_pass_open_req6 { 578218792Snp WR_HDR; 579218792Snp union opcode_tid ot; 580218792Snp __be16 local_port; 581218792Snp __be16 peer_port; 582218792Snp __be64 local_ip_hi; 583218792Snp __be64 local_ip_lo; 584218792Snp __be64 peer_ip_hi; 585218792Snp __be64 peer_ip_lo; 586218792Snp __be64 opt0; 587218792Snp __be64 opt1; 588218792Snp}; 589218792Snp 590218792Snpstruct cpl_pass_open_rpl { 591218792Snp RSS_HDR 592218792Snp union opcode_tid ot; 593218792Snp __u8 rsvd[3]; 594218792Snp __u8 status; 595218792Snp}; 596218792Snp 597218792Snpstruct cpl_pass_establish { 598218792Snp RSS_HDR 599218792Snp union opcode_tid ot; 600218792Snp __be32 rsvd; 601218792Snp __be32 tos_stid; 602218792Snp __be16 mac_idx; 603218792Snp __be16 tcp_opt; 604218792Snp __be32 snd_isn; 605218792Snp __be32 rcv_isn; 606218792Snp}; 607218792Snp 608218792Snp/* cpl_pass_establish.tos_stid fields */ 609218792Snp#define S_PASS_OPEN_TID 0 610218792Snp#define M_PASS_OPEN_TID 0xFFFFFF 611218792Snp#define V_PASS_OPEN_TID(x) ((x) << S_PASS_OPEN_TID) 612218792Snp#define G_PASS_OPEN_TID(x) (((x) >> S_PASS_OPEN_TID) & M_PASS_OPEN_TID) 613218792Snp 614218792Snp#define S_PASS_OPEN_TOS 24 615218792Snp#define M_PASS_OPEN_TOS 0xFF 616218792Snp#define V_PASS_OPEN_TOS(x) ((x) << S_PASS_OPEN_TOS) 617218792Snp#define G_PASS_OPEN_TOS(x) (((x) >> S_PASS_OPEN_TOS) & M_PASS_OPEN_TOS) 618218792Snp 619218792Snp/* cpl_pass_establish.tcp_opt fields (also applies to act_open_establish) */ 620218792Snp#define G_TCPOPT_WSCALE_OK(x) (((x) >> 5) & 1) 621218792Snp#define G_TCPOPT_SACK(x) (((x) >> 6) & 1) 622218792Snp#define G_TCPOPT_TSTAMP(x) (((x) >> 7) & 1) 623218792Snp#define G_TCPOPT_SND_WSCALE(x) (((x) >> 8) & 0xf) 624218792Snp#define G_TCPOPT_MSS(x) (((x) >> 12) & 0xf) 625218792Snp 626218792Snpstruct cpl_pass_accept_req { 627218792Snp RSS_HDR 628218792Snp union opcode_tid ot; 629218792Snp __be16 rsvd; 630218792Snp __be16 len; 631218792Snp __be32 hdr_len; 632218792Snp __be16 vlan; 633218792Snp __be16 l2info; 634218792Snp __be32 tos_stid; 635218792Snp struct tcp_options tcpopt; 636218792Snp}; 637218792Snp 638218792Snp/* cpl_pass_accept_req.hdr_len fields */ 639218792Snp#define S_SYN_RX_CHAN 0 640218792Snp#define M_SYN_RX_CHAN 0xF 641218792Snp#define V_SYN_RX_CHAN(x) ((x) << S_SYN_RX_CHAN) 642218792Snp#define G_SYN_RX_CHAN(x) (((x) >> S_SYN_RX_CHAN) & M_SYN_RX_CHAN) 643218792Snp 644218792Snp#define S_TCP_HDR_LEN 10 645218792Snp#define M_TCP_HDR_LEN 0x3F 646218792Snp#define V_TCP_HDR_LEN(x) ((x) << S_TCP_HDR_LEN) 647218792Snp#define G_TCP_HDR_LEN(x) (((x) >> S_TCP_HDR_LEN) & M_TCP_HDR_LEN) 648218792Snp 649218792Snp#define S_IP_HDR_LEN 16 650218792Snp#define M_IP_HDR_LEN 0x3FF 651218792Snp#define V_IP_HDR_LEN(x) ((x) << S_IP_HDR_LEN) 652218792Snp#define G_IP_HDR_LEN(x) (((x) >> S_IP_HDR_LEN) & M_IP_HDR_LEN) 653218792Snp 654218792Snp#define S_ETH_HDR_LEN 26 655237925Snp#define M_ETH_HDR_LEN 0x3F 656218792Snp#define V_ETH_HDR_LEN(x) ((x) << S_ETH_HDR_LEN) 657218792Snp#define G_ETH_HDR_LEN(x) (((x) >> S_ETH_HDR_LEN) & M_ETH_HDR_LEN) 658218792Snp 659218792Snp/* cpl_pass_accept_req.l2info fields */ 660218792Snp#define S_SYN_MAC_IDX 0 661218792Snp#define M_SYN_MAC_IDX 0x1FF 662218792Snp#define V_SYN_MAC_IDX(x) ((x) << S_SYN_MAC_IDX) 663218792Snp#define G_SYN_MAC_IDX(x) (((x) >> S_SYN_MAC_IDX) & M_SYN_MAC_IDX) 664218792Snp 665218792Snp#define S_SYN_XACT_MATCH 9 666218792Snp#define V_SYN_XACT_MATCH(x) ((x) << S_SYN_XACT_MATCH) 667218792Snp#define F_SYN_XACT_MATCH V_SYN_XACT_MATCH(1U) 668218792Snp 669218792Snp#define S_SYN_INTF 12 670218792Snp#define M_SYN_INTF 0xF 671218792Snp#define V_SYN_INTF(x) ((x) << S_SYN_INTF) 672218792Snp#define G_SYN_INTF(x) (((x) >> S_SYN_INTF) & M_SYN_INTF) 673218792Snp 674218792Snpstruct cpl_pass_accept_rpl { 675218792Snp WR_HDR; 676218792Snp union opcode_tid ot; 677218792Snp __be32 opt2; 678218792Snp __be64 opt0; 679218792Snp}; 680218792Snp 681252814Snpstruct cpl_t5_pass_accept_rpl { 682252814Snp WR_HDR; 683252814Snp union opcode_tid ot; 684252814Snp __be32 opt2; 685252814Snp __be64 opt0; 686252814Snp __be32 iss; 687252814Snp __be32 rsvd; 688252814Snp}; 689252814Snp 690218792Snpstruct cpl_act_open_req { 691218792Snp WR_HDR; 692218792Snp union opcode_tid ot; 693218792Snp __be16 local_port; 694218792Snp __be16 peer_port; 695218792Snp __be32 local_ip; 696218792Snp __be32 peer_ip; 697218792Snp __be64 opt0; 698218792Snp __be32 params; 699218792Snp __be32 opt2; 700218792Snp}; 701218792Snp 702252495Snp#define S_FILTER_TUPLE 24 703252495Snp#define M_FILTER_TUPLE 0xFFFFFFFFFF 704252495Snp#define V_FILTER_TUPLE(x) ((x) << S_FILTER_TUPLE) 705252495Snp#define G_FILTER_TUPLE(x) (((x) >> S_FILTER_TUPLE) & M_FILTER_TUPLE) 706237925Snpstruct cpl_t5_act_open_req { 707237925Snp WR_HDR; 708237925Snp union opcode_tid ot; 709237925Snp __be16 local_port; 710237925Snp __be16 peer_port; 711237925Snp __be32 local_ip; 712237925Snp __be32 peer_ip; 713237925Snp __be64 opt0; 714252814Snp __be32 iss; 715237925Snp __be32 opt2; 716237925Snp __be64 params; 717237925Snp}; 718218792Snp 719218792Snpstruct cpl_act_open_req6 { 720218792Snp WR_HDR; 721218792Snp union opcode_tid ot; 722218792Snp __be16 local_port; 723218792Snp __be16 peer_port; 724218792Snp __be64 local_ip_hi; 725218792Snp __be64 local_ip_lo; 726218792Snp __be64 peer_ip_hi; 727218792Snp __be64 peer_ip_lo; 728218792Snp __be64 opt0; 729218792Snp __be32 params; 730218792Snp __be32 opt2; 731218792Snp}; 732218792Snp 733237925Snpstruct cpl_t5_act_open_req6 { 734237925Snp WR_HDR; 735237925Snp union opcode_tid ot; 736237925Snp __be16 local_port; 737237925Snp __be16 peer_port; 738237925Snp __be64 local_ip_hi; 739237925Snp __be64 local_ip_lo; 740237925Snp __be64 peer_ip_hi; 741237925Snp __be64 peer_ip_lo; 742237925Snp __be64 opt0; 743252814Snp __be32 iss; 744237925Snp __be32 opt2; 745237925Snp __be64 params; 746237925Snp}; 747237925Snp 748218792Snpstruct cpl_act_open_rpl { 749218792Snp RSS_HDR 750218792Snp union opcode_tid ot; 751218792Snp __be32 atid_status; 752218792Snp}; 753218792Snp 754218792Snp/* cpl_act_open_rpl.atid_status fields */ 755218792Snp#define S_AOPEN_STATUS 0 756218792Snp#define M_AOPEN_STATUS 0xFF 757218792Snp#define V_AOPEN_STATUS(x) ((x) << S_AOPEN_STATUS) 758218792Snp#define G_AOPEN_STATUS(x) (((x) >> S_AOPEN_STATUS) & M_AOPEN_STATUS) 759218792Snp 760218792Snp#define S_AOPEN_ATID 8 761218792Snp#define M_AOPEN_ATID 0xFFFFFF 762218792Snp#define V_AOPEN_ATID(x) ((x) << S_AOPEN_ATID) 763218792Snp#define G_AOPEN_ATID(x) (((x) >> S_AOPEN_ATID) & M_AOPEN_ATID) 764218792Snp 765218792Snpstruct cpl_act_establish { 766218792Snp RSS_HDR 767218792Snp union opcode_tid ot; 768218792Snp __be32 rsvd; 769218792Snp __be32 tos_atid; 770218792Snp __be16 mac_idx; 771218792Snp __be16 tcp_opt; 772218792Snp __be32 snd_isn; 773218792Snp __be32 rcv_isn; 774218792Snp}; 775218792Snp 776218792Snpstruct cpl_get_tcb { 777218792Snp WR_HDR; 778218792Snp union opcode_tid ot; 779218792Snp __be16 reply_ctrl; 780218792Snp __be16 cookie; 781218792Snp}; 782218792Snp 783218792Snp/* cpl_get_tcb.reply_ctrl fields */ 784218792Snp#define S_QUEUENO 0 785218792Snp#define M_QUEUENO 0x3FF 786218792Snp#define V_QUEUENO(x) ((x) << S_QUEUENO) 787218792Snp#define G_QUEUENO(x) (((x) >> S_QUEUENO) & M_QUEUENO) 788218792Snp 789218792Snp#define S_REPLY_CHAN 14 790218792Snp#define V_REPLY_CHAN(x) ((x) << S_REPLY_CHAN) 791218792Snp#define F_REPLY_CHAN V_REPLY_CHAN(1U) 792218792Snp 793218792Snp#define S_NO_REPLY 15 794218792Snp#define V_NO_REPLY(x) ((x) << S_NO_REPLY) 795218792Snp#define F_NO_REPLY V_NO_REPLY(1U) 796218792Snp 797218792Snpstruct cpl_get_tcb_rpl { 798218792Snp RSS_HDR 799218792Snp union opcode_tid ot; 800218792Snp __u8 cookie; 801218792Snp __u8 status; 802218792Snp __be16 len; 803218792Snp}; 804218792Snp 805218792Snpstruct cpl_set_tcb { 806218792Snp WR_HDR; 807218792Snp union opcode_tid ot; 808218792Snp __be16 reply_ctrl; 809218792Snp __be16 cookie; 810218792Snp}; 811218792Snp 812218792Snpstruct cpl_set_tcb_field { 813218792Snp WR_HDR; 814218792Snp union opcode_tid ot; 815218792Snp __be16 reply_ctrl; 816218792Snp __be16 word_cookie; 817218792Snp __be64 mask; 818218792Snp __be64 val; 819218792Snp}; 820218792Snp 821240169Snpstruct cpl_set_tcb_field_core { 822240169Snp union opcode_tid ot; 823240169Snp __be16 reply_ctrl; 824240169Snp __be16 word_cookie; 825240169Snp __be64 mask; 826240169Snp __be64 val; 827240169Snp}; 828240169Snp 829218792Snp/* cpl_set_tcb_field.word_cookie fields */ 830218792Snp#define S_WORD 0 831218792Snp#define M_WORD 0x1F 832218792Snp#define V_WORD(x) ((x) << S_WORD) 833218792Snp#define G_WORD(x) (((x) >> S_WORD) & M_WORD) 834218792Snp 835218792Snp#define S_COOKIE 5 836218792Snp#define M_COOKIE 0x7 837218792Snp#define V_COOKIE(x) ((x) << S_COOKIE) 838218792Snp#define G_COOKIE(x) (((x) >> S_COOKIE) & M_COOKIE) 839218792Snp 840218792Snpstruct cpl_set_tcb_rpl { 841218792Snp RSS_HDR 842218792Snp union opcode_tid ot; 843218792Snp __be16 rsvd; 844218792Snp __u8 cookie; 845218792Snp __u8 status; 846218792Snp __be64 oldval; 847218792Snp}; 848218792Snp 849218792Snpstruct cpl_close_con_req { 850218792Snp WR_HDR; 851218792Snp union opcode_tid ot; 852218792Snp __be32 rsvd; 853218792Snp}; 854218792Snp 855218792Snpstruct cpl_close_con_rpl { 856218792Snp RSS_HDR 857218792Snp union opcode_tid ot; 858218792Snp __u8 rsvd[3]; 859218792Snp __u8 status; 860218792Snp __be32 snd_nxt; 861218792Snp __be32 rcv_nxt; 862218792Snp}; 863218792Snp 864218792Snpstruct cpl_close_listsvr_req { 865218792Snp WR_HDR; 866218792Snp union opcode_tid ot; 867218792Snp __be16 reply_ctrl; 868218792Snp __be16 rsvd; 869218792Snp}; 870218792Snp 871218792Snp/* additional cpl_close_listsvr_req.reply_ctrl field */ 872218792Snp#define S_LISTSVR_IPV6 14 873218792Snp#define V_LISTSVR_IPV6(x) ((x) << S_LISTSVR_IPV6) 874218792Snp#define F_LISTSVR_IPV6 V_LISTSVR_IPV6(1U) 875218792Snp 876218792Snpstruct cpl_close_listsvr_rpl { 877218792Snp RSS_HDR 878218792Snp union opcode_tid ot; 879218792Snp __u8 rsvd[3]; 880218792Snp __u8 status; 881218792Snp}; 882218792Snp 883218792Snpstruct cpl_abort_req_rss { 884218792Snp RSS_HDR 885218792Snp union opcode_tid ot; 886218792Snp __u8 rsvd[3]; 887218792Snp __u8 status; 888218792Snp}; 889218792Snp 890218792Snpstruct cpl_abort_req { 891218792Snp WR_HDR; 892218792Snp union opcode_tid ot; 893218792Snp __be32 rsvd0; 894218792Snp __u8 rsvd1; 895218792Snp __u8 cmd; 896218792Snp __u8 rsvd2[6]; 897218792Snp}; 898218792Snp 899218792Snpstruct cpl_abort_rpl_rss { 900218792Snp RSS_HDR 901218792Snp union opcode_tid ot; 902218792Snp __u8 rsvd[3]; 903218792Snp __u8 status; 904218792Snp}; 905218792Snp 906218792Snpstruct cpl_abort_rpl { 907218792Snp WR_HDR; 908218792Snp union opcode_tid ot; 909218792Snp __be32 rsvd0; 910218792Snp __u8 rsvd1; 911218792Snp __u8 cmd; 912218792Snp __u8 rsvd2[6]; 913218792Snp}; 914218792Snp 915218792Snpstruct cpl_peer_close { 916218792Snp RSS_HDR 917218792Snp union opcode_tid ot; 918218792Snp __be32 rcv_nxt; 919218792Snp}; 920218792Snp 921218792Snpstruct cpl_tid_release { 922218792Snp WR_HDR; 923218792Snp union opcode_tid ot; 924218792Snp __be32 rsvd; 925218792Snp}; 926218792Snp 927218792Snpstruct tx_data_wr { 928218792Snp __be32 wr_hi; 929218792Snp __be32 wr_lo; 930218792Snp __be32 len; 931218792Snp __be32 flags; 932218792Snp __be32 sndseq; 933218792Snp __be32 param; 934218792Snp}; 935218792Snp 936218792Snp/* tx_data_wr.flags fields */ 937218792Snp#define S_TX_ACK_PAGES 21 938218792Snp#define M_TX_ACK_PAGES 0x7 939218792Snp#define V_TX_ACK_PAGES(x) ((x) << S_TX_ACK_PAGES) 940218792Snp#define G_TX_ACK_PAGES(x) (((x) >> S_TX_ACK_PAGES) & M_TX_ACK_PAGES) 941218792Snp 942218792Snp/* tx_data_wr.param fields */ 943218792Snp#define S_TX_PORT 0 944218792Snp#define M_TX_PORT 0x7 945218792Snp#define V_TX_PORT(x) ((x) << S_TX_PORT) 946218792Snp#define G_TX_PORT(x) (((x) >> S_TX_PORT) & M_TX_PORT) 947218792Snp 948218792Snp#define S_TX_MSS 4 949218792Snp#define M_TX_MSS 0xF 950218792Snp#define V_TX_MSS(x) ((x) << S_TX_MSS) 951218792Snp#define G_TX_MSS(x) (((x) >> S_TX_MSS) & M_TX_MSS) 952218792Snp 953218792Snp#define S_TX_QOS 8 954218792Snp#define M_TX_QOS 0xFF 955218792Snp#define V_TX_QOS(x) ((x) << S_TX_QOS) 956218792Snp#define G_TX_QOS(x) (((x) >> S_TX_QOS) & M_TX_QOS) 957218792Snp 958218792Snp#define S_TX_SNDBUF 16 959218792Snp#define M_TX_SNDBUF 0xFFFF 960218792Snp#define V_TX_SNDBUF(x) ((x) << S_TX_SNDBUF) 961218792Snp#define G_TX_SNDBUF(x) (((x) >> S_TX_SNDBUF) & M_TX_SNDBUF) 962218792Snp 963218792Snpstruct cpl_tx_data { 964218792Snp union opcode_tid ot; 965218792Snp __be32 len; 966218792Snp __be32 rsvd; 967218792Snp __be32 flags; 968218792Snp}; 969218792Snp 970218792Snp/* cpl_tx_data.flags fields */ 971218792Snp#define S_TX_PROXY 5 972218792Snp#define V_TX_PROXY(x) ((x) << S_TX_PROXY) 973218792Snp#define F_TX_PROXY V_TX_PROXY(1U) 974218792Snp 975218792Snp#define S_TX_ULP_SUBMODE 6 976218792Snp#define M_TX_ULP_SUBMODE 0xF 977218792Snp#define V_TX_ULP_SUBMODE(x) ((x) << S_TX_ULP_SUBMODE) 978218792Snp#define G_TX_ULP_SUBMODE(x) (((x) >> S_TX_ULP_SUBMODE) & M_TX_ULP_SUBMODE) 979218792Snp 980218792Snp#define S_TX_ULP_MODE 10 981218792Snp#define M_TX_ULP_MODE 0xF 982218792Snp#define V_TX_ULP_MODE(x) ((x) << S_TX_ULP_MODE) 983218792Snp#define G_TX_ULP_MODE(x) (((x) >> S_TX_ULP_MODE) & M_TX_ULP_MODE) 984218792Snp 985218792Snp#define S_TX_SHOVE 14 986218792Snp#define V_TX_SHOVE(x) ((x) << S_TX_SHOVE) 987218792Snp#define F_TX_SHOVE V_TX_SHOVE(1U) 988218792Snp 989218792Snp#define S_TX_MORE 15 990218792Snp#define V_TX_MORE(x) ((x) << S_TX_MORE) 991218792Snp#define F_TX_MORE V_TX_MORE(1U) 992218792Snp 993218792Snp#define S_TX_URG 16 994218792Snp#define V_TX_URG(x) ((x) << S_TX_URG) 995218792Snp#define F_TX_URG V_TX_URG(1U) 996218792Snp 997218792Snp#define S_TX_FLUSH 17 998218792Snp#define V_TX_FLUSH(x) ((x) << S_TX_FLUSH) 999218792Snp#define F_TX_FLUSH V_TX_FLUSH(1U) 1000218792Snp 1001218792Snp#define S_TX_SAVE 18 1002218792Snp#define V_TX_SAVE(x) ((x) << S_TX_SAVE) 1003218792Snp#define F_TX_SAVE V_TX_SAVE(1U) 1004218792Snp 1005218792Snp#define S_TX_TNL 19 1006218792Snp#define V_TX_TNL(x) ((x) << S_TX_TNL) 1007218792Snp#define F_TX_TNL V_TX_TNL(1U) 1008218792Snp 1009218792Snp/* additional tx_data_wr.flags fields */ 1010218792Snp#define S_TX_CPU_IDX 0 1011218792Snp#define M_TX_CPU_IDX 0x3F 1012218792Snp#define V_TX_CPU_IDX(x) ((x) << S_TX_CPU_IDX) 1013218792Snp#define G_TX_CPU_IDX(x) (((x) >> S_TX_CPU_IDX) & M_TX_CPU_IDX) 1014218792Snp 1015218792Snp#define S_TX_CLOSE 17 1016218792Snp#define V_TX_CLOSE(x) ((x) << S_TX_CLOSE) 1017218792Snp#define F_TX_CLOSE V_TX_CLOSE(1U) 1018218792Snp 1019218792Snp#define S_TX_INIT 18 1020218792Snp#define V_TX_INIT(x) ((x) << S_TX_INIT) 1021218792Snp#define F_TX_INIT V_TX_INIT(1U) 1022218792Snp 1023218792Snp#define S_TX_IMM_ACK 19 1024218792Snp#define V_TX_IMM_ACK(x) ((x) << S_TX_IMM_ACK) 1025218792Snp#define F_TX_IMM_ACK V_TX_IMM_ACK(1U) 1026218792Snp 1027218792Snp#define S_TX_IMM_DMA 20 1028218792Snp#define V_TX_IMM_DMA(x) ((x) << S_TX_IMM_DMA) 1029218792Snp#define F_TX_IMM_DMA V_TX_IMM_DMA(1U) 1030218792Snp 1031218792Snpstruct cpl_tx_data_ack { 1032218792Snp RSS_HDR 1033218792Snp union opcode_tid ot; 1034218792Snp __be32 snd_una; 1035218792Snp}; 1036218792Snp 1037218792Snpstruct cpl_wr_ack { /* XXX */ 1038218792Snp RSS_HDR 1039218792Snp union opcode_tid ot; 1040218792Snp __be16 credits; 1041218792Snp __be16 rsvd; 1042218792Snp __be32 snd_nxt; 1043218792Snp __be32 snd_una; 1044218792Snp}; 1045218792Snp 1046218792Snpstruct cpl_tx_pkt_core { 1047218792Snp __be32 ctrl0; 1048218792Snp __be16 pack; 1049218792Snp __be16 len; 1050218792Snp __be64 ctrl1; 1051218792Snp}; 1052218792Snp 1053218792Snpstruct cpl_tx_pkt { 1054218792Snp WR_HDR; 1055218792Snp struct cpl_tx_pkt_core c; 1056218792Snp}; 1057218792Snp 1058218792Snp#define cpl_tx_pkt_xt cpl_tx_pkt 1059218792Snp 1060218792Snp/* cpl_tx_pkt_core.ctrl0 fields */ 1061218792Snp#define S_TXPKT_VF 0 1062218792Snp#define M_TXPKT_VF 0xFF 1063218792Snp#define V_TXPKT_VF(x) ((x) << S_TXPKT_VF) 1064218792Snp#define G_TXPKT_VF(x) (((x) >> S_TXPKT_VF) & M_TXPKT_VF) 1065218792Snp 1066218792Snp#define S_TXPKT_PF 8 1067218792Snp#define M_TXPKT_PF 0x7 1068218792Snp#define V_TXPKT_PF(x) ((x) << S_TXPKT_PF) 1069218792Snp#define G_TXPKT_PF(x) (((x) >> S_TXPKT_PF) & M_TXPKT_PF) 1070218792Snp 1071218792Snp#define S_TXPKT_VF_VLD 11 1072218792Snp#define V_TXPKT_VF_VLD(x) ((x) << S_TXPKT_VF_VLD) 1073218792Snp#define F_TXPKT_VF_VLD V_TXPKT_VF_VLD(1U) 1074218792Snp 1075218792Snp#define S_TXPKT_OVLAN_IDX 12 1076218792Snp#define M_TXPKT_OVLAN_IDX 0xF 1077218792Snp#define V_TXPKT_OVLAN_IDX(x) ((x) << S_TXPKT_OVLAN_IDX) 1078218792Snp#define G_TXPKT_OVLAN_IDX(x) (((x) >> S_TXPKT_OVLAN_IDX) & M_TXPKT_OVLAN_IDX) 1079218792Snp 1080252495Snp#define S_TXPKT_T5_OVLAN_IDX 12 1081252495Snp#define M_TXPKT_T5_OVLAN_IDX 0x7 1082252495Snp#define V_TXPKT_T5_OVLAN_IDX(x) ((x) << S_TXPKT_T5_OVLAN_IDX) 1083252495Snp#define G_TXPKT_T5_OVLAN_IDX(x) (((x) >> S_TXPKT_T5_OVLAN_IDX) & \ 1084252495Snp M_TXPKT_T5_OVLAN_IDX) 1085252495Snp 1086218792Snp#define S_TXPKT_INTF 16 1087218792Snp#define M_TXPKT_INTF 0xF 1088218792Snp#define V_TXPKT_INTF(x) ((x) << S_TXPKT_INTF) 1089218792Snp#define G_TXPKT_INTF(x) (((x) >> S_TXPKT_INTF) & M_TXPKT_INTF) 1090218792Snp 1091218792Snp#define S_TXPKT_SPECIAL_STAT 20 1092218792Snp#define V_TXPKT_SPECIAL_STAT(x) ((x) << S_TXPKT_SPECIAL_STAT) 1093218792Snp#define F_TXPKT_SPECIAL_STAT V_TXPKT_SPECIAL_STAT(1U) 1094218792Snp 1095252495Snp#define S_TXPKT_T5_FCS_DIS 21 1096252495Snp#define V_TXPKT_T5_FCS_DIS(x) ((x) << S_TXPKT_T5_FCS_DIS) 1097252495Snp#define F_TXPKT_T5_FCS_DIS V_TXPKT_T5_FCS_DIS(1U) 1098252495Snp 1099218792Snp#define S_TXPKT_INS_OVLAN 21 1100218792Snp#define V_TXPKT_INS_OVLAN(x) ((x) << S_TXPKT_INS_OVLAN) 1101218792Snp#define F_TXPKT_INS_OVLAN V_TXPKT_INS_OVLAN(1U) 1102218792Snp 1103252495Snp#define S_TXPKT_T5_INS_OVLAN 15 1104252495Snp#define V_TXPKT_T5_INS_OVLAN(x) ((x) << S_TXPKT_T5_INS_OVLAN) 1105252495Snp#define F_TXPKT_T5_INS_OVLAN V_TXPKT_T5_INS_OVLAN(1U) 1106252495Snp 1107218792Snp#define S_TXPKT_STAT_DIS 22 1108218792Snp#define V_TXPKT_STAT_DIS(x) ((x) << S_TXPKT_STAT_DIS) 1109218792Snp#define F_TXPKT_STAT_DIS V_TXPKT_STAT_DIS(1U) 1110218792Snp 1111218792Snp#define S_TXPKT_LOOPBACK 23 1112218792Snp#define V_TXPKT_LOOPBACK(x) ((x) << S_TXPKT_LOOPBACK) 1113218792Snp#define F_TXPKT_LOOPBACK V_TXPKT_LOOPBACK(1U) 1114218792Snp 1115237925Snp#define S_TXPKT_TSTAMP 23 1116237925Snp#define V_TXPKT_TSTAMP(x) ((x) << S_TXPKT_TSTAMP) 1117237925Snp#define F_TXPKT_TSTAMP V_TXPKT_TSTAMP(1U) 1118237925Snp 1119218792Snp#define S_TXPKT_OPCODE 24 1120218792Snp#define M_TXPKT_OPCODE 0xFF 1121218792Snp#define V_TXPKT_OPCODE(x) ((x) << S_TXPKT_OPCODE) 1122218792Snp#define G_TXPKT_OPCODE(x) (((x) >> S_TXPKT_OPCODE) & M_TXPKT_OPCODE) 1123218792Snp 1124218792Snp/* cpl_tx_pkt_core.ctrl1 fields */ 1125218792Snp#define S_TXPKT_SA_IDX 0 1126218792Snp#define M_TXPKT_SA_IDX 0xFFF 1127218792Snp#define V_TXPKT_SA_IDX(x) ((x) << S_TXPKT_SA_IDX) 1128218792Snp#define G_TXPKT_SA_IDX(x) (((x) >> S_TXPKT_SA_IDX) & M_TXPKT_SA_IDX) 1129218792Snp 1130218792Snp#define S_TXPKT_CSUM_END 12 1131218792Snp#define M_TXPKT_CSUM_END 0xFF 1132218792Snp#define V_TXPKT_CSUM_END(x) ((x) << S_TXPKT_CSUM_END) 1133218792Snp#define G_TXPKT_CSUM_END(x) (((x) >> S_TXPKT_CSUM_END) & M_TXPKT_CSUM_END) 1134218792Snp 1135218792Snp#define S_TXPKT_CSUM_START 20 1136218792Snp#define M_TXPKT_CSUM_START 0x3FF 1137218792Snp#define V_TXPKT_CSUM_START(x) ((x) << S_TXPKT_CSUM_START) 1138218792Snp#define G_TXPKT_CSUM_START(x) (((x) >> S_TXPKT_CSUM_START) & M_TXPKT_CSUM_START) 1139218792Snp 1140218792Snp#define S_TXPKT_IPHDR_LEN 20 1141218792Snp#define M_TXPKT_IPHDR_LEN 0x3FFF 1142218792Snp#define V_TXPKT_IPHDR_LEN(x) ((__u64)(x) << S_TXPKT_IPHDR_LEN) 1143218792Snp#define G_TXPKT_IPHDR_LEN(x) (((x) >> S_TXPKT_IPHDR_LEN) & M_TXPKT_IPHDR_LEN) 1144218792Snp 1145218792Snp#define S_TXPKT_CSUM_LOC 30 1146218792Snp#define M_TXPKT_CSUM_LOC 0x3FF 1147218792Snp#define V_TXPKT_CSUM_LOC(x) ((__u64)(x) << S_TXPKT_CSUM_LOC) 1148218792Snp#define G_TXPKT_CSUM_LOC(x) (((x) >> S_TXPKT_CSUM_LOC) & M_TXPKT_CSUM_LOC) 1149218792Snp 1150218792Snp#define S_TXPKT_ETHHDR_LEN 34 1151218792Snp#define M_TXPKT_ETHHDR_LEN 0x3F 1152218792Snp#define V_TXPKT_ETHHDR_LEN(x) ((__u64)(x) << S_TXPKT_ETHHDR_LEN) 1153218792Snp#define G_TXPKT_ETHHDR_LEN(x) (((x) >> S_TXPKT_ETHHDR_LEN) & M_TXPKT_ETHHDR_LEN) 1154218792Snp 1155218792Snp#define S_TXPKT_CSUM_TYPE 40 1156218792Snp#define M_TXPKT_CSUM_TYPE 0xF 1157218792Snp#define V_TXPKT_CSUM_TYPE(x) ((__u64)(x) << S_TXPKT_CSUM_TYPE) 1158218792Snp#define G_TXPKT_CSUM_TYPE(x) (((x) >> S_TXPKT_CSUM_TYPE) & M_TXPKT_CSUM_TYPE) 1159218792Snp 1160218792Snp#define S_TXPKT_VLAN 44 1161218792Snp#define M_TXPKT_VLAN 0xFFFF 1162218792Snp#define V_TXPKT_VLAN(x) ((__u64)(x) << S_TXPKT_VLAN) 1163218792Snp#define G_TXPKT_VLAN(x) (((x) >> S_TXPKT_VLAN) & M_TXPKT_VLAN) 1164218792Snp 1165218792Snp#define S_TXPKT_VLAN_VLD 60 1166218792Snp#define V_TXPKT_VLAN_VLD(x) ((__u64)(x) << S_TXPKT_VLAN_VLD) 1167218792Snp#define F_TXPKT_VLAN_VLD V_TXPKT_VLAN_VLD(1ULL) 1168218792Snp 1169218792Snp#define S_TXPKT_IPSEC 61 1170218792Snp#define V_TXPKT_IPSEC(x) ((__u64)(x) << S_TXPKT_IPSEC) 1171218792Snp#define F_TXPKT_IPSEC V_TXPKT_IPSEC(1ULL) 1172218792Snp 1173218792Snp#define S_TXPKT_IPCSUM_DIS 62 1174218792Snp#define V_TXPKT_IPCSUM_DIS(x) ((__u64)(x) << S_TXPKT_IPCSUM_DIS) 1175218792Snp#define F_TXPKT_IPCSUM_DIS V_TXPKT_IPCSUM_DIS(1ULL) 1176218792Snp 1177218792Snp#define S_TXPKT_L4CSUM_DIS 63 1178218792Snp#define V_TXPKT_L4CSUM_DIS(x) ((__u64)(x) << S_TXPKT_L4CSUM_DIS) 1179218792Snp#define F_TXPKT_L4CSUM_DIS V_TXPKT_L4CSUM_DIS(1ULL) 1180218792Snp 1181237925Snpstruct cpl_tx_pkt_lso_core { 1182218792Snp __be32 lso_ctrl; 1183218792Snp __be16 ipid_ofst; 1184218792Snp __be16 mss; 1185218792Snp __be32 seqno_offset; 1186218792Snp __be32 len; 1187218792Snp /* encapsulated CPL (TX_PKT, TX_PKT_XT or TX_DATA) follows here */ 1188218792Snp}; 1189218792Snp 1190237925Snpstruct cpl_tx_pkt_lso { 1191237925Snp WR_HDR; 1192237925Snp struct cpl_tx_pkt_lso_core c; 1193237925Snp /* encapsulated CPL (TX_PKT, TX_PKT_XT or TX_DATA) follows here */ 1194237925Snp}; 1195237925Snp 1196237925Snpstruct cpl_tx_pkt_ufo_core { 1197237925Snp __be16 ethlen; 1198237925Snp __be16 iplen; 1199237925Snp __be16 udplen; 1200237925Snp __be16 mss; 1201237925Snp __be32 len; 1202237925Snp __be32 r1; 1203237925Snp /* encapsulated CPL (TX_PKT, TX_PKT_XT or TX_DATA) follows here */ 1204237925Snp}; 1205237925Snp 1206237925Snpstruct cpl_tx_pkt_ufo { 1207237925Snp WR_HDR; 1208237925Snp struct cpl_tx_pkt_ufo_core c; 1209237925Snp /* encapsulated CPL (TX_PKT, TX_PKT_XT or TX_DATA) follows here */ 1210237925Snp}; 1211237925Snp 1212237925Snp/* cpl_tx_pkt_lso_core.lso_ctrl fields */ 1213218792Snp#define S_LSO_TCPHDR_LEN 0 1214218792Snp#define M_LSO_TCPHDR_LEN 0xF 1215218792Snp#define V_LSO_TCPHDR_LEN(x) ((x) << S_LSO_TCPHDR_LEN) 1216218792Snp#define G_LSO_TCPHDR_LEN(x) (((x) >> S_LSO_TCPHDR_LEN) & M_LSO_TCPHDR_LEN) 1217218792Snp 1218218792Snp#define S_LSO_IPHDR_LEN 4 1219218792Snp#define M_LSO_IPHDR_LEN 0xFFF 1220218792Snp#define V_LSO_IPHDR_LEN(x) ((x) << S_LSO_IPHDR_LEN) 1221218792Snp#define G_LSO_IPHDR_LEN(x) (((x) >> S_LSO_IPHDR_LEN) & M_LSO_IPHDR_LEN) 1222218792Snp 1223218792Snp#define S_LSO_ETHHDR_LEN 16 1224218792Snp#define M_LSO_ETHHDR_LEN 0xF 1225218792Snp#define V_LSO_ETHHDR_LEN(x) ((x) << S_LSO_ETHHDR_LEN) 1226218792Snp#define G_LSO_ETHHDR_LEN(x) (((x) >> S_LSO_ETHHDR_LEN) & M_LSO_ETHHDR_LEN) 1227218792Snp 1228218792Snp#define S_LSO_IPV6 20 1229218792Snp#define V_LSO_IPV6(x) ((x) << S_LSO_IPV6) 1230218792Snp#define F_LSO_IPV6 V_LSO_IPV6(1U) 1231218792Snp 1232218792Snp#define S_LSO_OFLD_ENCAP 21 1233218792Snp#define V_LSO_OFLD_ENCAP(x) ((x) << S_LSO_OFLD_ENCAP) 1234218792Snp#define F_LSO_OFLD_ENCAP V_LSO_OFLD_ENCAP(1U) 1235218792Snp 1236218792Snp#define S_LSO_LAST_SLICE 22 1237218792Snp#define V_LSO_LAST_SLICE(x) ((x) << S_LSO_LAST_SLICE) 1238218792Snp#define F_LSO_LAST_SLICE V_LSO_LAST_SLICE(1U) 1239218792Snp 1240218792Snp#define S_LSO_FIRST_SLICE 23 1241218792Snp#define V_LSO_FIRST_SLICE(x) ((x) << S_LSO_FIRST_SLICE) 1242218792Snp#define F_LSO_FIRST_SLICE V_LSO_FIRST_SLICE(1U) 1243218792Snp 1244218792Snp#define S_LSO_OPCODE 24 1245218792Snp#define M_LSO_OPCODE 0xFF 1246218792Snp#define V_LSO_OPCODE(x) ((x) << S_LSO_OPCODE) 1247218792Snp#define G_LSO_OPCODE(x) (((x) >> S_LSO_OPCODE) & M_LSO_OPCODE) 1248218792Snp 1249252495Snp#define S_LSO_T5_XFER_SIZE 0 1250252495Snp#define M_LSO_T5_XFER_SIZE 0xFFFFFFF 1251252495Snp#define V_LSO_T5_XFER_SIZE(x) ((x) << S_LSO_T5_XFER_SIZE) 1252252495Snp#define G_LSO_T5_XFER_SIZE(x) (((x) >> S_LSO_T5_XFER_SIZE) & M_LSO_T5_XFER_SIZE) 1253252495Snp 1254237925Snp/* cpl_tx_pkt_lso_core.mss fields */ 1255218792Snp#define S_LSO_MSS 0 1256218792Snp#define M_LSO_MSS 0x3FFF 1257218792Snp#define V_LSO_MSS(x) ((x) << S_LSO_MSS) 1258218792Snp#define G_LSO_MSS(x) (((x) >> S_LSO_MSS) & M_LSO_MSS) 1259218792Snp 1260218792Snp#define S_LSO_IPID_SPLIT 15 1261218792Snp#define V_LSO_IPID_SPLIT(x) ((x) << S_LSO_IPID_SPLIT) 1262218792Snp#define F_LSO_IPID_SPLIT V_LSO_IPID_SPLIT(1U) 1263218792Snp 1264237925Snpstruct cpl_tx_pkt_fso { 1265237925Snp WR_HDR; 1266237925Snp __be32 fso_ctrl; 1267237925Snp __be16 seqcnt_ofst; 1268237925Snp __be16 mtu; 1269237925Snp __be32 param_offset; 1270218792Snp __be32 len; 1271237925Snp /* encapsulated CPL (TX_PKT or TX_PKT_XT) follows here */ 1272218792Snp}; 1273218792Snp 1274237925Snp/* cpl_tx_pkt_fso.fso_ctrl fields different from cpl_tx_pkt_lso.lso_ctrl */ 1275237925Snp#define S_FSO_XCHG_CLASS 21 1276237925Snp#define V_FSO_XCHG_CLASS(x) ((x) << S_FSO_XCHG_CLASS) 1277237925Snp#define F_FSO_XCHG_CLASS V_FSO_XCHG_CLASS(1U) 1278218792Snp 1279237925Snp#define S_FSO_INITIATOR 20 1280237925Snp#define V_FSO_INITIATOR(x) ((x) << S_FSO_INITIATOR) 1281237925Snp#define F_FSO_INITIATOR V_FSO_INITIATOR(1U) 1282218792Snp 1283237925Snp#define S_FSO_FCHDR_LEN 12 1284237925Snp#define M_FSO_FCHDR_LEN 0xF 1285237925Snp#define V_FSO_FCHDR_LEN(x) ((x) << S_FSO_FCHDR_LEN) 1286237925Snp#define G_FSO_FCHDR_LEN(x) (((x) >> S_FSO_FCHDR_LEN) & M_FSO_FCHDR_LEN) 1287237925Snp 1288218792Snpstruct cpl_iscsi_hdr_no_rss { 1289218792Snp union opcode_tid ot; 1290218792Snp __be16 pdu_len_ddp; 1291218792Snp __be16 len; 1292218792Snp __be32 seq; 1293218792Snp __be16 urg; 1294218792Snp __u8 rsvd; 1295218792Snp __u8 status; 1296218792Snp}; 1297218792Snp 1298237925Snpstruct cpl_tx_data_iso { 1299237925Snp WR_HDR; 1300237925Snp __be32 iso_ctrl; 1301237925Snp __u8 rsvd; 1302237925Snp __u8 ahs_len; 1303237925Snp __be16 mss; 1304237925Snp __be32 burst_size; 1305237925Snp __be32 len; 1306237925Snp /* encapsulated CPL_TX_DATA follows here */ 1307237925Snp}; 1308237925Snp 1309237925Snp/* cpl_tx_data_iso.iso_ctrl fields different from cpl_tx_pkt_lso.lso_ctrl */ 1310237925Snp#define S_ISO_CPLHDR_LEN 18 1311237925Snp#define M_ISO_CPLHDR_LEN 0xF 1312237925Snp#define V_ISO_CPLHDR_LEN(x) ((x) << S_ISO_CPLHDR_LEN) 1313237925Snp#define G_ISO_CPLHDR_LEN(x) (((x) >> S_ISO_CPLHDR_LEN) & M_ISO_CPLHDR_LEN) 1314237925Snp 1315237925Snp#define S_ISO_HDR_CRC 17 1316237925Snp#define V_ISO_HDR_CRC(x) ((x) << S_ISO_HDR_CRC) 1317237925Snp#define F_ISO_HDR_CRC V_ISO_HDR_CRC(1U) 1318237925Snp 1319237925Snp#define S_ISO_DATA_CRC 16 1320237925Snp#define V_ISO_DATA_CRC(x) ((x) << S_ISO_DATA_CRC) 1321237925Snp#define F_ISO_DATA_CRC V_ISO_DATA_CRC(1U) 1322237925Snp 1323237925Snp#define S_ISO_IMD_DATA_EN 15 1324237925Snp#define V_ISO_IMD_DATA_EN(x) ((x) << S_ISO_IMD_DATA_EN) 1325237925Snp#define F_ISO_IMD_DATA_EN V_ISO_IMD_DATA_EN(1U) 1326237925Snp 1327237925Snp#define S_ISO_PDU_TYPE 13 1328237925Snp#define M_ISO_PDU_TYPE 0x3 1329237925Snp#define V_ISO_PDU_TYPE(x) ((x) << S_ISO_PDU_TYPE) 1330237925Snp#define G_ISO_PDU_TYPE(x) (((x) >> S_ISO_PDU_TYPE) & M_ISO_PDU_TYPE) 1331237925Snp 1332218792Snpstruct cpl_iscsi_hdr { 1333218792Snp RSS_HDR 1334218792Snp union opcode_tid ot; 1335218792Snp __be16 pdu_len_ddp; 1336218792Snp __be16 len; 1337218792Snp __be32 seq; 1338218792Snp __be16 urg; 1339218792Snp __u8 rsvd; 1340218792Snp __u8 status; 1341218792Snp}; 1342218792Snp 1343218792Snp/* cpl_iscsi_hdr.pdu_len_ddp fields */ 1344218792Snp#define S_ISCSI_PDU_LEN 0 1345218792Snp#define M_ISCSI_PDU_LEN 0x7FFF 1346218792Snp#define V_ISCSI_PDU_LEN(x) ((x) << S_ISCSI_PDU_LEN) 1347218792Snp#define G_ISCSI_PDU_LEN(x) (((x) >> S_ISCSI_PDU_LEN) & M_ISCSI_PDU_LEN) 1348218792Snp 1349218792Snp#define S_ISCSI_DDP 15 1350218792Snp#define V_ISCSI_DDP(x) ((x) << S_ISCSI_DDP) 1351218792Snp#define F_ISCSI_DDP V_ISCSI_DDP(1U) 1352218792Snp 1353237925Snpstruct cpl_iscsi_data { 1354237925Snp RSS_HDR 1355237925Snp union opcode_tid ot; 1356237925Snp __u8 rsvd0[2]; 1357237925Snp __be16 len; 1358237925Snp __be32 seq; 1359237925Snp __be16 urg; 1360237925Snp __u8 rsvd1; 1361237925Snp __u8 status; 1362237925Snp}; 1363237925Snp 1364218792Snpstruct cpl_rx_data { 1365218792Snp RSS_HDR 1366218792Snp union opcode_tid ot; 1367218792Snp __be16 rsvd; 1368218792Snp __be16 len; 1369218792Snp __be32 seq; 1370218792Snp __be16 urg; 1371218792Snp#if defined(__LITTLE_ENDIAN_BITFIELD) 1372218792Snp __u8 dack_mode:2; 1373218792Snp __u8 psh:1; 1374218792Snp __u8 heartbeat:1; 1375218792Snp __u8 ddp_off:1; 1376218792Snp __u8 :3; 1377218792Snp#else 1378218792Snp __u8 :3; 1379218792Snp __u8 ddp_off:1; 1380218792Snp __u8 heartbeat:1; 1381218792Snp __u8 psh:1; 1382218792Snp __u8 dack_mode:2; 1383218792Snp#endif 1384218792Snp __u8 status; 1385218792Snp}; 1386218792Snp 1387218792Snpstruct cpl_fcoe_hdr { 1388218792Snp RSS_HDR 1389218792Snp union opcode_tid ot; 1390218792Snp __be16 oxid; 1391218792Snp __be16 len; 1392218792Snp __be32 rctl_fctl; 1393218792Snp __u8 cs_ctl; 1394218792Snp __u8 df_ctl; 1395218792Snp __u8 sof; 1396218792Snp __u8 eof; 1397218792Snp __be16 seq_cnt; 1398218792Snp __u8 seq_id; 1399218792Snp __u8 type; 1400218792Snp __be32 param; 1401218792Snp}; 1402218792Snp 1403237925Snpstruct cpl_fcoe_data { 1404237925Snp RSS_HDR 1405237925Snp union opcode_tid ot; 1406237925Snp __u8 rsvd0[2]; 1407237925Snp __be16 len; 1408237925Snp __be32 seq; 1409237925Snp __u8 rsvd1[3]; 1410237925Snp __u8 status; 1411237925Snp}; 1412237925Snp 1413218792Snpstruct cpl_rx_urg_notify { 1414218792Snp RSS_HDR 1415218792Snp union opcode_tid ot; 1416218792Snp __be32 seq; 1417218792Snp}; 1418218792Snp 1419218792Snpstruct cpl_rx_urg_pkt { 1420218792Snp RSS_HDR 1421218792Snp union opcode_tid ot; 1422218792Snp __be16 rsvd; 1423218792Snp __be16 len; 1424218792Snp}; 1425218792Snp 1426218792Snpstruct cpl_rx_data_ack { 1427218792Snp WR_HDR; 1428218792Snp union opcode_tid ot; 1429218792Snp __be32 credit_dack; 1430218792Snp}; 1431218792Snp 1432240169Snpstruct cpl_rx_data_ack_core { 1433240169Snp union opcode_tid ot; 1434240169Snp __be32 credit_dack; 1435240169Snp}; 1436240169Snp 1437218792Snp/* cpl_rx_data_ack.ack_seq fields */ 1438218792Snp#define S_RX_CREDITS 0 1439218792Snp#define M_RX_CREDITS 0x3FFFFFF 1440218792Snp#define V_RX_CREDITS(x) ((x) << S_RX_CREDITS) 1441218792Snp#define G_RX_CREDITS(x) (((x) >> S_RX_CREDITS) & M_RX_CREDITS) 1442218792Snp 1443218792Snp#define S_RX_MODULATE_TX 26 1444218792Snp#define V_RX_MODULATE_TX(x) ((x) << S_RX_MODULATE_TX) 1445218792Snp#define F_RX_MODULATE_TX V_RX_MODULATE_TX(1U) 1446218792Snp 1447218792Snp#define S_RX_MODULATE_RX 27 1448218792Snp#define V_RX_MODULATE_RX(x) ((x) << S_RX_MODULATE_RX) 1449218792Snp#define F_RX_MODULATE_RX V_RX_MODULATE_RX(1U) 1450218792Snp 1451218792Snp#define S_RX_FORCE_ACK 28 1452218792Snp#define V_RX_FORCE_ACK(x) ((x) << S_RX_FORCE_ACK) 1453218792Snp#define F_RX_FORCE_ACK V_RX_FORCE_ACK(1U) 1454218792Snp 1455218792Snp#define S_RX_DACK_MODE 29 1456218792Snp#define M_RX_DACK_MODE 0x3 1457218792Snp#define V_RX_DACK_MODE(x) ((x) << S_RX_DACK_MODE) 1458218792Snp#define G_RX_DACK_MODE(x) (((x) >> S_RX_DACK_MODE) & M_RX_DACK_MODE) 1459218792Snp 1460218792Snp#define S_RX_DACK_CHANGE 31 1461218792Snp#define V_RX_DACK_CHANGE(x) ((x) << S_RX_DACK_CHANGE) 1462218792Snp#define F_RX_DACK_CHANGE V_RX_DACK_CHANGE(1U) 1463218792Snp 1464218792Snpstruct cpl_rx_ddp_complete { 1465218792Snp RSS_HDR 1466218792Snp union opcode_tid ot; 1467218792Snp __be32 ddp_report; 1468218792Snp __be32 rcv_nxt; 1469218792Snp __be32 rsvd; 1470218792Snp}; 1471218792Snp 1472218792Snpstruct cpl_rx_data_ddp { 1473218792Snp RSS_HDR 1474218792Snp union opcode_tid ot; 1475218792Snp __be16 urg; 1476218792Snp __be16 len; 1477218792Snp __be32 seq; 1478218792Snp union { 1479218792Snp __be32 nxt_seq; 1480218792Snp __be32 ddp_report; 1481218792Snp } u; 1482218792Snp __be32 ulp_crc; 1483218792Snp __be32 ddpvld; 1484218792Snp}; 1485218792Snp 1486237925Snp#define cpl_rx_iscsi_ddp cpl_rx_data_ddp 1487237925Snp 1488218792Snpstruct cpl_rx_fcoe_ddp { 1489218792Snp RSS_HDR 1490218792Snp union opcode_tid ot; 1491218792Snp __be16 rsvd; 1492218792Snp __be16 len; 1493218792Snp __be32 seq; 1494218792Snp __be32 ddp_report; 1495218792Snp __be32 ulp_crc; 1496218792Snp __be32 ddpvld; 1497218792Snp}; 1498218792Snp 1499237925Snpstruct cpl_rx_data_dif { 1500237925Snp RSS_HDR 1501237925Snp union opcode_tid ot; 1502237925Snp __be16 ddp_len; 1503237925Snp __be16 msg_len; 1504237925Snp __be32 seq; 1505237925Snp union { 1506237925Snp __be32 nxt_seq; 1507237925Snp __be32 ddp_report; 1508237925Snp } u; 1509237925Snp __be32 err_vec; 1510237925Snp __be32 ddpvld; 1511237925Snp}; 1512237925Snp 1513237925Snpstruct cpl_rx_iscsi_dif { 1514237925Snp RSS_HDR 1515237925Snp union opcode_tid ot; 1516237925Snp __be16 ddp_len; 1517237925Snp __be16 msg_len; 1518237925Snp __be32 seq; 1519237925Snp union { 1520237925Snp __be32 nxt_seq; 1521237925Snp __be32 ddp_report; 1522237925Snp } u; 1523237925Snp __be32 ulp_crc; 1524237925Snp __be32 ddpvld; 1525237925Snp __u8 rsvd0[8]; 1526237925Snp __be32 err_vec; 1527237925Snp __u8 rsvd1[4]; 1528237925Snp}; 1529237925Snp 1530237925Snpstruct cpl_rx_fcoe_dif { 1531237925Snp RSS_HDR 1532237925Snp union opcode_tid ot; 1533237925Snp __be16 ddp_len; 1534237925Snp __be16 msg_len; 1535237925Snp __be32 seq; 1536237925Snp __be32 ddp_report; 1537237925Snp __be32 err_vec; 1538237925Snp __be32 ddpvld; 1539237925Snp}; 1540237925Snp 1541237925Snp/* cpl_rx_{data,iscsi,fcoe}_{ddp,dif}.ddpvld fields */ 1542218792Snp#define S_DDP_VALID 15 1543218792Snp#define M_DDP_VALID 0x1FFFF 1544218792Snp#define V_DDP_VALID(x) ((x) << S_DDP_VALID) 1545218792Snp#define G_DDP_VALID(x) (((x) >> S_DDP_VALID) & M_DDP_VALID) 1546218792Snp 1547218792Snp#define S_DDP_PPOD_MISMATCH 15 1548218792Snp#define V_DDP_PPOD_MISMATCH(x) ((x) << S_DDP_PPOD_MISMATCH) 1549218792Snp#define F_DDP_PPOD_MISMATCH V_DDP_PPOD_MISMATCH(1U) 1550218792Snp 1551218792Snp#define S_DDP_PDU 16 1552218792Snp#define V_DDP_PDU(x) ((x) << S_DDP_PDU) 1553218792Snp#define F_DDP_PDU V_DDP_PDU(1U) 1554218792Snp 1555218792Snp#define S_DDP_LLIMIT_ERR 17 1556218792Snp#define V_DDP_LLIMIT_ERR(x) ((x) << S_DDP_LLIMIT_ERR) 1557218792Snp#define F_DDP_LLIMIT_ERR V_DDP_LLIMIT_ERR(1U) 1558218792Snp 1559218792Snp#define S_DDP_PPOD_PARITY_ERR 18 1560218792Snp#define V_DDP_PPOD_PARITY_ERR(x) ((x) << S_DDP_PPOD_PARITY_ERR) 1561218792Snp#define F_DDP_PPOD_PARITY_ERR V_DDP_PPOD_PARITY_ERR(1U) 1562218792Snp 1563218792Snp#define S_DDP_PADDING_ERR 19 1564218792Snp#define V_DDP_PADDING_ERR(x) ((x) << S_DDP_PADDING_ERR) 1565218792Snp#define F_DDP_PADDING_ERR V_DDP_PADDING_ERR(1U) 1566218792Snp 1567218792Snp#define S_DDP_HDRCRC_ERR 20 1568218792Snp#define V_DDP_HDRCRC_ERR(x) ((x) << S_DDP_HDRCRC_ERR) 1569218792Snp#define F_DDP_HDRCRC_ERR V_DDP_HDRCRC_ERR(1U) 1570218792Snp 1571218792Snp#define S_DDP_DATACRC_ERR 21 1572218792Snp#define V_DDP_DATACRC_ERR(x) ((x) << S_DDP_DATACRC_ERR) 1573218792Snp#define F_DDP_DATACRC_ERR V_DDP_DATACRC_ERR(1U) 1574218792Snp 1575218792Snp#define S_DDP_INVALID_TAG 22 1576218792Snp#define V_DDP_INVALID_TAG(x) ((x) << S_DDP_INVALID_TAG) 1577218792Snp#define F_DDP_INVALID_TAG V_DDP_INVALID_TAG(1U) 1578218792Snp 1579218792Snp#define S_DDP_ULIMIT_ERR 23 1580218792Snp#define V_DDP_ULIMIT_ERR(x) ((x) << S_DDP_ULIMIT_ERR) 1581218792Snp#define F_DDP_ULIMIT_ERR V_DDP_ULIMIT_ERR(1U) 1582218792Snp 1583218792Snp#define S_DDP_OFFSET_ERR 24 1584218792Snp#define V_DDP_OFFSET_ERR(x) ((x) << S_DDP_OFFSET_ERR) 1585218792Snp#define F_DDP_OFFSET_ERR V_DDP_OFFSET_ERR(1U) 1586218792Snp 1587218792Snp#define S_DDP_COLOR_ERR 25 1588218792Snp#define V_DDP_COLOR_ERR(x) ((x) << S_DDP_COLOR_ERR) 1589218792Snp#define F_DDP_COLOR_ERR V_DDP_COLOR_ERR(1U) 1590218792Snp 1591218792Snp#define S_DDP_TID_MISMATCH 26 1592218792Snp#define V_DDP_TID_MISMATCH(x) ((x) << S_DDP_TID_MISMATCH) 1593218792Snp#define F_DDP_TID_MISMATCH V_DDP_TID_MISMATCH(1U) 1594218792Snp 1595218792Snp#define S_DDP_INVALID_PPOD 27 1596218792Snp#define V_DDP_INVALID_PPOD(x) ((x) << S_DDP_INVALID_PPOD) 1597218792Snp#define F_DDP_INVALID_PPOD V_DDP_INVALID_PPOD(1U) 1598218792Snp 1599218792Snp#define S_DDP_ULP_MODE 28 1600218792Snp#define M_DDP_ULP_MODE 0xF 1601218792Snp#define V_DDP_ULP_MODE(x) ((x) << S_DDP_ULP_MODE) 1602218792Snp#define G_DDP_ULP_MODE(x) (((x) >> S_DDP_ULP_MODE) & M_DDP_ULP_MODE) 1603218792Snp 1604237925Snp/* cpl_rx_{data,iscsi,fcoe}_{ddp,dif}.ddp_report fields */ 1605218792Snp#define S_DDP_OFFSET 0 1606218792Snp#define M_DDP_OFFSET 0xFFFFFF 1607218792Snp#define V_DDP_OFFSET(x) ((x) << S_DDP_OFFSET) 1608218792Snp#define G_DDP_OFFSET(x) (((x) >> S_DDP_OFFSET) & M_DDP_OFFSET) 1609218792Snp 1610218792Snp#define S_DDP_DACK_MODE 24 1611218792Snp#define M_DDP_DACK_MODE 0x3 1612218792Snp#define V_DDP_DACK_MODE(x) ((x) << S_DDP_DACK_MODE) 1613218792Snp#define G_DDP_DACK_MODE(x) (((x) >> S_DDP_DACK_MODE) & M_DDP_DACK_MODE) 1614218792Snp 1615218792Snp#define S_DDP_BUF_IDX 26 1616218792Snp#define V_DDP_BUF_IDX(x) ((x) << S_DDP_BUF_IDX) 1617218792Snp#define F_DDP_BUF_IDX V_DDP_BUF_IDX(1U) 1618218792Snp 1619218792Snp#define S_DDP_URG 27 1620218792Snp#define V_DDP_URG(x) ((x) << S_DDP_URG) 1621218792Snp#define F_DDP_URG V_DDP_URG(1U) 1622218792Snp 1623218792Snp#define S_DDP_PSH 28 1624218792Snp#define V_DDP_PSH(x) ((x) << S_DDP_PSH) 1625218792Snp#define F_DDP_PSH V_DDP_PSH(1U) 1626218792Snp 1627218792Snp#define S_DDP_BUF_COMPLETE 29 1628218792Snp#define V_DDP_BUF_COMPLETE(x) ((x) << S_DDP_BUF_COMPLETE) 1629218792Snp#define F_DDP_BUF_COMPLETE V_DDP_BUF_COMPLETE(1U) 1630218792Snp 1631218792Snp#define S_DDP_BUF_TIMED_OUT 30 1632218792Snp#define V_DDP_BUF_TIMED_OUT(x) ((x) << S_DDP_BUF_TIMED_OUT) 1633218792Snp#define F_DDP_BUF_TIMED_OUT V_DDP_BUF_TIMED_OUT(1U) 1634218792Snp 1635218792Snp#define S_DDP_INV 31 1636218792Snp#define V_DDP_INV(x) ((x) << S_DDP_INV) 1637218792Snp#define F_DDP_INV V_DDP_INV(1U) 1638218792Snp 1639218792Snpstruct cpl_rx_pkt { 1640218792Snp RSS_HDR 1641218792Snp __u8 opcode; 1642218792Snp#if defined(__LITTLE_ENDIAN_BITFIELD) 1643218792Snp __u8 iff:4; 1644218792Snp __u8 csum_calc:1; 1645218792Snp __u8 ipmi_pkt:1; 1646218792Snp __u8 vlan_ex:1; 1647218792Snp __u8 ip_frag:1; 1648218792Snp#else 1649218792Snp __u8 ip_frag:1; 1650218792Snp __u8 vlan_ex:1; 1651218792Snp __u8 ipmi_pkt:1; 1652218792Snp __u8 csum_calc:1; 1653218792Snp __u8 iff:4; 1654218792Snp#endif 1655218792Snp __be16 csum; 1656218792Snp __be16 vlan; 1657218792Snp __be16 len; 1658218792Snp __be32 l2info; 1659218792Snp __be16 hdr_len; 1660218792Snp __be16 err_vec; 1661218792Snp}; 1662218792Snp 1663218792Snp/* rx_pkt.l2info fields */ 1664218792Snp#define S_RX_ETHHDR_LEN 0 1665218792Snp#define M_RX_ETHHDR_LEN 0x1F 1666218792Snp#define V_RX_ETHHDR_LEN(x) ((x) << S_RX_ETHHDR_LEN) 1667218792Snp#define G_RX_ETHHDR_LEN(x) (((x) >> S_RX_ETHHDR_LEN) & M_RX_ETHHDR_LEN) 1668218792Snp 1669237925Snp#define S_RX_T5_ETHHDR_LEN 0 1670237925Snp#define M_RX_T5_ETHHDR_LEN 0x3F 1671237925Snp#define V_RX_T5_ETHHDR_LEN(x) ((x) << S_RX_T5_ETHHDR_LEN) 1672237925Snp#define G_RX_T5_ETHHDR_LEN(x) (((x) >> S_RX_T5_ETHHDR_LEN) & M_RX_T5_ETHHDR_LEN) 1673237925Snp 1674218792Snp#define S_RX_PKTYPE 5 1675218792Snp#define M_RX_PKTYPE 0x7 1676218792Snp#define V_RX_PKTYPE(x) ((x) << S_RX_PKTYPE) 1677218792Snp#define G_RX_PKTYPE(x) (((x) >> S_RX_PKTYPE) & M_RX_PKTYPE) 1678218792Snp 1679237925Snp#define S_RX_T5_DATYPE 6 1680237925Snp#define M_RX_T5_DATYPE 0x3 1681237925Snp#define V_RX_T5_DATYPE(x) ((x) << S_RX_T5_DATYPE) 1682237925Snp#define G_RX_T5_DATYPE(x) (((x) >> S_RX_T5_DATYPE) & M_RX_T5_DATYPE) 1683237925Snp 1684218792Snp#define S_RX_MACIDX 8 1685218792Snp#define M_RX_MACIDX 0x1FF 1686218792Snp#define V_RX_MACIDX(x) ((x) << S_RX_MACIDX) 1687218792Snp#define G_RX_MACIDX(x) (((x) >> S_RX_MACIDX) & M_RX_MACIDX) 1688218792Snp 1689237925Snp#define S_RX_T5_PKTYPE 17 1690237925Snp#define M_RX_T5_PKTYPE 0x7 1691237925Snp#define V_RX_T5_PKTYPE(x) ((x) << S_RX_T5_PKTYPE) 1692237925Snp#define G_RX_T5_PKTYPE(x) (((x) >> S_RX_T5_PKTYPE) & M_RX_T5_PKTYPE) 1693237925Snp 1694218792Snp#define S_RX_DATYPE 18 1695218792Snp#define M_RX_DATYPE 0x3 1696218792Snp#define V_RX_DATYPE(x) ((x) << S_RX_DATYPE) 1697218792Snp#define G_RX_DATYPE(x) (((x) >> S_RX_DATYPE) & M_RX_DATYPE) 1698218792Snp 1699218792Snp#define S_RXF_PSH 20 1700218792Snp#define V_RXF_PSH(x) ((x) << S_RXF_PSH) 1701218792Snp#define F_RXF_PSH V_RXF_PSH(1U) 1702218792Snp 1703218792Snp#define S_RXF_SYN 21 1704218792Snp#define V_RXF_SYN(x) ((x) << S_RXF_SYN) 1705218792Snp#define F_RXF_SYN V_RXF_SYN(1U) 1706218792Snp 1707218792Snp#define S_RXF_UDP 22 1708218792Snp#define V_RXF_UDP(x) ((x) << S_RXF_UDP) 1709218792Snp#define F_RXF_UDP V_RXF_UDP(1U) 1710218792Snp 1711218792Snp#define S_RXF_TCP 23 1712218792Snp#define V_RXF_TCP(x) ((x) << S_RXF_TCP) 1713218792Snp#define F_RXF_TCP V_RXF_TCP(1U) 1714218792Snp 1715218792Snp#define S_RXF_IP 24 1716218792Snp#define V_RXF_IP(x) ((x) << S_RXF_IP) 1717218792Snp#define F_RXF_IP V_RXF_IP(1U) 1718218792Snp 1719218792Snp#define S_RXF_IP6 25 1720218792Snp#define V_RXF_IP6(x) ((x) << S_RXF_IP6) 1721218792Snp#define F_RXF_IP6 V_RXF_IP6(1U) 1722218792Snp 1723218792Snp#define S_RXF_SYN_COOKIE 26 1724218792Snp#define V_RXF_SYN_COOKIE(x) ((x) << S_RXF_SYN_COOKIE) 1725218792Snp#define F_RXF_SYN_COOKIE V_RXF_SYN_COOKIE(1U) 1726218792Snp 1727218792Snp#define S_RXF_FCOE 26 1728218792Snp#define V_RXF_FCOE(x) ((x) << S_RXF_FCOE) 1729218792Snp#define F_RXF_FCOE V_RXF_FCOE(1U) 1730218792Snp 1731218792Snp#define S_RXF_LRO 27 1732218792Snp#define V_RXF_LRO(x) ((x) << S_RXF_LRO) 1733218792Snp#define F_RXF_LRO V_RXF_LRO(1U) 1734218792Snp 1735218792Snp#define S_RX_CHAN 28 1736218792Snp#define M_RX_CHAN 0xF 1737218792Snp#define V_RX_CHAN(x) ((x) << S_RX_CHAN) 1738218792Snp#define G_RX_CHAN(x) (((x) >> S_RX_CHAN) & M_RX_CHAN) 1739218792Snp 1740218792Snp/* rx_pkt.hdr_len fields */ 1741218792Snp#define S_RX_TCPHDR_LEN 0 1742218792Snp#define M_RX_TCPHDR_LEN 0x3F 1743218792Snp#define V_RX_TCPHDR_LEN(x) ((x) << S_RX_TCPHDR_LEN) 1744218792Snp#define G_RX_TCPHDR_LEN(x) (((x) >> S_RX_TCPHDR_LEN) & M_RX_TCPHDR_LEN) 1745218792Snp 1746218792Snp#define S_RX_IPHDR_LEN 6 1747218792Snp#define M_RX_IPHDR_LEN 0x3FF 1748218792Snp#define V_RX_IPHDR_LEN(x) ((x) << S_RX_IPHDR_LEN) 1749218792Snp#define G_RX_IPHDR_LEN(x) (((x) >> S_RX_IPHDR_LEN) & M_RX_IPHDR_LEN) 1750218792Snp 1751218792Snp/* rx_pkt.err_vec fields */ 1752218792Snp#define S_RXERR_OR 0 1753218792Snp#define V_RXERR_OR(x) ((x) << S_RXERR_OR) 1754218792Snp#define F_RXERR_OR V_RXERR_OR(1U) 1755218792Snp 1756218792Snp#define S_RXERR_MAC 1 1757218792Snp#define V_RXERR_MAC(x) ((x) << S_RXERR_MAC) 1758218792Snp#define F_RXERR_MAC V_RXERR_MAC(1U) 1759218792Snp 1760218792Snp#define S_RXERR_IPVERS 2 1761218792Snp#define V_RXERR_IPVERS(x) ((x) << S_RXERR_IPVERS) 1762218792Snp#define F_RXERR_IPVERS V_RXERR_IPVERS(1U) 1763218792Snp 1764218792Snp#define S_RXERR_FRAG 3 1765218792Snp#define V_RXERR_FRAG(x) ((x) << S_RXERR_FRAG) 1766218792Snp#define F_RXERR_FRAG V_RXERR_FRAG(1U) 1767218792Snp 1768218792Snp#define S_RXERR_ATTACK 4 1769218792Snp#define V_RXERR_ATTACK(x) ((x) << S_RXERR_ATTACK) 1770218792Snp#define F_RXERR_ATTACK V_RXERR_ATTACK(1U) 1771218792Snp 1772218792Snp#define S_RXERR_ETHHDR_LEN 5 1773218792Snp#define V_RXERR_ETHHDR_LEN(x) ((x) << S_RXERR_ETHHDR_LEN) 1774218792Snp#define F_RXERR_ETHHDR_LEN V_RXERR_ETHHDR_LEN(1U) 1775218792Snp 1776218792Snp#define S_RXERR_IPHDR_LEN 6 1777218792Snp#define V_RXERR_IPHDR_LEN(x) ((x) << S_RXERR_IPHDR_LEN) 1778218792Snp#define F_RXERR_IPHDR_LEN V_RXERR_IPHDR_LEN(1U) 1779218792Snp 1780218792Snp#define S_RXERR_TCPHDR_LEN 7 1781218792Snp#define V_RXERR_TCPHDR_LEN(x) ((x) << S_RXERR_TCPHDR_LEN) 1782218792Snp#define F_RXERR_TCPHDR_LEN V_RXERR_TCPHDR_LEN(1U) 1783218792Snp 1784218792Snp#define S_RXERR_PKT_LEN 8 1785218792Snp#define V_RXERR_PKT_LEN(x) ((x) << S_RXERR_PKT_LEN) 1786218792Snp#define F_RXERR_PKT_LEN V_RXERR_PKT_LEN(1U) 1787218792Snp 1788218792Snp#define S_RXERR_TCP_OPT 9 1789218792Snp#define V_RXERR_TCP_OPT(x) ((x) << S_RXERR_TCP_OPT) 1790218792Snp#define F_RXERR_TCP_OPT V_RXERR_TCP_OPT(1U) 1791218792Snp 1792218792Snp#define S_RXERR_IPCSUM 12 1793218792Snp#define V_RXERR_IPCSUM(x) ((x) << S_RXERR_IPCSUM) 1794218792Snp#define F_RXERR_IPCSUM V_RXERR_IPCSUM(1U) 1795218792Snp 1796218792Snp#define S_RXERR_CSUM 13 1797218792Snp#define V_RXERR_CSUM(x) ((x) << S_RXERR_CSUM) 1798218792Snp#define F_RXERR_CSUM V_RXERR_CSUM(1U) 1799218792Snp 1800218792Snp#define S_RXERR_PING 14 1801218792Snp#define V_RXERR_PING(x) ((x) << S_RXERR_PING) 1802218792Snp#define F_RXERR_PING V_RXERR_PING(1U) 1803218792Snp 1804218792Snpstruct cpl_trace_pkt { 1805218792Snp RSS_HDR 1806218792Snp __u8 opcode; 1807218792Snp __u8 intf; 1808218792Snp#if defined(__LITTLE_ENDIAN_BITFIELD) 1809218792Snp __u8 runt:4; 1810218792Snp __u8 filter_hit:4; 1811218792Snp __u8 :6; 1812218792Snp __u8 err:1; 1813218792Snp __u8 trunc:1; 1814218792Snp#else 1815218792Snp __u8 filter_hit:4; 1816218792Snp __u8 runt:4; 1817218792Snp __u8 trunc:1; 1818218792Snp __u8 err:1; 1819218792Snp __u8 :6; 1820218792Snp#endif 1821218792Snp __be16 rsvd; 1822218792Snp __be16 len; 1823218792Snp __be64 tstamp; 1824218792Snp}; 1825218792Snp 1826237925Snpstruct cpl_t5_trace_pkt { 1827237925Snp RSS_HDR 1828237925Snp __u8 opcode; 1829237925Snp __u8 intf; 1830237925Snp#if defined(__LITTLE_ENDIAN_BITFIELD) 1831237925Snp __u8 runt:4; 1832237925Snp __u8 filter_hit:4; 1833237925Snp __u8 :6; 1834237925Snp __u8 err:1; 1835237925Snp __u8 trunc:1; 1836237925Snp#else 1837237925Snp __u8 filter_hit:4; 1838237925Snp __u8 runt:4; 1839237925Snp __u8 trunc:1; 1840237925Snp __u8 err:1; 1841237925Snp __u8 :6; 1842237925Snp#endif 1843237925Snp __be16 rsvd; 1844237925Snp __be16 len; 1845237925Snp __be64 tstamp; 1846237925Snp __be64 rsvd1; 1847237925Snp}; 1848237925Snp 1849218792Snpstruct cpl_rte_delete_req { 1850218792Snp WR_HDR; 1851218792Snp union opcode_tid ot; 1852218792Snp __be32 params; 1853218792Snp}; 1854218792Snp 1855218792Snp/* {cpl_rte_delete_req, cpl_rte_read_req}.params fields */ 1856218792Snp#define S_RTE_REQ_LUT_IX 8 1857218792Snp#define M_RTE_REQ_LUT_IX 0x7FF 1858218792Snp#define V_RTE_REQ_LUT_IX(x) ((x) << S_RTE_REQ_LUT_IX) 1859218792Snp#define G_RTE_REQ_LUT_IX(x) (((x) >> S_RTE_REQ_LUT_IX) & M_RTE_REQ_LUT_IX) 1860218792Snp 1861218792Snp#define S_RTE_REQ_LUT_BASE 19 1862218792Snp#define M_RTE_REQ_LUT_BASE 0x7FF 1863218792Snp#define V_RTE_REQ_LUT_BASE(x) ((x) << S_RTE_REQ_LUT_BASE) 1864218792Snp#define G_RTE_REQ_LUT_BASE(x) (((x) >> S_RTE_REQ_LUT_BASE) & M_RTE_REQ_LUT_BASE) 1865218792Snp 1866218792Snp#define S_RTE_READ_REQ_SELECT 31 1867218792Snp#define V_RTE_READ_REQ_SELECT(x) ((x) << S_RTE_READ_REQ_SELECT) 1868218792Snp#define F_RTE_READ_REQ_SELECT V_RTE_READ_REQ_SELECT(1U) 1869218792Snp 1870218792Snpstruct cpl_rte_delete_rpl { 1871218792Snp RSS_HDR 1872218792Snp union opcode_tid ot; 1873218792Snp __u8 status; 1874218792Snp __u8 rsvd[3]; 1875218792Snp}; 1876218792Snp 1877218792Snpstruct cpl_rte_write_req { 1878218792Snp WR_HDR; 1879218792Snp union opcode_tid ot; 1880218792Snp __u32 write_sel; 1881218792Snp __be32 lut_params; 1882218792Snp __be32 l2t_idx; 1883218792Snp __be32 netmask; 1884218792Snp __be32 faddr; 1885218792Snp}; 1886218792Snp 1887218792Snp/* cpl_rte_write_req.write_sel fields */ 1888218792Snp#define S_RTE_WR_L2TIDX 31 1889218792Snp#define V_RTE_WR_L2TIDX(x) ((x) << S_RTE_WR_L2TIDX) 1890218792Snp#define F_RTE_WR_L2TIDX V_RTE_WR_L2TIDX(1U) 1891218792Snp 1892218792Snp#define S_RTE_WR_FADDR 30 1893218792Snp#define V_RTE_WR_FADDR(x) ((x) << S_RTE_WR_FADDR) 1894218792Snp#define F_RTE_WR_FADDR V_RTE_WR_FADDR(1U) 1895218792Snp 1896218792Snp/* cpl_rte_write_req.lut_params fields */ 1897218792Snp#define S_RTE_WR_LUT_IX 10 1898218792Snp#define M_RTE_WR_LUT_IX 0x7FF 1899218792Snp#define V_RTE_WR_LUT_IX(x) ((x) << S_RTE_WR_LUT_IX) 1900218792Snp#define G_RTE_WR_LUT_IX(x) (((x) >> S_RTE_WR_LUT_IX) & M_RTE_WR_LUT_IX) 1901218792Snp 1902218792Snp#define S_RTE_WR_LUT_BASE 21 1903218792Snp#define M_RTE_WR_LUT_BASE 0x7FF 1904218792Snp#define V_RTE_WR_LUT_BASE(x) ((x) << S_RTE_WR_LUT_BASE) 1905218792Snp#define G_RTE_WR_LUT_BASE(x) (((x) >> S_RTE_WR_LUT_BASE) & M_RTE_WR_LUT_BASE) 1906218792Snp 1907218792Snpstruct cpl_rte_write_rpl { 1908218792Snp RSS_HDR 1909218792Snp union opcode_tid ot; 1910218792Snp __u8 status; 1911218792Snp __u8 rsvd[3]; 1912218792Snp}; 1913218792Snp 1914218792Snpstruct cpl_rte_read_req { 1915218792Snp WR_HDR; 1916218792Snp union opcode_tid ot; 1917218792Snp __be32 params; 1918218792Snp}; 1919218792Snp 1920218792Snpstruct cpl_rte_read_rpl { 1921218792Snp RSS_HDR 1922218792Snp union opcode_tid ot; 1923218792Snp __u8 status; 1924218792Snp __u8 rsvd; 1925218792Snp __be16 l2t_idx; 1926218792Snp#if defined(__LITTLE_ENDIAN_BITFIELD) 1927218792Snp __u32 :30; 1928218792Snp __u32 select:1; 1929218792Snp#else 1930218792Snp __u32 select:1; 1931218792Snp __u32 :30; 1932218792Snp#endif 1933218792Snp __be32 addr; 1934218792Snp}; 1935218792Snp 1936218792Snpstruct cpl_l2t_write_req { 1937218792Snp WR_HDR; 1938218792Snp union opcode_tid ot; 1939218792Snp __be16 params; 1940218792Snp __be16 l2t_idx; 1941218792Snp __be16 vlan; 1942218792Snp __u8 dst_mac[6]; 1943218792Snp}; 1944218792Snp 1945218792Snp/* cpl_l2t_write_req.params fields */ 1946218792Snp#define S_L2T_W_INFO 2 1947218792Snp#define M_L2T_W_INFO 0x3F 1948218792Snp#define V_L2T_W_INFO(x) ((x) << S_L2T_W_INFO) 1949218792Snp#define G_L2T_W_INFO(x) (((x) >> S_L2T_W_INFO) & M_L2T_W_INFO) 1950218792Snp 1951218792Snp#define S_L2T_W_PORT 8 1952252495Snp#define M_L2T_W_PORT 0x3 1953218792Snp#define V_L2T_W_PORT(x) ((x) << S_L2T_W_PORT) 1954218792Snp#define G_L2T_W_PORT(x) (((x) >> S_L2T_W_PORT) & M_L2T_W_PORT) 1955218792Snp 1956252495Snp#define S_L2T_W_LPBK 10 1957252495Snp#define V_L2T_W_LPBK(x) ((x) << S_L2T_W_LPBK) 1958252495Snp#define F_L2T_W_PKBK V_L2T_W_LPBK(1U) 1959252495Snp 1960252495Snp#define S_L2T_W_ARPMISS 11 1961252495Snp#define V_L2T_W_ARPMISS(x) ((x) << S_L2T_W_ARPMISS) 1962252495Snp#define F_L2T_W_ARPMISS V_L2T_W_ARPMISS(1U) 1963252495Snp 1964218792Snp#define S_L2T_W_NOREPLY 15 1965218792Snp#define V_L2T_W_NOREPLY(x) ((x) << S_L2T_W_NOREPLY) 1966218792Snp#define F_L2T_W_NOREPLY V_L2T_W_NOREPLY(1U) 1967218792Snp 1968252495Snp#define CPL_L2T_VLAN_NONE 0xfff 1969252495Snp 1970218792Snpstruct cpl_l2t_write_rpl { 1971218792Snp RSS_HDR 1972218792Snp union opcode_tid ot; 1973218792Snp __u8 status; 1974218792Snp __u8 rsvd[3]; 1975218792Snp}; 1976218792Snp 1977218792Snpstruct cpl_l2t_read_req { 1978218792Snp WR_HDR; 1979218792Snp union opcode_tid ot; 1980218792Snp __be32 l2t_idx; 1981218792Snp}; 1982218792Snp 1983218792Snpstruct cpl_l2t_read_rpl { 1984218792Snp RSS_HDR 1985218792Snp union opcode_tid ot; 1986218792Snp __u8 status; 1987218792Snp#if defined(__LITTLE_ENDIAN_BITFIELD) 1988218792Snp __u8 :4; 1989218792Snp __u8 iff:4; 1990218792Snp#else 1991218792Snp __u8 iff:4; 1992218792Snp __u8 :4; 1993218792Snp#endif 1994218792Snp __be16 vlan; 1995218792Snp __be16 info; 1996218792Snp __u8 dst_mac[6]; 1997218792Snp}; 1998218792Snp 1999218792Snpstruct cpl_smt_write_req { 2000218792Snp WR_HDR; 2001218792Snp union opcode_tid ot; 2002218792Snp __be32 params; 2003218792Snp __be16 pfvf1; 2004218792Snp __u8 src_mac1[6]; 2005218792Snp __be16 pfvf0; 2006218792Snp __u8 src_mac0[6]; 2007218792Snp}; 2008218792Snp 2009237925Snpstruct cpl_smt_write_rpl { 2010237925Snp RSS_HDR 2011237925Snp union opcode_tid ot; 2012237925Snp __u8 status; 2013237925Snp __u8 rsvd[3]; 2014237925Snp}; 2015237925Snp 2016237925Snpstruct cpl_smt_read_req { 2017237925Snp WR_HDR; 2018237925Snp union opcode_tid ot; 2019237925Snp __be32 params; 2020237925Snp}; 2021237925Snp 2022237925Snpstruct cpl_smt_read_rpl { 2023237925Snp RSS_HDR 2024237925Snp union opcode_tid ot; 2025237925Snp __u8 status; 2026237925Snp __u8 ovlan_idx; 2027237925Snp __be16 rsvd; 2028237925Snp __be16 pfvf1; 2029237925Snp __u8 src_mac1[6]; 2030237925Snp __be16 pfvf0; 2031237925Snp __u8 src_mac0[6]; 2032237925Snp}; 2033237925Snp 2034218792Snp/* cpl_smt_{read,write}_req.params fields */ 2035218792Snp#define S_SMTW_OVLAN_IDX 16 2036218792Snp#define M_SMTW_OVLAN_IDX 0xF 2037218792Snp#define V_SMTW_OVLAN_IDX(x) ((x) << S_SMTW_OVLAN_IDX) 2038218792Snp#define G_SMTW_OVLAN_IDX(x) (((x) >> S_SMTW_OVLAN_IDX) & M_SMTW_OVLAN_IDX) 2039218792Snp 2040218792Snp#define S_SMTW_IDX 20 2041218792Snp#define M_SMTW_IDX 0x7F 2042218792Snp#define V_SMTW_IDX(x) ((x) << S_SMTW_IDX) 2043218792Snp#define G_SMTW_IDX(x) (((x) >> S_SMTW_IDX) & M_SMTW_IDX) 2044218792Snp 2045218792Snp#define S_SMTW_NORPL 31 2046218792Snp#define V_SMTW_NORPL(x) ((x) << S_SMTW_NORPL) 2047218792Snp#define F_SMTW_NORPL V_SMTW_NORPL(1U) 2048218792Snp 2049218792Snp/* cpl_smt_{read,write}_req.pfvf? fields */ 2050218792Snp#define S_SMTW_VF 0 2051218792Snp#define M_SMTW_VF 0xFF 2052218792Snp#define V_SMTW_VF(x) ((x) << S_SMTW_VF) 2053218792Snp#define G_SMTW_VF(x) (((x) >> S_SMTW_VF) & M_SMTW_VF) 2054218792Snp 2055218792Snp#define S_SMTW_PF 8 2056218792Snp#define M_SMTW_PF 0x7 2057218792Snp#define V_SMTW_PF(x) ((x) << S_SMTW_PF) 2058218792Snp#define G_SMTW_PF(x) (((x) >> S_SMTW_PF) & M_SMTW_PF) 2059218792Snp 2060218792Snp#define S_SMTW_VF_VLD 11 2061218792Snp#define V_SMTW_VF_VLD(x) ((x) << S_SMTW_VF_VLD) 2062218792Snp#define F_SMTW_VF_VLD V_SMTW_VF_VLD(1U) 2063218792Snp 2064237925Snpstruct cpl_tag_write_req { 2065237925Snp WR_HDR; 2066237925Snp union opcode_tid ot; 2067237925Snp __be32 params; 2068237925Snp __be64 tag_val; 2069237925Snp}; 2070237925Snp 2071237925Snpstruct cpl_tag_write_rpl { 2072218792Snp RSS_HDR 2073218792Snp union opcode_tid ot; 2074218792Snp __u8 status; 2075237925Snp __u8 rsvd[2]; 2076237925Snp __u8 idx; 2077218792Snp}; 2078218792Snp 2079237925Snpstruct cpl_tag_read_req { 2080218792Snp WR_HDR; 2081218792Snp union opcode_tid ot; 2082218792Snp __be32 params; 2083218792Snp}; 2084218792Snp 2085237925Snpstruct cpl_tag_read_rpl { 2086218792Snp RSS_HDR 2087218792Snp union opcode_tid ot; 2088218792Snp __u8 status; 2089237925Snp#if defined(__LITTLE_ENDIAN_BITFIELD) 2090237925Snp __u8 :4; 2091237925Snp __u8 tag_len:1; 2092237925Snp __u8 :2; 2093237925Snp __u8 ins_enable:1; 2094237925Snp#else 2095237925Snp __u8 ins_enable:1; 2096237925Snp __u8 :2; 2097237925Snp __u8 tag_len:1; 2098237925Snp __u8 :4; 2099237925Snp#endif 2100237925Snp __u8 rsvd; 2101237925Snp __u8 tag_idx; 2102237925Snp __be64 tag_val; 2103218792Snp}; 2104218792Snp 2105237925Snp/* cpl_tag{read,write}_req.params fields */ 2106237925Snp#define S_TAGW_IDX 0 2107237925Snp#define M_TAGW_IDX 0x7F 2108237925Snp#define V_TAGW_IDX(x) ((x) << S_TAGW_IDX) 2109237925Snp#define G_TAGW_IDX(x) (((x) >> S_TAGW_IDX) & M_TAGW_IDX) 2110237925Snp 2111237925Snp#define S_TAGW_LEN 20 2112237925Snp#define V_TAGW_LEN(x) ((x) << S_TAGW_LEN) 2113237925Snp#define F_TAGW_LEN V_TAGW_LEN(1U) 2114237925Snp 2115237925Snp#define S_TAGW_INS_ENABLE 23 2116237925Snp#define V_TAGW_INS_ENABLE(x) ((x) << S_TAGW_INS_ENABLE) 2117237925Snp#define F_TAGW_INS_ENABLE V_TAGW_INS_ENABLE(1U) 2118237925Snp 2119237925Snp#define S_TAGW_NORPL 31 2120237925Snp#define V_TAGW_NORPL(x) ((x) << S_TAGW_NORPL) 2121237925Snp#define F_TAGW_NORPL V_TAGW_NORPL(1U) 2122237925Snp 2123218792Snpstruct cpl_barrier { 2124218792Snp WR_HDR; 2125218792Snp __u8 opcode; 2126218792Snp __u8 chan_map; 2127218792Snp __be16 rsvd0; 2128218792Snp __be32 rsvd1; 2129218792Snp}; 2130218792Snp 2131218792Snp/* cpl_barrier.chan_map fields */ 2132218792Snp#define S_CHAN_MAP 4 2133218792Snp#define M_CHAN_MAP 0xF 2134218792Snp#define V_CHAN_MAP(x) ((x) << S_CHAN_MAP) 2135218792Snp#define G_CHAN_MAP(x) (((x) >> S_CHAN_MAP) & M_CHAN_MAP) 2136218792Snp 2137218792Snpstruct cpl_error { 2138218792Snp RSS_HDR 2139218792Snp union opcode_tid ot; 2140218792Snp __be32 error; 2141218792Snp}; 2142218792Snp 2143218792Snpstruct cpl_hit_notify { 2144218792Snp RSS_HDR 2145218792Snp union opcode_tid ot; 2146218792Snp __be32 rsvd; 2147218792Snp __be32 info; 2148218792Snp __be32 reason; 2149218792Snp}; 2150218792Snp 2151218792Snpstruct cpl_pkt_notify { 2152218792Snp RSS_HDR 2153218792Snp union opcode_tid ot; 2154218792Snp __be16 rsvd; 2155218792Snp __be16 len; 2156218792Snp __be32 info; 2157218792Snp __be32 reason; 2158218792Snp}; 2159218792Snp 2160218792Snp/* cpl_{hit,pkt}_notify.info fields */ 2161218792Snp#define S_NTFY_MAC_IDX 0 2162218792Snp#define M_NTFY_MAC_IDX 0x1FF 2163218792Snp#define V_NTFY_MAC_IDX(x) ((x) << S_NTFY_MAC_IDX) 2164218792Snp#define G_NTFY_MAC_IDX(x) (((x) >> S_NTFY_MAC_IDX) & M_NTFY_MAC_IDX) 2165218792Snp 2166218792Snp#define S_NTFY_INTF 10 2167218792Snp#define M_NTFY_INTF 0xF 2168218792Snp#define V_NTFY_INTF(x) ((x) << S_NTFY_INTF) 2169218792Snp#define G_NTFY_INTF(x) (((x) >> S_NTFY_INTF) & M_NTFY_INTF) 2170218792Snp 2171218792Snp#define S_NTFY_TCPHDR_LEN 14 2172218792Snp#define M_NTFY_TCPHDR_LEN 0xF 2173218792Snp#define V_NTFY_TCPHDR_LEN(x) ((x) << S_NTFY_TCPHDR_LEN) 2174218792Snp#define G_NTFY_TCPHDR_LEN(x) (((x) >> S_NTFY_TCPHDR_LEN) & M_NTFY_TCPHDR_LEN) 2175218792Snp 2176218792Snp#define S_NTFY_IPHDR_LEN 18 2177218792Snp#define M_NTFY_IPHDR_LEN 0x1FF 2178218792Snp#define V_NTFY_IPHDR_LEN(x) ((x) << S_NTFY_IPHDR_LEN) 2179218792Snp#define G_NTFY_IPHDR_LEN(x) (((x) >> S_NTFY_IPHDR_LEN) & M_NTFY_IPHDR_LEN) 2180218792Snp 2181218792Snp#define S_NTFY_ETHHDR_LEN 27 2182218792Snp#define M_NTFY_ETHHDR_LEN 0x1F 2183218792Snp#define V_NTFY_ETHHDR_LEN(x) ((x) << S_NTFY_ETHHDR_LEN) 2184218792Snp#define G_NTFY_ETHHDR_LEN(x) (((x) >> S_NTFY_ETHHDR_LEN) & M_NTFY_ETHHDR_LEN) 2185218792Snp 2186237925Snp#define S_NTFY_T5_IPHDR_LEN 18 2187237925Snp#define M_NTFY_T5_IPHDR_LEN 0xFF 2188237925Snp#define V_NTFY_T5_IPHDR_LEN(x) ((x) << S_NTFY_T5_IPHDR_LEN) 2189237925Snp#define G_NTFY_T5_IPHDR_LEN(x) (((x) >> S_NTFY_T5_IPHDR_LEN) & M_NTFY_T5_IPHDR_LEN) 2190237925Snp 2191237925Snp#define S_NTFY_T5_ETHHDR_LEN 26 2192237925Snp#define M_NTFY_T5_ETHHDR_LEN 0x3F 2193237925Snp#define V_NTFY_T5_ETHHDR_LEN(x) ((x) << S_NTFY_T5_ETHHDR_LEN) 2194237925Snp#define G_NTFY_T5_ETHHDR_LEN(x) (((x) >> S_NTFY_T5_ETHHDR_LEN) & M_NTFY_T5_ETHHDR_LEN) 2195237925Snp 2196218792Snpstruct cpl_rdma_terminate { 2197218792Snp RSS_HDR 2198218792Snp union opcode_tid ot; 2199218792Snp __be16 rsvd; 2200218792Snp __be16 len; 2201218792Snp}; 2202218792Snp 2203218792Snpstruct cpl_set_le_req { 2204218792Snp WR_HDR; 2205218792Snp union opcode_tid ot; 2206218792Snp __be16 reply_ctrl; 2207218792Snp __be16 params; 2208218792Snp __be64 mask_hi; 2209218792Snp __be64 mask_lo; 2210218792Snp __be64 val_hi; 2211218792Snp __be64 val_lo; 2212218792Snp}; 2213218792Snp 2214218792Snp/* cpl_set_le_req.reply_ctrl additional fields */ 2215218792Snp#define S_LE_REQ_IP6 13 2216218792Snp#define V_LE_REQ_IP6(x) ((x) << S_LE_REQ_IP6) 2217218792Snp#define F_LE_REQ_IP6 V_LE_REQ_IP6(1U) 2218218792Snp 2219218792Snp/* cpl_set_le_req.params fields */ 2220218792Snp#define S_LE_CHAN 0 2221218792Snp#define M_LE_CHAN 0x3 2222218792Snp#define V_LE_CHAN(x) ((x) << S_LE_CHAN) 2223218792Snp#define G_LE_CHAN(x) (((x) >> S_LE_CHAN) & M_LE_CHAN) 2224218792Snp 2225218792Snp#define S_LE_OFFSET 5 2226218792Snp#define M_LE_OFFSET 0x7 2227218792Snp#define V_LE_OFFSET(x) ((x) << S_LE_OFFSET) 2228218792Snp#define G_LE_OFFSET(x) (((x) >> S_LE_OFFSET) & M_LE_OFFSET) 2229218792Snp 2230218792Snp#define S_LE_MORE 8 2231218792Snp#define V_LE_MORE(x) ((x) << S_LE_MORE) 2232218792Snp#define F_LE_MORE V_LE_MORE(1U) 2233218792Snp 2234218792Snp#define S_LE_REQSIZE 9 2235218792Snp#define M_LE_REQSIZE 0x7 2236218792Snp#define V_LE_REQSIZE(x) ((x) << S_LE_REQSIZE) 2237218792Snp#define G_LE_REQSIZE(x) (((x) >> S_LE_REQSIZE) & M_LE_REQSIZE) 2238218792Snp 2239218792Snp#define S_LE_REQCMD 12 2240218792Snp#define M_LE_REQCMD 0xF 2241218792Snp#define V_LE_REQCMD(x) ((x) << S_LE_REQCMD) 2242218792Snp#define G_LE_REQCMD(x) (((x) >> S_LE_REQCMD) & M_LE_REQCMD) 2243218792Snp 2244218792Snpstruct cpl_set_le_rpl { 2245218792Snp RSS_HDR 2246218792Snp union opcode_tid ot; 2247218792Snp __u8 chan; 2248218792Snp __u8 info; 2249218792Snp __be16 len; 2250218792Snp}; 2251218792Snp 2252218792Snp/* cpl_set_le_rpl.info fields */ 2253218792Snp#define S_LE_RSPCMD 0 2254218792Snp#define M_LE_RSPCMD 0xF 2255218792Snp#define V_LE_RSPCMD(x) ((x) << S_LE_RSPCMD) 2256218792Snp#define G_LE_RSPCMD(x) (((x) >> S_LE_RSPCMD) & M_LE_RSPCMD) 2257218792Snp 2258218792Snp#define S_LE_RSPSIZE 4 2259218792Snp#define M_LE_RSPSIZE 0x7 2260218792Snp#define V_LE_RSPSIZE(x) ((x) << S_LE_RSPSIZE) 2261218792Snp#define G_LE_RSPSIZE(x) (((x) >> S_LE_RSPSIZE) & M_LE_RSPSIZE) 2262218792Snp 2263218792Snp#define S_LE_RSPTYPE 7 2264218792Snp#define V_LE_RSPTYPE(x) ((x) << S_LE_RSPTYPE) 2265218792Snp#define F_LE_RSPTYPE V_LE_RSPTYPE(1U) 2266218792Snp 2267218792Snpstruct cpl_sge_egr_update { 2268218792Snp RSS_HDR 2269218792Snp __be32 opcode_qid; 2270218792Snp __be16 cidx; 2271218792Snp __be16 pidx; 2272218792Snp}; 2273218792Snp 2274218792Snp/* cpl_sge_egr_update.ot fields */ 2275218792Snp#define S_EGR_QID 0 2276218792Snp#define M_EGR_QID 0x1FFFF 2277218792Snp#define V_EGR_QID(x) ((x) << S_EGR_QID) 2278218792Snp#define G_EGR_QID(x) (((x) >> S_EGR_QID) & M_EGR_QID) 2279218792Snp 2280247434Snp/* cpl_fw*.type values */ 2281247434Snpenum { 2282247434Snp FW_TYPE_CMD_RPL = 0, 2283247434Snp FW_TYPE_WR_RPL = 1, 2284247434Snp FW_TYPE_CQE = 2, 2285247434Snp FW_TYPE_OFLD_CONNECTION_WR_RPL = 3, 2286247434Snp FW_TYPE_RSSCPL = 4, 2287247434Snp}; 2288247434Snp 2289218792Snpstruct cpl_fw2_pld { 2290218792Snp RSS_HDR 2291218792Snp u8 opcode; 2292218792Snp u8 rsvd[5]; 2293218792Snp __be16 len; 2294218792Snp}; 2295218792Snp 2296218792Snpstruct cpl_fw4_pld { 2297218792Snp RSS_HDR 2298218792Snp u8 opcode; 2299218792Snp u8 rsvd0[3]; 2300218792Snp u8 type; 2301218792Snp u8 rsvd1; 2302218792Snp __be16 len; 2303218792Snp __be64 data; 2304218792Snp __be64 rsvd2; 2305218792Snp}; 2306218792Snp 2307218792Snpstruct cpl_fw6_pld { 2308218792Snp RSS_HDR 2309218792Snp u8 opcode; 2310218792Snp u8 rsvd[5]; 2311218792Snp __be16 len; 2312218792Snp __be64 data[4]; 2313218792Snp}; 2314218792Snp 2315218792Snpstruct cpl_fw2_msg { 2316218792Snp RSS_HDR 2317218792Snp union opcode_info oi; 2318218792Snp}; 2319218792Snp 2320218792Snpstruct cpl_fw4_msg { 2321218792Snp RSS_HDR 2322218792Snp u8 opcode; 2323218792Snp u8 type; 2324218792Snp __be16 rsvd0; 2325218792Snp __be32 rsvd1; 2326218792Snp __be64 data[2]; 2327218792Snp}; 2328218792Snp 2329218792Snpstruct cpl_fw4_ack { 2330218792Snp RSS_HDR 2331218792Snp union opcode_tid ot; 2332218792Snp u8 credits; 2333218792Snp u8 rsvd0[2]; 2334237925Snp u8 flags; 2335218792Snp __be32 snd_nxt; 2336218792Snp __be32 snd_una; 2337218792Snp __be64 rsvd1; 2338218792Snp}; 2339218792Snp 2340237925Snpenum { 2341237925Snp CPL_FW4_ACK_FLAGS_SEQVAL = 0x1, /* seqn valid */ 2342237925Snp CPL_FW4_ACK_FLAGS_CH = 0x2, /* channel change complete */ 2343237925Snp CPL_FW4_ACK_FLAGS_FLOWC = 0x4, /* fw_flowc_wr complete */ 2344237925Snp}; 2345237925Snp 2346218792Snpstruct cpl_fw6_msg { 2347218792Snp RSS_HDR 2348218792Snp u8 opcode; 2349218792Snp u8 type; 2350218792Snp __be16 rsvd0; 2351218792Snp __be32 rsvd1; 2352218792Snp __be64 data[4]; 2353218792Snp}; 2354218792Snp 2355218792Snp/* cpl_fw6_msg.type values */ 2356218792Snpenum { 2357247434Snp FW6_TYPE_CMD_RPL = FW_TYPE_CMD_RPL, 2358247434Snp FW6_TYPE_WR_RPL = FW_TYPE_WR_RPL, 2359247434Snp FW6_TYPE_CQE = FW_TYPE_CQE, 2360247434Snp FW6_TYPE_OFLD_CONNECTION_WR_RPL = FW_TYPE_OFLD_CONNECTION_WR_RPL, 2361247434Snp FW6_TYPE_RSSCPL = FW_TYPE_RSSCPL, 2362240169Snp 2363240169Snp NUM_FW6_TYPES 2364218792Snp}; 2365218792Snp 2366237925Snpstruct cpl_fw6_msg_ofld_connection_wr_rpl { 2367237925Snp __u64 cookie; 2368237925Snp __be32 tid; /* or atid in case of active failure */ 2369237925Snp __u8 t_state; 2370237925Snp __u8 retval; 2371237925Snp __u8 rsvd[2]; 2372237925Snp}; 2373237925Snp 2374218792Snp/* ULP_TX opcodes */ 2375218792Snpenum { 2376218792Snp ULP_TX_MEM_READ = 2, 2377218792Snp ULP_TX_MEM_WRITE = 3, 2378218792Snp ULP_TX_PKT = 4 2379218792Snp}; 2380218792Snp 2381218792Snpenum { 2382218792Snp ULP_TX_SC_NOOP = 0x80, 2383218792Snp ULP_TX_SC_IMM = 0x81, 2384218792Snp ULP_TX_SC_DSGL = 0x82, 2385218792Snp ULP_TX_SC_ISGL = 0x83 2386218792Snp}; 2387218792Snp 2388218792Snp#define S_ULPTX_CMD 24 2389218792Snp#define M_ULPTX_CMD 0xFF 2390218792Snp#define V_ULPTX_CMD(x) ((x) << S_ULPTX_CMD) 2391218792Snp 2392218792Snp#define S_ULPTX_LEN16 0 2393218792Snp#define M_ULPTX_LEN16 0xFF 2394218792Snp#define V_ULPTX_LEN16(x) ((x) << S_ULPTX_LEN16) 2395218792Snp 2396218792Snp#define S_ULP_TX_SC_MORE 23 2397218792Snp#define V_ULP_TX_SC_MORE(x) ((x) << S_ULP_TX_SC_MORE) 2398218792Snp#define F_ULP_TX_SC_MORE V_ULP_TX_SC_MORE(1U) 2399218792Snp 2400218792Snpstruct ulptx_sge_pair { 2401218792Snp __be32 len[2]; 2402218792Snp __be64 addr[2]; 2403218792Snp}; 2404218792Snp 2405218792Snpstruct ulptx_sgl { 2406218792Snp __be32 cmd_nsge; 2407218792Snp __be32 len0; 2408218792Snp __be64 addr0; 2409218792Snp#if !(defined C99_NOT_SUPPORTED) 2410218792Snp struct ulptx_sge_pair sge[0]; 2411218792Snp#endif 2412218792Snp}; 2413218792Snp 2414218792Snpstruct ulptx_isge { 2415218792Snp __be32 stag; 2416218792Snp __be32 len; 2417218792Snp __be64 target_ofst; 2418218792Snp}; 2419218792Snp 2420218792Snpstruct ulptx_isgl { 2421218792Snp __be32 cmd_nisge; 2422218792Snp __be32 rsvd; 2423218792Snp#if !(defined C99_NOT_SUPPORTED) 2424218792Snp struct ulptx_isge sge[0]; 2425218792Snp#endif 2426218792Snp}; 2427218792Snp 2428218792Snpstruct ulptx_idata { 2429218792Snp __be32 cmd_more; 2430218792Snp __be32 len; 2431218792Snp}; 2432218792Snp 2433218792Snp#define S_ULPTX_NSGE 0 2434218792Snp#define M_ULPTX_NSGE 0xFFFF 2435218792Snp#define V_ULPTX_NSGE(x) ((x) << S_ULPTX_NSGE) 2436218792Snp 2437218792Snpstruct ulp_mem_io { 2438218792Snp WR_HDR; 2439218792Snp __be32 cmd; 2440218792Snp __be32 len16; /* command length */ 2441218792Snp __be32 dlen; /* data length in 32-byte units */ 2442218792Snp __be32 lock_addr; 2443218792Snp}; 2444218792Snp 2445218792Snp/* additional ulp_mem_io.cmd fields */ 2446218792Snp#define S_ULP_MEMIO_ORDER 23 2447218792Snp#define V_ULP_MEMIO_ORDER(x) ((x) << S_ULP_MEMIO_ORDER) 2448218792Snp#define F_ULP_MEMIO_ORDER V_ULP_MEMIO_ORDER(1U) 2449218792Snp 2450252495Snp#define S_T5_ULP_MEMIO_IMM 23 2451252495Snp#define V_T5_ULP_MEMIO_IMM(x) ((x) << S_T5_ULP_MEMIO_IMM) 2452252495Snp#define F_T5_ULP_MEMIO_IMM V_T5_ULP_MEMIO_IMM(1U) 2453252495Snp 2454252495Snp#define S_T5_ULP_MEMIO_ORDER 22 2455252495Snp#define V_T5_ULP_MEMIO_ORDER(x) ((x) << S_T5_ULP_MEMIO_ORDER) 2456252495Snp#define F_T5_ULP_MEMIO_ORDER V_T5_ULP_MEMIO_ORDER(1U) 2457252495Snp 2458218792Snp/* ulp_mem_io.lock_addr fields */ 2459218792Snp#define S_ULP_MEMIO_ADDR 0 2460218792Snp#define M_ULP_MEMIO_ADDR 0x7FFFFFF 2461218792Snp#define V_ULP_MEMIO_ADDR(x) ((x) << S_ULP_MEMIO_ADDR) 2462218792Snp 2463218792Snp#define S_ULP_MEMIO_LOCK 31 2464218792Snp#define V_ULP_MEMIO_LOCK(x) ((x) << S_ULP_MEMIO_LOCK) 2465218792Snp#define F_ULP_MEMIO_LOCK V_ULP_MEMIO_LOCK(1U) 2466218792Snp 2467218792Snp/* ulp_mem_io.dlen fields */ 2468218792Snp#define S_ULP_MEMIO_DATA_LEN 0 2469218792Snp#define M_ULP_MEMIO_DATA_LEN 0x1F 2470218792Snp#define V_ULP_MEMIO_DATA_LEN(x) ((x) << S_ULP_MEMIO_DATA_LEN) 2471218792Snp 2472252495Snp/* ULP_TXPKT field values */ 2473252495Snpenum { 2474252495Snp ULP_TXPKT_DEST_TP = 0, 2475252495Snp ULP_TXPKT_DEST_SGE, 2476252495Snp ULP_TXPKT_DEST_UP, 2477252495Snp ULP_TXPKT_DEST_DEVNULL, 2478252495Snp}; 2479252495Snp 2480218792Snpstruct ulp_txpkt { 2481218792Snp __be32 cmd_dest; 2482218792Snp __be32 len; 2483218792Snp}; 2484218792Snp 2485218792Snp/* ulp_txpkt.cmd_dest fields */ 2486218792Snp#define S_ULP_TXPKT_DEST 16 2487218792Snp#define M_ULP_TXPKT_DEST 0x3 2488218792Snp#define V_ULP_TXPKT_DEST(x) ((x) << S_ULP_TXPKT_DEST) 2489218792Snp 2490218792Snp#define S_ULP_TXPKT_FID 4 2491218792Snp#define M_ULP_TXPKT_FID 0x7ff 2492218792Snp#define V_ULP_TXPKT_FID(x) ((x) << S_ULP_TXPKT_FID) 2493218792Snp 2494237925Snp#define S_ULP_TXPKT_RO 3 2495237925Snp#define V_ULP_TXPKT_RO(x) ((x) << S_ULP_TXPKT_RO) 2496237925Snp#define F_ULP_TXPKT_RO V_ULP_TXPKT_RO(1U) 2497237925Snp 2498218792Snp#endif /* T4_MSG_H */ 2499