1 /* 2 * SPDX-License-Identifier: BSD-3-Clause 3 * Copyright(c) 2023 Napatech A/S 4 */ 5 6 #ifndef _HW_MOD_TPE_V3_H_ 7 #define _HW_MOD_TPE_V3_H_ 8 9 #include <stdint.h> 10 11 struct tpe_v1_rpp_v0_rcp_s { 12 uint32_t exp; 13 }; 14 15 struct tpe_v1_ins_v1_rcp_s { 16 uint32_t dyn; 17 uint32_t ofs; 18 uint32_t len; 19 }; 20 21 struct tpe_v3_rpl_v4_rcp_s { 22 uint32_t dyn; 23 uint32_t ofs; 24 uint32_t len; 25 uint32_t rpl_ptr; 26 uint32_t ext_prio; 27 uint32_t eth_type_wr; 28 }; 29 30 struct tpe_v1_rpl_v2_ext_s { 31 uint32_t rpl_ptr; 32 uint32_t meta_rpl_len; /* SW only */ 33 }; 34 35 struct tpe_v1_rpl_v2_rpl_s { 36 uint32_t value[4]; 37 }; 38 39 struct tpe_v1_cpy_v1_rcp_s { 40 uint32_t reader_select; 41 uint32_t dyn; 42 uint32_t ofs; 43 uint32_t len; 44 }; 45 46 struct tpe_v1_hfu_v1_rcp_s { 47 uint32_t len_a_wr; 48 uint32_t len_a_outer_l4_len; 49 uint32_t len_a_pos_dyn; 50 uint32_t len_a_pos_ofs; 51 uint32_t len_a_add_dyn; 52 uint32_t len_a_add_ofs; 53 uint32_t len_a_sub_dyn; 54 55 uint32_t len_b_wr; 56 uint32_t len_b_pos_dyn; 57 uint32_t len_b_pos_ofs; 58 uint32_t len_b_add_dyn; 59 uint32_t len_b_add_ofs; 60 uint32_t len_b_sub_dyn; 61 62 uint32_t len_c_wr; 63 uint32_t len_c_pos_dyn; 64 uint32_t len_c_pos_ofs; 65 uint32_t len_c_add_dyn; 66 uint32_t len_c_add_ofs; 67 uint32_t len_c_sub_dyn; 68 69 uint32_t ttl_wr; 70 uint32_t ttl_pos_dyn; 71 uint32_t ttl_pos_ofs; 72 73 uint32_t cs_inf; 74 uint32_t l3_prt; 75 uint32_t l3_frag; 76 uint32_t tunnel; 77 uint32_t l4_prt; 78 uint32_t outer_l3_ofs; 79 uint32_t outer_l4_ofs; 80 uint32_t inner_l3_ofs; 81 uint32_t inner_l4_ofs; 82 }; 83 84 struct tpe_v1_csu_v0_rcp_s { 85 uint32_t ol3_cmd; 86 uint32_t ol4_cmd; 87 uint32_t il3_cmd; 88 uint32_t il4_cmd; 89 }; 90 91 struct tpe_v2_rpp_v1_ifr_rcp_s { 92 uint32_t ipv4_en; 93 uint32_t ipv4_df_drop; 94 uint32_t ipv6_en; 95 uint32_t ipv6_drop; 96 uint32_t mtu; 97 }; 98 99 struct tpe_v2_ifr_v1_rcp_s { 100 uint32_t ipv4_en; 101 uint32_t ipv4_df_drop; 102 uint32_t ipv6_en; 103 uint32_t ipv6_drop; 104 uint32_t mtu; 105 }; 106 107 struct hw_mod_tpe_v3_s { 108 struct tpe_v1_rpp_v0_rcp_s *rpp_rcp; 109 110 struct tpe_v1_ins_v1_rcp_s *ins_rcp; 111 112 struct tpe_v3_rpl_v4_rcp_s *rpl_rcp; 113 struct tpe_v1_rpl_v2_ext_s *rpl_ext; 114 struct tpe_v1_rpl_v2_rpl_s *rpl_rpl; 115 116 struct tpe_v1_cpy_v1_rcp_s *cpy_rcp; 117 118 struct tpe_v1_hfu_v1_rcp_s *hfu_rcp; 119 120 struct tpe_v1_csu_v0_rcp_s *csu_rcp; 121 122 struct tpe_v2_rpp_v1_ifr_rcp_s *rpp_ifr_rcp; 123 struct tpe_v2_ifr_v1_rcp_s *ifr_rcp; 124 }; 125 126 #endif /* _HW_MOD_TPE_V3_H_ */ 127