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