18c2ecf20Sopenharmony_ci/*
28c2ecf20Sopenharmony_ci * Copyright (c) 2004-2008 Chelsio, Inc. All rights reserved.
38c2ecf20Sopenharmony_ci *
48c2ecf20Sopenharmony_ci * This software is available to you under a choice of one of two
58c2ecf20Sopenharmony_ci * licenses.  You may choose to be licensed under the terms of the GNU
68c2ecf20Sopenharmony_ci * General Public License (GPL) Version 2, available from the file
78c2ecf20Sopenharmony_ci * COPYING in the main directory of this source tree, or the
88c2ecf20Sopenharmony_ci * OpenIB.org BSD license below:
98c2ecf20Sopenharmony_ci *
108c2ecf20Sopenharmony_ci *     Redistribution and use in source and binary forms, with or
118c2ecf20Sopenharmony_ci *     without modification, are permitted provided that the following
128c2ecf20Sopenharmony_ci *     conditions are met:
138c2ecf20Sopenharmony_ci *
148c2ecf20Sopenharmony_ci *      - Redistributions of source code must retain the above
158c2ecf20Sopenharmony_ci *        copyright notice, this list of conditions and the following
168c2ecf20Sopenharmony_ci *        disclaimer.
178c2ecf20Sopenharmony_ci *
188c2ecf20Sopenharmony_ci *      - Redistributions in binary form must reproduce the above
198c2ecf20Sopenharmony_ci *        copyright notice, this list of conditions and the following
208c2ecf20Sopenharmony_ci *        disclaimer in the documentation and/or other materials
218c2ecf20Sopenharmony_ci *        provided with the distribution.
228c2ecf20Sopenharmony_ci *
238c2ecf20Sopenharmony_ci * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
248c2ecf20Sopenharmony_ci * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
258c2ecf20Sopenharmony_ci * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
268c2ecf20Sopenharmony_ci * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
278c2ecf20Sopenharmony_ci * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
288c2ecf20Sopenharmony_ci * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
298c2ecf20Sopenharmony_ci * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
308c2ecf20Sopenharmony_ci * SOFTWARE.
318c2ecf20Sopenharmony_ci */
328c2ecf20Sopenharmony_ci#ifndef T3_CPL_H
338c2ecf20Sopenharmony_ci#define T3_CPL_H
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ci#if !defined(__LITTLE_ENDIAN_BITFIELD) && !defined(__BIG_ENDIAN_BITFIELD)
368c2ecf20Sopenharmony_ci# include <asm/byteorder.h>
378c2ecf20Sopenharmony_ci#endif
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_cienum CPL_opcode {
408c2ecf20Sopenharmony_ci	CPL_PASS_OPEN_REQ = 0x1,
418c2ecf20Sopenharmony_ci	CPL_PASS_ACCEPT_RPL = 0x2,
428c2ecf20Sopenharmony_ci	CPL_ACT_OPEN_REQ = 0x3,
438c2ecf20Sopenharmony_ci	CPL_SET_TCB = 0x4,
448c2ecf20Sopenharmony_ci	CPL_SET_TCB_FIELD = 0x5,
458c2ecf20Sopenharmony_ci	CPL_GET_TCB = 0x6,
468c2ecf20Sopenharmony_ci	CPL_PCMD = 0x7,
478c2ecf20Sopenharmony_ci	CPL_CLOSE_CON_REQ = 0x8,
488c2ecf20Sopenharmony_ci	CPL_CLOSE_LISTSRV_REQ = 0x9,
498c2ecf20Sopenharmony_ci	CPL_ABORT_REQ = 0xA,
508c2ecf20Sopenharmony_ci	CPL_ABORT_RPL = 0xB,
518c2ecf20Sopenharmony_ci	CPL_TX_DATA = 0xC,
528c2ecf20Sopenharmony_ci	CPL_RX_DATA_ACK = 0xD,
538c2ecf20Sopenharmony_ci	CPL_TX_PKT = 0xE,
548c2ecf20Sopenharmony_ci	CPL_RTE_DELETE_REQ = 0xF,
558c2ecf20Sopenharmony_ci	CPL_RTE_WRITE_REQ = 0x10,
568c2ecf20Sopenharmony_ci	CPL_RTE_READ_REQ = 0x11,
578c2ecf20Sopenharmony_ci	CPL_L2T_WRITE_REQ = 0x12,
588c2ecf20Sopenharmony_ci	CPL_L2T_READ_REQ = 0x13,
598c2ecf20Sopenharmony_ci	CPL_SMT_WRITE_REQ = 0x14,
608c2ecf20Sopenharmony_ci	CPL_SMT_READ_REQ = 0x15,
618c2ecf20Sopenharmony_ci	CPL_TX_PKT_LSO = 0x16,
628c2ecf20Sopenharmony_ci	CPL_PCMD_READ = 0x17,
638c2ecf20Sopenharmony_ci	CPL_BARRIER = 0x18,
648c2ecf20Sopenharmony_ci	CPL_TID_RELEASE = 0x1A,
658c2ecf20Sopenharmony_ci
668c2ecf20Sopenharmony_ci	CPL_CLOSE_LISTSRV_RPL = 0x20,
678c2ecf20Sopenharmony_ci	CPL_ERROR = 0x21,
688c2ecf20Sopenharmony_ci	CPL_GET_TCB_RPL = 0x22,
698c2ecf20Sopenharmony_ci	CPL_L2T_WRITE_RPL = 0x23,
708c2ecf20Sopenharmony_ci	CPL_PCMD_READ_RPL = 0x24,
718c2ecf20Sopenharmony_ci	CPL_PCMD_RPL = 0x25,
728c2ecf20Sopenharmony_ci	CPL_PEER_CLOSE = 0x26,
738c2ecf20Sopenharmony_ci	CPL_RTE_DELETE_RPL = 0x27,
748c2ecf20Sopenharmony_ci	CPL_RTE_WRITE_RPL = 0x28,
758c2ecf20Sopenharmony_ci	CPL_RX_DDP_COMPLETE = 0x29,
768c2ecf20Sopenharmony_ci	CPL_RX_PHYS_ADDR = 0x2A,
778c2ecf20Sopenharmony_ci	CPL_RX_PKT = 0x2B,
788c2ecf20Sopenharmony_ci	CPL_RX_URG_NOTIFY = 0x2C,
798c2ecf20Sopenharmony_ci	CPL_SET_TCB_RPL = 0x2D,
808c2ecf20Sopenharmony_ci	CPL_SMT_WRITE_RPL = 0x2E,
818c2ecf20Sopenharmony_ci	CPL_TX_DATA_ACK = 0x2F,
828c2ecf20Sopenharmony_ci
838c2ecf20Sopenharmony_ci	CPL_ABORT_REQ_RSS = 0x30,
848c2ecf20Sopenharmony_ci	CPL_ABORT_RPL_RSS = 0x31,
858c2ecf20Sopenharmony_ci	CPL_CLOSE_CON_RPL = 0x32,
868c2ecf20Sopenharmony_ci	CPL_ISCSI_HDR = 0x33,
878c2ecf20Sopenharmony_ci	CPL_L2T_READ_RPL = 0x34,
888c2ecf20Sopenharmony_ci	CPL_RDMA_CQE = 0x35,
898c2ecf20Sopenharmony_ci	CPL_RDMA_CQE_READ_RSP = 0x36,
908c2ecf20Sopenharmony_ci	CPL_RDMA_CQE_ERR = 0x37,
918c2ecf20Sopenharmony_ci	CPL_RTE_READ_RPL = 0x38,
928c2ecf20Sopenharmony_ci	CPL_RX_DATA = 0x39,
938c2ecf20Sopenharmony_ci
948c2ecf20Sopenharmony_ci	CPL_ACT_OPEN_RPL = 0x40,
958c2ecf20Sopenharmony_ci	CPL_PASS_OPEN_RPL = 0x41,
968c2ecf20Sopenharmony_ci	CPL_RX_DATA_DDP = 0x42,
978c2ecf20Sopenharmony_ci	CPL_SMT_READ_RPL = 0x43,
988c2ecf20Sopenharmony_ci
998c2ecf20Sopenharmony_ci	CPL_ACT_ESTABLISH = 0x50,
1008c2ecf20Sopenharmony_ci	CPL_PASS_ESTABLISH = 0x51,
1018c2ecf20Sopenharmony_ci
1028c2ecf20Sopenharmony_ci	CPL_PASS_ACCEPT_REQ = 0x70,
1038c2ecf20Sopenharmony_ci
1048c2ecf20Sopenharmony_ci	CPL_ASYNC_NOTIF = 0x80,	/* fake opcode for async notifications */
1058c2ecf20Sopenharmony_ci
1068c2ecf20Sopenharmony_ci	CPL_TX_DMA_ACK = 0xA0,
1078c2ecf20Sopenharmony_ci	CPL_RDMA_READ_REQ = 0xA1,
1088c2ecf20Sopenharmony_ci	CPL_RDMA_TERMINATE = 0xA2,
1098c2ecf20Sopenharmony_ci	CPL_TRACE_PKT = 0xA3,
1108c2ecf20Sopenharmony_ci	CPL_RDMA_EC_STATUS = 0xA5,
1118c2ecf20Sopenharmony_ci
1128c2ecf20Sopenharmony_ci	NUM_CPL_CMDS		/* must be last and previous entries must be sorted */
1138c2ecf20Sopenharmony_ci};
1148c2ecf20Sopenharmony_ci
1158c2ecf20Sopenharmony_cienum CPL_error {
1168c2ecf20Sopenharmony_ci	CPL_ERR_NONE = 0,
1178c2ecf20Sopenharmony_ci	CPL_ERR_TCAM_PARITY = 1,
1188c2ecf20Sopenharmony_ci	CPL_ERR_TCAM_FULL = 3,
1198c2ecf20Sopenharmony_ci	CPL_ERR_CONN_RESET = 20,
1208c2ecf20Sopenharmony_ci	CPL_ERR_CONN_EXIST = 22,
1218c2ecf20Sopenharmony_ci	CPL_ERR_ARP_MISS = 23,
1228c2ecf20Sopenharmony_ci	CPL_ERR_BAD_SYN = 24,
1238c2ecf20Sopenharmony_ci	CPL_ERR_CONN_TIMEDOUT = 30,
1248c2ecf20Sopenharmony_ci	CPL_ERR_XMIT_TIMEDOUT = 31,
1258c2ecf20Sopenharmony_ci	CPL_ERR_PERSIST_TIMEDOUT = 32,
1268c2ecf20Sopenharmony_ci	CPL_ERR_FINWAIT2_TIMEDOUT = 33,
1278c2ecf20Sopenharmony_ci	CPL_ERR_KEEPALIVE_TIMEDOUT = 34,
1288c2ecf20Sopenharmony_ci	CPL_ERR_RTX_NEG_ADVICE = 35,
1298c2ecf20Sopenharmony_ci	CPL_ERR_PERSIST_NEG_ADVICE = 36,
1308c2ecf20Sopenharmony_ci	CPL_ERR_ABORT_FAILED = 42,
1318c2ecf20Sopenharmony_ci	CPL_ERR_GENERAL = 99
1328c2ecf20Sopenharmony_ci};
1338c2ecf20Sopenharmony_ci
1348c2ecf20Sopenharmony_cienum {
1358c2ecf20Sopenharmony_ci	CPL_CONN_POLICY_AUTO = 0,
1368c2ecf20Sopenharmony_ci	CPL_CONN_POLICY_ASK = 1,
1378c2ecf20Sopenharmony_ci	CPL_CONN_POLICY_DENY = 3
1388c2ecf20Sopenharmony_ci};
1398c2ecf20Sopenharmony_ci
1408c2ecf20Sopenharmony_cienum {
1418c2ecf20Sopenharmony_ci	ULP_MODE_NONE = 0,
1428c2ecf20Sopenharmony_ci	ULP_MODE_ISCSI = 2,
1438c2ecf20Sopenharmony_ci	ULP_MODE_RDMA = 4,
1448c2ecf20Sopenharmony_ci	ULP_MODE_TCPDDP = 5
1458c2ecf20Sopenharmony_ci};
1468c2ecf20Sopenharmony_ci
1478c2ecf20Sopenharmony_cienum {
1488c2ecf20Sopenharmony_ci	ULP_CRC_HEADER = 1 << 0,
1498c2ecf20Sopenharmony_ci	ULP_CRC_DATA = 1 << 1
1508c2ecf20Sopenharmony_ci};
1518c2ecf20Sopenharmony_ci
1528c2ecf20Sopenharmony_cienum {
1538c2ecf20Sopenharmony_ci	CPL_PASS_OPEN_ACCEPT,
1548c2ecf20Sopenharmony_ci	CPL_PASS_OPEN_REJECT
1558c2ecf20Sopenharmony_ci};
1568c2ecf20Sopenharmony_ci
1578c2ecf20Sopenharmony_cienum {
1588c2ecf20Sopenharmony_ci	CPL_ABORT_SEND_RST = 0,
1598c2ecf20Sopenharmony_ci	CPL_ABORT_NO_RST,
1608c2ecf20Sopenharmony_ci	CPL_ABORT_POST_CLOSE_REQ = 2
1618c2ecf20Sopenharmony_ci};
1628c2ecf20Sopenharmony_ci
1638c2ecf20Sopenharmony_cienum {				/* TX_PKT_LSO ethernet types */
1648c2ecf20Sopenharmony_ci	CPL_ETH_II,
1658c2ecf20Sopenharmony_ci	CPL_ETH_II_VLAN,
1668c2ecf20Sopenharmony_ci	CPL_ETH_802_3,
1678c2ecf20Sopenharmony_ci	CPL_ETH_802_3_VLAN
1688c2ecf20Sopenharmony_ci};
1698c2ecf20Sopenharmony_ci
1708c2ecf20Sopenharmony_cienum {				/* TCP congestion control algorithms */
1718c2ecf20Sopenharmony_ci	CONG_ALG_RENO,
1728c2ecf20Sopenharmony_ci	CONG_ALG_TAHOE,
1738c2ecf20Sopenharmony_ci	CONG_ALG_NEWRENO,
1748c2ecf20Sopenharmony_ci	CONG_ALG_HIGHSPEED
1758c2ecf20Sopenharmony_ci};
1768c2ecf20Sopenharmony_ci
1778c2ecf20Sopenharmony_cienum {			/* RSS hash type */
1788c2ecf20Sopenharmony_ci	RSS_HASH_NONE = 0,
1798c2ecf20Sopenharmony_ci	RSS_HASH_2_TUPLE = 1,
1808c2ecf20Sopenharmony_ci	RSS_HASH_4_TUPLE = 2,
1818c2ecf20Sopenharmony_ci	RSS_HASH_TCPV6 = 3
1828c2ecf20Sopenharmony_ci};
1838c2ecf20Sopenharmony_ci
1848c2ecf20Sopenharmony_ciunion opcode_tid {
1858c2ecf20Sopenharmony_ci	__be32 opcode_tid;
1868c2ecf20Sopenharmony_ci	__u8 opcode;
1878c2ecf20Sopenharmony_ci};
1888c2ecf20Sopenharmony_ci
1898c2ecf20Sopenharmony_ci#define S_OPCODE 24
1908c2ecf20Sopenharmony_ci#define V_OPCODE(x) ((x) << S_OPCODE)
1918c2ecf20Sopenharmony_ci#define G_OPCODE(x) (((x) >> S_OPCODE) & 0xFF)
1928c2ecf20Sopenharmony_ci#define G_TID(x)    ((x) & 0xFFFFFF)
1938c2ecf20Sopenharmony_ci
1948c2ecf20Sopenharmony_ci#define S_QNUM 0
1958c2ecf20Sopenharmony_ci#define G_QNUM(x) (((x) >> S_QNUM) & 0xFFFF)
1968c2ecf20Sopenharmony_ci
1978c2ecf20Sopenharmony_ci#define S_HASHTYPE 22
1988c2ecf20Sopenharmony_ci#define M_HASHTYPE 0x3
1998c2ecf20Sopenharmony_ci#define G_HASHTYPE(x) (((x) >> S_HASHTYPE) & M_HASHTYPE)
2008c2ecf20Sopenharmony_ci
2018c2ecf20Sopenharmony_ci/* tid is assumed to be 24-bits */
2028c2ecf20Sopenharmony_ci#define MK_OPCODE_TID(opcode, tid) (V_OPCODE(opcode) | (tid))
2038c2ecf20Sopenharmony_ci
2048c2ecf20Sopenharmony_ci#define OPCODE_TID(cmd) ((cmd)->ot.opcode_tid)
2058c2ecf20Sopenharmony_ci
2068c2ecf20Sopenharmony_ci/* extract the TID from a CPL command */
2078c2ecf20Sopenharmony_ci#define GET_TID(cmd) (G_TID(ntohl(OPCODE_TID(cmd))))
2088c2ecf20Sopenharmony_ci
2098c2ecf20Sopenharmony_cistruct tcp_options {
2108c2ecf20Sopenharmony_ci	__be16 mss;
2118c2ecf20Sopenharmony_ci	__u8 wsf;
2128c2ecf20Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD)
2138c2ecf20Sopenharmony_ci	 __u8:5;
2148c2ecf20Sopenharmony_ci	__u8 ecn:1;
2158c2ecf20Sopenharmony_ci	__u8 sack:1;
2168c2ecf20Sopenharmony_ci	__u8 tstamp:1;
2178c2ecf20Sopenharmony_ci#else
2188c2ecf20Sopenharmony_ci	__u8 tstamp:1;
2198c2ecf20Sopenharmony_ci	__u8 sack:1;
2208c2ecf20Sopenharmony_ci	__u8 ecn:1;
2218c2ecf20Sopenharmony_ci	 __u8:5;
2228c2ecf20Sopenharmony_ci#endif
2238c2ecf20Sopenharmony_ci};
2248c2ecf20Sopenharmony_ci
2258c2ecf20Sopenharmony_cistruct rss_header {
2268c2ecf20Sopenharmony_ci	__u8 opcode;
2278c2ecf20Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD)
2288c2ecf20Sopenharmony_ci	__u8 cpu_idx:6;
2298c2ecf20Sopenharmony_ci	__u8 hash_type:2;
2308c2ecf20Sopenharmony_ci#else
2318c2ecf20Sopenharmony_ci	__u8 hash_type:2;
2328c2ecf20Sopenharmony_ci	__u8 cpu_idx:6;
2338c2ecf20Sopenharmony_ci#endif
2348c2ecf20Sopenharmony_ci	__be16 cq_idx;
2358c2ecf20Sopenharmony_ci	__be32 rss_hash_val;
2368c2ecf20Sopenharmony_ci};
2378c2ecf20Sopenharmony_ci
2388c2ecf20Sopenharmony_ci#ifndef CHELSIO_FW
2398c2ecf20Sopenharmony_cistruct work_request_hdr {
2408c2ecf20Sopenharmony_ci	__be32 wr_hi;
2418c2ecf20Sopenharmony_ci	__be32 wr_lo;
2428c2ecf20Sopenharmony_ci};
2438c2ecf20Sopenharmony_ci
2448c2ecf20Sopenharmony_ci/* wr_hi fields */
2458c2ecf20Sopenharmony_ci#define S_WR_SGE_CREDITS    0
2468c2ecf20Sopenharmony_ci#define M_WR_SGE_CREDITS    0xFF
2478c2ecf20Sopenharmony_ci#define V_WR_SGE_CREDITS(x) ((x) << S_WR_SGE_CREDITS)
2488c2ecf20Sopenharmony_ci#define G_WR_SGE_CREDITS(x) (((x) >> S_WR_SGE_CREDITS) & M_WR_SGE_CREDITS)
2498c2ecf20Sopenharmony_ci
2508c2ecf20Sopenharmony_ci#define S_WR_SGLSFLT    8
2518c2ecf20Sopenharmony_ci#define M_WR_SGLSFLT    0xFF
2528c2ecf20Sopenharmony_ci#define V_WR_SGLSFLT(x) ((x) << S_WR_SGLSFLT)
2538c2ecf20Sopenharmony_ci#define G_WR_SGLSFLT(x) (((x) >> S_WR_SGLSFLT) & M_WR_SGLSFLT)
2548c2ecf20Sopenharmony_ci
2558c2ecf20Sopenharmony_ci#define S_WR_BCNTLFLT    16
2568c2ecf20Sopenharmony_ci#define M_WR_BCNTLFLT    0xF
2578c2ecf20Sopenharmony_ci#define V_WR_BCNTLFLT(x) ((x) << S_WR_BCNTLFLT)
2588c2ecf20Sopenharmony_ci#define G_WR_BCNTLFLT(x) (((x) >> S_WR_BCNTLFLT) & M_WR_BCNTLFLT)
2598c2ecf20Sopenharmony_ci
2608c2ecf20Sopenharmony_ci#define S_WR_DATATYPE    20
2618c2ecf20Sopenharmony_ci#define V_WR_DATATYPE(x) ((x) << S_WR_DATATYPE)
2628c2ecf20Sopenharmony_ci#define F_WR_DATATYPE    V_WR_DATATYPE(1U)
2638c2ecf20Sopenharmony_ci
2648c2ecf20Sopenharmony_ci#define S_WR_COMPL    21
2658c2ecf20Sopenharmony_ci#define V_WR_COMPL(x) ((x) << S_WR_COMPL)
2668c2ecf20Sopenharmony_ci#define F_WR_COMPL    V_WR_COMPL(1U)
2678c2ecf20Sopenharmony_ci
2688c2ecf20Sopenharmony_ci#define S_WR_EOP    22
2698c2ecf20Sopenharmony_ci#define V_WR_EOP(x) ((x) << S_WR_EOP)
2708c2ecf20Sopenharmony_ci#define F_WR_EOP    V_WR_EOP(1U)
2718c2ecf20Sopenharmony_ci
2728c2ecf20Sopenharmony_ci#define S_WR_SOP    23
2738c2ecf20Sopenharmony_ci#define V_WR_SOP(x) ((x) << S_WR_SOP)
2748c2ecf20Sopenharmony_ci#define F_WR_SOP    V_WR_SOP(1U)
2758c2ecf20Sopenharmony_ci
2768c2ecf20Sopenharmony_ci#define S_WR_OP    24
2778c2ecf20Sopenharmony_ci#define M_WR_OP    0xFF
2788c2ecf20Sopenharmony_ci#define V_WR_OP(x) ((x) << S_WR_OP)
2798c2ecf20Sopenharmony_ci#define G_WR_OP(x) (((x) >> S_WR_OP) & M_WR_OP)
2808c2ecf20Sopenharmony_ci
2818c2ecf20Sopenharmony_ci/* wr_lo fields */
2828c2ecf20Sopenharmony_ci#define S_WR_LEN    0
2838c2ecf20Sopenharmony_ci#define M_WR_LEN    0xFF
2848c2ecf20Sopenharmony_ci#define V_WR_LEN(x) ((x) << S_WR_LEN)
2858c2ecf20Sopenharmony_ci#define G_WR_LEN(x) (((x) >> S_WR_LEN) & M_WR_LEN)
2868c2ecf20Sopenharmony_ci
2878c2ecf20Sopenharmony_ci#define S_WR_TID    8
2888c2ecf20Sopenharmony_ci#define M_WR_TID    0xFFFFF
2898c2ecf20Sopenharmony_ci#define V_WR_TID(x) ((x) << S_WR_TID)
2908c2ecf20Sopenharmony_ci#define G_WR_TID(x) (((x) >> S_WR_TID) & M_WR_TID)
2918c2ecf20Sopenharmony_ci
2928c2ecf20Sopenharmony_ci#define S_WR_CR_FLUSH    30
2938c2ecf20Sopenharmony_ci#define V_WR_CR_FLUSH(x) ((x) << S_WR_CR_FLUSH)
2948c2ecf20Sopenharmony_ci#define F_WR_CR_FLUSH    V_WR_CR_FLUSH(1U)
2958c2ecf20Sopenharmony_ci
2968c2ecf20Sopenharmony_ci#define S_WR_GEN    31
2978c2ecf20Sopenharmony_ci#define V_WR_GEN(x) ((x) << S_WR_GEN)
2988c2ecf20Sopenharmony_ci#define F_WR_GEN    V_WR_GEN(1U)
2998c2ecf20Sopenharmony_ci
3008c2ecf20Sopenharmony_ci# define WR_HDR struct work_request_hdr wr
3018c2ecf20Sopenharmony_ci# define RSS_HDR
3028c2ecf20Sopenharmony_ci#else
3038c2ecf20Sopenharmony_ci# define WR_HDR
3048c2ecf20Sopenharmony_ci# define RSS_HDR struct rss_header rss_hdr;
3058c2ecf20Sopenharmony_ci#endif
3068c2ecf20Sopenharmony_ci
3078c2ecf20Sopenharmony_ci/* option 0 lower-half fields */
3088c2ecf20Sopenharmony_ci#define S_CPL_STATUS    0
3098c2ecf20Sopenharmony_ci#define M_CPL_STATUS    0xFF
3108c2ecf20Sopenharmony_ci#define V_CPL_STATUS(x) ((x) << S_CPL_STATUS)
3118c2ecf20Sopenharmony_ci#define G_CPL_STATUS(x) (((x) >> S_CPL_STATUS) & M_CPL_STATUS)
3128c2ecf20Sopenharmony_ci
3138c2ecf20Sopenharmony_ci#define S_INJECT_TIMER    6
3148c2ecf20Sopenharmony_ci#define V_INJECT_TIMER(x) ((x) << S_INJECT_TIMER)
3158c2ecf20Sopenharmony_ci#define F_INJECT_TIMER    V_INJECT_TIMER(1U)
3168c2ecf20Sopenharmony_ci
3178c2ecf20Sopenharmony_ci#define S_NO_OFFLOAD    7
3188c2ecf20Sopenharmony_ci#define V_NO_OFFLOAD(x) ((x) << S_NO_OFFLOAD)
3198c2ecf20Sopenharmony_ci#define F_NO_OFFLOAD    V_NO_OFFLOAD(1U)
3208c2ecf20Sopenharmony_ci
3218c2ecf20Sopenharmony_ci#define S_ULP_MODE    8
3228c2ecf20Sopenharmony_ci#define M_ULP_MODE    0xF
3238c2ecf20Sopenharmony_ci#define V_ULP_MODE(x) ((x) << S_ULP_MODE)
3248c2ecf20Sopenharmony_ci#define G_ULP_MODE(x) (((x) >> S_ULP_MODE) & M_ULP_MODE)
3258c2ecf20Sopenharmony_ci
3268c2ecf20Sopenharmony_ci#define S_RCV_BUFSIZ    12
3278c2ecf20Sopenharmony_ci#define M_RCV_BUFSIZ    0x3FFF
3288c2ecf20Sopenharmony_ci#define V_RCV_BUFSIZ(x) ((x) << S_RCV_BUFSIZ)
3298c2ecf20Sopenharmony_ci#define G_RCV_BUFSIZ(x) (((x) >> S_RCV_BUFSIZ) & M_RCV_BUFSIZ)
3308c2ecf20Sopenharmony_ci
3318c2ecf20Sopenharmony_ci#define S_TOS    26
3328c2ecf20Sopenharmony_ci#define M_TOS    0x3F
3338c2ecf20Sopenharmony_ci#define V_TOS(x) ((x) << S_TOS)
3348c2ecf20Sopenharmony_ci#define G_TOS(x) (((x) >> S_TOS) & M_TOS)
3358c2ecf20Sopenharmony_ci
3368c2ecf20Sopenharmony_ci/* option 0 upper-half fields */
3378c2ecf20Sopenharmony_ci#define S_DELACK    0
3388c2ecf20Sopenharmony_ci#define V_DELACK(x) ((x) << S_DELACK)
3398c2ecf20Sopenharmony_ci#define F_DELACK    V_DELACK(1U)
3408c2ecf20Sopenharmony_ci
3418c2ecf20Sopenharmony_ci#define S_NO_CONG    1
3428c2ecf20Sopenharmony_ci#define V_NO_CONG(x) ((x) << S_NO_CONG)
3438c2ecf20Sopenharmony_ci#define F_NO_CONG    V_NO_CONG(1U)
3448c2ecf20Sopenharmony_ci
3458c2ecf20Sopenharmony_ci#define S_SRC_MAC_SEL    2
3468c2ecf20Sopenharmony_ci#define M_SRC_MAC_SEL    0x3
3478c2ecf20Sopenharmony_ci#define V_SRC_MAC_SEL(x) ((x) << S_SRC_MAC_SEL)
3488c2ecf20Sopenharmony_ci#define G_SRC_MAC_SEL(x) (((x) >> S_SRC_MAC_SEL) & M_SRC_MAC_SEL)
3498c2ecf20Sopenharmony_ci
3508c2ecf20Sopenharmony_ci#define S_L2T_IDX    4
3518c2ecf20Sopenharmony_ci#define M_L2T_IDX    0x7FF
3528c2ecf20Sopenharmony_ci#define V_L2T_IDX(x) ((x) << S_L2T_IDX)
3538c2ecf20Sopenharmony_ci#define G_L2T_IDX(x) (((x) >> S_L2T_IDX) & M_L2T_IDX)
3548c2ecf20Sopenharmony_ci
3558c2ecf20Sopenharmony_ci#define S_TX_CHANNEL    15
3568c2ecf20Sopenharmony_ci#define V_TX_CHANNEL(x) ((x) << S_TX_CHANNEL)
3578c2ecf20Sopenharmony_ci#define F_TX_CHANNEL    V_TX_CHANNEL(1U)
3588c2ecf20Sopenharmony_ci
3598c2ecf20Sopenharmony_ci#define S_TCAM_BYPASS    16
3608c2ecf20Sopenharmony_ci#define V_TCAM_BYPASS(x) ((x) << S_TCAM_BYPASS)
3618c2ecf20Sopenharmony_ci#define F_TCAM_BYPASS    V_TCAM_BYPASS(1U)
3628c2ecf20Sopenharmony_ci
3638c2ecf20Sopenharmony_ci#define S_NAGLE    17
3648c2ecf20Sopenharmony_ci#define V_NAGLE(x) ((x) << S_NAGLE)
3658c2ecf20Sopenharmony_ci#define F_NAGLE    V_NAGLE(1U)
3668c2ecf20Sopenharmony_ci
3678c2ecf20Sopenharmony_ci#define S_WND_SCALE    18
3688c2ecf20Sopenharmony_ci#define M_WND_SCALE    0xF
3698c2ecf20Sopenharmony_ci#define V_WND_SCALE(x) ((x) << S_WND_SCALE)
3708c2ecf20Sopenharmony_ci#define G_WND_SCALE(x) (((x) >> S_WND_SCALE) & M_WND_SCALE)
3718c2ecf20Sopenharmony_ci
3728c2ecf20Sopenharmony_ci#define S_KEEP_ALIVE    22
3738c2ecf20Sopenharmony_ci#define V_KEEP_ALIVE(x) ((x) << S_KEEP_ALIVE)
3748c2ecf20Sopenharmony_ci#define F_KEEP_ALIVE    V_KEEP_ALIVE(1U)
3758c2ecf20Sopenharmony_ci
3768c2ecf20Sopenharmony_ci#define S_MAX_RETRANS    23
3778c2ecf20Sopenharmony_ci#define M_MAX_RETRANS    0xF
3788c2ecf20Sopenharmony_ci#define V_MAX_RETRANS(x) ((x) << S_MAX_RETRANS)
3798c2ecf20Sopenharmony_ci#define G_MAX_RETRANS(x) (((x) >> S_MAX_RETRANS) & M_MAX_RETRANS)
3808c2ecf20Sopenharmony_ci
3818c2ecf20Sopenharmony_ci#define S_MAX_RETRANS_OVERRIDE    27
3828c2ecf20Sopenharmony_ci#define V_MAX_RETRANS_OVERRIDE(x) ((x) << S_MAX_RETRANS_OVERRIDE)
3838c2ecf20Sopenharmony_ci#define F_MAX_RETRANS_OVERRIDE    V_MAX_RETRANS_OVERRIDE(1U)
3848c2ecf20Sopenharmony_ci
3858c2ecf20Sopenharmony_ci#define S_MSS_IDX    28
3868c2ecf20Sopenharmony_ci#define M_MSS_IDX    0xF
3878c2ecf20Sopenharmony_ci#define V_MSS_IDX(x) ((x) << S_MSS_IDX)
3888c2ecf20Sopenharmony_ci#define G_MSS_IDX(x) (((x) >> S_MSS_IDX) & M_MSS_IDX)
3898c2ecf20Sopenharmony_ci
3908c2ecf20Sopenharmony_ci/* option 1 fields */
3918c2ecf20Sopenharmony_ci#define S_RSS_ENABLE    0
3928c2ecf20Sopenharmony_ci#define V_RSS_ENABLE(x) ((x) << S_RSS_ENABLE)
3938c2ecf20Sopenharmony_ci#define F_RSS_ENABLE    V_RSS_ENABLE(1U)
3948c2ecf20Sopenharmony_ci
3958c2ecf20Sopenharmony_ci#define S_RSS_MASK_LEN    1
3968c2ecf20Sopenharmony_ci#define M_RSS_MASK_LEN    0x7
3978c2ecf20Sopenharmony_ci#define V_RSS_MASK_LEN(x) ((x) << S_RSS_MASK_LEN)
3988c2ecf20Sopenharmony_ci#define G_RSS_MASK_LEN(x) (((x) >> S_RSS_MASK_LEN) & M_RSS_MASK_LEN)
3998c2ecf20Sopenharmony_ci
4008c2ecf20Sopenharmony_ci#define S_CPU_IDX    4
4018c2ecf20Sopenharmony_ci#define M_CPU_IDX    0x3F
4028c2ecf20Sopenharmony_ci#define V_CPU_IDX(x) ((x) << S_CPU_IDX)
4038c2ecf20Sopenharmony_ci#define G_CPU_IDX(x) (((x) >> S_CPU_IDX) & M_CPU_IDX)
4048c2ecf20Sopenharmony_ci
4058c2ecf20Sopenharmony_ci#define S_MAC_MATCH_VALID    18
4068c2ecf20Sopenharmony_ci#define V_MAC_MATCH_VALID(x) ((x) << S_MAC_MATCH_VALID)
4078c2ecf20Sopenharmony_ci#define F_MAC_MATCH_VALID    V_MAC_MATCH_VALID(1U)
4088c2ecf20Sopenharmony_ci
4098c2ecf20Sopenharmony_ci#define S_CONN_POLICY    19
4108c2ecf20Sopenharmony_ci#define M_CONN_POLICY    0x3
4118c2ecf20Sopenharmony_ci#define V_CONN_POLICY(x) ((x) << S_CONN_POLICY)
4128c2ecf20Sopenharmony_ci#define G_CONN_POLICY(x) (((x) >> S_CONN_POLICY) & M_CONN_POLICY)
4138c2ecf20Sopenharmony_ci
4148c2ecf20Sopenharmony_ci#define S_SYN_DEFENSE    21
4158c2ecf20Sopenharmony_ci#define V_SYN_DEFENSE(x) ((x) << S_SYN_DEFENSE)
4168c2ecf20Sopenharmony_ci#define F_SYN_DEFENSE    V_SYN_DEFENSE(1U)
4178c2ecf20Sopenharmony_ci
4188c2ecf20Sopenharmony_ci#define S_VLAN_PRI    22
4198c2ecf20Sopenharmony_ci#define M_VLAN_PRI    0x3
4208c2ecf20Sopenharmony_ci#define V_VLAN_PRI(x) ((x) << S_VLAN_PRI)
4218c2ecf20Sopenharmony_ci#define G_VLAN_PRI(x) (((x) >> S_VLAN_PRI) & M_VLAN_PRI)
4228c2ecf20Sopenharmony_ci
4238c2ecf20Sopenharmony_ci#define S_VLAN_PRI_VALID    24
4248c2ecf20Sopenharmony_ci#define V_VLAN_PRI_VALID(x) ((x) << S_VLAN_PRI_VALID)
4258c2ecf20Sopenharmony_ci#define F_VLAN_PRI_VALID    V_VLAN_PRI_VALID(1U)
4268c2ecf20Sopenharmony_ci
4278c2ecf20Sopenharmony_ci#define S_PKT_TYPE    25
4288c2ecf20Sopenharmony_ci#define M_PKT_TYPE    0x3
4298c2ecf20Sopenharmony_ci#define V_PKT_TYPE(x) ((x) << S_PKT_TYPE)
4308c2ecf20Sopenharmony_ci#define G_PKT_TYPE(x) (((x) >> S_PKT_TYPE) & M_PKT_TYPE)
4318c2ecf20Sopenharmony_ci
4328c2ecf20Sopenharmony_ci#define S_MAC_MATCH    27
4338c2ecf20Sopenharmony_ci#define M_MAC_MATCH    0x1F
4348c2ecf20Sopenharmony_ci#define V_MAC_MATCH(x) ((x) << S_MAC_MATCH)
4358c2ecf20Sopenharmony_ci#define G_MAC_MATCH(x) (((x) >> S_MAC_MATCH) & M_MAC_MATCH)
4368c2ecf20Sopenharmony_ci
4378c2ecf20Sopenharmony_ci/* option 2 fields */
4388c2ecf20Sopenharmony_ci#define S_CPU_INDEX    0
4398c2ecf20Sopenharmony_ci#define M_CPU_INDEX    0x7F
4408c2ecf20Sopenharmony_ci#define V_CPU_INDEX(x) ((x) << S_CPU_INDEX)
4418c2ecf20Sopenharmony_ci#define G_CPU_INDEX(x) (((x) >> S_CPU_INDEX) & M_CPU_INDEX)
4428c2ecf20Sopenharmony_ci
4438c2ecf20Sopenharmony_ci#define S_CPU_INDEX_VALID    7
4448c2ecf20Sopenharmony_ci#define V_CPU_INDEX_VALID(x) ((x) << S_CPU_INDEX_VALID)
4458c2ecf20Sopenharmony_ci#define F_CPU_INDEX_VALID    V_CPU_INDEX_VALID(1U)
4468c2ecf20Sopenharmony_ci
4478c2ecf20Sopenharmony_ci#define S_RX_COALESCE    8
4488c2ecf20Sopenharmony_ci#define M_RX_COALESCE    0x3
4498c2ecf20Sopenharmony_ci#define V_RX_COALESCE(x) ((x) << S_RX_COALESCE)
4508c2ecf20Sopenharmony_ci#define G_RX_COALESCE(x) (((x) >> S_RX_COALESCE) & M_RX_COALESCE)
4518c2ecf20Sopenharmony_ci
4528c2ecf20Sopenharmony_ci#define S_RX_COALESCE_VALID    10
4538c2ecf20Sopenharmony_ci#define V_RX_COALESCE_VALID(x) ((x) << S_RX_COALESCE_VALID)
4548c2ecf20Sopenharmony_ci#define F_RX_COALESCE_VALID    V_RX_COALESCE_VALID(1U)
4558c2ecf20Sopenharmony_ci
4568c2ecf20Sopenharmony_ci#define S_CONG_CONTROL_FLAVOR    11
4578c2ecf20Sopenharmony_ci#define M_CONG_CONTROL_FLAVOR    0x3
4588c2ecf20Sopenharmony_ci#define V_CONG_CONTROL_FLAVOR(x) ((x) << S_CONG_CONTROL_FLAVOR)
4598c2ecf20Sopenharmony_ci#define G_CONG_CONTROL_FLAVOR(x) (((x) >> S_CONG_CONTROL_FLAVOR) & M_CONG_CONTROL_FLAVOR)
4608c2ecf20Sopenharmony_ci
4618c2ecf20Sopenharmony_ci#define S_PACING_FLAVOR    13
4628c2ecf20Sopenharmony_ci#define M_PACING_FLAVOR    0x3
4638c2ecf20Sopenharmony_ci#define V_PACING_FLAVOR(x) ((x) << S_PACING_FLAVOR)
4648c2ecf20Sopenharmony_ci#define G_PACING_FLAVOR(x) (((x) >> S_PACING_FLAVOR) & M_PACING_FLAVOR)
4658c2ecf20Sopenharmony_ci
4668c2ecf20Sopenharmony_ci#define S_FLAVORS_VALID    15
4678c2ecf20Sopenharmony_ci#define V_FLAVORS_VALID(x) ((x) << S_FLAVORS_VALID)
4688c2ecf20Sopenharmony_ci#define F_FLAVORS_VALID    V_FLAVORS_VALID(1U)
4698c2ecf20Sopenharmony_ci
4708c2ecf20Sopenharmony_ci#define S_RX_FC_DISABLE    16
4718c2ecf20Sopenharmony_ci#define V_RX_FC_DISABLE(x) ((x) << S_RX_FC_DISABLE)
4728c2ecf20Sopenharmony_ci#define F_RX_FC_DISABLE    V_RX_FC_DISABLE(1U)
4738c2ecf20Sopenharmony_ci
4748c2ecf20Sopenharmony_ci#define S_RX_FC_VALID    17
4758c2ecf20Sopenharmony_ci#define V_RX_FC_VALID(x) ((x) << S_RX_FC_VALID)
4768c2ecf20Sopenharmony_ci#define F_RX_FC_VALID    V_RX_FC_VALID(1U)
4778c2ecf20Sopenharmony_ci
4788c2ecf20Sopenharmony_cistruct cpl_pass_open_req {
4798c2ecf20Sopenharmony_ci	WR_HDR;
4808c2ecf20Sopenharmony_ci	union opcode_tid ot;
4818c2ecf20Sopenharmony_ci	__be16 local_port;
4828c2ecf20Sopenharmony_ci	__be16 peer_port;
4838c2ecf20Sopenharmony_ci	__be32 local_ip;
4848c2ecf20Sopenharmony_ci	__be32 peer_ip;
4858c2ecf20Sopenharmony_ci	__be32 opt0h;
4868c2ecf20Sopenharmony_ci	__be32 opt0l;
4878c2ecf20Sopenharmony_ci	__be32 peer_netmask;
4888c2ecf20Sopenharmony_ci	__be32 opt1;
4898c2ecf20Sopenharmony_ci};
4908c2ecf20Sopenharmony_ci
4918c2ecf20Sopenharmony_cistruct cpl_pass_open_rpl {
4928c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
4938c2ecf20Sopenharmony_ci	__be16 local_port;
4948c2ecf20Sopenharmony_ci	__be16 peer_port;
4958c2ecf20Sopenharmony_ci	__be32 local_ip;
4968c2ecf20Sopenharmony_ci	__be32 peer_ip;
4978c2ecf20Sopenharmony_ci	__u8 resvd[7];
4988c2ecf20Sopenharmony_ci	__u8 status;
4998c2ecf20Sopenharmony_ci};
5008c2ecf20Sopenharmony_ci
5018c2ecf20Sopenharmony_cistruct cpl_pass_establish {
5028c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
5038c2ecf20Sopenharmony_ci	__be16 local_port;
5048c2ecf20Sopenharmony_ci	__be16 peer_port;
5058c2ecf20Sopenharmony_ci	__be32 local_ip;
5068c2ecf20Sopenharmony_ci	__be32 peer_ip;
5078c2ecf20Sopenharmony_ci	__be32 tos_tid;
5088c2ecf20Sopenharmony_ci	__be16 l2t_idx;
5098c2ecf20Sopenharmony_ci	__be16 tcp_opt;
5108c2ecf20Sopenharmony_ci	__be32 snd_isn;
5118c2ecf20Sopenharmony_ci	__be32 rcv_isn;
5128c2ecf20Sopenharmony_ci};
5138c2ecf20Sopenharmony_ci
5148c2ecf20Sopenharmony_ci/* cpl_pass_establish.tos_tid fields */
5158c2ecf20Sopenharmony_ci#define S_PASS_OPEN_TID    0
5168c2ecf20Sopenharmony_ci#define M_PASS_OPEN_TID    0xFFFFFF
5178c2ecf20Sopenharmony_ci#define V_PASS_OPEN_TID(x) ((x) << S_PASS_OPEN_TID)
5188c2ecf20Sopenharmony_ci#define G_PASS_OPEN_TID(x) (((x) >> S_PASS_OPEN_TID) & M_PASS_OPEN_TID)
5198c2ecf20Sopenharmony_ci
5208c2ecf20Sopenharmony_ci#define S_PASS_OPEN_TOS    24
5218c2ecf20Sopenharmony_ci#define M_PASS_OPEN_TOS    0xFF
5228c2ecf20Sopenharmony_ci#define V_PASS_OPEN_TOS(x) ((x) << S_PASS_OPEN_TOS)
5238c2ecf20Sopenharmony_ci#define G_PASS_OPEN_TOS(x) (((x) >> S_PASS_OPEN_TOS) & M_PASS_OPEN_TOS)
5248c2ecf20Sopenharmony_ci
5258c2ecf20Sopenharmony_ci/* cpl_pass_establish.l2t_idx fields */
5268c2ecf20Sopenharmony_ci#define S_L2T_IDX16    5
5278c2ecf20Sopenharmony_ci#define M_L2T_IDX16    0x7FF
5288c2ecf20Sopenharmony_ci#define V_L2T_IDX16(x) ((x) << S_L2T_IDX16)
5298c2ecf20Sopenharmony_ci#define G_L2T_IDX16(x) (((x) >> S_L2T_IDX16) & M_L2T_IDX16)
5308c2ecf20Sopenharmony_ci
5318c2ecf20Sopenharmony_ci/* cpl_pass_establish.tcp_opt fields (also applies act_open_establish) */
5328c2ecf20Sopenharmony_ci#define G_TCPOPT_WSCALE_OK(x)  (((x) >> 5) & 1)
5338c2ecf20Sopenharmony_ci#define G_TCPOPT_SACK(x)       (((x) >> 6) & 1)
5348c2ecf20Sopenharmony_ci#define G_TCPOPT_TSTAMP(x)     (((x) >> 7) & 1)
5358c2ecf20Sopenharmony_ci#define G_TCPOPT_SND_WSCALE(x) (((x) >> 8) & 0xf)
5368c2ecf20Sopenharmony_ci#define G_TCPOPT_MSS(x)        (((x) >> 12) & 0xf)
5378c2ecf20Sopenharmony_ci
5388c2ecf20Sopenharmony_cistruct cpl_pass_accept_req {
5398c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
5408c2ecf20Sopenharmony_ci	__be16 local_port;
5418c2ecf20Sopenharmony_ci	__be16 peer_port;
5428c2ecf20Sopenharmony_ci	__be32 local_ip;
5438c2ecf20Sopenharmony_ci	__be32 peer_ip;
5448c2ecf20Sopenharmony_ci	__be32 tos_tid;
5458c2ecf20Sopenharmony_ci	struct tcp_options tcp_options;
5468c2ecf20Sopenharmony_ci	__u8 dst_mac[6];
5478c2ecf20Sopenharmony_ci	__be16 vlan_tag;
5488c2ecf20Sopenharmony_ci	__u8 src_mac[6];
5498c2ecf20Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD)
5508c2ecf20Sopenharmony_ci	 __u8:3;
5518c2ecf20Sopenharmony_ci	__u8 addr_idx:3;
5528c2ecf20Sopenharmony_ci	__u8 port_idx:1;
5538c2ecf20Sopenharmony_ci	__u8 exact_match:1;
5548c2ecf20Sopenharmony_ci#else
5558c2ecf20Sopenharmony_ci	__u8 exact_match:1;
5568c2ecf20Sopenharmony_ci	__u8 port_idx:1;
5578c2ecf20Sopenharmony_ci	__u8 addr_idx:3;
5588c2ecf20Sopenharmony_ci	 __u8:3;
5598c2ecf20Sopenharmony_ci#endif
5608c2ecf20Sopenharmony_ci	__u8 rsvd;
5618c2ecf20Sopenharmony_ci	__be32 rcv_isn;
5628c2ecf20Sopenharmony_ci	__be32 rsvd2;
5638c2ecf20Sopenharmony_ci};
5648c2ecf20Sopenharmony_ci
5658c2ecf20Sopenharmony_cistruct cpl_pass_accept_rpl {
5668c2ecf20Sopenharmony_ci	WR_HDR;
5678c2ecf20Sopenharmony_ci	union opcode_tid ot;
5688c2ecf20Sopenharmony_ci	__be32 opt2;
5698c2ecf20Sopenharmony_ci	__be32 rsvd;
5708c2ecf20Sopenharmony_ci	__be32 peer_ip;
5718c2ecf20Sopenharmony_ci	__be32 opt0h;
5728c2ecf20Sopenharmony_ci	__be32 opt0l_status;
5738c2ecf20Sopenharmony_ci};
5748c2ecf20Sopenharmony_ci
5758c2ecf20Sopenharmony_cistruct cpl_act_open_req {
5768c2ecf20Sopenharmony_ci	WR_HDR;
5778c2ecf20Sopenharmony_ci	union opcode_tid ot;
5788c2ecf20Sopenharmony_ci	__be16 local_port;
5798c2ecf20Sopenharmony_ci	__be16 peer_port;
5808c2ecf20Sopenharmony_ci	__be32 local_ip;
5818c2ecf20Sopenharmony_ci	__be32 peer_ip;
5828c2ecf20Sopenharmony_ci	__be32 opt0h;
5838c2ecf20Sopenharmony_ci	__be32 opt0l;
5848c2ecf20Sopenharmony_ci	__be32 params;
5858c2ecf20Sopenharmony_ci	__be32 opt2;
5868c2ecf20Sopenharmony_ci};
5878c2ecf20Sopenharmony_ci
5888c2ecf20Sopenharmony_ci/* cpl_act_open_req.params fields */
5898c2ecf20Sopenharmony_ci#define S_AOPEN_VLAN_PRI    9
5908c2ecf20Sopenharmony_ci#define M_AOPEN_VLAN_PRI    0x3
5918c2ecf20Sopenharmony_ci#define V_AOPEN_VLAN_PRI(x) ((x) << S_AOPEN_VLAN_PRI)
5928c2ecf20Sopenharmony_ci#define G_AOPEN_VLAN_PRI(x) (((x) >> S_AOPEN_VLAN_PRI) & M_AOPEN_VLAN_PRI)
5938c2ecf20Sopenharmony_ci
5948c2ecf20Sopenharmony_ci#define S_AOPEN_VLAN_PRI_VALID    11
5958c2ecf20Sopenharmony_ci#define V_AOPEN_VLAN_PRI_VALID(x) ((x) << S_AOPEN_VLAN_PRI_VALID)
5968c2ecf20Sopenharmony_ci#define F_AOPEN_VLAN_PRI_VALID    V_AOPEN_VLAN_PRI_VALID(1U)
5978c2ecf20Sopenharmony_ci
5988c2ecf20Sopenharmony_ci#define S_AOPEN_PKT_TYPE    12
5998c2ecf20Sopenharmony_ci#define M_AOPEN_PKT_TYPE    0x3
6008c2ecf20Sopenharmony_ci#define V_AOPEN_PKT_TYPE(x) ((x) << S_AOPEN_PKT_TYPE)
6018c2ecf20Sopenharmony_ci#define G_AOPEN_PKT_TYPE(x) (((x) >> S_AOPEN_PKT_TYPE) & M_AOPEN_PKT_TYPE)
6028c2ecf20Sopenharmony_ci
6038c2ecf20Sopenharmony_ci#define S_AOPEN_MAC_MATCH    14
6048c2ecf20Sopenharmony_ci#define M_AOPEN_MAC_MATCH    0x1F
6058c2ecf20Sopenharmony_ci#define V_AOPEN_MAC_MATCH(x) ((x) << S_AOPEN_MAC_MATCH)
6068c2ecf20Sopenharmony_ci#define G_AOPEN_MAC_MATCH(x) (((x) >> S_AOPEN_MAC_MATCH) & M_AOPEN_MAC_MATCH)
6078c2ecf20Sopenharmony_ci
6088c2ecf20Sopenharmony_ci#define S_AOPEN_MAC_MATCH_VALID    19
6098c2ecf20Sopenharmony_ci#define V_AOPEN_MAC_MATCH_VALID(x) ((x) << S_AOPEN_MAC_MATCH_VALID)
6108c2ecf20Sopenharmony_ci#define F_AOPEN_MAC_MATCH_VALID    V_AOPEN_MAC_MATCH_VALID(1U)
6118c2ecf20Sopenharmony_ci
6128c2ecf20Sopenharmony_ci#define S_AOPEN_IFF_VLAN    20
6138c2ecf20Sopenharmony_ci#define M_AOPEN_IFF_VLAN    0xFFF
6148c2ecf20Sopenharmony_ci#define V_AOPEN_IFF_VLAN(x) ((x) << S_AOPEN_IFF_VLAN)
6158c2ecf20Sopenharmony_ci#define G_AOPEN_IFF_VLAN(x) (((x) >> S_AOPEN_IFF_VLAN) & M_AOPEN_IFF_VLAN)
6168c2ecf20Sopenharmony_ci
6178c2ecf20Sopenharmony_cistruct cpl_act_open_rpl {
6188c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
6198c2ecf20Sopenharmony_ci	__be16 local_port;
6208c2ecf20Sopenharmony_ci	__be16 peer_port;
6218c2ecf20Sopenharmony_ci	__be32 local_ip;
6228c2ecf20Sopenharmony_ci	__be32 peer_ip;
6238c2ecf20Sopenharmony_ci	__be32 atid;
6248c2ecf20Sopenharmony_ci	__u8 rsvd[3];
6258c2ecf20Sopenharmony_ci	__u8 status;
6268c2ecf20Sopenharmony_ci};
6278c2ecf20Sopenharmony_ci
6288c2ecf20Sopenharmony_cistruct cpl_act_establish {
6298c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
6308c2ecf20Sopenharmony_ci	__be16 local_port;
6318c2ecf20Sopenharmony_ci	__be16 peer_port;
6328c2ecf20Sopenharmony_ci	__be32 local_ip;
6338c2ecf20Sopenharmony_ci	__be32 peer_ip;
6348c2ecf20Sopenharmony_ci	__be32 tos_tid;
6358c2ecf20Sopenharmony_ci	__be16 l2t_idx;
6368c2ecf20Sopenharmony_ci	__be16 tcp_opt;
6378c2ecf20Sopenharmony_ci	__be32 snd_isn;
6388c2ecf20Sopenharmony_ci	__be32 rcv_isn;
6398c2ecf20Sopenharmony_ci};
6408c2ecf20Sopenharmony_ci
6418c2ecf20Sopenharmony_cistruct cpl_get_tcb {
6428c2ecf20Sopenharmony_ci	WR_HDR;
6438c2ecf20Sopenharmony_ci	union opcode_tid ot;
6448c2ecf20Sopenharmony_ci	__be16 cpuno;
6458c2ecf20Sopenharmony_ci	__be16 rsvd;
6468c2ecf20Sopenharmony_ci};
6478c2ecf20Sopenharmony_ci
6488c2ecf20Sopenharmony_cistruct cpl_get_tcb_rpl {
6498c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
6508c2ecf20Sopenharmony_ci	__u8 rsvd;
6518c2ecf20Sopenharmony_ci	__u8 status;
6528c2ecf20Sopenharmony_ci	__be16 len;
6538c2ecf20Sopenharmony_ci};
6548c2ecf20Sopenharmony_ci
6558c2ecf20Sopenharmony_cistruct cpl_set_tcb {
6568c2ecf20Sopenharmony_ci	WR_HDR;
6578c2ecf20Sopenharmony_ci	union opcode_tid ot;
6588c2ecf20Sopenharmony_ci	__u8 reply;
6598c2ecf20Sopenharmony_ci	__u8 cpu_idx;
6608c2ecf20Sopenharmony_ci	__be16 len;
6618c2ecf20Sopenharmony_ci};
6628c2ecf20Sopenharmony_ci
6638c2ecf20Sopenharmony_ci/* cpl_set_tcb.reply fields */
6648c2ecf20Sopenharmony_ci#define S_NO_REPLY    7
6658c2ecf20Sopenharmony_ci#define V_NO_REPLY(x) ((x) << S_NO_REPLY)
6668c2ecf20Sopenharmony_ci#define F_NO_REPLY    V_NO_REPLY(1U)
6678c2ecf20Sopenharmony_ci
6688c2ecf20Sopenharmony_cistruct cpl_set_tcb_field {
6698c2ecf20Sopenharmony_ci	WR_HDR;
6708c2ecf20Sopenharmony_ci	union opcode_tid ot;
6718c2ecf20Sopenharmony_ci	__u8 reply;
6728c2ecf20Sopenharmony_ci	__u8 cpu_idx;
6738c2ecf20Sopenharmony_ci	__be16 word;
6748c2ecf20Sopenharmony_ci	__be64 mask;
6758c2ecf20Sopenharmony_ci	__be64 val;
6768c2ecf20Sopenharmony_ci};
6778c2ecf20Sopenharmony_ci
6788c2ecf20Sopenharmony_cistruct cpl_set_tcb_rpl {
6798c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
6808c2ecf20Sopenharmony_ci	__u8 rsvd[3];
6818c2ecf20Sopenharmony_ci	__u8 status;
6828c2ecf20Sopenharmony_ci};
6838c2ecf20Sopenharmony_ci
6848c2ecf20Sopenharmony_cistruct cpl_pcmd {
6858c2ecf20Sopenharmony_ci	WR_HDR;
6868c2ecf20Sopenharmony_ci	union opcode_tid ot;
6878c2ecf20Sopenharmony_ci	__u8 rsvd[3];
6888c2ecf20Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD)
6898c2ecf20Sopenharmony_ci	__u8 src:1;
6908c2ecf20Sopenharmony_ci	__u8 bundle:1;
6918c2ecf20Sopenharmony_ci	__u8 channel:1;
6928c2ecf20Sopenharmony_ci	 __u8:5;
6938c2ecf20Sopenharmony_ci#else
6948c2ecf20Sopenharmony_ci	 __u8:5;
6958c2ecf20Sopenharmony_ci	__u8 channel:1;
6968c2ecf20Sopenharmony_ci	__u8 bundle:1;
6978c2ecf20Sopenharmony_ci	__u8 src:1;
6988c2ecf20Sopenharmony_ci#endif
6998c2ecf20Sopenharmony_ci	__be32 pcmd_parm[2];
7008c2ecf20Sopenharmony_ci};
7018c2ecf20Sopenharmony_ci
7028c2ecf20Sopenharmony_cistruct cpl_pcmd_reply {
7038c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
7048c2ecf20Sopenharmony_ci	__u8 status;
7058c2ecf20Sopenharmony_ci	__u8 rsvd;
7068c2ecf20Sopenharmony_ci	__be16 len;
7078c2ecf20Sopenharmony_ci};
7088c2ecf20Sopenharmony_ci
7098c2ecf20Sopenharmony_cistruct cpl_close_con_req {
7108c2ecf20Sopenharmony_ci	WR_HDR;
7118c2ecf20Sopenharmony_ci	union opcode_tid ot;
7128c2ecf20Sopenharmony_ci	__be32 rsvd;
7138c2ecf20Sopenharmony_ci};
7148c2ecf20Sopenharmony_ci
7158c2ecf20Sopenharmony_cistruct cpl_close_con_rpl {
7168c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
7178c2ecf20Sopenharmony_ci	__u8 rsvd[3];
7188c2ecf20Sopenharmony_ci	__u8 status;
7198c2ecf20Sopenharmony_ci	__be32 snd_nxt;
7208c2ecf20Sopenharmony_ci	__be32 rcv_nxt;
7218c2ecf20Sopenharmony_ci};
7228c2ecf20Sopenharmony_ci
7238c2ecf20Sopenharmony_cistruct cpl_close_listserv_req {
7248c2ecf20Sopenharmony_ci	WR_HDR;
7258c2ecf20Sopenharmony_ci	union opcode_tid ot;
7268c2ecf20Sopenharmony_ci	__u8 rsvd0;
7278c2ecf20Sopenharmony_ci	__u8 cpu_idx;
7288c2ecf20Sopenharmony_ci	__be16 rsvd1;
7298c2ecf20Sopenharmony_ci};
7308c2ecf20Sopenharmony_ci
7318c2ecf20Sopenharmony_cistruct cpl_close_listserv_rpl {
7328c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
7338c2ecf20Sopenharmony_ci	__u8 rsvd[3];
7348c2ecf20Sopenharmony_ci	__u8 status;
7358c2ecf20Sopenharmony_ci};
7368c2ecf20Sopenharmony_ci
7378c2ecf20Sopenharmony_cistruct cpl_abort_req_rss {
7388c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
7398c2ecf20Sopenharmony_ci	__be32 rsvd0;
7408c2ecf20Sopenharmony_ci	__u8 rsvd1;
7418c2ecf20Sopenharmony_ci	__u8 status;
7428c2ecf20Sopenharmony_ci	__u8 rsvd2[6];
7438c2ecf20Sopenharmony_ci};
7448c2ecf20Sopenharmony_ci
7458c2ecf20Sopenharmony_cistruct cpl_abort_req {
7468c2ecf20Sopenharmony_ci	WR_HDR;
7478c2ecf20Sopenharmony_ci	union opcode_tid ot;
7488c2ecf20Sopenharmony_ci	__be32 rsvd0;
7498c2ecf20Sopenharmony_ci	__u8 rsvd1;
7508c2ecf20Sopenharmony_ci	__u8 cmd;
7518c2ecf20Sopenharmony_ci	__u8 rsvd2[6];
7528c2ecf20Sopenharmony_ci};
7538c2ecf20Sopenharmony_ci
7548c2ecf20Sopenharmony_cistruct cpl_abort_rpl_rss {
7558c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
7568c2ecf20Sopenharmony_ci	__be32 rsvd0;
7578c2ecf20Sopenharmony_ci	__u8 rsvd1;
7588c2ecf20Sopenharmony_ci	__u8 status;
7598c2ecf20Sopenharmony_ci	__u8 rsvd2[6];
7608c2ecf20Sopenharmony_ci};
7618c2ecf20Sopenharmony_ci
7628c2ecf20Sopenharmony_cistruct cpl_abort_rpl {
7638c2ecf20Sopenharmony_ci	WR_HDR;
7648c2ecf20Sopenharmony_ci	union opcode_tid ot;
7658c2ecf20Sopenharmony_ci	__be32 rsvd0;
7668c2ecf20Sopenharmony_ci	__u8 rsvd1;
7678c2ecf20Sopenharmony_ci	__u8 cmd;
7688c2ecf20Sopenharmony_ci	__u8 rsvd2[6];
7698c2ecf20Sopenharmony_ci};
7708c2ecf20Sopenharmony_ci
7718c2ecf20Sopenharmony_cistruct cpl_peer_close {
7728c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
7738c2ecf20Sopenharmony_ci	__be32 rcv_nxt;
7748c2ecf20Sopenharmony_ci};
7758c2ecf20Sopenharmony_ci
7768c2ecf20Sopenharmony_cistruct tx_data_wr {
7778c2ecf20Sopenharmony_ci	__be32 wr_hi;
7788c2ecf20Sopenharmony_ci	__be32 wr_lo;
7798c2ecf20Sopenharmony_ci	__be32 len;
7808c2ecf20Sopenharmony_ci	__be32 flags;
7818c2ecf20Sopenharmony_ci	__be32 sndseq;
7828c2ecf20Sopenharmony_ci	__be32 param;
7838c2ecf20Sopenharmony_ci};
7848c2ecf20Sopenharmony_ci
7858c2ecf20Sopenharmony_ci/* tx_data_wr.flags fields */
7868c2ecf20Sopenharmony_ci#define S_TX_ACK_PAGES	21
7878c2ecf20Sopenharmony_ci#define M_TX_ACK_PAGES	0x7
7888c2ecf20Sopenharmony_ci#define V_TX_ACK_PAGES(x) ((x) << S_TX_ACK_PAGES)
7898c2ecf20Sopenharmony_ci#define G_TX_ACK_PAGES(x) (((x) >> S_TX_ACK_PAGES) & M_TX_ACK_PAGES)
7908c2ecf20Sopenharmony_ci
7918c2ecf20Sopenharmony_ci/* tx_data_wr.param fields */
7928c2ecf20Sopenharmony_ci#define S_TX_PORT    0
7938c2ecf20Sopenharmony_ci#define M_TX_PORT    0x7
7948c2ecf20Sopenharmony_ci#define V_TX_PORT(x) ((x) << S_TX_PORT)
7958c2ecf20Sopenharmony_ci#define G_TX_PORT(x) (((x) >> S_TX_PORT) & M_TX_PORT)
7968c2ecf20Sopenharmony_ci
7978c2ecf20Sopenharmony_ci#define S_TX_MSS    4
7988c2ecf20Sopenharmony_ci#define M_TX_MSS    0xF
7998c2ecf20Sopenharmony_ci#define V_TX_MSS(x) ((x) << S_TX_MSS)
8008c2ecf20Sopenharmony_ci#define G_TX_MSS(x) (((x) >> S_TX_MSS) & M_TX_MSS)
8018c2ecf20Sopenharmony_ci
8028c2ecf20Sopenharmony_ci#define S_TX_QOS    8
8038c2ecf20Sopenharmony_ci#define M_TX_QOS    0xFF
8048c2ecf20Sopenharmony_ci#define V_TX_QOS(x) ((x) << S_TX_QOS)
8058c2ecf20Sopenharmony_ci#define G_TX_QOS(x) (((x) >> S_TX_QOS) & M_TX_QOS)
8068c2ecf20Sopenharmony_ci
8078c2ecf20Sopenharmony_ci#define S_TX_SNDBUF 16
8088c2ecf20Sopenharmony_ci#define M_TX_SNDBUF 0xFFFF
8098c2ecf20Sopenharmony_ci#define V_TX_SNDBUF(x) ((x) << S_TX_SNDBUF)
8108c2ecf20Sopenharmony_ci#define G_TX_SNDBUF(x) (((x) >> S_TX_SNDBUF) & M_TX_SNDBUF)
8118c2ecf20Sopenharmony_ci
8128c2ecf20Sopenharmony_cistruct cpl_tx_data {
8138c2ecf20Sopenharmony_ci	union opcode_tid ot;
8148c2ecf20Sopenharmony_ci	__be32 len;
8158c2ecf20Sopenharmony_ci	__be32 rsvd;
8168c2ecf20Sopenharmony_ci	__be16 urg;
8178c2ecf20Sopenharmony_ci	__be16 flags;
8188c2ecf20Sopenharmony_ci};
8198c2ecf20Sopenharmony_ci
8208c2ecf20Sopenharmony_ci/* cpl_tx_data.flags fields */
8218c2ecf20Sopenharmony_ci#define S_TX_ULP_SUBMODE    6
8228c2ecf20Sopenharmony_ci#define M_TX_ULP_SUBMODE    0xF
8238c2ecf20Sopenharmony_ci#define V_TX_ULP_SUBMODE(x) ((x) << S_TX_ULP_SUBMODE)
8248c2ecf20Sopenharmony_ci#define G_TX_ULP_SUBMODE(x) (((x) >> S_TX_ULP_SUBMODE) & M_TX_ULP_SUBMODE)
8258c2ecf20Sopenharmony_ci
8268c2ecf20Sopenharmony_ci#define S_TX_ULP_MODE    10
8278c2ecf20Sopenharmony_ci#define M_TX_ULP_MODE    0xF
8288c2ecf20Sopenharmony_ci#define V_TX_ULP_MODE(x) ((x) << S_TX_ULP_MODE)
8298c2ecf20Sopenharmony_ci#define G_TX_ULP_MODE(x) (((x) >> S_TX_ULP_MODE) & M_TX_ULP_MODE)
8308c2ecf20Sopenharmony_ci
8318c2ecf20Sopenharmony_ci#define S_TX_SHOVE    14
8328c2ecf20Sopenharmony_ci#define V_TX_SHOVE(x) ((x) << S_TX_SHOVE)
8338c2ecf20Sopenharmony_ci#define F_TX_SHOVE    V_TX_SHOVE(1U)
8348c2ecf20Sopenharmony_ci
8358c2ecf20Sopenharmony_ci#define S_TX_MORE    15
8368c2ecf20Sopenharmony_ci#define V_TX_MORE(x) ((x) << S_TX_MORE)
8378c2ecf20Sopenharmony_ci#define F_TX_MORE    V_TX_MORE(1U)
8388c2ecf20Sopenharmony_ci
8398c2ecf20Sopenharmony_ci/* additional tx_data_wr.flags fields */
8408c2ecf20Sopenharmony_ci#define S_TX_CPU_IDX    0
8418c2ecf20Sopenharmony_ci#define M_TX_CPU_IDX    0x3F
8428c2ecf20Sopenharmony_ci#define V_TX_CPU_IDX(x) ((x) << S_TX_CPU_IDX)
8438c2ecf20Sopenharmony_ci#define G_TX_CPU_IDX(x) (((x) >> S_TX_CPU_IDX) & M_TX_CPU_IDX)
8448c2ecf20Sopenharmony_ci
8458c2ecf20Sopenharmony_ci#define S_TX_URG    16
8468c2ecf20Sopenharmony_ci#define V_TX_URG(x) ((x) << S_TX_URG)
8478c2ecf20Sopenharmony_ci#define F_TX_URG    V_TX_URG(1U)
8488c2ecf20Sopenharmony_ci
8498c2ecf20Sopenharmony_ci#define S_TX_CLOSE    17
8508c2ecf20Sopenharmony_ci#define V_TX_CLOSE(x) ((x) << S_TX_CLOSE)
8518c2ecf20Sopenharmony_ci#define F_TX_CLOSE    V_TX_CLOSE(1U)
8528c2ecf20Sopenharmony_ci
8538c2ecf20Sopenharmony_ci#define S_TX_INIT    18
8548c2ecf20Sopenharmony_ci#define V_TX_INIT(x) ((x) << S_TX_INIT)
8558c2ecf20Sopenharmony_ci#define F_TX_INIT    V_TX_INIT(1U)
8568c2ecf20Sopenharmony_ci
8578c2ecf20Sopenharmony_ci#define S_TX_IMM_ACK    19
8588c2ecf20Sopenharmony_ci#define V_TX_IMM_ACK(x) ((x) << S_TX_IMM_ACK)
8598c2ecf20Sopenharmony_ci#define F_TX_IMM_ACK    V_TX_IMM_ACK(1U)
8608c2ecf20Sopenharmony_ci
8618c2ecf20Sopenharmony_ci#define S_TX_IMM_DMA    20
8628c2ecf20Sopenharmony_ci#define V_TX_IMM_DMA(x) ((x) << S_TX_IMM_DMA)
8638c2ecf20Sopenharmony_ci#define F_TX_IMM_DMA    V_TX_IMM_DMA(1U)
8648c2ecf20Sopenharmony_ci
8658c2ecf20Sopenharmony_cistruct cpl_tx_data_ack {
8668c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
8678c2ecf20Sopenharmony_ci	__be32 ack_seq;
8688c2ecf20Sopenharmony_ci};
8698c2ecf20Sopenharmony_ci
8708c2ecf20Sopenharmony_cistruct cpl_wr_ack {
8718c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
8728c2ecf20Sopenharmony_ci	__be16 credits;
8738c2ecf20Sopenharmony_ci	__be16 rsvd;
8748c2ecf20Sopenharmony_ci	__be32 snd_nxt;
8758c2ecf20Sopenharmony_ci	__be32 snd_una;
8768c2ecf20Sopenharmony_ci};
8778c2ecf20Sopenharmony_ci
8788c2ecf20Sopenharmony_cistruct cpl_rdma_ec_status {
8798c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
8808c2ecf20Sopenharmony_ci	__u8 rsvd[3];
8818c2ecf20Sopenharmony_ci	__u8 status;
8828c2ecf20Sopenharmony_ci};
8838c2ecf20Sopenharmony_ci
8848c2ecf20Sopenharmony_cistruct mngt_pktsched_wr {
8858c2ecf20Sopenharmony_ci	__be32 wr_hi;
8868c2ecf20Sopenharmony_ci	__be32 wr_lo;
8878c2ecf20Sopenharmony_ci	__u8 mngt_opcode;
8888c2ecf20Sopenharmony_ci	__u8 rsvd[7];
8898c2ecf20Sopenharmony_ci	__u8 sched;
8908c2ecf20Sopenharmony_ci	__u8 idx;
8918c2ecf20Sopenharmony_ci	__u8 min;
8928c2ecf20Sopenharmony_ci	__u8 max;
8938c2ecf20Sopenharmony_ci	__u8 binding;
8948c2ecf20Sopenharmony_ci	__u8 rsvd1[3];
8958c2ecf20Sopenharmony_ci};
8968c2ecf20Sopenharmony_ci
8978c2ecf20Sopenharmony_cistruct cpl_iscsi_hdr {
8988c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
8998c2ecf20Sopenharmony_ci	__be16 pdu_len_ddp;
9008c2ecf20Sopenharmony_ci	__be16 len;
9018c2ecf20Sopenharmony_ci	__be32 seq;
9028c2ecf20Sopenharmony_ci	__be16 urg;
9038c2ecf20Sopenharmony_ci	__u8 rsvd;
9048c2ecf20Sopenharmony_ci	__u8 status;
9058c2ecf20Sopenharmony_ci};
9068c2ecf20Sopenharmony_ci
9078c2ecf20Sopenharmony_ci/* cpl_iscsi_hdr.pdu_len_ddp fields */
9088c2ecf20Sopenharmony_ci#define S_ISCSI_PDU_LEN    0
9098c2ecf20Sopenharmony_ci#define M_ISCSI_PDU_LEN    0x7FFF
9108c2ecf20Sopenharmony_ci#define V_ISCSI_PDU_LEN(x) ((x) << S_ISCSI_PDU_LEN)
9118c2ecf20Sopenharmony_ci#define G_ISCSI_PDU_LEN(x) (((x) >> S_ISCSI_PDU_LEN) & M_ISCSI_PDU_LEN)
9128c2ecf20Sopenharmony_ci
9138c2ecf20Sopenharmony_ci#define S_ISCSI_DDP    15
9148c2ecf20Sopenharmony_ci#define V_ISCSI_DDP(x) ((x) << S_ISCSI_DDP)
9158c2ecf20Sopenharmony_ci#define F_ISCSI_DDP    V_ISCSI_DDP(1U)
9168c2ecf20Sopenharmony_ci
9178c2ecf20Sopenharmony_cistruct cpl_rx_data {
9188c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
9198c2ecf20Sopenharmony_ci	__be16 rsvd;
9208c2ecf20Sopenharmony_ci	__be16 len;
9218c2ecf20Sopenharmony_ci	__be32 seq;
9228c2ecf20Sopenharmony_ci	__be16 urg;
9238c2ecf20Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD)
9248c2ecf20Sopenharmony_ci	__u8 dack_mode:2;
9258c2ecf20Sopenharmony_ci	__u8 psh:1;
9268c2ecf20Sopenharmony_ci	__u8 heartbeat:1;
9278c2ecf20Sopenharmony_ci	 __u8:4;
9288c2ecf20Sopenharmony_ci#else
9298c2ecf20Sopenharmony_ci	 __u8:4;
9308c2ecf20Sopenharmony_ci	__u8 heartbeat:1;
9318c2ecf20Sopenharmony_ci	__u8 psh:1;
9328c2ecf20Sopenharmony_ci	__u8 dack_mode:2;
9338c2ecf20Sopenharmony_ci#endif
9348c2ecf20Sopenharmony_ci	__u8 status;
9358c2ecf20Sopenharmony_ci};
9368c2ecf20Sopenharmony_ci
9378c2ecf20Sopenharmony_cistruct cpl_rx_data_ack {
9388c2ecf20Sopenharmony_ci	WR_HDR;
9398c2ecf20Sopenharmony_ci	union opcode_tid ot;
9408c2ecf20Sopenharmony_ci	__be32 credit_dack;
9418c2ecf20Sopenharmony_ci};
9428c2ecf20Sopenharmony_ci
9438c2ecf20Sopenharmony_ci/* cpl_rx_data_ack.ack_seq fields */
9448c2ecf20Sopenharmony_ci#define S_RX_CREDITS    0
9458c2ecf20Sopenharmony_ci#define M_RX_CREDITS    0x7FFFFFF
9468c2ecf20Sopenharmony_ci#define V_RX_CREDITS(x) ((x) << S_RX_CREDITS)
9478c2ecf20Sopenharmony_ci#define G_RX_CREDITS(x) (((x) >> S_RX_CREDITS) & M_RX_CREDITS)
9488c2ecf20Sopenharmony_ci
9498c2ecf20Sopenharmony_ci#define S_RX_MODULATE    27
9508c2ecf20Sopenharmony_ci#define V_RX_MODULATE(x) ((x) << S_RX_MODULATE)
9518c2ecf20Sopenharmony_ci#define F_RX_MODULATE    V_RX_MODULATE(1U)
9528c2ecf20Sopenharmony_ci
9538c2ecf20Sopenharmony_ci#define S_RX_FORCE_ACK    28
9548c2ecf20Sopenharmony_ci#define V_RX_FORCE_ACK(x) ((x) << S_RX_FORCE_ACK)
9558c2ecf20Sopenharmony_ci#define F_RX_FORCE_ACK    V_RX_FORCE_ACK(1U)
9568c2ecf20Sopenharmony_ci
9578c2ecf20Sopenharmony_ci#define S_RX_DACK_MODE    29
9588c2ecf20Sopenharmony_ci#define M_RX_DACK_MODE    0x3
9598c2ecf20Sopenharmony_ci#define V_RX_DACK_MODE(x) ((x) << S_RX_DACK_MODE)
9608c2ecf20Sopenharmony_ci#define G_RX_DACK_MODE(x) (((x) >> S_RX_DACK_MODE) & M_RX_DACK_MODE)
9618c2ecf20Sopenharmony_ci
9628c2ecf20Sopenharmony_ci#define S_RX_DACK_CHANGE    31
9638c2ecf20Sopenharmony_ci#define V_RX_DACK_CHANGE(x) ((x) << S_RX_DACK_CHANGE)
9648c2ecf20Sopenharmony_ci#define F_RX_DACK_CHANGE    V_RX_DACK_CHANGE(1U)
9658c2ecf20Sopenharmony_ci
9668c2ecf20Sopenharmony_cistruct cpl_rx_urg_notify {
9678c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
9688c2ecf20Sopenharmony_ci	__be32 seq;
9698c2ecf20Sopenharmony_ci};
9708c2ecf20Sopenharmony_ci
9718c2ecf20Sopenharmony_cistruct cpl_rx_ddp_complete {
9728c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
9738c2ecf20Sopenharmony_ci	__be32 ddp_report;
9748c2ecf20Sopenharmony_ci};
9758c2ecf20Sopenharmony_ci
9768c2ecf20Sopenharmony_cistruct cpl_rx_data_ddp {
9778c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
9788c2ecf20Sopenharmony_ci	__be16 urg;
9798c2ecf20Sopenharmony_ci	__be16 len;
9808c2ecf20Sopenharmony_ci	__be32 seq;
9818c2ecf20Sopenharmony_ci	union {
9828c2ecf20Sopenharmony_ci		__be32 nxt_seq;
9838c2ecf20Sopenharmony_ci		__be32 ddp_report;
9848c2ecf20Sopenharmony_ci	};
9858c2ecf20Sopenharmony_ci	__be32 ulp_crc;
9868c2ecf20Sopenharmony_ci	__be32 ddpvld_status;
9878c2ecf20Sopenharmony_ci};
9888c2ecf20Sopenharmony_ci
9898c2ecf20Sopenharmony_ci/* cpl_rx_data_ddp.ddpvld_status fields */
9908c2ecf20Sopenharmony_ci#define S_DDP_STATUS    0
9918c2ecf20Sopenharmony_ci#define M_DDP_STATUS    0xFF
9928c2ecf20Sopenharmony_ci#define V_DDP_STATUS(x) ((x) << S_DDP_STATUS)
9938c2ecf20Sopenharmony_ci#define G_DDP_STATUS(x) (((x) >> S_DDP_STATUS) & M_DDP_STATUS)
9948c2ecf20Sopenharmony_ci
9958c2ecf20Sopenharmony_ci#define S_DDP_VALID    15
9968c2ecf20Sopenharmony_ci#define M_DDP_VALID    0x1FFFF
9978c2ecf20Sopenharmony_ci#define V_DDP_VALID(x) ((x) << S_DDP_VALID)
9988c2ecf20Sopenharmony_ci#define G_DDP_VALID(x) (((x) >> S_DDP_VALID) & M_DDP_VALID)
9998c2ecf20Sopenharmony_ci
10008c2ecf20Sopenharmony_ci#define S_DDP_PPOD_MISMATCH    15
10018c2ecf20Sopenharmony_ci#define V_DDP_PPOD_MISMATCH(x) ((x) << S_DDP_PPOD_MISMATCH)
10028c2ecf20Sopenharmony_ci#define F_DDP_PPOD_MISMATCH    V_DDP_PPOD_MISMATCH(1U)
10038c2ecf20Sopenharmony_ci
10048c2ecf20Sopenharmony_ci#define S_DDP_PDU    16
10058c2ecf20Sopenharmony_ci#define V_DDP_PDU(x) ((x) << S_DDP_PDU)
10068c2ecf20Sopenharmony_ci#define F_DDP_PDU    V_DDP_PDU(1U)
10078c2ecf20Sopenharmony_ci
10088c2ecf20Sopenharmony_ci#define S_DDP_LLIMIT_ERR    17
10098c2ecf20Sopenharmony_ci#define V_DDP_LLIMIT_ERR(x) ((x) << S_DDP_LLIMIT_ERR)
10108c2ecf20Sopenharmony_ci#define F_DDP_LLIMIT_ERR    V_DDP_LLIMIT_ERR(1U)
10118c2ecf20Sopenharmony_ci
10128c2ecf20Sopenharmony_ci#define S_DDP_PPOD_PARITY_ERR    18
10138c2ecf20Sopenharmony_ci#define V_DDP_PPOD_PARITY_ERR(x) ((x) << S_DDP_PPOD_PARITY_ERR)
10148c2ecf20Sopenharmony_ci#define F_DDP_PPOD_PARITY_ERR    V_DDP_PPOD_PARITY_ERR(1U)
10158c2ecf20Sopenharmony_ci
10168c2ecf20Sopenharmony_ci#define S_DDP_PADDING_ERR    19
10178c2ecf20Sopenharmony_ci#define V_DDP_PADDING_ERR(x) ((x) << S_DDP_PADDING_ERR)
10188c2ecf20Sopenharmony_ci#define F_DDP_PADDING_ERR    V_DDP_PADDING_ERR(1U)
10198c2ecf20Sopenharmony_ci
10208c2ecf20Sopenharmony_ci#define S_DDP_HDRCRC_ERR    20
10218c2ecf20Sopenharmony_ci#define V_DDP_HDRCRC_ERR(x) ((x) << S_DDP_HDRCRC_ERR)
10228c2ecf20Sopenharmony_ci#define F_DDP_HDRCRC_ERR    V_DDP_HDRCRC_ERR(1U)
10238c2ecf20Sopenharmony_ci
10248c2ecf20Sopenharmony_ci#define S_DDP_DATACRC_ERR    21
10258c2ecf20Sopenharmony_ci#define V_DDP_DATACRC_ERR(x) ((x) << S_DDP_DATACRC_ERR)
10268c2ecf20Sopenharmony_ci#define F_DDP_DATACRC_ERR    V_DDP_DATACRC_ERR(1U)
10278c2ecf20Sopenharmony_ci
10288c2ecf20Sopenharmony_ci#define S_DDP_INVALID_TAG    22
10298c2ecf20Sopenharmony_ci#define V_DDP_INVALID_TAG(x) ((x) << S_DDP_INVALID_TAG)
10308c2ecf20Sopenharmony_ci#define F_DDP_INVALID_TAG    V_DDP_INVALID_TAG(1U)
10318c2ecf20Sopenharmony_ci
10328c2ecf20Sopenharmony_ci#define S_DDP_ULIMIT_ERR    23
10338c2ecf20Sopenharmony_ci#define V_DDP_ULIMIT_ERR(x) ((x) << S_DDP_ULIMIT_ERR)
10348c2ecf20Sopenharmony_ci#define F_DDP_ULIMIT_ERR    V_DDP_ULIMIT_ERR(1U)
10358c2ecf20Sopenharmony_ci
10368c2ecf20Sopenharmony_ci#define S_DDP_OFFSET_ERR    24
10378c2ecf20Sopenharmony_ci#define V_DDP_OFFSET_ERR(x) ((x) << S_DDP_OFFSET_ERR)
10388c2ecf20Sopenharmony_ci#define F_DDP_OFFSET_ERR    V_DDP_OFFSET_ERR(1U)
10398c2ecf20Sopenharmony_ci
10408c2ecf20Sopenharmony_ci#define S_DDP_COLOR_ERR    25
10418c2ecf20Sopenharmony_ci#define V_DDP_COLOR_ERR(x) ((x) << S_DDP_COLOR_ERR)
10428c2ecf20Sopenharmony_ci#define F_DDP_COLOR_ERR    V_DDP_COLOR_ERR(1U)
10438c2ecf20Sopenharmony_ci
10448c2ecf20Sopenharmony_ci#define S_DDP_TID_MISMATCH    26
10458c2ecf20Sopenharmony_ci#define V_DDP_TID_MISMATCH(x) ((x) << S_DDP_TID_MISMATCH)
10468c2ecf20Sopenharmony_ci#define F_DDP_TID_MISMATCH    V_DDP_TID_MISMATCH(1U)
10478c2ecf20Sopenharmony_ci
10488c2ecf20Sopenharmony_ci#define S_DDP_INVALID_PPOD    27
10498c2ecf20Sopenharmony_ci#define V_DDP_INVALID_PPOD(x) ((x) << S_DDP_INVALID_PPOD)
10508c2ecf20Sopenharmony_ci#define F_DDP_INVALID_PPOD    V_DDP_INVALID_PPOD(1U)
10518c2ecf20Sopenharmony_ci
10528c2ecf20Sopenharmony_ci#define S_DDP_ULP_MODE    28
10538c2ecf20Sopenharmony_ci#define M_DDP_ULP_MODE    0xF
10548c2ecf20Sopenharmony_ci#define V_DDP_ULP_MODE(x) ((x) << S_DDP_ULP_MODE)
10558c2ecf20Sopenharmony_ci#define G_DDP_ULP_MODE(x) (((x) >> S_DDP_ULP_MODE) & M_DDP_ULP_MODE)
10568c2ecf20Sopenharmony_ci
10578c2ecf20Sopenharmony_ci/* cpl_rx_data_ddp.ddp_report fields */
10588c2ecf20Sopenharmony_ci#define S_DDP_OFFSET    0
10598c2ecf20Sopenharmony_ci#define M_DDP_OFFSET    0x3FFFFF
10608c2ecf20Sopenharmony_ci#define V_DDP_OFFSET(x) ((x) << S_DDP_OFFSET)
10618c2ecf20Sopenharmony_ci#define G_DDP_OFFSET(x) (((x) >> S_DDP_OFFSET) & M_DDP_OFFSET)
10628c2ecf20Sopenharmony_ci
10638c2ecf20Sopenharmony_ci#define S_DDP_URG    24
10648c2ecf20Sopenharmony_ci#define V_DDP_URG(x) ((x) << S_DDP_URG)
10658c2ecf20Sopenharmony_ci#define F_DDP_URG    V_DDP_URG(1U)
10668c2ecf20Sopenharmony_ci
10678c2ecf20Sopenharmony_ci#define S_DDP_PSH    25
10688c2ecf20Sopenharmony_ci#define V_DDP_PSH(x) ((x) << S_DDP_PSH)
10698c2ecf20Sopenharmony_ci#define F_DDP_PSH    V_DDP_PSH(1U)
10708c2ecf20Sopenharmony_ci
10718c2ecf20Sopenharmony_ci#define S_DDP_BUF_COMPLETE    26
10728c2ecf20Sopenharmony_ci#define V_DDP_BUF_COMPLETE(x) ((x) << S_DDP_BUF_COMPLETE)
10738c2ecf20Sopenharmony_ci#define F_DDP_BUF_COMPLETE    V_DDP_BUF_COMPLETE(1U)
10748c2ecf20Sopenharmony_ci
10758c2ecf20Sopenharmony_ci#define S_DDP_BUF_TIMED_OUT    27
10768c2ecf20Sopenharmony_ci#define V_DDP_BUF_TIMED_OUT(x) ((x) << S_DDP_BUF_TIMED_OUT)
10778c2ecf20Sopenharmony_ci#define F_DDP_BUF_TIMED_OUT    V_DDP_BUF_TIMED_OUT(1U)
10788c2ecf20Sopenharmony_ci
10798c2ecf20Sopenharmony_ci#define S_DDP_BUF_IDX    28
10808c2ecf20Sopenharmony_ci#define V_DDP_BUF_IDX(x) ((x) << S_DDP_BUF_IDX)
10818c2ecf20Sopenharmony_ci#define F_DDP_BUF_IDX    V_DDP_BUF_IDX(1U)
10828c2ecf20Sopenharmony_ci
10838c2ecf20Sopenharmony_cistruct cpl_tx_pkt {
10848c2ecf20Sopenharmony_ci	WR_HDR;
10858c2ecf20Sopenharmony_ci	__be32 cntrl;
10868c2ecf20Sopenharmony_ci	__be32 len;
10878c2ecf20Sopenharmony_ci};
10888c2ecf20Sopenharmony_ci
10898c2ecf20Sopenharmony_cistruct cpl_tx_pkt_lso {
10908c2ecf20Sopenharmony_ci	WR_HDR;
10918c2ecf20Sopenharmony_ci	__be32 cntrl;
10928c2ecf20Sopenharmony_ci	__be32 len;
10938c2ecf20Sopenharmony_ci
10948c2ecf20Sopenharmony_ci	__be32 rsvd;
10958c2ecf20Sopenharmony_ci	__be32 lso_info;
10968c2ecf20Sopenharmony_ci};
10978c2ecf20Sopenharmony_ci
10988c2ecf20Sopenharmony_ci/* cpl_tx_pkt*.cntrl fields */
10998c2ecf20Sopenharmony_ci#define S_TXPKT_VLAN    0
11008c2ecf20Sopenharmony_ci#define M_TXPKT_VLAN    0xFFFF
11018c2ecf20Sopenharmony_ci#define V_TXPKT_VLAN(x) ((x) << S_TXPKT_VLAN)
11028c2ecf20Sopenharmony_ci#define G_TXPKT_VLAN(x) (((x) >> S_TXPKT_VLAN) & M_TXPKT_VLAN)
11038c2ecf20Sopenharmony_ci
11048c2ecf20Sopenharmony_ci#define S_TXPKT_INTF    16
11058c2ecf20Sopenharmony_ci#define M_TXPKT_INTF    0xF
11068c2ecf20Sopenharmony_ci#define V_TXPKT_INTF(x) ((x) << S_TXPKT_INTF)
11078c2ecf20Sopenharmony_ci#define G_TXPKT_INTF(x) (((x) >> S_TXPKT_INTF) & M_TXPKT_INTF)
11088c2ecf20Sopenharmony_ci
11098c2ecf20Sopenharmony_ci#define S_TXPKT_IPCSUM_DIS    20
11108c2ecf20Sopenharmony_ci#define V_TXPKT_IPCSUM_DIS(x) ((x) << S_TXPKT_IPCSUM_DIS)
11118c2ecf20Sopenharmony_ci#define F_TXPKT_IPCSUM_DIS    V_TXPKT_IPCSUM_DIS(1U)
11128c2ecf20Sopenharmony_ci
11138c2ecf20Sopenharmony_ci#define S_TXPKT_L4CSUM_DIS    21
11148c2ecf20Sopenharmony_ci#define V_TXPKT_L4CSUM_DIS(x) ((x) << S_TXPKT_L4CSUM_DIS)
11158c2ecf20Sopenharmony_ci#define F_TXPKT_L4CSUM_DIS    V_TXPKT_L4CSUM_DIS(1U)
11168c2ecf20Sopenharmony_ci
11178c2ecf20Sopenharmony_ci#define S_TXPKT_VLAN_VLD    22
11188c2ecf20Sopenharmony_ci#define V_TXPKT_VLAN_VLD(x) ((x) << S_TXPKT_VLAN_VLD)
11198c2ecf20Sopenharmony_ci#define F_TXPKT_VLAN_VLD    V_TXPKT_VLAN_VLD(1U)
11208c2ecf20Sopenharmony_ci
11218c2ecf20Sopenharmony_ci#define S_TXPKT_LOOPBACK    23
11228c2ecf20Sopenharmony_ci#define V_TXPKT_LOOPBACK(x) ((x) << S_TXPKT_LOOPBACK)
11238c2ecf20Sopenharmony_ci#define F_TXPKT_LOOPBACK    V_TXPKT_LOOPBACK(1U)
11248c2ecf20Sopenharmony_ci
11258c2ecf20Sopenharmony_ci#define S_TXPKT_OPCODE    24
11268c2ecf20Sopenharmony_ci#define M_TXPKT_OPCODE    0xFF
11278c2ecf20Sopenharmony_ci#define V_TXPKT_OPCODE(x) ((x) << S_TXPKT_OPCODE)
11288c2ecf20Sopenharmony_ci#define G_TXPKT_OPCODE(x) (((x) >> S_TXPKT_OPCODE) & M_TXPKT_OPCODE)
11298c2ecf20Sopenharmony_ci
11308c2ecf20Sopenharmony_ci/* cpl_tx_pkt_lso.lso_info fields */
11318c2ecf20Sopenharmony_ci#define S_LSO_MSS    0
11328c2ecf20Sopenharmony_ci#define M_LSO_MSS    0x3FFF
11338c2ecf20Sopenharmony_ci#define V_LSO_MSS(x) ((x) << S_LSO_MSS)
11348c2ecf20Sopenharmony_ci#define G_LSO_MSS(x) (((x) >> S_LSO_MSS) & M_LSO_MSS)
11358c2ecf20Sopenharmony_ci
11368c2ecf20Sopenharmony_ci#define S_LSO_ETH_TYPE    14
11378c2ecf20Sopenharmony_ci#define M_LSO_ETH_TYPE    0x3
11388c2ecf20Sopenharmony_ci#define V_LSO_ETH_TYPE(x) ((x) << S_LSO_ETH_TYPE)
11398c2ecf20Sopenharmony_ci#define G_LSO_ETH_TYPE(x) (((x) >> S_LSO_ETH_TYPE) & M_LSO_ETH_TYPE)
11408c2ecf20Sopenharmony_ci
11418c2ecf20Sopenharmony_ci#define S_LSO_TCPHDR_WORDS    16
11428c2ecf20Sopenharmony_ci#define M_LSO_TCPHDR_WORDS    0xF
11438c2ecf20Sopenharmony_ci#define V_LSO_TCPHDR_WORDS(x) ((x) << S_LSO_TCPHDR_WORDS)
11448c2ecf20Sopenharmony_ci#define G_LSO_TCPHDR_WORDS(x) (((x) >> S_LSO_TCPHDR_WORDS) & M_LSO_TCPHDR_WORDS)
11458c2ecf20Sopenharmony_ci
11468c2ecf20Sopenharmony_ci#define S_LSO_IPHDR_WORDS    20
11478c2ecf20Sopenharmony_ci#define M_LSO_IPHDR_WORDS    0xF
11488c2ecf20Sopenharmony_ci#define V_LSO_IPHDR_WORDS(x) ((x) << S_LSO_IPHDR_WORDS)
11498c2ecf20Sopenharmony_ci#define G_LSO_IPHDR_WORDS(x) (((x) >> S_LSO_IPHDR_WORDS) & M_LSO_IPHDR_WORDS)
11508c2ecf20Sopenharmony_ci
11518c2ecf20Sopenharmony_ci#define S_LSO_IPV6    24
11528c2ecf20Sopenharmony_ci#define V_LSO_IPV6(x) ((x) << S_LSO_IPV6)
11538c2ecf20Sopenharmony_ci#define F_LSO_IPV6    V_LSO_IPV6(1U)
11548c2ecf20Sopenharmony_ci
11558c2ecf20Sopenharmony_cistruct cpl_trace_pkt {
11568c2ecf20Sopenharmony_ci#ifdef CHELSIO_FW
11578c2ecf20Sopenharmony_ci	__u8 rss_opcode;
11588c2ecf20Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD)
11598c2ecf20Sopenharmony_ci	__u8 err:1;
11608c2ecf20Sopenharmony_ci	 __u8:7;
11618c2ecf20Sopenharmony_ci#else
11628c2ecf20Sopenharmony_ci	 __u8:7;
11638c2ecf20Sopenharmony_ci	__u8 err:1;
11648c2ecf20Sopenharmony_ci#endif
11658c2ecf20Sopenharmony_ci	__u8 rsvd0;
11668c2ecf20Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD)
11678c2ecf20Sopenharmony_ci	__u8 qid:4;
11688c2ecf20Sopenharmony_ci	 __u8:4;
11698c2ecf20Sopenharmony_ci#else
11708c2ecf20Sopenharmony_ci	 __u8:4;
11718c2ecf20Sopenharmony_ci	__u8 qid:4;
11728c2ecf20Sopenharmony_ci#endif
11738c2ecf20Sopenharmony_ci	__be32 tstamp;
11748c2ecf20Sopenharmony_ci#endif				/* CHELSIO_FW */
11758c2ecf20Sopenharmony_ci
11768c2ecf20Sopenharmony_ci	__u8 opcode;
11778c2ecf20Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD)
11788c2ecf20Sopenharmony_ci	__u8 iff:4;
11798c2ecf20Sopenharmony_ci	 __u8:4;
11808c2ecf20Sopenharmony_ci#else
11818c2ecf20Sopenharmony_ci	 __u8:4;
11828c2ecf20Sopenharmony_ci	__u8 iff:4;
11838c2ecf20Sopenharmony_ci#endif
11848c2ecf20Sopenharmony_ci	__u8 rsvd[4];
11858c2ecf20Sopenharmony_ci	__be16 len;
11868c2ecf20Sopenharmony_ci};
11878c2ecf20Sopenharmony_ci
11888c2ecf20Sopenharmony_cistruct cpl_rx_pkt {
11898c2ecf20Sopenharmony_ci	RSS_HDR __u8 opcode;
11908c2ecf20Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD)
11918c2ecf20Sopenharmony_ci	__u8 iff:4;
11928c2ecf20Sopenharmony_ci	__u8 csum_valid:1;
11938c2ecf20Sopenharmony_ci	__u8 ipmi_pkt:1;
11948c2ecf20Sopenharmony_ci	__u8 vlan_valid:1;
11958c2ecf20Sopenharmony_ci	__u8 fragment:1;
11968c2ecf20Sopenharmony_ci#else
11978c2ecf20Sopenharmony_ci	__u8 fragment:1;
11988c2ecf20Sopenharmony_ci	__u8 vlan_valid:1;
11998c2ecf20Sopenharmony_ci	__u8 ipmi_pkt:1;
12008c2ecf20Sopenharmony_ci	__u8 csum_valid:1;
12018c2ecf20Sopenharmony_ci	__u8 iff:4;
12028c2ecf20Sopenharmony_ci#endif
12038c2ecf20Sopenharmony_ci	__be16 csum;
12048c2ecf20Sopenharmony_ci	__be16 vlan;
12058c2ecf20Sopenharmony_ci	__be16 len;
12068c2ecf20Sopenharmony_ci};
12078c2ecf20Sopenharmony_ci
12088c2ecf20Sopenharmony_cistruct cpl_l2t_write_req {
12098c2ecf20Sopenharmony_ci	WR_HDR;
12108c2ecf20Sopenharmony_ci	union opcode_tid ot;
12118c2ecf20Sopenharmony_ci	__be32 params;
12128c2ecf20Sopenharmony_ci	__u8 rsvd[2];
12138c2ecf20Sopenharmony_ci	__u8 dst_mac[6];
12148c2ecf20Sopenharmony_ci};
12158c2ecf20Sopenharmony_ci
12168c2ecf20Sopenharmony_ci/* cpl_l2t_write_req.params fields */
12178c2ecf20Sopenharmony_ci#define S_L2T_W_IDX    0
12188c2ecf20Sopenharmony_ci#define M_L2T_W_IDX    0x7FF
12198c2ecf20Sopenharmony_ci#define V_L2T_W_IDX(x) ((x) << S_L2T_W_IDX)
12208c2ecf20Sopenharmony_ci#define G_L2T_W_IDX(x) (((x) >> S_L2T_W_IDX) & M_L2T_W_IDX)
12218c2ecf20Sopenharmony_ci
12228c2ecf20Sopenharmony_ci#define S_L2T_W_VLAN    11
12238c2ecf20Sopenharmony_ci#define M_L2T_W_VLAN    0xFFF
12248c2ecf20Sopenharmony_ci#define V_L2T_W_VLAN(x) ((x) << S_L2T_W_VLAN)
12258c2ecf20Sopenharmony_ci#define G_L2T_W_VLAN(x) (((x) >> S_L2T_W_VLAN) & M_L2T_W_VLAN)
12268c2ecf20Sopenharmony_ci
12278c2ecf20Sopenharmony_ci#define S_L2T_W_IFF    23
12288c2ecf20Sopenharmony_ci#define M_L2T_W_IFF    0xF
12298c2ecf20Sopenharmony_ci#define V_L2T_W_IFF(x) ((x) << S_L2T_W_IFF)
12308c2ecf20Sopenharmony_ci#define G_L2T_W_IFF(x) (((x) >> S_L2T_W_IFF) & M_L2T_W_IFF)
12318c2ecf20Sopenharmony_ci
12328c2ecf20Sopenharmony_ci#define S_L2T_W_PRIO    27
12338c2ecf20Sopenharmony_ci#define M_L2T_W_PRIO    0x7
12348c2ecf20Sopenharmony_ci#define V_L2T_W_PRIO(x) ((x) << S_L2T_W_PRIO)
12358c2ecf20Sopenharmony_ci#define G_L2T_W_PRIO(x) (((x) >> S_L2T_W_PRIO) & M_L2T_W_PRIO)
12368c2ecf20Sopenharmony_ci
12378c2ecf20Sopenharmony_cistruct cpl_l2t_write_rpl {
12388c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
12398c2ecf20Sopenharmony_ci	__u8 status;
12408c2ecf20Sopenharmony_ci	__u8 rsvd[3];
12418c2ecf20Sopenharmony_ci};
12428c2ecf20Sopenharmony_ci
12438c2ecf20Sopenharmony_cistruct cpl_l2t_read_req {
12448c2ecf20Sopenharmony_ci	WR_HDR;
12458c2ecf20Sopenharmony_ci	union opcode_tid ot;
12468c2ecf20Sopenharmony_ci	__be16 rsvd;
12478c2ecf20Sopenharmony_ci	__be16 l2t_idx;
12488c2ecf20Sopenharmony_ci};
12498c2ecf20Sopenharmony_ci
12508c2ecf20Sopenharmony_cistruct cpl_l2t_read_rpl {
12518c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
12528c2ecf20Sopenharmony_ci	__be32 params;
12538c2ecf20Sopenharmony_ci	__u8 rsvd[2];
12548c2ecf20Sopenharmony_ci	__u8 dst_mac[6];
12558c2ecf20Sopenharmony_ci};
12568c2ecf20Sopenharmony_ci
12578c2ecf20Sopenharmony_ci/* cpl_l2t_read_rpl.params fields */
12588c2ecf20Sopenharmony_ci#define S_L2T_R_PRIO    0
12598c2ecf20Sopenharmony_ci#define M_L2T_R_PRIO    0x7
12608c2ecf20Sopenharmony_ci#define V_L2T_R_PRIO(x) ((x) << S_L2T_R_PRIO)
12618c2ecf20Sopenharmony_ci#define G_L2T_R_PRIO(x) (((x) >> S_L2T_R_PRIO) & M_L2T_R_PRIO)
12628c2ecf20Sopenharmony_ci
12638c2ecf20Sopenharmony_ci#define S_L2T_R_VLAN    8
12648c2ecf20Sopenharmony_ci#define M_L2T_R_VLAN    0xFFF
12658c2ecf20Sopenharmony_ci#define V_L2T_R_VLAN(x) ((x) << S_L2T_R_VLAN)
12668c2ecf20Sopenharmony_ci#define G_L2T_R_VLAN(x) (((x) >> S_L2T_R_VLAN) & M_L2T_R_VLAN)
12678c2ecf20Sopenharmony_ci
12688c2ecf20Sopenharmony_ci#define S_L2T_R_IFF    20
12698c2ecf20Sopenharmony_ci#define M_L2T_R_IFF    0xF
12708c2ecf20Sopenharmony_ci#define V_L2T_R_IFF(x) ((x) << S_L2T_R_IFF)
12718c2ecf20Sopenharmony_ci#define G_L2T_R_IFF(x) (((x) >> S_L2T_R_IFF) & M_L2T_R_IFF)
12728c2ecf20Sopenharmony_ci
12738c2ecf20Sopenharmony_ci#define S_L2T_STATUS    24
12748c2ecf20Sopenharmony_ci#define M_L2T_STATUS    0xFF
12758c2ecf20Sopenharmony_ci#define V_L2T_STATUS(x) ((x) << S_L2T_STATUS)
12768c2ecf20Sopenharmony_ci#define G_L2T_STATUS(x) (((x) >> S_L2T_STATUS) & M_L2T_STATUS)
12778c2ecf20Sopenharmony_ci
12788c2ecf20Sopenharmony_cistruct cpl_smt_write_req {
12798c2ecf20Sopenharmony_ci	WR_HDR;
12808c2ecf20Sopenharmony_ci	union opcode_tid ot;
12818c2ecf20Sopenharmony_ci	__u8 rsvd0;
12828c2ecf20Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD)
12838c2ecf20Sopenharmony_ci	__u8 mtu_idx:4;
12848c2ecf20Sopenharmony_ci	__u8 iff:4;
12858c2ecf20Sopenharmony_ci#else
12868c2ecf20Sopenharmony_ci	__u8 iff:4;
12878c2ecf20Sopenharmony_ci	__u8 mtu_idx:4;
12888c2ecf20Sopenharmony_ci#endif
12898c2ecf20Sopenharmony_ci	__be16 rsvd2;
12908c2ecf20Sopenharmony_ci	__be16 rsvd3;
12918c2ecf20Sopenharmony_ci	__u8 src_mac1[6];
12928c2ecf20Sopenharmony_ci	__be16 rsvd4;
12938c2ecf20Sopenharmony_ci	__u8 src_mac0[6];
12948c2ecf20Sopenharmony_ci};
12958c2ecf20Sopenharmony_ci
12968c2ecf20Sopenharmony_cistruct cpl_smt_write_rpl {
12978c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
12988c2ecf20Sopenharmony_ci	__u8 status;
12998c2ecf20Sopenharmony_ci	__u8 rsvd[3];
13008c2ecf20Sopenharmony_ci};
13018c2ecf20Sopenharmony_ci
13028c2ecf20Sopenharmony_cistruct cpl_smt_read_req {
13038c2ecf20Sopenharmony_ci	WR_HDR;
13048c2ecf20Sopenharmony_ci	union opcode_tid ot;
13058c2ecf20Sopenharmony_ci	__u8 rsvd0;
13068c2ecf20Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD)
13078c2ecf20Sopenharmony_ci	 __u8:4;
13088c2ecf20Sopenharmony_ci	__u8 iff:4;
13098c2ecf20Sopenharmony_ci#else
13108c2ecf20Sopenharmony_ci	__u8 iff:4;
13118c2ecf20Sopenharmony_ci	 __u8:4;
13128c2ecf20Sopenharmony_ci#endif
13138c2ecf20Sopenharmony_ci	__be16 rsvd2;
13148c2ecf20Sopenharmony_ci};
13158c2ecf20Sopenharmony_ci
13168c2ecf20Sopenharmony_cistruct cpl_smt_read_rpl {
13178c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
13188c2ecf20Sopenharmony_ci	__u8 status;
13198c2ecf20Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD)
13208c2ecf20Sopenharmony_ci	__u8 mtu_idx:4;
13218c2ecf20Sopenharmony_ci	 __u8:4;
13228c2ecf20Sopenharmony_ci#else
13238c2ecf20Sopenharmony_ci	 __u8:4;
13248c2ecf20Sopenharmony_ci	__u8 mtu_idx:4;
13258c2ecf20Sopenharmony_ci#endif
13268c2ecf20Sopenharmony_ci	__be16 rsvd2;
13278c2ecf20Sopenharmony_ci	__be16 rsvd3;
13288c2ecf20Sopenharmony_ci	__u8 src_mac1[6];
13298c2ecf20Sopenharmony_ci	__be16 rsvd4;
13308c2ecf20Sopenharmony_ci	__u8 src_mac0[6];
13318c2ecf20Sopenharmony_ci};
13328c2ecf20Sopenharmony_ci
13338c2ecf20Sopenharmony_cistruct cpl_rte_delete_req {
13348c2ecf20Sopenharmony_ci	WR_HDR;
13358c2ecf20Sopenharmony_ci	union opcode_tid ot;
13368c2ecf20Sopenharmony_ci	__be32 params;
13378c2ecf20Sopenharmony_ci};
13388c2ecf20Sopenharmony_ci
13398c2ecf20Sopenharmony_ci/* { cpl_rte_delete_req, cpl_rte_read_req }.params fields */
13408c2ecf20Sopenharmony_ci#define S_RTE_REQ_LUT_IX    8
13418c2ecf20Sopenharmony_ci#define M_RTE_REQ_LUT_IX    0x7FF
13428c2ecf20Sopenharmony_ci#define V_RTE_REQ_LUT_IX(x) ((x) << S_RTE_REQ_LUT_IX)
13438c2ecf20Sopenharmony_ci#define G_RTE_REQ_LUT_IX(x) (((x) >> S_RTE_REQ_LUT_IX) & M_RTE_REQ_LUT_IX)
13448c2ecf20Sopenharmony_ci
13458c2ecf20Sopenharmony_ci#define S_RTE_REQ_LUT_BASE    19
13468c2ecf20Sopenharmony_ci#define M_RTE_REQ_LUT_BASE    0x7FF
13478c2ecf20Sopenharmony_ci#define V_RTE_REQ_LUT_BASE(x) ((x) << S_RTE_REQ_LUT_BASE)
13488c2ecf20Sopenharmony_ci#define G_RTE_REQ_LUT_BASE(x) (((x) >> S_RTE_REQ_LUT_BASE) & M_RTE_REQ_LUT_BASE)
13498c2ecf20Sopenharmony_ci
13508c2ecf20Sopenharmony_ci#define S_RTE_READ_REQ_SELECT    31
13518c2ecf20Sopenharmony_ci#define V_RTE_READ_REQ_SELECT(x) ((x) << S_RTE_READ_REQ_SELECT)
13528c2ecf20Sopenharmony_ci#define F_RTE_READ_REQ_SELECT    V_RTE_READ_REQ_SELECT(1U)
13538c2ecf20Sopenharmony_ci
13548c2ecf20Sopenharmony_cistruct cpl_rte_delete_rpl {
13558c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
13568c2ecf20Sopenharmony_ci	__u8 status;
13578c2ecf20Sopenharmony_ci	__u8 rsvd[3];
13588c2ecf20Sopenharmony_ci};
13598c2ecf20Sopenharmony_ci
13608c2ecf20Sopenharmony_cistruct cpl_rte_write_req {
13618c2ecf20Sopenharmony_ci	WR_HDR;
13628c2ecf20Sopenharmony_ci	union opcode_tid ot;
13638c2ecf20Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD)
13648c2ecf20Sopenharmony_ci	 __u8:6;
13658c2ecf20Sopenharmony_ci	__u8 write_tcam:1;
13668c2ecf20Sopenharmony_ci	__u8 write_l2t_lut:1;
13678c2ecf20Sopenharmony_ci#else
13688c2ecf20Sopenharmony_ci	__u8 write_l2t_lut:1;
13698c2ecf20Sopenharmony_ci	__u8 write_tcam:1;
13708c2ecf20Sopenharmony_ci	 __u8:6;
13718c2ecf20Sopenharmony_ci#endif
13728c2ecf20Sopenharmony_ci	__u8 rsvd[3];
13738c2ecf20Sopenharmony_ci	__be32 lut_params;
13748c2ecf20Sopenharmony_ci	__be16 rsvd2;
13758c2ecf20Sopenharmony_ci	__be16 l2t_idx;
13768c2ecf20Sopenharmony_ci	__be32 netmask;
13778c2ecf20Sopenharmony_ci	__be32 faddr;
13788c2ecf20Sopenharmony_ci};
13798c2ecf20Sopenharmony_ci
13808c2ecf20Sopenharmony_ci/* cpl_rte_write_req.lut_params fields */
13818c2ecf20Sopenharmony_ci#define S_RTE_WRITE_REQ_LUT_IX    10
13828c2ecf20Sopenharmony_ci#define M_RTE_WRITE_REQ_LUT_IX    0x7FF
13838c2ecf20Sopenharmony_ci#define V_RTE_WRITE_REQ_LUT_IX(x) ((x) << S_RTE_WRITE_REQ_LUT_IX)
13848c2ecf20Sopenharmony_ci#define G_RTE_WRITE_REQ_LUT_IX(x) (((x) >> S_RTE_WRITE_REQ_LUT_IX) & M_RTE_WRITE_REQ_LUT_IX)
13858c2ecf20Sopenharmony_ci
13868c2ecf20Sopenharmony_ci#define S_RTE_WRITE_REQ_LUT_BASE    21
13878c2ecf20Sopenharmony_ci#define M_RTE_WRITE_REQ_LUT_BASE    0x7FF
13888c2ecf20Sopenharmony_ci#define V_RTE_WRITE_REQ_LUT_BASE(x) ((x) << S_RTE_WRITE_REQ_LUT_BASE)
13898c2ecf20Sopenharmony_ci#define G_RTE_WRITE_REQ_LUT_BASE(x) (((x) >> S_RTE_WRITE_REQ_LUT_BASE) & M_RTE_WRITE_REQ_LUT_BASE)
13908c2ecf20Sopenharmony_ci
13918c2ecf20Sopenharmony_cistruct cpl_rte_write_rpl {
13928c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
13938c2ecf20Sopenharmony_ci	__u8 status;
13948c2ecf20Sopenharmony_ci	__u8 rsvd[3];
13958c2ecf20Sopenharmony_ci};
13968c2ecf20Sopenharmony_ci
13978c2ecf20Sopenharmony_cistruct cpl_rte_read_req {
13988c2ecf20Sopenharmony_ci	WR_HDR;
13998c2ecf20Sopenharmony_ci	union opcode_tid ot;
14008c2ecf20Sopenharmony_ci	__be32 params;
14018c2ecf20Sopenharmony_ci};
14028c2ecf20Sopenharmony_ci
14038c2ecf20Sopenharmony_cistruct cpl_rte_read_rpl {
14048c2ecf20Sopenharmony_ci	RSS_HDR union opcode_tid ot;
14058c2ecf20Sopenharmony_ci	__u8 status;
14068c2ecf20Sopenharmony_ci	__u8 rsvd0;
14078c2ecf20Sopenharmony_ci	__be16 l2t_idx;
14088c2ecf20Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD)
14098c2ecf20Sopenharmony_ci	 __u8:7;
14108c2ecf20Sopenharmony_ci	__u8 select:1;
14118c2ecf20Sopenharmony_ci#else
14128c2ecf20Sopenharmony_ci	__u8 select:1;
14138c2ecf20Sopenharmony_ci	 __u8:7;
14148c2ecf20Sopenharmony_ci#endif
14158c2ecf20Sopenharmony_ci	__u8 rsvd2[3];
14168c2ecf20Sopenharmony_ci	__be32 addr;
14178c2ecf20Sopenharmony_ci};
14188c2ecf20Sopenharmony_ci
14198c2ecf20Sopenharmony_cistruct cpl_tid_release {
14208c2ecf20Sopenharmony_ci	WR_HDR;
14218c2ecf20Sopenharmony_ci	union opcode_tid ot;
14228c2ecf20Sopenharmony_ci	__be32 rsvd;
14238c2ecf20Sopenharmony_ci};
14248c2ecf20Sopenharmony_ci
14258c2ecf20Sopenharmony_cistruct cpl_barrier {
14268c2ecf20Sopenharmony_ci	WR_HDR;
14278c2ecf20Sopenharmony_ci	__u8 opcode;
14288c2ecf20Sopenharmony_ci	__u8 rsvd[7];
14298c2ecf20Sopenharmony_ci};
14308c2ecf20Sopenharmony_ci
14318c2ecf20Sopenharmony_cistruct cpl_rdma_read_req {
14328c2ecf20Sopenharmony_ci	__u8 opcode;
14338c2ecf20Sopenharmony_ci	__u8 rsvd[15];
14348c2ecf20Sopenharmony_ci};
14358c2ecf20Sopenharmony_ci
14368c2ecf20Sopenharmony_cistruct cpl_rdma_terminate {
14378c2ecf20Sopenharmony_ci#ifdef CHELSIO_FW
14388c2ecf20Sopenharmony_ci	__u8 opcode;
14398c2ecf20Sopenharmony_ci	__u8 rsvd[2];
14408c2ecf20Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD)
14418c2ecf20Sopenharmony_ci	__u8 rspq:3;
14428c2ecf20Sopenharmony_ci	 __u8:5;
14438c2ecf20Sopenharmony_ci#else
14448c2ecf20Sopenharmony_ci	 __u8:5;
14458c2ecf20Sopenharmony_ci	__u8 rspq:3;
14468c2ecf20Sopenharmony_ci#endif
14478c2ecf20Sopenharmony_ci	__be32 tid_len;
14488c2ecf20Sopenharmony_ci#endif
14498c2ecf20Sopenharmony_ci	__be32 msn;
14508c2ecf20Sopenharmony_ci	__be32 mo;
14518c2ecf20Sopenharmony_ci	__u8 data[];
14528c2ecf20Sopenharmony_ci};
14538c2ecf20Sopenharmony_ci
14548c2ecf20Sopenharmony_ci/* cpl_rdma_terminate.tid_len fields */
14558c2ecf20Sopenharmony_ci#define S_FLIT_CNT    0
14568c2ecf20Sopenharmony_ci#define M_FLIT_CNT    0xFF
14578c2ecf20Sopenharmony_ci#define V_FLIT_CNT(x) ((x) << S_FLIT_CNT)
14588c2ecf20Sopenharmony_ci#define G_FLIT_CNT(x) (((x) >> S_FLIT_CNT) & M_FLIT_CNT)
14598c2ecf20Sopenharmony_ci
14608c2ecf20Sopenharmony_ci#define S_TERM_TID    8
14618c2ecf20Sopenharmony_ci#define M_TERM_TID    0xFFFFF
14628c2ecf20Sopenharmony_ci#define V_TERM_TID(x) ((x) << S_TERM_TID)
14638c2ecf20Sopenharmony_ci#define G_TERM_TID(x) (((x) >> S_TERM_TID) & M_TERM_TID)
14648c2ecf20Sopenharmony_ci
14658c2ecf20Sopenharmony_ci/* ULP_TX opcodes */
14668c2ecf20Sopenharmony_cienum { ULP_MEM_READ = 2, ULP_MEM_WRITE = 3, ULP_TXPKT = 4 };
14678c2ecf20Sopenharmony_ci
14688c2ecf20Sopenharmony_ci#define S_ULPTX_CMD	28
14698c2ecf20Sopenharmony_ci#define M_ULPTX_CMD	0xF
14708c2ecf20Sopenharmony_ci#define V_ULPTX_CMD(x)	((x) << S_ULPTX_CMD)
14718c2ecf20Sopenharmony_ci
14728c2ecf20Sopenharmony_ci#define S_ULPTX_NFLITS	0
14738c2ecf20Sopenharmony_ci#define M_ULPTX_NFLITS	0xFF
14748c2ecf20Sopenharmony_ci#define V_ULPTX_NFLITS(x) ((x) << S_ULPTX_NFLITS)
14758c2ecf20Sopenharmony_ci
14768c2ecf20Sopenharmony_cistruct ulp_mem_io {
14778c2ecf20Sopenharmony_ci	WR_HDR;
14788c2ecf20Sopenharmony_ci	__be32 cmd_lock_addr;
14798c2ecf20Sopenharmony_ci	__be32 len;
14808c2ecf20Sopenharmony_ci};
14818c2ecf20Sopenharmony_ci
14828c2ecf20Sopenharmony_ci/* ulp_mem_io.cmd_lock_addr fields */
14838c2ecf20Sopenharmony_ci#define S_ULP_MEMIO_ADDR	0
14848c2ecf20Sopenharmony_ci#define M_ULP_MEMIO_ADDR	0x7FFFFFF
14858c2ecf20Sopenharmony_ci#define V_ULP_MEMIO_ADDR(x)	((x) << S_ULP_MEMIO_ADDR)
14868c2ecf20Sopenharmony_ci#define S_ULP_MEMIO_LOCK	27
14878c2ecf20Sopenharmony_ci#define V_ULP_MEMIO_LOCK(x)	((x) << S_ULP_MEMIO_LOCK)
14888c2ecf20Sopenharmony_ci#define F_ULP_MEMIO_LOCK	V_ULP_MEMIO_LOCK(1U)
14898c2ecf20Sopenharmony_ci
14908c2ecf20Sopenharmony_ci/* ulp_mem_io.len fields */
14918c2ecf20Sopenharmony_ci#define S_ULP_MEMIO_DATA_LEN	28
14928c2ecf20Sopenharmony_ci#define M_ULP_MEMIO_DATA_LEN	0xF
14938c2ecf20Sopenharmony_ci#define V_ULP_MEMIO_DATA_LEN(x)	((x) << S_ULP_MEMIO_DATA_LEN)
14948c2ecf20Sopenharmony_ci
14958c2ecf20Sopenharmony_ci#endif				/* T3_CPL_H */
1496