1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Marvell OcteonTx2 RVU Ethernet driver
4 * Copyright (C) 2020 Marvell International Ltd.
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
14 /* NIX WQE/CQE size 128 byte or 512 byte */
25 enum nix_send_ldtype {
26 NIX_SEND_LDTYPE_LDD = 0x0,
27 NIX_SEND_LDTYPE_LDT = 0x1,
28 NIX_SEND_LDTYPE_LDWB = 0x2,
33 NIX_SENDL3TYPE_NONE = 0x0,
34 NIX_SENDL3TYPE_IP4 = 0x2,
35 NIX_SENDL3TYPE_IP4_CKSUM = 0x3,
36 NIX_SENDL3TYPE_IP6 = 0x4,
41 NIX_SENDL4TYPE_TCP_CKSUM,
42 NIX_SENDL4TYPE_SCTP_CKSUM,
43 NIX_SENDL4TYPE_UDP_CKSUM,
46 /* NIX wqe/cqe types */
48 NIX_XQE_TYPE_INVALID = 0x0,
49 NIX_XQE_TYPE_RX = 0x1,
50 NIX_XQE_TYPE_RX_IPSECS = 0x2,
51 NIX_XQE_TYPE_RX_IPSECH = 0x3,
52 NIX_XQE_TYPE_RX_IPSECD = 0x4,
53 NIX_XQE_TYPE_SEND = 0x8,
56 /* NIX CQE/SQE subdescriptor types */
69 /* Algorithm for nix_sqe_mem_s header (value of the `alg` field) */
71 NIX_SENDMEMALG_E_SET = 0x0,
72 NIX_SENDMEMALG_E_SETTSTMP = 0x1,
73 NIX_SENDMEMALG_E_SETRSLT = 0x2,
74 NIX_SENDMEMALG_E_ADD = 0x8,
75 NIX_SENDMEMALG_E_SUB = 0x9,
76 NIX_SENDMEMALG_E_ADDLEN = 0xa,
77 NIX_SENDMEMALG_E_SUBLEN = 0xb,
78 NIX_SENDMEMALG_E_ADDMBUF = 0xc,
79 NIX_SENDMEMALG_E_SUBMBUF = 0xd,
80 NIX_SENDMEMALG_E_ENUM_LAST = 0xe,
83 /* NIX CQE header structure */
84 struct nix_cqe_hdr_s {
87 u64 reserved_52_57 : 6;
92 /* NIX CQE RX parse structure */
93 struct nix_rx_parse_s {
109 u64 pkt_lenm1 : 16; /* W1 */
122 u64 laflags : 8; /* W2 */
130 u64 eoh_ptr : 8; /* W3 */
134 u64 laptr : 8; /* W4 */
142 u64 vtag0_ptr : 8; /* W5 */
144 u64 flow_key_alg : 5;
145 u64 rsvd_359_341 : 19;
147 u64 rsvd_383_362 : 22;
148 u64 rsvd_447_384; /* W6 */
151 /* NIX CQE RX scatter/gather subdescriptor structure */
153 u64 seg_size : 16; /* W0 */
164 struct nix_send_comp_s {
170 struct nix_cqe_rx_s {
171 struct nix_cqe_hdr_s hdr;
172 struct nix_rx_parse_s parse;
173 struct nix_rx_sg_s sg;
176 struct nix_cqe_tx_s {
177 struct nix_cqe_hdr_s hdr;
178 struct nix_send_comp_s comp;
181 /* NIX SQE header structure */
182 struct nix_sqe_hdr_s {
183 u64 total : 18; /* W0 */
190 u64 ol3ptr : 8; /* W1 */
202 /* NIX send extended header subdescriptor structure */
203 struct nix_sqe_ext_s {
204 u64 lso_mps : 14; /* W0 */
217 u64 vlan0_ins_ptr : 8; /* W1 */
218 u64 vlan0_ins_tci : 16;
219 u64 vlan1_ins_ptr : 8;
220 u64 vlan1_ins_tci : 16;
221 u64 vlan0_ins_ena : 1;
222 u64 vlan1_ins_ena : 1;
224 u64 rsvd_127_116 : 12;
227 struct nix_sqe_sg_s {
240 /* NIX send memory subdescriptor structure */
241 struct nix_sqe_mem_s {
242 u64 offset : 16; /* W0 */
252 enum nix_cqerrint_e {
253 NIX_CQERRINT_DOOR_ERR = 0,
254 NIX_CQERRINT_WR_FULL = 1,
255 NIX_CQERRINT_CQE_FAULT = 2,
258 #define NIX_CQERRINT_BITS (BIT_ULL(NIX_CQERRINT_DOOR_ERR) | \
259 BIT_ULL(NIX_CQERRINT_CQE_FAULT))
266 #define NIX_RQINT_BITS (BIT_ULL(NIX_RQINT_DROP) | BIT_ULL(NIX_RQINT_RED))
269 NIX_SQINT_LMT_ERR = 0,
270 NIX_SQINT_MNQ_ERR = 1,
271 NIX_SQINT_SEND_ERR = 2,
272 NIX_SQINT_SQB_ALLOC_FAIL = 3,
275 #define NIX_SQINT_BITS (BIT_ULL(NIX_SQINT_LMT_ERR) | \
276 BIT_ULL(NIX_SQINT_MNQ_ERR) | \
277 BIT_ULL(NIX_SQINT_SEND_ERR) | \
278 BIT_ULL(NIX_SQINT_SQB_ALLOC_FAIL))
280 #endif /* OTX2_STRUCT_H */