xref: /dpdk/drivers/net/octeontx/base/octeontx_pkivf.h (revision aaf4363e1e9e518c034c7ff9938a2faefde9854d)
1*aaf4363eSJerin Jacob /* SPDX-License-Identifier: BSD-3-Clause
2*aaf4363eSJerin Jacob  * Copyright(c) 2017 Cavium, Inc
3b95c3413SJerin Jacob  */
4b95c3413SJerin Jacob 
5b95c3413SJerin Jacob #ifndef	__OCTEONTX_PKI_H__
6b95c3413SJerin Jacob #define	__OCTEONTX_PKI_H__
7b95c3413SJerin Jacob 
8b95c3413SJerin Jacob #include <stdint.h>
9b95c3413SJerin Jacob 
1089ee1e94SSantosh Shukla #include <octeontx_mbox.h>
11b95c3413SJerin Jacob 
12b95c3413SJerin Jacob #define OCTEONTX_PKI_COPROC                     5
13b95c3413SJerin Jacob 
14b95c3413SJerin Jacob /* PKI messages */
15b95c3413SJerin Jacob 
16b95c3413SJerin Jacob #define MBOX_PKI_PORT_OPEN			1
17b95c3413SJerin Jacob #define MBOX_PKI_PORT_START			2
18b95c3413SJerin Jacob #define MBOX_PKI_PORT_STOP			3
19b95c3413SJerin Jacob #define MBOX_PKI_PORT_CLOSE			4
206d28968eSJerin Jacob #define MBOX_PKI_PORT_CONFIG			5
216d28968eSJerin Jacob #define MBOX_PKI_PORT_OPT_PARSER_CONFIG		6
226d28968eSJerin Jacob #define MBOX_PKI_PORT_CUSTOM_PARSER_CONFIG	7
236d28968eSJerin Jacob #define MBOX_PKI_PORT_PKTBUF_CONFIG		8
246d28968eSJerin Jacob #define MBOX_PKI_PORT_HASH_CONFIG		9
256d28968eSJerin Jacob #define MBOX_PKI_PORT_ERRCHK_CONFIG		10
266d28968eSJerin Jacob #define MBOX_PKI_PORT_CREATE_QOS		11
276d28968eSJerin Jacob #define MBOX_PKI_PORT_MODIFY_QOS		12
286d28968eSJerin Jacob #define MBOX_PKI_PORT_DELETE_QOS		13
296d28968eSJerin Jacob #define MBOX_PKI_PORT_PKTDROP_CONFIG		14
306d28968eSJerin Jacob #define MBOX_PKI_PORT_WQE_GEN_CONFIG		15
316d28968eSJerin Jacob #define MBOX_PKI_BACKPRESSURE_CONFIG		16
326d28968eSJerin Jacob #define MBOX_PKI_PORT_GET_STATS			17
336d28968eSJerin Jacob #define MBOX_PKI_PORT_RESET_STATS		18
346d28968eSJerin Jacob #define MBOX_PKI_GET_PORT_CONFIG		19
356d28968eSJerin Jacob #define MBOX_PKI_GET_PORT_QOS_CONFIG		20
366d28968eSJerin Jacob 
376d28968eSJerin Jacob #define MBOX_PKI_MAX_QOS_ENTRY 64
386d28968eSJerin Jacob 
396d28968eSJerin Jacob /* pki pkind parse mode */
406d28968eSJerin Jacob enum  {
416d28968eSJerin Jacob 	MBOX_PKI_PARSE_LA_TO_LG = 0,
426d28968eSJerin Jacob 	MBOX_PKI_PARSE_LB_TO_LG = 1,
436d28968eSJerin Jacob 	MBOX_PKI_PARSE_LC_TO_LG = 3,
446d28968eSJerin Jacob 	MBOX_PKI_PARSE_LG = 0x3f,
456d28968eSJerin Jacob 	MBOX_PKI_PARSE_NOTHING = 0x7f
466d28968eSJerin Jacob };
47b95c3413SJerin Jacob 
48b95c3413SJerin Jacob /* Interface types: */
49b95c3413SJerin Jacob enum {
50b95c3413SJerin Jacob 	OCTTX_PORT_TYPE_NET, /* Network interface ports */
51b95c3413SJerin Jacob 	OCTTX_PORT_TYPE_INT, /* CPU internal interface ports */
52b95c3413SJerin Jacob 	OCTTX_PORT_TYPE_PCI, /* DPI/PCIe interface ports */
53b95c3413SJerin Jacob 	OCTTX_PORT_TYPE_MAX
54b95c3413SJerin Jacob };
55b95c3413SJerin Jacob 
56b95c3413SJerin Jacob /* pki port config */
57b95c3413SJerin Jacob typedef struct mbox_pki_port_type {
58b95c3413SJerin Jacob 	uint8_t port_type;
59b95c3413SJerin Jacob } mbox_pki_port_t;
60b95c3413SJerin Jacob 
616d28968eSJerin Jacob /* pki port config */
626d28968eSJerin Jacob typedef struct mbox_pki_port_cfg {
636d28968eSJerin Jacob 	uint8_t port_type;
646d28968eSJerin Jacob 	struct {
656d28968eSJerin Jacob 		uint8_t fcs_pres:1;
666d28968eSJerin Jacob 		uint8_t fcs_skip:1;
676d28968eSJerin Jacob 		uint8_t parse_mode:1;
686d28968eSJerin Jacob 		uint8_t mpls_parse:1;
696d28968eSJerin Jacob 		uint8_t inst_hdr_parse:1;
706d28968eSJerin Jacob 		uint8_t fulc_parse:1;
716d28968eSJerin Jacob 		uint8_t dsa_parse:1;
726d28968eSJerin Jacob 		uint8_t hg2_parse:1;
736d28968eSJerin Jacob 		uint8_t hg_parse:1;
746d28968eSJerin Jacob 	} mmask;
756d28968eSJerin Jacob 	uint8_t fcs_pres;
766d28968eSJerin Jacob 	uint8_t fcs_skip;
776d28968eSJerin Jacob 	uint8_t parse_mode;
786d28968eSJerin Jacob 	uint8_t mpls_parse;
796d28968eSJerin Jacob 	uint8_t inst_hdr_parse;
806d28968eSJerin Jacob 	uint8_t fulc_parse;
816d28968eSJerin Jacob 	uint8_t dsa_parse;
826d28968eSJerin Jacob 	uint8_t hg2_parse;
836d28968eSJerin Jacob 	uint8_t hg_parse;
846d28968eSJerin Jacob } mbox_pki_prt_cfg_t;
856d28968eSJerin Jacob 
866d28968eSJerin Jacob /* pki Flow/style packet buffer config */
876d28968eSJerin Jacob typedef struct mbox_pki_port_pktbuf_cfg {
886d28968eSJerin Jacob 	uint8_t port_type;
896d28968eSJerin Jacob 	struct {
906d28968eSJerin Jacob 		uint16_t f_mbuff_size:1;
916d28968eSJerin Jacob 		uint16_t f_wqe_skip:1;
926d28968eSJerin Jacob 		uint16_t f_first_skip:1;
936d28968eSJerin Jacob 		uint16_t f_later_skip:1;
946d28968eSJerin Jacob 		uint16_t f_pkt_outside_wqe:1;
956d28968eSJerin Jacob 		uint16_t f_wqe_endian:1;
966d28968eSJerin Jacob 		uint16_t f_cache_mode:1;
976d28968eSJerin Jacob 	} mmask;
986d28968eSJerin Jacob 	uint16_t mbuff_size;
996d28968eSJerin Jacob 	uint16_t wqe_skip;
1006d28968eSJerin Jacob 	uint16_t first_skip;
1016d28968eSJerin Jacob 	uint16_t later_skip;
1026d28968eSJerin Jacob 	uint8_t pkt_outside_wqe;
1036d28968eSJerin Jacob 	uint8_t wqe_endian;
1046d28968eSJerin Jacob 	uint8_t cache_mode;
1056d28968eSJerin Jacob } mbox_pki_pktbuf_cfg_t;
1066d28968eSJerin Jacob 
1076d28968eSJerin Jacob /* pki flow/style tag config */
1086d28968eSJerin Jacob typedef struct mbox_pki_port_hash_cfg {
1096d28968eSJerin Jacob 	uint8_t port_type;
1106d28968eSJerin Jacob 	uint32_t tag_slf:1;
1116d28968eSJerin Jacob 	uint32_t tag_sle:1;
1126d28968eSJerin Jacob 	uint32_t tag_sld:1;
1136d28968eSJerin Jacob 	uint32_t tag_slc:1;
1146d28968eSJerin Jacob 	uint32_t tag_dlf:1;
1156d28968eSJerin Jacob 	uint32_t tag_dle:1;
1166d28968eSJerin Jacob 	uint32_t tag_dld:1;
1176d28968eSJerin Jacob 	uint32_t tag_dlc:1;
1186d28968eSJerin Jacob 	uint32_t tag_prt:1;
1196d28968eSJerin Jacob 	uint32_t tag_vlan0:1;
1206d28968eSJerin Jacob 	uint32_t tag_vlan1:1;
1216d28968eSJerin Jacob 	uint32_t tag_ip_pctl:1;
1226d28968eSJerin Jacob 	uint32_t tag_sync:1;
1236d28968eSJerin Jacob 	uint32_t tag_spi:1;
1246d28968eSJerin Jacob 	uint32_t tag_gtp:1;
1256d28968eSJerin Jacob 	uint32_t tag_vni:1;
1266d28968eSJerin Jacob } mbox_pki_hash_cfg_t;
1276d28968eSJerin Jacob 
1286d28968eSJerin Jacob /* pki flow/style errcheck config */
1296d28968eSJerin Jacob typedef struct mbox_pki_port_errcheck_cfg {
1306d28968eSJerin Jacob 	uint8_t port_type;
1316d28968eSJerin Jacob 	struct {
1326d28968eSJerin Jacob 		uint32_t f_ip6_udp_opt:1;
1336d28968eSJerin Jacob 		uint32_t f_lenerr_en:1;
1346d28968eSJerin Jacob 		uint32_t f_maxerr_en:1;
1356d28968eSJerin Jacob 		uint32_t f_minerr_en:1;
1366d28968eSJerin Jacob 		uint32_t f_fcs_chk:1;
1376d28968eSJerin Jacob 		uint32_t f_fcs_strip:1;
1386d28968eSJerin Jacob 		uint32_t f_len_lf:1;
1396d28968eSJerin Jacob 		uint32_t f_len_le:1;
1406d28968eSJerin Jacob 		uint32_t f_len_ld:1;
1416d28968eSJerin Jacob 		uint32_t f_len_lc:1;
1426d28968eSJerin Jacob 		uint32_t f_csum_lf:1;
1436d28968eSJerin Jacob 		uint32_t f_csum_le:1;
1446d28968eSJerin Jacob 		uint32_t f_csum_ld:1;
1456d28968eSJerin Jacob 		uint32_t f_csum_lc:1;
1466d28968eSJerin Jacob 		uint32_t f_min_frame_len;
1476d28968eSJerin Jacob 		uint32_t f_max_frame_len;
1486d28968eSJerin Jacob 	} mmask;
1496d28968eSJerin Jacob 	uint64_t ip6_udp_opt:1;
1506d28968eSJerin Jacob 	uint64_t lenerr_en:1;
1516d28968eSJerin Jacob 	uint64_t maxerr_en:1;
1526d28968eSJerin Jacob 	uint64_t minerr_en:1;
1536d28968eSJerin Jacob 	uint64_t fcs_chk:1;
1546d28968eSJerin Jacob 	uint64_t fcs_strip:1;
1556d28968eSJerin Jacob 	uint64_t len_lf:1;
1566d28968eSJerin Jacob 	uint64_t len_le:1;
1576d28968eSJerin Jacob 	uint64_t len_ld:1;
1586d28968eSJerin Jacob 	uint64_t len_lc:1;
1596d28968eSJerin Jacob 	uint64_t csum_lf:1;
1606d28968eSJerin Jacob 	uint64_t csum_le:1;
1616d28968eSJerin Jacob 	uint64_t csum_ld:1;
1626d28968eSJerin Jacob 	uint64_t csum_lc:1;
1636d28968eSJerin Jacob 	uint64_t min_frame_len;
1646d28968eSJerin Jacob 	uint64_t max_frame_len;
1656d28968eSJerin Jacob } mbox_pki_errcheck_cfg_t;
1666d28968eSJerin Jacob 
1676d28968eSJerin Jacob /* CACHE MODE*/
1686d28968eSJerin Jacob enum {
1696d28968eSJerin Jacob 	MBOX_PKI_OPC_MODE_STT = 0LL,
1706d28968eSJerin Jacob 	MBOX_PKI_OPC_MODE_STF = 1LL,
1716d28968eSJerin Jacob 	MBOX_PKI_OPC_MODE_STF1_STT = 2LL,
1726d28968eSJerin Jacob 	MBOX_PKI_OPC_MODE_STF2_STT = 3LL
1736d28968eSJerin Jacob };
1746d28968eSJerin Jacob 
1756d28968eSJerin Jacob /* PKI QPG QOS*/
1766d28968eSJerin Jacob enum {
1776d28968eSJerin Jacob 	MBOX_PKI_QPG_QOS_NONE = 0,
1786d28968eSJerin Jacob 	MBOX_PKI_QPG_QOS_VLAN,
1796d28968eSJerin Jacob 	MBOX_PKI_QPG_QOS_MPLS,
1806d28968eSJerin Jacob 	MBOX_PKI_QPG_QOS_DSA_SRC,
1816d28968eSJerin Jacob 	MBOX_PKI_QPG_QOS_DIFFSERV,
1826d28968eSJerin Jacob 	MBOX_PKI_QPG_QOS_HIGIG,
1836d28968eSJerin Jacob };
1846d28968eSJerin Jacob 
1856d28968eSJerin Jacob struct mbox_pki_qos_entry {
1866d28968eSJerin Jacob 	uint16_t port_add;
1876d28968eSJerin Jacob 	uint16_t ggrp_ok;
1886d28968eSJerin Jacob 	uint16_t ggrp_bad;
1896d28968eSJerin Jacob 	uint16_t gaura;
1906d28968eSJerin Jacob 	uint8_t grptag_ok;
1916d28968eSJerin Jacob 	uint8_t grptag_bad;
1926d28968eSJerin Jacob };
1936d28968eSJerin Jacob 
1946d28968eSJerin Jacob /* pki flow/style enable qos */
1956d28968eSJerin Jacob typedef struct mbox_pki_port_create_qos {
1966d28968eSJerin Jacob 	uint8_t port_type;
1976d28968eSJerin Jacob 	uint8_t qpg_qos;
1986d28968eSJerin Jacob 	uint8_t num_entry;
1996d28968eSJerin Jacob 	uint8_t tag_type;
2006d28968eSJerin Jacob 	uint8_t drop_policy;
2016d28968eSJerin Jacob 	struct mbox_pki_qos_entry qos_entry[MBOX_PKI_MAX_QOS_ENTRY];
2026d28968eSJerin Jacob } mbox_pki_qos_cfg_t;
2036d28968eSJerin Jacob 
2046d28968eSJerin Jacob /* pki flow/style enable qos */
2056d28968eSJerin Jacob typedef struct mbox_pki_port_modify_qos_entry {
2066d28968eSJerin Jacob 	uint8_t port_type;
2076d28968eSJerin Jacob 	uint16_t index;
2086d28968eSJerin Jacob 	struct {
2096d28968eSJerin Jacob 		uint8_t f_port_add:1;
2106d28968eSJerin Jacob 		uint8_t f_grp_ok:1;
2116d28968eSJerin Jacob 		uint8_t f_grp_bad:1;
2126d28968eSJerin Jacob 		uint8_t f_gaura:1;
2136d28968eSJerin Jacob 		uint8_t f_grptag_ok:1;
2146d28968eSJerin Jacob 		uint8_t f_grptag_bad:1;
215d0d65498SPavan Nikhilesh 		uint8_t f_tag_type:1;
2166d28968eSJerin Jacob 	} mmask;
217d0d65498SPavan Nikhilesh 	uint8_t tag_type;
2186d28968eSJerin Jacob 	struct mbox_pki_qos_entry qos_entry;
2196d28968eSJerin Jacob } mbox_pki_mod_qos_t;
2206d28968eSJerin Jacob 
221d0d65498SPavan Nikhilesh /* pki flow/style enable qos */
222d0d65498SPavan Nikhilesh typedef struct mbox_pki_port_delete_qos_entry {
223d0d65498SPavan Nikhilesh 	uint8_t port_type;
224d0d65498SPavan Nikhilesh 	uint16_t index;
225d0d65498SPavan Nikhilesh } mbox_pki_del_qos_t;
226d0d65498SPavan Nikhilesh 
2276d28968eSJerin Jacob /* PKI maximum constants */
2286d28968eSJerin Jacob #define PKI_VF_MAX			(1)
2296d28968eSJerin Jacob #define PKI_MAX_PKTLEN			(32768)
2306d28968eSJerin Jacob 
2316d28968eSJerin Jacob /* pki pkind parse mode */
2326d28968eSJerin Jacob enum  {
2336d28968eSJerin Jacob 	PKI_PARSE_LA_TO_LG = 0,
2346d28968eSJerin Jacob 	PKI_PARSE_LB_TO_LG = 1,
2356d28968eSJerin Jacob 	PKI_PARSE_LC_TO_LG = 3,
2366d28968eSJerin Jacob 	PKI_PARSE_LG = 0x3f,
2376d28968eSJerin Jacob 	PKI_PARSE_NOTHING = 0x7f
2386d28968eSJerin Jacob };
2396d28968eSJerin Jacob 
2406d28968eSJerin Jacob /* pki port config */
2416d28968eSJerin Jacob typedef struct pki_port_cfg {
2426d28968eSJerin Jacob 	uint8_t port_type;
2436d28968eSJerin Jacob 	struct {
2446d28968eSJerin Jacob 		uint8_t fcs_pres:1;
2456d28968eSJerin Jacob 		uint8_t fcs_skip:1;
2466d28968eSJerin Jacob 		uint8_t parse_mode:1;
2476d28968eSJerin Jacob 		uint8_t mpls_parse:1;
2486d28968eSJerin Jacob 		uint8_t inst_hdr_parse:1;
2496d28968eSJerin Jacob 		uint8_t fulc_parse:1;
2506d28968eSJerin Jacob 		uint8_t dsa_parse:1;
2516d28968eSJerin Jacob 		uint8_t hg2_parse:1;
2526d28968eSJerin Jacob 		uint8_t hg_parse:1;
2536d28968eSJerin Jacob 	} mmask;
2546d28968eSJerin Jacob 	uint8_t fcs_pres;
2556d28968eSJerin Jacob 	uint8_t fcs_skip;
2566d28968eSJerin Jacob 	uint8_t parse_mode;
2576d28968eSJerin Jacob 	uint8_t mpls_parse;
2586d28968eSJerin Jacob 	uint8_t inst_hdr_parse;
2596d28968eSJerin Jacob 	uint8_t fulc_parse;
2606d28968eSJerin Jacob 	uint8_t dsa_parse;
2616d28968eSJerin Jacob 	uint8_t hg2_parse;
2626d28968eSJerin Jacob 	uint8_t hg_parse;
2636d28968eSJerin Jacob } pki_prt_cfg_t;
2646d28968eSJerin Jacob 
2656d28968eSJerin Jacob 
2666d28968eSJerin Jacob /* pki Flow/style packet buffer config */
2676d28968eSJerin Jacob typedef struct pki_port_pktbuf_cfg {
2686d28968eSJerin Jacob 	uint8_t port_type;
2696d28968eSJerin Jacob 	struct {
2706d28968eSJerin Jacob 		uint16_t f_mbuff_size:1;
2716d28968eSJerin Jacob 		uint16_t f_wqe_skip:1;
2726d28968eSJerin Jacob 		uint16_t f_first_skip:1;
2736d28968eSJerin Jacob 		uint16_t f_later_skip:1;
2746d28968eSJerin Jacob 		uint16_t f_pkt_outside_wqe:1;
2756d28968eSJerin Jacob 		uint16_t f_wqe_endian:1;
2766d28968eSJerin Jacob 		uint16_t f_cache_mode:1;
2776d28968eSJerin Jacob 	} mmask;
2786d28968eSJerin Jacob 	uint16_t mbuff_size;
2796d28968eSJerin Jacob 	uint16_t wqe_skip;
2806d28968eSJerin Jacob 	uint16_t first_skip;
2816d28968eSJerin Jacob 	uint16_t later_skip;
2826d28968eSJerin Jacob 	uint8_t pkt_outside_wqe;
2836d28968eSJerin Jacob 	uint8_t wqe_endian;
2846d28968eSJerin Jacob 	uint8_t cache_mode;
2856d28968eSJerin Jacob } pki_pktbuf_cfg_t;
2866d28968eSJerin Jacob 
2876d28968eSJerin Jacob /* pki flow/style tag config */
2886d28968eSJerin Jacob typedef struct pki_port_hash_cfg {
2896d28968eSJerin Jacob 	uint8_t port_type;
2906d28968eSJerin Jacob 	uint32_t tag_slf:1;
2916d28968eSJerin Jacob 	uint32_t tag_sle:1;
2926d28968eSJerin Jacob 	uint32_t tag_sld:1;
2936d28968eSJerin Jacob 	uint32_t tag_slc:1;
2946d28968eSJerin Jacob 	uint32_t tag_dlf:1;
2956d28968eSJerin Jacob 	uint32_t tag_dle:1;
2966d28968eSJerin Jacob 	uint32_t tag_dld:1;
2976d28968eSJerin Jacob 	uint32_t tag_dlc:1;
2986d28968eSJerin Jacob 	uint32_t tag_prt:1;
2996d28968eSJerin Jacob 	uint32_t tag_vlan0:1;
3006d28968eSJerin Jacob 	uint32_t tag_vlan1:1;
3016d28968eSJerin Jacob 	uint32_t tag_ip_pctl:1;
3026d28968eSJerin Jacob 	uint32_t tag_sync:1;
3036d28968eSJerin Jacob 	uint32_t tag_spi:1;
3046d28968eSJerin Jacob 	uint32_t tag_gtp:1;
3056d28968eSJerin Jacob 	uint32_t tag_vni:1;
3066d28968eSJerin Jacob } pki_hash_cfg_t;
3076d28968eSJerin Jacob 
3086d28968eSJerin Jacob /* pki flow/style errcheck config */
3096d28968eSJerin Jacob typedef struct pki_port_errcheck_cfg {
3106d28968eSJerin Jacob 	uint8_t port_type;
3116d28968eSJerin Jacob 	struct {
3126d28968eSJerin Jacob 		uint32_t f_ip6_udp_opt:1;
3136d28968eSJerin Jacob 		uint32_t f_lenerr_en:1;
3146d28968eSJerin Jacob 		uint32_t f_maxerr_en:1;
3156d28968eSJerin Jacob 		uint32_t f_minerr_en:1;
3166d28968eSJerin Jacob 		uint32_t f_fcs_chk:1;
3176d28968eSJerin Jacob 		uint32_t f_fcs_strip:1;
3186d28968eSJerin Jacob 		uint32_t f_len_lf:1;
3196d28968eSJerin Jacob 		uint32_t f_len_le:1;
3206d28968eSJerin Jacob 		uint32_t f_len_ld:1;
3216d28968eSJerin Jacob 		uint32_t f_len_lc:1;
3226d28968eSJerin Jacob 		uint32_t f_csum_lf:1;
3236d28968eSJerin Jacob 		uint32_t f_csum_le:1;
3246d28968eSJerin Jacob 		uint32_t f_csum_ld:1;
3256d28968eSJerin Jacob 		uint32_t f_csum_lc:1;
3266d28968eSJerin Jacob 		uint32_t f_min_frame_len;
3276d28968eSJerin Jacob 		uint32_t f_max_frame_len;
3286d28968eSJerin Jacob 	} mmask;
3296d28968eSJerin Jacob 	uint64_t ip6_udp_opt:1;
3306d28968eSJerin Jacob 	uint64_t lenerr_en:1;
3316d28968eSJerin Jacob 	uint64_t maxerr_en:1;
3326d28968eSJerin Jacob 	uint64_t minerr_en:1;
3336d28968eSJerin Jacob 	uint64_t fcs_chk:1;
3346d28968eSJerin Jacob 	uint64_t fcs_strip:1;
3356d28968eSJerin Jacob 	uint64_t len_lf:1;
3366d28968eSJerin Jacob 	uint64_t len_le:1;
3376d28968eSJerin Jacob 	uint64_t len_ld:1;
3386d28968eSJerin Jacob 	uint64_t len_lc:1;
3396d28968eSJerin Jacob 	uint64_t csum_lf:1;
3406d28968eSJerin Jacob 	uint64_t csum_le:1;
3416d28968eSJerin Jacob 	uint64_t csum_ld:1;
3426d28968eSJerin Jacob 	uint64_t csum_lc:1;
3436d28968eSJerin Jacob 	uint64_t min_frame_len;
3446d28968eSJerin Jacob 	uint64_t max_frame_len;
3456d28968eSJerin Jacob } pki_errchk_cfg_t;
3466d28968eSJerin Jacob 
3476d28968eSJerin Jacob 
3486d28968eSJerin Jacob /* CACHE MODE*/
3496d28968eSJerin Jacob enum {
3506d28968eSJerin Jacob 	PKI_OPC_MODE_STT = 0LL,
3516d28968eSJerin Jacob 	PKI_OPC_MODE_STF = 1LL,
3526d28968eSJerin Jacob 	PKI_OPC_MODE_STF1_STT = 2LL,
3536d28968eSJerin Jacob 	PKI_OPC_MODE_STF2_STT = 3LL
3546d28968eSJerin Jacob };
3556d28968eSJerin Jacob 
3566d28968eSJerin Jacob /* PKI QPG QOS*/
3576d28968eSJerin Jacob enum {
3586d28968eSJerin Jacob 	PKI_QPG_QOS_NONE = 0,
3596d28968eSJerin Jacob 	PKI_QPG_QOS_VLAN,
3606d28968eSJerin Jacob 	PKI_QPG_QOS_MPLS,
3616d28968eSJerin Jacob 	PKI_QPG_QOS_DSA_SRC,
3626d28968eSJerin Jacob 	PKI_QPG_QOS_DIFFSERV,
3636d28968eSJerin Jacob 	PKI_QPG_QOS_HIGIG,
3646d28968eSJerin Jacob };
3656d28968eSJerin Jacob 
3666d28968eSJerin Jacob struct pki_qos_entry {
3676d28968eSJerin Jacob 	uint16_t port_add;
3686d28968eSJerin Jacob 	uint16_t ggrp_ok;
3696d28968eSJerin Jacob 	uint16_t ggrp_bad;
3706d28968eSJerin Jacob 	uint16_t gaura;
3716d28968eSJerin Jacob 	uint8_t grptag_ok;
3726d28968eSJerin Jacob 	uint8_t grptag_bad;
3736d28968eSJerin Jacob 	uint8_t ena_red;
3746d28968eSJerin Jacob 	uint8_t ena_drop;
3756d28968eSJerin Jacob };
3766d28968eSJerin Jacob 
3776d28968eSJerin Jacob #define PKO_MAX_QOS_ENTRY 64
3786d28968eSJerin Jacob 
3796d28968eSJerin Jacob /* pki flow/style enable qos */
3806d28968eSJerin Jacob typedef struct pki_port_create_qos {
3816d28968eSJerin Jacob 	uint8_t port_type;
3826d28968eSJerin Jacob 	uint8_t qpg_qos;
3836d28968eSJerin Jacob 	uint8_t num_entry;
3846d28968eSJerin Jacob 	uint8_t tag_type;
3856d28968eSJerin Jacob 	uint8_t drop_policy;
3866d28968eSJerin Jacob 	struct pki_qos_entry qos_entry[PKO_MAX_QOS_ENTRY];
3876d28968eSJerin Jacob } pki_qos_cfg_t;
3886d28968eSJerin Jacob 
3896d28968eSJerin Jacob /* pki flow/style enable qos */
390d0d65498SPavan Nikhilesh typedef struct pki_port_delete_qos_entry {
391d0d65498SPavan Nikhilesh 	uint8_t port_type;
392d0d65498SPavan Nikhilesh 	uint16_t index;
393d0d65498SPavan Nikhilesh } pki_del_qos_t;
394d0d65498SPavan Nikhilesh 
395d0d65498SPavan Nikhilesh /* pki flow/style enable qos */
3966d28968eSJerin Jacob typedef struct pki_port_modify_qos_entry {
3976d28968eSJerin Jacob 	uint8_t port_type;
3986d28968eSJerin Jacob 	uint16_t index;
3996d28968eSJerin Jacob 	struct {
4006d28968eSJerin Jacob 		uint8_t f_port_add:1;
4016d28968eSJerin Jacob 		uint8_t f_grp_ok:1;
4026d28968eSJerin Jacob 		uint8_t f_grp_bad:1;
4036d28968eSJerin Jacob 		uint8_t f_gaura:1;
404d0d65498SPavan Nikhilesh 		uint8_t f_grptag_ok:1;
405d0d65498SPavan Nikhilesh 		uint8_t f_grptag_bad:1;
406d0d65498SPavan Nikhilesh 		uint8_t f_tag_type:1;
4076d28968eSJerin Jacob 	} mmask;
408d0d65498SPavan Nikhilesh 	uint8_t tag_type;
4096d28968eSJerin Jacob 	struct pki_qos_entry qos_entry;
4106d28968eSJerin Jacob } pki_mod_qos_t;
4116d28968eSJerin Jacob 
412d0d65498SPavan Nikhilesh static inline int
413d0d65498SPavan Nikhilesh octeontx_pki_port_modify_qos(int port, pki_mod_qos_t *qos_cfg)
414d0d65498SPavan Nikhilesh {
415d0d65498SPavan Nikhilesh 	struct octeontx_mbox_hdr hdr;
416d0d65498SPavan Nikhilesh 	int res;
417d0d65498SPavan Nikhilesh 
418d0d65498SPavan Nikhilesh 	mbox_pki_mod_qos_t q_cfg = *(mbox_pki_mod_qos_t *)qos_cfg;
419d0d65498SPavan Nikhilesh 	int len = sizeof(mbox_pki_mod_qos_t);
420d0d65498SPavan Nikhilesh 
421d0d65498SPavan Nikhilesh 	hdr.coproc = OCTEONTX_PKI_COPROC;
422d0d65498SPavan Nikhilesh 	hdr.msg = MBOX_PKI_PORT_MODIFY_QOS;
423d0d65498SPavan Nikhilesh 	hdr.vfid = port;
424d0d65498SPavan Nikhilesh 
425d0d65498SPavan Nikhilesh 	res = octeontx_ssovf_mbox_send(&hdr, &q_cfg, len, NULL, 0);
426d0d65498SPavan Nikhilesh 	if (res < 0)
427d0d65498SPavan Nikhilesh 		return -EACCES;
428d0d65498SPavan Nikhilesh 
429d0d65498SPavan Nikhilesh 	return res;
430d0d65498SPavan Nikhilesh }
431d0d65498SPavan Nikhilesh 
432d0d65498SPavan Nikhilesh static inline int
433d0d65498SPavan Nikhilesh octeontx_pki_port_delete_qos(int port, pki_del_qos_t *qos_cfg)
434d0d65498SPavan Nikhilesh {
435d0d65498SPavan Nikhilesh 	struct octeontx_mbox_hdr hdr;
436d0d65498SPavan Nikhilesh 	int res;
437d0d65498SPavan Nikhilesh 
438d0d65498SPavan Nikhilesh 	mbox_pki_del_qos_t q_cfg = *(mbox_pki_del_qos_t *)qos_cfg;
439d0d65498SPavan Nikhilesh 	int len = sizeof(mbox_pki_del_qos_t);
440d0d65498SPavan Nikhilesh 
441d0d65498SPavan Nikhilesh 	hdr.coproc = OCTEONTX_PKI_COPROC;
442d0d65498SPavan Nikhilesh 	hdr.msg = MBOX_PKI_PORT_DELETE_QOS;
443d0d65498SPavan Nikhilesh 	hdr.vfid = port;
444d0d65498SPavan Nikhilesh 
445d0d65498SPavan Nikhilesh 	res = octeontx_ssovf_mbox_send(&hdr, &q_cfg, len, NULL, 0);
446d0d65498SPavan Nikhilesh 	if (res < 0)
447d0d65498SPavan Nikhilesh 		return -EACCES;
448d0d65498SPavan Nikhilesh 
449d0d65498SPavan Nikhilesh 	return res;
450d0d65498SPavan Nikhilesh }
451d0d65498SPavan Nikhilesh 
452d0d65498SPavan Nikhilesh static inline int
453d0d65498SPavan Nikhilesh octeontx_pki_port_close(int port)
454d0d65498SPavan Nikhilesh {
455d0d65498SPavan Nikhilesh 	struct octeontx_mbox_hdr hdr;
456d0d65498SPavan Nikhilesh 	int res;
457d0d65498SPavan Nikhilesh 
458d0d65498SPavan Nikhilesh 	mbox_pki_port_t ptype;
459d0d65498SPavan Nikhilesh 	int len = sizeof(mbox_pki_port_t);
460d0d65498SPavan Nikhilesh 	memset(&ptype, 0, len);
461d0d65498SPavan Nikhilesh 	ptype.port_type = OCTTX_PORT_TYPE_NET;
462d0d65498SPavan Nikhilesh 
463d0d65498SPavan Nikhilesh 	hdr.coproc = OCTEONTX_PKI_COPROC;
464d0d65498SPavan Nikhilesh 	hdr.msg = MBOX_PKI_PORT_CLOSE;
465d0d65498SPavan Nikhilesh 	hdr.vfid = port;
466d0d65498SPavan Nikhilesh 
467d0d65498SPavan Nikhilesh 	res = octeontx_ssovf_mbox_send(&hdr, &ptype, len, NULL, 0);
468d0d65498SPavan Nikhilesh 	if (res < 0)
469d0d65498SPavan Nikhilesh 		return -EACCES;
470d0d65498SPavan Nikhilesh 
471d0d65498SPavan Nikhilesh 	return res;
472d0d65498SPavan Nikhilesh }
473d0d65498SPavan Nikhilesh 
474d0d65498SPavan Nikhilesh static inline int
475d0d65498SPavan Nikhilesh octeontx_pki_port_start(int port)
476d0d65498SPavan Nikhilesh {
477d0d65498SPavan Nikhilesh 	struct octeontx_mbox_hdr hdr;
478d0d65498SPavan Nikhilesh 	int res;
479d0d65498SPavan Nikhilesh 
480d0d65498SPavan Nikhilesh 	mbox_pki_port_t ptype;
481d0d65498SPavan Nikhilesh 	int len = sizeof(mbox_pki_port_t);
482d0d65498SPavan Nikhilesh 	memset(&ptype, 0, len);
483d0d65498SPavan Nikhilesh 	ptype.port_type = OCTTX_PORT_TYPE_NET;
484d0d65498SPavan Nikhilesh 
485d0d65498SPavan Nikhilesh 	hdr.coproc = OCTEONTX_PKI_COPROC;
486d0d65498SPavan Nikhilesh 	hdr.msg = MBOX_PKI_PORT_START;
487d0d65498SPavan Nikhilesh 	hdr.vfid = port;
488d0d65498SPavan Nikhilesh 
489d0d65498SPavan Nikhilesh 	res = octeontx_ssovf_mbox_send(&hdr, &ptype, len, NULL, 0);
490d0d65498SPavan Nikhilesh 	if (res < 0)
491d0d65498SPavan Nikhilesh 		return -EACCES;
492d0d65498SPavan Nikhilesh 
493d0d65498SPavan Nikhilesh 	return res;
494d0d65498SPavan Nikhilesh }
495d0d65498SPavan Nikhilesh 
496d0d65498SPavan Nikhilesh static inline int
497d0d65498SPavan Nikhilesh octeontx_pki_port_stop(int port)
498d0d65498SPavan Nikhilesh {
499d0d65498SPavan Nikhilesh 	struct octeontx_mbox_hdr hdr;
500d0d65498SPavan Nikhilesh 	int res;
501d0d65498SPavan Nikhilesh 
502d0d65498SPavan Nikhilesh 	mbox_pki_port_t ptype;
503d0d65498SPavan Nikhilesh 	int len = sizeof(mbox_pki_port_t);
504d0d65498SPavan Nikhilesh 	memset(&ptype, 0, len);
505d0d65498SPavan Nikhilesh 	ptype.port_type = OCTTX_PORT_TYPE_NET;
506d0d65498SPavan Nikhilesh 
507d0d65498SPavan Nikhilesh 	hdr.coproc = OCTEONTX_PKI_COPROC;
508d0d65498SPavan Nikhilesh 	hdr.msg = MBOX_PKI_PORT_STOP;
509d0d65498SPavan Nikhilesh 	hdr.vfid = port;
510d0d65498SPavan Nikhilesh 
511d0d65498SPavan Nikhilesh 	res = octeontx_ssovf_mbox_send(&hdr, &ptype, len, NULL, 0);
512d0d65498SPavan Nikhilesh 	if (res < 0)
513d0d65498SPavan Nikhilesh 		return -EACCES;
514d0d65498SPavan Nikhilesh 
515d0d65498SPavan Nikhilesh 	return res;
516d0d65498SPavan Nikhilesh }
517d0d65498SPavan Nikhilesh 
518b95c3413SJerin Jacob int octeontx_pki_port_open(int port);
5196d28968eSJerin Jacob int octeontx_pki_port_hash_config(int port, pki_hash_cfg_t *hash_cfg);
5206d28968eSJerin Jacob int octeontx_pki_port_pktbuf_config(int port, pki_pktbuf_cfg_t *buf_cfg);
5216d28968eSJerin Jacob int octeontx_pki_port_create_qos(int port, pki_qos_cfg_t *qos_cfg);
522b95c3413SJerin Jacob int octeontx_pki_port_close(int port);
5236d28968eSJerin Jacob int octeontx_pki_port_errchk_config(int port, pki_errchk_cfg_t *cfg);
524b95c3413SJerin Jacob 
525b95c3413SJerin Jacob #endif /* __OCTEONTX_PKI_H__ */
526