common/cnxk: add lower bound check for SSO resources
[dpdk.git] / drivers / common / cnxk / roc_nix.h
index 0ced7fb..aedde1c 100644 (file)
@@ -303,7 +303,7 @@ struct roc_nix_rq {
        bool spb_drop_ena;
        /* End of Input parameters */
        struct roc_nix *roc_nix;
-       bool inl_dev_ref;
+       uint16_t inl_dev_refs;
 };
 
 struct roc_nix_cq {
@@ -395,14 +395,17 @@ struct roc_nix {
        uint8_t lock_rx_ctx;
        uint32_t outb_nb_desc;
        uint16_t outb_nb_crypto_qs;
-       uint16_t ipsec_in_max_spi;
-       uint16_t ipsec_out_max_sa;
+       uint32_t ipsec_in_min_spi;
+       uint32_t ipsec_in_max_spi;
+       uint32_t ipsec_out_max_sa;
+       bool ipsec_out_sso_pffunc;
        /* End of input parameters */
        /* LMT line base for "Per Core Tx LMT line" mode*/
        uintptr_t lmt_base;
        bool io_enabled;
        bool rx_ptp_ena;
        uint16_t cints;
+       bool custom_sa_action;
 
 #define ROC_NIX_MEM_SZ (6 * 1024)
        uint8_t reserved[ROC_NIX_MEM_SZ] __plt_cache_aligned;
@@ -568,6 +571,22 @@ struct roc_nix_tm_node_stats {
        uint64_t stats[ROC_NIX_TM_NODE_STATS_MAX];
 };
 
+enum roc_nix_tm_mark {
+       ROC_NIX_TM_MARK_VLAN_DEI,
+       ROC_NIX_TM_MARK_IPV4_DSCP,
+       ROC_NIX_TM_MARK_IPV4_ECN,
+       ROC_NIX_TM_MARK_IPV6_DSCP,
+       ROC_NIX_TM_MARK_IPV6_ECN,
+       ROC_NIX_TM_MARK_MAX
+};
+
+enum roc_nix_tm_mark_color {
+       ROC_NIX_TM_MARK_COLOR_Y,
+       ROC_NIX_TM_MARK_COLOR_R,
+       ROC_NIX_TM_MARK_COLOR_Y_R,
+       ROC_NIX_TM_MARK_COLOR_MAX
+};
+
 int __roc_api roc_nix_tm_node_add(struct roc_nix *roc_nix,
                                  struct roc_nix_tm_node *roc_node);
 int __roc_api roc_nix_tm_node_delete(struct roc_nix *roc_nix, uint32_t node_id,
@@ -644,6 +663,11 @@ int __roc_api roc_nix_tm_prepare_rate_limited_tree(struct roc_nix *roc_nix);
 int __roc_api roc_nix_tm_pfc_prepare_tree(struct roc_nix *roc_nix);
 bool __roc_api roc_nix_tm_is_user_hierarchy_enabled(struct roc_nix *nix);
 int __roc_api roc_nix_tm_tree_type_get(struct roc_nix *nix);
+int __roc_api roc_nix_tm_mark_config(struct roc_nix *roc_nix,
+                                    enum roc_nix_tm_mark type, int mark_yellow,
+                                    int mark_red);
+uint64_t __roc_api roc_nix_tm_mark_format_get(struct roc_nix *roc_nix,
+                                             uint64_t *flags);
 
 /* Ingress Policer API */
 int __roc_api roc_nix_bpf_timeunit_get(struct roc_nix *roc_nix,
@@ -841,6 +865,7 @@ int __roc_api roc_nix_ptp_sync_time_adjust(struct roc_nix *roc_nix,
 int __roc_api roc_nix_ptp_info_cb_register(struct roc_nix *roc_nix,
                                           ptp_info_update_t ptp_update);
 void __roc_api roc_nix_ptp_info_cb_unregister(struct roc_nix *roc_nix);
+bool __roc_api roc_nix_ptp_is_enable(struct roc_nix *roc_nix);
 
 /* VLAN */
 int __roc_api