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: releng/10.2/sys/dev/cxgbe/common/t4_msg.h 283854 2015-05-31 23:11:25Z np $ 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, 54237436Snp CPL_TAG_WRITE_REQ = 0x16, 55218792Snp CPL_BARRIER = 0x18, 56218792Snp CPL_TID_RELEASE = 0x1A, 57237436Snp CPL_TAG_READ_REQ = 0x1B, 58237436Snp CPL_TX_PKT_FSO = 0x1E, 59237436Snp 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, 71237436Snp 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, 90237436Snp 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, 103237436Snp CPL_T5_TRACE_PKT = 0x48, 104237436Snp CPL_RX_ISCSI_DDP = 0x49, 105237436Snp CPL_RX_FCOE_DIF = 0x4A, 106237436Snp CPL_RX_DATA_DIF = 0x4B, 107248925Snp CPL_ERR_NOTIFY = 0x4D, 108218792Snp 109218792Snp CPL_RDMA_READ_REQ = 0x60, 110237436Snp 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, 122237436Snp CPL_T5_RDMA_READ_REQ = 0xA9, 123237436Snp CPL_RDMA_ATOMIC_REQ = 0xAA, 124237436Snp CPL_RDMA_ATOMIC_RPL = 0xAB, 125237436Snp CPL_RDMA_IMM_DATA = 0xAC, 126237436Snp CPL_RDMA_IMM_DATA_SE = 0xAD, 127218792Snp 128218792Snp CPL_TRACE_PKT = 0xB0, 129248925Snp CPL_TRACE_PKT_T5 = 0x48, 130218792Snp CPL_RX2TX_DATA = 0xB1, 131237436Snp CPL_ISCSI_DATA = 0xB2, 132237436Snp 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, 164245935Snp CPL_ERR_KEEPALV_NEG_ADVICE = 37, 165245935Snp 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)))) 276283854Snp#define GET_OPCODE(cmd) ((cmd)->ot.opcode) 277218792Snp 278218792Snp/* partitioning of TID fields that also carry a queue id */ 279218792Snp#define S_TID_TID 0 280218792Snp#define M_TID_TID 0x3fff 281218792Snp#define V_TID_TID(x) ((x) << S_TID_TID) 282218792Snp#define G_TID_TID(x) (((x) >> S_TID_TID) & M_TID_TID) 283218792Snp 284218792Snp#define S_TID_QID 14 285218792Snp#define M_TID_QID 0x3ff 286218792Snp#define V_TID_QID(x) ((x) << S_TID_QID) 287218792Snp#define G_TID_QID(x) (((x) >> S_TID_QID) & M_TID_QID) 288218792Snp 289218792Snpunion opcode_info { 290218792Snp __be64 opcode_info; 291218792Snp __u8 opcode; 292218792Snp}; 293218792Snp 294218792Snpstruct tcp_options { 295218792Snp __be16 mss; 296218792Snp __u8 wsf; 297218792Snp#if defined(__LITTLE_ENDIAN_BITFIELD) 298218792Snp __u8 :4; 299218792Snp __u8 unknown:1; 300237436Snp __u8 ecn:1; 301218792Snp __u8 sack:1; 302218792Snp __u8 tstamp:1; 303218792Snp#else 304218792Snp __u8 tstamp:1; 305218792Snp __u8 sack:1; 306237436Snp __u8 ecn:1; 307218792Snp __u8 unknown:1; 308218792Snp __u8 :4; 309218792Snp#endif 310218792Snp}; 311218792Snp 312218792Snpstruct rss_header { 313218792Snp __u8 opcode; 314218792Snp#if defined(__LITTLE_ENDIAN_BITFIELD) 315218792Snp __u8 channel:2; 316218792Snp __u8 filter_hit:1; 317218792Snp __u8 filter_tid:1; 318218792Snp __u8 hash_type:2; 319218792Snp __u8 ipv6:1; 320218792Snp __u8 send2fw:1; 321218792Snp#else 322218792Snp __u8 send2fw:1; 323218792Snp __u8 ipv6:1; 324218792Snp __u8 hash_type:2; 325218792Snp __u8 filter_tid:1; 326218792Snp __u8 filter_hit:1; 327218792Snp __u8 channel:2; 328218792Snp#endif 329218792Snp __be16 qid; 330218792Snp __be32 hash_val; 331218792Snp}; 332218792Snp 333218792Snp#define S_HASHTYPE 20 334218792Snp#define M_HASHTYPE 0x3 335218792Snp#define G_HASHTYPE(x) (((x) >> S_HASHTYPE) & M_HASHTYPE) 336218792Snp 337218792Snp#define S_QNUM 0 338218792Snp#define M_QNUM 0xFFFF 339218792Snp#define G_QNUM(x) (((x) >> S_QNUM) & M_QNUM) 340218792Snp 341218792Snp#ifndef CHELSIO_FW 342218792Snpstruct work_request_hdr { 343218792Snp __be32 wr_hi; 344218792Snp __be32 wr_mid; 345218792Snp __be64 wr_lo; 346218792Snp}; 347218792Snp 348218792Snp/* wr_mid fields */ 349218792Snp#define S_WR_LEN16 0 350218792Snp#define M_WR_LEN16 0xFF 351218792Snp#define V_WR_LEN16(x) ((x) << S_WR_LEN16) 352218792Snp#define G_WR_LEN16(x) (((x) >> S_WR_LEN16) & M_WR_LEN16) 353218792Snp 354218792Snp/* wr_hi fields */ 355218792Snp#define S_WR_OP 24 356218792Snp#define M_WR_OP 0xFF 357218792Snp#define V_WR_OP(x) ((__u64)(x) << S_WR_OP) 358218792Snp#define G_WR_OP(x) (((x) >> S_WR_OP) & M_WR_OP) 359218792Snp 360218792Snp# define WR_HDR struct work_request_hdr wr 361218792Snp# define WR_HDR_SIZE sizeof(struct work_request_hdr) 362218792Snp# define RSS_HDR 363218792Snp#else 364218792Snp# define WR_HDR 365218792Snp# define WR_HDR_SIZE 0 366218792Snp# define RSS_HDR struct rss_header rss_hdr; 367218792Snp#endif 368218792Snp 369218792Snp/* option 0 fields */ 370218792Snp#define S_ACCEPT_MODE 0 371218792Snp#define M_ACCEPT_MODE 0x3 372218792Snp#define V_ACCEPT_MODE(x) ((x) << S_ACCEPT_MODE) 373218792Snp#define G_ACCEPT_MODE(x) (((x) >> S_ACCEPT_MODE) & M_ACCEPT_MODE) 374218792Snp 375218792Snp#define S_TX_CHAN 2 376218792Snp#define M_TX_CHAN 0x3 377218792Snp#define V_TX_CHAN(x) ((x) << S_TX_CHAN) 378218792Snp#define G_TX_CHAN(x) (((x) >> S_TX_CHAN) & M_TX_CHAN) 379218792Snp 380218792Snp#define S_NO_CONG 4 381218792Snp#define V_NO_CONG(x) ((x) << S_NO_CONG) 382218792Snp#define F_NO_CONG V_NO_CONG(1U) 383218792Snp 384218792Snp#define S_DELACK 5 385218792Snp#define V_DELACK(x) ((x) << S_DELACK) 386218792Snp#define F_DELACK V_DELACK(1U) 387218792Snp 388218792Snp#define S_INJECT_TIMER 6 389218792Snp#define V_INJECT_TIMER(x) ((x) << S_INJECT_TIMER) 390218792Snp#define F_INJECT_TIMER V_INJECT_TIMER(1U) 391218792Snp 392218792Snp#define S_NON_OFFLOAD 7 393218792Snp#define V_NON_OFFLOAD(x) ((x) << S_NON_OFFLOAD) 394218792Snp#define F_NON_OFFLOAD V_NON_OFFLOAD(1U) 395218792Snp 396218792Snp#define S_ULP_MODE 8 397218792Snp#define M_ULP_MODE 0xF 398218792Snp#define V_ULP_MODE(x) ((x) << S_ULP_MODE) 399218792Snp#define G_ULP_MODE(x) (((x) >> S_ULP_MODE) & M_ULP_MODE) 400218792Snp 401218792Snp#define S_RCV_BUFSIZ 12 402218792Snp#define M_RCV_BUFSIZ 0x3FFU 403218792Snp#define V_RCV_BUFSIZ(x) ((x) << S_RCV_BUFSIZ) 404218792Snp#define G_RCV_BUFSIZ(x) (((x) >> S_RCV_BUFSIZ) & M_RCV_BUFSIZ) 405218792Snp 406218792Snp#define S_DSCP 22 407218792Snp#define M_DSCP 0x3F 408218792Snp#define V_DSCP(x) ((x) << S_DSCP) 409218792Snp#define G_DSCP(x) (((x) >> S_DSCP) & M_DSCP) 410218792Snp 411218792Snp#define S_SMAC_SEL 28 412218792Snp#define M_SMAC_SEL 0xFF 413218792Snp#define V_SMAC_SEL(x) ((__u64)(x) << S_SMAC_SEL) 414218792Snp#define G_SMAC_SEL(x) (((x) >> S_SMAC_SEL) & M_SMAC_SEL) 415218792Snp 416218792Snp#define S_L2T_IDX 36 417218792Snp#define M_L2T_IDX 0xFFF 418218792Snp#define V_L2T_IDX(x) ((__u64)(x) << S_L2T_IDX) 419218792Snp#define G_L2T_IDX(x) (((x) >> S_L2T_IDX) & M_L2T_IDX) 420218792Snp 421218792Snp#define S_TCAM_BYPASS 48 422218792Snp#define V_TCAM_BYPASS(x) ((__u64)(x) << S_TCAM_BYPASS) 423218792Snp#define F_TCAM_BYPASS V_TCAM_BYPASS(1ULL) 424218792Snp 425218792Snp#define S_NAGLE 49 426218792Snp#define V_NAGLE(x) ((__u64)(x) << S_NAGLE) 427218792Snp#define F_NAGLE V_NAGLE(1ULL) 428218792Snp 429218792Snp#define S_WND_SCALE 50 430218792Snp#define M_WND_SCALE 0xF 431218792Snp#define V_WND_SCALE(x) ((__u64)(x) << S_WND_SCALE) 432218792Snp#define G_WND_SCALE(x) (((x) >> S_WND_SCALE) & M_WND_SCALE) 433218792Snp 434218792Snp#define S_KEEP_ALIVE 54 435218792Snp#define V_KEEP_ALIVE(x) ((__u64)(x) << S_KEEP_ALIVE) 436218792Snp#define F_KEEP_ALIVE V_KEEP_ALIVE(1ULL) 437218792Snp 438218792Snp#define S_MAX_RT 55 439218792Snp#define M_MAX_RT 0xF 440218792Snp#define V_MAX_RT(x) ((__u64)(x) << S_MAX_RT) 441218792Snp#define G_MAX_RT(x) (((x) >> S_MAX_RT) & M_MAX_RT) 442218792Snp 443218792Snp#define S_MAX_RT_OVERRIDE 59 444218792Snp#define V_MAX_RT_OVERRIDE(x) ((__u64)(x) << S_MAX_RT_OVERRIDE) 445218792Snp#define F_MAX_RT_OVERRIDE V_MAX_RT_OVERRIDE(1ULL) 446218792Snp 447218792Snp#define S_MSS_IDX 60 448218792Snp#define M_MSS_IDX 0xF 449218792Snp#define V_MSS_IDX(x) ((__u64)(x) << S_MSS_IDX) 450218792Snp#define G_MSS_IDX(x) (((x) >> S_MSS_IDX) & M_MSS_IDX) 451218792Snp 452218792Snp/* option 1 fields */ 453218792Snp#define S_SYN_RSS_ENABLE 0 454218792Snp#define V_SYN_RSS_ENABLE(x) ((x) << S_SYN_RSS_ENABLE) 455218792Snp#define F_SYN_RSS_ENABLE V_SYN_RSS_ENABLE(1U) 456218792Snp 457218792Snp#define S_SYN_RSS_USE_HASH 1 458218792Snp#define V_SYN_RSS_USE_HASH(x) ((x) << S_SYN_RSS_USE_HASH) 459218792Snp#define F_SYN_RSS_USE_HASH V_SYN_RSS_USE_HASH(1U) 460218792Snp 461218792Snp#define S_SYN_RSS_QUEUE 2 462218792Snp#define M_SYN_RSS_QUEUE 0x3FF 463218792Snp#define V_SYN_RSS_QUEUE(x) ((x) << S_SYN_RSS_QUEUE) 464218792Snp#define G_SYN_RSS_QUEUE(x) (((x) >> S_SYN_RSS_QUEUE) & M_SYN_RSS_QUEUE) 465218792Snp 466218792Snp#define S_LISTEN_INTF 12 467218792Snp#define M_LISTEN_INTF 0xFF 468218792Snp#define V_LISTEN_INTF(x) ((x) << S_LISTEN_INTF) 469218792Snp#define G_LISTEN_INTF(x) (((x) >> S_LISTEN_INTF) & M_LISTEN_INTF) 470218792Snp 471218792Snp#define S_LISTEN_FILTER 20 472218792Snp#define V_LISTEN_FILTER(x) ((x) << S_LISTEN_FILTER) 473218792Snp#define F_LISTEN_FILTER V_LISTEN_FILTER(1U) 474218792Snp 475218792Snp#define S_SYN_DEFENSE 21 476218792Snp#define V_SYN_DEFENSE(x) ((x) << S_SYN_DEFENSE) 477218792Snp#define F_SYN_DEFENSE V_SYN_DEFENSE(1U) 478218792Snp 479218792Snp#define S_CONN_POLICY 22 480218792Snp#define M_CONN_POLICY 0x3 481218792Snp#define V_CONN_POLICY(x) ((x) << S_CONN_POLICY) 482218792Snp#define G_CONN_POLICY(x) (((x) >> S_CONN_POLICY) & M_CONN_POLICY) 483218792Snp 484248925Snp#define S_FILT_INFO 28 485248925Snp#define M_FILT_INFO 0xfffffffffULL 486248925Snp#define V_FILT_INFO(x) ((x) << S_FILT_INFO) 487248925Snp#define G_FILT_INFO(x) (((x) >> S_FILT_INFO) & M_FILT_INFO) 488248925Snp 489218792Snp/* option 2 fields */ 490218792Snp#define S_RSS_QUEUE 0 491218792Snp#define M_RSS_QUEUE 0x3FF 492218792Snp#define V_RSS_QUEUE(x) ((x) << S_RSS_QUEUE) 493218792Snp#define G_RSS_QUEUE(x) (((x) >> S_RSS_QUEUE) & M_RSS_QUEUE) 494218792Snp 495218792Snp#define S_RSS_QUEUE_VALID 10 496218792Snp#define V_RSS_QUEUE_VALID(x) ((x) << S_RSS_QUEUE_VALID) 497218792Snp#define F_RSS_QUEUE_VALID V_RSS_QUEUE_VALID(1U) 498218792Snp 499218792Snp#define S_RX_COALESCE_VALID 11 500218792Snp#define V_RX_COALESCE_VALID(x) ((x) << S_RX_COALESCE_VALID) 501218792Snp#define F_RX_COALESCE_VALID V_RX_COALESCE_VALID(1U) 502218792Snp 503218792Snp#define S_RX_COALESCE 12 504218792Snp#define M_RX_COALESCE 0x3 505218792Snp#define V_RX_COALESCE(x) ((x) << S_RX_COALESCE) 506218792Snp#define G_RX_COALESCE(x) (((x) >> S_RX_COALESCE) & M_RX_COALESCE) 507218792Snp 508218792Snp#define S_CONG_CNTRL 14 509218792Snp#define M_CONG_CNTRL 0x3 510218792Snp#define V_CONG_CNTRL(x) ((x) << S_CONG_CNTRL) 511218792Snp#define G_CONG_CNTRL(x) (((x) >> S_CONG_CNTRL) & M_CONG_CNTRL) 512218792Snp 513218792Snp#define S_PACE 16 514218792Snp#define M_PACE 0x3 515218792Snp#define V_PACE(x) ((x) << S_PACE) 516218792Snp#define G_PACE(x) (((x) >> S_PACE) & M_PACE) 517218792Snp 518218792Snp#define S_CONG_CNTRL_VALID 18 519218792Snp#define V_CONG_CNTRL_VALID(x) ((x) << S_CONG_CNTRL_VALID) 520218792Snp#define F_CONG_CNTRL_VALID V_CONG_CNTRL_VALID(1U) 521218792Snp 522218792Snp#define S_PACE_VALID 19 523218792Snp#define V_PACE_VALID(x) ((x) << S_PACE_VALID) 524218792Snp#define F_PACE_VALID V_PACE_VALID(1U) 525218792Snp 526218792Snp#define S_RX_FC_DISABLE 20 527218792Snp#define V_RX_FC_DISABLE(x) ((x) << S_RX_FC_DISABLE) 528218792Snp#define F_RX_FC_DISABLE V_RX_FC_DISABLE(1U) 529218792Snp 530218792Snp#define S_RX_FC_DDP 21 531218792Snp#define V_RX_FC_DDP(x) ((x) << S_RX_FC_DDP) 532218792Snp#define F_RX_FC_DDP V_RX_FC_DDP(1U) 533218792Snp 534218792Snp#define S_RX_FC_VALID 22 535218792Snp#define V_RX_FC_VALID(x) ((x) << S_RX_FC_VALID) 536218792Snp#define F_RX_FC_VALID V_RX_FC_VALID(1U) 537218792Snp 538218792Snp#define S_TX_QUEUE 23 539218792Snp#define M_TX_QUEUE 0x7 540218792Snp#define V_TX_QUEUE(x) ((x) << S_TX_QUEUE) 541218792Snp#define G_TX_QUEUE(x) (((x) >> S_TX_QUEUE) & M_TX_QUEUE) 542218792Snp 543218792Snp#define S_RX_CHANNEL 26 544218792Snp#define V_RX_CHANNEL(x) ((x) << S_RX_CHANNEL) 545218792Snp#define F_RX_CHANNEL V_RX_CHANNEL(1U) 546218792Snp 547218792Snp#define S_CCTRL_ECN 27 548218792Snp#define V_CCTRL_ECN(x) ((x) << S_CCTRL_ECN) 549218792Snp#define F_CCTRL_ECN V_CCTRL_ECN(1U) 550218792Snp 551218792Snp#define S_WND_SCALE_EN 28 552218792Snp#define V_WND_SCALE_EN(x) ((x) << S_WND_SCALE_EN) 553218792Snp#define F_WND_SCALE_EN V_WND_SCALE_EN(1U) 554218792Snp 555218792Snp#define S_TSTAMPS_EN 29 556218792Snp#define V_TSTAMPS_EN(x) ((x) << S_TSTAMPS_EN) 557218792Snp#define F_TSTAMPS_EN V_TSTAMPS_EN(1U) 558218792Snp 559218792Snp#define S_SACK_EN 30 560218792Snp#define V_SACK_EN(x) ((x) << S_SACK_EN) 561218792Snp#define F_SACK_EN V_SACK_EN(1U) 562218792Snp 563248925Snp#define S_T5_OPT_2_VALID 31 564248925Snp#define V_T5_OPT_2_VALID(x) ((x) << S_T5_OPT_2_VALID) 565248925Snp#define F_T5_OPT_2_VALID V_T5_OPT_2_VALID(1U) 566248925Snp 567218792Snpstruct cpl_pass_open_req { 568218792Snp WR_HDR; 569218792Snp union opcode_tid ot; 570218792Snp __be16 local_port; 571218792Snp __be16 peer_port; 572218792Snp __be32 local_ip; 573218792Snp __be32 peer_ip; 574218792Snp __be64 opt0; 575218792Snp __be64 opt1; 576218792Snp}; 577218792Snp 578218792Snpstruct cpl_pass_open_req6 { 579218792Snp WR_HDR; 580218792Snp union opcode_tid ot; 581218792Snp __be16 local_port; 582218792Snp __be16 peer_port; 583218792Snp __be64 local_ip_hi; 584218792Snp __be64 local_ip_lo; 585218792Snp __be64 peer_ip_hi; 586218792Snp __be64 peer_ip_lo; 587218792Snp __be64 opt0; 588218792Snp __be64 opt1; 589218792Snp}; 590218792Snp 591218792Snpstruct cpl_pass_open_rpl { 592218792Snp RSS_HDR 593218792Snp union opcode_tid ot; 594218792Snp __u8 rsvd[3]; 595218792Snp __u8 status; 596218792Snp}; 597218792Snp 598218792Snpstruct cpl_pass_establish { 599218792Snp RSS_HDR 600218792Snp union opcode_tid ot; 601218792Snp __be32 rsvd; 602218792Snp __be32 tos_stid; 603218792Snp __be16 mac_idx; 604218792Snp __be16 tcp_opt; 605218792Snp __be32 snd_isn; 606218792Snp __be32 rcv_isn; 607218792Snp}; 608218792Snp 609218792Snp/* cpl_pass_establish.tos_stid fields */ 610218792Snp#define S_PASS_OPEN_TID 0 611218792Snp#define M_PASS_OPEN_TID 0xFFFFFF 612218792Snp#define V_PASS_OPEN_TID(x) ((x) << S_PASS_OPEN_TID) 613218792Snp#define G_PASS_OPEN_TID(x) (((x) >> S_PASS_OPEN_TID) & M_PASS_OPEN_TID) 614218792Snp 615218792Snp#define S_PASS_OPEN_TOS 24 616218792Snp#define M_PASS_OPEN_TOS 0xFF 617218792Snp#define V_PASS_OPEN_TOS(x) ((x) << S_PASS_OPEN_TOS) 618218792Snp#define G_PASS_OPEN_TOS(x) (((x) >> S_PASS_OPEN_TOS) & M_PASS_OPEN_TOS) 619218792Snp 620218792Snp/* cpl_pass_establish.tcp_opt fields (also applies to act_open_establish) */ 621218792Snp#define G_TCPOPT_WSCALE_OK(x) (((x) >> 5) & 1) 622218792Snp#define G_TCPOPT_SACK(x) (((x) >> 6) & 1) 623218792Snp#define G_TCPOPT_TSTAMP(x) (((x) >> 7) & 1) 624218792Snp#define G_TCPOPT_SND_WSCALE(x) (((x) >> 8) & 0xf) 625218792Snp#define G_TCPOPT_MSS(x) (((x) >> 12) & 0xf) 626218792Snp 627218792Snpstruct cpl_pass_accept_req { 628218792Snp RSS_HDR 629218792Snp union opcode_tid ot; 630218792Snp __be16 rsvd; 631218792Snp __be16 len; 632218792Snp __be32 hdr_len; 633218792Snp __be16 vlan; 634218792Snp __be16 l2info; 635218792Snp __be32 tos_stid; 636218792Snp struct tcp_options tcpopt; 637218792Snp}; 638218792Snp 639218792Snp/* cpl_pass_accept_req.hdr_len fields */ 640218792Snp#define S_SYN_RX_CHAN 0 641218792Snp#define M_SYN_RX_CHAN 0xF 642218792Snp#define V_SYN_RX_CHAN(x) ((x) << S_SYN_RX_CHAN) 643218792Snp#define G_SYN_RX_CHAN(x) (((x) >> S_SYN_RX_CHAN) & M_SYN_RX_CHAN) 644218792Snp 645218792Snp#define S_TCP_HDR_LEN 10 646218792Snp#define M_TCP_HDR_LEN 0x3F 647218792Snp#define V_TCP_HDR_LEN(x) ((x) << S_TCP_HDR_LEN) 648218792Snp#define G_TCP_HDR_LEN(x) (((x) >> S_TCP_HDR_LEN) & M_TCP_HDR_LEN) 649218792Snp 650218792Snp#define S_IP_HDR_LEN 16 651218792Snp#define M_IP_HDR_LEN 0x3FF 652218792Snp#define V_IP_HDR_LEN(x) ((x) << S_IP_HDR_LEN) 653218792Snp#define G_IP_HDR_LEN(x) (((x) >> S_IP_HDR_LEN) & M_IP_HDR_LEN) 654218792Snp 655218792Snp#define S_ETH_HDR_LEN 26 656237436Snp#define M_ETH_HDR_LEN 0x3F 657218792Snp#define V_ETH_HDR_LEN(x) ((x) << S_ETH_HDR_LEN) 658218792Snp#define G_ETH_HDR_LEN(x) (((x) >> S_ETH_HDR_LEN) & M_ETH_HDR_LEN) 659218792Snp 660218792Snp/* cpl_pass_accept_req.l2info fields */ 661218792Snp#define S_SYN_MAC_IDX 0 662218792Snp#define M_SYN_MAC_IDX 0x1FF 663218792Snp#define V_SYN_MAC_IDX(x) ((x) << S_SYN_MAC_IDX) 664218792Snp#define G_SYN_MAC_IDX(x) (((x) >> S_SYN_MAC_IDX) & M_SYN_MAC_IDX) 665218792Snp 666218792Snp#define S_SYN_XACT_MATCH 9 667218792Snp#define V_SYN_XACT_MATCH(x) ((x) << S_SYN_XACT_MATCH) 668218792Snp#define F_SYN_XACT_MATCH V_SYN_XACT_MATCH(1U) 669218792Snp 670218792Snp#define S_SYN_INTF 12 671218792Snp#define M_SYN_INTF 0xF 672218792Snp#define V_SYN_INTF(x) ((x) << S_SYN_INTF) 673218792Snp#define G_SYN_INTF(x) (((x) >> S_SYN_INTF) & M_SYN_INTF) 674218792Snp 675218792Snpstruct cpl_pass_accept_rpl { 676218792Snp WR_HDR; 677218792Snp union opcode_tid ot; 678218792Snp __be32 opt2; 679218792Snp __be64 opt0; 680218792Snp}; 681218792Snp 682252711Snpstruct cpl_t5_pass_accept_rpl { 683252711Snp WR_HDR; 684252711Snp union opcode_tid ot; 685252711Snp __be32 opt2; 686252711Snp __be64 opt0; 687252711Snp __be32 iss; 688252711Snp __be32 rsvd; 689252711Snp}; 690252711Snp 691218792Snpstruct cpl_act_open_req { 692218792Snp WR_HDR; 693218792Snp union opcode_tid ot; 694218792Snp __be16 local_port; 695218792Snp __be16 peer_port; 696218792Snp __be32 local_ip; 697218792Snp __be32 peer_ip; 698218792Snp __be64 opt0; 699218792Snp __be32 params; 700218792Snp __be32 opt2; 701218792Snp}; 702218792Snp 703248925Snp#define S_FILTER_TUPLE 24 704248925Snp#define M_FILTER_TUPLE 0xFFFFFFFFFF 705248925Snp#define V_FILTER_TUPLE(x) ((x) << S_FILTER_TUPLE) 706248925Snp#define G_FILTER_TUPLE(x) (((x) >> S_FILTER_TUPLE) & M_FILTER_TUPLE) 707237436Snpstruct cpl_t5_act_open_req { 708237436Snp WR_HDR; 709237436Snp union opcode_tid ot; 710237436Snp __be16 local_port; 711237436Snp __be16 peer_port; 712237436Snp __be32 local_ip; 713237436Snp __be32 peer_ip; 714237436Snp __be64 opt0; 715252711Snp __be32 iss; 716237436Snp __be32 opt2; 717237436Snp __be64 params; 718237436Snp}; 719218792Snp 720218792Snpstruct cpl_act_open_req6 { 721218792Snp WR_HDR; 722218792Snp union opcode_tid ot; 723218792Snp __be16 local_port; 724218792Snp __be16 peer_port; 725218792Snp __be64 local_ip_hi; 726218792Snp __be64 local_ip_lo; 727218792Snp __be64 peer_ip_hi; 728218792Snp __be64 peer_ip_lo; 729218792Snp __be64 opt0; 730218792Snp __be32 params; 731218792Snp __be32 opt2; 732218792Snp}; 733218792Snp 734237436Snpstruct cpl_t5_act_open_req6 { 735237436Snp WR_HDR; 736237436Snp union opcode_tid ot; 737237436Snp __be16 local_port; 738237436Snp __be16 peer_port; 739237436Snp __be64 local_ip_hi; 740237436Snp __be64 local_ip_lo; 741237436Snp __be64 peer_ip_hi; 742237436Snp __be64 peer_ip_lo; 743237436Snp __be64 opt0; 744252711Snp __be32 iss; 745237436Snp __be32 opt2; 746237436Snp __be64 params; 747237436Snp}; 748237436Snp 749218792Snpstruct cpl_act_open_rpl { 750218792Snp RSS_HDR 751218792Snp union opcode_tid ot; 752218792Snp __be32 atid_status; 753218792Snp}; 754218792Snp 755218792Snp/* cpl_act_open_rpl.atid_status fields */ 756218792Snp#define S_AOPEN_STATUS 0 757218792Snp#define M_AOPEN_STATUS 0xFF 758218792Snp#define V_AOPEN_STATUS(x) ((x) << S_AOPEN_STATUS) 759218792Snp#define G_AOPEN_STATUS(x) (((x) >> S_AOPEN_STATUS) & M_AOPEN_STATUS) 760218792Snp 761218792Snp#define S_AOPEN_ATID 8 762218792Snp#define M_AOPEN_ATID 0xFFFFFF 763218792Snp#define V_AOPEN_ATID(x) ((x) << S_AOPEN_ATID) 764218792Snp#define G_AOPEN_ATID(x) (((x) >> S_AOPEN_ATID) & M_AOPEN_ATID) 765218792Snp 766218792Snpstruct cpl_act_establish { 767218792Snp RSS_HDR 768218792Snp union opcode_tid ot; 769218792Snp __be32 rsvd; 770218792Snp __be32 tos_atid; 771218792Snp __be16 mac_idx; 772218792Snp __be16 tcp_opt; 773218792Snp __be32 snd_isn; 774218792Snp __be32 rcv_isn; 775218792Snp}; 776218792Snp 777218792Snpstruct cpl_get_tcb { 778218792Snp WR_HDR; 779218792Snp union opcode_tid ot; 780218792Snp __be16 reply_ctrl; 781218792Snp __be16 cookie; 782218792Snp}; 783218792Snp 784218792Snp/* cpl_get_tcb.reply_ctrl fields */ 785218792Snp#define S_QUEUENO 0 786218792Snp#define M_QUEUENO 0x3FF 787218792Snp#define V_QUEUENO(x) ((x) << S_QUEUENO) 788218792Snp#define G_QUEUENO(x) (((x) >> S_QUEUENO) & M_QUEUENO) 789218792Snp 790218792Snp#define S_REPLY_CHAN 14 791218792Snp#define V_REPLY_CHAN(x) ((x) << S_REPLY_CHAN) 792218792Snp#define F_REPLY_CHAN V_REPLY_CHAN(1U) 793218792Snp 794218792Snp#define S_NO_REPLY 15 795218792Snp#define V_NO_REPLY(x) ((x) << S_NO_REPLY) 796218792Snp#define F_NO_REPLY V_NO_REPLY(1U) 797218792Snp 798218792Snpstruct cpl_get_tcb_rpl { 799218792Snp RSS_HDR 800218792Snp union opcode_tid ot; 801218792Snp __u8 cookie; 802218792Snp __u8 status; 803218792Snp __be16 len; 804218792Snp}; 805218792Snp 806218792Snpstruct cpl_set_tcb { 807218792Snp WR_HDR; 808218792Snp union opcode_tid ot; 809218792Snp __be16 reply_ctrl; 810218792Snp __be16 cookie; 811218792Snp}; 812218792Snp 813218792Snpstruct cpl_set_tcb_field { 814218792Snp WR_HDR; 815218792Snp union opcode_tid ot; 816218792Snp __be16 reply_ctrl; 817218792Snp __be16 word_cookie; 818218792Snp __be64 mask; 819218792Snp __be64 val; 820218792Snp}; 821218792Snp 822239344Snpstruct cpl_set_tcb_field_core { 823239344Snp union opcode_tid ot; 824239344Snp __be16 reply_ctrl; 825239344Snp __be16 word_cookie; 826239344Snp __be64 mask; 827239344Snp __be64 val; 828239344Snp}; 829239344Snp 830218792Snp/* cpl_set_tcb_field.word_cookie fields */ 831218792Snp#define S_WORD 0 832218792Snp#define M_WORD 0x1F 833218792Snp#define V_WORD(x) ((x) << S_WORD) 834218792Snp#define G_WORD(x) (((x) >> S_WORD) & M_WORD) 835218792Snp 836218792Snp#define S_COOKIE 5 837218792Snp#define M_COOKIE 0x7 838218792Snp#define V_COOKIE(x) ((x) << S_COOKIE) 839218792Snp#define G_COOKIE(x) (((x) >> S_COOKIE) & M_COOKIE) 840218792Snp 841218792Snpstruct cpl_set_tcb_rpl { 842218792Snp RSS_HDR 843218792Snp union opcode_tid ot; 844218792Snp __be16 rsvd; 845218792Snp __u8 cookie; 846218792Snp __u8 status; 847218792Snp __be64 oldval; 848218792Snp}; 849218792Snp 850218792Snpstruct cpl_close_con_req { 851218792Snp WR_HDR; 852218792Snp union opcode_tid ot; 853218792Snp __be32 rsvd; 854218792Snp}; 855218792Snp 856218792Snpstruct cpl_close_con_rpl { 857218792Snp RSS_HDR 858218792Snp union opcode_tid ot; 859218792Snp __u8 rsvd[3]; 860218792Snp __u8 status; 861218792Snp __be32 snd_nxt; 862218792Snp __be32 rcv_nxt; 863218792Snp}; 864218792Snp 865218792Snpstruct cpl_close_listsvr_req { 866218792Snp WR_HDR; 867218792Snp union opcode_tid ot; 868218792Snp __be16 reply_ctrl; 869218792Snp __be16 rsvd; 870218792Snp}; 871218792Snp 872218792Snp/* additional cpl_close_listsvr_req.reply_ctrl field */ 873218792Snp#define S_LISTSVR_IPV6 14 874218792Snp#define V_LISTSVR_IPV6(x) ((x) << S_LISTSVR_IPV6) 875218792Snp#define F_LISTSVR_IPV6 V_LISTSVR_IPV6(1U) 876218792Snp 877218792Snpstruct cpl_close_listsvr_rpl { 878218792Snp RSS_HDR 879218792Snp union opcode_tid ot; 880218792Snp __u8 rsvd[3]; 881218792Snp __u8 status; 882218792Snp}; 883218792Snp 884218792Snpstruct cpl_abort_req_rss { 885218792Snp RSS_HDR 886218792Snp union opcode_tid ot; 887218792Snp __u8 rsvd[3]; 888218792Snp __u8 status; 889218792Snp}; 890218792Snp 891218792Snpstruct cpl_abort_req { 892218792Snp WR_HDR; 893218792Snp union opcode_tid ot; 894218792Snp __be32 rsvd0; 895218792Snp __u8 rsvd1; 896218792Snp __u8 cmd; 897218792Snp __u8 rsvd2[6]; 898218792Snp}; 899218792Snp 900218792Snpstruct cpl_abort_rpl_rss { 901218792Snp RSS_HDR 902218792Snp union opcode_tid ot; 903218792Snp __u8 rsvd[3]; 904218792Snp __u8 status; 905218792Snp}; 906218792Snp 907218792Snpstruct cpl_abort_rpl { 908218792Snp WR_HDR; 909218792Snp union opcode_tid ot; 910218792Snp __be32 rsvd0; 911218792Snp __u8 rsvd1; 912218792Snp __u8 cmd; 913218792Snp __u8 rsvd2[6]; 914218792Snp}; 915218792Snp 916218792Snpstruct cpl_peer_close { 917218792Snp RSS_HDR 918218792Snp union opcode_tid ot; 919218792Snp __be32 rcv_nxt; 920218792Snp}; 921218792Snp 922218792Snpstruct cpl_tid_release { 923218792Snp WR_HDR; 924218792Snp union opcode_tid ot; 925218792Snp __be32 rsvd; 926218792Snp}; 927218792Snp 928218792Snpstruct tx_data_wr { 929218792Snp __be32 wr_hi; 930218792Snp __be32 wr_lo; 931218792Snp __be32 len; 932218792Snp __be32 flags; 933218792Snp __be32 sndseq; 934218792Snp __be32 param; 935218792Snp}; 936218792Snp 937218792Snp/* tx_data_wr.flags fields */ 938218792Snp#define S_TX_ACK_PAGES 21 939218792Snp#define M_TX_ACK_PAGES 0x7 940218792Snp#define V_TX_ACK_PAGES(x) ((x) << S_TX_ACK_PAGES) 941218792Snp#define G_TX_ACK_PAGES(x) (((x) >> S_TX_ACK_PAGES) & M_TX_ACK_PAGES) 942218792Snp 943218792Snp/* tx_data_wr.param fields */ 944218792Snp#define S_TX_PORT 0 945218792Snp#define M_TX_PORT 0x7 946218792Snp#define V_TX_PORT(x) ((x) << S_TX_PORT) 947218792Snp#define G_TX_PORT(x) (((x) >> S_TX_PORT) & M_TX_PORT) 948218792Snp 949218792Snp#define S_TX_MSS 4 950218792Snp#define M_TX_MSS 0xF 951218792Snp#define V_TX_MSS(x) ((x) << S_TX_MSS) 952218792Snp#define G_TX_MSS(x) (((x) >> S_TX_MSS) & M_TX_MSS) 953218792Snp 954218792Snp#define S_TX_QOS 8 955218792Snp#define M_TX_QOS 0xFF 956218792Snp#define V_TX_QOS(x) ((x) << S_TX_QOS) 957218792Snp#define G_TX_QOS(x) (((x) >> S_TX_QOS) & M_TX_QOS) 958218792Snp 959218792Snp#define S_TX_SNDBUF 16 960218792Snp#define M_TX_SNDBUF 0xFFFF 961218792Snp#define V_TX_SNDBUF(x) ((x) << S_TX_SNDBUF) 962218792Snp#define G_TX_SNDBUF(x) (((x) >> S_TX_SNDBUF) & M_TX_SNDBUF) 963218792Snp 964218792Snpstruct cpl_tx_data { 965218792Snp union opcode_tid ot; 966218792Snp __be32 len; 967218792Snp __be32 rsvd; 968218792Snp __be32 flags; 969218792Snp}; 970218792Snp 971218792Snp/* cpl_tx_data.flags fields */ 972218792Snp#define S_TX_PROXY 5 973218792Snp#define V_TX_PROXY(x) ((x) << S_TX_PROXY) 974218792Snp#define F_TX_PROXY V_TX_PROXY(1U) 975218792Snp 976218792Snp#define S_TX_ULP_SUBMODE 6 977218792Snp#define M_TX_ULP_SUBMODE 0xF 978218792Snp#define V_TX_ULP_SUBMODE(x) ((x) << S_TX_ULP_SUBMODE) 979218792Snp#define G_TX_ULP_SUBMODE(x) (((x) >> S_TX_ULP_SUBMODE) & M_TX_ULP_SUBMODE) 980218792Snp 981218792Snp#define S_TX_ULP_MODE 10 982218792Snp#define M_TX_ULP_MODE 0xF 983218792Snp#define V_TX_ULP_MODE(x) ((x) << S_TX_ULP_MODE) 984218792Snp#define G_TX_ULP_MODE(x) (((x) >> S_TX_ULP_MODE) & M_TX_ULP_MODE) 985218792Snp 986218792Snp#define S_TX_SHOVE 14 987218792Snp#define V_TX_SHOVE(x) ((x) << S_TX_SHOVE) 988218792Snp#define F_TX_SHOVE V_TX_SHOVE(1U) 989218792Snp 990218792Snp#define S_TX_MORE 15 991218792Snp#define V_TX_MORE(x) ((x) << S_TX_MORE) 992218792Snp#define F_TX_MORE V_TX_MORE(1U) 993218792Snp 994218792Snp#define S_TX_URG 16 995218792Snp#define V_TX_URG(x) ((x) << S_TX_URG) 996218792Snp#define F_TX_URG V_TX_URG(1U) 997218792Snp 998218792Snp#define S_TX_FLUSH 17 999218792Snp#define V_TX_FLUSH(x) ((x) << S_TX_FLUSH) 1000218792Snp#define F_TX_FLUSH V_TX_FLUSH(1U) 1001218792Snp 1002218792Snp#define S_TX_SAVE 18 1003218792Snp#define V_TX_SAVE(x) ((x) << S_TX_SAVE) 1004218792Snp#define F_TX_SAVE V_TX_SAVE(1U) 1005218792Snp 1006218792Snp#define S_TX_TNL 19 1007218792Snp#define V_TX_TNL(x) ((x) << S_TX_TNL) 1008218792Snp#define F_TX_TNL V_TX_TNL(1U) 1009218792Snp 1010218792Snp/* additional tx_data_wr.flags fields */ 1011218792Snp#define S_TX_CPU_IDX 0 1012218792Snp#define M_TX_CPU_IDX 0x3F 1013218792Snp#define V_TX_CPU_IDX(x) ((x) << S_TX_CPU_IDX) 1014218792Snp#define G_TX_CPU_IDX(x) (((x) >> S_TX_CPU_IDX) & M_TX_CPU_IDX) 1015218792Snp 1016218792Snp#define S_TX_CLOSE 17 1017218792Snp#define V_TX_CLOSE(x) ((x) << S_TX_CLOSE) 1018218792Snp#define F_TX_CLOSE V_TX_CLOSE(1U) 1019218792Snp 1020218792Snp#define S_TX_INIT 18 1021218792Snp#define V_TX_INIT(x) ((x) << S_TX_INIT) 1022218792Snp#define F_TX_INIT V_TX_INIT(1U) 1023218792Snp 1024218792Snp#define S_TX_IMM_ACK 19 1025218792Snp#define V_TX_IMM_ACK(x) ((x) << S_TX_IMM_ACK) 1026218792Snp#define F_TX_IMM_ACK V_TX_IMM_ACK(1U) 1027218792Snp 1028218792Snp#define S_TX_IMM_DMA 20 1029218792Snp#define V_TX_IMM_DMA(x) ((x) << S_TX_IMM_DMA) 1030218792Snp#define F_TX_IMM_DMA V_TX_IMM_DMA(1U) 1031218792Snp 1032218792Snpstruct cpl_tx_data_ack { 1033218792Snp RSS_HDR 1034218792Snp union opcode_tid ot; 1035218792Snp __be32 snd_una; 1036218792Snp}; 1037218792Snp 1038218792Snpstruct cpl_wr_ack { /* XXX */ 1039218792Snp RSS_HDR 1040218792Snp union opcode_tid ot; 1041218792Snp __be16 credits; 1042218792Snp __be16 rsvd; 1043218792Snp __be32 snd_nxt; 1044218792Snp __be32 snd_una; 1045218792Snp}; 1046218792Snp 1047218792Snpstruct cpl_tx_pkt_core { 1048218792Snp __be32 ctrl0; 1049218792Snp __be16 pack; 1050218792Snp __be16 len; 1051218792Snp __be64 ctrl1; 1052218792Snp}; 1053218792Snp 1054218792Snpstruct cpl_tx_pkt { 1055218792Snp WR_HDR; 1056218792Snp struct cpl_tx_pkt_core c; 1057218792Snp}; 1058218792Snp 1059218792Snp#define cpl_tx_pkt_xt cpl_tx_pkt 1060218792Snp 1061218792Snp/* cpl_tx_pkt_core.ctrl0 fields */ 1062218792Snp#define S_TXPKT_VF 0 1063218792Snp#define M_TXPKT_VF 0xFF 1064218792Snp#define V_TXPKT_VF(x) ((x) << S_TXPKT_VF) 1065218792Snp#define G_TXPKT_VF(x) (((x) >> S_TXPKT_VF) & M_TXPKT_VF) 1066218792Snp 1067218792Snp#define S_TXPKT_PF 8 1068218792Snp#define M_TXPKT_PF 0x7 1069218792Snp#define V_TXPKT_PF(x) ((x) << S_TXPKT_PF) 1070218792Snp#define G_TXPKT_PF(x) (((x) >> S_TXPKT_PF) & M_TXPKT_PF) 1071218792Snp 1072218792Snp#define S_TXPKT_VF_VLD 11 1073218792Snp#define V_TXPKT_VF_VLD(x) ((x) << S_TXPKT_VF_VLD) 1074218792Snp#define F_TXPKT_VF_VLD V_TXPKT_VF_VLD(1U) 1075218792Snp 1076218792Snp#define S_TXPKT_OVLAN_IDX 12 1077218792Snp#define M_TXPKT_OVLAN_IDX 0xF 1078218792Snp#define V_TXPKT_OVLAN_IDX(x) ((x) << S_TXPKT_OVLAN_IDX) 1079218792Snp#define G_TXPKT_OVLAN_IDX(x) (((x) >> S_TXPKT_OVLAN_IDX) & M_TXPKT_OVLAN_IDX) 1080218792Snp 1081248925Snp#define S_TXPKT_T5_OVLAN_IDX 12 1082248925Snp#define M_TXPKT_T5_OVLAN_IDX 0x7 1083248925Snp#define V_TXPKT_T5_OVLAN_IDX(x) ((x) << S_TXPKT_T5_OVLAN_IDX) 1084248925Snp#define G_TXPKT_T5_OVLAN_IDX(x) (((x) >> S_TXPKT_T5_OVLAN_IDX) & \ 1085248925Snp M_TXPKT_T5_OVLAN_IDX) 1086248925Snp 1087218792Snp#define S_TXPKT_INTF 16 1088218792Snp#define M_TXPKT_INTF 0xF 1089218792Snp#define V_TXPKT_INTF(x) ((x) << S_TXPKT_INTF) 1090218792Snp#define G_TXPKT_INTF(x) (((x) >> S_TXPKT_INTF) & M_TXPKT_INTF) 1091218792Snp 1092218792Snp#define S_TXPKT_SPECIAL_STAT 20 1093218792Snp#define V_TXPKT_SPECIAL_STAT(x) ((x) << S_TXPKT_SPECIAL_STAT) 1094218792Snp#define F_TXPKT_SPECIAL_STAT V_TXPKT_SPECIAL_STAT(1U) 1095218792Snp 1096248925Snp#define S_TXPKT_T5_FCS_DIS 21 1097248925Snp#define V_TXPKT_T5_FCS_DIS(x) ((x) << S_TXPKT_T5_FCS_DIS) 1098248925Snp#define F_TXPKT_T5_FCS_DIS V_TXPKT_T5_FCS_DIS(1U) 1099248925Snp 1100218792Snp#define S_TXPKT_INS_OVLAN 21 1101218792Snp#define V_TXPKT_INS_OVLAN(x) ((x) << S_TXPKT_INS_OVLAN) 1102218792Snp#define F_TXPKT_INS_OVLAN V_TXPKT_INS_OVLAN(1U) 1103218792Snp 1104248925Snp#define S_TXPKT_T5_INS_OVLAN 15 1105248925Snp#define V_TXPKT_T5_INS_OVLAN(x) ((x) << S_TXPKT_T5_INS_OVLAN) 1106248925Snp#define F_TXPKT_T5_INS_OVLAN V_TXPKT_T5_INS_OVLAN(1U) 1107248925Snp 1108218792Snp#define S_TXPKT_STAT_DIS 22 1109218792Snp#define V_TXPKT_STAT_DIS(x) ((x) << S_TXPKT_STAT_DIS) 1110218792Snp#define F_TXPKT_STAT_DIS V_TXPKT_STAT_DIS(1U) 1111218792Snp 1112218792Snp#define S_TXPKT_LOOPBACK 23 1113218792Snp#define V_TXPKT_LOOPBACK(x) ((x) << S_TXPKT_LOOPBACK) 1114218792Snp#define F_TXPKT_LOOPBACK V_TXPKT_LOOPBACK(1U) 1115218792Snp 1116237436Snp#define S_TXPKT_TSTAMP 23 1117237436Snp#define V_TXPKT_TSTAMP(x) ((x) << S_TXPKT_TSTAMP) 1118237436Snp#define F_TXPKT_TSTAMP V_TXPKT_TSTAMP(1U) 1119237436Snp 1120218792Snp#define S_TXPKT_OPCODE 24 1121218792Snp#define M_TXPKT_OPCODE 0xFF 1122218792Snp#define V_TXPKT_OPCODE(x) ((x) << S_TXPKT_OPCODE) 1123218792Snp#define G_TXPKT_OPCODE(x) (((x) >> S_TXPKT_OPCODE) & M_TXPKT_OPCODE) 1124218792Snp 1125218792Snp/* cpl_tx_pkt_core.ctrl1 fields */ 1126218792Snp#define S_TXPKT_SA_IDX 0 1127218792Snp#define M_TXPKT_SA_IDX 0xFFF 1128218792Snp#define V_TXPKT_SA_IDX(x) ((x) << S_TXPKT_SA_IDX) 1129218792Snp#define G_TXPKT_SA_IDX(x) (((x) >> S_TXPKT_SA_IDX) & M_TXPKT_SA_IDX) 1130218792Snp 1131218792Snp#define S_TXPKT_CSUM_END 12 1132218792Snp#define M_TXPKT_CSUM_END 0xFF 1133218792Snp#define V_TXPKT_CSUM_END(x) ((x) << S_TXPKT_CSUM_END) 1134218792Snp#define G_TXPKT_CSUM_END(x) (((x) >> S_TXPKT_CSUM_END) & M_TXPKT_CSUM_END) 1135218792Snp 1136218792Snp#define S_TXPKT_CSUM_START 20 1137218792Snp#define M_TXPKT_CSUM_START 0x3FF 1138218792Snp#define V_TXPKT_CSUM_START(x) ((x) << S_TXPKT_CSUM_START) 1139218792Snp#define G_TXPKT_CSUM_START(x) (((x) >> S_TXPKT_CSUM_START) & M_TXPKT_CSUM_START) 1140218792Snp 1141218792Snp#define S_TXPKT_IPHDR_LEN 20 1142218792Snp#define M_TXPKT_IPHDR_LEN 0x3FFF 1143218792Snp#define V_TXPKT_IPHDR_LEN(x) ((__u64)(x) << S_TXPKT_IPHDR_LEN) 1144218792Snp#define G_TXPKT_IPHDR_LEN(x) (((x) >> S_TXPKT_IPHDR_LEN) & M_TXPKT_IPHDR_LEN) 1145218792Snp 1146218792Snp#define S_TXPKT_CSUM_LOC 30 1147218792Snp#define M_TXPKT_CSUM_LOC 0x3FF 1148218792Snp#define V_TXPKT_CSUM_LOC(x) ((__u64)(x) << S_TXPKT_CSUM_LOC) 1149218792Snp#define G_TXPKT_CSUM_LOC(x) (((x) >> S_TXPKT_CSUM_LOC) & M_TXPKT_CSUM_LOC) 1150218792Snp 1151218792Snp#define S_TXPKT_ETHHDR_LEN 34 1152218792Snp#define M_TXPKT_ETHHDR_LEN 0x3F 1153218792Snp#define V_TXPKT_ETHHDR_LEN(x) ((__u64)(x) << S_TXPKT_ETHHDR_LEN) 1154218792Snp#define G_TXPKT_ETHHDR_LEN(x) (((x) >> S_TXPKT_ETHHDR_LEN) & M_TXPKT_ETHHDR_LEN) 1155218792Snp 1156218792Snp#define S_TXPKT_CSUM_TYPE 40 1157218792Snp#define M_TXPKT_CSUM_TYPE 0xF 1158218792Snp#define V_TXPKT_CSUM_TYPE(x) ((__u64)(x) << S_TXPKT_CSUM_TYPE) 1159218792Snp#define G_TXPKT_CSUM_TYPE(x) (((x) >> S_TXPKT_CSUM_TYPE) & M_TXPKT_CSUM_TYPE) 1160218792Snp 1161218792Snp#define S_TXPKT_VLAN 44 1162218792Snp#define M_TXPKT_VLAN 0xFFFF 1163218792Snp#define V_TXPKT_VLAN(x) ((__u64)(x) << S_TXPKT_VLAN) 1164218792Snp#define G_TXPKT_VLAN(x) (((x) >> S_TXPKT_VLAN) & M_TXPKT_VLAN) 1165218792Snp 1166218792Snp#define S_TXPKT_VLAN_VLD 60 1167218792Snp#define V_TXPKT_VLAN_VLD(x) ((__u64)(x) << S_TXPKT_VLAN_VLD) 1168218792Snp#define F_TXPKT_VLAN_VLD V_TXPKT_VLAN_VLD(1ULL) 1169218792Snp 1170218792Snp#define S_TXPKT_IPSEC 61 1171218792Snp#define V_TXPKT_IPSEC(x) ((__u64)(x) << S_TXPKT_IPSEC) 1172218792Snp#define F_TXPKT_IPSEC V_TXPKT_IPSEC(1ULL) 1173218792Snp 1174218792Snp#define S_TXPKT_IPCSUM_DIS 62 1175218792Snp#define V_TXPKT_IPCSUM_DIS(x) ((__u64)(x) << S_TXPKT_IPCSUM_DIS) 1176218792Snp#define F_TXPKT_IPCSUM_DIS V_TXPKT_IPCSUM_DIS(1ULL) 1177218792Snp 1178218792Snp#define S_TXPKT_L4CSUM_DIS 63 1179218792Snp#define V_TXPKT_L4CSUM_DIS(x) ((__u64)(x) << S_TXPKT_L4CSUM_DIS) 1180218792Snp#define F_TXPKT_L4CSUM_DIS V_TXPKT_L4CSUM_DIS(1ULL) 1181218792Snp 1182237436Snpstruct cpl_tx_pkt_lso_core { 1183218792Snp __be32 lso_ctrl; 1184218792Snp __be16 ipid_ofst; 1185218792Snp __be16 mss; 1186218792Snp __be32 seqno_offset; 1187218792Snp __be32 len; 1188218792Snp /* encapsulated CPL (TX_PKT, TX_PKT_XT or TX_DATA) follows here */ 1189218792Snp}; 1190218792Snp 1191237436Snpstruct cpl_tx_pkt_lso { 1192237436Snp WR_HDR; 1193237436Snp struct cpl_tx_pkt_lso_core c; 1194237436Snp /* encapsulated CPL (TX_PKT, TX_PKT_XT or TX_DATA) follows here */ 1195237436Snp}; 1196237436Snp 1197237436Snpstruct cpl_tx_pkt_ufo_core { 1198237436Snp __be16 ethlen; 1199237436Snp __be16 iplen; 1200237436Snp __be16 udplen; 1201237436Snp __be16 mss; 1202237436Snp __be32 len; 1203237436Snp __be32 r1; 1204237436Snp /* encapsulated CPL (TX_PKT, TX_PKT_XT or TX_DATA) follows here */ 1205237436Snp}; 1206237436Snp 1207237436Snpstruct cpl_tx_pkt_ufo { 1208237436Snp WR_HDR; 1209237436Snp struct cpl_tx_pkt_ufo_core c; 1210237436Snp /* encapsulated CPL (TX_PKT, TX_PKT_XT or TX_DATA) follows here */ 1211237436Snp}; 1212237436Snp 1213237436Snp/* cpl_tx_pkt_lso_core.lso_ctrl fields */ 1214218792Snp#define S_LSO_TCPHDR_LEN 0 1215218792Snp#define M_LSO_TCPHDR_LEN 0xF 1216218792Snp#define V_LSO_TCPHDR_LEN(x) ((x) << S_LSO_TCPHDR_LEN) 1217218792Snp#define G_LSO_TCPHDR_LEN(x) (((x) >> S_LSO_TCPHDR_LEN) & M_LSO_TCPHDR_LEN) 1218218792Snp 1219218792Snp#define S_LSO_IPHDR_LEN 4 1220218792Snp#define M_LSO_IPHDR_LEN 0xFFF 1221218792Snp#define V_LSO_IPHDR_LEN(x) ((x) << S_LSO_IPHDR_LEN) 1222218792Snp#define G_LSO_IPHDR_LEN(x) (((x) >> S_LSO_IPHDR_LEN) & M_LSO_IPHDR_LEN) 1223218792Snp 1224218792Snp#define S_LSO_ETHHDR_LEN 16 1225218792Snp#define M_LSO_ETHHDR_LEN 0xF 1226218792Snp#define V_LSO_ETHHDR_LEN(x) ((x) << S_LSO_ETHHDR_LEN) 1227218792Snp#define G_LSO_ETHHDR_LEN(x) (((x) >> S_LSO_ETHHDR_LEN) & M_LSO_ETHHDR_LEN) 1228218792Snp 1229218792Snp#define S_LSO_IPV6 20 1230218792Snp#define V_LSO_IPV6(x) ((x) << S_LSO_IPV6) 1231218792Snp#define F_LSO_IPV6 V_LSO_IPV6(1U) 1232218792Snp 1233218792Snp#define S_LSO_OFLD_ENCAP 21 1234218792Snp#define V_LSO_OFLD_ENCAP(x) ((x) << S_LSO_OFLD_ENCAP) 1235218792Snp#define F_LSO_OFLD_ENCAP V_LSO_OFLD_ENCAP(1U) 1236218792Snp 1237218792Snp#define S_LSO_LAST_SLICE 22 1238218792Snp#define V_LSO_LAST_SLICE(x) ((x) << S_LSO_LAST_SLICE) 1239218792Snp#define F_LSO_LAST_SLICE V_LSO_LAST_SLICE(1U) 1240218792Snp 1241218792Snp#define S_LSO_FIRST_SLICE 23 1242218792Snp#define V_LSO_FIRST_SLICE(x) ((x) << S_LSO_FIRST_SLICE) 1243218792Snp#define F_LSO_FIRST_SLICE V_LSO_FIRST_SLICE(1U) 1244218792Snp 1245218792Snp#define S_LSO_OPCODE 24 1246218792Snp#define M_LSO_OPCODE 0xFF 1247218792Snp#define V_LSO_OPCODE(x) ((x) << S_LSO_OPCODE) 1248218792Snp#define G_LSO_OPCODE(x) (((x) >> S_LSO_OPCODE) & M_LSO_OPCODE) 1249218792Snp 1250248925Snp#define S_LSO_T5_XFER_SIZE 0 1251248925Snp#define M_LSO_T5_XFER_SIZE 0xFFFFFFF 1252248925Snp#define V_LSO_T5_XFER_SIZE(x) ((x) << S_LSO_T5_XFER_SIZE) 1253248925Snp#define G_LSO_T5_XFER_SIZE(x) (((x) >> S_LSO_T5_XFER_SIZE) & M_LSO_T5_XFER_SIZE) 1254248925Snp 1255237436Snp/* cpl_tx_pkt_lso_core.mss fields */ 1256218792Snp#define S_LSO_MSS 0 1257218792Snp#define M_LSO_MSS 0x3FFF 1258218792Snp#define V_LSO_MSS(x) ((x) << S_LSO_MSS) 1259218792Snp#define G_LSO_MSS(x) (((x) >> S_LSO_MSS) & M_LSO_MSS) 1260218792Snp 1261218792Snp#define S_LSO_IPID_SPLIT 15 1262218792Snp#define V_LSO_IPID_SPLIT(x) ((x) << S_LSO_IPID_SPLIT) 1263218792Snp#define F_LSO_IPID_SPLIT V_LSO_IPID_SPLIT(1U) 1264218792Snp 1265237436Snpstruct cpl_tx_pkt_fso { 1266237436Snp WR_HDR; 1267237436Snp __be32 fso_ctrl; 1268237436Snp __be16 seqcnt_ofst; 1269237436Snp __be16 mtu; 1270237436Snp __be32 param_offset; 1271218792Snp __be32 len; 1272237436Snp /* encapsulated CPL (TX_PKT or TX_PKT_XT) follows here */ 1273218792Snp}; 1274218792Snp 1275237436Snp/* cpl_tx_pkt_fso.fso_ctrl fields different from cpl_tx_pkt_lso.lso_ctrl */ 1276237436Snp#define S_FSO_XCHG_CLASS 21 1277237436Snp#define V_FSO_XCHG_CLASS(x) ((x) << S_FSO_XCHG_CLASS) 1278237436Snp#define F_FSO_XCHG_CLASS V_FSO_XCHG_CLASS(1U) 1279218792Snp 1280237436Snp#define S_FSO_INITIATOR 20 1281237436Snp#define V_FSO_INITIATOR(x) ((x) << S_FSO_INITIATOR) 1282237436Snp#define F_FSO_INITIATOR V_FSO_INITIATOR(1U) 1283218792Snp 1284237436Snp#define S_FSO_FCHDR_LEN 12 1285237436Snp#define M_FSO_FCHDR_LEN 0xF 1286237436Snp#define V_FSO_FCHDR_LEN(x) ((x) << S_FSO_FCHDR_LEN) 1287237436Snp#define G_FSO_FCHDR_LEN(x) (((x) >> S_FSO_FCHDR_LEN) & M_FSO_FCHDR_LEN) 1288237436Snp 1289218792Snpstruct cpl_iscsi_hdr_no_rss { 1290218792Snp union opcode_tid ot; 1291218792Snp __be16 pdu_len_ddp; 1292218792Snp __be16 len; 1293218792Snp __be32 seq; 1294218792Snp __be16 urg; 1295218792Snp __u8 rsvd; 1296218792Snp __u8 status; 1297218792Snp}; 1298218792Snp 1299237436Snpstruct cpl_tx_data_iso { 1300237436Snp WR_HDR; 1301237436Snp __be32 iso_ctrl; 1302237436Snp __u8 rsvd; 1303237436Snp __u8 ahs_len; 1304237436Snp __be16 mss; 1305237436Snp __be32 burst_size; 1306237436Snp __be32 len; 1307237436Snp /* encapsulated CPL_TX_DATA follows here */ 1308237436Snp}; 1309237436Snp 1310237436Snp/* cpl_tx_data_iso.iso_ctrl fields different from cpl_tx_pkt_lso.lso_ctrl */ 1311237436Snp#define S_ISO_CPLHDR_LEN 18 1312237436Snp#define M_ISO_CPLHDR_LEN 0xF 1313237436Snp#define V_ISO_CPLHDR_LEN(x) ((x) << S_ISO_CPLHDR_LEN) 1314237436Snp#define G_ISO_CPLHDR_LEN(x) (((x) >> S_ISO_CPLHDR_LEN) & M_ISO_CPLHDR_LEN) 1315237436Snp 1316237436Snp#define S_ISO_HDR_CRC 17 1317237436Snp#define V_ISO_HDR_CRC(x) ((x) << S_ISO_HDR_CRC) 1318237436Snp#define F_ISO_HDR_CRC V_ISO_HDR_CRC(1U) 1319237436Snp 1320237436Snp#define S_ISO_DATA_CRC 16 1321237436Snp#define V_ISO_DATA_CRC(x) ((x) << S_ISO_DATA_CRC) 1322237436Snp#define F_ISO_DATA_CRC V_ISO_DATA_CRC(1U) 1323237436Snp 1324237436Snp#define S_ISO_IMD_DATA_EN 15 1325237436Snp#define V_ISO_IMD_DATA_EN(x) ((x) << S_ISO_IMD_DATA_EN) 1326237436Snp#define F_ISO_IMD_DATA_EN V_ISO_IMD_DATA_EN(1U) 1327237436Snp 1328237436Snp#define S_ISO_PDU_TYPE 13 1329237436Snp#define M_ISO_PDU_TYPE 0x3 1330237436Snp#define V_ISO_PDU_TYPE(x) ((x) << S_ISO_PDU_TYPE) 1331237436Snp#define G_ISO_PDU_TYPE(x) (((x) >> S_ISO_PDU_TYPE) & M_ISO_PDU_TYPE) 1332237436Snp 1333218792Snpstruct cpl_iscsi_hdr { 1334218792Snp RSS_HDR 1335218792Snp union opcode_tid ot; 1336218792Snp __be16 pdu_len_ddp; 1337218792Snp __be16 len; 1338218792Snp __be32 seq; 1339218792Snp __be16 urg; 1340218792Snp __u8 rsvd; 1341218792Snp __u8 status; 1342218792Snp}; 1343218792Snp 1344218792Snp/* cpl_iscsi_hdr.pdu_len_ddp fields */ 1345218792Snp#define S_ISCSI_PDU_LEN 0 1346218792Snp#define M_ISCSI_PDU_LEN 0x7FFF 1347218792Snp#define V_ISCSI_PDU_LEN(x) ((x) << S_ISCSI_PDU_LEN) 1348218792Snp#define G_ISCSI_PDU_LEN(x) (((x) >> S_ISCSI_PDU_LEN) & M_ISCSI_PDU_LEN) 1349218792Snp 1350218792Snp#define S_ISCSI_DDP 15 1351218792Snp#define V_ISCSI_DDP(x) ((x) << S_ISCSI_DDP) 1352218792Snp#define F_ISCSI_DDP V_ISCSI_DDP(1U) 1353218792Snp 1354237436Snpstruct cpl_iscsi_data { 1355237436Snp RSS_HDR 1356237436Snp union opcode_tid ot; 1357237436Snp __u8 rsvd0[2]; 1358237436Snp __be16 len; 1359237436Snp __be32 seq; 1360237436Snp __be16 urg; 1361237436Snp __u8 rsvd1; 1362237436Snp __u8 status; 1363237436Snp}; 1364237436Snp 1365218792Snpstruct cpl_rx_data { 1366218792Snp RSS_HDR 1367218792Snp union opcode_tid ot; 1368218792Snp __be16 rsvd; 1369218792Snp __be16 len; 1370218792Snp __be32 seq; 1371218792Snp __be16 urg; 1372218792Snp#if defined(__LITTLE_ENDIAN_BITFIELD) 1373218792Snp __u8 dack_mode:2; 1374218792Snp __u8 psh:1; 1375218792Snp __u8 heartbeat:1; 1376218792Snp __u8 ddp_off:1; 1377218792Snp __u8 :3; 1378218792Snp#else 1379218792Snp __u8 :3; 1380218792Snp __u8 ddp_off:1; 1381218792Snp __u8 heartbeat:1; 1382218792Snp __u8 psh:1; 1383218792Snp __u8 dack_mode:2; 1384218792Snp#endif 1385218792Snp __u8 status; 1386218792Snp}; 1387218792Snp 1388218792Snpstruct cpl_fcoe_hdr { 1389218792Snp RSS_HDR 1390218792Snp union opcode_tid ot; 1391218792Snp __be16 oxid; 1392218792Snp __be16 len; 1393218792Snp __be32 rctl_fctl; 1394218792Snp __u8 cs_ctl; 1395218792Snp __u8 df_ctl; 1396218792Snp __u8 sof; 1397218792Snp __u8 eof; 1398218792Snp __be16 seq_cnt; 1399218792Snp __u8 seq_id; 1400218792Snp __u8 type; 1401218792Snp __be32 param; 1402218792Snp}; 1403218792Snp 1404237436Snpstruct cpl_fcoe_data { 1405237436Snp RSS_HDR 1406237436Snp union opcode_tid ot; 1407237436Snp __u8 rsvd0[2]; 1408237436Snp __be16 len; 1409237436Snp __be32 seq; 1410237436Snp __u8 rsvd1[3]; 1411237436Snp __u8 status; 1412237436Snp}; 1413237436Snp 1414218792Snpstruct cpl_rx_urg_notify { 1415218792Snp RSS_HDR 1416218792Snp union opcode_tid ot; 1417218792Snp __be32 seq; 1418218792Snp}; 1419218792Snp 1420218792Snpstruct cpl_rx_urg_pkt { 1421218792Snp RSS_HDR 1422218792Snp union opcode_tid ot; 1423218792Snp __be16 rsvd; 1424218792Snp __be16 len; 1425218792Snp}; 1426218792Snp 1427218792Snpstruct cpl_rx_data_ack { 1428218792Snp WR_HDR; 1429218792Snp union opcode_tid ot; 1430218792Snp __be32 credit_dack; 1431218792Snp}; 1432218792Snp 1433239344Snpstruct cpl_rx_data_ack_core { 1434239344Snp union opcode_tid ot; 1435239344Snp __be32 credit_dack; 1436239344Snp}; 1437239344Snp 1438218792Snp/* cpl_rx_data_ack.ack_seq fields */ 1439218792Snp#define S_RX_CREDITS 0 1440218792Snp#define M_RX_CREDITS 0x3FFFFFF 1441218792Snp#define V_RX_CREDITS(x) ((x) << S_RX_CREDITS) 1442218792Snp#define G_RX_CREDITS(x) (((x) >> S_RX_CREDITS) & M_RX_CREDITS) 1443218792Snp 1444218792Snp#define S_RX_MODULATE_TX 26 1445218792Snp#define V_RX_MODULATE_TX(x) ((x) << S_RX_MODULATE_TX) 1446218792Snp#define F_RX_MODULATE_TX V_RX_MODULATE_TX(1U) 1447218792Snp 1448218792Snp#define S_RX_MODULATE_RX 27 1449218792Snp#define V_RX_MODULATE_RX(x) ((x) << S_RX_MODULATE_RX) 1450218792Snp#define F_RX_MODULATE_RX V_RX_MODULATE_RX(1U) 1451218792Snp 1452218792Snp#define S_RX_FORCE_ACK 28 1453218792Snp#define V_RX_FORCE_ACK(x) ((x) << S_RX_FORCE_ACK) 1454218792Snp#define F_RX_FORCE_ACK V_RX_FORCE_ACK(1U) 1455218792Snp 1456218792Snp#define S_RX_DACK_MODE 29 1457218792Snp#define M_RX_DACK_MODE 0x3 1458218792Snp#define V_RX_DACK_MODE(x) ((x) << S_RX_DACK_MODE) 1459218792Snp#define G_RX_DACK_MODE(x) (((x) >> S_RX_DACK_MODE) & M_RX_DACK_MODE) 1460218792Snp 1461218792Snp#define S_RX_DACK_CHANGE 31 1462218792Snp#define V_RX_DACK_CHANGE(x) ((x) << S_RX_DACK_CHANGE) 1463218792Snp#define F_RX_DACK_CHANGE V_RX_DACK_CHANGE(1U) 1464218792Snp 1465218792Snpstruct cpl_rx_ddp_complete { 1466218792Snp RSS_HDR 1467218792Snp union opcode_tid ot; 1468218792Snp __be32 ddp_report; 1469218792Snp __be32 rcv_nxt; 1470218792Snp __be32 rsvd; 1471218792Snp}; 1472218792Snp 1473218792Snpstruct cpl_rx_data_ddp { 1474218792Snp RSS_HDR 1475218792Snp union opcode_tid ot; 1476218792Snp __be16 urg; 1477218792Snp __be16 len; 1478218792Snp __be32 seq; 1479218792Snp union { 1480218792Snp __be32 nxt_seq; 1481218792Snp __be32 ddp_report; 1482218792Snp } u; 1483218792Snp __be32 ulp_crc; 1484218792Snp __be32 ddpvld; 1485218792Snp}; 1486218792Snp 1487237436Snp#define cpl_rx_iscsi_ddp cpl_rx_data_ddp 1488237436Snp 1489218792Snpstruct cpl_rx_fcoe_ddp { 1490218792Snp RSS_HDR 1491218792Snp union opcode_tid ot; 1492218792Snp __be16 rsvd; 1493218792Snp __be16 len; 1494218792Snp __be32 seq; 1495218792Snp __be32 ddp_report; 1496218792Snp __be32 ulp_crc; 1497218792Snp __be32 ddpvld; 1498218792Snp}; 1499218792Snp 1500237436Snpstruct cpl_rx_data_dif { 1501237436Snp RSS_HDR 1502237436Snp union opcode_tid ot; 1503237436Snp __be16 ddp_len; 1504237436Snp __be16 msg_len; 1505237436Snp __be32 seq; 1506237436Snp union { 1507237436Snp __be32 nxt_seq; 1508237436Snp __be32 ddp_report; 1509237436Snp } u; 1510237436Snp __be32 err_vec; 1511237436Snp __be32 ddpvld; 1512237436Snp}; 1513237436Snp 1514237436Snpstruct cpl_rx_iscsi_dif { 1515237436Snp RSS_HDR 1516237436Snp union opcode_tid ot; 1517237436Snp __be16 ddp_len; 1518237436Snp __be16 msg_len; 1519237436Snp __be32 seq; 1520237436Snp union { 1521237436Snp __be32 nxt_seq; 1522237436Snp __be32 ddp_report; 1523237436Snp } u; 1524237436Snp __be32 ulp_crc; 1525237436Snp __be32 ddpvld; 1526237436Snp __u8 rsvd0[8]; 1527237436Snp __be32 err_vec; 1528237436Snp __u8 rsvd1[4]; 1529237436Snp}; 1530237436Snp 1531237436Snpstruct cpl_rx_fcoe_dif { 1532237436Snp RSS_HDR 1533237436Snp union opcode_tid ot; 1534237436Snp __be16 ddp_len; 1535237436Snp __be16 msg_len; 1536237436Snp __be32 seq; 1537237436Snp __be32 ddp_report; 1538237436Snp __be32 err_vec; 1539237436Snp __be32 ddpvld; 1540237436Snp}; 1541237436Snp 1542237436Snp/* cpl_rx_{data,iscsi,fcoe}_{ddp,dif}.ddpvld fields */ 1543218792Snp#define S_DDP_VALID 15 1544218792Snp#define M_DDP_VALID 0x1FFFF 1545218792Snp#define V_DDP_VALID(x) ((x) << S_DDP_VALID) 1546218792Snp#define G_DDP_VALID(x) (((x) >> S_DDP_VALID) & M_DDP_VALID) 1547218792Snp 1548218792Snp#define S_DDP_PPOD_MISMATCH 15 1549218792Snp#define V_DDP_PPOD_MISMATCH(x) ((x) << S_DDP_PPOD_MISMATCH) 1550218792Snp#define F_DDP_PPOD_MISMATCH V_DDP_PPOD_MISMATCH(1U) 1551218792Snp 1552218792Snp#define S_DDP_PDU 16 1553218792Snp#define V_DDP_PDU(x) ((x) << S_DDP_PDU) 1554218792Snp#define F_DDP_PDU V_DDP_PDU(1U) 1555218792Snp 1556218792Snp#define S_DDP_LLIMIT_ERR 17 1557218792Snp#define V_DDP_LLIMIT_ERR(x) ((x) << S_DDP_LLIMIT_ERR) 1558218792Snp#define F_DDP_LLIMIT_ERR V_DDP_LLIMIT_ERR(1U) 1559218792Snp 1560218792Snp#define S_DDP_PPOD_PARITY_ERR 18 1561218792Snp#define V_DDP_PPOD_PARITY_ERR(x) ((x) << S_DDP_PPOD_PARITY_ERR) 1562218792Snp#define F_DDP_PPOD_PARITY_ERR V_DDP_PPOD_PARITY_ERR(1U) 1563218792Snp 1564218792Snp#define S_DDP_PADDING_ERR 19 1565218792Snp#define V_DDP_PADDING_ERR(x) ((x) << S_DDP_PADDING_ERR) 1566218792Snp#define F_DDP_PADDING_ERR V_DDP_PADDING_ERR(1U) 1567218792Snp 1568218792Snp#define S_DDP_HDRCRC_ERR 20 1569218792Snp#define V_DDP_HDRCRC_ERR(x) ((x) << S_DDP_HDRCRC_ERR) 1570218792Snp#define F_DDP_HDRCRC_ERR V_DDP_HDRCRC_ERR(1U) 1571218792Snp 1572218792Snp#define S_DDP_DATACRC_ERR 21 1573218792Snp#define V_DDP_DATACRC_ERR(x) ((x) << S_DDP_DATACRC_ERR) 1574218792Snp#define F_DDP_DATACRC_ERR V_DDP_DATACRC_ERR(1U) 1575218792Snp 1576218792Snp#define S_DDP_INVALID_TAG 22 1577218792Snp#define V_DDP_INVALID_TAG(x) ((x) << S_DDP_INVALID_TAG) 1578218792Snp#define F_DDP_INVALID_TAG V_DDP_INVALID_TAG(1U) 1579218792Snp 1580218792Snp#define S_DDP_ULIMIT_ERR 23 1581218792Snp#define V_DDP_ULIMIT_ERR(x) ((x) << S_DDP_ULIMIT_ERR) 1582218792Snp#define F_DDP_ULIMIT_ERR V_DDP_ULIMIT_ERR(1U) 1583218792Snp 1584218792Snp#define S_DDP_OFFSET_ERR 24 1585218792Snp#define V_DDP_OFFSET_ERR(x) ((x) << S_DDP_OFFSET_ERR) 1586218792Snp#define F_DDP_OFFSET_ERR V_DDP_OFFSET_ERR(1U) 1587218792Snp 1588218792Snp#define S_DDP_COLOR_ERR 25 1589218792Snp#define V_DDP_COLOR_ERR(x) ((x) << S_DDP_COLOR_ERR) 1590218792Snp#define F_DDP_COLOR_ERR V_DDP_COLOR_ERR(1U) 1591218792Snp 1592218792Snp#define S_DDP_TID_MISMATCH 26 1593218792Snp#define V_DDP_TID_MISMATCH(x) ((x) << S_DDP_TID_MISMATCH) 1594218792Snp#define F_DDP_TID_MISMATCH V_DDP_TID_MISMATCH(1U) 1595218792Snp 1596218792Snp#define S_DDP_INVALID_PPOD 27 1597218792Snp#define V_DDP_INVALID_PPOD(x) ((x) << S_DDP_INVALID_PPOD) 1598218792Snp#define F_DDP_INVALID_PPOD V_DDP_INVALID_PPOD(1U) 1599218792Snp 1600218792Snp#define S_DDP_ULP_MODE 28 1601218792Snp#define M_DDP_ULP_MODE 0xF 1602218792Snp#define V_DDP_ULP_MODE(x) ((x) << S_DDP_ULP_MODE) 1603218792Snp#define G_DDP_ULP_MODE(x) (((x) >> S_DDP_ULP_MODE) & M_DDP_ULP_MODE) 1604218792Snp 1605237436Snp/* cpl_rx_{data,iscsi,fcoe}_{ddp,dif}.ddp_report fields */ 1606218792Snp#define S_DDP_OFFSET 0 1607218792Snp#define M_DDP_OFFSET 0xFFFFFF 1608218792Snp#define V_DDP_OFFSET(x) ((x) << S_DDP_OFFSET) 1609218792Snp#define G_DDP_OFFSET(x) (((x) >> S_DDP_OFFSET) & M_DDP_OFFSET) 1610218792Snp 1611218792Snp#define S_DDP_DACK_MODE 24 1612218792Snp#define M_DDP_DACK_MODE 0x3 1613218792Snp#define V_DDP_DACK_MODE(x) ((x) << S_DDP_DACK_MODE) 1614218792Snp#define G_DDP_DACK_MODE(x) (((x) >> S_DDP_DACK_MODE) & M_DDP_DACK_MODE) 1615218792Snp 1616218792Snp#define S_DDP_BUF_IDX 26 1617218792Snp#define V_DDP_BUF_IDX(x) ((x) << S_DDP_BUF_IDX) 1618218792Snp#define F_DDP_BUF_IDX V_DDP_BUF_IDX(1U) 1619218792Snp 1620218792Snp#define S_DDP_URG 27 1621218792Snp#define V_DDP_URG(x) ((x) << S_DDP_URG) 1622218792Snp#define F_DDP_URG V_DDP_URG(1U) 1623218792Snp 1624218792Snp#define S_DDP_PSH 28 1625218792Snp#define V_DDP_PSH(x) ((x) << S_DDP_PSH) 1626218792Snp#define F_DDP_PSH V_DDP_PSH(1U) 1627218792Snp 1628218792Snp#define S_DDP_BUF_COMPLETE 29 1629218792Snp#define V_DDP_BUF_COMPLETE(x) ((x) << S_DDP_BUF_COMPLETE) 1630218792Snp#define F_DDP_BUF_COMPLETE V_DDP_BUF_COMPLETE(1U) 1631218792Snp 1632218792Snp#define S_DDP_BUF_TIMED_OUT 30 1633218792Snp#define V_DDP_BUF_TIMED_OUT(x) ((x) << S_DDP_BUF_TIMED_OUT) 1634218792Snp#define F_DDP_BUF_TIMED_OUT V_DDP_BUF_TIMED_OUT(1U) 1635218792Snp 1636218792Snp#define S_DDP_INV 31 1637218792Snp#define V_DDP_INV(x) ((x) << S_DDP_INV) 1638218792Snp#define F_DDP_INV V_DDP_INV(1U) 1639218792Snp 1640218792Snpstruct cpl_rx_pkt { 1641218792Snp RSS_HDR 1642218792Snp __u8 opcode; 1643218792Snp#if defined(__LITTLE_ENDIAN_BITFIELD) 1644218792Snp __u8 iff:4; 1645218792Snp __u8 csum_calc:1; 1646218792Snp __u8 ipmi_pkt:1; 1647218792Snp __u8 vlan_ex:1; 1648218792Snp __u8 ip_frag:1; 1649218792Snp#else 1650218792Snp __u8 ip_frag:1; 1651218792Snp __u8 vlan_ex:1; 1652218792Snp __u8 ipmi_pkt:1; 1653218792Snp __u8 csum_calc:1; 1654218792Snp __u8 iff:4; 1655218792Snp#endif 1656218792Snp __be16 csum; 1657218792Snp __be16 vlan; 1658218792Snp __be16 len; 1659218792Snp __be32 l2info; 1660218792Snp __be16 hdr_len; 1661218792Snp __be16 err_vec; 1662218792Snp}; 1663218792Snp 1664218792Snp/* rx_pkt.l2info fields */ 1665218792Snp#define S_RX_ETHHDR_LEN 0 1666218792Snp#define M_RX_ETHHDR_LEN 0x1F 1667218792Snp#define V_RX_ETHHDR_LEN(x) ((x) << S_RX_ETHHDR_LEN) 1668218792Snp#define G_RX_ETHHDR_LEN(x) (((x) >> S_RX_ETHHDR_LEN) & M_RX_ETHHDR_LEN) 1669218792Snp 1670237436Snp#define S_RX_T5_ETHHDR_LEN 0 1671237436Snp#define M_RX_T5_ETHHDR_LEN 0x3F 1672237436Snp#define V_RX_T5_ETHHDR_LEN(x) ((x) << S_RX_T5_ETHHDR_LEN) 1673237436Snp#define G_RX_T5_ETHHDR_LEN(x) (((x) >> S_RX_T5_ETHHDR_LEN) & M_RX_T5_ETHHDR_LEN) 1674237436Snp 1675218792Snp#define S_RX_PKTYPE 5 1676218792Snp#define M_RX_PKTYPE 0x7 1677218792Snp#define V_RX_PKTYPE(x) ((x) << S_RX_PKTYPE) 1678218792Snp#define G_RX_PKTYPE(x) (((x) >> S_RX_PKTYPE) & M_RX_PKTYPE) 1679218792Snp 1680237436Snp#define S_RX_T5_DATYPE 6 1681237436Snp#define M_RX_T5_DATYPE 0x3 1682237436Snp#define V_RX_T5_DATYPE(x) ((x) << S_RX_T5_DATYPE) 1683237436Snp#define G_RX_T5_DATYPE(x) (((x) >> S_RX_T5_DATYPE) & M_RX_T5_DATYPE) 1684237436Snp 1685218792Snp#define S_RX_MACIDX 8 1686218792Snp#define M_RX_MACIDX 0x1FF 1687218792Snp#define V_RX_MACIDX(x) ((x) << S_RX_MACIDX) 1688218792Snp#define G_RX_MACIDX(x) (((x) >> S_RX_MACIDX) & M_RX_MACIDX) 1689218792Snp 1690237436Snp#define S_RX_T5_PKTYPE 17 1691237436Snp#define M_RX_T5_PKTYPE 0x7 1692237436Snp#define V_RX_T5_PKTYPE(x) ((x) << S_RX_T5_PKTYPE) 1693237436Snp#define G_RX_T5_PKTYPE(x) (((x) >> S_RX_T5_PKTYPE) & M_RX_T5_PKTYPE) 1694237436Snp 1695218792Snp#define S_RX_DATYPE 18 1696218792Snp#define M_RX_DATYPE 0x3 1697218792Snp#define V_RX_DATYPE(x) ((x) << S_RX_DATYPE) 1698218792Snp#define G_RX_DATYPE(x) (((x) >> S_RX_DATYPE) & M_RX_DATYPE) 1699218792Snp 1700218792Snp#define S_RXF_PSH 20 1701218792Snp#define V_RXF_PSH(x) ((x) << S_RXF_PSH) 1702218792Snp#define F_RXF_PSH V_RXF_PSH(1U) 1703218792Snp 1704218792Snp#define S_RXF_SYN 21 1705218792Snp#define V_RXF_SYN(x) ((x) << S_RXF_SYN) 1706218792Snp#define F_RXF_SYN V_RXF_SYN(1U) 1707218792Snp 1708218792Snp#define S_RXF_UDP 22 1709218792Snp#define V_RXF_UDP(x) ((x) << S_RXF_UDP) 1710218792Snp#define F_RXF_UDP V_RXF_UDP(1U) 1711218792Snp 1712218792Snp#define S_RXF_TCP 23 1713218792Snp#define V_RXF_TCP(x) ((x) << S_RXF_TCP) 1714218792Snp#define F_RXF_TCP V_RXF_TCP(1U) 1715218792Snp 1716218792Snp#define S_RXF_IP 24 1717218792Snp#define V_RXF_IP(x) ((x) << S_RXF_IP) 1718218792Snp#define F_RXF_IP V_RXF_IP(1U) 1719218792Snp 1720218792Snp#define S_RXF_IP6 25 1721218792Snp#define V_RXF_IP6(x) ((x) << S_RXF_IP6) 1722218792Snp#define F_RXF_IP6 V_RXF_IP6(1U) 1723218792Snp 1724218792Snp#define S_RXF_SYN_COOKIE 26 1725218792Snp#define V_RXF_SYN_COOKIE(x) ((x) << S_RXF_SYN_COOKIE) 1726218792Snp#define F_RXF_SYN_COOKIE V_RXF_SYN_COOKIE(1U) 1727218792Snp 1728218792Snp#define S_RXF_FCOE 26 1729218792Snp#define V_RXF_FCOE(x) ((x) << S_RXF_FCOE) 1730218792Snp#define F_RXF_FCOE V_RXF_FCOE(1U) 1731218792Snp 1732218792Snp#define S_RXF_LRO 27 1733218792Snp#define V_RXF_LRO(x) ((x) << S_RXF_LRO) 1734218792Snp#define F_RXF_LRO V_RXF_LRO(1U) 1735218792Snp 1736218792Snp#define S_RX_CHAN 28 1737218792Snp#define M_RX_CHAN 0xF 1738218792Snp#define V_RX_CHAN(x) ((x) << S_RX_CHAN) 1739218792Snp#define G_RX_CHAN(x) (((x) >> S_RX_CHAN) & M_RX_CHAN) 1740218792Snp 1741218792Snp/* rx_pkt.hdr_len fields */ 1742218792Snp#define S_RX_TCPHDR_LEN 0 1743218792Snp#define M_RX_TCPHDR_LEN 0x3F 1744218792Snp#define V_RX_TCPHDR_LEN(x) ((x) << S_RX_TCPHDR_LEN) 1745218792Snp#define G_RX_TCPHDR_LEN(x) (((x) >> S_RX_TCPHDR_LEN) & M_RX_TCPHDR_LEN) 1746218792Snp 1747218792Snp#define S_RX_IPHDR_LEN 6 1748218792Snp#define M_RX_IPHDR_LEN 0x3FF 1749218792Snp#define V_RX_IPHDR_LEN(x) ((x) << S_RX_IPHDR_LEN) 1750218792Snp#define G_RX_IPHDR_LEN(x) (((x) >> S_RX_IPHDR_LEN) & M_RX_IPHDR_LEN) 1751218792Snp 1752218792Snp/* rx_pkt.err_vec fields */ 1753218792Snp#define S_RXERR_OR 0 1754218792Snp#define V_RXERR_OR(x) ((x) << S_RXERR_OR) 1755218792Snp#define F_RXERR_OR V_RXERR_OR(1U) 1756218792Snp 1757218792Snp#define S_RXERR_MAC 1 1758218792Snp#define V_RXERR_MAC(x) ((x) << S_RXERR_MAC) 1759218792Snp#define F_RXERR_MAC V_RXERR_MAC(1U) 1760218792Snp 1761218792Snp#define S_RXERR_IPVERS 2 1762218792Snp#define V_RXERR_IPVERS(x) ((x) << S_RXERR_IPVERS) 1763218792Snp#define F_RXERR_IPVERS V_RXERR_IPVERS(1U) 1764218792Snp 1765218792Snp#define S_RXERR_FRAG 3 1766218792Snp#define V_RXERR_FRAG(x) ((x) << S_RXERR_FRAG) 1767218792Snp#define F_RXERR_FRAG V_RXERR_FRAG(1U) 1768218792Snp 1769218792Snp#define S_RXERR_ATTACK 4 1770218792Snp#define V_RXERR_ATTACK(x) ((x) << S_RXERR_ATTACK) 1771218792Snp#define F_RXERR_ATTACK V_RXERR_ATTACK(1U) 1772218792Snp 1773218792Snp#define S_RXERR_ETHHDR_LEN 5 1774218792Snp#define V_RXERR_ETHHDR_LEN(x) ((x) << S_RXERR_ETHHDR_LEN) 1775218792Snp#define F_RXERR_ETHHDR_LEN V_RXERR_ETHHDR_LEN(1U) 1776218792Snp 1777218792Snp#define S_RXERR_IPHDR_LEN 6 1778218792Snp#define V_RXERR_IPHDR_LEN(x) ((x) << S_RXERR_IPHDR_LEN) 1779218792Snp#define F_RXERR_IPHDR_LEN V_RXERR_IPHDR_LEN(1U) 1780218792Snp 1781218792Snp#define S_RXERR_TCPHDR_LEN 7 1782218792Snp#define V_RXERR_TCPHDR_LEN(x) ((x) << S_RXERR_TCPHDR_LEN) 1783218792Snp#define F_RXERR_TCPHDR_LEN V_RXERR_TCPHDR_LEN(1U) 1784218792Snp 1785218792Snp#define S_RXERR_PKT_LEN 8 1786218792Snp#define V_RXERR_PKT_LEN(x) ((x) << S_RXERR_PKT_LEN) 1787218792Snp#define F_RXERR_PKT_LEN V_RXERR_PKT_LEN(1U) 1788218792Snp 1789218792Snp#define S_RXERR_TCP_OPT 9 1790218792Snp#define V_RXERR_TCP_OPT(x) ((x) << S_RXERR_TCP_OPT) 1791218792Snp#define F_RXERR_TCP_OPT V_RXERR_TCP_OPT(1U) 1792218792Snp 1793218792Snp#define S_RXERR_IPCSUM 12 1794218792Snp#define V_RXERR_IPCSUM(x) ((x) << S_RXERR_IPCSUM) 1795218792Snp#define F_RXERR_IPCSUM V_RXERR_IPCSUM(1U) 1796218792Snp 1797218792Snp#define S_RXERR_CSUM 13 1798218792Snp#define V_RXERR_CSUM(x) ((x) << S_RXERR_CSUM) 1799218792Snp#define F_RXERR_CSUM V_RXERR_CSUM(1U) 1800218792Snp 1801218792Snp#define S_RXERR_PING 14 1802218792Snp#define V_RXERR_PING(x) ((x) << S_RXERR_PING) 1803218792Snp#define F_RXERR_PING V_RXERR_PING(1U) 1804218792Snp 1805218792Snpstruct cpl_trace_pkt { 1806218792Snp RSS_HDR 1807218792Snp __u8 opcode; 1808218792Snp __u8 intf; 1809218792Snp#if defined(__LITTLE_ENDIAN_BITFIELD) 1810218792Snp __u8 runt:4; 1811218792Snp __u8 filter_hit:4; 1812218792Snp __u8 :6; 1813218792Snp __u8 err:1; 1814218792Snp __u8 trunc:1; 1815218792Snp#else 1816218792Snp __u8 filter_hit:4; 1817218792Snp __u8 runt:4; 1818218792Snp __u8 trunc:1; 1819218792Snp __u8 err:1; 1820218792Snp __u8 :6; 1821218792Snp#endif 1822218792Snp __be16 rsvd; 1823218792Snp __be16 len; 1824218792Snp __be64 tstamp; 1825218792Snp}; 1826218792Snp 1827237436Snpstruct cpl_t5_trace_pkt { 1828237436Snp RSS_HDR 1829237436Snp __u8 opcode; 1830237436Snp __u8 intf; 1831237436Snp#if defined(__LITTLE_ENDIAN_BITFIELD) 1832237436Snp __u8 runt:4; 1833237436Snp __u8 filter_hit:4; 1834237436Snp __u8 :6; 1835237436Snp __u8 err:1; 1836237436Snp __u8 trunc:1; 1837237436Snp#else 1838237436Snp __u8 filter_hit:4; 1839237436Snp __u8 runt:4; 1840237436Snp __u8 trunc:1; 1841237436Snp __u8 err:1; 1842237436Snp __u8 :6; 1843237436Snp#endif 1844237436Snp __be16 rsvd; 1845237436Snp __be16 len; 1846237436Snp __be64 tstamp; 1847237436Snp __be64 rsvd1; 1848237436Snp}; 1849237436Snp 1850218792Snpstruct cpl_rte_delete_req { 1851218792Snp WR_HDR; 1852218792Snp union opcode_tid ot; 1853218792Snp __be32 params; 1854218792Snp}; 1855218792Snp 1856218792Snp/* {cpl_rte_delete_req, cpl_rte_read_req}.params fields */ 1857218792Snp#define S_RTE_REQ_LUT_IX 8 1858218792Snp#define M_RTE_REQ_LUT_IX 0x7FF 1859218792Snp#define V_RTE_REQ_LUT_IX(x) ((x) << S_RTE_REQ_LUT_IX) 1860218792Snp#define G_RTE_REQ_LUT_IX(x) (((x) >> S_RTE_REQ_LUT_IX) & M_RTE_REQ_LUT_IX) 1861218792Snp 1862218792Snp#define S_RTE_REQ_LUT_BASE 19 1863218792Snp#define M_RTE_REQ_LUT_BASE 0x7FF 1864218792Snp#define V_RTE_REQ_LUT_BASE(x) ((x) << S_RTE_REQ_LUT_BASE) 1865218792Snp#define G_RTE_REQ_LUT_BASE(x) (((x) >> S_RTE_REQ_LUT_BASE) & M_RTE_REQ_LUT_BASE) 1866218792Snp 1867218792Snp#define S_RTE_READ_REQ_SELECT 31 1868218792Snp#define V_RTE_READ_REQ_SELECT(x) ((x) << S_RTE_READ_REQ_SELECT) 1869218792Snp#define F_RTE_READ_REQ_SELECT V_RTE_READ_REQ_SELECT(1U) 1870218792Snp 1871218792Snpstruct cpl_rte_delete_rpl { 1872218792Snp RSS_HDR 1873218792Snp union opcode_tid ot; 1874218792Snp __u8 status; 1875218792Snp __u8 rsvd[3]; 1876218792Snp}; 1877218792Snp 1878218792Snpstruct cpl_rte_write_req { 1879218792Snp WR_HDR; 1880218792Snp union opcode_tid ot; 1881218792Snp __u32 write_sel; 1882218792Snp __be32 lut_params; 1883218792Snp __be32 l2t_idx; 1884218792Snp __be32 netmask; 1885218792Snp __be32 faddr; 1886218792Snp}; 1887218792Snp 1888218792Snp/* cpl_rte_write_req.write_sel fields */ 1889218792Snp#define S_RTE_WR_L2TIDX 31 1890218792Snp#define V_RTE_WR_L2TIDX(x) ((x) << S_RTE_WR_L2TIDX) 1891218792Snp#define F_RTE_WR_L2TIDX V_RTE_WR_L2TIDX(1U) 1892218792Snp 1893218792Snp#define S_RTE_WR_FADDR 30 1894218792Snp#define V_RTE_WR_FADDR(x) ((x) << S_RTE_WR_FADDR) 1895218792Snp#define F_RTE_WR_FADDR V_RTE_WR_FADDR(1U) 1896218792Snp 1897218792Snp/* cpl_rte_write_req.lut_params fields */ 1898218792Snp#define S_RTE_WR_LUT_IX 10 1899218792Snp#define M_RTE_WR_LUT_IX 0x7FF 1900218792Snp#define V_RTE_WR_LUT_IX(x) ((x) << S_RTE_WR_LUT_IX) 1901218792Snp#define G_RTE_WR_LUT_IX(x) (((x) >> S_RTE_WR_LUT_IX) & M_RTE_WR_LUT_IX) 1902218792Snp 1903218792Snp#define S_RTE_WR_LUT_BASE 21 1904218792Snp#define M_RTE_WR_LUT_BASE 0x7FF 1905218792Snp#define V_RTE_WR_LUT_BASE(x) ((x) << S_RTE_WR_LUT_BASE) 1906218792Snp#define G_RTE_WR_LUT_BASE(x) (((x) >> S_RTE_WR_LUT_BASE) & M_RTE_WR_LUT_BASE) 1907218792Snp 1908218792Snpstruct cpl_rte_write_rpl { 1909218792Snp RSS_HDR 1910218792Snp union opcode_tid ot; 1911218792Snp __u8 status; 1912218792Snp __u8 rsvd[3]; 1913218792Snp}; 1914218792Snp 1915218792Snpstruct cpl_rte_read_req { 1916218792Snp WR_HDR; 1917218792Snp union opcode_tid ot; 1918218792Snp __be32 params; 1919218792Snp}; 1920218792Snp 1921218792Snpstruct cpl_rte_read_rpl { 1922218792Snp RSS_HDR 1923218792Snp union opcode_tid ot; 1924218792Snp __u8 status; 1925218792Snp __u8 rsvd; 1926218792Snp __be16 l2t_idx; 1927218792Snp#if defined(__LITTLE_ENDIAN_BITFIELD) 1928218792Snp __u32 :30; 1929218792Snp __u32 select:1; 1930218792Snp#else 1931218792Snp __u32 select:1; 1932218792Snp __u32 :30; 1933218792Snp#endif 1934218792Snp __be32 addr; 1935218792Snp}; 1936218792Snp 1937218792Snpstruct cpl_l2t_write_req { 1938218792Snp WR_HDR; 1939218792Snp union opcode_tid ot; 1940218792Snp __be16 params; 1941218792Snp __be16 l2t_idx; 1942218792Snp __be16 vlan; 1943218792Snp __u8 dst_mac[6]; 1944218792Snp}; 1945218792Snp 1946218792Snp/* cpl_l2t_write_req.params fields */ 1947218792Snp#define S_L2T_W_INFO 2 1948218792Snp#define M_L2T_W_INFO 0x3F 1949218792Snp#define V_L2T_W_INFO(x) ((x) << S_L2T_W_INFO) 1950218792Snp#define G_L2T_W_INFO(x) (((x) >> S_L2T_W_INFO) & M_L2T_W_INFO) 1951218792Snp 1952218792Snp#define S_L2T_W_PORT 8 1953248925Snp#define M_L2T_W_PORT 0x3 1954218792Snp#define V_L2T_W_PORT(x) ((x) << S_L2T_W_PORT) 1955218792Snp#define G_L2T_W_PORT(x) (((x) >> S_L2T_W_PORT) & M_L2T_W_PORT) 1956218792Snp 1957248925Snp#define S_L2T_W_LPBK 10 1958248925Snp#define V_L2T_W_LPBK(x) ((x) << S_L2T_W_LPBK) 1959248925Snp#define F_L2T_W_PKBK V_L2T_W_LPBK(1U) 1960248925Snp 1961248925Snp#define S_L2T_W_ARPMISS 11 1962248925Snp#define V_L2T_W_ARPMISS(x) ((x) << S_L2T_W_ARPMISS) 1963248925Snp#define F_L2T_W_ARPMISS V_L2T_W_ARPMISS(1U) 1964248925Snp 1965218792Snp#define S_L2T_W_NOREPLY 15 1966218792Snp#define V_L2T_W_NOREPLY(x) ((x) << S_L2T_W_NOREPLY) 1967218792Snp#define F_L2T_W_NOREPLY V_L2T_W_NOREPLY(1U) 1968218792Snp 1969248925Snp#define CPL_L2T_VLAN_NONE 0xfff 1970248925Snp 1971218792Snpstruct cpl_l2t_write_rpl { 1972218792Snp RSS_HDR 1973218792Snp union opcode_tid ot; 1974218792Snp __u8 status; 1975218792Snp __u8 rsvd[3]; 1976218792Snp}; 1977218792Snp 1978218792Snpstruct cpl_l2t_read_req { 1979218792Snp WR_HDR; 1980218792Snp union opcode_tid ot; 1981218792Snp __be32 l2t_idx; 1982218792Snp}; 1983218792Snp 1984218792Snpstruct cpl_l2t_read_rpl { 1985218792Snp RSS_HDR 1986218792Snp union opcode_tid ot; 1987218792Snp __u8 status; 1988218792Snp#if defined(__LITTLE_ENDIAN_BITFIELD) 1989218792Snp __u8 :4; 1990218792Snp __u8 iff:4; 1991218792Snp#else 1992218792Snp __u8 iff:4; 1993218792Snp __u8 :4; 1994218792Snp#endif 1995218792Snp __be16 vlan; 1996218792Snp __be16 info; 1997218792Snp __u8 dst_mac[6]; 1998218792Snp}; 1999218792Snp 2000218792Snpstruct cpl_smt_write_req { 2001218792Snp WR_HDR; 2002218792Snp union opcode_tid ot; 2003218792Snp __be32 params; 2004218792Snp __be16 pfvf1; 2005218792Snp __u8 src_mac1[6]; 2006218792Snp __be16 pfvf0; 2007218792Snp __u8 src_mac0[6]; 2008218792Snp}; 2009218792Snp 2010237436Snpstruct cpl_smt_write_rpl { 2011237436Snp RSS_HDR 2012237436Snp union opcode_tid ot; 2013237436Snp __u8 status; 2014237436Snp __u8 rsvd[3]; 2015237436Snp}; 2016237436Snp 2017237436Snpstruct cpl_smt_read_req { 2018237436Snp WR_HDR; 2019237436Snp union opcode_tid ot; 2020237436Snp __be32 params; 2021237436Snp}; 2022237436Snp 2023237436Snpstruct cpl_smt_read_rpl { 2024237436Snp RSS_HDR 2025237436Snp union opcode_tid ot; 2026237436Snp __u8 status; 2027237436Snp __u8 ovlan_idx; 2028237436Snp __be16 rsvd; 2029237436Snp __be16 pfvf1; 2030237436Snp __u8 src_mac1[6]; 2031237436Snp __be16 pfvf0; 2032237436Snp __u8 src_mac0[6]; 2033237436Snp}; 2034237436Snp 2035218792Snp/* cpl_smt_{read,write}_req.params fields */ 2036218792Snp#define S_SMTW_OVLAN_IDX 16 2037218792Snp#define M_SMTW_OVLAN_IDX 0xF 2038218792Snp#define V_SMTW_OVLAN_IDX(x) ((x) << S_SMTW_OVLAN_IDX) 2039218792Snp#define G_SMTW_OVLAN_IDX(x) (((x) >> S_SMTW_OVLAN_IDX) & M_SMTW_OVLAN_IDX) 2040218792Snp 2041218792Snp#define S_SMTW_IDX 20 2042218792Snp#define M_SMTW_IDX 0x7F 2043218792Snp#define V_SMTW_IDX(x) ((x) << S_SMTW_IDX) 2044218792Snp#define G_SMTW_IDX(x) (((x) >> S_SMTW_IDX) & M_SMTW_IDX) 2045218792Snp 2046218792Snp#define S_SMTW_NORPL 31 2047218792Snp#define V_SMTW_NORPL(x) ((x) << S_SMTW_NORPL) 2048218792Snp#define F_SMTW_NORPL V_SMTW_NORPL(1U) 2049218792Snp 2050218792Snp/* cpl_smt_{read,write}_req.pfvf? fields */ 2051218792Snp#define S_SMTW_VF 0 2052218792Snp#define M_SMTW_VF 0xFF 2053218792Snp#define V_SMTW_VF(x) ((x) << S_SMTW_VF) 2054218792Snp#define G_SMTW_VF(x) (((x) >> S_SMTW_VF) & M_SMTW_VF) 2055218792Snp 2056218792Snp#define S_SMTW_PF 8 2057218792Snp#define M_SMTW_PF 0x7 2058218792Snp#define V_SMTW_PF(x) ((x) << S_SMTW_PF) 2059218792Snp#define G_SMTW_PF(x) (((x) >> S_SMTW_PF) & M_SMTW_PF) 2060218792Snp 2061218792Snp#define S_SMTW_VF_VLD 11 2062218792Snp#define V_SMTW_VF_VLD(x) ((x) << S_SMTW_VF_VLD) 2063218792Snp#define F_SMTW_VF_VLD V_SMTW_VF_VLD(1U) 2064218792Snp 2065237436Snpstruct cpl_tag_write_req { 2066237436Snp WR_HDR; 2067237436Snp union opcode_tid ot; 2068237436Snp __be32 params; 2069237436Snp __be64 tag_val; 2070237436Snp}; 2071237436Snp 2072237436Snpstruct cpl_tag_write_rpl { 2073218792Snp RSS_HDR 2074218792Snp union opcode_tid ot; 2075218792Snp __u8 status; 2076237436Snp __u8 rsvd[2]; 2077237436Snp __u8 idx; 2078218792Snp}; 2079218792Snp 2080237436Snpstruct cpl_tag_read_req { 2081218792Snp WR_HDR; 2082218792Snp union opcode_tid ot; 2083218792Snp __be32 params; 2084218792Snp}; 2085218792Snp 2086237436Snpstruct cpl_tag_read_rpl { 2087218792Snp RSS_HDR 2088218792Snp union opcode_tid ot; 2089218792Snp __u8 status; 2090237436Snp#if defined(__LITTLE_ENDIAN_BITFIELD) 2091237436Snp __u8 :4; 2092237436Snp __u8 tag_len:1; 2093237436Snp __u8 :2; 2094237436Snp __u8 ins_enable:1; 2095237436Snp#else 2096237436Snp __u8 ins_enable:1; 2097237436Snp __u8 :2; 2098237436Snp __u8 tag_len:1; 2099237436Snp __u8 :4; 2100237436Snp#endif 2101237436Snp __u8 rsvd; 2102237436Snp __u8 tag_idx; 2103237436Snp __be64 tag_val; 2104218792Snp}; 2105218792Snp 2106237436Snp/* cpl_tag{read,write}_req.params fields */ 2107237436Snp#define S_TAGW_IDX 0 2108237436Snp#define M_TAGW_IDX 0x7F 2109237436Snp#define V_TAGW_IDX(x) ((x) << S_TAGW_IDX) 2110237436Snp#define G_TAGW_IDX(x) (((x) >> S_TAGW_IDX) & M_TAGW_IDX) 2111237436Snp 2112237436Snp#define S_TAGW_LEN 20 2113237436Snp#define V_TAGW_LEN(x) ((x) << S_TAGW_LEN) 2114237436Snp#define F_TAGW_LEN V_TAGW_LEN(1U) 2115237436Snp 2116237436Snp#define S_TAGW_INS_ENABLE 23 2117237436Snp#define V_TAGW_INS_ENABLE(x) ((x) << S_TAGW_INS_ENABLE) 2118237436Snp#define F_TAGW_INS_ENABLE V_TAGW_INS_ENABLE(1U) 2119237436Snp 2120237436Snp#define S_TAGW_NORPL 31 2121237436Snp#define V_TAGW_NORPL(x) ((x) << S_TAGW_NORPL) 2122237436Snp#define F_TAGW_NORPL V_TAGW_NORPL(1U) 2123237436Snp 2124218792Snpstruct cpl_barrier { 2125218792Snp WR_HDR; 2126218792Snp __u8 opcode; 2127218792Snp __u8 chan_map; 2128218792Snp __be16 rsvd0; 2129218792Snp __be32 rsvd1; 2130218792Snp}; 2131218792Snp 2132218792Snp/* cpl_barrier.chan_map fields */ 2133218792Snp#define S_CHAN_MAP 4 2134218792Snp#define M_CHAN_MAP 0xF 2135218792Snp#define V_CHAN_MAP(x) ((x) << S_CHAN_MAP) 2136218792Snp#define G_CHAN_MAP(x) (((x) >> S_CHAN_MAP) & M_CHAN_MAP) 2137218792Snp 2138218792Snpstruct cpl_error { 2139218792Snp RSS_HDR 2140218792Snp union opcode_tid ot; 2141218792Snp __be32 error; 2142218792Snp}; 2143218792Snp 2144218792Snpstruct cpl_hit_notify { 2145218792Snp RSS_HDR 2146218792Snp union opcode_tid ot; 2147218792Snp __be32 rsvd; 2148218792Snp __be32 info; 2149218792Snp __be32 reason; 2150218792Snp}; 2151218792Snp 2152218792Snpstruct cpl_pkt_notify { 2153218792Snp RSS_HDR 2154218792Snp union opcode_tid ot; 2155218792Snp __be16 rsvd; 2156218792Snp __be16 len; 2157218792Snp __be32 info; 2158218792Snp __be32 reason; 2159218792Snp}; 2160218792Snp 2161218792Snp/* cpl_{hit,pkt}_notify.info fields */ 2162218792Snp#define S_NTFY_MAC_IDX 0 2163218792Snp#define M_NTFY_MAC_IDX 0x1FF 2164218792Snp#define V_NTFY_MAC_IDX(x) ((x) << S_NTFY_MAC_IDX) 2165218792Snp#define G_NTFY_MAC_IDX(x) (((x) >> S_NTFY_MAC_IDX) & M_NTFY_MAC_IDX) 2166218792Snp 2167218792Snp#define S_NTFY_INTF 10 2168218792Snp#define M_NTFY_INTF 0xF 2169218792Snp#define V_NTFY_INTF(x) ((x) << S_NTFY_INTF) 2170218792Snp#define G_NTFY_INTF(x) (((x) >> S_NTFY_INTF) & M_NTFY_INTF) 2171218792Snp 2172218792Snp#define S_NTFY_TCPHDR_LEN 14 2173218792Snp#define M_NTFY_TCPHDR_LEN 0xF 2174218792Snp#define V_NTFY_TCPHDR_LEN(x) ((x) << S_NTFY_TCPHDR_LEN) 2175218792Snp#define G_NTFY_TCPHDR_LEN(x) (((x) >> S_NTFY_TCPHDR_LEN) & M_NTFY_TCPHDR_LEN) 2176218792Snp 2177218792Snp#define S_NTFY_IPHDR_LEN 18 2178218792Snp#define M_NTFY_IPHDR_LEN 0x1FF 2179218792Snp#define V_NTFY_IPHDR_LEN(x) ((x) << S_NTFY_IPHDR_LEN) 2180218792Snp#define G_NTFY_IPHDR_LEN(x) (((x) >> S_NTFY_IPHDR_LEN) & M_NTFY_IPHDR_LEN) 2181218792Snp 2182218792Snp#define S_NTFY_ETHHDR_LEN 27 2183218792Snp#define M_NTFY_ETHHDR_LEN 0x1F 2184218792Snp#define V_NTFY_ETHHDR_LEN(x) ((x) << S_NTFY_ETHHDR_LEN) 2185218792Snp#define G_NTFY_ETHHDR_LEN(x) (((x) >> S_NTFY_ETHHDR_LEN) & M_NTFY_ETHHDR_LEN) 2186218792Snp 2187237436Snp#define S_NTFY_T5_IPHDR_LEN 18 2188237436Snp#define M_NTFY_T5_IPHDR_LEN 0xFF 2189237436Snp#define V_NTFY_T5_IPHDR_LEN(x) ((x) << S_NTFY_T5_IPHDR_LEN) 2190237436Snp#define G_NTFY_T5_IPHDR_LEN(x) (((x) >> S_NTFY_T5_IPHDR_LEN) & M_NTFY_T5_IPHDR_LEN) 2191237436Snp 2192237436Snp#define S_NTFY_T5_ETHHDR_LEN 26 2193237436Snp#define M_NTFY_T5_ETHHDR_LEN 0x3F 2194237436Snp#define V_NTFY_T5_ETHHDR_LEN(x) ((x) << S_NTFY_T5_ETHHDR_LEN) 2195237436Snp#define G_NTFY_T5_ETHHDR_LEN(x) (((x) >> S_NTFY_T5_ETHHDR_LEN) & M_NTFY_T5_ETHHDR_LEN) 2196237436Snp 2197218792Snpstruct cpl_rdma_terminate { 2198218792Snp RSS_HDR 2199218792Snp union opcode_tid ot; 2200218792Snp __be16 rsvd; 2201218792Snp __be16 len; 2202218792Snp}; 2203218792Snp 2204218792Snpstruct cpl_set_le_req { 2205218792Snp WR_HDR; 2206218792Snp union opcode_tid ot; 2207218792Snp __be16 reply_ctrl; 2208218792Snp __be16 params; 2209218792Snp __be64 mask_hi; 2210218792Snp __be64 mask_lo; 2211218792Snp __be64 val_hi; 2212218792Snp __be64 val_lo; 2213218792Snp}; 2214218792Snp 2215218792Snp/* cpl_set_le_req.reply_ctrl additional fields */ 2216218792Snp#define S_LE_REQ_IP6 13 2217218792Snp#define V_LE_REQ_IP6(x) ((x) << S_LE_REQ_IP6) 2218218792Snp#define F_LE_REQ_IP6 V_LE_REQ_IP6(1U) 2219218792Snp 2220218792Snp/* cpl_set_le_req.params fields */ 2221218792Snp#define S_LE_CHAN 0 2222218792Snp#define M_LE_CHAN 0x3 2223218792Snp#define V_LE_CHAN(x) ((x) << S_LE_CHAN) 2224218792Snp#define G_LE_CHAN(x) (((x) >> S_LE_CHAN) & M_LE_CHAN) 2225218792Snp 2226218792Snp#define S_LE_OFFSET 5 2227218792Snp#define M_LE_OFFSET 0x7 2228218792Snp#define V_LE_OFFSET(x) ((x) << S_LE_OFFSET) 2229218792Snp#define G_LE_OFFSET(x) (((x) >> S_LE_OFFSET) & M_LE_OFFSET) 2230218792Snp 2231218792Snp#define S_LE_MORE 8 2232218792Snp#define V_LE_MORE(x) ((x) << S_LE_MORE) 2233218792Snp#define F_LE_MORE V_LE_MORE(1U) 2234218792Snp 2235218792Snp#define S_LE_REQSIZE 9 2236218792Snp#define M_LE_REQSIZE 0x7 2237218792Snp#define V_LE_REQSIZE(x) ((x) << S_LE_REQSIZE) 2238218792Snp#define G_LE_REQSIZE(x) (((x) >> S_LE_REQSIZE) & M_LE_REQSIZE) 2239218792Snp 2240218792Snp#define S_LE_REQCMD 12 2241218792Snp#define M_LE_REQCMD 0xF 2242218792Snp#define V_LE_REQCMD(x) ((x) << S_LE_REQCMD) 2243218792Snp#define G_LE_REQCMD(x) (((x) >> S_LE_REQCMD) & M_LE_REQCMD) 2244218792Snp 2245218792Snpstruct cpl_set_le_rpl { 2246218792Snp RSS_HDR 2247218792Snp union opcode_tid ot; 2248218792Snp __u8 chan; 2249218792Snp __u8 info; 2250218792Snp __be16 len; 2251218792Snp}; 2252218792Snp 2253218792Snp/* cpl_set_le_rpl.info fields */ 2254218792Snp#define S_LE_RSPCMD 0 2255218792Snp#define M_LE_RSPCMD 0xF 2256218792Snp#define V_LE_RSPCMD(x) ((x) << S_LE_RSPCMD) 2257218792Snp#define G_LE_RSPCMD(x) (((x) >> S_LE_RSPCMD) & M_LE_RSPCMD) 2258218792Snp 2259218792Snp#define S_LE_RSPSIZE 4 2260218792Snp#define M_LE_RSPSIZE 0x7 2261218792Snp#define V_LE_RSPSIZE(x) ((x) << S_LE_RSPSIZE) 2262218792Snp#define G_LE_RSPSIZE(x) (((x) >> S_LE_RSPSIZE) & M_LE_RSPSIZE) 2263218792Snp 2264218792Snp#define S_LE_RSPTYPE 7 2265218792Snp#define V_LE_RSPTYPE(x) ((x) << S_LE_RSPTYPE) 2266218792Snp#define F_LE_RSPTYPE V_LE_RSPTYPE(1U) 2267218792Snp 2268218792Snpstruct cpl_sge_egr_update { 2269218792Snp RSS_HDR 2270218792Snp __be32 opcode_qid; 2271218792Snp __be16 cidx; 2272218792Snp __be16 pidx; 2273218792Snp}; 2274218792Snp 2275218792Snp/* cpl_sge_egr_update.ot fields */ 2276218792Snp#define S_EGR_QID 0 2277218792Snp#define M_EGR_QID 0x1FFFF 2278218792Snp#define V_EGR_QID(x) ((x) << S_EGR_QID) 2279218792Snp#define G_EGR_QID(x) (((x) >> S_EGR_QID) & M_EGR_QID) 2280218792Snp 2281247291Snp/* cpl_fw*.type values */ 2282247291Snpenum { 2283247291Snp FW_TYPE_CMD_RPL = 0, 2284247291Snp FW_TYPE_WR_RPL = 1, 2285247291Snp FW_TYPE_CQE = 2, 2286247291Snp FW_TYPE_OFLD_CONNECTION_WR_RPL = 3, 2287247291Snp FW_TYPE_RSSCPL = 4, 2288247291Snp}; 2289247291Snp 2290218792Snpstruct cpl_fw2_pld { 2291218792Snp RSS_HDR 2292218792Snp u8 opcode; 2293218792Snp u8 rsvd[5]; 2294218792Snp __be16 len; 2295218792Snp}; 2296218792Snp 2297218792Snpstruct cpl_fw4_pld { 2298218792Snp RSS_HDR 2299218792Snp u8 opcode; 2300218792Snp u8 rsvd0[3]; 2301218792Snp u8 type; 2302218792Snp u8 rsvd1; 2303218792Snp __be16 len; 2304218792Snp __be64 data; 2305218792Snp __be64 rsvd2; 2306218792Snp}; 2307218792Snp 2308218792Snpstruct cpl_fw6_pld { 2309218792Snp RSS_HDR 2310218792Snp u8 opcode; 2311218792Snp u8 rsvd[5]; 2312218792Snp __be16 len; 2313218792Snp __be64 data[4]; 2314218792Snp}; 2315218792Snp 2316218792Snpstruct cpl_fw2_msg { 2317218792Snp RSS_HDR 2318218792Snp union opcode_info oi; 2319218792Snp}; 2320218792Snp 2321218792Snpstruct cpl_fw4_msg { 2322218792Snp RSS_HDR 2323218792Snp u8 opcode; 2324218792Snp u8 type; 2325218792Snp __be16 rsvd0; 2326218792Snp __be32 rsvd1; 2327218792Snp __be64 data[2]; 2328218792Snp}; 2329218792Snp 2330218792Snpstruct cpl_fw4_ack { 2331218792Snp RSS_HDR 2332218792Snp union opcode_tid ot; 2333218792Snp u8 credits; 2334218792Snp u8 rsvd0[2]; 2335237436Snp u8 flags; 2336218792Snp __be32 snd_nxt; 2337218792Snp __be32 snd_una; 2338218792Snp __be64 rsvd1; 2339218792Snp}; 2340218792Snp 2341237436Snpenum { 2342237436Snp CPL_FW4_ACK_FLAGS_SEQVAL = 0x1, /* seqn valid */ 2343237436Snp CPL_FW4_ACK_FLAGS_CH = 0x2, /* channel change complete */ 2344237436Snp CPL_FW4_ACK_FLAGS_FLOWC = 0x4, /* fw_flowc_wr complete */ 2345237436Snp}; 2346237436Snp 2347218792Snpstruct cpl_fw6_msg { 2348218792Snp RSS_HDR 2349218792Snp u8 opcode; 2350218792Snp u8 type; 2351218792Snp __be16 rsvd0; 2352218792Snp __be32 rsvd1; 2353218792Snp __be64 data[4]; 2354218792Snp}; 2355218792Snp 2356218792Snp/* cpl_fw6_msg.type values */ 2357218792Snpenum { 2358247291Snp FW6_TYPE_CMD_RPL = FW_TYPE_CMD_RPL, 2359247291Snp FW6_TYPE_WR_RPL = FW_TYPE_WR_RPL, 2360247291Snp FW6_TYPE_CQE = FW_TYPE_CQE, 2361247291Snp FW6_TYPE_OFLD_CONNECTION_WR_RPL = FW_TYPE_OFLD_CONNECTION_WR_RPL, 2362247291Snp FW6_TYPE_RSSCPL = FW_TYPE_RSSCPL, 2363239336Snp 2364239336Snp NUM_FW6_TYPES 2365218792Snp}; 2366218792Snp 2367237436Snpstruct cpl_fw6_msg_ofld_connection_wr_rpl { 2368237436Snp __u64 cookie; 2369237436Snp __be32 tid; /* or atid in case of active failure */ 2370237436Snp __u8 t_state; 2371237436Snp __u8 retval; 2372237436Snp __u8 rsvd[2]; 2373237436Snp}; 2374237436Snp 2375218792Snp/* ULP_TX opcodes */ 2376218792Snpenum { 2377218792Snp ULP_TX_MEM_READ = 2, 2378218792Snp ULP_TX_MEM_WRITE = 3, 2379218792Snp ULP_TX_PKT = 4 2380218792Snp}; 2381218792Snp 2382218792Snpenum { 2383218792Snp ULP_TX_SC_NOOP = 0x80, 2384218792Snp ULP_TX_SC_IMM = 0x81, 2385218792Snp ULP_TX_SC_DSGL = 0x82, 2386218792Snp ULP_TX_SC_ISGL = 0x83 2387218792Snp}; 2388218792Snp 2389218792Snp#define S_ULPTX_CMD 24 2390218792Snp#define M_ULPTX_CMD 0xFF 2391218792Snp#define V_ULPTX_CMD(x) ((x) << S_ULPTX_CMD) 2392218792Snp 2393218792Snp#define S_ULPTX_LEN16 0 2394218792Snp#define M_ULPTX_LEN16 0xFF 2395218792Snp#define V_ULPTX_LEN16(x) ((x) << S_ULPTX_LEN16) 2396218792Snp 2397218792Snp#define S_ULP_TX_SC_MORE 23 2398218792Snp#define V_ULP_TX_SC_MORE(x) ((x) << S_ULP_TX_SC_MORE) 2399218792Snp#define F_ULP_TX_SC_MORE V_ULP_TX_SC_MORE(1U) 2400218792Snp 2401218792Snpstruct ulptx_sge_pair { 2402218792Snp __be32 len[2]; 2403218792Snp __be64 addr[2]; 2404218792Snp}; 2405218792Snp 2406218792Snpstruct ulptx_sgl { 2407218792Snp __be32 cmd_nsge; 2408218792Snp __be32 len0; 2409218792Snp __be64 addr0; 2410218792Snp#if !(defined C99_NOT_SUPPORTED) 2411218792Snp struct ulptx_sge_pair sge[0]; 2412218792Snp#endif 2413218792Snp}; 2414218792Snp 2415218792Snpstruct ulptx_isge { 2416218792Snp __be32 stag; 2417218792Snp __be32 len; 2418218792Snp __be64 target_ofst; 2419218792Snp}; 2420218792Snp 2421218792Snpstruct ulptx_isgl { 2422218792Snp __be32 cmd_nisge; 2423218792Snp __be32 rsvd; 2424218792Snp#if !(defined C99_NOT_SUPPORTED) 2425218792Snp struct ulptx_isge sge[0]; 2426218792Snp#endif 2427218792Snp}; 2428218792Snp 2429218792Snpstruct ulptx_idata { 2430218792Snp __be32 cmd_more; 2431218792Snp __be32 len; 2432218792Snp}; 2433218792Snp 2434218792Snp#define S_ULPTX_NSGE 0 2435218792Snp#define M_ULPTX_NSGE 0xFFFF 2436218792Snp#define V_ULPTX_NSGE(x) ((x) << S_ULPTX_NSGE) 2437218792Snp 2438218792Snpstruct ulp_mem_io { 2439218792Snp WR_HDR; 2440218792Snp __be32 cmd; 2441218792Snp __be32 len16; /* command length */ 2442218792Snp __be32 dlen; /* data length in 32-byte units */ 2443218792Snp __be32 lock_addr; 2444218792Snp}; 2445218792Snp 2446218792Snp/* additional ulp_mem_io.cmd fields */ 2447218792Snp#define S_ULP_MEMIO_ORDER 23 2448218792Snp#define V_ULP_MEMIO_ORDER(x) ((x) << S_ULP_MEMIO_ORDER) 2449218792Snp#define F_ULP_MEMIO_ORDER V_ULP_MEMIO_ORDER(1U) 2450218792Snp 2451248925Snp#define S_T5_ULP_MEMIO_IMM 23 2452248925Snp#define V_T5_ULP_MEMIO_IMM(x) ((x) << S_T5_ULP_MEMIO_IMM) 2453248925Snp#define F_T5_ULP_MEMIO_IMM V_T5_ULP_MEMIO_IMM(1U) 2454248925Snp 2455248925Snp#define S_T5_ULP_MEMIO_ORDER 22 2456248925Snp#define V_T5_ULP_MEMIO_ORDER(x) ((x) << S_T5_ULP_MEMIO_ORDER) 2457248925Snp#define F_T5_ULP_MEMIO_ORDER V_T5_ULP_MEMIO_ORDER(1U) 2458248925Snp 2459218792Snp/* ulp_mem_io.lock_addr fields */ 2460218792Snp#define S_ULP_MEMIO_ADDR 0 2461218792Snp#define M_ULP_MEMIO_ADDR 0x7FFFFFF 2462218792Snp#define V_ULP_MEMIO_ADDR(x) ((x) << S_ULP_MEMIO_ADDR) 2463218792Snp 2464218792Snp#define S_ULP_MEMIO_LOCK 31 2465218792Snp#define V_ULP_MEMIO_LOCK(x) ((x) << S_ULP_MEMIO_LOCK) 2466218792Snp#define F_ULP_MEMIO_LOCK V_ULP_MEMIO_LOCK(1U) 2467218792Snp 2468218792Snp/* ulp_mem_io.dlen fields */ 2469218792Snp#define S_ULP_MEMIO_DATA_LEN 0 2470218792Snp#define M_ULP_MEMIO_DATA_LEN 0x1F 2471218792Snp#define V_ULP_MEMIO_DATA_LEN(x) ((x) << S_ULP_MEMIO_DATA_LEN) 2472218792Snp 2473248925Snp/* ULP_TXPKT field values */ 2474248925Snpenum { 2475248925Snp ULP_TXPKT_DEST_TP = 0, 2476248925Snp ULP_TXPKT_DEST_SGE, 2477248925Snp ULP_TXPKT_DEST_UP, 2478248925Snp ULP_TXPKT_DEST_DEVNULL, 2479248925Snp}; 2480248925Snp 2481218792Snpstruct ulp_txpkt { 2482218792Snp __be32 cmd_dest; 2483218792Snp __be32 len; 2484218792Snp}; 2485218792Snp 2486218792Snp/* ulp_txpkt.cmd_dest fields */ 2487218792Snp#define S_ULP_TXPKT_DEST 16 2488218792Snp#define M_ULP_TXPKT_DEST 0x3 2489218792Snp#define V_ULP_TXPKT_DEST(x) ((x) << S_ULP_TXPKT_DEST) 2490218792Snp 2491218792Snp#define S_ULP_TXPKT_FID 4 2492218792Snp#define M_ULP_TXPKT_FID 0x7ff 2493218792Snp#define V_ULP_TXPKT_FID(x) ((x) << S_ULP_TXPKT_FID) 2494218792Snp 2495237436Snp#define S_ULP_TXPKT_RO 3 2496237436Snp#define V_ULP_TXPKT_RO(x) ((x) << S_ULP_TXPKT_RO) 2497237436Snp#define F_ULP_TXPKT_RO V_ULP_TXPKT_RO(1U) 2498237436Snp 2499218792Snp#endif /* T4_MSG_H */ 2500