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