0001
0002
0003
0004
0005
0006
0007
0008 #ifndef OTX2_STRUCT_H
0009 #define OTX2_STRUCT_H
0010
0011
0012 enum nix_cqesz_e {
0013 NIX_XQESZ_W64 = 0x0,
0014 NIX_XQESZ_W16 = 0x1,
0015 };
0016
0017 enum nix_sqes_e {
0018 NIX_SQESZ_W16 = 0x0,
0019 NIX_SQESZ_W8 = 0x1,
0020 };
0021
0022 enum nix_send_ldtype {
0023 NIX_SEND_LDTYPE_LDD = 0x0,
0024 NIX_SEND_LDTYPE_LDT = 0x1,
0025 NIX_SEND_LDTYPE_LDWB = 0x2,
0026 };
0027
0028
0029 enum nix_sendl3type {
0030 NIX_SENDL3TYPE_NONE = 0x0,
0031 NIX_SENDL3TYPE_IP4 = 0x2,
0032 NIX_SENDL3TYPE_IP4_CKSUM = 0x3,
0033 NIX_SENDL3TYPE_IP6 = 0x4,
0034 };
0035
0036 enum nix_sendl4type {
0037 NIX_SENDL4TYPE_NONE,
0038 NIX_SENDL4TYPE_TCP_CKSUM,
0039 NIX_SENDL4TYPE_SCTP_CKSUM,
0040 NIX_SENDL4TYPE_UDP_CKSUM,
0041 };
0042
0043
0044 enum nix_xqe_type {
0045 NIX_XQE_TYPE_INVALID = 0x0,
0046 NIX_XQE_TYPE_RX = 0x1,
0047 NIX_XQE_TYPE_RX_IPSECS = 0x2,
0048 NIX_XQE_TYPE_RX_IPSECH = 0x3,
0049 NIX_XQE_TYPE_RX_IPSECD = 0x4,
0050 NIX_XQE_TYPE_SEND = 0x8,
0051 };
0052
0053
0054 enum nix_subdc {
0055 NIX_SUBDC_NOP = 0x0,
0056 NIX_SUBDC_EXT = 0x1,
0057 NIX_SUBDC_CRC = 0x2,
0058 NIX_SUBDC_IMM = 0x3,
0059 NIX_SUBDC_SG = 0x4,
0060 NIX_SUBDC_MEM = 0x5,
0061 NIX_SUBDC_JUMP = 0x6,
0062 NIX_SUBDC_WORK = 0x7,
0063 NIX_SUBDC_SOD = 0xf,
0064 };
0065
0066
0067 enum nix_sendmemalg {
0068 NIX_SENDMEMALG_E_SET = 0x0,
0069 NIX_SENDMEMALG_E_SETTSTMP = 0x1,
0070 NIX_SENDMEMALG_E_SETRSLT = 0x2,
0071 NIX_SENDMEMALG_E_ADD = 0x8,
0072 NIX_SENDMEMALG_E_SUB = 0x9,
0073 NIX_SENDMEMALG_E_ADDLEN = 0xa,
0074 NIX_SENDMEMALG_E_SUBLEN = 0xb,
0075 NIX_SENDMEMALG_E_ADDMBUF = 0xc,
0076 NIX_SENDMEMALG_E_SUBMBUF = 0xd,
0077 NIX_SENDMEMALG_E_ENUM_LAST = 0xe,
0078 };
0079
0080
0081 struct nix_cqe_hdr_s {
0082 u64 flow_tag : 32;
0083 u64 q : 20;
0084 u64 reserved_52_57 : 6;
0085 u64 node : 2;
0086 u64 cqe_type : 4;
0087 };
0088
0089
0090 struct nix_rx_parse_s {
0091 u64 chan : 12;
0092 u64 desc_sizem1 : 5;
0093 u64 rsvd_17 : 1;
0094 u64 express : 1;
0095 u64 wqwd : 1;
0096 u64 errlev : 4;
0097 u64 errcode : 8;
0098 u64 latype : 4;
0099 u64 lbtype : 4;
0100 u64 lctype : 4;
0101 u64 ldtype : 4;
0102 u64 letype : 4;
0103 u64 lftype : 4;
0104 u64 lgtype : 4;
0105 u64 lhtype : 4;
0106 u64 pkt_lenm1 : 16;
0107 u64 l2m : 1;
0108 u64 l2b : 1;
0109 u64 l3m : 1;
0110 u64 l3b : 1;
0111 u64 vtag0_valid : 1;
0112 u64 vtag0_gone : 1;
0113 u64 vtag1_valid : 1;
0114 u64 vtag1_gone : 1;
0115 u64 pkind : 6;
0116 u64 rsvd_95_94 : 2;
0117 u64 vtag0_tci : 16;
0118 u64 vtag1_tci : 16;
0119 u64 laflags : 8;
0120 u64 lbflags : 8;
0121 u64 lcflags : 8;
0122 u64 ldflags : 8;
0123 u64 leflags : 8;
0124 u64 lfflags : 8;
0125 u64 lgflags : 8;
0126 u64 lhflags : 8;
0127 u64 eoh_ptr : 8;
0128 u64 wqe_aura : 20;
0129 u64 pb_aura : 20;
0130 u64 match_id : 16;
0131 u64 laptr : 8;
0132 u64 lbptr : 8;
0133 u64 lcptr : 8;
0134 u64 ldptr : 8;
0135 u64 leptr : 8;
0136 u64 lfptr : 8;
0137 u64 lgptr : 8;
0138 u64 lhptr : 8;
0139 u64 vtag0_ptr : 8;
0140 u64 vtag1_ptr : 8;
0141 u64 flow_key_alg : 5;
0142 u64 rsvd_359_341 : 19;
0143 u64 color : 2;
0144 u64 rsvd_383_362 : 22;
0145 u64 rsvd_447_384;
0146 };
0147
0148
0149 struct nix_rx_sg_s {
0150 u64 seg_size : 16;
0151 u64 seg2_size : 16;
0152 u64 seg3_size : 16;
0153 u64 segs : 2;
0154 u64 rsvd_59_50 : 10;
0155 u64 subdc : 4;
0156 u64 seg_addr;
0157 u64 seg2_addr;
0158 u64 seg3_addr;
0159 };
0160
0161 struct nix_send_comp_s {
0162 u64 status : 8;
0163 u64 sqe_id : 16;
0164 u64 rsvd_24_63 : 40;
0165 };
0166
0167 struct nix_cqe_rx_s {
0168 struct nix_cqe_hdr_s hdr;
0169 struct nix_rx_parse_s parse;
0170 struct nix_rx_sg_s sg;
0171 };
0172
0173 struct nix_cqe_tx_s {
0174 struct nix_cqe_hdr_s hdr;
0175 struct nix_send_comp_s comp;
0176 };
0177
0178
0179 struct nix_sqe_hdr_s {
0180 u64 total : 18;
0181 u64 reserved_18 : 1;
0182 u64 df : 1;
0183 u64 aura : 20;
0184 u64 sizem1 : 3;
0185 u64 pnc : 1;
0186 u64 sq : 20;
0187 u64 ol3ptr : 8;
0188 u64 ol4ptr : 8;
0189 u64 il3ptr : 8;
0190 u64 il4ptr : 8;
0191 u64 ol3type : 4;
0192 u64 ol4type : 4;
0193 u64 il3type : 4;
0194 u64 il4type : 4;
0195 u64 sqe_id : 16;
0196
0197 };
0198
0199
0200 struct nix_sqe_ext_s {
0201 u64 lso_mps : 14;
0202 u64 lso : 1;
0203 u64 tstmp : 1;
0204 u64 lso_sb : 8;
0205 u64 lso_format : 5;
0206 u64 rsvd_31_29 : 3;
0207 u64 shp_chg : 9;
0208 u64 shp_dis : 1;
0209 u64 shp_ra : 2;
0210 u64 markptr : 8;
0211 u64 markform : 7;
0212 u64 mark_en : 1;
0213 u64 subdc : 4;
0214 u64 vlan0_ins_ptr : 8;
0215 u64 vlan0_ins_tci : 16;
0216 u64 vlan1_ins_ptr : 8;
0217 u64 vlan1_ins_tci : 16;
0218 u64 vlan0_ins_ena : 1;
0219 u64 vlan1_ins_ena : 1;
0220 u64 init_color : 2;
0221 u64 rsvd_127_116 : 12;
0222 };
0223
0224 struct nix_sqe_sg_s {
0225 u64 seg1_size : 16;
0226 u64 seg2_size : 16;
0227 u64 seg3_size : 16;
0228 u64 segs : 2;
0229 u64 rsvd_54_50 : 5;
0230 u64 i1 : 1;
0231 u64 i2 : 1;
0232 u64 i3 : 1;
0233 u64 ld_type : 2;
0234 u64 subdc : 4;
0235 };
0236
0237
0238 struct nix_sqe_mem_s {
0239 u64 offset : 16;
0240 u64 rsvd_51_16 : 36;
0241 u64 per_lso_seg : 1;
0242 u64 wmem : 1;
0243 u64 dsz : 2;
0244 u64 alg : 4;
0245 u64 subdc : 4;
0246 u64 addr;
0247 };
0248
0249 enum nix_cqerrint_e {
0250 NIX_CQERRINT_DOOR_ERR = 0,
0251 NIX_CQERRINT_WR_FULL = 1,
0252 NIX_CQERRINT_CQE_FAULT = 2,
0253 };
0254
0255 #define NIX_CQERRINT_BITS (BIT_ULL(NIX_CQERRINT_DOOR_ERR) | \
0256 BIT_ULL(NIX_CQERRINT_CQE_FAULT))
0257
0258 enum nix_rqint_e {
0259 NIX_RQINT_DROP = 0,
0260 NIX_RQINT_RED = 1,
0261 };
0262
0263 #define NIX_RQINT_BITS (BIT_ULL(NIX_RQINT_DROP) | BIT_ULL(NIX_RQINT_RED))
0264
0265 enum nix_sqint_e {
0266 NIX_SQINT_LMT_ERR = 0,
0267 NIX_SQINT_MNQ_ERR = 1,
0268 NIX_SQINT_SEND_ERR = 2,
0269 NIX_SQINT_SQB_ALLOC_FAIL = 3,
0270 };
0271
0272 #define NIX_SQINT_BITS (BIT_ULL(NIX_SQINT_LMT_ERR) | \
0273 BIT_ULL(NIX_SQINT_MNQ_ERR) | \
0274 BIT_ULL(NIX_SQINT_SEND_ERR) | \
0275 BIT_ULL(NIX_SQINT_SQB_ALLOC_FAIL))
0276
0277 #endif