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