162306a36Sopenharmony_ci/* 262306a36Sopenharmony_ci * Copyright (c) 2004-2008 Chelsio, Inc. All rights reserved. 362306a36Sopenharmony_ci * 462306a36Sopenharmony_ci * This software is available to you under a choice of one of two 562306a36Sopenharmony_ci * licenses. You may choose to be licensed under the terms of the GNU 662306a36Sopenharmony_ci * General Public License (GPL) Version 2, available from the file 762306a36Sopenharmony_ci * COPYING in the main directory of this source tree, or the 862306a36Sopenharmony_ci * OpenIB.org BSD license below: 962306a36Sopenharmony_ci * 1062306a36Sopenharmony_ci * Redistribution and use in source and binary forms, with or 1162306a36Sopenharmony_ci * without modification, are permitted provided that the following 1262306a36Sopenharmony_ci * conditions are met: 1362306a36Sopenharmony_ci * 1462306a36Sopenharmony_ci * - Redistributions of source code must retain the above 1562306a36Sopenharmony_ci * copyright notice, this list of conditions and the following 1662306a36Sopenharmony_ci * disclaimer. 1762306a36Sopenharmony_ci * 1862306a36Sopenharmony_ci * - Redistributions in binary form must reproduce the above 1962306a36Sopenharmony_ci * copyright notice, this list of conditions and the following 2062306a36Sopenharmony_ci * disclaimer in the documentation and/or other materials 2162306a36Sopenharmony_ci * provided with the distribution. 2262306a36Sopenharmony_ci * 2362306a36Sopenharmony_ci * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 2462306a36Sopenharmony_ci * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 2562306a36Sopenharmony_ci * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 2662306a36Sopenharmony_ci * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 2762306a36Sopenharmony_ci * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 2862306a36Sopenharmony_ci * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 2962306a36Sopenharmony_ci * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 3062306a36Sopenharmony_ci * SOFTWARE. 3162306a36Sopenharmony_ci */ 3262306a36Sopenharmony_ci#ifndef T3_CPL_H 3362306a36Sopenharmony_ci#define T3_CPL_H 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci#if !defined(__LITTLE_ENDIAN_BITFIELD) && !defined(__BIG_ENDIAN_BITFIELD) 3662306a36Sopenharmony_ci# include <asm/byteorder.h> 3762306a36Sopenharmony_ci#endif 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_cienum CPL_opcode { 4062306a36Sopenharmony_ci CPL_PASS_OPEN_REQ = 0x1, 4162306a36Sopenharmony_ci CPL_PASS_ACCEPT_RPL = 0x2, 4262306a36Sopenharmony_ci CPL_ACT_OPEN_REQ = 0x3, 4362306a36Sopenharmony_ci CPL_SET_TCB = 0x4, 4462306a36Sopenharmony_ci CPL_SET_TCB_FIELD = 0x5, 4562306a36Sopenharmony_ci CPL_GET_TCB = 0x6, 4662306a36Sopenharmony_ci CPL_PCMD = 0x7, 4762306a36Sopenharmony_ci CPL_CLOSE_CON_REQ = 0x8, 4862306a36Sopenharmony_ci CPL_CLOSE_LISTSRV_REQ = 0x9, 4962306a36Sopenharmony_ci CPL_ABORT_REQ = 0xA, 5062306a36Sopenharmony_ci CPL_ABORT_RPL = 0xB, 5162306a36Sopenharmony_ci CPL_TX_DATA = 0xC, 5262306a36Sopenharmony_ci CPL_RX_DATA_ACK = 0xD, 5362306a36Sopenharmony_ci CPL_TX_PKT = 0xE, 5462306a36Sopenharmony_ci CPL_RTE_DELETE_REQ = 0xF, 5562306a36Sopenharmony_ci CPL_RTE_WRITE_REQ = 0x10, 5662306a36Sopenharmony_ci CPL_RTE_READ_REQ = 0x11, 5762306a36Sopenharmony_ci CPL_L2T_WRITE_REQ = 0x12, 5862306a36Sopenharmony_ci CPL_L2T_READ_REQ = 0x13, 5962306a36Sopenharmony_ci CPL_SMT_WRITE_REQ = 0x14, 6062306a36Sopenharmony_ci CPL_SMT_READ_REQ = 0x15, 6162306a36Sopenharmony_ci CPL_TX_PKT_LSO = 0x16, 6262306a36Sopenharmony_ci CPL_PCMD_READ = 0x17, 6362306a36Sopenharmony_ci CPL_BARRIER = 0x18, 6462306a36Sopenharmony_ci CPL_TID_RELEASE = 0x1A, 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci CPL_CLOSE_LISTSRV_RPL = 0x20, 6762306a36Sopenharmony_ci CPL_ERROR = 0x21, 6862306a36Sopenharmony_ci CPL_GET_TCB_RPL = 0x22, 6962306a36Sopenharmony_ci CPL_L2T_WRITE_RPL = 0x23, 7062306a36Sopenharmony_ci CPL_PCMD_READ_RPL = 0x24, 7162306a36Sopenharmony_ci CPL_PCMD_RPL = 0x25, 7262306a36Sopenharmony_ci CPL_PEER_CLOSE = 0x26, 7362306a36Sopenharmony_ci CPL_RTE_DELETE_RPL = 0x27, 7462306a36Sopenharmony_ci CPL_RTE_WRITE_RPL = 0x28, 7562306a36Sopenharmony_ci CPL_RX_DDP_COMPLETE = 0x29, 7662306a36Sopenharmony_ci CPL_RX_PHYS_ADDR = 0x2A, 7762306a36Sopenharmony_ci CPL_RX_PKT = 0x2B, 7862306a36Sopenharmony_ci CPL_RX_URG_NOTIFY = 0x2C, 7962306a36Sopenharmony_ci CPL_SET_TCB_RPL = 0x2D, 8062306a36Sopenharmony_ci CPL_SMT_WRITE_RPL = 0x2E, 8162306a36Sopenharmony_ci CPL_TX_DATA_ACK = 0x2F, 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_ci CPL_ABORT_REQ_RSS = 0x30, 8462306a36Sopenharmony_ci CPL_ABORT_RPL_RSS = 0x31, 8562306a36Sopenharmony_ci CPL_CLOSE_CON_RPL = 0x32, 8662306a36Sopenharmony_ci CPL_ISCSI_HDR = 0x33, 8762306a36Sopenharmony_ci CPL_L2T_READ_RPL = 0x34, 8862306a36Sopenharmony_ci CPL_RDMA_CQE = 0x35, 8962306a36Sopenharmony_ci CPL_RDMA_CQE_READ_RSP = 0x36, 9062306a36Sopenharmony_ci CPL_RDMA_CQE_ERR = 0x37, 9162306a36Sopenharmony_ci CPL_RTE_READ_RPL = 0x38, 9262306a36Sopenharmony_ci CPL_RX_DATA = 0x39, 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_ci CPL_ACT_OPEN_RPL = 0x40, 9562306a36Sopenharmony_ci CPL_PASS_OPEN_RPL = 0x41, 9662306a36Sopenharmony_ci CPL_RX_DATA_DDP = 0x42, 9762306a36Sopenharmony_ci CPL_SMT_READ_RPL = 0x43, 9862306a36Sopenharmony_ci 9962306a36Sopenharmony_ci CPL_ACT_ESTABLISH = 0x50, 10062306a36Sopenharmony_ci CPL_PASS_ESTABLISH = 0x51, 10162306a36Sopenharmony_ci 10262306a36Sopenharmony_ci CPL_PASS_ACCEPT_REQ = 0x70, 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_ci CPL_ASYNC_NOTIF = 0x80, /* fake opcode for async notifications */ 10562306a36Sopenharmony_ci 10662306a36Sopenharmony_ci CPL_TX_DMA_ACK = 0xA0, 10762306a36Sopenharmony_ci CPL_RDMA_READ_REQ = 0xA1, 10862306a36Sopenharmony_ci CPL_RDMA_TERMINATE = 0xA2, 10962306a36Sopenharmony_ci CPL_TRACE_PKT = 0xA3, 11062306a36Sopenharmony_ci CPL_RDMA_EC_STATUS = 0xA5, 11162306a36Sopenharmony_ci 11262306a36Sopenharmony_ci NUM_CPL_CMDS /* must be last and previous entries must be sorted */ 11362306a36Sopenharmony_ci}; 11462306a36Sopenharmony_ci 11562306a36Sopenharmony_cienum CPL_error { 11662306a36Sopenharmony_ci CPL_ERR_NONE = 0, 11762306a36Sopenharmony_ci CPL_ERR_TCAM_PARITY = 1, 11862306a36Sopenharmony_ci CPL_ERR_TCAM_FULL = 3, 11962306a36Sopenharmony_ci CPL_ERR_CONN_RESET = 20, 12062306a36Sopenharmony_ci CPL_ERR_CONN_EXIST = 22, 12162306a36Sopenharmony_ci CPL_ERR_ARP_MISS = 23, 12262306a36Sopenharmony_ci CPL_ERR_BAD_SYN = 24, 12362306a36Sopenharmony_ci CPL_ERR_CONN_TIMEDOUT = 30, 12462306a36Sopenharmony_ci CPL_ERR_XMIT_TIMEDOUT = 31, 12562306a36Sopenharmony_ci CPL_ERR_PERSIST_TIMEDOUT = 32, 12662306a36Sopenharmony_ci CPL_ERR_FINWAIT2_TIMEDOUT = 33, 12762306a36Sopenharmony_ci CPL_ERR_KEEPALIVE_TIMEDOUT = 34, 12862306a36Sopenharmony_ci CPL_ERR_RTX_NEG_ADVICE = 35, 12962306a36Sopenharmony_ci CPL_ERR_PERSIST_NEG_ADVICE = 36, 13062306a36Sopenharmony_ci CPL_ERR_ABORT_FAILED = 42, 13162306a36Sopenharmony_ci CPL_ERR_GENERAL = 99 13262306a36Sopenharmony_ci}; 13362306a36Sopenharmony_ci 13462306a36Sopenharmony_cienum { 13562306a36Sopenharmony_ci CPL_CONN_POLICY_AUTO = 0, 13662306a36Sopenharmony_ci CPL_CONN_POLICY_ASK = 1, 13762306a36Sopenharmony_ci CPL_CONN_POLICY_DENY = 3 13862306a36Sopenharmony_ci}; 13962306a36Sopenharmony_ci 14062306a36Sopenharmony_cienum { 14162306a36Sopenharmony_ci ULP_MODE_NONE = 0, 14262306a36Sopenharmony_ci ULP_MODE_ISCSI = 2, 14362306a36Sopenharmony_ci ULP_MODE_RDMA = 4, 14462306a36Sopenharmony_ci ULP_MODE_TCPDDP = 5 14562306a36Sopenharmony_ci}; 14662306a36Sopenharmony_ci 14762306a36Sopenharmony_cienum { 14862306a36Sopenharmony_ci ULP_CRC_HEADER = 1 << 0, 14962306a36Sopenharmony_ci ULP_CRC_DATA = 1 << 1 15062306a36Sopenharmony_ci}; 15162306a36Sopenharmony_ci 15262306a36Sopenharmony_cienum { 15362306a36Sopenharmony_ci CPL_PASS_OPEN_ACCEPT, 15462306a36Sopenharmony_ci CPL_PASS_OPEN_REJECT 15562306a36Sopenharmony_ci}; 15662306a36Sopenharmony_ci 15762306a36Sopenharmony_cienum { 15862306a36Sopenharmony_ci CPL_ABORT_SEND_RST = 0, 15962306a36Sopenharmony_ci CPL_ABORT_NO_RST, 16062306a36Sopenharmony_ci CPL_ABORT_POST_CLOSE_REQ = 2 16162306a36Sopenharmony_ci}; 16262306a36Sopenharmony_ci 16362306a36Sopenharmony_cienum { /* TX_PKT_LSO ethernet types */ 16462306a36Sopenharmony_ci CPL_ETH_II, 16562306a36Sopenharmony_ci CPL_ETH_II_VLAN, 16662306a36Sopenharmony_ci CPL_ETH_802_3, 16762306a36Sopenharmony_ci CPL_ETH_802_3_VLAN 16862306a36Sopenharmony_ci}; 16962306a36Sopenharmony_ci 17062306a36Sopenharmony_cienum { /* TCP congestion control algorithms */ 17162306a36Sopenharmony_ci CONG_ALG_RENO, 17262306a36Sopenharmony_ci CONG_ALG_TAHOE, 17362306a36Sopenharmony_ci CONG_ALG_NEWRENO, 17462306a36Sopenharmony_ci CONG_ALG_HIGHSPEED 17562306a36Sopenharmony_ci}; 17662306a36Sopenharmony_ci 17762306a36Sopenharmony_cienum { /* RSS hash type */ 17862306a36Sopenharmony_ci RSS_HASH_NONE = 0, 17962306a36Sopenharmony_ci RSS_HASH_2_TUPLE = 1, 18062306a36Sopenharmony_ci RSS_HASH_4_TUPLE = 2, 18162306a36Sopenharmony_ci RSS_HASH_TCPV6 = 3 18262306a36Sopenharmony_ci}; 18362306a36Sopenharmony_ci 18462306a36Sopenharmony_ciunion opcode_tid { 18562306a36Sopenharmony_ci __be32 opcode_tid; 18662306a36Sopenharmony_ci __u8 opcode; 18762306a36Sopenharmony_ci}; 18862306a36Sopenharmony_ci 18962306a36Sopenharmony_ci#define S_OPCODE 24 19062306a36Sopenharmony_ci#define V_OPCODE(x) ((x) << S_OPCODE) 19162306a36Sopenharmony_ci#define G_OPCODE(x) (((x) >> S_OPCODE) & 0xFF) 19262306a36Sopenharmony_ci#define G_TID(x) ((x) & 0xFFFFFF) 19362306a36Sopenharmony_ci 19462306a36Sopenharmony_ci#define S_QNUM 0 19562306a36Sopenharmony_ci#define G_QNUM(x) (((x) >> S_QNUM) & 0xFFFF) 19662306a36Sopenharmony_ci 19762306a36Sopenharmony_ci#define S_HASHTYPE 22 19862306a36Sopenharmony_ci#define M_HASHTYPE 0x3 19962306a36Sopenharmony_ci#define G_HASHTYPE(x) (((x) >> S_HASHTYPE) & M_HASHTYPE) 20062306a36Sopenharmony_ci 20162306a36Sopenharmony_ci/* tid is assumed to be 24-bits */ 20262306a36Sopenharmony_ci#define MK_OPCODE_TID(opcode, tid) (V_OPCODE(opcode) | (tid)) 20362306a36Sopenharmony_ci 20462306a36Sopenharmony_ci#define OPCODE_TID(cmd) ((cmd)->ot.opcode_tid) 20562306a36Sopenharmony_ci 20662306a36Sopenharmony_ci/* extract the TID from a CPL command */ 20762306a36Sopenharmony_ci#define GET_TID(cmd) (G_TID(ntohl(OPCODE_TID(cmd)))) 20862306a36Sopenharmony_ci 20962306a36Sopenharmony_cistruct tcp_options { 21062306a36Sopenharmony_ci __be16 mss; 21162306a36Sopenharmony_ci __u8 wsf; 21262306a36Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD) 21362306a36Sopenharmony_ci __u8:5; 21462306a36Sopenharmony_ci __u8 ecn:1; 21562306a36Sopenharmony_ci __u8 sack:1; 21662306a36Sopenharmony_ci __u8 tstamp:1; 21762306a36Sopenharmony_ci#else 21862306a36Sopenharmony_ci __u8 tstamp:1; 21962306a36Sopenharmony_ci __u8 sack:1; 22062306a36Sopenharmony_ci __u8 ecn:1; 22162306a36Sopenharmony_ci __u8:5; 22262306a36Sopenharmony_ci#endif 22362306a36Sopenharmony_ci}; 22462306a36Sopenharmony_ci 22562306a36Sopenharmony_cistruct rss_header { 22662306a36Sopenharmony_ci __u8 opcode; 22762306a36Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD) 22862306a36Sopenharmony_ci __u8 cpu_idx:6; 22962306a36Sopenharmony_ci __u8 hash_type:2; 23062306a36Sopenharmony_ci#else 23162306a36Sopenharmony_ci __u8 hash_type:2; 23262306a36Sopenharmony_ci __u8 cpu_idx:6; 23362306a36Sopenharmony_ci#endif 23462306a36Sopenharmony_ci __be16 cq_idx; 23562306a36Sopenharmony_ci __be32 rss_hash_val; 23662306a36Sopenharmony_ci}; 23762306a36Sopenharmony_ci 23862306a36Sopenharmony_ci#ifndef CHELSIO_FW 23962306a36Sopenharmony_cistruct work_request_hdr { 24062306a36Sopenharmony_ci __be32 wr_hi; 24162306a36Sopenharmony_ci __be32 wr_lo; 24262306a36Sopenharmony_ci}; 24362306a36Sopenharmony_ci 24462306a36Sopenharmony_ci/* wr_hi fields */ 24562306a36Sopenharmony_ci#define S_WR_SGE_CREDITS 0 24662306a36Sopenharmony_ci#define M_WR_SGE_CREDITS 0xFF 24762306a36Sopenharmony_ci#define V_WR_SGE_CREDITS(x) ((x) << S_WR_SGE_CREDITS) 24862306a36Sopenharmony_ci#define G_WR_SGE_CREDITS(x) (((x) >> S_WR_SGE_CREDITS) & M_WR_SGE_CREDITS) 24962306a36Sopenharmony_ci 25062306a36Sopenharmony_ci#define S_WR_SGLSFLT 8 25162306a36Sopenharmony_ci#define M_WR_SGLSFLT 0xFF 25262306a36Sopenharmony_ci#define V_WR_SGLSFLT(x) ((x) << S_WR_SGLSFLT) 25362306a36Sopenharmony_ci#define G_WR_SGLSFLT(x) (((x) >> S_WR_SGLSFLT) & M_WR_SGLSFLT) 25462306a36Sopenharmony_ci 25562306a36Sopenharmony_ci#define S_WR_BCNTLFLT 16 25662306a36Sopenharmony_ci#define M_WR_BCNTLFLT 0xF 25762306a36Sopenharmony_ci#define V_WR_BCNTLFLT(x) ((x) << S_WR_BCNTLFLT) 25862306a36Sopenharmony_ci#define G_WR_BCNTLFLT(x) (((x) >> S_WR_BCNTLFLT) & M_WR_BCNTLFLT) 25962306a36Sopenharmony_ci 26062306a36Sopenharmony_ci#define S_WR_DATATYPE 20 26162306a36Sopenharmony_ci#define V_WR_DATATYPE(x) ((x) << S_WR_DATATYPE) 26262306a36Sopenharmony_ci#define F_WR_DATATYPE V_WR_DATATYPE(1U) 26362306a36Sopenharmony_ci 26462306a36Sopenharmony_ci#define S_WR_COMPL 21 26562306a36Sopenharmony_ci#define V_WR_COMPL(x) ((x) << S_WR_COMPL) 26662306a36Sopenharmony_ci#define F_WR_COMPL V_WR_COMPL(1U) 26762306a36Sopenharmony_ci 26862306a36Sopenharmony_ci#define S_WR_EOP 22 26962306a36Sopenharmony_ci#define V_WR_EOP(x) ((x) << S_WR_EOP) 27062306a36Sopenharmony_ci#define F_WR_EOP V_WR_EOP(1U) 27162306a36Sopenharmony_ci 27262306a36Sopenharmony_ci#define S_WR_SOP 23 27362306a36Sopenharmony_ci#define V_WR_SOP(x) ((x) << S_WR_SOP) 27462306a36Sopenharmony_ci#define F_WR_SOP V_WR_SOP(1U) 27562306a36Sopenharmony_ci 27662306a36Sopenharmony_ci#define S_WR_OP 24 27762306a36Sopenharmony_ci#define M_WR_OP 0xFF 27862306a36Sopenharmony_ci#define V_WR_OP(x) ((x) << S_WR_OP) 27962306a36Sopenharmony_ci#define G_WR_OP(x) (((x) >> S_WR_OP) & M_WR_OP) 28062306a36Sopenharmony_ci 28162306a36Sopenharmony_ci/* wr_lo fields */ 28262306a36Sopenharmony_ci#define S_WR_LEN 0 28362306a36Sopenharmony_ci#define M_WR_LEN 0xFF 28462306a36Sopenharmony_ci#define V_WR_LEN(x) ((x) << S_WR_LEN) 28562306a36Sopenharmony_ci#define G_WR_LEN(x) (((x) >> S_WR_LEN) & M_WR_LEN) 28662306a36Sopenharmony_ci 28762306a36Sopenharmony_ci#define S_WR_TID 8 28862306a36Sopenharmony_ci#define M_WR_TID 0xFFFFF 28962306a36Sopenharmony_ci#define V_WR_TID(x) ((x) << S_WR_TID) 29062306a36Sopenharmony_ci#define G_WR_TID(x) (((x) >> S_WR_TID) & M_WR_TID) 29162306a36Sopenharmony_ci 29262306a36Sopenharmony_ci#define S_WR_CR_FLUSH 30 29362306a36Sopenharmony_ci#define V_WR_CR_FLUSH(x) ((x) << S_WR_CR_FLUSH) 29462306a36Sopenharmony_ci#define F_WR_CR_FLUSH V_WR_CR_FLUSH(1U) 29562306a36Sopenharmony_ci 29662306a36Sopenharmony_ci#define S_WR_GEN 31 29762306a36Sopenharmony_ci#define V_WR_GEN(x) ((x) << S_WR_GEN) 29862306a36Sopenharmony_ci#define F_WR_GEN V_WR_GEN(1U) 29962306a36Sopenharmony_ci 30062306a36Sopenharmony_ci# define WR_HDR struct work_request_hdr wr 30162306a36Sopenharmony_ci# define RSS_HDR 30262306a36Sopenharmony_ci#else 30362306a36Sopenharmony_ci# define WR_HDR 30462306a36Sopenharmony_ci# define RSS_HDR struct rss_header rss_hdr; 30562306a36Sopenharmony_ci#endif 30662306a36Sopenharmony_ci 30762306a36Sopenharmony_ci/* option 0 lower-half fields */ 30862306a36Sopenharmony_ci#define S_CPL_STATUS 0 30962306a36Sopenharmony_ci#define M_CPL_STATUS 0xFF 31062306a36Sopenharmony_ci#define V_CPL_STATUS(x) ((x) << S_CPL_STATUS) 31162306a36Sopenharmony_ci#define G_CPL_STATUS(x) (((x) >> S_CPL_STATUS) & M_CPL_STATUS) 31262306a36Sopenharmony_ci 31362306a36Sopenharmony_ci#define S_INJECT_TIMER 6 31462306a36Sopenharmony_ci#define V_INJECT_TIMER(x) ((x) << S_INJECT_TIMER) 31562306a36Sopenharmony_ci#define F_INJECT_TIMER V_INJECT_TIMER(1U) 31662306a36Sopenharmony_ci 31762306a36Sopenharmony_ci#define S_NO_OFFLOAD 7 31862306a36Sopenharmony_ci#define V_NO_OFFLOAD(x) ((x) << S_NO_OFFLOAD) 31962306a36Sopenharmony_ci#define F_NO_OFFLOAD V_NO_OFFLOAD(1U) 32062306a36Sopenharmony_ci 32162306a36Sopenharmony_ci#define S_ULP_MODE 8 32262306a36Sopenharmony_ci#define M_ULP_MODE 0xF 32362306a36Sopenharmony_ci#define V_ULP_MODE(x) ((x) << S_ULP_MODE) 32462306a36Sopenharmony_ci#define G_ULP_MODE(x) (((x) >> S_ULP_MODE) & M_ULP_MODE) 32562306a36Sopenharmony_ci 32662306a36Sopenharmony_ci#define S_RCV_BUFSIZ 12 32762306a36Sopenharmony_ci#define M_RCV_BUFSIZ 0x3FFF 32862306a36Sopenharmony_ci#define V_RCV_BUFSIZ(x) ((x) << S_RCV_BUFSIZ) 32962306a36Sopenharmony_ci#define G_RCV_BUFSIZ(x) (((x) >> S_RCV_BUFSIZ) & M_RCV_BUFSIZ) 33062306a36Sopenharmony_ci 33162306a36Sopenharmony_ci#define S_TOS 26 33262306a36Sopenharmony_ci#define M_TOS 0x3F 33362306a36Sopenharmony_ci#define V_TOS(x) ((x) << S_TOS) 33462306a36Sopenharmony_ci#define G_TOS(x) (((x) >> S_TOS) & M_TOS) 33562306a36Sopenharmony_ci 33662306a36Sopenharmony_ci/* option 0 upper-half fields */ 33762306a36Sopenharmony_ci#define S_DELACK 0 33862306a36Sopenharmony_ci#define V_DELACK(x) ((x) << S_DELACK) 33962306a36Sopenharmony_ci#define F_DELACK V_DELACK(1U) 34062306a36Sopenharmony_ci 34162306a36Sopenharmony_ci#define S_NO_CONG 1 34262306a36Sopenharmony_ci#define V_NO_CONG(x) ((x) << S_NO_CONG) 34362306a36Sopenharmony_ci#define F_NO_CONG V_NO_CONG(1U) 34462306a36Sopenharmony_ci 34562306a36Sopenharmony_ci#define S_SRC_MAC_SEL 2 34662306a36Sopenharmony_ci#define M_SRC_MAC_SEL 0x3 34762306a36Sopenharmony_ci#define V_SRC_MAC_SEL(x) ((x) << S_SRC_MAC_SEL) 34862306a36Sopenharmony_ci#define G_SRC_MAC_SEL(x) (((x) >> S_SRC_MAC_SEL) & M_SRC_MAC_SEL) 34962306a36Sopenharmony_ci 35062306a36Sopenharmony_ci#define S_L2T_IDX 4 35162306a36Sopenharmony_ci#define M_L2T_IDX 0x7FF 35262306a36Sopenharmony_ci#define V_L2T_IDX(x) ((x) << S_L2T_IDX) 35362306a36Sopenharmony_ci#define G_L2T_IDX(x) (((x) >> S_L2T_IDX) & M_L2T_IDX) 35462306a36Sopenharmony_ci 35562306a36Sopenharmony_ci#define S_TX_CHANNEL 15 35662306a36Sopenharmony_ci#define V_TX_CHANNEL(x) ((x) << S_TX_CHANNEL) 35762306a36Sopenharmony_ci#define F_TX_CHANNEL V_TX_CHANNEL(1U) 35862306a36Sopenharmony_ci 35962306a36Sopenharmony_ci#define S_TCAM_BYPASS 16 36062306a36Sopenharmony_ci#define V_TCAM_BYPASS(x) ((x) << S_TCAM_BYPASS) 36162306a36Sopenharmony_ci#define F_TCAM_BYPASS V_TCAM_BYPASS(1U) 36262306a36Sopenharmony_ci 36362306a36Sopenharmony_ci#define S_NAGLE 17 36462306a36Sopenharmony_ci#define V_NAGLE(x) ((x) << S_NAGLE) 36562306a36Sopenharmony_ci#define F_NAGLE V_NAGLE(1U) 36662306a36Sopenharmony_ci 36762306a36Sopenharmony_ci#define S_WND_SCALE 18 36862306a36Sopenharmony_ci#define M_WND_SCALE 0xF 36962306a36Sopenharmony_ci#define V_WND_SCALE(x) ((x) << S_WND_SCALE) 37062306a36Sopenharmony_ci#define G_WND_SCALE(x) (((x) >> S_WND_SCALE) & M_WND_SCALE) 37162306a36Sopenharmony_ci 37262306a36Sopenharmony_ci#define S_KEEP_ALIVE 22 37362306a36Sopenharmony_ci#define V_KEEP_ALIVE(x) ((x) << S_KEEP_ALIVE) 37462306a36Sopenharmony_ci#define F_KEEP_ALIVE V_KEEP_ALIVE(1U) 37562306a36Sopenharmony_ci 37662306a36Sopenharmony_ci#define S_MAX_RETRANS 23 37762306a36Sopenharmony_ci#define M_MAX_RETRANS 0xF 37862306a36Sopenharmony_ci#define V_MAX_RETRANS(x) ((x) << S_MAX_RETRANS) 37962306a36Sopenharmony_ci#define G_MAX_RETRANS(x) (((x) >> S_MAX_RETRANS) & M_MAX_RETRANS) 38062306a36Sopenharmony_ci 38162306a36Sopenharmony_ci#define S_MAX_RETRANS_OVERRIDE 27 38262306a36Sopenharmony_ci#define V_MAX_RETRANS_OVERRIDE(x) ((x) << S_MAX_RETRANS_OVERRIDE) 38362306a36Sopenharmony_ci#define F_MAX_RETRANS_OVERRIDE V_MAX_RETRANS_OVERRIDE(1U) 38462306a36Sopenharmony_ci 38562306a36Sopenharmony_ci#define S_MSS_IDX 28 38662306a36Sopenharmony_ci#define M_MSS_IDX 0xF 38762306a36Sopenharmony_ci#define V_MSS_IDX(x) ((x) << S_MSS_IDX) 38862306a36Sopenharmony_ci#define G_MSS_IDX(x) (((x) >> S_MSS_IDX) & M_MSS_IDX) 38962306a36Sopenharmony_ci 39062306a36Sopenharmony_ci/* option 1 fields */ 39162306a36Sopenharmony_ci#define S_RSS_ENABLE 0 39262306a36Sopenharmony_ci#define V_RSS_ENABLE(x) ((x) << S_RSS_ENABLE) 39362306a36Sopenharmony_ci#define F_RSS_ENABLE V_RSS_ENABLE(1U) 39462306a36Sopenharmony_ci 39562306a36Sopenharmony_ci#define S_RSS_MASK_LEN 1 39662306a36Sopenharmony_ci#define M_RSS_MASK_LEN 0x7 39762306a36Sopenharmony_ci#define V_RSS_MASK_LEN(x) ((x) << S_RSS_MASK_LEN) 39862306a36Sopenharmony_ci#define G_RSS_MASK_LEN(x) (((x) >> S_RSS_MASK_LEN) & M_RSS_MASK_LEN) 39962306a36Sopenharmony_ci 40062306a36Sopenharmony_ci#define S_CPU_IDX 4 40162306a36Sopenharmony_ci#define M_CPU_IDX 0x3F 40262306a36Sopenharmony_ci#define V_CPU_IDX(x) ((x) << S_CPU_IDX) 40362306a36Sopenharmony_ci#define G_CPU_IDX(x) (((x) >> S_CPU_IDX) & M_CPU_IDX) 40462306a36Sopenharmony_ci 40562306a36Sopenharmony_ci#define S_MAC_MATCH_VALID 18 40662306a36Sopenharmony_ci#define V_MAC_MATCH_VALID(x) ((x) << S_MAC_MATCH_VALID) 40762306a36Sopenharmony_ci#define F_MAC_MATCH_VALID V_MAC_MATCH_VALID(1U) 40862306a36Sopenharmony_ci 40962306a36Sopenharmony_ci#define S_CONN_POLICY 19 41062306a36Sopenharmony_ci#define M_CONN_POLICY 0x3 41162306a36Sopenharmony_ci#define V_CONN_POLICY(x) ((x) << S_CONN_POLICY) 41262306a36Sopenharmony_ci#define G_CONN_POLICY(x) (((x) >> S_CONN_POLICY) & M_CONN_POLICY) 41362306a36Sopenharmony_ci 41462306a36Sopenharmony_ci#define S_SYN_DEFENSE 21 41562306a36Sopenharmony_ci#define V_SYN_DEFENSE(x) ((x) << S_SYN_DEFENSE) 41662306a36Sopenharmony_ci#define F_SYN_DEFENSE V_SYN_DEFENSE(1U) 41762306a36Sopenharmony_ci 41862306a36Sopenharmony_ci#define S_VLAN_PRI 22 41962306a36Sopenharmony_ci#define M_VLAN_PRI 0x3 42062306a36Sopenharmony_ci#define V_VLAN_PRI(x) ((x) << S_VLAN_PRI) 42162306a36Sopenharmony_ci#define G_VLAN_PRI(x) (((x) >> S_VLAN_PRI) & M_VLAN_PRI) 42262306a36Sopenharmony_ci 42362306a36Sopenharmony_ci#define S_VLAN_PRI_VALID 24 42462306a36Sopenharmony_ci#define V_VLAN_PRI_VALID(x) ((x) << S_VLAN_PRI_VALID) 42562306a36Sopenharmony_ci#define F_VLAN_PRI_VALID V_VLAN_PRI_VALID(1U) 42662306a36Sopenharmony_ci 42762306a36Sopenharmony_ci#define S_PKT_TYPE 25 42862306a36Sopenharmony_ci#define M_PKT_TYPE 0x3 42962306a36Sopenharmony_ci#define V_PKT_TYPE(x) ((x) << S_PKT_TYPE) 43062306a36Sopenharmony_ci#define G_PKT_TYPE(x) (((x) >> S_PKT_TYPE) & M_PKT_TYPE) 43162306a36Sopenharmony_ci 43262306a36Sopenharmony_ci#define S_MAC_MATCH 27 43362306a36Sopenharmony_ci#define M_MAC_MATCH 0x1F 43462306a36Sopenharmony_ci#define V_MAC_MATCH(x) ((x) << S_MAC_MATCH) 43562306a36Sopenharmony_ci#define G_MAC_MATCH(x) (((x) >> S_MAC_MATCH) & M_MAC_MATCH) 43662306a36Sopenharmony_ci 43762306a36Sopenharmony_ci/* option 2 fields */ 43862306a36Sopenharmony_ci#define S_CPU_INDEX 0 43962306a36Sopenharmony_ci#define M_CPU_INDEX 0x7F 44062306a36Sopenharmony_ci#define V_CPU_INDEX(x) ((x) << S_CPU_INDEX) 44162306a36Sopenharmony_ci#define G_CPU_INDEX(x) (((x) >> S_CPU_INDEX) & M_CPU_INDEX) 44262306a36Sopenharmony_ci 44362306a36Sopenharmony_ci#define S_CPU_INDEX_VALID 7 44462306a36Sopenharmony_ci#define V_CPU_INDEX_VALID(x) ((x) << S_CPU_INDEX_VALID) 44562306a36Sopenharmony_ci#define F_CPU_INDEX_VALID V_CPU_INDEX_VALID(1U) 44662306a36Sopenharmony_ci 44762306a36Sopenharmony_ci#define S_RX_COALESCE 8 44862306a36Sopenharmony_ci#define M_RX_COALESCE 0x3 44962306a36Sopenharmony_ci#define V_RX_COALESCE(x) ((x) << S_RX_COALESCE) 45062306a36Sopenharmony_ci#define G_RX_COALESCE(x) (((x) >> S_RX_COALESCE) & M_RX_COALESCE) 45162306a36Sopenharmony_ci 45262306a36Sopenharmony_ci#define S_RX_COALESCE_VALID 10 45362306a36Sopenharmony_ci#define V_RX_COALESCE_VALID(x) ((x) << S_RX_COALESCE_VALID) 45462306a36Sopenharmony_ci#define F_RX_COALESCE_VALID V_RX_COALESCE_VALID(1U) 45562306a36Sopenharmony_ci 45662306a36Sopenharmony_ci#define S_CONG_CONTROL_FLAVOR 11 45762306a36Sopenharmony_ci#define M_CONG_CONTROL_FLAVOR 0x3 45862306a36Sopenharmony_ci#define V_CONG_CONTROL_FLAVOR(x) ((x) << S_CONG_CONTROL_FLAVOR) 45962306a36Sopenharmony_ci#define G_CONG_CONTROL_FLAVOR(x) (((x) >> S_CONG_CONTROL_FLAVOR) & M_CONG_CONTROL_FLAVOR) 46062306a36Sopenharmony_ci 46162306a36Sopenharmony_ci#define S_PACING_FLAVOR 13 46262306a36Sopenharmony_ci#define M_PACING_FLAVOR 0x3 46362306a36Sopenharmony_ci#define V_PACING_FLAVOR(x) ((x) << S_PACING_FLAVOR) 46462306a36Sopenharmony_ci#define G_PACING_FLAVOR(x) (((x) >> S_PACING_FLAVOR) & M_PACING_FLAVOR) 46562306a36Sopenharmony_ci 46662306a36Sopenharmony_ci#define S_FLAVORS_VALID 15 46762306a36Sopenharmony_ci#define V_FLAVORS_VALID(x) ((x) << S_FLAVORS_VALID) 46862306a36Sopenharmony_ci#define F_FLAVORS_VALID V_FLAVORS_VALID(1U) 46962306a36Sopenharmony_ci 47062306a36Sopenharmony_ci#define S_RX_FC_DISABLE 16 47162306a36Sopenharmony_ci#define V_RX_FC_DISABLE(x) ((x) << S_RX_FC_DISABLE) 47262306a36Sopenharmony_ci#define F_RX_FC_DISABLE V_RX_FC_DISABLE(1U) 47362306a36Sopenharmony_ci 47462306a36Sopenharmony_ci#define S_RX_FC_VALID 17 47562306a36Sopenharmony_ci#define V_RX_FC_VALID(x) ((x) << S_RX_FC_VALID) 47662306a36Sopenharmony_ci#define F_RX_FC_VALID V_RX_FC_VALID(1U) 47762306a36Sopenharmony_ci 47862306a36Sopenharmony_cistruct cpl_pass_open_req { 47962306a36Sopenharmony_ci WR_HDR; 48062306a36Sopenharmony_ci union opcode_tid ot; 48162306a36Sopenharmony_ci __be16 local_port; 48262306a36Sopenharmony_ci __be16 peer_port; 48362306a36Sopenharmony_ci __be32 local_ip; 48462306a36Sopenharmony_ci __be32 peer_ip; 48562306a36Sopenharmony_ci __be32 opt0h; 48662306a36Sopenharmony_ci __be32 opt0l; 48762306a36Sopenharmony_ci __be32 peer_netmask; 48862306a36Sopenharmony_ci __be32 opt1; 48962306a36Sopenharmony_ci}; 49062306a36Sopenharmony_ci 49162306a36Sopenharmony_cistruct cpl_pass_open_rpl { 49262306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 49362306a36Sopenharmony_ci __be16 local_port; 49462306a36Sopenharmony_ci __be16 peer_port; 49562306a36Sopenharmony_ci __be32 local_ip; 49662306a36Sopenharmony_ci __be32 peer_ip; 49762306a36Sopenharmony_ci __u8 resvd[7]; 49862306a36Sopenharmony_ci __u8 status; 49962306a36Sopenharmony_ci}; 50062306a36Sopenharmony_ci 50162306a36Sopenharmony_cistruct cpl_pass_establish { 50262306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 50362306a36Sopenharmony_ci __be16 local_port; 50462306a36Sopenharmony_ci __be16 peer_port; 50562306a36Sopenharmony_ci __be32 local_ip; 50662306a36Sopenharmony_ci __be32 peer_ip; 50762306a36Sopenharmony_ci __be32 tos_tid; 50862306a36Sopenharmony_ci __be16 l2t_idx; 50962306a36Sopenharmony_ci __be16 tcp_opt; 51062306a36Sopenharmony_ci __be32 snd_isn; 51162306a36Sopenharmony_ci __be32 rcv_isn; 51262306a36Sopenharmony_ci}; 51362306a36Sopenharmony_ci 51462306a36Sopenharmony_ci/* cpl_pass_establish.tos_tid fields */ 51562306a36Sopenharmony_ci#define S_PASS_OPEN_TID 0 51662306a36Sopenharmony_ci#define M_PASS_OPEN_TID 0xFFFFFF 51762306a36Sopenharmony_ci#define V_PASS_OPEN_TID(x) ((x) << S_PASS_OPEN_TID) 51862306a36Sopenharmony_ci#define G_PASS_OPEN_TID(x) (((x) >> S_PASS_OPEN_TID) & M_PASS_OPEN_TID) 51962306a36Sopenharmony_ci 52062306a36Sopenharmony_ci#define S_PASS_OPEN_TOS 24 52162306a36Sopenharmony_ci#define M_PASS_OPEN_TOS 0xFF 52262306a36Sopenharmony_ci#define V_PASS_OPEN_TOS(x) ((x) << S_PASS_OPEN_TOS) 52362306a36Sopenharmony_ci#define G_PASS_OPEN_TOS(x) (((x) >> S_PASS_OPEN_TOS) & M_PASS_OPEN_TOS) 52462306a36Sopenharmony_ci 52562306a36Sopenharmony_ci/* cpl_pass_establish.l2t_idx fields */ 52662306a36Sopenharmony_ci#define S_L2T_IDX16 5 52762306a36Sopenharmony_ci#define M_L2T_IDX16 0x7FF 52862306a36Sopenharmony_ci#define V_L2T_IDX16(x) ((x) << S_L2T_IDX16) 52962306a36Sopenharmony_ci#define G_L2T_IDX16(x) (((x) >> S_L2T_IDX16) & M_L2T_IDX16) 53062306a36Sopenharmony_ci 53162306a36Sopenharmony_ci/* cpl_pass_establish.tcp_opt fields (also applies act_open_establish) */ 53262306a36Sopenharmony_ci#define G_TCPOPT_WSCALE_OK(x) (((x) >> 5) & 1) 53362306a36Sopenharmony_ci#define G_TCPOPT_SACK(x) (((x) >> 6) & 1) 53462306a36Sopenharmony_ci#define G_TCPOPT_TSTAMP(x) (((x) >> 7) & 1) 53562306a36Sopenharmony_ci#define G_TCPOPT_SND_WSCALE(x) (((x) >> 8) & 0xf) 53662306a36Sopenharmony_ci#define G_TCPOPT_MSS(x) (((x) >> 12) & 0xf) 53762306a36Sopenharmony_ci 53862306a36Sopenharmony_cistruct cpl_pass_accept_req { 53962306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 54062306a36Sopenharmony_ci __be16 local_port; 54162306a36Sopenharmony_ci __be16 peer_port; 54262306a36Sopenharmony_ci __be32 local_ip; 54362306a36Sopenharmony_ci __be32 peer_ip; 54462306a36Sopenharmony_ci __be32 tos_tid; 54562306a36Sopenharmony_ci struct tcp_options tcp_options; 54662306a36Sopenharmony_ci __u8 dst_mac[6]; 54762306a36Sopenharmony_ci __be16 vlan_tag; 54862306a36Sopenharmony_ci __u8 src_mac[6]; 54962306a36Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD) 55062306a36Sopenharmony_ci __u8:3; 55162306a36Sopenharmony_ci __u8 addr_idx:3; 55262306a36Sopenharmony_ci __u8 port_idx:1; 55362306a36Sopenharmony_ci __u8 exact_match:1; 55462306a36Sopenharmony_ci#else 55562306a36Sopenharmony_ci __u8 exact_match:1; 55662306a36Sopenharmony_ci __u8 port_idx:1; 55762306a36Sopenharmony_ci __u8 addr_idx:3; 55862306a36Sopenharmony_ci __u8:3; 55962306a36Sopenharmony_ci#endif 56062306a36Sopenharmony_ci __u8 rsvd; 56162306a36Sopenharmony_ci __be32 rcv_isn; 56262306a36Sopenharmony_ci __be32 rsvd2; 56362306a36Sopenharmony_ci}; 56462306a36Sopenharmony_ci 56562306a36Sopenharmony_cistruct cpl_pass_accept_rpl { 56662306a36Sopenharmony_ci WR_HDR; 56762306a36Sopenharmony_ci union opcode_tid ot; 56862306a36Sopenharmony_ci __be32 opt2; 56962306a36Sopenharmony_ci __be32 rsvd; 57062306a36Sopenharmony_ci __be32 peer_ip; 57162306a36Sopenharmony_ci __be32 opt0h; 57262306a36Sopenharmony_ci __be32 opt0l_status; 57362306a36Sopenharmony_ci}; 57462306a36Sopenharmony_ci 57562306a36Sopenharmony_cistruct cpl_act_open_req { 57662306a36Sopenharmony_ci WR_HDR; 57762306a36Sopenharmony_ci union opcode_tid ot; 57862306a36Sopenharmony_ci __be16 local_port; 57962306a36Sopenharmony_ci __be16 peer_port; 58062306a36Sopenharmony_ci __be32 local_ip; 58162306a36Sopenharmony_ci __be32 peer_ip; 58262306a36Sopenharmony_ci __be32 opt0h; 58362306a36Sopenharmony_ci __be32 opt0l; 58462306a36Sopenharmony_ci __be32 params; 58562306a36Sopenharmony_ci __be32 opt2; 58662306a36Sopenharmony_ci}; 58762306a36Sopenharmony_ci 58862306a36Sopenharmony_ci/* cpl_act_open_req.params fields */ 58962306a36Sopenharmony_ci#define S_AOPEN_VLAN_PRI 9 59062306a36Sopenharmony_ci#define M_AOPEN_VLAN_PRI 0x3 59162306a36Sopenharmony_ci#define V_AOPEN_VLAN_PRI(x) ((x) << S_AOPEN_VLAN_PRI) 59262306a36Sopenharmony_ci#define G_AOPEN_VLAN_PRI(x) (((x) >> S_AOPEN_VLAN_PRI) & M_AOPEN_VLAN_PRI) 59362306a36Sopenharmony_ci 59462306a36Sopenharmony_ci#define S_AOPEN_VLAN_PRI_VALID 11 59562306a36Sopenharmony_ci#define V_AOPEN_VLAN_PRI_VALID(x) ((x) << S_AOPEN_VLAN_PRI_VALID) 59662306a36Sopenharmony_ci#define F_AOPEN_VLAN_PRI_VALID V_AOPEN_VLAN_PRI_VALID(1U) 59762306a36Sopenharmony_ci 59862306a36Sopenharmony_ci#define S_AOPEN_PKT_TYPE 12 59962306a36Sopenharmony_ci#define M_AOPEN_PKT_TYPE 0x3 60062306a36Sopenharmony_ci#define V_AOPEN_PKT_TYPE(x) ((x) << S_AOPEN_PKT_TYPE) 60162306a36Sopenharmony_ci#define G_AOPEN_PKT_TYPE(x) (((x) >> S_AOPEN_PKT_TYPE) & M_AOPEN_PKT_TYPE) 60262306a36Sopenharmony_ci 60362306a36Sopenharmony_ci#define S_AOPEN_MAC_MATCH 14 60462306a36Sopenharmony_ci#define M_AOPEN_MAC_MATCH 0x1F 60562306a36Sopenharmony_ci#define V_AOPEN_MAC_MATCH(x) ((x) << S_AOPEN_MAC_MATCH) 60662306a36Sopenharmony_ci#define G_AOPEN_MAC_MATCH(x) (((x) >> S_AOPEN_MAC_MATCH) & M_AOPEN_MAC_MATCH) 60762306a36Sopenharmony_ci 60862306a36Sopenharmony_ci#define S_AOPEN_MAC_MATCH_VALID 19 60962306a36Sopenharmony_ci#define V_AOPEN_MAC_MATCH_VALID(x) ((x) << S_AOPEN_MAC_MATCH_VALID) 61062306a36Sopenharmony_ci#define F_AOPEN_MAC_MATCH_VALID V_AOPEN_MAC_MATCH_VALID(1U) 61162306a36Sopenharmony_ci 61262306a36Sopenharmony_ci#define S_AOPEN_IFF_VLAN 20 61362306a36Sopenharmony_ci#define M_AOPEN_IFF_VLAN 0xFFF 61462306a36Sopenharmony_ci#define V_AOPEN_IFF_VLAN(x) ((x) << S_AOPEN_IFF_VLAN) 61562306a36Sopenharmony_ci#define G_AOPEN_IFF_VLAN(x) (((x) >> S_AOPEN_IFF_VLAN) & M_AOPEN_IFF_VLAN) 61662306a36Sopenharmony_ci 61762306a36Sopenharmony_cistruct cpl_act_open_rpl { 61862306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 61962306a36Sopenharmony_ci __be16 local_port; 62062306a36Sopenharmony_ci __be16 peer_port; 62162306a36Sopenharmony_ci __be32 local_ip; 62262306a36Sopenharmony_ci __be32 peer_ip; 62362306a36Sopenharmony_ci __be32 atid; 62462306a36Sopenharmony_ci __u8 rsvd[3]; 62562306a36Sopenharmony_ci __u8 status; 62662306a36Sopenharmony_ci}; 62762306a36Sopenharmony_ci 62862306a36Sopenharmony_cistruct cpl_act_establish { 62962306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 63062306a36Sopenharmony_ci __be16 local_port; 63162306a36Sopenharmony_ci __be16 peer_port; 63262306a36Sopenharmony_ci __be32 local_ip; 63362306a36Sopenharmony_ci __be32 peer_ip; 63462306a36Sopenharmony_ci __be32 tos_tid; 63562306a36Sopenharmony_ci __be16 l2t_idx; 63662306a36Sopenharmony_ci __be16 tcp_opt; 63762306a36Sopenharmony_ci __be32 snd_isn; 63862306a36Sopenharmony_ci __be32 rcv_isn; 63962306a36Sopenharmony_ci}; 64062306a36Sopenharmony_ci 64162306a36Sopenharmony_cistruct cpl_get_tcb { 64262306a36Sopenharmony_ci WR_HDR; 64362306a36Sopenharmony_ci union opcode_tid ot; 64462306a36Sopenharmony_ci __be16 cpuno; 64562306a36Sopenharmony_ci __be16 rsvd; 64662306a36Sopenharmony_ci}; 64762306a36Sopenharmony_ci 64862306a36Sopenharmony_cistruct cpl_get_tcb_rpl { 64962306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 65062306a36Sopenharmony_ci __u8 rsvd; 65162306a36Sopenharmony_ci __u8 status; 65262306a36Sopenharmony_ci __be16 len; 65362306a36Sopenharmony_ci}; 65462306a36Sopenharmony_ci 65562306a36Sopenharmony_cistruct cpl_set_tcb { 65662306a36Sopenharmony_ci WR_HDR; 65762306a36Sopenharmony_ci union opcode_tid ot; 65862306a36Sopenharmony_ci __u8 reply; 65962306a36Sopenharmony_ci __u8 cpu_idx; 66062306a36Sopenharmony_ci __be16 len; 66162306a36Sopenharmony_ci}; 66262306a36Sopenharmony_ci 66362306a36Sopenharmony_ci/* cpl_set_tcb.reply fields */ 66462306a36Sopenharmony_ci#define S_NO_REPLY 7 66562306a36Sopenharmony_ci#define V_NO_REPLY(x) ((x) << S_NO_REPLY) 66662306a36Sopenharmony_ci#define F_NO_REPLY V_NO_REPLY(1U) 66762306a36Sopenharmony_ci 66862306a36Sopenharmony_cistruct cpl_set_tcb_field { 66962306a36Sopenharmony_ci WR_HDR; 67062306a36Sopenharmony_ci union opcode_tid ot; 67162306a36Sopenharmony_ci __u8 reply; 67262306a36Sopenharmony_ci __u8 cpu_idx; 67362306a36Sopenharmony_ci __be16 word; 67462306a36Sopenharmony_ci __be64 mask; 67562306a36Sopenharmony_ci __be64 val; 67662306a36Sopenharmony_ci}; 67762306a36Sopenharmony_ci 67862306a36Sopenharmony_cistruct cpl_set_tcb_rpl { 67962306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 68062306a36Sopenharmony_ci __u8 rsvd[3]; 68162306a36Sopenharmony_ci __u8 status; 68262306a36Sopenharmony_ci}; 68362306a36Sopenharmony_ci 68462306a36Sopenharmony_cistruct cpl_pcmd { 68562306a36Sopenharmony_ci WR_HDR; 68662306a36Sopenharmony_ci union opcode_tid ot; 68762306a36Sopenharmony_ci __u8 rsvd[3]; 68862306a36Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD) 68962306a36Sopenharmony_ci __u8 src:1; 69062306a36Sopenharmony_ci __u8 bundle:1; 69162306a36Sopenharmony_ci __u8 channel:1; 69262306a36Sopenharmony_ci __u8:5; 69362306a36Sopenharmony_ci#else 69462306a36Sopenharmony_ci __u8:5; 69562306a36Sopenharmony_ci __u8 channel:1; 69662306a36Sopenharmony_ci __u8 bundle:1; 69762306a36Sopenharmony_ci __u8 src:1; 69862306a36Sopenharmony_ci#endif 69962306a36Sopenharmony_ci __be32 pcmd_parm[2]; 70062306a36Sopenharmony_ci}; 70162306a36Sopenharmony_ci 70262306a36Sopenharmony_cistruct cpl_pcmd_reply { 70362306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 70462306a36Sopenharmony_ci __u8 status; 70562306a36Sopenharmony_ci __u8 rsvd; 70662306a36Sopenharmony_ci __be16 len; 70762306a36Sopenharmony_ci}; 70862306a36Sopenharmony_ci 70962306a36Sopenharmony_cistruct cpl_close_con_req { 71062306a36Sopenharmony_ci WR_HDR; 71162306a36Sopenharmony_ci union opcode_tid ot; 71262306a36Sopenharmony_ci __be32 rsvd; 71362306a36Sopenharmony_ci}; 71462306a36Sopenharmony_ci 71562306a36Sopenharmony_cistruct cpl_close_con_rpl { 71662306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 71762306a36Sopenharmony_ci __u8 rsvd[3]; 71862306a36Sopenharmony_ci __u8 status; 71962306a36Sopenharmony_ci __be32 snd_nxt; 72062306a36Sopenharmony_ci __be32 rcv_nxt; 72162306a36Sopenharmony_ci}; 72262306a36Sopenharmony_ci 72362306a36Sopenharmony_cistruct cpl_close_listserv_req { 72462306a36Sopenharmony_ci WR_HDR; 72562306a36Sopenharmony_ci union opcode_tid ot; 72662306a36Sopenharmony_ci __u8 rsvd0; 72762306a36Sopenharmony_ci __u8 cpu_idx; 72862306a36Sopenharmony_ci __be16 rsvd1; 72962306a36Sopenharmony_ci}; 73062306a36Sopenharmony_ci 73162306a36Sopenharmony_cistruct cpl_close_listserv_rpl { 73262306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 73362306a36Sopenharmony_ci __u8 rsvd[3]; 73462306a36Sopenharmony_ci __u8 status; 73562306a36Sopenharmony_ci}; 73662306a36Sopenharmony_ci 73762306a36Sopenharmony_cistruct cpl_abort_req_rss { 73862306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 73962306a36Sopenharmony_ci __be32 rsvd0; 74062306a36Sopenharmony_ci __u8 rsvd1; 74162306a36Sopenharmony_ci __u8 status; 74262306a36Sopenharmony_ci __u8 rsvd2[6]; 74362306a36Sopenharmony_ci}; 74462306a36Sopenharmony_ci 74562306a36Sopenharmony_cistruct cpl_abort_req { 74662306a36Sopenharmony_ci WR_HDR; 74762306a36Sopenharmony_ci union opcode_tid ot; 74862306a36Sopenharmony_ci __be32 rsvd0; 74962306a36Sopenharmony_ci __u8 rsvd1; 75062306a36Sopenharmony_ci __u8 cmd; 75162306a36Sopenharmony_ci __u8 rsvd2[6]; 75262306a36Sopenharmony_ci}; 75362306a36Sopenharmony_ci 75462306a36Sopenharmony_cistruct cpl_abort_rpl_rss { 75562306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 75662306a36Sopenharmony_ci __be32 rsvd0; 75762306a36Sopenharmony_ci __u8 rsvd1; 75862306a36Sopenharmony_ci __u8 status; 75962306a36Sopenharmony_ci __u8 rsvd2[6]; 76062306a36Sopenharmony_ci}; 76162306a36Sopenharmony_ci 76262306a36Sopenharmony_cistruct cpl_abort_rpl { 76362306a36Sopenharmony_ci WR_HDR; 76462306a36Sopenharmony_ci union opcode_tid ot; 76562306a36Sopenharmony_ci __be32 rsvd0; 76662306a36Sopenharmony_ci __u8 rsvd1; 76762306a36Sopenharmony_ci __u8 cmd; 76862306a36Sopenharmony_ci __u8 rsvd2[6]; 76962306a36Sopenharmony_ci}; 77062306a36Sopenharmony_ci 77162306a36Sopenharmony_cistruct cpl_peer_close { 77262306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 77362306a36Sopenharmony_ci __be32 rcv_nxt; 77462306a36Sopenharmony_ci}; 77562306a36Sopenharmony_ci 77662306a36Sopenharmony_cistruct tx_data_wr { 77762306a36Sopenharmony_ci __be32 wr_hi; 77862306a36Sopenharmony_ci __be32 wr_lo; 77962306a36Sopenharmony_ci __be32 len; 78062306a36Sopenharmony_ci __be32 flags; 78162306a36Sopenharmony_ci __be32 sndseq; 78262306a36Sopenharmony_ci __be32 param; 78362306a36Sopenharmony_ci}; 78462306a36Sopenharmony_ci 78562306a36Sopenharmony_ci/* tx_data_wr.flags fields */ 78662306a36Sopenharmony_ci#define S_TX_ACK_PAGES 21 78762306a36Sopenharmony_ci#define M_TX_ACK_PAGES 0x7 78862306a36Sopenharmony_ci#define V_TX_ACK_PAGES(x) ((x) << S_TX_ACK_PAGES) 78962306a36Sopenharmony_ci#define G_TX_ACK_PAGES(x) (((x) >> S_TX_ACK_PAGES) & M_TX_ACK_PAGES) 79062306a36Sopenharmony_ci 79162306a36Sopenharmony_ci/* tx_data_wr.param fields */ 79262306a36Sopenharmony_ci#define S_TX_PORT 0 79362306a36Sopenharmony_ci#define M_TX_PORT 0x7 79462306a36Sopenharmony_ci#define V_TX_PORT(x) ((x) << S_TX_PORT) 79562306a36Sopenharmony_ci#define G_TX_PORT(x) (((x) >> S_TX_PORT) & M_TX_PORT) 79662306a36Sopenharmony_ci 79762306a36Sopenharmony_ci#define S_TX_MSS 4 79862306a36Sopenharmony_ci#define M_TX_MSS 0xF 79962306a36Sopenharmony_ci#define V_TX_MSS(x) ((x) << S_TX_MSS) 80062306a36Sopenharmony_ci#define G_TX_MSS(x) (((x) >> S_TX_MSS) & M_TX_MSS) 80162306a36Sopenharmony_ci 80262306a36Sopenharmony_ci#define S_TX_QOS 8 80362306a36Sopenharmony_ci#define M_TX_QOS 0xFF 80462306a36Sopenharmony_ci#define V_TX_QOS(x) ((x) << S_TX_QOS) 80562306a36Sopenharmony_ci#define G_TX_QOS(x) (((x) >> S_TX_QOS) & M_TX_QOS) 80662306a36Sopenharmony_ci 80762306a36Sopenharmony_ci#define S_TX_SNDBUF 16 80862306a36Sopenharmony_ci#define M_TX_SNDBUF 0xFFFF 80962306a36Sopenharmony_ci#define V_TX_SNDBUF(x) ((x) << S_TX_SNDBUF) 81062306a36Sopenharmony_ci#define G_TX_SNDBUF(x) (((x) >> S_TX_SNDBUF) & M_TX_SNDBUF) 81162306a36Sopenharmony_ci 81262306a36Sopenharmony_cistruct cpl_tx_data { 81362306a36Sopenharmony_ci union opcode_tid ot; 81462306a36Sopenharmony_ci __be32 len; 81562306a36Sopenharmony_ci __be32 rsvd; 81662306a36Sopenharmony_ci __be16 urg; 81762306a36Sopenharmony_ci __be16 flags; 81862306a36Sopenharmony_ci}; 81962306a36Sopenharmony_ci 82062306a36Sopenharmony_ci/* cpl_tx_data.flags fields */ 82162306a36Sopenharmony_ci#define S_TX_ULP_SUBMODE 6 82262306a36Sopenharmony_ci#define M_TX_ULP_SUBMODE 0xF 82362306a36Sopenharmony_ci#define V_TX_ULP_SUBMODE(x) ((x) << S_TX_ULP_SUBMODE) 82462306a36Sopenharmony_ci#define G_TX_ULP_SUBMODE(x) (((x) >> S_TX_ULP_SUBMODE) & M_TX_ULP_SUBMODE) 82562306a36Sopenharmony_ci 82662306a36Sopenharmony_ci#define S_TX_ULP_MODE 10 82762306a36Sopenharmony_ci#define M_TX_ULP_MODE 0xF 82862306a36Sopenharmony_ci#define V_TX_ULP_MODE(x) ((x) << S_TX_ULP_MODE) 82962306a36Sopenharmony_ci#define G_TX_ULP_MODE(x) (((x) >> S_TX_ULP_MODE) & M_TX_ULP_MODE) 83062306a36Sopenharmony_ci 83162306a36Sopenharmony_ci#define S_TX_SHOVE 14 83262306a36Sopenharmony_ci#define V_TX_SHOVE(x) ((x) << S_TX_SHOVE) 83362306a36Sopenharmony_ci#define F_TX_SHOVE V_TX_SHOVE(1U) 83462306a36Sopenharmony_ci 83562306a36Sopenharmony_ci#define S_TX_MORE 15 83662306a36Sopenharmony_ci#define V_TX_MORE(x) ((x) << S_TX_MORE) 83762306a36Sopenharmony_ci#define F_TX_MORE V_TX_MORE(1U) 83862306a36Sopenharmony_ci 83962306a36Sopenharmony_ci/* additional tx_data_wr.flags fields */ 84062306a36Sopenharmony_ci#define S_TX_CPU_IDX 0 84162306a36Sopenharmony_ci#define M_TX_CPU_IDX 0x3F 84262306a36Sopenharmony_ci#define V_TX_CPU_IDX(x) ((x) << S_TX_CPU_IDX) 84362306a36Sopenharmony_ci#define G_TX_CPU_IDX(x) (((x) >> S_TX_CPU_IDX) & M_TX_CPU_IDX) 84462306a36Sopenharmony_ci 84562306a36Sopenharmony_ci#define S_TX_URG 16 84662306a36Sopenharmony_ci#define V_TX_URG(x) ((x) << S_TX_URG) 84762306a36Sopenharmony_ci#define F_TX_URG V_TX_URG(1U) 84862306a36Sopenharmony_ci 84962306a36Sopenharmony_ci#define S_TX_CLOSE 17 85062306a36Sopenharmony_ci#define V_TX_CLOSE(x) ((x) << S_TX_CLOSE) 85162306a36Sopenharmony_ci#define F_TX_CLOSE V_TX_CLOSE(1U) 85262306a36Sopenharmony_ci 85362306a36Sopenharmony_ci#define S_TX_INIT 18 85462306a36Sopenharmony_ci#define V_TX_INIT(x) ((x) << S_TX_INIT) 85562306a36Sopenharmony_ci#define F_TX_INIT V_TX_INIT(1U) 85662306a36Sopenharmony_ci 85762306a36Sopenharmony_ci#define S_TX_IMM_ACK 19 85862306a36Sopenharmony_ci#define V_TX_IMM_ACK(x) ((x) << S_TX_IMM_ACK) 85962306a36Sopenharmony_ci#define F_TX_IMM_ACK V_TX_IMM_ACK(1U) 86062306a36Sopenharmony_ci 86162306a36Sopenharmony_ci#define S_TX_IMM_DMA 20 86262306a36Sopenharmony_ci#define V_TX_IMM_DMA(x) ((x) << S_TX_IMM_DMA) 86362306a36Sopenharmony_ci#define F_TX_IMM_DMA V_TX_IMM_DMA(1U) 86462306a36Sopenharmony_ci 86562306a36Sopenharmony_cistruct cpl_tx_data_ack { 86662306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 86762306a36Sopenharmony_ci __be32 ack_seq; 86862306a36Sopenharmony_ci}; 86962306a36Sopenharmony_ci 87062306a36Sopenharmony_cistruct cpl_wr_ack { 87162306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 87262306a36Sopenharmony_ci __be16 credits; 87362306a36Sopenharmony_ci __be16 rsvd; 87462306a36Sopenharmony_ci __be32 snd_nxt; 87562306a36Sopenharmony_ci __be32 snd_una; 87662306a36Sopenharmony_ci}; 87762306a36Sopenharmony_ci 87862306a36Sopenharmony_cistruct cpl_rdma_ec_status { 87962306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 88062306a36Sopenharmony_ci __u8 rsvd[3]; 88162306a36Sopenharmony_ci __u8 status; 88262306a36Sopenharmony_ci}; 88362306a36Sopenharmony_ci 88462306a36Sopenharmony_cistruct mngt_pktsched_wr { 88562306a36Sopenharmony_ci __be32 wr_hi; 88662306a36Sopenharmony_ci __be32 wr_lo; 88762306a36Sopenharmony_ci __u8 mngt_opcode; 88862306a36Sopenharmony_ci __u8 rsvd[7]; 88962306a36Sopenharmony_ci __u8 sched; 89062306a36Sopenharmony_ci __u8 idx; 89162306a36Sopenharmony_ci __u8 min; 89262306a36Sopenharmony_ci __u8 max; 89362306a36Sopenharmony_ci __u8 binding; 89462306a36Sopenharmony_ci __u8 rsvd1[3]; 89562306a36Sopenharmony_ci}; 89662306a36Sopenharmony_ci 89762306a36Sopenharmony_cistruct cpl_iscsi_hdr { 89862306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 89962306a36Sopenharmony_ci __be16 pdu_len_ddp; 90062306a36Sopenharmony_ci __be16 len; 90162306a36Sopenharmony_ci __be32 seq; 90262306a36Sopenharmony_ci __be16 urg; 90362306a36Sopenharmony_ci __u8 rsvd; 90462306a36Sopenharmony_ci __u8 status; 90562306a36Sopenharmony_ci}; 90662306a36Sopenharmony_ci 90762306a36Sopenharmony_ci/* cpl_iscsi_hdr.pdu_len_ddp fields */ 90862306a36Sopenharmony_ci#define S_ISCSI_PDU_LEN 0 90962306a36Sopenharmony_ci#define M_ISCSI_PDU_LEN 0x7FFF 91062306a36Sopenharmony_ci#define V_ISCSI_PDU_LEN(x) ((x) << S_ISCSI_PDU_LEN) 91162306a36Sopenharmony_ci#define G_ISCSI_PDU_LEN(x) (((x) >> S_ISCSI_PDU_LEN) & M_ISCSI_PDU_LEN) 91262306a36Sopenharmony_ci 91362306a36Sopenharmony_ci#define S_ISCSI_DDP 15 91462306a36Sopenharmony_ci#define V_ISCSI_DDP(x) ((x) << S_ISCSI_DDP) 91562306a36Sopenharmony_ci#define F_ISCSI_DDP V_ISCSI_DDP(1U) 91662306a36Sopenharmony_ci 91762306a36Sopenharmony_cistruct cpl_rx_data { 91862306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 91962306a36Sopenharmony_ci __be16 rsvd; 92062306a36Sopenharmony_ci __be16 len; 92162306a36Sopenharmony_ci __be32 seq; 92262306a36Sopenharmony_ci __be16 urg; 92362306a36Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD) 92462306a36Sopenharmony_ci __u8 dack_mode:2; 92562306a36Sopenharmony_ci __u8 psh:1; 92662306a36Sopenharmony_ci __u8 heartbeat:1; 92762306a36Sopenharmony_ci __u8:4; 92862306a36Sopenharmony_ci#else 92962306a36Sopenharmony_ci __u8:4; 93062306a36Sopenharmony_ci __u8 heartbeat:1; 93162306a36Sopenharmony_ci __u8 psh:1; 93262306a36Sopenharmony_ci __u8 dack_mode:2; 93362306a36Sopenharmony_ci#endif 93462306a36Sopenharmony_ci __u8 status; 93562306a36Sopenharmony_ci}; 93662306a36Sopenharmony_ci 93762306a36Sopenharmony_cistruct cpl_rx_data_ack { 93862306a36Sopenharmony_ci WR_HDR; 93962306a36Sopenharmony_ci union opcode_tid ot; 94062306a36Sopenharmony_ci __be32 credit_dack; 94162306a36Sopenharmony_ci}; 94262306a36Sopenharmony_ci 94362306a36Sopenharmony_ci/* cpl_rx_data_ack.ack_seq fields */ 94462306a36Sopenharmony_ci#define S_RX_CREDITS 0 94562306a36Sopenharmony_ci#define M_RX_CREDITS 0x7FFFFFF 94662306a36Sopenharmony_ci#define V_RX_CREDITS(x) ((x) << S_RX_CREDITS) 94762306a36Sopenharmony_ci#define G_RX_CREDITS(x) (((x) >> S_RX_CREDITS) & M_RX_CREDITS) 94862306a36Sopenharmony_ci 94962306a36Sopenharmony_ci#define S_RX_MODULATE 27 95062306a36Sopenharmony_ci#define V_RX_MODULATE(x) ((x) << S_RX_MODULATE) 95162306a36Sopenharmony_ci#define F_RX_MODULATE V_RX_MODULATE(1U) 95262306a36Sopenharmony_ci 95362306a36Sopenharmony_ci#define S_RX_FORCE_ACK 28 95462306a36Sopenharmony_ci#define V_RX_FORCE_ACK(x) ((x) << S_RX_FORCE_ACK) 95562306a36Sopenharmony_ci#define F_RX_FORCE_ACK V_RX_FORCE_ACK(1U) 95662306a36Sopenharmony_ci 95762306a36Sopenharmony_ci#define S_RX_DACK_MODE 29 95862306a36Sopenharmony_ci#define M_RX_DACK_MODE 0x3 95962306a36Sopenharmony_ci#define V_RX_DACK_MODE(x) ((x) << S_RX_DACK_MODE) 96062306a36Sopenharmony_ci#define G_RX_DACK_MODE(x) (((x) >> S_RX_DACK_MODE) & M_RX_DACK_MODE) 96162306a36Sopenharmony_ci 96262306a36Sopenharmony_ci#define S_RX_DACK_CHANGE 31 96362306a36Sopenharmony_ci#define V_RX_DACK_CHANGE(x) ((x) << S_RX_DACK_CHANGE) 96462306a36Sopenharmony_ci#define F_RX_DACK_CHANGE V_RX_DACK_CHANGE(1U) 96562306a36Sopenharmony_ci 96662306a36Sopenharmony_cistruct cpl_rx_urg_notify { 96762306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 96862306a36Sopenharmony_ci __be32 seq; 96962306a36Sopenharmony_ci}; 97062306a36Sopenharmony_ci 97162306a36Sopenharmony_cistruct cpl_rx_ddp_complete { 97262306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 97362306a36Sopenharmony_ci __be32 ddp_report; 97462306a36Sopenharmony_ci}; 97562306a36Sopenharmony_ci 97662306a36Sopenharmony_cistruct cpl_rx_data_ddp { 97762306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 97862306a36Sopenharmony_ci __be16 urg; 97962306a36Sopenharmony_ci __be16 len; 98062306a36Sopenharmony_ci __be32 seq; 98162306a36Sopenharmony_ci union { 98262306a36Sopenharmony_ci __be32 nxt_seq; 98362306a36Sopenharmony_ci __be32 ddp_report; 98462306a36Sopenharmony_ci }; 98562306a36Sopenharmony_ci __be32 ulp_crc; 98662306a36Sopenharmony_ci __be32 ddpvld_status; 98762306a36Sopenharmony_ci}; 98862306a36Sopenharmony_ci 98962306a36Sopenharmony_ci/* cpl_rx_data_ddp.ddpvld_status fields */ 99062306a36Sopenharmony_ci#define S_DDP_STATUS 0 99162306a36Sopenharmony_ci#define M_DDP_STATUS 0xFF 99262306a36Sopenharmony_ci#define V_DDP_STATUS(x) ((x) << S_DDP_STATUS) 99362306a36Sopenharmony_ci#define G_DDP_STATUS(x) (((x) >> S_DDP_STATUS) & M_DDP_STATUS) 99462306a36Sopenharmony_ci 99562306a36Sopenharmony_ci#define S_DDP_VALID 15 99662306a36Sopenharmony_ci#define M_DDP_VALID 0x1FFFF 99762306a36Sopenharmony_ci#define V_DDP_VALID(x) ((x) << S_DDP_VALID) 99862306a36Sopenharmony_ci#define G_DDP_VALID(x) (((x) >> S_DDP_VALID) & M_DDP_VALID) 99962306a36Sopenharmony_ci 100062306a36Sopenharmony_ci#define S_DDP_PPOD_MISMATCH 15 100162306a36Sopenharmony_ci#define V_DDP_PPOD_MISMATCH(x) ((x) << S_DDP_PPOD_MISMATCH) 100262306a36Sopenharmony_ci#define F_DDP_PPOD_MISMATCH V_DDP_PPOD_MISMATCH(1U) 100362306a36Sopenharmony_ci 100462306a36Sopenharmony_ci#define S_DDP_PDU 16 100562306a36Sopenharmony_ci#define V_DDP_PDU(x) ((x) << S_DDP_PDU) 100662306a36Sopenharmony_ci#define F_DDP_PDU V_DDP_PDU(1U) 100762306a36Sopenharmony_ci 100862306a36Sopenharmony_ci#define S_DDP_LLIMIT_ERR 17 100962306a36Sopenharmony_ci#define V_DDP_LLIMIT_ERR(x) ((x) << S_DDP_LLIMIT_ERR) 101062306a36Sopenharmony_ci#define F_DDP_LLIMIT_ERR V_DDP_LLIMIT_ERR(1U) 101162306a36Sopenharmony_ci 101262306a36Sopenharmony_ci#define S_DDP_PPOD_PARITY_ERR 18 101362306a36Sopenharmony_ci#define V_DDP_PPOD_PARITY_ERR(x) ((x) << S_DDP_PPOD_PARITY_ERR) 101462306a36Sopenharmony_ci#define F_DDP_PPOD_PARITY_ERR V_DDP_PPOD_PARITY_ERR(1U) 101562306a36Sopenharmony_ci 101662306a36Sopenharmony_ci#define S_DDP_PADDING_ERR 19 101762306a36Sopenharmony_ci#define V_DDP_PADDING_ERR(x) ((x) << S_DDP_PADDING_ERR) 101862306a36Sopenharmony_ci#define F_DDP_PADDING_ERR V_DDP_PADDING_ERR(1U) 101962306a36Sopenharmony_ci 102062306a36Sopenharmony_ci#define S_DDP_HDRCRC_ERR 20 102162306a36Sopenharmony_ci#define V_DDP_HDRCRC_ERR(x) ((x) << S_DDP_HDRCRC_ERR) 102262306a36Sopenharmony_ci#define F_DDP_HDRCRC_ERR V_DDP_HDRCRC_ERR(1U) 102362306a36Sopenharmony_ci 102462306a36Sopenharmony_ci#define S_DDP_DATACRC_ERR 21 102562306a36Sopenharmony_ci#define V_DDP_DATACRC_ERR(x) ((x) << S_DDP_DATACRC_ERR) 102662306a36Sopenharmony_ci#define F_DDP_DATACRC_ERR V_DDP_DATACRC_ERR(1U) 102762306a36Sopenharmony_ci 102862306a36Sopenharmony_ci#define S_DDP_INVALID_TAG 22 102962306a36Sopenharmony_ci#define V_DDP_INVALID_TAG(x) ((x) << S_DDP_INVALID_TAG) 103062306a36Sopenharmony_ci#define F_DDP_INVALID_TAG V_DDP_INVALID_TAG(1U) 103162306a36Sopenharmony_ci 103262306a36Sopenharmony_ci#define S_DDP_ULIMIT_ERR 23 103362306a36Sopenharmony_ci#define V_DDP_ULIMIT_ERR(x) ((x) << S_DDP_ULIMIT_ERR) 103462306a36Sopenharmony_ci#define F_DDP_ULIMIT_ERR V_DDP_ULIMIT_ERR(1U) 103562306a36Sopenharmony_ci 103662306a36Sopenharmony_ci#define S_DDP_OFFSET_ERR 24 103762306a36Sopenharmony_ci#define V_DDP_OFFSET_ERR(x) ((x) << S_DDP_OFFSET_ERR) 103862306a36Sopenharmony_ci#define F_DDP_OFFSET_ERR V_DDP_OFFSET_ERR(1U) 103962306a36Sopenharmony_ci 104062306a36Sopenharmony_ci#define S_DDP_COLOR_ERR 25 104162306a36Sopenharmony_ci#define V_DDP_COLOR_ERR(x) ((x) << S_DDP_COLOR_ERR) 104262306a36Sopenharmony_ci#define F_DDP_COLOR_ERR V_DDP_COLOR_ERR(1U) 104362306a36Sopenharmony_ci 104462306a36Sopenharmony_ci#define S_DDP_TID_MISMATCH 26 104562306a36Sopenharmony_ci#define V_DDP_TID_MISMATCH(x) ((x) << S_DDP_TID_MISMATCH) 104662306a36Sopenharmony_ci#define F_DDP_TID_MISMATCH V_DDP_TID_MISMATCH(1U) 104762306a36Sopenharmony_ci 104862306a36Sopenharmony_ci#define S_DDP_INVALID_PPOD 27 104962306a36Sopenharmony_ci#define V_DDP_INVALID_PPOD(x) ((x) << S_DDP_INVALID_PPOD) 105062306a36Sopenharmony_ci#define F_DDP_INVALID_PPOD V_DDP_INVALID_PPOD(1U) 105162306a36Sopenharmony_ci 105262306a36Sopenharmony_ci#define S_DDP_ULP_MODE 28 105362306a36Sopenharmony_ci#define M_DDP_ULP_MODE 0xF 105462306a36Sopenharmony_ci#define V_DDP_ULP_MODE(x) ((x) << S_DDP_ULP_MODE) 105562306a36Sopenharmony_ci#define G_DDP_ULP_MODE(x) (((x) >> S_DDP_ULP_MODE) & M_DDP_ULP_MODE) 105662306a36Sopenharmony_ci 105762306a36Sopenharmony_ci/* cpl_rx_data_ddp.ddp_report fields */ 105862306a36Sopenharmony_ci#define S_DDP_OFFSET 0 105962306a36Sopenharmony_ci#define M_DDP_OFFSET 0x3FFFFF 106062306a36Sopenharmony_ci#define V_DDP_OFFSET(x) ((x) << S_DDP_OFFSET) 106162306a36Sopenharmony_ci#define G_DDP_OFFSET(x) (((x) >> S_DDP_OFFSET) & M_DDP_OFFSET) 106262306a36Sopenharmony_ci 106362306a36Sopenharmony_ci#define S_DDP_URG 24 106462306a36Sopenharmony_ci#define V_DDP_URG(x) ((x) << S_DDP_URG) 106562306a36Sopenharmony_ci#define F_DDP_URG V_DDP_URG(1U) 106662306a36Sopenharmony_ci 106762306a36Sopenharmony_ci#define S_DDP_PSH 25 106862306a36Sopenharmony_ci#define V_DDP_PSH(x) ((x) << S_DDP_PSH) 106962306a36Sopenharmony_ci#define F_DDP_PSH V_DDP_PSH(1U) 107062306a36Sopenharmony_ci 107162306a36Sopenharmony_ci#define S_DDP_BUF_COMPLETE 26 107262306a36Sopenharmony_ci#define V_DDP_BUF_COMPLETE(x) ((x) << S_DDP_BUF_COMPLETE) 107362306a36Sopenharmony_ci#define F_DDP_BUF_COMPLETE V_DDP_BUF_COMPLETE(1U) 107462306a36Sopenharmony_ci 107562306a36Sopenharmony_ci#define S_DDP_BUF_TIMED_OUT 27 107662306a36Sopenharmony_ci#define V_DDP_BUF_TIMED_OUT(x) ((x) << S_DDP_BUF_TIMED_OUT) 107762306a36Sopenharmony_ci#define F_DDP_BUF_TIMED_OUT V_DDP_BUF_TIMED_OUT(1U) 107862306a36Sopenharmony_ci 107962306a36Sopenharmony_ci#define S_DDP_BUF_IDX 28 108062306a36Sopenharmony_ci#define V_DDP_BUF_IDX(x) ((x) << S_DDP_BUF_IDX) 108162306a36Sopenharmony_ci#define F_DDP_BUF_IDX V_DDP_BUF_IDX(1U) 108262306a36Sopenharmony_ci 108362306a36Sopenharmony_cistruct cpl_tx_pkt { 108462306a36Sopenharmony_ci WR_HDR; 108562306a36Sopenharmony_ci __be32 cntrl; 108662306a36Sopenharmony_ci __be32 len; 108762306a36Sopenharmony_ci}; 108862306a36Sopenharmony_ci 108962306a36Sopenharmony_cistruct cpl_tx_pkt_lso { 109062306a36Sopenharmony_ci WR_HDR; 109162306a36Sopenharmony_ci __be32 cntrl; 109262306a36Sopenharmony_ci __be32 len; 109362306a36Sopenharmony_ci 109462306a36Sopenharmony_ci __be32 rsvd; 109562306a36Sopenharmony_ci __be32 lso_info; 109662306a36Sopenharmony_ci}; 109762306a36Sopenharmony_ci 109862306a36Sopenharmony_ci/* cpl_tx_pkt*.cntrl fields */ 109962306a36Sopenharmony_ci#define S_TXPKT_VLAN 0 110062306a36Sopenharmony_ci#define M_TXPKT_VLAN 0xFFFF 110162306a36Sopenharmony_ci#define V_TXPKT_VLAN(x) ((x) << S_TXPKT_VLAN) 110262306a36Sopenharmony_ci#define G_TXPKT_VLAN(x) (((x) >> S_TXPKT_VLAN) & M_TXPKT_VLAN) 110362306a36Sopenharmony_ci 110462306a36Sopenharmony_ci#define S_TXPKT_INTF 16 110562306a36Sopenharmony_ci#define M_TXPKT_INTF 0xF 110662306a36Sopenharmony_ci#define V_TXPKT_INTF(x) ((x) << S_TXPKT_INTF) 110762306a36Sopenharmony_ci#define G_TXPKT_INTF(x) (((x) >> S_TXPKT_INTF) & M_TXPKT_INTF) 110862306a36Sopenharmony_ci 110962306a36Sopenharmony_ci#define S_TXPKT_IPCSUM_DIS 20 111062306a36Sopenharmony_ci#define V_TXPKT_IPCSUM_DIS(x) ((x) << S_TXPKT_IPCSUM_DIS) 111162306a36Sopenharmony_ci#define F_TXPKT_IPCSUM_DIS V_TXPKT_IPCSUM_DIS(1U) 111262306a36Sopenharmony_ci 111362306a36Sopenharmony_ci#define S_TXPKT_L4CSUM_DIS 21 111462306a36Sopenharmony_ci#define V_TXPKT_L4CSUM_DIS(x) ((x) << S_TXPKT_L4CSUM_DIS) 111562306a36Sopenharmony_ci#define F_TXPKT_L4CSUM_DIS V_TXPKT_L4CSUM_DIS(1U) 111662306a36Sopenharmony_ci 111762306a36Sopenharmony_ci#define S_TXPKT_VLAN_VLD 22 111862306a36Sopenharmony_ci#define V_TXPKT_VLAN_VLD(x) ((x) << S_TXPKT_VLAN_VLD) 111962306a36Sopenharmony_ci#define F_TXPKT_VLAN_VLD V_TXPKT_VLAN_VLD(1U) 112062306a36Sopenharmony_ci 112162306a36Sopenharmony_ci#define S_TXPKT_LOOPBACK 23 112262306a36Sopenharmony_ci#define V_TXPKT_LOOPBACK(x) ((x) << S_TXPKT_LOOPBACK) 112362306a36Sopenharmony_ci#define F_TXPKT_LOOPBACK V_TXPKT_LOOPBACK(1U) 112462306a36Sopenharmony_ci 112562306a36Sopenharmony_ci#define S_TXPKT_OPCODE 24 112662306a36Sopenharmony_ci#define M_TXPKT_OPCODE 0xFF 112762306a36Sopenharmony_ci#define V_TXPKT_OPCODE(x) ((x) << S_TXPKT_OPCODE) 112862306a36Sopenharmony_ci#define G_TXPKT_OPCODE(x) (((x) >> S_TXPKT_OPCODE) & M_TXPKT_OPCODE) 112962306a36Sopenharmony_ci 113062306a36Sopenharmony_ci/* cpl_tx_pkt_lso.lso_info fields */ 113162306a36Sopenharmony_ci#define S_LSO_MSS 0 113262306a36Sopenharmony_ci#define M_LSO_MSS 0x3FFF 113362306a36Sopenharmony_ci#define V_LSO_MSS(x) ((x) << S_LSO_MSS) 113462306a36Sopenharmony_ci#define G_LSO_MSS(x) (((x) >> S_LSO_MSS) & M_LSO_MSS) 113562306a36Sopenharmony_ci 113662306a36Sopenharmony_ci#define S_LSO_ETH_TYPE 14 113762306a36Sopenharmony_ci#define M_LSO_ETH_TYPE 0x3 113862306a36Sopenharmony_ci#define V_LSO_ETH_TYPE(x) ((x) << S_LSO_ETH_TYPE) 113962306a36Sopenharmony_ci#define G_LSO_ETH_TYPE(x) (((x) >> S_LSO_ETH_TYPE) & M_LSO_ETH_TYPE) 114062306a36Sopenharmony_ci 114162306a36Sopenharmony_ci#define S_LSO_TCPHDR_WORDS 16 114262306a36Sopenharmony_ci#define M_LSO_TCPHDR_WORDS 0xF 114362306a36Sopenharmony_ci#define V_LSO_TCPHDR_WORDS(x) ((x) << S_LSO_TCPHDR_WORDS) 114462306a36Sopenharmony_ci#define G_LSO_TCPHDR_WORDS(x) (((x) >> S_LSO_TCPHDR_WORDS) & M_LSO_TCPHDR_WORDS) 114562306a36Sopenharmony_ci 114662306a36Sopenharmony_ci#define S_LSO_IPHDR_WORDS 20 114762306a36Sopenharmony_ci#define M_LSO_IPHDR_WORDS 0xF 114862306a36Sopenharmony_ci#define V_LSO_IPHDR_WORDS(x) ((x) << S_LSO_IPHDR_WORDS) 114962306a36Sopenharmony_ci#define G_LSO_IPHDR_WORDS(x) (((x) >> S_LSO_IPHDR_WORDS) & M_LSO_IPHDR_WORDS) 115062306a36Sopenharmony_ci 115162306a36Sopenharmony_ci#define S_LSO_IPV6 24 115262306a36Sopenharmony_ci#define V_LSO_IPV6(x) ((x) << S_LSO_IPV6) 115362306a36Sopenharmony_ci#define F_LSO_IPV6 V_LSO_IPV6(1U) 115462306a36Sopenharmony_ci 115562306a36Sopenharmony_cistruct cpl_trace_pkt { 115662306a36Sopenharmony_ci#ifdef CHELSIO_FW 115762306a36Sopenharmony_ci __u8 rss_opcode; 115862306a36Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD) 115962306a36Sopenharmony_ci __u8 err:1; 116062306a36Sopenharmony_ci __u8:7; 116162306a36Sopenharmony_ci#else 116262306a36Sopenharmony_ci __u8:7; 116362306a36Sopenharmony_ci __u8 err:1; 116462306a36Sopenharmony_ci#endif 116562306a36Sopenharmony_ci __u8 rsvd0; 116662306a36Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD) 116762306a36Sopenharmony_ci __u8 qid:4; 116862306a36Sopenharmony_ci __u8:4; 116962306a36Sopenharmony_ci#else 117062306a36Sopenharmony_ci __u8:4; 117162306a36Sopenharmony_ci __u8 qid:4; 117262306a36Sopenharmony_ci#endif 117362306a36Sopenharmony_ci __be32 tstamp; 117462306a36Sopenharmony_ci#endif /* CHELSIO_FW */ 117562306a36Sopenharmony_ci 117662306a36Sopenharmony_ci __u8 opcode; 117762306a36Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD) 117862306a36Sopenharmony_ci __u8 iff:4; 117962306a36Sopenharmony_ci __u8:4; 118062306a36Sopenharmony_ci#else 118162306a36Sopenharmony_ci __u8:4; 118262306a36Sopenharmony_ci __u8 iff:4; 118362306a36Sopenharmony_ci#endif 118462306a36Sopenharmony_ci __u8 rsvd[4]; 118562306a36Sopenharmony_ci __be16 len; 118662306a36Sopenharmony_ci}; 118762306a36Sopenharmony_ci 118862306a36Sopenharmony_cistruct cpl_rx_pkt { 118962306a36Sopenharmony_ci RSS_HDR __u8 opcode; 119062306a36Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD) 119162306a36Sopenharmony_ci __u8 iff:4; 119262306a36Sopenharmony_ci __u8 csum_valid:1; 119362306a36Sopenharmony_ci __u8 ipmi_pkt:1; 119462306a36Sopenharmony_ci __u8 vlan_valid:1; 119562306a36Sopenharmony_ci __u8 fragment:1; 119662306a36Sopenharmony_ci#else 119762306a36Sopenharmony_ci __u8 fragment:1; 119862306a36Sopenharmony_ci __u8 vlan_valid:1; 119962306a36Sopenharmony_ci __u8 ipmi_pkt:1; 120062306a36Sopenharmony_ci __u8 csum_valid:1; 120162306a36Sopenharmony_ci __u8 iff:4; 120262306a36Sopenharmony_ci#endif 120362306a36Sopenharmony_ci __be16 csum; 120462306a36Sopenharmony_ci __be16 vlan; 120562306a36Sopenharmony_ci __be16 len; 120662306a36Sopenharmony_ci}; 120762306a36Sopenharmony_ci 120862306a36Sopenharmony_cistruct cpl_l2t_write_req { 120962306a36Sopenharmony_ci WR_HDR; 121062306a36Sopenharmony_ci union opcode_tid ot; 121162306a36Sopenharmony_ci __be32 params; 121262306a36Sopenharmony_ci __u8 rsvd[2]; 121362306a36Sopenharmony_ci __u8 dst_mac[6]; 121462306a36Sopenharmony_ci}; 121562306a36Sopenharmony_ci 121662306a36Sopenharmony_ci/* cpl_l2t_write_req.params fields */ 121762306a36Sopenharmony_ci#define S_L2T_W_IDX 0 121862306a36Sopenharmony_ci#define M_L2T_W_IDX 0x7FF 121962306a36Sopenharmony_ci#define V_L2T_W_IDX(x) ((x) << S_L2T_W_IDX) 122062306a36Sopenharmony_ci#define G_L2T_W_IDX(x) (((x) >> S_L2T_W_IDX) & M_L2T_W_IDX) 122162306a36Sopenharmony_ci 122262306a36Sopenharmony_ci#define S_L2T_W_VLAN 11 122362306a36Sopenharmony_ci#define M_L2T_W_VLAN 0xFFF 122462306a36Sopenharmony_ci#define V_L2T_W_VLAN(x) ((x) << S_L2T_W_VLAN) 122562306a36Sopenharmony_ci#define G_L2T_W_VLAN(x) (((x) >> S_L2T_W_VLAN) & M_L2T_W_VLAN) 122662306a36Sopenharmony_ci 122762306a36Sopenharmony_ci#define S_L2T_W_IFF 23 122862306a36Sopenharmony_ci#define M_L2T_W_IFF 0xF 122962306a36Sopenharmony_ci#define V_L2T_W_IFF(x) ((x) << S_L2T_W_IFF) 123062306a36Sopenharmony_ci#define G_L2T_W_IFF(x) (((x) >> S_L2T_W_IFF) & M_L2T_W_IFF) 123162306a36Sopenharmony_ci 123262306a36Sopenharmony_ci#define S_L2T_W_PRIO 27 123362306a36Sopenharmony_ci#define M_L2T_W_PRIO 0x7 123462306a36Sopenharmony_ci#define V_L2T_W_PRIO(x) ((x) << S_L2T_W_PRIO) 123562306a36Sopenharmony_ci#define G_L2T_W_PRIO(x) (((x) >> S_L2T_W_PRIO) & M_L2T_W_PRIO) 123662306a36Sopenharmony_ci 123762306a36Sopenharmony_cistruct cpl_l2t_write_rpl { 123862306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 123962306a36Sopenharmony_ci __u8 status; 124062306a36Sopenharmony_ci __u8 rsvd[3]; 124162306a36Sopenharmony_ci}; 124262306a36Sopenharmony_ci 124362306a36Sopenharmony_cistruct cpl_l2t_read_req { 124462306a36Sopenharmony_ci WR_HDR; 124562306a36Sopenharmony_ci union opcode_tid ot; 124662306a36Sopenharmony_ci __be16 rsvd; 124762306a36Sopenharmony_ci __be16 l2t_idx; 124862306a36Sopenharmony_ci}; 124962306a36Sopenharmony_ci 125062306a36Sopenharmony_cistruct cpl_l2t_read_rpl { 125162306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 125262306a36Sopenharmony_ci __be32 params; 125362306a36Sopenharmony_ci __u8 rsvd[2]; 125462306a36Sopenharmony_ci __u8 dst_mac[6]; 125562306a36Sopenharmony_ci}; 125662306a36Sopenharmony_ci 125762306a36Sopenharmony_ci/* cpl_l2t_read_rpl.params fields */ 125862306a36Sopenharmony_ci#define S_L2T_R_PRIO 0 125962306a36Sopenharmony_ci#define M_L2T_R_PRIO 0x7 126062306a36Sopenharmony_ci#define V_L2T_R_PRIO(x) ((x) << S_L2T_R_PRIO) 126162306a36Sopenharmony_ci#define G_L2T_R_PRIO(x) (((x) >> S_L2T_R_PRIO) & M_L2T_R_PRIO) 126262306a36Sopenharmony_ci 126362306a36Sopenharmony_ci#define S_L2T_R_VLAN 8 126462306a36Sopenharmony_ci#define M_L2T_R_VLAN 0xFFF 126562306a36Sopenharmony_ci#define V_L2T_R_VLAN(x) ((x) << S_L2T_R_VLAN) 126662306a36Sopenharmony_ci#define G_L2T_R_VLAN(x) (((x) >> S_L2T_R_VLAN) & M_L2T_R_VLAN) 126762306a36Sopenharmony_ci 126862306a36Sopenharmony_ci#define S_L2T_R_IFF 20 126962306a36Sopenharmony_ci#define M_L2T_R_IFF 0xF 127062306a36Sopenharmony_ci#define V_L2T_R_IFF(x) ((x) << S_L2T_R_IFF) 127162306a36Sopenharmony_ci#define G_L2T_R_IFF(x) (((x) >> S_L2T_R_IFF) & M_L2T_R_IFF) 127262306a36Sopenharmony_ci 127362306a36Sopenharmony_ci#define S_L2T_STATUS 24 127462306a36Sopenharmony_ci#define M_L2T_STATUS 0xFF 127562306a36Sopenharmony_ci#define V_L2T_STATUS(x) ((x) << S_L2T_STATUS) 127662306a36Sopenharmony_ci#define G_L2T_STATUS(x) (((x) >> S_L2T_STATUS) & M_L2T_STATUS) 127762306a36Sopenharmony_ci 127862306a36Sopenharmony_cistruct cpl_smt_write_req { 127962306a36Sopenharmony_ci WR_HDR; 128062306a36Sopenharmony_ci union opcode_tid ot; 128162306a36Sopenharmony_ci __u8 rsvd0; 128262306a36Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD) 128362306a36Sopenharmony_ci __u8 mtu_idx:4; 128462306a36Sopenharmony_ci __u8 iff:4; 128562306a36Sopenharmony_ci#else 128662306a36Sopenharmony_ci __u8 iff:4; 128762306a36Sopenharmony_ci __u8 mtu_idx:4; 128862306a36Sopenharmony_ci#endif 128962306a36Sopenharmony_ci __be16 rsvd2; 129062306a36Sopenharmony_ci __be16 rsvd3; 129162306a36Sopenharmony_ci __u8 src_mac1[6]; 129262306a36Sopenharmony_ci __be16 rsvd4; 129362306a36Sopenharmony_ci __u8 src_mac0[6]; 129462306a36Sopenharmony_ci}; 129562306a36Sopenharmony_ci 129662306a36Sopenharmony_cistruct cpl_smt_write_rpl { 129762306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 129862306a36Sopenharmony_ci __u8 status; 129962306a36Sopenharmony_ci __u8 rsvd[3]; 130062306a36Sopenharmony_ci}; 130162306a36Sopenharmony_ci 130262306a36Sopenharmony_cistruct cpl_smt_read_req { 130362306a36Sopenharmony_ci WR_HDR; 130462306a36Sopenharmony_ci union opcode_tid ot; 130562306a36Sopenharmony_ci __u8 rsvd0; 130662306a36Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD) 130762306a36Sopenharmony_ci __u8:4; 130862306a36Sopenharmony_ci __u8 iff:4; 130962306a36Sopenharmony_ci#else 131062306a36Sopenharmony_ci __u8 iff:4; 131162306a36Sopenharmony_ci __u8:4; 131262306a36Sopenharmony_ci#endif 131362306a36Sopenharmony_ci __be16 rsvd2; 131462306a36Sopenharmony_ci}; 131562306a36Sopenharmony_ci 131662306a36Sopenharmony_cistruct cpl_smt_read_rpl { 131762306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 131862306a36Sopenharmony_ci __u8 status; 131962306a36Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD) 132062306a36Sopenharmony_ci __u8 mtu_idx:4; 132162306a36Sopenharmony_ci __u8:4; 132262306a36Sopenharmony_ci#else 132362306a36Sopenharmony_ci __u8:4; 132462306a36Sopenharmony_ci __u8 mtu_idx:4; 132562306a36Sopenharmony_ci#endif 132662306a36Sopenharmony_ci __be16 rsvd2; 132762306a36Sopenharmony_ci __be16 rsvd3; 132862306a36Sopenharmony_ci __u8 src_mac1[6]; 132962306a36Sopenharmony_ci __be16 rsvd4; 133062306a36Sopenharmony_ci __u8 src_mac0[6]; 133162306a36Sopenharmony_ci}; 133262306a36Sopenharmony_ci 133362306a36Sopenharmony_cistruct cpl_rte_delete_req { 133462306a36Sopenharmony_ci WR_HDR; 133562306a36Sopenharmony_ci union opcode_tid ot; 133662306a36Sopenharmony_ci __be32 params; 133762306a36Sopenharmony_ci}; 133862306a36Sopenharmony_ci 133962306a36Sopenharmony_ci/* { cpl_rte_delete_req, cpl_rte_read_req }.params fields */ 134062306a36Sopenharmony_ci#define S_RTE_REQ_LUT_IX 8 134162306a36Sopenharmony_ci#define M_RTE_REQ_LUT_IX 0x7FF 134262306a36Sopenharmony_ci#define V_RTE_REQ_LUT_IX(x) ((x) << S_RTE_REQ_LUT_IX) 134362306a36Sopenharmony_ci#define G_RTE_REQ_LUT_IX(x) (((x) >> S_RTE_REQ_LUT_IX) & M_RTE_REQ_LUT_IX) 134462306a36Sopenharmony_ci 134562306a36Sopenharmony_ci#define S_RTE_REQ_LUT_BASE 19 134662306a36Sopenharmony_ci#define M_RTE_REQ_LUT_BASE 0x7FF 134762306a36Sopenharmony_ci#define V_RTE_REQ_LUT_BASE(x) ((x) << S_RTE_REQ_LUT_BASE) 134862306a36Sopenharmony_ci#define G_RTE_REQ_LUT_BASE(x) (((x) >> S_RTE_REQ_LUT_BASE) & M_RTE_REQ_LUT_BASE) 134962306a36Sopenharmony_ci 135062306a36Sopenharmony_ci#define S_RTE_READ_REQ_SELECT 31 135162306a36Sopenharmony_ci#define V_RTE_READ_REQ_SELECT(x) ((x) << S_RTE_READ_REQ_SELECT) 135262306a36Sopenharmony_ci#define F_RTE_READ_REQ_SELECT V_RTE_READ_REQ_SELECT(1U) 135362306a36Sopenharmony_ci 135462306a36Sopenharmony_cistruct cpl_rte_delete_rpl { 135562306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 135662306a36Sopenharmony_ci __u8 status; 135762306a36Sopenharmony_ci __u8 rsvd[3]; 135862306a36Sopenharmony_ci}; 135962306a36Sopenharmony_ci 136062306a36Sopenharmony_cistruct cpl_rte_write_req { 136162306a36Sopenharmony_ci WR_HDR; 136262306a36Sopenharmony_ci union opcode_tid ot; 136362306a36Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD) 136462306a36Sopenharmony_ci __u8:6; 136562306a36Sopenharmony_ci __u8 write_tcam:1; 136662306a36Sopenharmony_ci __u8 write_l2t_lut:1; 136762306a36Sopenharmony_ci#else 136862306a36Sopenharmony_ci __u8 write_l2t_lut:1; 136962306a36Sopenharmony_ci __u8 write_tcam:1; 137062306a36Sopenharmony_ci __u8:6; 137162306a36Sopenharmony_ci#endif 137262306a36Sopenharmony_ci __u8 rsvd[3]; 137362306a36Sopenharmony_ci __be32 lut_params; 137462306a36Sopenharmony_ci __be16 rsvd2; 137562306a36Sopenharmony_ci __be16 l2t_idx; 137662306a36Sopenharmony_ci __be32 netmask; 137762306a36Sopenharmony_ci __be32 faddr; 137862306a36Sopenharmony_ci}; 137962306a36Sopenharmony_ci 138062306a36Sopenharmony_ci/* cpl_rte_write_req.lut_params fields */ 138162306a36Sopenharmony_ci#define S_RTE_WRITE_REQ_LUT_IX 10 138262306a36Sopenharmony_ci#define M_RTE_WRITE_REQ_LUT_IX 0x7FF 138362306a36Sopenharmony_ci#define V_RTE_WRITE_REQ_LUT_IX(x) ((x) << S_RTE_WRITE_REQ_LUT_IX) 138462306a36Sopenharmony_ci#define G_RTE_WRITE_REQ_LUT_IX(x) (((x) >> S_RTE_WRITE_REQ_LUT_IX) & M_RTE_WRITE_REQ_LUT_IX) 138562306a36Sopenharmony_ci 138662306a36Sopenharmony_ci#define S_RTE_WRITE_REQ_LUT_BASE 21 138762306a36Sopenharmony_ci#define M_RTE_WRITE_REQ_LUT_BASE 0x7FF 138862306a36Sopenharmony_ci#define V_RTE_WRITE_REQ_LUT_BASE(x) ((x) << S_RTE_WRITE_REQ_LUT_BASE) 138962306a36Sopenharmony_ci#define G_RTE_WRITE_REQ_LUT_BASE(x) (((x) >> S_RTE_WRITE_REQ_LUT_BASE) & M_RTE_WRITE_REQ_LUT_BASE) 139062306a36Sopenharmony_ci 139162306a36Sopenharmony_cistruct cpl_rte_write_rpl { 139262306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 139362306a36Sopenharmony_ci __u8 status; 139462306a36Sopenharmony_ci __u8 rsvd[3]; 139562306a36Sopenharmony_ci}; 139662306a36Sopenharmony_ci 139762306a36Sopenharmony_cistruct cpl_rte_read_req { 139862306a36Sopenharmony_ci WR_HDR; 139962306a36Sopenharmony_ci union opcode_tid ot; 140062306a36Sopenharmony_ci __be32 params; 140162306a36Sopenharmony_ci}; 140262306a36Sopenharmony_ci 140362306a36Sopenharmony_cistruct cpl_rte_read_rpl { 140462306a36Sopenharmony_ci RSS_HDR union opcode_tid ot; 140562306a36Sopenharmony_ci __u8 status; 140662306a36Sopenharmony_ci __u8 rsvd0; 140762306a36Sopenharmony_ci __be16 l2t_idx; 140862306a36Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD) 140962306a36Sopenharmony_ci __u8:7; 141062306a36Sopenharmony_ci __u8 select:1; 141162306a36Sopenharmony_ci#else 141262306a36Sopenharmony_ci __u8 select:1; 141362306a36Sopenharmony_ci __u8:7; 141462306a36Sopenharmony_ci#endif 141562306a36Sopenharmony_ci __u8 rsvd2[3]; 141662306a36Sopenharmony_ci __be32 addr; 141762306a36Sopenharmony_ci}; 141862306a36Sopenharmony_ci 141962306a36Sopenharmony_cistruct cpl_tid_release { 142062306a36Sopenharmony_ci WR_HDR; 142162306a36Sopenharmony_ci union opcode_tid ot; 142262306a36Sopenharmony_ci __be32 rsvd; 142362306a36Sopenharmony_ci}; 142462306a36Sopenharmony_ci 142562306a36Sopenharmony_cistruct cpl_barrier { 142662306a36Sopenharmony_ci WR_HDR; 142762306a36Sopenharmony_ci __u8 opcode; 142862306a36Sopenharmony_ci __u8 rsvd[7]; 142962306a36Sopenharmony_ci}; 143062306a36Sopenharmony_ci 143162306a36Sopenharmony_cistruct cpl_rdma_read_req { 143262306a36Sopenharmony_ci __u8 opcode; 143362306a36Sopenharmony_ci __u8 rsvd[15]; 143462306a36Sopenharmony_ci}; 143562306a36Sopenharmony_ci 143662306a36Sopenharmony_cistruct cpl_rdma_terminate { 143762306a36Sopenharmony_ci#ifdef CHELSIO_FW 143862306a36Sopenharmony_ci __u8 opcode; 143962306a36Sopenharmony_ci __u8 rsvd[2]; 144062306a36Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD) 144162306a36Sopenharmony_ci __u8 rspq:3; 144262306a36Sopenharmony_ci __u8:5; 144362306a36Sopenharmony_ci#else 144462306a36Sopenharmony_ci __u8:5; 144562306a36Sopenharmony_ci __u8 rspq:3; 144662306a36Sopenharmony_ci#endif 144762306a36Sopenharmony_ci __be32 tid_len; 144862306a36Sopenharmony_ci#endif 144962306a36Sopenharmony_ci __be32 msn; 145062306a36Sopenharmony_ci __be32 mo; 145162306a36Sopenharmony_ci __u8 data[]; 145262306a36Sopenharmony_ci}; 145362306a36Sopenharmony_ci 145462306a36Sopenharmony_ci/* cpl_rdma_terminate.tid_len fields */ 145562306a36Sopenharmony_ci#define S_FLIT_CNT 0 145662306a36Sopenharmony_ci#define M_FLIT_CNT 0xFF 145762306a36Sopenharmony_ci#define V_FLIT_CNT(x) ((x) << S_FLIT_CNT) 145862306a36Sopenharmony_ci#define G_FLIT_CNT(x) (((x) >> S_FLIT_CNT) & M_FLIT_CNT) 145962306a36Sopenharmony_ci 146062306a36Sopenharmony_ci#define S_TERM_TID 8 146162306a36Sopenharmony_ci#define M_TERM_TID 0xFFFFF 146262306a36Sopenharmony_ci#define V_TERM_TID(x) ((x) << S_TERM_TID) 146362306a36Sopenharmony_ci#define G_TERM_TID(x) (((x) >> S_TERM_TID) & M_TERM_TID) 146462306a36Sopenharmony_ci 146562306a36Sopenharmony_ci/* ULP_TX opcodes */ 146662306a36Sopenharmony_cienum { ULP_MEM_READ = 2, ULP_MEM_WRITE = 3, ULP_TXPKT = 4 }; 146762306a36Sopenharmony_ci 146862306a36Sopenharmony_ci#define S_ULPTX_CMD 28 146962306a36Sopenharmony_ci#define M_ULPTX_CMD 0xF 147062306a36Sopenharmony_ci#define V_ULPTX_CMD(x) ((x) << S_ULPTX_CMD) 147162306a36Sopenharmony_ci 147262306a36Sopenharmony_ci#define S_ULPTX_NFLITS 0 147362306a36Sopenharmony_ci#define M_ULPTX_NFLITS 0xFF 147462306a36Sopenharmony_ci#define V_ULPTX_NFLITS(x) ((x) << S_ULPTX_NFLITS) 147562306a36Sopenharmony_ci 147662306a36Sopenharmony_cistruct ulp_mem_io { 147762306a36Sopenharmony_ci WR_HDR; 147862306a36Sopenharmony_ci __be32 cmd_lock_addr; 147962306a36Sopenharmony_ci __be32 len; 148062306a36Sopenharmony_ci}; 148162306a36Sopenharmony_ci 148262306a36Sopenharmony_ci/* ulp_mem_io.cmd_lock_addr fields */ 148362306a36Sopenharmony_ci#define S_ULP_MEMIO_ADDR 0 148462306a36Sopenharmony_ci#define M_ULP_MEMIO_ADDR 0x7FFFFFF 148562306a36Sopenharmony_ci#define V_ULP_MEMIO_ADDR(x) ((x) << S_ULP_MEMIO_ADDR) 148662306a36Sopenharmony_ci#define S_ULP_MEMIO_LOCK 27 148762306a36Sopenharmony_ci#define V_ULP_MEMIO_LOCK(x) ((x) << S_ULP_MEMIO_LOCK) 148862306a36Sopenharmony_ci#define F_ULP_MEMIO_LOCK V_ULP_MEMIO_LOCK(1U) 148962306a36Sopenharmony_ci 149062306a36Sopenharmony_ci/* ulp_mem_io.len fields */ 149162306a36Sopenharmony_ci#define S_ULP_MEMIO_DATA_LEN 28 149262306a36Sopenharmony_ci#define M_ULP_MEMIO_DATA_LEN 0xF 149362306a36Sopenharmony_ci#define V_ULP_MEMIO_DATA_LEN(x) ((x) << S_ULP_MEMIO_DATA_LEN) 149462306a36Sopenharmony_ci 149562306a36Sopenharmony_ci#endif /* T3_CPL_H */ 1496