X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fsoftnic%2Frte_eth_softnic_internals.h;h=a25eb874cee4c86ac4c55a215ce924e5574b0fdc;hb=175bedb0cc8f801be3050fa35b8d8d0971cea7cc;hp=c2bd6370b94700be2814bae3a7f7a46b52fc374c;hpb=7709a63bf178f52e0d1c36d8db9b6d91860e0064;p=dpdk.git diff --git a/drivers/net/softnic/rte_eth_softnic_internals.h b/drivers/net/softnic/rte_eth_softnic_internals.h index c2bd6370b9..a25eb874ce 100644 --- a/drivers/net/softnic/rte_eth_softnic_internals.h +++ b/drivers/net/softnic/rte_eth_softnic_internals.h @@ -203,7 +203,6 @@ struct tm_internals { /** Blueprints */ struct tm_params params; - struct rte_sched_port *sched; }; struct softnic_tmgr_port { @@ -530,6 +529,9 @@ softnic_swq_init(struct pmd_internals *p); void softnic_swq_free(struct pmd_internals *p); +void +softnic_softnic_swq_free_keep_rxq_txq(struct pmd_internals *p); + struct softnic_swq * softnic_swq_find(struct pmd_internals *p, const char *name); @@ -572,20 +574,13 @@ softnic_tmgr_port_find(struct pmd_internals *p, struct softnic_tmgr_port * softnic_tmgr_port_create(struct pmd_internals *p, - const char *name, - struct rte_sched_port *sched); - -int -tm_init(struct pmd_internals *p); + const char *name); void -tm_free(struct pmd_internals *p); - -int -tm_start(struct pmd_internals *p); +tm_hierarchy_init(struct pmd_internals *p); void -tm_stop(struct pmd_internals *p); +tm_hierarchy_free(struct pmd_internals *p); static inline int tm_used(struct rte_eth_dev *dev) @@ -659,6 +654,9 @@ softnic_pipeline_init(struct pmd_internals *p); void softnic_pipeline_free(struct pmd_internals *p); +void +softnic_pipeline_disable_all(struct pmd_internals *p); + struct pipeline * softnic_pipeline_find(struct pmd_internals *p, const char *name); @@ -689,6 +687,192 @@ softnic_pipeline_table_create(struct pmd_internals *p, const char *pipeline_name, struct softnic_table_params *params); +struct softnic_table_rule_match_acl { + int ip_version; + + RTE_STD_C11 + union { + struct { + uint32_t sa; + uint32_t da; + } ipv4; + + struct { + uint8_t sa[16]; + uint8_t da[16]; + } ipv6; + }; + + uint32_t sa_depth; + uint32_t da_depth; + uint16_t sp0; + uint16_t sp1; + uint16_t dp0; + uint16_t dp1; + uint8_t proto; + uint8_t proto_mask; + uint32_t priority; +}; + +struct softnic_table_rule_match_array { + uint32_t pos; +}; + +#ifndef TABLE_RULE_MATCH_SIZE_MAX +#define TABLE_RULE_MATCH_SIZE_MAX 256 +#endif + +struct softnic_table_rule_match_hash { + uint8_t key[TABLE_RULE_MATCH_SIZE_MAX]; +}; + +struct softnic_table_rule_match_lpm { + int ip_version; + + RTE_STD_C11 + union { + uint32_t ipv4; + uint8_t ipv6[16]; + }; + + uint8_t depth; +}; + +struct softnic_table_rule_match { + enum softnic_table_type match_type; + + union { + struct softnic_table_rule_match_acl acl; + struct softnic_table_rule_match_array array; + struct softnic_table_rule_match_hash hash; + struct softnic_table_rule_match_lpm lpm; + } match; +}; + +struct softnic_table_rule_action { + uint64_t action_mask; + struct rte_table_action_fwd_params fwd; + struct rte_table_action_lb_params lb; + struct rte_table_action_mtr_params mtr; + struct rte_table_action_tm_params tm; + struct rte_table_action_encap_params encap; + struct rte_table_action_nat_params nat; + struct rte_table_action_ttl_params ttl; + struct rte_table_action_stats_params stats; + struct rte_table_action_time_params time; +}; + +int +softnic_pipeline_port_in_stats_read(struct pmd_internals *p, + const char *pipeline_name, + uint32_t port_id, + struct rte_pipeline_port_in_stats *stats, + int clear); + +int +softnic_pipeline_port_in_enable(struct pmd_internals *p, + const char *pipeline_name, + uint32_t port_id); + +int +softnic_pipeline_port_in_disable(struct pmd_internals *p, + const char *pipeline_name, + uint32_t port_id); + +int +softnic_pipeline_port_out_stats_read(struct pmd_internals *p, + const char *pipeline_name, + uint32_t port_id, + struct rte_pipeline_port_out_stats *stats, + int clear); + +int +softnic_pipeline_table_stats_read(struct pmd_internals *p, + const char *pipeline_name, + uint32_t table_id, + struct rte_pipeline_table_stats *stats, + int clear); + +int +softnic_pipeline_table_rule_add(struct pmd_internals *p, + const char *pipeline_name, + uint32_t table_id, + struct softnic_table_rule_match *match, + struct softnic_table_rule_action *action, + void **data); + +int +softnic_pipeline_table_rule_add_bulk(struct pmd_internals *p, + const char *pipeline_name, + uint32_t table_id, + struct softnic_table_rule_match *match, + struct softnic_table_rule_action *action, + void **data, + uint32_t *n_rules); + +int +softnic_pipeline_table_rule_add_default(struct pmd_internals *p, + const char *pipeline_name, + uint32_t table_id, + struct softnic_table_rule_action *action, + void **data); + +int +softnic_pipeline_table_rule_delete(struct pmd_internals *p, + const char *pipeline_name, + uint32_t table_id, + struct softnic_table_rule_match *match); + +int +softnic_pipeline_table_rule_delete_default(struct pmd_internals *p, + const char *pipeline_name, + uint32_t table_id); + +int +softnic_pipeline_table_rule_stats_read(struct pmd_internals *p, + const char *pipeline_name, + uint32_t table_id, + void *data, + struct rte_table_action_stats_counters *stats, + int clear); + +int +softnic_pipeline_table_mtr_profile_add(struct pmd_internals *p, + const char *pipeline_name, + uint32_t table_id, + uint32_t meter_profile_id, + struct rte_table_action_meter_profile *profile); + +int +softnic_pipeline_table_mtr_profile_delete(struct pmd_internals *p, + const char *pipeline_name, + uint32_t table_id, + uint32_t meter_profile_id); + +int +softnic_pipeline_table_rule_mtr_read(struct pmd_internals *p, + const char *pipeline_name, + uint32_t table_id, + void *data, + uint32_t tc_mask, + struct rte_table_action_mtr_counters *stats, + int clear); + +int +softnic_pipeline_table_dscp_table_update(struct pmd_internals *p, + const char *pipeline_name, + uint32_t table_id, + uint64_t dscp_mask, + struct rte_table_action_dscp_table *dscp_table); + +int +softnic_pipeline_table_rule_ttl_read(struct pmd_internals *p, + const char *pipeline_name, + uint32_t table_id, + void *data, + struct rte_table_action_ttl_counters *stats, + int clear); + /** * Thread */ @@ -698,6 +882,16 @@ softnic_thread_init(struct pmd_internals *p); void softnic_thread_free(struct pmd_internals *p); +int +softnic_thread_pipeline_enable(struct pmd_internals *p, + uint32_t thread_id, + const char *pipeline_name); + +int +softnic_thread_pipeline_disable(struct pmd_internals *p, + uint32_t thread_id, + const char *pipeline_name); + /** * CLI */