xref: /dpdk/drivers/net/cxgbe/base/t4_msg.h (revision 993541b2fa4ffe4b532e22fae58fd9aa6638e441)
12aa5c722SRahul Lakkireddy /* SPDX-License-Identifier: BSD-3-Clause
22aa5c722SRahul Lakkireddy  * Copyright(c) 2014-2018 Chelsio Communications.
33bd122eeSRahul Lakkireddy  * All rights reserved.
43bd122eeSRahul Lakkireddy  */
53bd122eeSRahul Lakkireddy 
63bd122eeSRahul Lakkireddy #ifndef T4_MSG_H
73bd122eeSRahul Lakkireddy #define T4_MSG_H
83bd122eeSRahul Lakkireddy 
93bd122eeSRahul Lakkireddy enum {
10af44a577SShagun Agrawal 	CPL_ACT_OPEN_REQ      = 0x3,
1141dc98b0SShagun Agrawal 	CPL_SET_TCB_FIELD     = 0x5,
1241dc98b0SShagun Agrawal 	CPL_ABORT_REQ         = 0xA,
1341dc98b0SShagun Agrawal 	CPL_ABORT_RPL         = 0xB,
1423af667fSShagun Agrawal 	CPL_L2T_WRITE_REQ     = 0x12,
15*993541b2SKarra Satwik 	CPL_SMT_WRITE_REQ     = 0x14,
1641dc98b0SShagun Agrawal 	CPL_TID_RELEASE       = 0x1A,
1723af667fSShagun Agrawal 	CPL_L2T_WRITE_RPL     = 0x23,
18af44a577SShagun Agrawal 	CPL_ACT_OPEN_RPL      = 0x25,
1941dc98b0SShagun Agrawal 	CPL_ABORT_RPL_RSS     = 0x2D,
20*993541b2SKarra Satwik 	CPL_SMT_WRITE_RPL     = 0x2E,
219eb2c9a4SShagun Agrawal 	CPL_SET_TCB_RPL       = 0x3A,
22af44a577SShagun Agrawal 	CPL_ACT_OPEN_REQ6     = 0x83,
233bd122eeSRahul Lakkireddy 	CPL_SGE_EGR_UPDATE    = 0xA5,
243bd122eeSRahul Lakkireddy 	CPL_FW4_MSG           = 0xC0,
253bd122eeSRahul Lakkireddy 	CPL_FW6_MSG           = 0xE0,
263bd122eeSRahul Lakkireddy 	CPL_TX_PKT_LSO        = 0xED,
273bd122eeSRahul Lakkireddy 	CPL_TX_PKT_XT         = 0xEE,
283bd122eeSRahul Lakkireddy };
293bd122eeSRahul Lakkireddy 
30af44a577SShagun Agrawal enum CPL_error {
31af44a577SShagun Agrawal 	CPL_ERR_NONE               = 0,
32af44a577SShagun Agrawal 	CPL_ERR_TCAM_FULL          = 3,
33af44a577SShagun Agrawal };
34af44a577SShagun Agrawal 
35af44a577SShagun Agrawal enum {
36af44a577SShagun Agrawal 	ULP_MODE_NONE          = 0,
3748f523f6SRahul Lakkireddy 	ULP_MODE_TCPDDP        = 5,
38af44a577SShagun Agrawal };
39af44a577SShagun Agrawal 
4041dc98b0SShagun Agrawal enum {
4141dc98b0SShagun Agrawal 	CPL_ABORT_SEND_RST = 0,
4241dc98b0SShagun Agrawal 	CPL_ABORT_NO_RST,
4341dc98b0SShagun Agrawal };
4441dc98b0SShagun Agrawal 
453bd122eeSRahul Lakkireddy enum {                     /* TX_PKT_XT checksum types */
463bd122eeSRahul Lakkireddy 	TX_CSUM_TCPIP  = 8,
473bd122eeSRahul Lakkireddy 	TX_CSUM_UDPIP  = 9,
483bd122eeSRahul Lakkireddy 	TX_CSUM_TCPIP6 = 10,
493bd122eeSRahul Lakkireddy };
503bd122eeSRahul Lakkireddy 
513bd122eeSRahul Lakkireddy union opcode_tid {
523bd122eeSRahul Lakkireddy 	__be32 opcode_tid;
533bd122eeSRahul Lakkireddy 	__u8 opcode;
543bd122eeSRahul Lakkireddy };
553bd122eeSRahul Lakkireddy 
56af44a577SShagun Agrawal #define S_CPL_OPCODE    24
57af44a577SShagun Agrawal #define V_CPL_OPCODE(x) ((x) << S_CPL_OPCODE)
58af44a577SShagun Agrawal 
599eb2c9a4SShagun Agrawal #define G_TID(x)    ((x) & 0xFFFFFF)
609eb2c9a4SShagun Agrawal 
61af44a577SShagun Agrawal /* tid is assumed to be 24-bits */
62af44a577SShagun Agrawal #define MK_OPCODE_TID(opcode, tid) (V_CPL_OPCODE(opcode) | (tid))
63af44a577SShagun Agrawal 
649eb2c9a4SShagun Agrawal #define OPCODE_TID(cmd) ((cmd)->ot.opcode_tid)
659eb2c9a4SShagun Agrawal 
669eb2c9a4SShagun Agrawal /* extract the TID from a CPL command */
679eb2c9a4SShagun Agrawal #define GET_TID(cmd) (G_TID(be32_to_cpu(OPCODE_TID(cmd))))
689eb2c9a4SShagun Agrawal 
69af44a577SShagun Agrawal /* partitioning of TID fields that also carry a queue id */
70af44a577SShagun Agrawal #define S_TID_TID    0
71af44a577SShagun Agrawal #define M_TID_TID    0x3fff
72af44a577SShagun Agrawal #define G_TID_TID(x) (((x) >> S_TID_TID) & M_TID_TID)
73af44a577SShagun Agrawal 
7423af667fSShagun Agrawal #define S_TID_QID    14
7523af667fSShagun Agrawal #define V_TID_QID(x) ((x) << S_TID_QID)
7623af667fSShagun Agrawal 
773bd122eeSRahul Lakkireddy struct rss_header {
783bd122eeSRahul Lakkireddy 	__u8 opcode;
793bd122eeSRahul Lakkireddy #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
803bd122eeSRahul Lakkireddy 	__u8 channel:2;
813bd122eeSRahul Lakkireddy 	__u8 filter_hit:1;
823bd122eeSRahul Lakkireddy 	__u8 filter_tid:1;
833bd122eeSRahul Lakkireddy 	__u8 hash_type:2;
843bd122eeSRahul Lakkireddy 	__u8 ipv6:1;
853bd122eeSRahul Lakkireddy 	__u8 send2fw:1;
863bd122eeSRahul Lakkireddy #else
873bd122eeSRahul Lakkireddy 	__u8 send2fw:1;
883bd122eeSRahul Lakkireddy 	__u8 ipv6:1;
893bd122eeSRahul Lakkireddy 	__u8 hash_type:2;
903bd122eeSRahul Lakkireddy 	__u8 filter_tid:1;
913bd122eeSRahul Lakkireddy 	__u8 filter_hit:1;
923bd122eeSRahul Lakkireddy 	__u8 channel:2;
933bd122eeSRahul Lakkireddy #endif
943bd122eeSRahul Lakkireddy 	__be16 qid;
953bd122eeSRahul Lakkireddy 	__be32 hash_val;
963bd122eeSRahul Lakkireddy };
973bd122eeSRahul Lakkireddy 
983bd122eeSRahul Lakkireddy #if defined(RSS_HDR_VLD) || defined(CHELSIO_FW)
993bd122eeSRahul Lakkireddy #define RSS_HDR struct rss_header rss_hdr
1003bd122eeSRahul Lakkireddy #else
1013bd122eeSRahul Lakkireddy #define RSS_HDR
1023bd122eeSRahul Lakkireddy #endif
1033bd122eeSRahul Lakkireddy 
1043bd122eeSRahul Lakkireddy #ifndef CHELSIO_FW
1053bd122eeSRahul Lakkireddy struct work_request_hdr {
1063bd122eeSRahul Lakkireddy 	__be32 wr_hi;
1073bd122eeSRahul Lakkireddy 	__be32 wr_mid;
1083bd122eeSRahul Lakkireddy 	__be64 wr_lo;
1093bd122eeSRahul Lakkireddy };
1103bd122eeSRahul Lakkireddy 
1113bd122eeSRahul Lakkireddy #define WR_HDR struct work_request_hdr wr
1123bd122eeSRahul Lakkireddy #define WR_HDR_SIZE sizeof(struct work_request_hdr)
1133bd122eeSRahul Lakkireddy #else
1143bd122eeSRahul Lakkireddy #define WR_HDR
1153bd122eeSRahul Lakkireddy #define WR_HDR_SIZE 0
1163bd122eeSRahul Lakkireddy #endif
1173bd122eeSRahul Lakkireddy 
1189eb2c9a4SShagun Agrawal #define S_COOKIE    5
1199eb2c9a4SShagun Agrawal #define M_COOKIE    0x7
1209eb2c9a4SShagun Agrawal #define V_COOKIE(x) ((x) << S_COOKIE)
1219eb2c9a4SShagun Agrawal #define G_COOKIE(x) (((x) >> S_COOKIE) & M_COOKIE)
1229eb2c9a4SShagun Agrawal 
123af44a577SShagun Agrawal /* option 0 fields */
124281c6e7bSShagun Agrawal #define S_TX_CHAN    2
125281c6e7bSShagun Agrawal #define V_TX_CHAN(x) ((x) << S_TX_CHAN)
126281c6e7bSShagun Agrawal 
127af44a577SShagun Agrawal #define S_DELACK    5
128af44a577SShagun Agrawal #define V_DELACK(x) ((x) << S_DELACK)
129af44a577SShagun Agrawal 
130af44a577SShagun Agrawal #define S_NON_OFFLOAD    7
131af44a577SShagun Agrawal #define V_NON_OFFLOAD(x) ((x) << S_NON_OFFLOAD)
132af44a577SShagun Agrawal #define F_NON_OFFLOAD    V_NON_OFFLOAD(1U)
133af44a577SShagun Agrawal 
134af44a577SShagun Agrawal #define S_ULP_MODE    8
135af44a577SShagun Agrawal #define V_ULP_MODE(x) ((x) << S_ULP_MODE)
136af44a577SShagun Agrawal 
137af44a577SShagun Agrawal #define S_SMAC_SEL    28
138af44a577SShagun Agrawal #define V_SMAC_SEL(x) ((__u64)(x) << S_SMAC_SEL)
139af44a577SShagun Agrawal 
140af44a577SShagun Agrawal #define S_TCAM_BYPASS    48
141af44a577SShagun Agrawal #define V_TCAM_BYPASS(x) ((__u64)(x) << S_TCAM_BYPASS)
142af44a577SShagun Agrawal #define F_TCAM_BYPASS    V_TCAM_BYPASS(1ULL)
143af44a577SShagun Agrawal 
1441decc62bSShagun Agrawal #define S_L2T_IDX    36
1451decc62bSShagun Agrawal #define V_L2T_IDX(x) ((__u64)(x) << S_L2T_IDX)
1461decc62bSShagun Agrawal 
1471decc62bSShagun Agrawal #define S_NAGLE    49
1481decc62bSShagun Agrawal #define V_NAGLE(x) ((__u64)(x) << S_NAGLE)
1491decc62bSShagun Agrawal 
150af44a577SShagun Agrawal /* option 2 fields */
151af44a577SShagun Agrawal #define S_RSS_QUEUE    0
152af44a577SShagun Agrawal #define V_RSS_QUEUE(x) ((x) << S_RSS_QUEUE)
153af44a577SShagun Agrawal 
154af44a577SShagun Agrawal #define S_RSS_QUEUE_VALID    10
155af44a577SShagun Agrawal #define V_RSS_QUEUE_VALID(x) ((x) << S_RSS_QUEUE_VALID)
156af44a577SShagun Agrawal #define F_RSS_QUEUE_VALID    V_RSS_QUEUE_VALID(1U)
157af44a577SShagun Agrawal 
158af44a577SShagun Agrawal #define S_CONG_CNTRL    14
159af44a577SShagun Agrawal #define V_CONG_CNTRL(x) ((x) << S_CONG_CNTRL)
160af44a577SShagun Agrawal 
161af44a577SShagun Agrawal #define S_RX_CHANNEL    26
162af44a577SShagun Agrawal #define V_RX_CHANNEL(x) ((x) << S_RX_CHANNEL)
163af44a577SShagun Agrawal #define F_RX_CHANNEL    V_RX_CHANNEL(1U)
164af44a577SShagun Agrawal 
165281c6e7bSShagun Agrawal #define S_CCTRL_ECN    27
166281c6e7bSShagun Agrawal #define V_CCTRL_ECN(x) ((x) << S_CCTRL_ECN)
167281c6e7bSShagun Agrawal 
168f683a520SRahul Lakkireddy #define S_SACK_EN    30
169f683a520SRahul Lakkireddy #define V_SACK_EN(x) ((x) << S_SACK_EN)
170f683a520SRahul Lakkireddy 
171af44a577SShagun Agrawal #define S_T5_OPT_2_VALID    31
172af44a577SShagun Agrawal #define V_T5_OPT_2_VALID(x) ((x) << S_T5_OPT_2_VALID)
173af44a577SShagun Agrawal #define F_T5_OPT_2_VALID    V_T5_OPT_2_VALID(1U)
174af44a577SShagun Agrawal 
175af44a577SShagun Agrawal struct cpl_t6_act_open_req {
176af44a577SShagun Agrawal 	WR_HDR;
177af44a577SShagun Agrawal 	union opcode_tid ot;
178af44a577SShagun Agrawal 	__be16 local_port;
179af44a577SShagun Agrawal 	__be16 peer_port;
180af44a577SShagun Agrawal 	__be32 local_ip;
181af44a577SShagun Agrawal 	__be32 peer_ip;
182af44a577SShagun Agrawal 	__be64 opt0;
183af44a577SShagun Agrawal 	__be32 rsvd;
184af44a577SShagun Agrawal 	__be32 opt2;
185af44a577SShagun Agrawal 	__be64 params;
186af44a577SShagun Agrawal 	__be32 rsvd2;
187af44a577SShagun Agrawal 	__be32 opt3;
188af44a577SShagun Agrawal };
189af44a577SShagun Agrawal 
190af44a577SShagun Agrawal struct cpl_t6_act_open_req6 {
191af44a577SShagun Agrawal 	WR_HDR;
192af44a577SShagun Agrawal 	union opcode_tid ot;
193af44a577SShagun Agrawal 	__be16 local_port;
194af44a577SShagun Agrawal 	__be16 peer_port;
195af44a577SShagun Agrawal 	__be64 local_ip_hi;
196af44a577SShagun Agrawal 	__be64 local_ip_lo;
197af44a577SShagun Agrawal 	__be64 peer_ip_hi;
198af44a577SShagun Agrawal 	__be64 peer_ip_lo;
199af44a577SShagun Agrawal 	__be64 opt0;
200af44a577SShagun Agrawal 	__be32 rsvd;
201af44a577SShagun Agrawal 	__be32 opt2;
202af44a577SShagun Agrawal 	__be64 params;
203af44a577SShagun Agrawal 	__be32 rsvd2;
204af44a577SShagun Agrawal 	__be32 opt3;
205af44a577SShagun Agrawal };
206af44a577SShagun Agrawal 
207af44a577SShagun Agrawal #define S_FILTER_TUPLE	24
208af44a577SShagun Agrawal #define V_FILTER_TUPLE(x) ((x) << S_FILTER_TUPLE)
209af44a577SShagun Agrawal 
210af44a577SShagun Agrawal struct cpl_act_open_rpl {
211af44a577SShagun Agrawal 	RSS_HDR
212af44a577SShagun Agrawal 	union opcode_tid ot;
213af44a577SShagun Agrawal 	__be32 atid_status;
214af44a577SShagun Agrawal };
215af44a577SShagun Agrawal 
216af44a577SShagun Agrawal /* cpl_act_open_rpl.atid_status fields */
217af44a577SShagun Agrawal #define S_AOPEN_STATUS    0
218af44a577SShagun Agrawal #define M_AOPEN_STATUS    0xFF
219af44a577SShagun Agrawal #define G_AOPEN_STATUS(x) (((x) >> S_AOPEN_STATUS) & M_AOPEN_STATUS)
220af44a577SShagun Agrawal 
221af44a577SShagun Agrawal #define S_AOPEN_ATID    8
222af44a577SShagun Agrawal #define M_AOPEN_ATID    0xFFFFFF
223af44a577SShagun Agrawal #define G_AOPEN_ATID(x) (((x) >> S_AOPEN_ATID) & M_AOPEN_ATID)
224af44a577SShagun Agrawal 
22541dc98b0SShagun Agrawal struct cpl_set_tcb_field {
22641dc98b0SShagun Agrawal 	WR_HDR;
22741dc98b0SShagun Agrawal 	union opcode_tid ot;
22841dc98b0SShagun Agrawal 	__be16 reply_ctrl;
22941dc98b0SShagun Agrawal 	__be16 word_cookie;
23041dc98b0SShagun Agrawal 	__be64 mask;
23141dc98b0SShagun Agrawal 	__be64 val;
23241dc98b0SShagun Agrawal };
23341dc98b0SShagun Agrawal 
23441dc98b0SShagun Agrawal /* cpl_set_tcb_field.word_cookie fields */
23541dc98b0SShagun Agrawal #define S_WORD    0
23641dc98b0SShagun Agrawal #define V_WORD(x) ((x) << S_WORD)
23741dc98b0SShagun Agrawal 
23841dc98b0SShagun Agrawal /* cpl_get_tcb.reply_ctrl fields */
23941dc98b0SShagun Agrawal #define S_QUEUENO    0
24041dc98b0SShagun Agrawal #define V_QUEUENO(x) ((x) << S_QUEUENO)
24141dc98b0SShagun Agrawal 
24241dc98b0SShagun Agrawal #define S_REPLY_CHAN    14
24341dc98b0SShagun Agrawal #define V_REPLY_CHAN(x) ((x) << S_REPLY_CHAN)
24441dc98b0SShagun Agrawal 
24541dc98b0SShagun Agrawal #define S_NO_REPLY    15
24641dc98b0SShagun Agrawal #define V_NO_REPLY(x) ((x) << S_NO_REPLY)
24741dc98b0SShagun Agrawal 
2489eb2c9a4SShagun Agrawal struct cpl_set_tcb_rpl {
2499eb2c9a4SShagun Agrawal 	RSS_HDR
2509eb2c9a4SShagun Agrawal 	union opcode_tid ot;
2519eb2c9a4SShagun Agrawal 	__be16 rsvd;
2529eb2c9a4SShagun Agrawal 	__u8   cookie;
2539eb2c9a4SShagun Agrawal 	__u8   status;
2549eb2c9a4SShagun Agrawal 	__be64 oldval;
2559eb2c9a4SShagun Agrawal };
2569eb2c9a4SShagun Agrawal 
25741dc98b0SShagun Agrawal /* cpl_abort_req status command code
25841dc98b0SShagun Agrawal  */
25941dc98b0SShagun Agrawal struct cpl_abort_req {
26041dc98b0SShagun Agrawal 	WR_HDR;
26141dc98b0SShagun Agrawal 	union opcode_tid ot;
26241dc98b0SShagun Agrawal 	__be32 rsvd0;
26341dc98b0SShagun Agrawal 	__u8  rsvd1;
26441dc98b0SShagun Agrawal 	__u8  cmd;
26541dc98b0SShagun Agrawal 	__u8  rsvd2[6];
26641dc98b0SShagun Agrawal };
26741dc98b0SShagun Agrawal 
26841dc98b0SShagun Agrawal struct cpl_abort_rpl_rss {
26941dc98b0SShagun Agrawal 	RSS_HDR
27041dc98b0SShagun Agrawal 	union opcode_tid ot;
27141dc98b0SShagun Agrawal 	__u8  rsvd[3];
27241dc98b0SShagun Agrawal 	__u8  status;
27341dc98b0SShagun Agrawal };
27441dc98b0SShagun Agrawal 
27541dc98b0SShagun Agrawal struct cpl_abort_rpl {
27641dc98b0SShagun Agrawal 	WR_HDR;
27741dc98b0SShagun Agrawal 	union opcode_tid ot;
27841dc98b0SShagun Agrawal 	__be32 rsvd0;
27941dc98b0SShagun Agrawal 	__u8  rsvd1;
28041dc98b0SShagun Agrawal 	__u8  cmd;
28141dc98b0SShagun Agrawal 	__u8  rsvd2[6];
28241dc98b0SShagun Agrawal };
28341dc98b0SShagun Agrawal 
28441dc98b0SShagun Agrawal struct cpl_tid_release {
28541dc98b0SShagun Agrawal 	WR_HDR;
28641dc98b0SShagun Agrawal 	union opcode_tid ot;
28741dc98b0SShagun Agrawal 	__be32 rsvd;
28841dc98b0SShagun Agrawal };
28941dc98b0SShagun Agrawal 
2903bd122eeSRahul Lakkireddy struct cpl_tx_data {
2913bd122eeSRahul Lakkireddy 	union opcode_tid ot;
2923bd122eeSRahul Lakkireddy 	__be32 len;
2933bd122eeSRahul Lakkireddy 	__be32 rsvd;
2943bd122eeSRahul Lakkireddy 	__be32 flags;
2953bd122eeSRahul Lakkireddy };
2963bd122eeSRahul Lakkireddy 
2973bd122eeSRahul Lakkireddy struct cpl_tx_pkt_core {
2983bd122eeSRahul Lakkireddy 	__be32 ctrl0;
2993bd122eeSRahul Lakkireddy 	__be16 pack;
3003bd122eeSRahul Lakkireddy 	__be16 len;
3013bd122eeSRahul Lakkireddy 	__be64 ctrl1;
3023bd122eeSRahul Lakkireddy };
3033bd122eeSRahul Lakkireddy 
3043bd122eeSRahul Lakkireddy struct cpl_tx_pkt {
3053bd122eeSRahul Lakkireddy 	WR_HDR;
3063bd122eeSRahul Lakkireddy 	struct cpl_tx_pkt_core c;
3073bd122eeSRahul Lakkireddy };
3083bd122eeSRahul Lakkireddy 
3093bd122eeSRahul Lakkireddy /* cpl_tx_pkt_core.ctrl0 fields */
3103bd122eeSRahul Lakkireddy #define S_TXPKT_PF    8
3113bd122eeSRahul Lakkireddy #define M_TXPKT_PF    0x7
3123bd122eeSRahul Lakkireddy #define V_TXPKT_PF(x) ((x) << S_TXPKT_PF)
3133bd122eeSRahul Lakkireddy #define G_TXPKT_PF(x) (((x) >> S_TXPKT_PF) & M_TXPKT_PF)
3143bd122eeSRahul Lakkireddy 
3153bd122eeSRahul Lakkireddy #define S_TXPKT_INTF    16
3163bd122eeSRahul Lakkireddy #define M_TXPKT_INTF    0xF
3173bd122eeSRahul Lakkireddy #define V_TXPKT_INTF(x) ((x) << S_TXPKT_INTF)
3183bd122eeSRahul Lakkireddy #define G_TXPKT_INTF(x) (((x) >> S_TXPKT_INTF) & M_TXPKT_INTF)
3193bd122eeSRahul Lakkireddy 
3203bd122eeSRahul Lakkireddy #define S_TXPKT_OPCODE    24
3213bd122eeSRahul Lakkireddy #define M_TXPKT_OPCODE    0xFF
3223bd122eeSRahul Lakkireddy #define V_TXPKT_OPCODE(x) ((x) << S_TXPKT_OPCODE)
3233bd122eeSRahul Lakkireddy #define G_TXPKT_OPCODE(x) (((x) >> S_TXPKT_OPCODE) & M_TXPKT_OPCODE)
3243bd122eeSRahul Lakkireddy 
3253bd122eeSRahul Lakkireddy /* cpl_tx_pkt_core.ctrl1 fields */
3263bd122eeSRahul Lakkireddy #define S_TXPKT_IPHDR_LEN    20
3273bd122eeSRahul Lakkireddy #define M_TXPKT_IPHDR_LEN    0x3FFF
3283bd122eeSRahul Lakkireddy #define V_TXPKT_IPHDR_LEN(x) ((__u64)(x) << S_TXPKT_IPHDR_LEN)
3293bd122eeSRahul Lakkireddy #define G_TXPKT_IPHDR_LEN(x) (((x) >> S_TXPKT_IPHDR_LEN) & M_TXPKT_IPHDR_LEN)
3303bd122eeSRahul Lakkireddy 
3313bd122eeSRahul Lakkireddy #define S_TXPKT_ETHHDR_LEN    34
3323bd122eeSRahul Lakkireddy #define M_TXPKT_ETHHDR_LEN    0x3F
3333bd122eeSRahul Lakkireddy #define V_TXPKT_ETHHDR_LEN(x) ((__u64)(x) << S_TXPKT_ETHHDR_LEN)
3343bd122eeSRahul Lakkireddy #define G_TXPKT_ETHHDR_LEN(x) (((x) >> S_TXPKT_ETHHDR_LEN) & M_TXPKT_ETHHDR_LEN)
3353bd122eeSRahul Lakkireddy 
3363bd122eeSRahul Lakkireddy #define S_T6_TXPKT_ETHHDR_LEN    32
3373bd122eeSRahul Lakkireddy #define M_T6_TXPKT_ETHHDR_LEN    0xFF
3383bd122eeSRahul Lakkireddy #define V_T6_TXPKT_ETHHDR_LEN(x) ((__u64)(x) << S_T6_TXPKT_ETHHDR_LEN)
3393bd122eeSRahul Lakkireddy #define G_T6_TXPKT_ETHHDR_LEN(x) \
3403bd122eeSRahul Lakkireddy 	(((x) >> S_T6_TXPKT_ETHHDR_LEN) & M_T6_TXPKT_ETHHDR_LEN)
3413bd122eeSRahul Lakkireddy 
3423bd122eeSRahul Lakkireddy #define S_TXPKT_CSUM_TYPE    40
3433bd122eeSRahul Lakkireddy #define M_TXPKT_CSUM_TYPE    0xF
3443bd122eeSRahul Lakkireddy #define V_TXPKT_CSUM_TYPE(x) ((__u64)(x) << S_TXPKT_CSUM_TYPE)
3453bd122eeSRahul Lakkireddy #define G_TXPKT_CSUM_TYPE(x) (((x) >> S_TXPKT_CSUM_TYPE) & M_TXPKT_CSUM_TYPE)
3463bd122eeSRahul Lakkireddy 
3473bd122eeSRahul Lakkireddy #define S_TXPKT_VLAN    44
3483bd122eeSRahul Lakkireddy #define M_TXPKT_VLAN    0xFFFF
3493bd122eeSRahul Lakkireddy #define V_TXPKT_VLAN(x) ((__u64)(x) << S_TXPKT_VLAN)
3503bd122eeSRahul Lakkireddy #define G_TXPKT_VLAN(x) (((x) >> S_TXPKT_VLAN) & M_TXPKT_VLAN)
3513bd122eeSRahul Lakkireddy 
3523bd122eeSRahul Lakkireddy #define S_TXPKT_VLAN_VLD    60
3533bd122eeSRahul Lakkireddy #define V_TXPKT_VLAN_VLD(x) ((__u64)(x) << S_TXPKT_VLAN_VLD)
3543bd122eeSRahul Lakkireddy #define F_TXPKT_VLAN_VLD    V_TXPKT_VLAN_VLD(1ULL)
3553bd122eeSRahul Lakkireddy 
3563bd122eeSRahul Lakkireddy #define S_TXPKT_IPCSUM_DIS    62
3573bd122eeSRahul Lakkireddy #define V_TXPKT_IPCSUM_DIS(x) ((__u64)(x) << S_TXPKT_IPCSUM_DIS)
3583bd122eeSRahul Lakkireddy #define F_TXPKT_IPCSUM_DIS    V_TXPKT_IPCSUM_DIS(1ULL)
3593bd122eeSRahul Lakkireddy 
3603bd122eeSRahul Lakkireddy #define S_TXPKT_L4CSUM_DIS    63
3613bd122eeSRahul Lakkireddy #define V_TXPKT_L4CSUM_DIS(x) ((__u64)(x) << S_TXPKT_L4CSUM_DIS)
3623bd122eeSRahul Lakkireddy #define F_TXPKT_L4CSUM_DIS    V_TXPKT_L4CSUM_DIS(1ULL)
3633bd122eeSRahul Lakkireddy 
3643bd122eeSRahul Lakkireddy struct cpl_tx_pkt_lso_core {
3653bd122eeSRahul Lakkireddy 	__be32 lso_ctrl;
3663bd122eeSRahul Lakkireddy 	__be16 ipid_ofst;
3673bd122eeSRahul Lakkireddy 	__be16 mss;
3683bd122eeSRahul Lakkireddy 	__be32 seqno_offset;
3693bd122eeSRahul Lakkireddy 	__be32 len;
3703bd122eeSRahul Lakkireddy 	/* encapsulated CPL (TX_PKT, TX_PKT_XT or TX_DATA) follows here */
3713bd122eeSRahul Lakkireddy };
3723bd122eeSRahul Lakkireddy 
3733bd122eeSRahul Lakkireddy struct cpl_tx_pkt_lso {
3743bd122eeSRahul Lakkireddy 	WR_HDR;
3753bd122eeSRahul Lakkireddy 	struct cpl_tx_pkt_lso_core c;
3763bd122eeSRahul Lakkireddy 	/* encapsulated CPL (TX_PKT, TX_PKT_XT or TX_DATA) follows here */
3773bd122eeSRahul Lakkireddy };
3783bd122eeSRahul Lakkireddy 
3793bd122eeSRahul Lakkireddy /* cpl_tx_pkt_lso_core.lso_ctrl fields */
3803bd122eeSRahul Lakkireddy #define S_LSO_TCPHDR_LEN    0
3813bd122eeSRahul Lakkireddy #define M_LSO_TCPHDR_LEN    0xF
3823bd122eeSRahul Lakkireddy #define V_LSO_TCPHDR_LEN(x) ((x) << S_LSO_TCPHDR_LEN)
3833bd122eeSRahul Lakkireddy #define G_LSO_TCPHDR_LEN(x) (((x) >> S_LSO_TCPHDR_LEN) & M_LSO_TCPHDR_LEN)
3843bd122eeSRahul Lakkireddy 
3853bd122eeSRahul Lakkireddy #define S_LSO_IPHDR_LEN    4
3863bd122eeSRahul Lakkireddy #define M_LSO_IPHDR_LEN    0xFFF
3873bd122eeSRahul Lakkireddy #define V_LSO_IPHDR_LEN(x) ((x) << S_LSO_IPHDR_LEN)
3883bd122eeSRahul Lakkireddy #define G_LSO_IPHDR_LEN(x) (((x) >> S_LSO_IPHDR_LEN) & M_LSO_IPHDR_LEN)
3893bd122eeSRahul Lakkireddy 
3903bd122eeSRahul Lakkireddy #define S_LSO_ETHHDR_LEN    16
3913bd122eeSRahul Lakkireddy #define M_LSO_ETHHDR_LEN    0xF
3923bd122eeSRahul Lakkireddy #define V_LSO_ETHHDR_LEN(x) ((x) << S_LSO_ETHHDR_LEN)
3933bd122eeSRahul Lakkireddy #define G_LSO_ETHHDR_LEN(x) (((x) >> S_LSO_ETHHDR_LEN) & M_LSO_ETHHDR_LEN)
3943bd122eeSRahul Lakkireddy 
3953bd122eeSRahul Lakkireddy #define S_LSO_IPV6    20
3963bd122eeSRahul Lakkireddy #define V_LSO_IPV6(x) ((x) << S_LSO_IPV6)
3973bd122eeSRahul Lakkireddy #define F_LSO_IPV6    V_LSO_IPV6(1U)
3983bd122eeSRahul Lakkireddy 
3993bd122eeSRahul Lakkireddy #define S_LSO_LAST_SLICE    22
4003bd122eeSRahul Lakkireddy #define V_LSO_LAST_SLICE(x) ((x) << S_LSO_LAST_SLICE)
4013bd122eeSRahul Lakkireddy #define F_LSO_LAST_SLICE    V_LSO_LAST_SLICE(1U)
4023bd122eeSRahul Lakkireddy 
4033bd122eeSRahul Lakkireddy #define S_LSO_FIRST_SLICE    23
4043bd122eeSRahul Lakkireddy #define V_LSO_FIRST_SLICE(x) ((x) << S_LSO_FIRST_SLICE)
4053bd122eeSRahul Lakkireddy #define F_LSO_FIRST_SLICE    V_LSO_FIRST_SLICE(1U)
4063bd122eeSRahul Lakkireddy 
4073bd122eeSRahul Lakkireddy #define S_LSO_OPCODE    24
4083bd122eeSRahul Lakkireddy #define M_LSO_OPCODE    0xFF
4093bd122eeSRahul Lakkireddy #define V_LSO_OPCODE(x) ((x) << S_LSO_OPCODE)
4103bd122eeSRahul Lakkireddy #define G_LSO_OPCODE(x) (((x) >> S_LSO_OPCODE) & M_LSO_OPCODE)
4113bd122eeSRahul Lakkireddy 
4123bd122eeSRahul Lakkireddy #define S_LSO_T5_XFER_SIZE	   0
4133bd122eeSRahul Lakkireddy #define M_LSO_T5_XFER_SIZE    0xFFFFFFF
4143bd122eeSRahul Lakkireddy #define V_LSO_T5_XFER_SIZE(x) ((x) << S_LSO_T5_XFER_SIZE)
4153bd122eeSRahul Lakkireddy #define G_LSO_T5_XFER_SIZE(x) (((x) >> S_LSO_T5_XFER_SIZE) & M_LSO_T5_XFER_SIZE)
4163bd122eeSRahul Lakkireddy 
4173bd122eeSRahul Lakkireddy struct cpl_rx_pkt {
4183bd122eeSRahul Lakkireddy 	RSS_HDR;
4193bd122eeSRahul Lakkireddy 	__u8 opcode;
4203bd122eeSRahul Lakkireddy #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
4213bd122eeSRahul Lakkireddy 	__u8 iff:4;
4223bd122eeSRahul Lakkireddy 	__u8 csum_calc:1;
4233bd122eeSRahul Lakkireddy 	__u8 ipmi_pkt:1;
4243bd122eeSRahul Lakkireddy 	__u8 vlan_ex:1;
4253bd122eeSRahul Lakkireddy 	__u8 ip_frag:1;
4263bd122eeSRahul Lakkireddy #else
4273bd122eeSRahul Lakkireddy 	__u8 ip_frag:1;
4283bd122eeSRahul Lakkireddy 	__u8 vlan_ex:1;
4293bd122eeSRahul Lakkireddy 	__u8 ipmi_pkt:1;
4303bd122eeSRahul Lakkireddy 	__u8 csum_calc:1;
4313bd122eeSRahul Lakkireddy 	__u8 iff:4;
4323bd122eeSRahul Lakkireddy #endif
4333bd122eeSRahul Lakkireddy 	__be16 csum;
4343bd122eeSRahul Lakkireddy 	__be16 vlan;
4353bd122eeSRahul Lakkireddy 	__be16 len;
4363bd122eeSRahul Lakkireddy 	__be32 l2info;
4373bd122eeSRahul Lakkireddy 	__be16 hdr_len;
4383bd122eeSRahul Lakkireddy 	__be16 err_vec;
4393bd122eeSRahul Lakkireddy };
4403bd122eeSRahul Lakkireddy 
44123af667fSShagun Agrawal struct cpl_l2t_write_req {
44223af667fSShagun Agrawal 	WR_HDR;
44323af667fSShagun Agrawal 	union opcode_tid ot;
44423af667fSShagun Agrawal 	__be16 params;
44523af667fSShagun Agrawal 	__be16 l2t_idx;
44623af667fSShagun Agrawal 	__be16 vlan;
44723af667fSShagun Agrawal 	__u8   dst_mac[6];
44823af667fSShagun Agrawal };
44923af667fSShagun Agrawal 
45023af667fSShagun Agrawal /* cpl_l2t_write_req.params fields */
45123af667fSShagun Agrawal #define S_L2T_W_PORT    8
45223af667fSShagun Agrawal #define V_L2T_W_PORT(x) ((x) << S_L2T_W_PORT)
45323af667fSShagun Agrawal 
45423af667fSShagun Agrawal #define S_L2T_W_LPBK    10
45523af667fSShagun Agrawal #define V_L2T_W_LPBK(x) ((x) << S_L2T_W_LPBK)
45623af667fSShagun Agrawal 
45723af667fSShagun Agrawal #define S_L2T_W_ARPMISS         11
45823af667fSShagun Agrawal #define V_L2T_W_ARPMISS(x)      ((x) << S_L2T_W_ARPMISS)
45923af667fSShagun Agrawal 
46023af667fSShagun Agrawal #define S_L2T_W_NOREPLY    15
46123af667fSShagun Agrawal #define V_L2T_W_NOREPLY(x) ((x) << S_L2T_W_NOREPLY)
46223af667fSShagun Agrawal 
46323af667fSShagun Agrawal struct cpl_l2t_write_rpl {
46423af667fSShagun Agrawal 	RSS_HDR
46523af667fSShagun Agrawal 	union opcode_tid ot;
46623af667fSShagun Agrawal 	__u8 status;
46723af667fSShagun Agrawal 	__u8 rsvd[3];
46823af667fSShagun Agrawal };
46923af667fSShagun Agrawal 
470*993541b2SKarra Satwik struct cpl_smt_write_req {
471*993541b2SKarra Satwik 	WR_HDR;
472*993541b2SKarra Satwik 	union opcode_tid ot;
473*993541b2SKarra Satwik 	__be32 params;
474*993541b2SKarra Satwik 	__be16 pfvf1;
475*993541b2SKarra Satwik 	__u8   src_mac1[6];
476*993541b2SKarra Satwik 	__be16 pfvf0;
477*993541b2SKarra Satwik 	__u8   src_mac0[6];
478*993541b2SKarra Satwik };
479*993541b2SKarra Satwik 
480*993541b2SKarra Satwik struct cpl_t6_smt_write_req {
481*993541b2SKarra Satwik 	WR_HDR;
482*993541b2SKarra Satwik 	union opcode_tid ot;
483*993541b2SKarra Satwik 	__be32 params;
484*993541b2SKarra Satwik 	__be64 tag;
485*993541b2SKarra Satwik 	__be16 pfvf0;
486*993541b2SKarra Satwik 	__u8   src_mac0[6];
487*993541b2SKarra Satwik 	__be32 local_ip;
488*993541b2SKarra Satwik 	__be32 rsvd;
489*993541b2SKarra Satwik };
490*993541b2SKarra Satwik 
491*993541b2SKarra Satwik struct cpl_smt_write_rpl {
492*993541b2SKarra Satwik 	RSS_HDR
493*993541b2SKarra Satwik 	union opcode_tid ot;
494*993541b2SKarra Satwik 	u8 status;
495*993541b2SKarra Satwik 	u8 rsvd[3];
496*993541b2SKarra Satwik };
497*993541b2SKarra Satwik 
498*993541b2SKarra Satwik /* cpl_smt_{read,write}_req.params fields */
499*993541b2SKarra Satwik #define S_SMTW_OVLAN_IDX    16
500*993541b2SKarra Satwik #define V_SMTW_OVLAN_IDX(x) ((x) << S_SMTW_OVLAN_IDX)
501*993541b2SKarra Satwik 
502*993541b2SKarra Satwik #define S_SMTW_IDX    20
503*993541b2SKarra Satwik #define V_SMTW_IDX(x) ((x) << S_SMTW_IDX)
504*993541b2SKarra Satwik 
505*993541b2SKarra Satwik #define S_SMTW_NORPL    31
506*993541b2SKarra Satwik #define V_SMTW_NORPL(x) ((x) << S_SMTW_NORPL)
507*993541b2SKarra Satwik 
5083bd122eeSRahul Lakkireddy /* rx_pkt.l2info fields */
5093bd122eeSRahul Lakkireddy #define S_RXF_UDP    22
5103bd122eeSRahul Lakkireddy #define V_RXF_UDP(x) ((x) << S_RXF_UDP)
5113bd122eeSRahul Lakkireddy #define F_RXF_UDP    V_RXF_UDP(1U)
5123bd122eeSRahul Lakkireddy 
5133bd122eeSRahul Lakkireddy #define S_RXF_TCP    23
5143bd122eeSRahul Lakkireddy #define V_RXF_TCP(x) ((x) << S_RXF_TCP)
5153bd122eeSRahul Lakkireddy #define F_RXF_TCP    V_RXF_TCP(1U)
5163bd122eeSRahul Lakkireddy 
5173bd122eeSRahul Lakkireddy #define S_RXF_IP    24
5183bd122eeSRahul Lakkireddy #define V_RXF_IP(x) ((x) << S_RXF_IP)
5193bd122eeSRahul Lakkireddy #define F_RXF_IP    V_RXF_IP(1U)
5203bd122eeSRahul Lakkireddy 
5213bd122eeSRahul Lakkireddy #define S_RXF_IP6    25
5223bd122eeSRahul Lakkireddy #define V_RXF_IP6(x) ((x) << S_RXF_IP6)
5233bd122eeSRahul Lakkireddy #define F_RXF_IP6    V_RXF_IP6(1U)
5243bd122eeSRahul Lakkireddy 
525cd9ce8c3SRahul Lakkireddy /* rx_pkt.err_vec fields */
526cd9ce8c3SRahul Lakkireddy /* In T6, rx_pkt.err_vec indicates
527cd9ce8c3SRahul Lakkireddy  * RxError Error vector (16b) or
528cd9ce8c3SRahul Lakkireddy  * Encapsulating header length (8b),
529cd9ce8c3SRahul Lakkireddy  * Outer encapsulation type (2b) and
530cd9ce8c3SRahul Lakkireddy  * compressed error vector (6b) if CRxPktEnc is
531cd9ce8c3SRahul Lakkireddy  * enabled in TP_OUT_CONFIG
532cd9ce8c3SRahul Lakkireddy  */
533cd9ce8c3SRahul Lakkireddy #define S_T6_COMPR_RXERR_VEC    0
534cd9ce8c3SRahul Lakkireddy #define M_T6_COMPR_RXERR_VEC    0x3F
535cd9ce8c3SRahul Lakkireddy #define V_T6_COMPR_RXERR_VEC(x) ((x) << S_T6_COMPR_RXERR_VEC)
536cd9ce8c3SRahul Lakkireddy #define G_T6_COMPR_RXERR_VEC(x) \
537cd9ce8c3SRahul Lakkireddy 	(((x) >> S_T6_COMPR_RXERR_VEC) & M_T6_COMPR_RXERR_VEC)
538cd9ce8c3SRahul Lakkireddy 
5393bd122eeSRahul Lakkireddy /* cpl_fw*.type values */
5403bd122eeSRahul Lakkireddy enum {
5413bd122eeSRahul Lakkireddy 	FW_TYPE_RSSCPL = 4,
5423bd122eeSRahul Lakkireddy };
5433bd122eeSRahul Lakkireddy 
5443bd122eeSRahul Lakkireddy struct cpl_fw4_msg {
5453bd122eeSRahul Lakkireddy 	RSS_HDR;
5463bd122eeSRahul Lakkireddy 	u8 opcode;
5473bd122eeSRahul Lakkireddy 	u8 type;
5483bd122eeSRahul Lakkireddy 	__be16 rsvd0;
5493bd122eeSRahul Lakkireddy 	__be32 rsvd1;
5503bd122eeSRahul Lakkireddy 	__be64 data[2];
5513bd122eeSRahul Lakkireddy };
5523bd122eeSRahul Lakkireddy 
5533bd122eeSRahul Lakkireddy struct cpl_fw6_msg {
5543bd122eeSRahul Lakkireddy 	RSS_HDR;
5553bd122eeSRahul Lakkireddy 	u8 opcode;
5563bd122eeSRahul Lakkireddy 	u8 type;
5573bd122eeSRahul Lakkireddy 	__be16 rsvd0;
5583bd122eeSRahul Lakkireddy 	__be32 rsvd1;
5593bd122eeSRahul Lakkireddy 	__be64 data[4];
5603bd122eeSRahul Lakkireddy };
5613bd122eeSRahul Lakkireddy 
56241dc98b0SShagun Agrawal /* ULP_TX opcodes */
5633bd122eeSRahul Lakkireddy enum {
56441dc98b0SShagun Agrawal 	ULP_TX_PKT = 4
56541dc98b0SShagun Agrawal };
56641dc98b0SShagun Agrawal 
56741dc98b0SShagun Agrawal enum {
56841dc98b0SShagun Agrawal 	ULP_TX_SC_NOOP = 0x80,
5693bd122eeSRahul Lakkireddy 	ULP_TX_SC_IMM  = 0x81,
5703bd122eeSRahul Lakkireddy 	ULP_TX_SC_DSGL = 0x82,
5713bd122eeSRahul Lakkireddy 	ULP_TX_SC_ISGL = 0x83
5723bd122eeSRahul Lakkireddy };
5733bd122eeSRahul Lakkireddy 
5743bd122eeSRahul Lakkireddy #define S_ULPTX_CMD    24
5753bd122eeSRahul Lakkireddy #define M_ULPTX_CMD    0xFF
5763bd122eeSRahul Lakkireddy #define V_ULPTX_CMD(x) ((x) << S_ULPTX_CMD)
5773bd122eeSRahul Lakkireddy 
5783bd122eeSRahul Lakkireddy #define S_ULP_TX_SC_MORE 23
5793bd122eeSRahul Lakkireddy #define V_ULP_TX_SC_MORE(x) ((x) << S_ULP_TX_SC_MORE)
5803bd122eeSRahul Lakkireddy #define F_ULP_TX_SC_MORE  V_ULP_TX_SC_MORE(1U)
5813bd122eeSRahul Lakkireddy 
5823bd122eeSRahul Lakkireddy struct ulptx_sge_pair {
5833bd122eeSRahul Lakkireddy 	__be32 len[2];
5843bd122eeSRahul Lakkireddy 	__be64 addr[2];
5853bd122eeSRahul Lakkireddy };
5863bd122eeSRahul Lakkireddy 
5873bd122eeSRahul Lakkireddy struct ulptx_sgl {
5883bd122eeSRahul Lakkireddy 	__be32 cmd_nsge;
5893bd122eeSRahul Lakkireddy 	__be32 len0;
5903bd122eeSRahul Lakkireddy 	__be64 addr0;
5913bd122eeSRahul Lakkireddy 
5923bd122eeSRahul Lakkireddy #if !(defined C99_NOT_SUPPORTED)
5933bd122eeSRahul Lakkireddy 	struct ulptx_sge_pair sge[0];
5943bd122eeSRahul Lakkireddy #endif
5953bd122eeSRahul Lakkireddy 
5963bd122eeSRahul Lakkireddy };
5973bd122eeSRahul Lakkireddy 
5983bd122eeSRahul Lakkireddy struct ulptx_idata {
5993bd122eeSRahul Lakkireddy 	__be32 cmd_more;
6003bd122eeSRahul Lakkireddy 	__be32 len;
6013bd122eeSRahul Lakkireddy };
6023bd122eeSRahul Lakkireddy 
6033bd122eeSRahul Lakkireddy #define S_ULPTX_NSGE    0
6043bd122eeSRahul Lakkireddy #define M_ULPTX_NSGE    0xFFFF
6053bd122eeSRahul Lakkireddy #define V_ULPTX_NSGE(x) ((x) << S_ULPTX_NSGE)
6063bd122eeSRahul Lakkireddy 
6073bd122eeSRahul Lakkireddy struct ulp_txpkt {
6083bd122eeSRahul Lakkireddy 	__be32 cmd_dest;
6093bd122eeSRahul Lakkireddy 	__be32 len;
6103bd122eeSRahul Lakkireddy };
6113bd122eeSRahul Lakkireddy 
6123bd122eeSRahul Lakkireddy /* ulp_txpkt.cmd_dest fields */
6133bd122eeSRahul Lakkireddy #define S_ULP_TXPKT_DEST    16
6143bd122eeSRahul Lakkireddy #define M_ULP_TXPKT_DEST    0x3
6153bd122eeSRahul Lakkireddy #define V_ULP_TXPKT_DEST(x) ((x) << S_ULP_TXPKT_DEST)
6163bd122eeSRahul Lakkireddy 
6173bd122eeSRahul Lakkireddy #define S_ULP_TXPKT_FID	    4
6183bd122eeSRahul Lakkireddy #define M_ULP_TXPKT_FID     0x7ff
6193bd122eeSRahul Lakkireddy #define V_ULP_TXPKT_FID(x)  ((x) << S_ULP_TXPKT_FID)
6203bd122eeSRahul Lakkireddy 
6213bd122eeSRahul Lakkireddy #define S_ULP_TXPKT_RO      3
6223bd122eeSRahul Lakkireddy #define V_ULP_TXPKT_RO(x) ((x) << S_ULP_TXPKT_RO)
6233bd122eeSRahul Lakkireddy #define F_ULP_TXPKT_RO V_ULP_TXPKT_RO(1U)
6243bd122eeSRahul Lakkireddy 
6253bd122eeSRahul Lakkireddy #endif  /* T4_MSG_H */
626