xref: /openbmc/linux/drivers/net/ethernet/marvell/octeontx2/af/rvu_struct.h (revision 03ab8e6297acd1bc0eedaa050e2a1635c576fd11)
126b3f3ccSNishad Kamdar /* SPDX-License-Identifier: GPL-2.0 */
2c7cd6c5aSSunil Goutham /* Marvell RVU Admin Function driver
354d55781SSunil Goutham  *
4c7cd6c5aSSunil Goutham  * Copyright (C) 2018 Marvell.
554d55781SSunil Goutham  *
654d55781SSunil Goutham  */
754d55781SSunil Goutham 
854d55781SSunil Goutham #ifndef RVU_STRUCT_H
954d55781SSunil Goutham #define RVU_STRUCT_H
1054d55781SSunil Goutham 
118315f9b2SSunil Goutham /* RVU Block revision IDs */
128315f9b2SSunil Goutham #define RVU_BLK_RVUM_REVID		0x01
138315f9b2SSunil Goutham 
14a84cdceaSSubbaraya Sundeep #define RVU_MULTI_BLK_VER		0x7ULL
15a84cdceaSSubbaraya Sundeep 
1654d55781SSunil Goutham /* RVU Block Address Enumeration */
1754d55781SSunil Goutham enum rvu_block_addr_e {
1854d55781SSunil Goutham 	BLKADDR_RVUM		= 0x0ULL,
1954d55781SSunil Goutham 	BLKADDR_LMT		= 0x1ULL,
2054d55781SSunil Goutham 	BLKADDR_MSIX		= 0x2ULL,
2154d55781SSunil Goutham 	BLKADDR_NPA		= 0x3ULL,
2254d55781SSunil Goutham 	BLKADDR_NIX0		= 0x4ULL,
2354d55781SSunil Goutham 	BLKADDR_NIX1		= 0x5ULL,
2454d55781SSunil Goutham 	BLKADDR_NPC		= 0x6ULL,
2554d55781SSunil Goutham 	BLKADDR_SSO		= 0x7ULL,
2654d55781SSunil Goutham 	BLKADDR_SSOW		= 0x8ULL,
2754d55781SSunil Goutham 	BLKADDR_TIM		= 0x9ULL,
2854d55781SSunil Goutham 	BLKADDR_CPT0		= 0xaULL,
2954d55781SSunil Goutham 	BLKADDR_CPT1		= 0xbULL,
30c5a797e0SPrakash Brahmajyosyula 	BLKADDR_NDC_NIX0_RX	= 0xcULL,
31c5a797e0SPrakash Brahmajyosyula 	BLKADDR_NDC_NIX0_TX	= 0xdULL,
32c5a797e0SPrakash Brahmajyosyula 	BLKADDR_NDC_NPA0	= 0xeULL,
339932fb72SRakesh Babu 	BLKADDR_NDC_NIX1_RX	= 0x10ULL,
349932fb72SRakesh Babu 	BLKADDR_NDC_NIX1_TX	= 0x11ULL,
35873a1e3dSHarman Kalra 	BLKADDR_APR		= 0x16ULL,
36873a1e3dSHarman Kalra 	BLK_COUNT		= 0x17ULL,
3754d55781SSunil Goutham };
3854d55781SSunil Goutham 
39114a767eSSunil Goutham /* RVU Block Type Enumeration */
40114a767eSSunil Goutham enum rvu_block_type_e {
41114a767eSSunil Goutham 	BLKTYPE_RVUM = 0x0,
42114a767eSSunil Goutham 	BLKTYPE_MSIX = 0x1,
43114a767eSSunil Goutham 	BLKTYPE_LMT  = 0x2,
44114a767eSSunil Goutham 	BLKTYPE_NIX  = 0x3,
45114a767eSSunil Goutham 	BLKTYPE_NPA  = 0x4,
46114a767eSSunil Goutham 	BLKTYPE_NPC  = 0x5,
47114a767eSSunil Goutham 	BLKTYPE_SSO  = 0x6,
48114a767eSSunil Goutham 	BLKTYPE_SSOW = 0x7,
49114a767eSSunil Goutham 	BLKTYPE_TIM  = 0x8,
50114a767eSSunil Goutham 	BLKTYPE_CPT  = 0x9,
51114a767eSSunil Goutham 	BLKTYPE_NDC  = 0xa,
52114a767eSSunil Goutham 	BLKTYPE_MAX  = 0xa,
53114a767eSSunil Goutham };
54114a767eSSunil Goutham 
557304ac45SSunil Goutham /* RVU Admin function Interrupt Vector Enumeration */
567304ac45SSunil Goutham enum rvu_af_int_vec_e {
577304ac45SSunil Goutham 	RVU_AF_INT_VEC_POISON = 0x0,
587304ac45SSunil Goutham 	RVU_AF_INT_VEC_PFFLR  = 0x1,
597304ac45SSunil Goutham 	RVU_AF_INT_VEC_PFME   = 0x2,
607304ac45SSunil Goutham 	RVU_AF_INT_VEC_GEN    = 0x3,
617304ac45SSunil Goutham 	RVU_AF_INT_VEC_MBOX   = 0x4,
62756051e2SSunil Goutham 	RVU_AF_INT_VEC_CNT    = 0x5,
637304ac45SSunil Goutham };
647304ac45SSunil Goutham 
65*48260907SSrujana Challa /* CPT Admin function Interrupt Vector Enumeration */
66*48260907SSrujana Challa enum cpt_af_int_vec_e {
67*48260907SSrujana Challa 	CPT_AF_INT_VEC_FLT0	= 0x0,
68*48260907SSrujana Challa 	CPT_AF_INT_VEC_FLT1	= 0x1,
69*48260907SSrujana Challa 	CPT_AF_INT_VEC_RVU	= 0x2,
70*48260907SSrujana Challa 	CPT_AF_INT_VEC_RAS	= 0x3,
71*48260907SSrujana Challa 	CPT_AF_INT_VEC_CNT	= 0x4,
72*48260907SSrujana Challa };
73*48260907SSrujana Challa 
74*48260907SSrujana Challa enum cpt_10k_af_int_vec_e {
75*48260907SSrujana Challa 	CPT_10K_AF_INT_VEC_FLT0	= 0x0,
76*48260907SSrujana Challa 	CPT_10K_AF_INT_VEC_FLT1	= 0x1,
77*48260907SSrujana Challa 	CPT_10K_AF_INT_VEC_FLT2	= 0x2,
78*48260907SSrujana Challa 	CPT_10K_AF_INT_VEC_RVU	= 0x3,
79*48260907SSrujana Challa 	CPT_10K_AF_INT_VEC_RAS	= 0x4,
80*48260907SSrujana Challa 	CPT_10K_AF_INT_VEC_CNT	= 0x5,
81*48260907SSrujana Challa };
82*48260907SSrujana Challa 
83f1168d1eSGeorge Cherian /* NPA Admin function Interrupt Vector Enumeration */
84f1168d1eSGeorge Cherian enum npa_af_int_vec_e {
85f1168d1eSGeorge Cherian 	NPA_AF_INT_VEC_RVU	= 0x0,
86f1168d1eSGeorge Cherian 	NPA_AF_INT_VEC_GEN	= 0x1,
87f1168d1eSGeorge Cherian 	NPA_AF_INT_VEC_AQ_DONE	= 0x2,
88f1168d1eSGeorge Cherian 	NPA_AF_INT_VEC_AF_ERR	= 0x3,
89f1168d1eSGeorge Cherian 	NPA_AF_INT_VEC_POISON	= 0x4,
90f1168d1eSGeorge Cherian 	NPA_AF_INT_VEC_CNT	= 0x5,
91f1168d1eSGeorge Cherian };
92f1168d1eSGeorge Cherian 
935ed66306SGeorge Cherian /* NIX Admin function Interrupt Vector Enumeration */
945ed66306SGeorge Cherian enum nix_af_int_vec_e {
955ed66306SGeorge Cherian 	NIX_AF_INT_VEC_RVU	= 0x0,
965ed66306SGeorge Cherian 	NIX_AF_INT_VEC_GEN	= 0x1,
975ed66306SGeorge Cherian 	NIX_AF_INT_VEC_AQ_DONE	= 0x2,
985ed66306SGeorge Cherian 	NIX_AF_INT_VEC_AF_ERR	= 0x3,
995ed66306SGeorge Cherian 	NIX_AF_INT_VEC_POISON	= 0x4,
1005ed66306SGeorge Cherian 	NIX_AF_INT_VEC_CNT	= 0x5,
1015ed66306SGeorge Cherian };
1025ed66306SGeorge Cherian 
1037304ac45SSunil Goutham /**
1047304ac45SSunil Goutham  * RVU PF Interrupt Vector Enumeration
1057304ac45SSunil Goutham  */
1067304ac45SSunil Goutham enum rvu_pf_int_vec_e {
1077304ac45SSunil Goutham 	RVU_PF_INT_VEC_VFFLR0     = 0x0,
1087304ac45SSunil Goutham 	RVU_PF_INT_VEC_VFFLR1     = 0x1,
1097304ac45SSunil Goutham 	RVU_PF_INT_VEC_VFME0      = 0x2,
1107304ac45SSunil Goutham 	RVU_PF_INT_VEC_VFME1      = 0x3,
1117304ac45SSunil Goutham 	RVU_PF_INT_VEC_VFPF_MBOX0 = 0x4,
1127304ac45SSunil Goutham 	RVU_PF_INT_VEC_VFPF_MBOX1 = 0x5,
1137304ac45SSunil Goutham 	RVU_PF_INT_VEC_AFPF_MBOX  = 0x6,
114756051e2SSunil Goutham 	RVU_PF_INT_VEC_CNT	  = 0x7,
1157304ac45SSunil Goutham };
1167304ac45SSunil Goutham 
1177a37245eSSunil Goutham /* NPA admin queue completion enumeration */
1187a37245eSSunil Goutham enum npa_aq_comp {
1197a37245eSSunil Goutham 	NPA_AQ_COMP_NOTDONE    = 0x0,
1207a37245eSSunil Goutham 	NPA_AQ_COMP_GOOD       = 0x1,
1217a37245eSSunil Goutham 	NPA_AQ_COMP_SWERR      = 0x2,
1227a37245eSSunil Goutham 	NPA_AQ_COMP_CTX_POISON = 0x3,
1237a37245eSSunil Goutham 	NPA_AQ_COMP_CTX_FAULT  = 0x4,
1247a37245eSSunil Goutham 	NPA_AQ_COMP_LOCKERR    = 0x5,
1257a37245eSSunil Goutham };
1267a37245eSSunil Goutham 
1277a37245eSSunil Goutham /* NPA admin queue context types */
1287a37245eSSunil Goutham enum npa_aq_ctype {
1297a37245eSSunil Goutham 	NPA_AQ_CTYPE_AURA = 0x0,
1307a37245eSSunil Goutham 	NPA_AQ_CTYPE_POOL = 0x1,
1317a37245eSSunil Goutham };
1327a37245eSSunil Goutham 
1337a37245eSSunil Goutham /* NPA admin queue instruction opcodes */
1347a37245eSSunil Goutham enum npa_aq_instop {
1357a37245eSSunil Goutham 	NPA_AQ_INSTOP_NOP    = 0x0,
1367a37245eSSunil Goutham 	NPA_AQ_INSTOP_INIT   = 0x1,
1377a37245eSSunil Goutham 	NPA_AQ_INSTOP_WRITE  = 0x2,
1387a37245eSSunil Goutham 	NPA_AQ_INSTOP_READ   = 0x3,
1397a37245eSSunil Goutham 	NPA_AQ_INSTOP_LOCK   = 0x4,
1407a37245eSSunil Goutham 	NPA_AQ_INSTOP_UNLOCK = 0x5,
1417a37245eSSunil Goutham };
1427a37245eSSunil Goutham 
143f1168d1eSGeorge Cherian /* ALLOC/FREE input queues Enumeration from coprocessors */
144f1168d1eSGeorge Cherian enum npa_inpq {
145f1168d1eSGeorge Cherian 	NPA_INPQ_NIX0_RX       = 0x0,
146f1168d1eSGeorge Cherian 	NPA_INPQ_NIX0_TX       = 0x1,
147f1168d1eSGeorge Cherian 	NPA_INPQ_NIX1_RX       = 0x2,
148f1168d1eSGeorge Cherian 	NPA_INPQ_NIX1_TX       = 0x3,
149f1168d1eSGeorge Cherian 	NPA_INPQ_SSO           = 0x4,
150f1168d1eSGeorge Cherian 	NPA_INPQ_TIM           = 0x5,
151f1168d1eSGeorge Cherian 	NPA_INPQ_DPI           = 0x6,
152f1168d1eSGeorge Cherian 	NPA_INPQ_AURA_OP       = 0xe,
153f1168d1eSGeorge Cherian 	NPA_INPQ_INTERNAL_RSV  = 0xf,
154f1168d1eSGeorge Cherian };
155f1168d1eSGeorge Cherian 
1567a37245eSSunil Goutham /* NPA admin queue instruction structure */
1577a37245eSSunil Goutham struct npa_aq_inst_s {
15830077d21SGeetha sowjanya 	u64 op                    : 4; /* W0 */
1597a37245eSSunil Goutham 	u64 ctype                 : 4;
1607a37245eSSunil Goutham 	u64 lf                    : 9;
1617a37245eSSunil Goutham 	u64 reserved_17_23        : 7;
1627a37245eSSunil Goutham 	u64 cindex                : 20;
1637a37245eSSunil Goutham 	u64 reserved_44_62        : 19;
1647a37245eSSunil Goutham 	u64 doneint               : 1;
1657a37245eSSunil Goutham 	u64 res_addr;			/* W1 */
1667a37245eSSunil Goutham };
1677a37245eSSunil Goutham 
1687a37245eSSunil Goutham /* NPA admin queue result structure */
1697a37245eSSunil Goutham struct npa_aq_res_s {
17030077d21SGeetha sowjanya 	u64 op                    : 4; /* W0 */
1717a37245eSSunil Goutham 	u64 ctype                 : 4;
1727a37245eSSunil Goutham 	u64 compcode              : 8;
1737a37245eSSunil Goutham 	u64 doneint               : 1;
1747a37245eSSunil Goutham 	u64 reserved_17_63        : 47;
1757a37245eSSunil Goutham 	u64 reserved_64_127;		/* W1 */
1767a37245eSSunil Goutham };
1774a3581cdSSunil Goutham 
1784a3581cdSSunil Goutham struct npa_aura_s {
1794a3581cdSSunil Goutham 	u64 pool_addr;			/* W0 */
18030077d21SGeetha sowjanya 	u64 ena                   : 1;  /* W1 */
1814a3581cdSSunil Goutham 	u64 reserved_65           : 2;
1824a3581cdSSunil Goutham 	u64 pool_caching          : 1;
1834a3581cdSSunil Goutham 	u64 pool_way_mask         : 16;
1844a3581cdSSunil Goutham 	u64 avg_con               : 9;
1854a3581cdSSunil Goutham 	u64 reserved_93           : 1;
1864a3581cdSSunil Goutham 	u64 pool_drop_ena         : 1;
1874a3581cdSSunil Goutham 	u64 aura_drop_ena         : 1;
1884a3581cdSSunil Goutham 	u64 bp_ena                : 2;
1894a3581cdSSunil Goutham 	u64 reserved_98_103       : 6;
1904a3581cdSSunil Goutham 	u64 aura_drop             : 8;
1914a3581cdSSunil Goutham 	u64 shift                 : 6;
1924a3581cdSSunil Goutham 	u64 reserved_118_119      : 2;
1934a3581cdSSunil Goutham 	u64 avg_level             : 8;
19430077d21SGeetha sowjanya 	u64 count                 : 36; /* W2 */
1954a3581cdSSunil Goutham 	u64 reserved_164_167      : 4;
1964a3581cdSSunil Goutham 	u64 nix0_bpid             : 9;
1974a3581cdSSunil Goutham 	u64 reserved_177_179      : 3;
1984a3581cdSSunil Goutham 	u64 nix1_bpid             : 9;
1994a3581cdSSunil Goutham 	u64 reserved_189_191      : 3;
20030077d21SGeetha sowjanya 	u64 limit                 : 36; /* W3 */
2014a3581cdSSunil Goutham 	u64 reserved_228_231      : 4;
2024a3581cdSSunil Goutham 	u64 bp                    : 8;
20330077d21SGeetha sowjanya 	u64 reserved_241_243      : 3;
20430077d21SGeetha sowjanya 	u64 fc_be                 : 1;
2054a3581cdSSunil Goutham 	u64 fc_ena                : 1;
2064a3581cdSSunil Goutham 	u64 fc_up_crossing        : 1;
2074a3581cdSSunil Goutham 	u64 fc_stype              : 2;
2084a3581cdSSunil Goutham 	u64 fc_hyst_bits          : 4;
2094a3581cdSSunil Goutham 	u64 reserved_252_255      : 4;
2104a3581cdSSunil Goutham 	u64 fc_addr;			/* W4 */
21130077d21SGeetha sowjanya 	u64 pool_drop             : 8;  /* W5 */
2124a3581cdSSunil Goutham 	u64 update_time           : 16;
2134a3581cdSSunil Goutham 	u64 err_int               : 8;
2144a3581cdSSunil Goutham 	u64 err_int_ena           : 8;
2154a3581cdSSunil Goutham 	u64 thresh_int            : 1;
2164a3581cdSSunil Goutham 	u64 thresh_int_ena        : 1;
2174a3581cdSSunil Goutham 	u64 thresh_up             : 1;
2184a3581cdSSunil Goutham 	u64 reserved_363          : 1;
2194a3581cdSSunil Goutham 	u64 thresh_qint_idx       : 7;
2204a3581cdSSunil Goutham 	u64 reserved_371          : 1;
2214a3581cdSSunil Goutham 	u64 err_qint_idx          : 7;
2224a3581cdSSunil Goutham 	u64 reserved_379_383      : 5;
22330077d21SGeetha sowjanya 	u64 thresh                : 36; /* W6*/
22430077d21SGeetha sowjanya 	u64 rsvd_423_420          : 4;
22530077d21SGeetha sowjanya 	u64 fc_msh_dst            : 11;
22630077d21SGeetha sowjanya 	u64 reserved_435_447      : 13;
2274a3581cdSSunil Goutham 	u64 reserved_448_511;		/* W7 */
2284a3581cdSSunil Goutham };
2294a3581cdSSunil Goutham 
2304a3581cdSSunil Goutham struct npa_pool_s {
2314a3581cdSSunil Goutham 	u64 stack_base;			/* W0 */
2324a3581cdSSunil Goutham 	u64 ena                   : 1;
2334a3581cdSSunil Goutham 	u64 nat_align             : 1;
2344a3581cdSSunil Goutham 	u64 reserved_66_67        : 2;
2354a3581cdSSunil Goutham 	u64 stack_caching         : 1;
2364a3581cdSSunil Goutham 	u64 reserved_70_71        : 3;
2374a3581cdSSunil Goutham 	u64 stack_way_mask        : 16;
2384a3581cdSSunil Goutham 	u64 buf_offset            : 12;
2394a3581cdSSunil Goutham 	u64 reserved_100_103      : 4;
2404a3581cdSSunil Goutham 	u64 buf_size              : 11;
2414a3581cdSSunil Goutham 	u64 reserved_115_127      : 13;
2424a3581cdSSunil Goutham 	u64 stack_max_pages       : 32;
2434a3581cdSSunil Goutham 	u64 stack_pages           : 32;
2444a3581cdSSunil Goutham 	u64 op_pc                 : 48;
2454a3581cdSSunil Goutham 	u64 reserved_240_255      : 16;
2464a3581cdSSunil Goutham 	u64 stack_offset          : 4;
2474a3581cdSSunil Goutham 	u64 reserved_260_263      : 4;
2484a3581cdSSunil Goutham 	u64 shift                 : 6;
2494a3581cdSSunil Goutham 	u64 reserved_270_271      : 2;
2504a3581cdSSunil Goutham 	u64 avg_level             : 8;
2514a3581cdSSunil Goutham 	u64 avg_con               : 9;
2524a3581cdSSunil Goutham 	u64 fc_ena                : 1;
2534a3581cdSSunil Goutham 	u64 fc_stype              : 2;
2544a3581cdSSunil Goutham 	u64 fc_hyst_bits          : 4;
2554a3581cdSSunil Goutham 	u64 fc_up_crossing        : 1;
25630077d21SGeetha sowjanya 	u64 fc_be		  : 1;
25730077d21SGeetha sowjanya 	u64 reserved_298_299      : 2;
2584a3581cdSSunil Goutham 	u64 update_time           : 16;
2594a3581cdSSunil Goutham 	u64 reserved_316_319      : 4;
2604a3581cdSSunil Goutham 	u64 fc_addr;			/* W5 */
2614a3581cdSSunil Goutham 	u64 ptr_start;			/* W6 */
2624a3581cdSSunil Goutham 	u64 ptr_end;			/* W7 */
2634a3581cdSSunil Goutham 	u64 reserved_512_535      : 24;
2644a3581cdSSunil Goutham 	u64 err_int               : 8;
2654a3581cdSSunil Goutham 	u64 err_int_ena           : 8;
2664a3581cdSSunil Goutham 	u64 thresh_int            : 1;
2674a3581cdSSunil Goutham 	u64 thresh_int_ena        : 1;
2684a3581cdSSunil Goutham 	u64 thresh_up             : 1;
2694a3581cdSSunil Goutham 	u64 reserved_555          : 1;
2704a3581cdSSunil Goutham 	u64 thresh_qint_idx       : 7;
2714a3581cdSSunil Goutham 	u64 reserved_563          : 1;
2724a3581cdSSunil Goutham 	u64 err_qint_idx          : 7;
2734a3581cdSSunil Goutham 	u64 reserved_571_575      : 5;
2744a3581cdSSunil Goutham 	u64 thresh                : 36;
27530077d21SGeetha sowjanya 	u64 rsvd_615_612	  : 4;
27630077d21SGeetha sowjanya 	u64 fc_msh_dst		  : 11;
27730077d21SGeetha sowjanya 	u64 reserved_627_639      : 13;
2784a3581cdSSunil Goutham 	u64 reserved_640_703;		/* W10 */
2794a3581cdSSunil Goutham 	u64 reserved_704_767;		/* W11 */
2804a3581cdSSunil Goutham 	u64 reserved_768_831;		/* W12 */
2814a3581cdSSunil Goutham 	u64 reserved_832_895;		/* W13 */
2824a3581cdSSunil Goutham 	u64 reserved_896_959;		/* W14 */
2834a3581cdSSunil Goutham 	u64 reserved_960_1023;		/* W15 */
2844a3581cdSSunil Goutham };
285aba53d5dSSunil Goutham 
286aba53d5dSSunil Goutham /* NIX admin queue completion status */
287aba53d5dSSunil Goutham enum nix_aq_comp {
288aba53d5dSSunil Goutham 	NIX_AQ_COMP_NOTDONE        = 0x0,
289aba53d5dSSunil Goutham 	NIX_AQ_COMP_GOOD           = 0x1,
290aba53d5dSSunil Goutham 	NIX_AQ_COMP_SWERR          = 0x2,
291aba53d5dSSunil Goutham 	NIX_AQ_COMP_CTX_POISON     = 0x3,
292aba53d5dSSunil Goutham 	NIX_AQ_COMP_CTX_FAULT      = 0x4,
293aba53d5dSSunil Goutham 	NIX_AQ_COMP_LOCKERR        = 0x5,
294aba53d5dSSunil Goutham 	NIX_AQ_COMP_SQB_ALLOC_FAIL = 0x6,
295aba53d5dSSunil Goutham };
296aba53d5dSSunil Goutham 
297aba53d5dSSunil Goutham /* NIX admin queue context types */
298aba53d5dSSunil Goutham enum nix_aq_ctype {
299aba53d5dSSunil Goutham 	NIX_AQ_CTYPE_RQ   = 0x0,
300aba53d5dSSunil Goutham 	NIX_AQ_CTYPE_SQ   = 0x1,
301aba53d5dSSunil Goutham 	NIX_AQ_CTYPE_CQ   = 0x2,
302aba53d5dSSunil Goutham 	NIX_AQ_CTYPE_MCE  = 0x3,
303aba53d5dSSunil Goutham 	NIX_AQ_CTYPE_RSS  = 0x4,
304aba53d5dSSunil Goutham 	NIX_AQ_CTYPE_DYNO = 0x5,
305e8e095b3SSunil Goutham 	NIX_AQ_CTYPE_BANDPROF = 0x6,
306aba53d5dSSunil Goutham };
307aba53d5dSSunil Goutham 
308aba53d5dSSunil Goutham /* NIX admin queue instruction opcodes */
309aba53d5dSSunil Goutham enum nix_aq_instop {
310aba53d5dSSunil Goutham 	NIX_AQ_INSTOP_NOP    = 0x0,
311aba53d5dSSunil Goutham 	NIX_AQ_INSTOP_INIT   = 0x1,
312aba53d5dSSunil Goutham 	NIX_AQ_INSTOP_WRITE  = 0x2,
313aba53d5dSSunil Goutham 	NIX_AQ_INSTOP_READ   = 0x3,
314aba53d5dSSunil Goutham 	NIX_AQ_INSTOP_LOCK   = 0x4,
315aba53d5dSSunil Goutham 	NIX_AQ_INSTOP_UNLOCK = 0x5,
316aba53d5dSSunil Goutham };
317aba53d5dSSunil Goutham 
318aba53d5dSSunil Goutham /* NIX admin queue instruction structure */
319aba53d5dSSunil Goutham struct nix_aq_inst_s {
320aba53d5dSSunil Goutham 	u64 op			: 4;
321aba53d5dSSunil Goutham 	u64 ctype		: 4;
32230077d21SGeetha sowjanya 	u64 lf			: 9;
32330077d21SGeetha sowjanya 	u64 reserved_17_23	: 7;
324aba53d5dSSunil Goutham 	u64 cindex		: 20;
325aba53d5dSSunil Goutham 	u64 reserved_44_62	: 19;
326aba53d5dSSunil Goutham 	u64 doneint		: 1;
327aba53d5dSSunil Goutham 	u64 res_addr;			/* W1 */
328aba53d5dSSunil Goutham };
329aba53d5dSSunil Goutham 
330aba53d5dSSunil Goutham /* NIX admin queue result structure */
331aba53d5dSSunil Goutham struct nix_aq_res_s {
332aba53d5dSSunil Goutham 	u64 op			: 4;
333aba53d5dSSunil Goutham 	u64 ctype		: 4;
334aba53d5dSSunil Goutham 	u64 compcode		: 8;
335aba53d5dSSunil Goutham 	u64 doneint		: 1;
336aba53d5dSSunil Goutham 	u64 reserved_17_63	: 47;
337aba53d5dSSunil Goutham 	u64 reserved_64_127;		/* W1 */
338aba53d5dSSunil Goutham };
339aba53d5dSSunil Goutham 
340ffb0abd7SSunil Goutham /* NIX Completion queue context structure */
341ffb0abd7SSunil Goutham struct nix_cq_ctx_s {
342ffb0abd7SSunil Goutham 	u64 base;
343ffb0abd7SSunil Goutham 	u64 rsvd_64_67		: 4;
344ffb0abd7SSunil Goutham 	u64 bp_ena		: 1;
345ffb0abd7SSunil Goutham 	u64 rsvd_69_71		: 3;
346ffb0abd7SSunil Goutham 	u64 bpid		: 9;
347ffb0abd7SSunil Goutham 	u64 rsvd_81_83		: 3;
348ffb0abd7SSunil Goutham 	u64 qint_idx		: 7;
349ffb0abd7SSunil Goutham 	u64 cq_err		: 1;
350ffb0abd7SSunil Goutham 	u64 cint_idx		: 7;
351ffb0abd7SSunil Goutham 	u64 avg_con		: 9;
352ffb0abd7SSunil Goutham 	u64 wrptr		: 20;
353ffb0abd7SSunil Goutham 	u64 tail		: 20;
354ffb0abd7SSunil Goutham 	u64 head		: 20;
355ffb0abd7SSunil Goutham 	u64 avg_level		: 8;
356ffb0abd7SSunil Goutham 	u64 update_time		: 16;
35702e202c3SPrakash Brahmajyosyula 	u64 bp			: 8;
358ffb0abd7SSunil Goutham 	u64 drop		: 8;
359ffb0abd7SSunil Goutham 	u64 drop_ena		: 1;
360ffb0abd7SSunil Goutham 	u64 ena			: 1;
361ffb0abd7SSunil Goutham 	u64 rsvd_210_211	: 2;
362ffb0abd7SSunil Goutham 	u64 substream		: 20;
363ffb0abd7SSunil Goutham 	u64 caching		: 1;
364ffb0abd7SSunil Goutham 	u64 rsvd_233_235	: 3;
365ffb0abd7SSunil Goutham 	u64 qsize		: 4;
366ffb0abd7SSunil Goutham 	u64 cq_err_int		: 8;
367ffb0abd7SSunil Goutham 	u64 cq_err_int_ena	: 8;
36830077d21SGeetha sowjanya };
36930077d21SGeetha sowjanya 
37030077d21SGeetha sowjanya /* CN10K NIX Receive queue context structure */
37130077d21SGeetha sowjanya struct nix_cn10k_rq_ctx_s {
37230077d21SGeetha sowjanya 	u64 ena			: 1;
37330077d21SGeetha sowjanya 	u64 sso_ena		: 1;
37430077d21SGeetha sowjanya 	u64 ipsech_ena		: 1;
37530077d21SGeetha sowjanya 	u64 ena_wqwd		: 1;
37630077d21SGeetha sowjanya 	u64 cq			: 20;
37730077d21SGeetha sowjanya 	u64 rsvd_36_24		: 13;
37830077d21SGeetha sowjanya 	u64 lenerr_dis		: 1;
37930077d21SGeetha sowjanya 	u64 csum_il4_dis	: 1;
38030077d21SGeetha sowjanya 	u64 csum_ol4_dis	: 1;
38130077d21SGeetha sowjanya 	u64 len_il4_dis		: 1;
38230077d21SGeetha sowjanya 	u64 len_il3_dis		: 1;
38330077d21SGeetha sowjanya 	u64 len_ol4_dis		: 1;
38430077d21SGeetha sowjanya 	u64 len_ol3_dis		: 1;
38530077d21SGeetha sowjanya 	u64 wqe_aura		: 20;
38630077d21SGeetha sowjanya 	u64 spb_aura		: 20;
38730077d21SGeetha sowjanya 	u64 lpb_aura		: 20;
38830077d21SGeetha sowjanya 	u64 sso_grp		: 10;
38930077d21SGeetha sowjanya 	u64 sso_tt		: 2;
39030077d21SGeetha sowjanya 	u64 pb_caching		: 2;
39130077d21SGeetha sowjanya 	u64 wqe_caching		: 1;
39230077d21SGeetha sowjanya 	u64 xqe_drop_ena	: 1;
39330077d21SGeetha sowjanya 	u64 spb_drop_ena	: 1;
39430077d21SGeetha sowjanya 	u64 lpb_drop_ena	: 1;
39530077d21SGeetha sowjanya 	u64 pb_stashing		: 1;
39630077d21SGeetha sowjanya 	u64 ipsecd_drop_ena	: 1;
39730077d21SGeetha sowjanya 	u64 chi_ena		: 1;
39830077d21SGeetha sowjanya 	u64 rsvd_127_125	: 3;
39930077d21SGeetha sowjanya 	u64 band_prof_id	: 10; /* W2 */
40030077d21SGeetha sowjanya 	u64 rsvd_138		: 1;
40130077d21SGeetha sowjanya 	u64 policer_ena		: 1;
40230077d21SGeetha sowjanya 	u64 spb_sizem1		: 6;
40330077d21SGeetha sowjanya 	u64 wqe_skip		: 2;
40430077d21SGeetha sowjanya 	u64 rsvd_150_148	: 3;
40530077d21SGeetha sowjanya 	u64 spb_ena		: 1;
40630077d21SGeetha sowjanya 	u64 lpb_sizem1		: 12;
40730077d21SGeetha sowjanya 	u64 first_skip		: 7;
40830077d21SGeetha sowjanya 	u64 rsvd_171		: 1;
40930077d21SGeetha sowjanya 	u64 later_skip		: 6;
41030077d21SGeetha sowjanya 	u64 xqe_imm_size	: 6;
41130077d21SGeetha sowjanya 	u64 rsvd_189_184	: 6;
41230077d21SGeetha sowjanya 	u64 xqe_imm_copy	: 1;
41330077d21SGeetha sowjanya 	u64 xqe_hdr_split	: 1;
41430077d21SGeetha sowjanya 	u64 xqe_drop		: 8; /* W3 */
41530077d21SGeetha sowjanya 	u64 xqe_pass		: 8;
41630077d21SGeetha sowjanya 	u64 wqe_pool_drop	: 8;
41730077d21SGeetha sowjanya 	u64 wqe_pool_pass	: 8;
41830077d21SGeetha sowjanya 	u64 spb_aura_drop	: 8;
41930077d21SGeetha sowjanya 	u64 spb_aura_pass	: 8;
42030077d21SGeetha sowjanya 	u64 spb_pool_drop	: 8;
42130077d21SGeetha sowjanya 	u64 spb_pool_pass	: 8;
42230077d21SGeetha sowjanya 	u64 lpb_aura_drop	: 8; /* W4 */
42330077d21SGeetha sowjanya 	u64 lpb_aura_pass	: 8;
42430077d21SGeetha sowjanya 	u64 lpb_pool_drop	: 8;
42530077d21SGeetha sowjanya 	u64 lpb_pool_pass	: 8;
42630077d21SGeetha sowjanya 	u64 rsvd_291_288	: 4;
42730077d21SGeetha sowjanya 	u64 rq_int		: 8;
42830077d21SGeetha sowjanya 	u64 rq_int_ena		: 8;
42930077d21SGeetha sowjanya 	u64 qint_idx		: 7;
43030077d21SGeetha sowjanya 	u64 rsvd_319_315	: 5;
43130077d21SGeetha sowjanya 	u64 ltag		: 24; /* W5 */
43230077d21SGeetha sowjanya 	u64 good_utag		: 8;
43330077d21SGeetha sowjanya 	u64 bad_utag		: 8;
43430077d21SGeetha sowjanya 	u64 flow_tagw		: 6;
43530077d21SGeetha sowjanya 	u64 ipsec_vwqe		: 1;
43630077d21SGeetha sowjanya 	u64 vwqe_ena		: 1;
43730077d21SGeetha sowjanya 	u64 vwqe_wait		: 8;
43830077d21SGeetha sowjanya 	u64 max_vsize_exp	: 4;
43930077d21SGeetha sowjanya 	u64 vwqe_skip		: 2;
44030077d21SGeetha sowjanya 	u64 rsvd_383_382	: 2;
44130077d21SGeetha sowjanya 	u64 octs		: 48; /* W6 */
44230077d21SGeetha sowjanya 	u64 rsvd_447_432	: 16;
44330077d21SGeetha sowjanya 	u64 pkts		: 48; /* W7 */
44430077d21SGeetha sowjanya 	u64 rsvd_511_496	: 16;
44530077d21SGeetha sowjanya 	u64 drop_octs		: 48; /* W8 */
44630077d21SGeetha sowjanya 	u64 rsvd_575_560	: 16;
44730077d21SGeetha sowjanya 	u64 drop_pkts		: 48; /* W9 */
44830077d21SGeetha sowjanya 	u64 rsvd_639_624	: 16;
44930077d21SGeetha sowjanya 	u64 re_pkts		: 48; /* W10 */
45030077d21SGeetha sowjanya 	u64 rsvd_703_688	: 16;
45130077d21SGeetha sowjanya 	u64 rsvd_767_704;		/* W11 */
45230077d21SGeetha sowjanya 	u64 rsvd_831_768;		/* W12 */
45330077d21SGeetha sowjanya 	u64 rsvd_895_832;		/* W13 */
45430077d21SGeetha sowjanya 	u64 rsvd_959_896;		/* W14 */
45530077d21SGeetha sowjanya 	u64 rsvd_1023_960;		/* W15 */
45630077d21SGeetha sowjanya };
45730077d21SGeetha sowjanya 
45830077d21SGeetha sowjanya /* CN10K NIX Send queue context structure */
45930077d21SGeetha sowjanya struct nix_cn10k_sq_ctx_s {
46030077d21SGeetha sowjanya 	u64 ena                   : 1;
46130077d21SGeetha sowjanya 	u64 qint_idx              : 6;
46230077d21SGeetha sowjanya 	u64 substream             : 20;
46330077d21SGeetha sowjanya 	u64 sdp_mcast             : 1;
46430077d21SGeetha sowjanya 	u64 cq                    : 20;
46530077d21SGeetha sowjanya 	u64 sqe_way_mask          : 16;
46630077d21SGeetha sowjanya 	u64 smq                   : 10; /* W1 */
46730077d21SGeetha sowjanya 	u64 cq_ena                : 1;
46830077d21SGeetha sowjanya 	u64 xoff                  : 1;
46930077d21SGeetha sowjanya 	u64 sso_ena               : 1;
47030077d21SGeetha sowjanya 	u64 smq_rr_weight         : 14;
47130077d21SGeetha sowjanya 	u64 default_chan          : 12;
47230077d21SGeetha sowjanya 	u64 sqb_count             : 16;
47330077d21SGeetha sowjanya 	u64 rsvd_120_119          : 2;
47430077d21SGeetha sowjanya 	u64 smq_rr_count_lb       : 7;
47530077d21SGeetha sowjanya 	u64 smq_rr_count_ub       : 25; /* W2 */
47630077d21SGeetha sowjanya 	u64 sqb_aura              : 20;
47730077d21SGeetha sowjanya 	u64 sq_int                : 8;
47830077d21SGeetha sowjanya 	u64 sq_int_ena            : 8;
47930077d21SGeetha sowjanya 	u64 sqe_stype             : 2;
48030077d21SGeetha sowjanya 	u64 rsvd_191              : 1;
48130077d21SGeetha sowjanya 	u64 max_sqe_size          : 2; /* W3 */
48230077d21SGeetha sowjanya 	u64 cq_limit              : 8;
48330077d21SGeetha sowjanya 	u64 lmt_dis               : 1;
48430077d21SGeetha sowjanya 	u64 mnq_dis               : 1;
48530077d21SGeetha sowjanya 	u64 smq_next_sq           : 20;
48630077d21SGeetha sowjanya 	u64 smq_lso_segnum        : 8;
48730077d21SGeetha sowjanya 	u64 tail_offset           : 6;
48830077d21SGeetha sowjanya 	u64 smenq_offset          : 6;
48930077d21SGeetha sowjanya 	u64 head_offset           : 6;
49030077d21SGeetha sowjanya 	u64 smenq_next_sqb_vld    : 1;
49130077d21SGeetha sowjanya 	u64 smq_pend              : 1;
49230077d21SGeetha sowjanya 	u64 smq_next_sq_vld       : 1;
49330077d21SGeetha sowjanya 	u64 rsvd_255_253          : 3;
49430077d21SGeetha sowjanya 	u64 next_sqb              : 64; /* W4 */
49530077d21SGeetha sowjanya 	u64 tail_sqb              : 64; /* W5 */
49630077d21SGeetha sowjanya 	u64 smenq_sqb             : 64; /* W6 */
49730077d21SGeetha sowjanya 	u64 smenq_next_sqb        : 64; /* W7 */
49830077d21SGeetha sowjanya 	u64 head_sqb              : 64; /* W8 */
49930077d21SGeetha sowjanya 	u64 rsvd_583_576          : 8;  /* W9 */
50030077d21SGeetha sowjanya 	u64 vfi_lso_total         : 18;
50130077d21SGeetha sowjanya 	u64 vfi_lso_sizem1        : 3;
50230077d21SGeetha sowjanya 	u64 vfi_lso_sb            : 8;
50330077d21SGeetha sowjanya 	u64 vfi_lso_mps           : 14;
50430077d21SGeetha sowjanya 	u64 vfi_lso_vlan0_ins_ena : 1;
50530077d21SGeetha sowjanya 	u64 vfi_lso_vlan1_ins_ena : 1;
50630077d21SGeetha sowjanya 	u64 vfi_lso_vld           : 1;
50730077d21SGeetha sowjanya 	u64 rsvd_639_630          : 10;
50830077d21SGeetha sowjanya 	u64 scm_lso_rem           : 18; /* W10 */
50930077d21SGeetha sowjanya 	u64 rsvd_703_658          : 46;
51030077d21SGeetha sowjanya 	u64 octs                  : 48; /* W11 */
51130077d21SGeetha sowjanya 	u64 rsvd_767_752          : 16;
51230077d21SGeetha sowjanya 	u64 pkts                  : 48; /* W12 */
51330077d21SGeetha sowjanya 	u64 rsvd_831_816          : 16;
51430077d21SGeetha sowjanya 	u64 rsvd_895_832          : 64; /* W13 */
51530077d21SGeetha sowjanya 	u64 dropped_octs          : 48;
51630077d21SGeetha sowjanya 	u64 rsvd_959_944          : 16;
51730077d21SGeetha sowjanya 	u64 dropped_pkts          : 48;
51830077d21SGeetha sowjanya 	u64 rsvd_1023_1008        : 16;
519ffb0abd7SSunil Goutham };
520ffb0abd7SSunil Goutham 
521ffb0abd7SSunil Goutham /* NIX Receive queue context structure */
522ffb0abd7SSunil Goutham struct nix_rq_ctx_s {
523ffb0abd7SSunil Goutham 	u64 ena           : 1;
524ffb0abd7SSunil Goutham 	u64 sso_ena       : 1;
525ffb0abd7SSunil Goutham 	u64 ipsech_ena    : 1;
526ffb0abd7SSunil Goutham 	u64 ena_wqwd      : 1;
527ffb0abd7SSunil Goutham 	u64 cq            : 20;
528ffb0abd7SSunil Goutham 	u64 substream     : 20;
529ffb0abd7SSunil Goutham 	u64 wqe_aura      : 20;
530ffb0abd7SSunil Goutham 	u64 spb_aura      : 20;
531ffb0abd7SSunil Goutham 	u64 lpb_aura      : 20;
532ffb0abd7SSunil Goutham 	u64 sso_grp       : 10;
533ffb0abd7SSunil Goutham 	u64 sso_tt        : 2;
534ffb0abd7SSunil Goutham 	u64 pb_caching    : 2;
535ffb0abd7SSunil Goutham 	u64 wqe_caching   : 1;
536ffb0abd7SSunil Goutham 	u64 xqe_drop_ena  : 1;
537ffb0abd7SSunil Goutham 	u64 spb_drop_ena  : 1;
538ffb0abd7SSunil Goutham 	u64 lpb_drop_ena  : 1;
539ffb0abd7SSunil Goutham 	u64 rsvd_127_122  : 6;
54030077d21SGeetha sowjanya 	u64 rsvd_139_128  : 12; /* W2 */
541ffb0abd7SSunil Goutham 	u64 spb_sizem1    : 6;
542ffb0abd7SSunil Goutham 	u64 wqe_skip      : 2;
543ffb0abd7SSunil Goutham 	u64 rsvd_150_148  : 3;
544ffb0abd7SSunil Goutham 	u64 spb_ena       : 1;
545ffb0abd7SSunil Goutham 	u64 lpb_sizem1    : 12;
546ffb0abd7SSunil Goutham 	u64 first_skip    : 7;
547ffb0abd7SSunil Goutham 	u64 rsvd_171      : 1;
548ffb0abd7SSunil Goutham 	u64 later_skip    : 6;
549ffb0abd7SSunil Goutham 	u64 xqe_imm_size  : 6;
550ffb0abd7SSunil Goutham 	u64 rsvd_189_184  : 6;
551ffb0abd7SSunil Goutham 	u64 xqe_imm_copy  : 1;
552ffb0abd7SSunil Goutham 	u64 xqe_hdr_split : 1;
55330077d21SGeetha sowjanya 	u64 xqe_drop      : 8; /* W3*/
554ffb0abd7SSunil Goutham 	u64 xqe_pass      : 8;
555ffb0abd7SSunil Goutham 	u64 wqe_pool_drop : 8;
556ffb0abd7SSunil Goutham 	u64 wqe_pool_pass : 8;
557ffb0abd7SSunil Goutham 	u64 spb_aura_drop : 8;
558ffb0abd7SSunil Goutham 	u64 spb_aura_pass : 8;
559ffb0abd7SSunil Goutham 	u64 spb_pool_drop : 8;
560ffb0abd7SSunil Goutham 	u64 spb_pool_pass : 8;
56130077d21SGeetha sowjanya 	u64 lpb_aura_drop : 8; /* W4 */
562ffb0abd7SSunil Goutham 	u64 lpb_aura_pass : 8;
563ffb0abd7SSunil Goutham 	u64 lpb_pool_drop : 8;
564ffb0abd7SSunil Goutham 	u64 lpb_pool_pass : 8;
565ffb0abd7SSunil Goutham 	u64 rsvd_291_288  : 4;
566ffb0abd7SSunil Goutham 	u64 rq_int        : 8;
567ffb0abd7SSunil Goutham 	u64 rq_int_ena    : 8;
568ffb0abd7SSunil Goutham 	u64 qint_idx      : 7;
569ffb0abd7SSunil Goutham 	u64 rsvd_319_315  : 5;
57030077d21SGeetha sowjanya 	u64 ltag          : 24; /* W5 */
571ffb0abd7SSunil Goutham 	u64 good_utag     : 8;
572ffb0abd7SSunil Goutham 	u64 bad_utag      : 8;
573ffb0abd7SSunil Goutham 	u64 flow_tagw     : 6;
574ffb0abd7SSunil Goutham 	u64 rsvd_383_366  : 18;
57530077d21SGeetha sowjanya 	u64 octs          : 48; /* W6 */
576ffb0abd7SSunil Goutham 	u64 rsvd_447_432  : 16;
57730077d21SGeetha sowjanya 	u64 pkts          : 48; /* W7 */
578ffb0abd7SSunil Goutham 	u64 rsvd_511_496  : 16;
57930077d21SGeetha sowjanya 	u64 drop_octs     : 48; /* W8 */
580ffb0abd7SSunil Goutham 	u64 rsvd_575_560  : 16;
58130077d21SGeetha sowjanya 	u64 drop_pkts     : 48; /* W9 */
582ffb0abd7SSunil Goutham 	u64 rsvd_639_624  : 16;
58330077d21SGeetha sowjanya 	u64 re_pkts       : 48; /* W10 */
584ffb0abd7SSunil Goutham 	u64 rsvd_703_688  : 16;
585ffb0abd7SSunil Goutham 	u64 rsvd_767_704;		/* W11 */
586ffb0abd7SSunil Goutham 	u64 rsvd_831_768;		/* W12 */
587ffb0abd7SSunil Goutham 	u64 rsvd_895_832;		/* W13 */
588ffb0abd7SSunil Goutham 	u64 rsvd_959_896;		/* W14 */
589ffb0abd7SSunil Goutham 	u64 rsvd_1023_960;		/* W15 */
590ffb0abd7SSunil Goutham };
591ffb0abd7SSunil Goutham 
592ffb0abd7SSunil Goutham /* NIX sqe sizes */
593ffb0abd7SSunil Goutham enum nix_maxsqesz {
594ffb0abd7SSunil Goutham 	NIX_MAXSQESZ_W16 = 0x0,
595ffb0abd7SSunil Goutham 	NIX_MAXSQESZ_W8  = 0x1,
596ffb0abd7SSunil Goutham };
597ffb0abd7SSunil Goutham 
598ffb0abd7SSunil Goutham /* NIX SQB caching type */
599ffb0abd7SSunil Goutham enum nix_stype {
600ffb0abd7SSunil Goutham 	NIX_STYPE_STF = 0x0,
601ffb0abd7SSunil Goutham 	NIX_STYPE_STT = 0x1,
602ffb0abd7SSunil Goutham 	NIX_STYPE_STP = 0x2,
603ffb0abd7SSunil Goutham };
604ffb0abd7SSunil Goutham 
605ffb0abd7SSunil Goutham /* NIX Send queue context structure */
606ffb0abd7SSunil Goutham struct nix_sq_ctx_s {
607ffb0abd7SSunil Goutham 	u64 ena                   : 1;
608ffb0abd7SSunil Goutham 	u64 qint_idx              : 6;
609ffb0abd7SSunil Goutham 	u64 substream             : 20;
610ffb0abd7SSunil Goutham 	u64 sdp_mcast             : 1;
611ffb0abd7SSunil Goutham 	u64 cq                    : 20;
612ffb0abd7SSunil Goutham 	u64 sqe_way_mask          : 16;
613ffb0abd7SSunil Goutham 	u64 smq                   : 9;
614ffb0abd7SSunil Goutham 	u64 cq_ena                : 1;
615ffb0abd7SSunil Goutham 	u64 xoff                  : 1;
616ffb0abd7SSunil Goutham 	u64 sso_ena               : 1;
617ffb0abd7SSunil Goutham 	u64 smq_rr_quantum        : 24;
618ffb0abd7SSunil Goutham 	u64 default_chan          : 12;
619ffb0abd7SSunil Goutham 	u64 sqb_count             : 16;
620ffb0abd7SSunil Goutham 	u64 smq_rr_count          : 25;
621ffb0abd7SSunil Goutham 	u64 sqb_aura              : 20;
622ffb0abd7SSunil Goutham 	u64 sq_int                : 8;
623ffb0abd7SSunil Goutham 	u64 sq_int_ena            : 8;
624ffb0abd7SSunil Goutham 	u64 sqe_stype             : 2;
625ffb0abd7SSunil Goutham 	u64 rsvd_191              : 1;
626ffb0abd7SSunil Goutham 	u64 max_sqe_size          : 2;
627ffb0abd7SSunil Goutham 	u64 cq_limit              : 8;
628ffb0abd7SSunil Goutham 	u64 lmt_dis               : 1;
629ffb0abd7SSunil Goutham 	u64 mnq_dis               : 1;
630ffb0abd7SSunil Goutham 	u64 smq_next_sq           : 20;
631ffb0abd7SSunil Goutham 	u64 smq_lso_segnum        : 8;
632ffb0abd7SSunil Goutham 	u64 tail_offset           : 6;
633ffb0abd7SSunil Goutham 	u64 smenq_offset          : 6;
634ffb0abd7SSunil Goutham 	u64 head_offset           : 6;
635ffb0abd7SSunil Goutham 	u64 smenq_next_sqb_vld    : 1;
636ffb0abd7SSunil Goutham 	u64 smq_pend              : 1;
637ffb0abd7SSunil Goutham 	u64 smq_next_sq_vld       : 1;
638ffb0abd7SSunil Goutham 	u64 rsvd_255_253          : 3;
639ffb0abd7SSunil Goutham 	u64 next_sqb              : 64;/* W4 */
640ffb0abd7SSunil Goutham 	u64 tail_sqb              : 64;/* W5 */
641ffb0abd7SSunil Goutham 	u64 smenq_sqb             : 64;/* W6 */
642ffb0abd7SSunil Goutham 	u64 smenq_next_sqb        : 64;/* W7 */
643ffb0abd7SSunil Goutham 	u64 head_sqb              : 64;/* W8 */
644ffb0abd7SSunil Goutham 	u64 rsvd_583_576          : 8;
645ffb0abd7SSunil Goutham 	u64 vfi_lso_total         : 18;
646ffb0abd7SSunil Goutham 	u64 vfi_lso_sizem1        : 3;
647ffb0abd7SSunil Goutham 	u64 vfi_lso_sb            : 8;
648ffb0abd7SSunil Goutham 	u64 vfi_lso_mps           : 14;
649ffb0abd7SSunil Goutham 	u64 vfi_lso_vlan0_ins_ena : 1;
650ffb0abd7SSunil Goutham 	u64 vfi_lso_vlan1_ins_ena : 1;
651ffb0abd7SSunil Goutham 	u64 vfi_lso_vld           : 1;
652ffb0abd7SSunil Goutham 	u64 rsvd_639_630          : 10;
653ffb0abd7SSunil Goutham 	u64 scm_lso_rem           : 18;
654ffb0abd7SSunil Goutham 	u64 rsvd_703_658          : 46;
655ffb0abd7SSunil Goutham 	u64 octs                  : 48;
656ffb0abd7SSunil Goutham 	u64 rsvd_767_752          : 16;
657ffb0abd7SSunil Goutham 	u64 pkts                  : 48;
658ffb0abd7SSunil Goutham 	u64 rsvd_831_816          : 16;
659ffb0abd7SSunil Goutham 	u64 rsvd_895_832          : 64;/* W13 */
660ffb0abd7SSunil Goutham 	u64 dropped_octs          : 48;
661ffb0abd7SSunil Goutham 	u64 rsvd_959_944          : 16;
662ffb0abd7SSunil Goutham 	u64 dropped_pkts          : 48;
663ffb0abd7SSunil Goutham 	u64 rsvd_1023_1008        : 16;
664ffb0abd7SSunil Goutham };
665ffb0abd7SSunil Goutham 
666ffb0abd7SSunil Goutham /* NIX Receive side scaling entry structure*/
667ffb0abd7SSunil Goutham struct nix_rsse_s {
668ffb0abd7SSunil Goutham 	uint32_t rq			: 20;
669ffb0abd7SSunil Goutham 	uint32_t reserved_20_31		: 12;
670ffb0abd7SSunil Goutham 
671ffb0abd7SSunil Goutham };
672ffb0abd7SSunil Goutham 
673ffb0abd7SSunil Goutham /* NIX receive multicast/mirror entry structure */
674ffb0abd7SSunil Goutham struct nix_rx_mce_s {
675ffb0abd7SSunil Goutham 	uint64_t op         : 2;
676ffb0abd7SSunil Goutham 	uint64_t rsvd_2     : 1;
677ffb0abd7SSunil Goutham 	uint64_t eol        : 1;
678ffb0abd7SSunil Goutham 	uint64_t index      : 20;
679ffb0abd7SSunil Goutham 	uint64_t rsvd_31_24 : 8;
680ffb0abd7SSunil Goutham 	uint64_t pf_func    : 16;
681ffb0abd7SSunil Goutham 	uint64_t next       : 16;
682ffb0abd7SSunil Goutham };
683ffb0abd7SSunil Goutham 
684e8e095b3SSunil Goutham enum nix_band_prof_layers {
685e8e095b3SSunil Goutham 	BAND_PROF_LEAF_LAYER = 0,
686e8e095b3SSunil Goutham 	BAND_PROF_INVAL_LAYER = 1,
687e8e095b3SSunil Goutham 	BAND_PROF_MID_LAYER = 2,
688e8e095b3SSunil Goutham 	BAND_PROF_TOP_LAYER = 3,
689e8e095b3SSunil Goutham 	BAND_PROF_NUM_LAYERS = 4,
690e8e095b3SSunil Goutham };
691e8e095b3SSunil Goutham 
692e8e095b3SSunil Goutham enum NIX_RX_BAND_PROF_ACTIONRESULT_E {
693e8e095b3SSunil Goutham 	NIX_RX_BAND_PROF_ACTIONRESULT_PASS = 0x0,
694e8e095b3SSunil Goutham 	NIX_RX_BAND_PROF_ACTIONRESULT_DROP = 0x1,
695e8e095b3SSunil Goutham 	NIX_RX_BAND_PROF_ACTIONRESULT_RED = 0x2,
696e8e095b3SSunil Goutham };
697e8e095b3SSunil Goutham 
698e7d89717SSunil Goutham enum nix_band_prof_pc_mode {
699e7d89717SSunil Goutham 	NIX_RX_PC_MODE_VLAN = 0,
700e7d89717SSunil Goutham 	NIX_RX_PC_MODE_DSCP = 1,
701e7d89717SSunil Goutham 	NIX_RX_PC_MODE_GEN = 2,
702e7d89717SSunil Goutham 	NIX_RX_PC_MODE_RSVD = 3,
703e7d89717SSunil Goutham };
704e7d89717SSunil Goutham 
705e8e095b3SSunil Goutham /* NIX ingress policer bandwidth profile structure */
706e8e095b3SSunil Goutham struct nix_bandprof_s {
707e8e095b3SSunil Goutham 	uint64_t pc_mode                     :  2; /* W0 */
708e8e095b3SSunil Goutham 	uint64_t icolor                      :  2;
709e8e095b3SSunil Goutham 	uint64_t tnl_ena                     :  1;
710e8e095b3SSunil Goutham 	uint64_t reserved_5_7                :  3;
711e8e095b3SSunil Goutham 	uint64_t peir_exponent               :  5;
712e8e095b3SSunil Goutham 	uint64_t reserved_13_15              :  3;
713e8e095b3SSunil Goutham 	uint64_t pebs_exponent               :  5;
714e8e095b3SSunil Goutham 	uint64_t reserved_21_23              :  3;
715e8e095b3SSunil Goutham 	uint64_t cir_exponent                :  5;
716e8e095b3SSunil Goutham 	uint64_t reserved_29_31              :  3;
717e8e095b3SSunil Goutham 	uint64_t cbs_exponent                :  5;
718e8e095b3SSunil Goutham 	uint64_t reserved_37_39              :  3;
719e8e095b3SSunil Goutham 	uint64_t peir_mantissa               :  8;
720e8e095b3SSunil Goutham 	uint64_t pebs_mantissa               :  8;
721e8e095b3SSunil Goutham 	uint64_t cir_mantissa                :  8;
722e8e095b3SSunil Goutham 	uint64_t cbs_mantissa                :  8; /* W1 */
723e8e095b3SSunil Goutham 	uint64_t lmode                       :  1;
724e8e095b3SSunil Goutham 	uint64_t l_sellect                   :  3;
725e8e095b3SSunil Goutham 	uint64_t rdiv                        :  4;
726e8e095b3SSunil Goutham 	uint64_t adjust_exponent             :  5;
727e8e095b3SSunil Goutham 	uint64_t reserved_85_86              :  2;
728e8e095b3SSunil Goutham 	uint64_t adjust_mantissa             :  9;
729e8e095b3SSunil Goutham 	uint64_t gc_action                   :  2;
730e8e095b3SSunil Goutham 	uint64_t yc_action                   :  2;
731e8e095b3SSunil Goutham 	uint64_t rc_action                   :  2;
732e8e095b3SSunil Goutham 	uint64_t meter_algo                  :  2;
733e8e095b3SSunil Goutham 	uint64_t band_prof_id                :  7;
734e8e095b3SSunil Goutham 	uint64_t reserved_111_118            :  8;
735e8e095b3SSunil Goutham 	uint64_t hl_en                       :  1;
736e8e095b3SSunil Goutham 	uint64_t reserved_120_127            :  8;
737e8e095b3SSunil Goutham 	uint64_t ts                          : 48; /* W2 */
738e8e095b3SSunil Goutham 	uint64_t reserved_176_191            : 16;
739e8e095b3SSunil Goutham 	uint64_t pe_accum                    : 32; /* W3 */
740e8e095b3SSunil Goutham 	uint64_t c_accum                     : 32;
741e8e095b3SSunil Goutham 	uint64_t green_pkt_pass              : 48; /* W4 */
742e8e095b3SSunil Goutham 	uint64_t reserved_304_319            : 16;
743e8e095b3SSunil Goutham 	uint64_t yellow_pkt_pass             : 48; /* W5 */
744e8e095b3SSunil Goutham 	uint64_t reserved_368_383            : 16;
745e8e095b3SSunil Goutham 	uint64_t red_pkt_pass                : 48; /* W6 */
746e8e095b3SSunil Goutham 	uint64_t reserved_432_447            : 16;
747e8e095b3SSunil Goutham 	uint64_t green_octs_pass             : 48; /* W7 */
748e8e095b3SSunil Goutham 	uint64_t reserved_496_511            : 16;
749e8e095b3SSunil Goutham 	uint64_t yellow_octs_pass            : 48; /* W8 */
750e8e095b3SSunil Goutham 	uint64_t reserved_560_575            : 16;
751e8e095b3SSunil Goutham 	uint64_t red_octs_pass               : 48; /* W9 */
752e8e095b3SSunil Goutham 	uint64_t reserved_624_639            : 16;
753e8e095b3SSunil Goutham 	uint64_t green_pkt_drop              : 48; /* W10 */
754e8e095b3SSunil Goutham 	uint64_t reserved_688_703            : 16;
755e8e095b3SSunil Goutham 	uint64_t yellow_pkt_drop             : 48; /* W11 */
756e8e095b3SSunil Goutham 	uint64_t reserved_752_767            : 16;
757e8e095b3SSunil Goutham 	uint64_t red_pkt_drop                : 48; /* W12 */
758e8e095b3SSunil Goutham 	uint64_t reserved_816_831            : 16;
759e8e095b3SSunil Goutham 	uint64_t green_octs_drop             : 48; /* W13 */
760e8e095b3SSunil Goutham 	uint64_t reserved_880_895            : 16;
761e8e095b3SSunil Goutham 	uint64_t yellow_octs_drop            : 48; /* W14 */
762e8e095b3SSunil Goutham 	uint64_t reserved_944_959            : 16;
763e8e095b3SSunil Goutham 	uint64_t red_octs_drop               : 48; /* W15 */
764e8e095b3SSunil Goutham 	uint64_t reserved_1008_1023          : 16;
765e8e095b3SSunil Goutham };
766e8e095b3SSunil Goutham 
76759360e98SSunil Goutham enum nix_lsoalg {
76859360e98SSunil Goutham 	NIX_LSOALG_NOP,
76959360e98SSunil Goutham 	NIX_LSOALG_ADD_SEGNUM,
77059360e98SSunil Goutham 	NIX_LSOALG_ADD_PAYLEN,
77159360e98SSunil Goutham 	NIX_LSOALG_ADD_OFFSET,
77259360e98SSunil Goutham 	NIX_LSOALG_TCP_FLAGS,
77359360e98SSunil Goutham };
77459360e98SSunil Goutham 
77559360e98SSunil Goutham enum nix_txlayer {
77659360e98SSunil Goutham 	NIX_TXLAYER_OL3,
77759360e98SSunil Goutham 	NIX_TXLAYER_OL4,
77859360e98SSunil Goutham 	NIX_TXLAYER_IL3,
77959360e98SSunil Goutham 	NIX_TXLAYER_IL4,
78059360e98SSunil Goutham };
78159360e98SSunil Goutham 
78259360e98SSunil Goutham struct nix_lso_format {
78359360e98SSunil Goutham 	u64 offset		: 8;
78459360e98SSunil Goutham 	u64 layer		: 2;
78559360e98SSunil Goutham 	u64 rsvd_10_11		: 2;
78659360e98SSunil Goutham 	u64 sizem1		: 2;
78759360e98SSunil Goutham 	u64 rsvd_14_15		: 2;
78859360e98SSunil Goutham 	u64 alg			: 3;
78959360e98SSunil Goutham 	u64 rsvd_19_63		: 45;
79059360e98SSunil Goutham };
79159360e98SSunil Goutham 
79241a7aa7bSSunil Goutham struct nix_rx_flowkey_alg {
79341a7aa7bSSunil Goutham 	u64 key_offset		:6;
79441a7aa7bSSunil Goutham 	u64 ln_mask		:1;
79541a7aa7bSSunil Goutham 	u64 fn_mask		:1;
79641a7aa7bSSunil Goutham 	u64 hdr_offset		:8;
79741a7aa7bSSunil Goutham 	u64 bytesm1		:5;
79841a7aa7bSSunil Goutham 	u64 lid			:3;
79941a7aa7bSSunil Goutham 	u64 reserved_24_24	:1;
80041a7aa7bSSunil Goutham 	u64 ena			:1;
80141a7aa7bSSunil Goutham 	u64 sel_chan		:1;
80241a7aa7bSSunil Goutham 	u64 ltype_mask		:4;
80341a7aa7bSSunil Goutham 	u64 ltype_match		:4;
80441a7aa7bSSunil Goutham 	u64 reserved_35_63	:29;
80541a7aa7bSSunil Goutham };
80641a7aa7bSSunil Goutham 
807d02913d9SVamsi Attunuru /* NIX VTAG size */
808d02913d9SVamsi Attunuru enum nix_vtag_size {
809d02913d9SVamsi Attunuru 	VTAGSIZE_T4   = 0x0,
810d02913d9SVamsi Attunuru 	VTAGSIZE_T8   = 0x1,
811d02913d9SVamsi Attunuru };
812f0c2982aSNaveen Mamindlapalli 
813f0c2982aSNaveen Mamindlapalli enum nix_tx_vtag_op {
814f0c2982aSNaveen Mamindlapalli 	NOP		= 0x0,
815f0c2982aSNaveen Mamindlapalli 	VTAG_INSERT	= 0x1,
816f0c2982aSNaveen Mamindlapalli 	VTAG_REPLACE	= 0x2,
817f0c2982aSNaveen Mamindlapalli };
818f0c2982aSNaveen Mamindlapalli 
819f0c2982aSNaveen Mamindlapalli /* NIX RX VTAG actions */
820f0c2982aSNaveen Mamindlapalli #define VTAG_STRIP	BIT_ULL(4)
821f0c2982aSNaveen Mamindlapalli #define VTAG_CAPTURE	BIT_ULL(5)
822f0c2982aSNaveen Mamindlapalli 
82354d55781SSunil Goutham #endif /* RVU_STRUCT_H */
824