1*636b2cfeSOleksandr Kolomeiets /* 2*636b2cfeSOleksandr Kolomeiets * SPDX-License-Identifier: BSD-3-Clause 3*636b2cfeSOleksandr Kolomeiets * Copyright(c) 2023 Napatech A/S 4*636b2cfeSOleksandr Kolomeiets */ 5*636b2cfeSOleksandr Kolomeiets 6*636b2cfeSOleksandr Kolomeiets #ifndef _HW_MOD_CAT_V18_H_ 7*636b2cfeSOleksandr Kolomeiets #define _HW_MOD_CAT_V18_H_ 8*636b2cfeSOleksandr Kolomeiets 9*636b2cfeSOleksandr Kolomeiets #include <stdint.h> 10*636b2cfeSOleksandr Kolomeiets 11*636b2cfeSOleksandr Kolomeiets struct cat_v18_cfn_s { 12*636b2cfeSOleksandr Kolomeiets uint32_t enable; 13*636b2cfeSOleksandr Kolomeiets uint32_t inv; 14*636b2cfeSOleksandr Kolomeiets /* protocol checks */ 15*636b2cfeSOleksandr Kolomeiets uint32_t ptc_inv; 16*636b2cfeSOleksandr Kolomeiets uint32_t ptc_isl; 17*636b2cfeSOleksandr Kolomeiets uint32_t ptc_cfp; 18*636b2cfeSOleksandr Kolomeiets uint32_t ptc_mac; 19*636b2cfeSOleksandr Kolomeiets uint32_t ptc_l2; 20*636b2cfeSOleksandr Kolomeiets uint32_t ptc_vntag; 21*636b2cfeSOleksandr Kolomeiets uint32_t ptc_vlan; 22*636b2cfeSOleksandr Kolomeiets uint32_t ptc_mpls; 23*636b2cfeSOleksandr Kolomeiets uint32_t ptc_l3; 24*636b2cfeSOleksandr Kolomeiets uint32_t ptc_frag; 25*636b2cfeSOleksandr Kolomeiets uint32_t ptc_ip_prot; 26*636b2cfeSOleksandr Kolomeiets uint32_t ptc_l4; 27*636b2cfeSOleksandr Kolomeiets uint32_t ptc_tunnel; 28*636b2cfeSOleksandr Kolomeiets uint32_t ptc_tnl_l2; 29*636b2cfeSOleksandr Kolomeiets uint32_t ptc_tnl_vlan; 30*636b2cfeSOleksandr Kolomeiets uint32_t ptc_tnl_mpls; 31*636b2cfeSOleksandr Kolomeiets uint32_t ptc_tnl_l3; 32*636b2cfeSOleksandr Kolomeiets uint32_t ptc_tnl_frag; 33*636b2cfeSOleksandr Kolomeiets uint32_t ptc_tnl_ip_prot; 34*636b2cfeSOleksandr Kolomeiets uint32_t ptc_tnl_l4; 35*636b2cfeSOleksandr Kolomeiets /* error checks */ 36*636b2cfeSOleksandr Kolomeiets uint32_t err_inv; 37*636b2cfeSOleksandr Kolomeiets uint32_t err_cv; 38*636b2cfeSOleksandr Kolomeiets uint32_t err_fcs; 39*636b2cfeSOleksandr Kolomeiets uint32_t err_trunc; 40*636b2cfeSOleksandr Kolomeiets uint32_t err_l3_cs; 41*636b2cfeSOleksandr Kolomeiets uint32_t err_l4_cs; 42*636b2cfeSOleksandr Kolomeiets /* in port */ 43*636b2cfeSOleksandr Kolomeiets uint32_t mac_port; 44*636b2cfeSOleksandr Kolomeiets /* pattern matcher */ 45*636b2cfeSOleksandr Kolomeiets uint32_t pm_cmp[2]; 46*636b2cfeSOleksandr Kolomeiets uint32_t pm_dct; 47*636b2cfeSOleksandr Kolomeiets uint32_t pm_ext_inv; 48*636b2cfeSOleksandr Kolomeiets uint32_t pm_cmb; 49*636b2cfeSOleksandr Kolomeiets uint32_t pm_and_inv; 50*636b2cfeSOleksandr Kolomeiets uint32_t pm_or_inv; 51*636b2cfeSOleksandr Kolomeiets uint32_t pm_inv; 52*636b2cfeSOleksandr Kolomeiets uint32_t lc; 53*636b2cfeSOleksandr Kolomeiets uint32_t lc_inv; 54*636b2cfeSOleksandr Kolomeiets uint32_t km_or; 55*636b2cfeSOleksandr Kolomeiets }; 56*636b2cfeSOleksandr Kolomeiets 57*636b2cfeSOleksandr Kolomeiets struct cat_v18_kce_s { 58*636b2cfeSOleksandr Kolomeiets uint32_t enable_bm; 59*636b2cfeSOleksandr Kolomeiets }; 60*636b2cfeSOleksandr Kolomeiets 61*636b2cfeSOleksandr Kolomeiets struct cat_v18_kcs_s { 62*636b2cfeSOleksandr Kolomeiets uint32_t category; 63*636b2cfeSOleksandr Kolomeiets }; 64*636b2cfeSOleksandr Kolomeiets 65*636b2cfeSOleksandr Kolomeiets struct cat_v18_fte_s { 66*636b2cfeSOleksandr Kolomeiets uint32_t enable_bm; 67*636b2cfeSOleksandr Kolomeiets }; 68*636b2cfeSOleksandr Kolomeiets 69*636b2cfeSOleksandr Kolomeiets struct cat_v18_cte_s { 70*636b2cfeSOleksandr Kolomeiets union { 71*636b2cfeSOleksandr Kolomeiets uint32_t enable_bm; 72*636b2cfeSOleksandr Kolomeiets struct { 73*636b2cfeSOleksandr Kolomeiets uint32_t col : 1; 74*636b2cfeSOleksandr Kolomeiets uint32_t cor : 1; 75*636b2cfeSOleksandr Kolomeiets uint32_t hsh : 1; 76*636b2cfeSOleksandr Kolomeiets uint32_t qsl : 1; 77*636b2cfeSOleksandr Kolomeiets uint32_t ipf : 1; 78*636b2cfeSOleksandr Kolomeiets uint32_t slc : 1; 79*636b2cfeSOleksandr Kolomeiets uint32_t pdb : 1; 80*636b2cfeSOleksandr Kolomeiets uint32_t msk : 1; 81*636b2cfeSOleksandr Kolomeiets uint32_t hst : 1; 82*636b2cfeSOleksandr Kolomeiets uint32_t epp : 1; 83*636b2cfeSOleksandr Kolomeiets uint32_t tpe : 1; 84*636b2cfeSOleksandr Kolomeiets } b; 85*636b2cfeSOleksandr Kolomeiets }; 86*636b2cfeSOleksandr Kolomeiets }; 87*636b2cfeSOleksandr Kolomeiets 88*636b2cfeSOleksandr Kolomeiets struct cat_v18_cts_s { 89*636b2cfeSOleksandr Kolomeiets uint32_t cat_a; 90*636b2cfeSOleksandr Kolomeiets uint32_t cat_b; 91*636b2cfeSOleksandr Kolomeiets }; 92*636b2cfeSOleksandr Kolomeiets 93*636b2cfeSOleksandr Kolomeiets struct cat_v18_cot_s { 94*636b2cfeSOleksandr Kolomeiets uint32_t color; 95*636b2cfeSOleksandr Kolomeiets uint32_t km; 96*636b2cfeSOleksandr Kolomeiets }; 97*636b2cfeSOleksandr Kolomeiets 98*636b2cfeSOleksandr Kolomeiets struct cat_v18_cct_s { 99*636b2cfeSOleksandr Kolomeiets uint32_t color; 100*636b2cfeSOleksandr Kolomeiets uint32_t km; 101*636b2cfeSOleksandr Kolomeiets }; 102*636b2cfeSOleksandr Kolomeiets 103*636b2cfeSOleksandr Kolomeiets struct cat_v18_exo_s { 104*636b2cfeSOleksandr Kolomeiets uint32_t dyn; 105*636b2cfeSOleksandr Kolomeiets int32_t ofs; 106*636b2cfeSOleksandr Kolomeiets }; 107*636b2cfeSOleksandr Kolomeiets 108*636b2cfeSOleksandr Kolomeiets struct cat_v18_rck_s { 109*636b2cfeSOleksandr Kolomeiets uint32_t rck_data; 110*636b2cfeSOleksandr Kolomeiets }; 111*636b2cfeSOleksandr Kolomeiets 112*636b2cfeSOleksandr Kolomeiets struct cat_v18_len_s { 113*636b2cfeSOleksandr Kolomeiets uint32_t lower; 114*636b2cfeSOleksandr Kolomeiets uint32_t upper; 115*636b2cfeSOleksandr Kolomeiets uint32_t dyn1; 116*636b2cfeSOleksandr Kolomeiets uint32_t dyn2; 117*636b2cfeSOleksandr Kolomeiets uint32_t inv; 118*636b2cfeSOleksandr Kolomeiets }; 119*636b2cfeSOleksandr Kolomeiets 120*636b2cfeSOleksandr Kolomeiets struct cat_v18_kcc_s { 121*636b2cfeSOleksandr Kolomeiets uint32_t key[2]; 122*636b2cfeSOleksandr Kolomeiets uint32_t category; 123*636b2cfeSOleksandr Kolomeiets uint32_t id; 124*636b2cfeSOleksandr Kolomeiets }; 125*636b2cfeSOleksandr Kolomeiets 126*636b2cfeSOleksandr Kolomeiets struct hw_mod_cat_v18_s { 127*636b2cfeSOleksandr Kolomeiets struct cat_v18_cfn_s *cfn; 128*636b2cfeSOleksandr Kolomeiets struct cat_v18_kce_s *kce; 129*636b2cfeSOleksandr Kolomeiets struct cat_v18_kcs_s *kcs; 130*636b2cfeSOleksandr Kolomeiets struct cat_v18_fte_s *fte; 131*636b2cfeSOleksandr Kolomeiets struct cat_v18_cte_s *cte; 132*636b2cfeSOleksandr Kolomeiets struct cat_v18_cts_s *cts; 133*636b2cfeSOleksandr Kolomeiets struct cat_v18_cot_s *cot; 134*636b2cfeSOleksandr Kolomeiets struct cat_v18_cct_s *cct; 135*636b2cfeSOleksandr Kolomeiets struct cat_v18_exo_s *exo; 136*636b2cfeSOleksandr Kolomeiets struct cat_v18_rck_s *rck; 137*636b2cfeSOleksandr Kolomeiets struct cat_v18_len_s *len; 138*636b2cfeSOleksandr Kolomeiets struct cat_v18_kcc_s *kcc_cam; 139*636b2cfeSOleksandr Kolomeiets }; 140*636b2cfeSOleksandr Kolomeiets 141*636b2cfeSOleksandr Kolomeiets #endif /* _HW_MOD_CAT_V18_H_ */ 142