1b95c3413SJerin Jacob /* 2b95c3413SJerin Jacob * BSD LICENSE 3b95c3413SJerin Jacob * 4b95c3413SJerin Jacob * Copyright (C) Cavium Inc. 2017. All rights reserved. 5b95c3413SJerin Jacob * 6b95c3413SJerin Jacob * Redistribution and use in source and binary forms, with or without 7b95c3413SJerin Jacob * modification, are permitted provided that the following conditions 8b95c3413SJerin Jacob * are met: 9b95c3413SJerin Jacob * 10b95c3413SJerin Jacob * * Redistributions of source code must retain the above copyright 11b95c3413SJerin Jacob * notice, this list of conditions and the following disclaimer. 12b95c3413SJerin Jacob * * Redistributions in binary form must reproduce the above copyright 13b95c3413SJerin Jacob * notice, this list of conditions and the following disclaimer in 14b95c3413SJerin Jacob * the documentation and/or other materials provided with the 15b95c3413SJerin Jacob * distribution. 16b95c3413SJerin Jacob * * Neither the name of Cavium networks nor the names of its 17b95c3413SJerin Jacob * contributors may be used to endorse or promote products derived 18b95c3413SJerin Jacob * from this software without specific prior written permission. 19b95c3413SJerin Jacob * 20b95c3413SJerin Jacob * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21b95c3413SJerin Jacob * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22b95c3413SJerin Jacob * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23b95c3413SJerin Jacob * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24b95c3413SJerin Jacob * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25b95c3413SJerin Jacob * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26b95c3413SJerin Jacob * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27b95c3413SJerin Jacob * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28b95c3413SJerin Jacob * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29b95c3413SJerin Jacob * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30b95c3413SJerin Jacob * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31b95c3413SJerin Jacob */ 32b95c3413SJerin Jacob 33b95c3413SJerin Jacob #ifndef __OCTEONTX_PKI_H__ 34b95c3413SJerin Jacob #define __OCTEONTX_PKI_H__ 35b95c3413SJerin Jacob 36b95c3413SJerin Jacob #include <stdint.h> 37b95c3413SJerin Jacob 38*89ee1e94SSantosh Shukla #include <octeontx_mbox.h> 39b95c3413SJerin Jacob 40b95c3413SJerin Jacob #define OCTEONTX_PKI_COPROC 5 41b95c3413SJerin Jacob 42b95c3413SJerin Jacob /* PKI messages */ 43b95c3413SJerin Jacob 44b95c3413SJerin Jacob #define MBOX_PKI_PORT_OPEN 1 45b95c3413SJerin Jacob #define MBOX_PKI_PORT_START 2 46b95c3413SJerin Jacob #define MBOX_PKI_PORT_STOP 3 47b95c3413SJerin Jacob #define MBOX_PKI_PORT_CLOSE 4 486d28968eSJerin Jacob #define MBOX_PKI_PORT_CONFIG 5 496d28968eSJerin Jacob #define MBOX_PKI_PORT_OPT_PARSER_CONFIG 6 506d28968eSJerin Jacob #define MBOX_PKI_PORT_CUSTOM_PARSER_CONFIG 7 516d28968eSJerin Jacob #define MBOX_PKI_PORT_PKTBUF_CONFIG 8 526d28968eSJerin Jacob #define MBOX_PKI_PORT_HASH_CONFIG 9 536d28968eSJerin Jacob #define MBOX_PKI_PORT_ERRCHK_CONFIG 10 546d28968eSJerin Jacob #define MBOX_PKI_PORT_CREATE_QOS 11 556d28968eSJerin Jacob #define MBOX_PKI_PORT_MODIFY_QOS 12 566d28968eSJerin Jacob #define MBOX_PKI_PORT_DELETE_QOS 13 576d28968eSJerin Jacob #define MBOX_PKI_PORT_PKTDROP_CONFIG 14 586d28968eSJerin Jacob #define MBOX_PKI_PORT_WQE_GEN_CONFIG 15 596d28968eSJerin Jacob #define MBOX_PKI_BACKPRESSURE_CONFIG 16 606d28968eSJerin Jacob #define MBOX_PKI_PORT_GET_STATS 17 616d28968eSJerin Jacob #define MBOX_PKI_PORT_RESET_STATS 18 626d28968eSJerin Jacob #define MBOX_PKI_GET_PORT_CONFIG 19 636d28968eSJerin Jacob #define MBOX_PKI_GET_PORT_QOS_CONFIG 20 646d28968eSJerin Jacob 656d28968eSJerin Jacob #define MBOX_PKI_MAX_QOS_ENTRY 64 666d28968eSJerin Jacob 676d28968eSJerin Jacob /* pki pkind parse mode */ 686d28968eSJerin Jacob enum { 696d28968eSJerin Jacob MBOX_PKI_PARSE_LA_TO_LG = 0, 706d28968eSJerin Jacob MBOX_PKI_PARSE_LB_TO_LG = 1, 716d28968eSJerin Jacob MBOX_PKI_PARSE_LC_TO_LG = 3, 726d28968eSJerin Jacob MBOX_PKI_PARSE_LG = 0x3f, 736d28968eSJerin Jacob MBOX_PKI_PARSE_NOTHING = 0x7f 746d28968eSJerin Jacob }; 75b95c3413SJerin Jacob 76b95c3413SJerin Jacob /* Interface types: */ 77b95c3413SJerin Jacob enum { 78b95c3413SJerin Jacob OCTTX_PORT_TYPE_NET, /* Network interface ports */ 79b95c3413SJerin Jacob OCTTX_PORT_TYPE_INT, /* CPU internal interface ports */ 80b95c3413SJerin Jacob OCTTX_PORT_TYPE_PCI, /* DPI/PCIe interface ports */ 81b95c3413SJerin Jacob OCTTX_PORT_TYPE_MAX 82b95c3413SJerin Jacob }; 83b95c3413SJerin Jacob 84b95c3413SJerin Jacob /* pki port config */ 85b95c3413SJerin Jacob typedef struct mbox_pki_port_type { 86b95c3413SJerin Jacob uint8_t port_type; 87b95c3413SJerin Jacob } mbox_pki_port_t; 88b95c3413SJerin Jacob 896d28968eSJerin Jacob /* pki port config */ 906d28968eSJerin Jacob typedef struct mbox_pki_port_cfg { 916d28968eSJerin Jacob uint8_t port_type; 926d28968eSJerin Jacob struct { 936d28968eSJerin Jacob uint8_t fcs_pres:1; 946d28968eSJerin Jacob uint8_t fcs_skip:1; 956d28968eSJerin Jacob uint8_t parse_mode:1; 966d28968eSJerin Jacob uint8_t mpls_parse:1; 976d28968eSJerin Jacob uint8_t inst_hdr_parse:1; 986d28968eSJerin Jacob uint8_t fulc_parse:1; 996d28968eSJerin Jacob uint8_t dsa_parse:1; 1006d28968eSJerin Jacob uint8_t hg2_parse:1; 1016d28968eSJerin Jacob uint8_t hg_parse:1; 1026d28968eSJerin Jacob } mmask; 1036d28968eSJerin Jacob uint8_t fcs_pres; 1046d28968eSJerin Jacob uint8_t fcs_skip; 1056d28968eSJerin Jacob uint8_t parse_mode; 1066d28968eSJerin Jacob uint8_t mpls_parse; 1076d28968eSJerin Jacob uint8_t inst_hdr_parse; 1086d28968eSJerin Jacob uint8_t fulc_parse; 1096d28968eSJerin Jacob uint8_t dsa_parse; 1106d28968eSJerin Jacob uint8_t hg2_parse; 1116d28968eSJerin Jacob uint8_t hg_parse; 1126d28968eSJerin Jacob } mbox_pki_prt_cfg_t; 1136d28968eSJerin Jacob 1146d28968eSJerin Jacob /* pki Flow/style packet buffer config */ 1156d28968eSJerin Jacob typedef struct mbox_pki_port_pktbuf_cfg { 1166d28968eSJerin Jacob uint8_t port_type; 1176d28968eSJerin Jacob struct { 1186d28968eSJerin Jacob uint16_t f_mbuff_size:1; 1196d28968eSJerin Jacob uint16_t f_wqe_skip:1; 1206d28968eSJerin Jacob uint16_t f_first_skip:1; 1216d28968eSJerin Jacob uint16_t f_later_skip:1; 1226d28968eSJerin Jacob uint16_t f_pkt_outside_wqe:1; 1236d28968eSJerin Jacob uint16_t f_wqe_endian:1; 1246d28968eSJerin Jacob uint16_t f_cache_mode:1; 1256d28968eSJerin Jacob } mmask; 1266d28968eSJerin Jacob uint16_t mbuff_size; 1276d28968eSJerin Jacob uint16_t wqe_skip; 1286d28968eSJerin Jacob uint16_t first_skip; 1296d28968eSJerin Jacob uint16_t later_skip; 1306d28968eSJerin Jacob uint8_t pkt_outside_wqe; 1316d28968eSJerin Jacob uint8_t wqe_endian; 1326d28968eSJerin Jacob uint8_t cache_mode; 1336d28968eSJerin Jacob } mbox_pki_pktbuf_cfg_t; 1346d28968eSJerin Jacob 1356d28968eSJerin Jacob /* pki flow/style tag config */ 1366d28968eSJerin Jacob typedef struct mbox_pki_port_hash_cfg { 1376d28968eSJerin Jacob uint8_t port_type; 1386d28968eSJerin Jacob uint32_t tag_slf:1; 1396d28968eSJerin Jacob uint32_t tag_sle:1; 1406d28968eSJerin Jacob uint32_t tag_sld:1; 1416d28968eSJerin Jacob uint32_t tag_slc:1; 1426d28968eSJerin Jacob uint32_t tag_dlf:1; 1436d28968eSJerin Jacob uint32_t tag_dle:1; 1446d28968eSJerin Jacob uint32_t tag_dld:1; 1456d28968eSJerin Jacob uint32_t tag_dlc:1; 1466d28968eSJerin Jacob uint32_t tag_prt:1; 1476d28968eSJerin Jacob uint32_t tag_vlan0:1; 1486d28968eSJerin Jacob uint32_t tag_vlan1:1; 1496d28968eSJerin Jacob uint32_t tag_ip_pctl:1; 1506d28968eSJerin Jacob uint32_t tag_sync:1; 1516d28968eSJerin Jacob uint32_t tag_spi:1; 1526d28968eSJerin Jacob uint32_t tag_gtp:1; 1536d28968eSJerin Jacob uint32_t tag_vni:1; 1546d28968eSJerin Jacob } mbox_pki_hash_cfg_t; 1556d28968eSJerin Jacob 1566d28968eSJerin Jacob /* pki flow/style errcheck config */ 1576d28968eSJerin Jacob typedef struct mbox_pki_port_errcheck_cfg { 1586d28968eSJerin Jacob uint8_t port_type; 1596d28968eSJerin Jacob struct { 1606d28968eSJerin Jacob uint32_t f_ip6_udp_opt:1; 1616d28968eSJerin Jacob uint32_t f_lenerr_en:1; 1626d28968eSJerin Jacob uint32_t f_maxerr_en:1; 1636d28968eSJerin Jacob uint32_t f_minerr_en:1; 1646d28968eSJerin Jacob uint32_t f_fcs_chk:1; 1656d28968eSJerin Jacob uint32_t f_fcs_strip:1; 1666d28968eSJerin Jacob uint32_t f_len_lf:1; 1676d28968eSJerin Jacob uint32_t f_len_le:1; 1686d28968eSJerin Jacob uint32_t f_len_ld:1; 1696d28968eSJerin Jacob uint32_t f_len_lc:1; 1706d28968eSJerin Jacob uint32_t f_csum_lf:1; 1716d28968eSJerin Jacob uint32_t f_csum_le:1; 1726d28968eSJerin Jacob uint32_t f_csum_ld:1; 1736d28968eSJerin Jacob uint32_t f_csum_lc:1; 1746d28968eSJerin Jacob uint32_t f_min_frame_len; 1756d28968eSJerin Jacob uint32_t f_max_frame_len; 1766d28968eSJerin Jacob } mmask; 1776d28968eSJerin Jacob uint64_t ip6_udp_opt:1; 1786d28968eSJerin Jacob uint64_t lenerr_en:1; 1796d28968eSJerin Jacob uint64_t maxerr_en:1; 1806d28968eSJerin Jacob uint64_t minerr_en:1; 1816d28968eSJerin Jacob uint64_t fcs_chk:1; 1826d28968eSJerin Jacob uint64_t fcs_strip:1; 1836d28968eSJerin Jacob uint64_t len_lf:1; 1846d28968eSJerin Jacob uint64_t len_le:1; 1856d28968eSJerin Jacob uint64_t len_ld:1; 1866d28968eSJerin Jacob uint64_t len_lc:1; 1876d28968eSJerin Jacob uint64_t csum_lf:1; 1886d28968eSJerin Jacob uint64_t csum_le:1; 1896d28968eSJerin Jacob uint64_t csum_ld:1; 1906d28968eSJerin Jacob uint64_t csum_lc:1; 1916d28968eSJerin Jacob uint64_t min_frame_len; 1926d28968eSJerin Jacob uint64_t max_frame_len; 1936d28968eSJerin Jacob } mbox_pki_errcheck_cfg_t; 1946d28968eSJerin Jacob 1956d28968eSJerin Jacob /* CACHE MODE*/ 1966d28968eSJerin Jacob enum { 1976d28968eSJerin Jacob MBOX_PKI_OPC_MODE_STT = 0LL, 1986d28968eSJerin Jacob MBOX_PKI_OPC_MODE_STF = 1LL, 1996d28968eSJerin Jacob MBOX_PKI_OPC_MODE_STF1_STT = 2LL, 2006d28968eSJerin Jacob MBOX_PKI_OPC_MODE_STF2_STT = 3LL 2016d28968eSJerin Jacob }; 2026d28968eSJerin Jacob 2036d28968eSJerin Jacob /* PKI QPG QOS*/ 2046d28968eSJerin Jacob enum { 2056d28968eSJerin Jacob MBOX_PKI_QPG_QOS_NONE = 0, 2066d28968eSJerin Jacob MBOX_PKI_QPG_QOS_VLAN, 2076d28968eSJerin Jacob MBOX_PKI_QPG_QOS_MPLS, 2086d28968eSJerin Jacob MBOX_PKI_QPG_QOS_DSA_SRC, 2096d28968eSJerin Jacob MBOX_PKI_QPG_QOS_DIFFSERV, 2106d28968eSJerin Jacob MBOX_PKI_QPG_QOS_HIGIG, 2116d28968eSJerin Jacob }; 2126d28968eSJerin Jacob 2136d28968eSJerin Jacob struct mbox_pki_qos_entry { 2146d28968eSJerin Jacob uint16_t port_add; 2156d28968eSJerin Jacob uint16_t ggrp_ok; 2166d28968eSJerin Jacob uint16_t ggrp_bad; 2176d28968eSJerin Jacob uint16_t gaura; 2186d28968eSJerin Jacob uint8_t grptag_ok; 2196d28968eSJerin Jacob uint8_t grptag_bad; 2206d28968eSJerin Jacob }; 2216d28968eSJerin Jacob 2226d28968eSJerin Jacob /* pki flow/style enable qos */ 2236d28968eSJerin Jacob typedef struct mbox_pki_port_create_qos { 2246d28968eSJerin Jacob uint8_t port_type; 2256d28968eSJerin Jacob uint8_t qpg_qos; 2266d28968eSJerin Jacob uint8_t num_entry; 2276d28968eSJerin Jacob uint8_t tag_type; 2286d28968eSJerin Jacob uint8_t drop_policy; 2296d28968eSJerin Jacob struct mbox_pki_qos_entry qos_entry[MBOX_PKI_MAX_QOS_ENTRY]; 2306d28968eSJerin Jacob } mbox_pki_qos_cfg_t; 2316d28968eSJerin Jacob 2326d28968eSJerin Jacob /* pki flow/style enable qos */ 2336d28968eSJerin Jacob typedef struct mbox_pki_port_modify_qos_entry { 2346d28968eSJerin Jacob uint8_t port_type; 2356d28968eSJerin Jacob uint16_t index; 2366d28968eSJerin Jacob struct { 2376d28968eSJerin Jacob uint8_t f_port_add:1; 2386d28968eSJerin Jacob uint8_t f_grp_ok:1; 2396d28968eSJerin Jacob uint8_t f_grp_bad:1; 2406d28968eSJerin Jacob uint8_t f_gaura:1; 2416d28968eSJerin Jacob uint8_t f_grptag_ok:1; 2426d28968eSJerin Jacob uint8_t f_grptag_bad:1; 2436d28968eSJerin Jacob } mmask; 2446d28968eSJerin Jacob struct mbox_pki_qos_entry qos_entry; 2456d28968eSJerin Jacob } mbox_pki_mod_qos_t; 2466d28968eSJerin Jacob 2476d28968eSJerin Jacob /* PKI maximum constants */ 2486d28968eSJerin Jacob #define PKI_VF_MAX (1) 2496d28968eSJerin Jacob #define PKI_MAX_PKTLEN (32768) 2506d28968eSJerin Jacob 2516d28968eSJerin Jacob /* pki pkind parse mode */ 2526d28968eSJerin Jacob enum { 2536d28968eSJerin Jacob PKI_PARSE_LA_TO_LG = 0, 2546d28968eSJerin Jacob PKI_PARSE_LB_TO_LG = 1, 2556d28968eSJerin Jacob PKI_PARSE_LC_TO_LG = 3, 2566d28968eSJerin Jacob PKI_PARSE_LG = 0x3f, 2576d28968eSJerin Jacob PKI_PARSE_NOTHING = 0x7f 2586d28968eSJerin Jacob }; 2596d28968eSJerin Jacob 2606d28968eSJerin Jacob /* pki port config */ 2616d28968eSJerin Jacob typedef struct pki_port_cfg { 2626d28968eSJerin Jacob uint8_t port_type; 2636d28968eSJerin Jacob struct { 2646d28968eSJerin Jacob uint8_t fcs_pres:1; 2656d28968eSJerin Jacob uint8_t fcs_skip:1; 2666d28968eSJerin Jacob uint8_t parse_mode:1; 2676d28968eSJerin Jacob uint8_t mpls_parse:1; 2686d28968eSJerin Jacob uint8_t inst_hdr_parse:1; 2696d28968eSJerin Jacob uint8_t fulc_parse:1; 2706d28968eSJerin Jacob uint8_t dsa_parse:1; 2716d28968eSJerin Jacob uint8_t hg2_parse:1; 2726d28968eSJerin Jacob uint8_t hg_parse:1; 2736d28968eSJerin Jacob } mmask; 2746d28968eSJerin Jacob uint8_t fcs_pres; 2756d28968eSJerin Jacob uint8_t fcs_skip; 2766d28968eSJerin Jacob uint8_t parse_mode; 2776d28968eSJerin Jacob uint8_t mpls_parse; 2786d28968eSJerin Jacob uint8_t inst_hdr_parse; 2796d28968eSJerin Jacob uint8_t fulc_parse; 2806d28968eSJerin Jacob uint8_t dsa_parse; 2816d28968eSJerin Jacob uint8_t hg2_parse; 2826d28968eSJerin Jacob uint8_t hg_parse; 2836d28968eSJerin Jacob } pki_prt_cfg_t; 2846d28968eSJerin Jacob 2856d28968eSJerin Jacob 2866d28968eSJerin Jacob /* pki Flow/style packet buffer config */ 2876d28968eSJerin Jacob typedef struct pki_port_pktbuf_cfg { 2886d28968eSJerin Jacob uint8_t port_type; 2896d28968eSJerin Jacob struct { 2906d28968eSJerin Jacob uint16_t f_mbuff_size:1; 2916d28968eSJerin Jacob uint16_t f_wqe_skip:1; 2926d28968eSJerin Jacob uint16_t f_first_skip:1; 2936d28968eSJerin Jacob uint16_t f_later_skip:1; 2946d28968eSJerin Jacob uint16_t f_pkt_outside_wqe:1; 2956d28968eSJerin Jacob uint16_t f_wqe_endian:1; 2966d28968eSJerin Jacob uint16_t f_cache_mode:1; 2976d28968eSJerin Jacob } mmask; 2986d28968eSJerin Jacob uint16_t mbuff_size; 2996d28968eSJerin Jacob uint16_t wqe_skip; 3006d28968eSJerin Jacob uint16_t first_skip; 3016d28968eSJerin Jacob uint16_t later_skip; 3026d28968eSJerin Jacob uint8_t pkt_outside_wqe; 3036d28968eSJerin Jacob uint8_t wqe_endian; 3046d28968eSJerin Jacob uint8_t cache_mode; 3056d28968eSJerin Jacob } pki_pktbuf_cfg_t; 3066d28968eSJerin Jacob 3076d28968eSJerin Jacob /* pki flow/style tag config */ 3086d28968eSJerin Jacob typedef struct pki_port_hash_cfg { 3096d28968eSJerin Jacob uint8_t port_type; 3106d28968eSJerin Jacob uint32_t tag_slf:1; 3116d28968eSJerin Jacob uint32_t tag_sle:1; 3126d28968eSJerin Jacob uint32_t tag_sld:1; 3136d28968eSJerin Jacob uint32_t tag_slc:1; 3146d28968eSJerin Jacob uint32_t tag_dlf:1; 3156d28968eSJerin Jacob uint32_t tag_dle:1; 3166d28968eSJerin Jacob uint32_t tag_dld:1; 3176d28968eSJerin Jacob uint32_t tag_dlc:1; 3186d28968eSJerin Jacob uint32_t tag_prt:1; 3196d28968eSJerin Jacob uint32_t tag_vlan0:1; 3206d28968eSJerin Jacob uint32_t tag_vlan1:1; 3216d28968eSJerin Jacob uint32_t tag_ip_pctl:1; 3226d28968eSJerin Jacob uint32_t tag_sync:1; 3236d28968eSJerin Jacob uint32_t tag_spi:1; 3246d28968eSJerin Jacob uint32_t tag_gtp:1; 3256d28968eSJerin Jacob uint32_t tag_vni:1; 3266d28968eSJerin Jacob } pki_hash_cfg_t; 3276d28968eSJerin Jacob 3286d28968eSJerin Jacob /* pki flow/style errcheck config */ 3296d28968eSJerin Jacob typedef struct pki_port_errcheck_cfg { 3306d28968eSJerin Jacob uint8_t port_type; 3316d28968eSJerin Jacob struct { 3326d28968eSJerin Jacob uint32_t f_ip6_udp_opt:1; 3336d28968eSJerin Jacob uint32_t f_lenerr_en:1; 3346d28968eSJerin Jacob uint32_t f_maxerr_en:1; 3356d28968eSJerin Jacob uint32_t f_minerr_en:1; 3366d28968eSJerin Jacob uint32_t f_fcs_chk:1; 3376d28968eSJerin Jacob uint32_t f_fcs_strip:1; 3386d28968eSJerin Jacob uint32_t f_len_lf:1; 3396d28968eSJerin Jacob uint32_t f_len_le:1; 3406d28968eSJerin Jacob uint32_t f_len_ld:1; 3416d28968eSJerin Jacob uint32_t f_len_lc:1; 3426d28968eSJerin Jacob uint32_t f_csum_lf:1; 3436d28968eSJerin Jacob uint32_t f_csum_le:1; 3446d28968eSJerin Jacob uint32_t f_csum_ld:1; 3456d28968eSJerin Jacob uint32_t f_csum_lc:1; 3466d28968eSJerin Jacob uint32_t f_min_frame_len; 3476d28968eSJerin Jacob uint32_t f_max_frame_len; 3486d28968eSJerin Jacob } mmask; 3496d28968eSJerin Jacob uint64_t ip6_udp_opt:1; 3506d28968eSJerin Jacob uint64_t lenerr_en:1; 3516d28968eSJerin Jacob uint64_t maxerr_en:1; 3526d28968eSJerin Jacob uint64_t minerr_en:1; 3536d28968eSJerin Jacob uint64_t fcs_chk:1; 3546d28968eSJerin Jacob uint64_t fcs_strip:1; 3556d28968eSJerin Jacob uint64_t len_lf:1; 3566d28968eSJerin Jacob uint64_t len_le:1; 3576d28968eSJerin Jacob uint64_t len_ld:1; 3586d28968eSJerin Jacob uint64_t len_lc:1; 3596d28968eSJerin Jacob uint64_t csum_lf:1; 3606d28968eSJerin Jacob uint64_t csum_le:1; 3616d28968eSJerin Jacob uint64_t csum_ld:1; 3626d28968eSJerin Jacob uint64_t csum_lc:1; 3636d28968eSJerin Jacob uint64_t min_frame_len; 3646d28968eSJerin Jacob uint64_t max_frame_len; 3656d28968eSJerin Jacob } pki_errchk_cfg_t; 3666d28968eSJerin Jacob 3676d28968eSJerin Jacob 3686d28968eSJerin Jacob /* CACHE MODE*/ 3696d28968eSJerin Jacob enum { 3706d28968eSJerin Jacob PKI_OPC_MODE_STT = 0LL, 3716d28968eSJerin Jacob PKI_OPC_MODE_STF = 1LL, 3726d28968eSJerin Jacob PKI_OPC_MODE_STF1_STT = 2LL, 3736d28968eSJerin Jacob PKI_OPC_MODE_STF2_STT = 3LL 3746d28968eSJerin Jacob }; 3756d28968eSJerin Jacob 3766d28968eSJerin Jacob /* PKI QPG QOS*/ 3776d28968eSJerin Jacob enum { 3786d28968eSJerin Jacob PKI_QPG_QOS_NONE = 0, 3796d28968eSJerin Jacob PKI_QPG_QOS_VLAN, 3806d28968eSJerin Jacob PKI_QPG_QOS_MPLS, 3816d28968eSJerin Jacob PKI_QPG_QOS_DSA_SRC, 3826d28968eSJerin Jacob PKI_QPG_QOS_DIFFSERV, 3836d28968eSJerin Jacob PKI_QPG_QOS_HIGIG, 3846d28968eSJerin Jacob }; 3856d28968eSJerin Jacob 3866d28968eSJerin Jacob struct pki_qos_entry { 3876d28968eSJerin Jacob uint16_t port_add; 3886d28968eSJerin Jacob uint16_t ggrp_ok; 3896d28968eSJerin Jacob uint16_t ggrp_bad; 3906d28968eSJerin Jacob uint16_t gaura; 3916d28968eSJerin Jacob uint8_t grptag_ok; 3926d28968eSJerin Jacob uint8_t grptag_bad; 3936d28968eSJerin Jacob uint8_t ena_red; 3946d28968eSJerin Jacob uint8_t ena_drop; 3956d28968eSJerin Jacob }; 3966d28968eSJerin Jacob 3976d28968eSJerin Jacob #define PKO_MAX_QOS_ENTRY 64 3986d28968eSJerin Jacob 3996d28968eSJerin Jacob /* pki flow/style enable qos */ 4006d28968eSJerin Jacob typedef struct pki_port_create_qos { 4016d28968eSJerin Jacob uint8_t port_type; 4026d28968eSJerin Jacob uint8_t qpg_qos; 4036d28968eSJerin Jacob uint8_t num_entry; 4046d28968eSJerin Jacob uint8_t tag_type; 4056d28968eSJerin Jacob uint8_t drop_policy; 4066d28968eSJerin Jacob struct pki_qos_entry qos_entry[PKO_MAX_QOS_ENTRY]; 4076d28968eSJerin Jacob } pki_qos_cfg_t; 4086d28968eSJerin Jacob 4096d28968eSJerin Jacob /* pki flow/style enable qos */ 4106d28968eSJerin Jacob typedef struct pki_port_modify_qos_entry { 4116d28968eSJerin Jacob uint8_t port_type; 4126d28968eSJerin Jacob uint16_t index; 4136d28968eSJerin Jacob struct { 4146d28968eSJerin Jacob uint8_t f_port_add:1; 4156d28968eSJerin Jacob uint8_t f_grp_ok:1; 4166d28968eSJerin Jacob uint8_t f_grp_bad:1; 4176d28968eSJerin Jacob uint8_t f_gaura:1; 4186d28968eSJerin Jacob } mmask; 4196d28968eSJerin Jacob struct pki_qos_entry qos_entry; 4206d28968eSJerin Jacob } pki_mod_qos_t; 4216d28968eSJerin Jacob 422b95c3413SJerin Jacob int octeontx_pki_port_open(int port); 4236d28968eSJerin Jacob int octeontx_pki_port_hash_config(int port, pki_hash_cfg_t *hash_cfg); 4246d28968eSJerin Jacob int octeontx_pki_port_pktbuf_config(int port, pki_pktbuf_cfg_t *buf_cfg); 4256d28968eSJerin Jacob int octeontx_pki_port_create_qos(int port, pki_qos_cfg_t *qos_cfg); 426b95c3413SJerin Jacob int octeontx_pki_port_close(int port); 427b95c3413SJerin Jacob int octeontx_pki_port_start(int port); 428b95c3413SJerin Jacob int octeontx_pki_port_stop(int port); 4296d28968eSJerin Jacob int octeontx_pki_port_errchk_config(int port, pki_errchk_cfg_t *cfg); 430b95c3413SJerin Jacob 431b95c3413SJerin Jacob #endif /* __OCTEONTX_PKI_H__ */ 432