Mass rename of offload provider structures and functions to improve coherence and readability. Most of these symbols are local and not exported, so they do not require extensive prefixes.
Signed-off-by: Eelco Chaudron <[email protected]> --- lib/dpif-offload-dpdk-netdev.c | 106 ++++---- lib/dpif-offload-dpdk-private.h | 74 +++--- lib/dpif-offload-dpdk.c | 352 ++++++++++++------------- lib/dpif-offload-dummy.c | 437 +++++++++++++++----------------- lib/dpif-offload-tc-netdev.c | 68 +++-- lib/dpif-offload-tc-private.h | 51 ++-- lib/dpif-offload-tc.c | 314 +++++++++++------------ 7 files changed, 645 insertions(+), 757 deletions(-) diff --git a/lib/dpif-offload-dpdk-netdev.c b/lib/dpif-offload-dpdk-netdev.c index 9a66bd413..a43d490af 100644 --- a/lib/dpif-offload-dpdk-netdev.c +++ b/lib/dpif-offload-dpdk-netdev.c @@ -208,7 +208,7 @@ netdev_offload_dpdk_pmd_data_find_pmd_and_delete( static void netdev_offload_dpdk_pmd_data_cleanup_mappings( - struct dpif_offload_dpdk *offload, struct pmd_data *mapping) + struct dpdk_offload *offload, struct pmd_data *mapping) { struct pmd_id_to_flow_ref_data *data; @@ -222,8 +222,7 @@ netdev_offload_dpdk_pmd_data_cleanup_mappings( cmap_remove(&mapping->pmd_id_to_flow_ref, &data->node, hash_int(data->pmd_id, 0)); - dpif_offload_dpdk_flow_unreference(offload, data->pmd_id, - data->flow_reference); + dpdk_flow_unreference(offload, data->pmd_id, data->flow_reference); ovsrcu_postpone(free, data); } @@ -1391,7 +1390,7 @@ vport_to_rte_tunnel(struct netdev *vport, } static int -add_vport_match(struct dpif_offload_dpdk *offload, +add_vport_match(struct dpdk_offload *offload, struct flow_patterns *patterns, odp_port_t orig_in_port, struct netdev *tnldev) @@ -1403,7 +1402,7 @@ add_vport_match(struct dpif_offload_dpdk *offload, struct netdev *physdev; int ret; - physdev = dpif_offload_dpdk_get_netdev(offload, orig_in_port); + physdev = dpdk_get_netdev(offload, orig_in_port); if (physdev == NULL) { return -1; } @@ -1613,7 +1612,7 @@ parse_gre_match(struct flow_patterns *patterns, } static int OVS_UNUSED -parse_flow_tnl_match(struct dpif_offload_dpdk *offload, +parse_flow_tnl_match(struct dpdk_offload *offload, struct netdev *tnldev, struct flow_patterns *patterns, odp_port_t orig_in_port, @@ -1637,7 +1636,7 @@ parse_flow_tnl_match(struct dpif_offload_dpdk *offload, } static int -parse_flow_match(struct dpif_offload_dpdk *offload OVS_UNUSED, +parse_flow_match(struct dpdk_offload *offload OVS_UNUSED, struct netdev *netdev, odp_port_t orig_in_port OVS_UNUSED, struct flow_patterns *patterns, @@ -2078,7 +2077,7 @@ add_represented_port_action(struct flow_actions *actions, } static int -add_output_action(struct dpif_offload_dpdk *offload, +add_output_action(struct dpdk_offload *offload, struct netdev *netdev, struct flow_actions *actions, const struct nlattr *nla) @@ -2088,7 +2087,7 @@ add_output_action(struct dpif_offload_dpdk *offload, int ret = 0; port = nl_attr_get_odp_port(nla); - outdev = dpif_offload_dpdk_get_netdev(offload, port); + outdev = dpdk_get_netdev(offload, port); if (outdev == NULL) { VLOG_DBG_RL(&rl, "Cannot find netdev for odp port %"PRIu32, port); return -1; @@ -2370,7 +2369,7 @@ add_tunnel_push_action(struct flow_actions *actions, } static int -parse_clone_actions(struct dpif_offload_dpdk *offload, +parse_clone_actions(struct dpdk_offload *offload, struct netdev *netdev, struct flow_actions *actions, const struct nlattr *clone_actions, @@ -2412,7 +2411,7 @@ add_jump_action(struct flow_actions *actions, uint32_t group) } static int OVS_UNUSED -add_tnl_pop_action(struct dpif_offload_dpdk *offload, +add_tnl_pop_action(struct dpdk_offload *offload, struct netdev *netdev, struct flow_actions *actions, const struct nlattr *nla) @@ -2426,7 +2425,7 @@ add_tnl_pop_action(struct dpif_offload_dpdk *offload, int ret; port = nl_attr_get_odp_port(nla); - vport = dpif_offload_dpdk_get_netdev(offload, port); + vport = dpdk_get_netdev(offload, port); if (vport == NULL) { return -1; } @@ -2456,7 +2455,7 @@ add_tnl_pop_action(struct dpif_offload_dpdk *offload, } static int -parse_flow_actions(struct dpif_offload_dpdk *offload, +parse_flow_actions(struct dpdk_offload *offload, struct netdev *netdev, struct flow_actions *actions, struct nlattr *nl_actions, @@ -2524,7 +2523,7 @@ parse_flow_actions(struct dpif_offload_dpdk *offload, } static struct rte_flow * -netdev_offload_dpdk_actions(struct dpif_offload_dpdk *offload, +netdev_offload_dpdk_actions(struct dpdk_offload *offload, struct netdev *netdev, struct flow_patterns *patterns, struct nlattr *nl_actions, @@ -2553,7 +2552,7 @@ out: } static struct ufid_to_rte_flow_data * -netdev_offload_dpdk_add_flow(struct dpif_offload_dpdk *offload, +netdev_offload_dpdk_add_flow(struct dpdk_offload *offload, struct pmd_data *pmd_mapping, struct netdev *netdev, struct match *match, @@ -2605,7 +2604,7 @@ out: } static int -netdev_offload_dpdk_flow_destroy(struct dpif_offload_dpdk *offload, +netdev_offload_dpdk_flow_destroy(struct dpdk_offload *offload, struct ufid_to_rte_flow_data *rte_flow_data, bool force_destroy, bool keep_flow_mark) { @@ -2664,8 +2663,7 @@ netdev_offload_dpdk_flow_destroy(struct dpif_offload_dpdk *offload, if (!keep_flow_mark) { /* Do this after ufid_to_rte_flow_disassociate(), as it needs a * valid flow mark to do its work. */ - dpif_offload_dpdk_free_flow_mark(offload, - rte_flow_data->flow_mark); + dpdk_free_flow_mark(offload, rte_flow_data->flow_mark); rte_flow_data->flow_mark = INVALID_FLOW_MARK; } } else { @@ -2700,13 +2698,12 @@ get_netdev_odp_cb(struct netdev *netdev, } int -netdev_offload_dpdk_flow_put(struct dpif_offload_dpdk *offload, - unsigned pmd_id, void *flow_reference, - struct netdev *netdev, struct match *match, - struct nlattr *actions, size_t actions_len, - const ovs_u128 *ufid, odp_port_t orig_in_port, - void **previous_flow_reference, - struct dpif_flow_stats *stats) +dpdk_netdev_flow_put(struct dpdk_offload *offload, unsigned pmd_id, + void *flow_reference, struct netdev *netdev, + struct match *match, struct nlattr *actions, + size_t actions_len, const ovs_u128 *ufid, + odp_port_t orig_in_port, void **previous_flow_reference, + struct dpif_flow_stats *stats) { struct ufid_to_rte_flow_data *rte_flow_data; struct dpif_flow_stats old_stats; @@ -2733,7 +2730,7 @@ netdev_offload_dpdk_flow_put(struct dpif_offload_dpdk *offload, /* Extract the orig_in_port from physdev as in case of modify the one * provided by upper layer cannot be used. */ - dpif_offload_dpdk_traverse_ports(offload, get_netdev_odp_cb, &aux); + dpdk_traverse_ports(offload, get_netdev_odp_cb, &aux); orig_in_port = aux.odp_port; old_stats = rte_flow_data->stats; modification = true; @@ -2752,7 +2749,7 @@ netdev_offload_dpdk_flow_put(struct dpif_offload_dpdk *offload, netdev_offload_dpdk_pmd_data_associate(pmd_mapping, pmd_id, flow_reference); *previous_flow_reference = NULL; - flow_mark = dpif_offload_dpdk_allocate_flow_mark(offload); + flow_mark = dpdk_allocate_flow_mark(offload); } else /* if (rte_flow_data) */ { pmd_mapping = ovsrcu_get(struct pmd_data *, &rte_flow_data->pmd_mapping); @@ -2776,7 +2773,7 @@ netdev_offload_dpdk_flow_put(struct dpif_offload_dpdk *offload, pmd_mapping); ovsrcu_postpone(netdev_offload_dpdk_pmd_data_cleanup_mapping, pmd_mapping); - dpif_offload_dpdk_free_flow_mark(offload, flow_mark); + dpdk_free_flow_mark(offload, flow_mark); return -1; } } @@ -2791,11 +2788,9 @@ netdev_offload_dpdk_flow_put(struct dpif_offload_dpdk *offload, } int -netdev_offload_dpdk_flow_del(struct dpif_offload_dpdk *offload, - struct netdev *netdev, unsigned pmd_id, - const ovs_u128 *ufid, - void *flow_reference, - struct dpif_flow_stats *stats) +dpdk_netdev_flow_del(struct dpdk_offload *offload, struct netdev *netdev, + unsigned pmd_id, const ovs_u128 *ufid, + void *flow_reference, struct dpif_flow_stats *stats) { struct ufid_to_rte_flow_data *rte_flow_data; @@ -2818,8 +2813,7 @@ netdev_offload_dpdk_flow_del(struct dpif_offload_dpdk *offload, } int -netdev_offload_dpdk_init(struct netdev *netdev, - unsigned int offload_thread_count) +dpdk_netdev_init(struct netdev *netdev, unsigned int offload_thread_count) { int ret = EOPNOTSUPP; @@ -2838,7 +2832,7 @@ netdev_offload_dpdk_init(struct netdev *netdev, } void -netdev_offload_dpdk_uninit(struct netdev *netdev) +dpdk_netdev_uninit(struct netdev *netdev) { if (netdev_dpdk_flow_api_supported(netdev, true)) { offload_data_destroy(netdev); @@ -2846,13 +2840,11 @@ netdev_offload_dpdk_uninit(struct netdev *netdev) } int -netdev_offload_dpdk_flow_get(struct netdev *netdev, - struct match *match OVS_UNUSED, - struct nlattr **actions OVS_UNUSED, - const ovs_u128 *ufid, - struct dpif_flow_stats *stats, - struct dpif_flow_attrs *attrs, - struct ofpbuf *buf OVS_UNUSED) +dpdk_netdev_flow_get(struct netdev *netdev, struct match *match OVS_UNUSED, + struct nlattr **actions OVS_UNUSED, const ovs_u128 *ufid, + struct dpif_flow_stats *stats, + struct dpif_flow_attrs *attrs, + struct ofpbuf *buf OVS_UNUSED) { struct rte_flow_query_count query = { .reset = 1 }; struct ufid_to_rte_flow_data *rte_flow_data; @@ -2904,7 +2896,7 @@ out: } static void -flush_netdev_flows_in_related(struct dpif_offload_dpdk *offload, +flush_netdev_flows_in_related(struct dpdk_offload *offload, struct netdev *netdev, struct netdev *related) { unsigned int tid = dpdk_offload_thread_id(); @@ -2925,7 +2917,7 @@ flush_netdev_flows_in_related(struct dpif_offload_dpdk *offload, } } struct flush_in_vport_aux { - struct dpif_offload_dpdk *offload; + struct dpdk_offload *offload; struct netdev *netdev; }; @@ -2945,8 +2937,7 @@ flush_in_vport_cb(struct netdev *vport, } int -netdev_offload_dpdk_flow_flush(struct dpif_offload_dpdk *offload, - struct netdev *netdev) +dpdk_netdev_flow_flush(struct dpdk_offload *offload, struct netdev *netdev) { flush_netdev_flows_in_related(offload, netdev, netdev); @@ -2956,7 +2947,7 @@ netdev_offload_dpdk_flow_flush(struct dpif_offload_dpdk *offload, .netdev = netdev }; - dpif_offload_dpdk_traverse_ports(offload, flush_in_vport_cb, &aux); + dpdk_traverse_ports(offload, flush_in_vport_cb, &aux); } return 0; @@ -3004,7 +2995,7 @@ out: } static struct netdev * -get_vport_netdev(struct dpif_offload_dpdk *offload, +get_vport_netdev(struct dpdk_offload *offload, struct rte_flow_tunnel *tunnel, odp_port_t *odp_port) { @@ -3020,14 +3011,16 @@ get_vport_netdev(struct dpif_offload_dpdk *offload, } else if (tunnel->type == RTE_FLOW_ITEM_TYPE_GRE) { aux.type = "gre"; } - dpif_offload_dpdk_traverse_ports(offload, get_vport_netdev_cb, &aux); + dpdk_traverse_ports(offload, get_vport_netdev_cb, &aux); return aux.vport; } -int netdev_offload_dpdk_hw_miss_packet_recover( - struct dpif_offload_dpdk *offload, struct netdev *netdev, unsigned pmd_id, - struct dp_packet *packet, void **flow_reference) +int +dpdk_netdev_hw_miss_packet_recover(struct dpdk_offload *offload, + struct netdev *netdev, unsigned pmd_id, + struct dp_packet *packet, + void **flow_reference) { struct pmd_id_to_flow_ref_data *pmd_data = NULL; struct rte_flow_restore_info rte_restore_info; @@ -3132,8 +3125,8 @@ close_vport_netdev: } uint64_t -netdev_offload_dpdk_flow_count(struct netdev *netdev, - unsigned int offload_thread_count) +dpdk_netdev_flow_count(struct netdev *netdev, + unsigned int offload_thread_count) { struct netdev_offload_dpdk_data *data; uint64_t total = 0; @@ -3153,8 +3146,7 @@ netdev_offload_dpdk_flow_count(struct netdev *netdev, } uint64_t -netdev_offload_dpdk_flow_count_by_thread(struct netdev *netdev, - unsigned int tid) +dpdk_netdev_flow_count_by_thread(struct netdev *netdev, unsigned int tid) { struct netdev_offload_dpdk_data *data; diff --git a/lib/dpif-offload-dpdk-private.h b/lib/dpif-offload-dpdk-private.h index 716e0f163..738be5e14 100644 --- a/lib/dpif-offload-dpdk-private.h +++ b/lib/dpif-offload-dpdk-private.h @@ -18,56 +18,46 @@ #define DPIF_OFFLOAD_DPDK_PRIVATE_H /* Forward declarations of private structures. */ -struct dpif_offload_dpdk; +struct dpdk_offload; struct netdev; /* DPIF offload dpdk implementation-specific functions. These should only be * used by the associated netdev offload provider, i.e., * dpif-offload-dpdk-netdev. */ unsigned int dpdk_offload_thread_id(void); -void dpif_offload_dpdk_flow_unreference(struct dpif_offload_dpdk *offload, - unsigned pmd_id, void *flow_reference); -uint32_t dpif_offload_dpdk_allocate_flow_mark(struct dpif_offload_dpdk *); -void dpif_offload_dpdk_free_flow_mark(struct dpif_offload_dpdk *, - uint32_t flow_mark); -struct netdev *dpif_offload_dpdk_get_netdev( - const struct dpif_offload_dpdk *, odp_port_t port_no); -void dpif_offload_dpdk_traverse_ports( - const struct dpif_offload_dpdk *offload, - bool (*cb)(struct netdev *, odp_port_t, void *), void *aux); - +void dpdk_flow_unreference(struct dpdk_offload *offload, unsigned pmd_id, + void *flow_reference); +uint32_t dpdk_allocate_flow_mark(struct dpdk_offload *); +void dpdk_free_flow_mark(struct dpdk_offload *, uint32_t flow_mark); +struct netdev *dpdk_get_netdev(const struct dpdk_offload *, + odp_port_t port_no); +void dpdk_traverse_ports(const struct dpdk_offload *offload, + bool (*cb)(struct netdev *, odp_port_t, void *), + void *aux); /* dpif-offload-dpdk-netdev specific offload functions. These should only be * used by the associated dpif offload provider, i.e., dpif-offload-dpdk. */ -int netdev_offload_dpdk_init(struct netdev *, - unsigned int offload_thread_count); -void netdev_offload_dpdk_uninit(struct netdev *); -int netdev_offload_dpdk_flow_flush(struct dpif_offload_dpdk *, - struct netdev *); -uint64_t netdev_offload_dpdk_flow_count(struct netdev *, - unsigned int offload_thread_count); -uint64_t netdev_offload_dpdk_flow_count_by_thread(struct netdev *, - unsigned int tid); -int netdev_offload_dpdk_hw_miss_packet_recover(struct dpif_offload_dpdk *, - struct netdev *, - unsigned pmd_id, - struct dp_packet *, - void **flow_reference); -int netdev_offload_dpdk_flow_put(struct dpif_offload_dpdk *, - unsigned pmd_id, void *flow_reference, - struct netdev *, struct match *, - struct nlattr *actions, size_t actions_len, - const ovs_u128 *ufid, odp_port_t orig_in_port, - void **previous_flow_reference, - struct dpif_flow_stats *); -int netdev_offload_dpdk_flow_del(struct dpif_offload_dpdk *, - struct netdev *, unsigned pmd_id, - const ovs_u128 *ufid, - void *flow_reference, - struct dpif_flow_stats *); -int netdev_offload_dpdk_flow_get(struct netdev *, struct match *, - struct nlattr **actions, const ovs_u128 *ufid, - struct dpif_flow_stats *, - struct dpif_flow_attrs *, struct ofpbuf *buf); +int dpdk_netdev_init(struct netdev *, unsigned int offload_thread_count); +void dpdk_netdev_uninit(struct netdev *); +int dpdk_netdev_flow_flush(struct dpdk_offload *, struct netdev *); +uint64_t dpdk_netdev_flow_count(struct netdev *, + unsigned int offload_thread_count); +uint64_t dpdk_netdev_flow_count_by_thread(struct netdev *, unsigned int tid); +int dpdk_netdev_hw_miss_packet_recover(struct dpdk_offload *, struct netdev *, + unsigned pmd_id, struct dp_packet *, + void **flow_reference); +int dpdk_netdev_flow_put(struct dpdk_offload *, unsigned pmd_id, + void *flow_reference, struct netdev *, struct match *, + struct nlattr *actions, size_t actions_len, + const ovs_u128 *ufid, odp_port_t orig_in_port, + void **previous_flow_reference, + struct dpif_flow_stats *); +int dpdk_netdev_flow_del(struct dpdk_offload *, struct netdev *, + unsigned pmd_id, const ovs_u128 *ufid, + void *flow_reference, struct dpif_flow_stats *); +int dpdk_netdev_flow_get(struct netdev *, struct match *, + struct nlattr **actions, const ovs_u128 *ufid, + struct dpif_flow_stats *, struct dpif_flow_attrs *, + struct ofpbuf *buf); #endif /* DPIF_OFFLOAD_DPDK_PRIVATE_H */ diff --git a/lib/dpif-offload-dpdk.c b/lib/dpif-offload-dpdk.c index 3f7404d2d..ba9e469a8 100644 --- a/lib/dpif-offload-dpdk.c +++ b/lib/dpif-offload-dpdk.c @@ -53,7 +53,7 @@ struct dpdk_offload_thread { atomic_uint64_t enqueued_item; struct mov_avg_cma cma; struct mov_avg_ema ema; - struct dpif_offload_dpdk *offload; + struct dpdk_offload *offload; pthread_t thread; ); }; @@ -74,7 +74,7 @@ struct dpdk_offload_flow_item { struct dpdk_offload_flush_item { struct netdev *netdev; - struct dpif_offload_dpdk *offload; + struct dpdk_offload *offload; struct ovs_barrier *barrier; }; @@ -91,7 +91,7 @@ struct dpdk_offload_thread_item { }; /* dpif offload interface for the dpdk rte_flow implementation. */ -struct dpif_offload_dpdk { +struct dpdk_offload { struct dpif_offload offload; struct dpif_offload_port_mgr *port_mgr; @@ -108,18 +108,18 @@ struct dpif_offload_dpdk { unsigned int offload_thread_count; /* Number of offload threads. */ }; -static struct dpif_offload_dpdk * -dpif_offload_dpdk_cast(const struct dpif_offload *offload) +static struct dpdk_offload * +dpdk_offload_cast(const struct dpif_offload *offload) { dpif_offload_assert_class(offload, &dpif_offload_dpdk_class); - return CONTAINER_OF(offload, struct dpif_offload_dpdk, offload); + return CONTAINER_OF(offload, struct dpdk_offload, offload); } DECLARE_EXTERN_PER_THREAD_DATA(unsigned int, dpdk_offload_thread_id); DEFINE_EXTERN_PER_THREAD_DATA(dpdk_offload_thread_id, OVSTHREAD_ID_UNSET); uint32_t -dpif_offload_dpdk_allocate_flow_mark(struct dpif_offload_dpdk *offload) +dpdk_allocate_flow_mark(struct dpdk_offload *offload) { static struct ovsthread_once init_once = OVSTHREAD_ONCE_INITIALIZER; unsigned int uid = dpdk_offload_thread_id() \ @@ -141,8 +141,7 @@ dpif_offload_dpdk_allocate_flow_mark(struct dpif_offload_dpdk *offload) } void -dpif_offload_dpdk_free_flow_mark(struct dpif_offload_dpdk *offload, - uint32_t flow_mark) +dpdk_free_flow_mark(struct dpdk_offload *offload, uint32_t flow_mark) { if (flow_mark != INVALID_FLOW_MARK) { unsigned int uid = dpdk_offload_thread_id() \ @@ -174,8 +173,7 @@ dpdk_offload_thread_id(void) } static unsigned int -dpif_offload_dpdk_ufid_to_thread_id(struct dpif_offload_dpdk *offload, - const ovs_u128 ufid) +dpdk_ufid_to_thread_id(struct dpdk_offload *offload, const ovs_u128 ufid) { uint32_t ufid_hash; @@ -190,8 +188,7 @@ dpif_offload_dpdk_ufid_to_thread_id(struct dpif_offload_dpdk *offload, } static bool -dpif_offload_dpdk_is_offloading_netdev(struct dpif_offload_dpdk *offload, - struct netdev *netdev) +dpdk_is_offloading_netdev(struct dpdk_offload *offload, struct netdev *netdev) { const struct dpif_offload *netdev_offload; @@ -202,7 +199,7 @@ dpif_offload_dpdk_is_offloading_netdev(struct dpif_offload_dpdk *offload, } static struct dpdk_offload_thread_item * -dpif_offload_dpdk_alloc_flow_offload(int op) +dpdk_alloc_flow_offload(int op) { struct dpdk_offload_thread_item *item; struct dpdk_offload_flow_item *flow_offload; @@ -217,7 +214,7 @@ dpif_offload_dpdk_alloc_flow_offload(int op) } static void -dpif_offload_dpdk_free_flow_offload__(struct dpdk_offload_thread_item *offload) +dpdk_free_flow_offload__(struct dpdk_offload_thread_item *offload) { struct dpdk_offload_flow_item *flow_offload = &offload->data->flow; @@ -226,17 +223,17 @@ dpif_offload_dpdk_free_flow_offload__(struct dpdk_offload_thread_item *offload) } static void -dpif_offload_dpdk_free_flow_offload(struct dpdk_offload_thread_item *offload) +dpdk_free_flow_offload(struct dpdk_offload_thread_item *offload) { - ovsrcu_postpone(dpif_offload_dpdk_free_flow_offload__, offload); + ovsrcu_postpone(dpdk_free_flow_offload__, offload); } static void -dpif_offload_dpdk_free_offload(struct dpdk_offload_thread_item *offload) +dpdk_free_offload(struct dpdk_offload_thread_item *offload) { switch (offload->type) { case DPDK_OFFLOAD_FLOW: - dpif_offload_dpdk_free_flow_offload(offload); + dpdk_free_flow_offload(offload); break; case DPDK_OFFLOAD_FLUSH: free(offload); @@ -247,9 +244,8 @@ dpif_offload_dpdk_free_offload(struct dpdk_offload_thread_item *offload) } static void -dpif_offload_dpdk_append_offload(const struct dpif_offload_dpdk *offload, - struct dpdk_offload_thread_item *item, - unsigned int tid) +dpdk_append_offload(const struct dpdk_offload *offload, + struct dpdk_offload_thread_item *item, unsigned int tid) { ovs_assert(offload->offload_threads); @@ -258,28 +254,28 @@ dpif_offload_dpdk_append_offload(const struct dpif_offload_dpdk *offload, } static void -dpif_offload_dpdk_offload_flow_enqueue(struct dpif_offload_dpdk *offload, - struct dpdk_offload_thread_item *item) +dpdk_offload_flow_enqueue(struct dpdk_offload *offload, + struct dpdk_offload_thread_item *item) { struct dpdk_offload_flow_item *flow_offload = &item->data->flow; unsigned int tid; ovs_assert(item->type == DPDK_OFFLOAD_FLOW); - tid = dpif_offload_dpdk_ufid_to_thread_id(offload, flow_offload->ufid); - dpif_offload_dpdk_append_offload(offload, item, tid); + tid = dpdk_ufid_to_thread_id(offload, flow_offload->ufid); + dpdk_append_offload(offload, item, tid); } static int -dpif_offload_dpdk_offload_del(struct dpdk_offload_thread *thread, - struct dpdk_offload_thread_item *item) +dpdk_offload_del(struct dpdk_offload_thread *thread, + struct dpdk_offload_thread_item *item) { struct dpdk_offload_flow_item *flow = &item->data->flow; struct dpif_flow_stats stats; struct netdev *netdev; int error; - netdev = dpif_offload_dpdk_get_netdev(thread->offload, flow->in_port); + netdev = dpdk_get_netdev(thread->offload, flow->in_port); if (!netdev) { VLOG_DBG("Failed to find netdev for port_id %d", flow->in_port); @@ -291,11 +287,9 @@ dpif_offload_dpdk_offload_del(struct dpdk_offload_thread *thread, * the delete request directly to the dpdk netdev offload code, which * will handle the actual hardware offloaded flow. It will only remove it * when no other PMD needs it. */ - error = netdev_offload_dpdk_flow_del(thread->offload, netdev, - flow->pmd_id, &flow->ufid, - flow->flow_reference, - flow->requested_stats ? &stats - : NULL); + error = dpdk_netdev_flow_del(thread->offload, netdev, flow->pmd_id, + &flow->ufid, flow->flow_reference, + flow->requested_stats ? &stats : NULL); do_callback: dpif_offload_datapath_flow_op_continue(&flow->callback, @@ -308,8 +302,8 @@ do_callback: } static int -dpif_offload_dpdk_offload_put(struct dpdk_offload_thread *thread, - struct dpdk_offload_thread_item *item) +dpdk_offload_put(struct dpdk_offload_thread *thread, + struct dpdk_offload_thread_item *item) { struct dpdk_offload_flow_item *flow = &item->data->flow; void *previous_flow_reference = NULL; @@ -317,7 +311,7 @@ dpif_offload_dpdk_offload_put(struct dpdk_offload_thread *thread, struct netdev *netdev; int error; - netdev = dpif_offload_dpdk_get_netdev(thread->offload, flow->in_port); + netdev = dpdk_get_netdev(thread->offload, flow->in_port); if (!netdev) { VLOG_DBG("Failed to find netdev for port_id %d", flow->in_port); @@ -325,7 +319,7 @@ dpif_offload_dpdk_offload_put(struct dpdk_offload_thread *thread, goto do_callback; } - if (!dpif_offload_dpdk_is_offloading_netdev(thread->offload, netdev)) { + if (!dpdk_is_offloading_netdev(thread->offload, netdev)) { error = EUNATCH; goto do_callback; } @@ -334,17 +328,12 @@ dpif_offload_dpdk_offload_put(struct dpdk_offload_thread *thread, * the put request directly to the dpdk netdev offload code, which * will handle the actual hardware offloaded flow. It will only add it * when no other PMD have it offloaded. */ - error = netdev_offload_dpdk_flow_put(thread->offload, flow->pmd_id, - flow->flow_reference, - netdev, &flow->match, - CONST_CAST(struct nlattr *, - flow->actions), - flow->actions_len, &flow->ufid, - flow->orig_in_port, - &previous_flow_reference, - flow->requested_stats - ? &stats - : NULL); + error = dpdk_netdev_flow_put(thread->offload, flow->pmd_id, + flow->flow_reference, netdev, &flow->match, + CONST_CAST(struct nlattr *, flow->actions), + flow->actions_len, &flow->ufid, + flow->orig_in_port, &previous_flow_reference, + flow->requested_stats ? &stats : NULL); do_callback: dpif_offload_datapath_flow_op_continue(&flow->callback, flow->requested_stats ? &stats @@ -356,8 +345,8 @@ do_callback: } static void -dpif_offload_dpdk_offload_flow(struct dpdk_offload_thread *thread, - struct dpdk_offload_thread_item *item) +dpdk_offload_flow(struct dpdk_offload_thread *thread, + struct dpdk_offload_thread_item *item) { struct dpdk_offload_flow_item *flow_offload = &item->data->flow; const char *op; @@ -366,11 +355,11 @@ dpif_offload_dpdk_offload_flow(struct dpdk_offload_thread *thread, switch (flow_offload->op) { case DPDK_NETDEV_FLOW_OFFLOAD_OP_PUT: op = "put"; - ret = dpif_offload_dpdk_offload_put(thread, item); + ret = dpdk_offload_put(thread, item); break; case DPDK_NETDEV_FLOW_OFFLOAD_OP_DEL: op = "delete"; - ret = dpif_offload_dpdk_offload_del(thread, item); + ret = dpdk_offload_del(thread, item); break; default: OVS_NOT_REACHED(); @@ -382,11 +371,11 @@ dpif_offload_dpdk_offload_flow(struct dpdk_offload_thread *thread, } static void -dpif_offload_dpdk_offload_flush(struct dpdk_offload_thread_item *item) +dpdk_offload_flush(struct dpdk_offload_thread_item *item) { struct dpdk_offload_flush_item *flush = &item->data->flush; - netdev_offload_dpdk_flow_flush(flush->offload, flush->netdev); + dpdk_netdev_flow_flush(flush->offload, flush->netdev); ovs_barrier_block(flush->barrier); } @@ -395,7 +384,7 @@ dpif_offload_dpdk_offload_flush(struct dpdk_offload_thread_item *item) #define DPDK_OFFLOAD_QUIESCE_INTERVAL_US (10 * 1000) /* 10 ms */ static void * -dpif_offload_dpdk_offload_thread_main(void *arg) +dpdk_offload_thread_main(void *arg) { struct dpdk_offload_thread *ofl_thread = arg; struct dpdk_offload_thread_item *offload; @@ -446,10 +435,10 @@ dpif_offload_dpdk_offload_thread_main(void *arg) switch (offload->type) { case DPDK_OFFLOAD_FLOW: - dpif_offload_dpdk_offload_flow(ofl_thread, offload); + dpdk_offload_flow(ofl_thread, offload); break; case DPDK_OFFLOAD_FLUSH: - dpif_offload_dpdk_offload_flush(offload); + dpdk_offload_flush(offload); break; default: OVS_NOT_REACHED(); @@ -460,7 +449,7 @@ dpif_offload_dpdk_offload_thread_main(void *arg) mov_avg_cma_update(&ofl_thread->cma, latency_us); mov_avg_ema_update(&ofl_thread->ema, latency_us); - dpif_offload_dpdk_free_offload(offload); + dpdk_free_offload(offload); /* Do RCU synchronization at fixed interval. */ if (now > next_rcu) { @@ -479,7 +468,7 @@ exit_thread: } static void -dpif_offload_dpdk_offload_threads_init(struct dpif_offload_dpdk *offload) +dpdk_offload_threads_init(struct dpdk_offload *offload) { offload->offload_threads = xcalloc(offload->offload_thread_count, sizeof(struct dpdk_offload_thread)); @@ -493,13 +482,13 @@ dpif_offload_dpdk_offload_threads_init(struct dpif_offload_dpdk *offload) mov_avg_cma_init(&thread->cma); mov_avg_ema_init(&thread->ema, 100); thread->offload = offload; - thread->thread = ovs_thread_create( - "dpdk_offload", dpif_offload_dpdk_offload_thread_main, thread); + thread->thread = ovs_thread_create("dpdk_offload", + dpdk_offload_thread_main, thread); } } static long long int -dpif_offload_dpdk_get_timestamp(void) +dpdk_get_timestamp(void) { /* XXX: We should look for a better, more efficient way to obtain a * timestamp in the fast path, if only used for gathering statistics. */ @@ -507,12 +496,12 @@ dpif_offload_dpdk_get_timestamp(void) } static void -dpif_offload_dpdk_flush_enqueue(struct dpif_offload_dpdk *offload, +dpdk_flush_enqueue(struct dpdk_offload *offload, struct netdev *netdev, struct ovs_barrier *barrier) { unsigned int tid; - long long int now_us = dpif_offload_dpdk_get_timestamp(); + long long int now_us = dpdk_get_timestamp(); if (!dpif_offload_enabled()) { return; @@ -531,7 +520,7 @@ dpif_offload_dpdk_flush_enqueue(struct dpif_offload_dpdk *offload, flush->offload = offload; flush->barrier = barrier; - dpif_offload_dpdk_append_offload(offload, item, tid); + dpdk_append_offload(offload, item, tid); } } @@ -545,8 +534,7 @@ dpif_offload_dpdk_flush_enqueue(struct dpif_offload_dpdk *offload, * for the port. This call must be made blocking until the * offload provider completed its job. */ static void -dpif_offload_dpdk_flush(struct dpif_offload_dpdk *offload, - struct netdev *netdev) +dpdk_flush(struct dpdk_offload *offload, struct netdev *netdev) { /* The flush mutex serves to exclude mutual access to the static * barrier, and to prevent multiple flush orders to several threads. @@ -566,16 +554,16 @@ dpif_offload_dpdk_flush(struct dpif_offload_dpdk *offload, ovs_barrier_init(&barrier, 1 + offload->offload_thread_count); - dpif_offload_dpdk_flush_enqueue(offload, netdev, &barrier); + dpdk_flush_enqueue(offload, netdev, &barrier); ovs_barrier_block(&barrier); ovs_barrier_destroy(&barrier); ovs_mutex_unlock(&flush_mutex); } -void dpif_offload_dpdk_traverse_ports( - const struct dpif_offload_dpdk *offload, - bool (*cb)(struct netdev *, odp_port_t, void *), void *aux) +void dpdk_traverse_ports(const struct dpdk_offload *offload, + bool (*cb)(struct netdev *, odp_port_t, void *), + void *aux) { struct dpif_offload_port_mgr_port *port; @@ -587,39 +575,39 @@ void dpif_offload_dpdk_traverse_ports( } static int -dpif_offload_dpdk_enable_offload(struct dpif_offload *offload_, - struct dpif_offload_port_mgr_port *port) +dpdk_enable_offload(struct dpif_offload *offload_, + struct dpif_offload_port_mgr_port *port) { - struct dpif_offload_dpdk *offload = dpif_offload_dpdk_cast(offload_); + struct dpdk_offload *offload = dpdk_offload_cast(offload_); struct netdev *netdev = port->netdev; - netdev_offload_dpdk_init(netdev, offload->offload_thread_count); + dpdk_netdev_init(netdev, offload->offload_thread_count); dpif_offload_set_netdev_offload(netdev, offload_); return 0; } static int -dpif_offload_dpdk_cleanup_offload(struct dpif_offload *offload_ OVS_UNUSED, - struct dpif_offload_port_mgr_port *port) +dpdk_cleanup_offload(struct dpif_offload *offload_ OVS_UNUSED, + struct dpif_offload_port_mgr_port *port) { struct netdev *netdev = port->netdev; - netdev_offload_dpdk_uninit(netdev); + dpdk_netdev_uninit(netdev); dpif_offload_set_netdev_offload(port->netdev, NULL); return 0; } static int -dpif_offload_dpdk_port_add(struct dpif_offload *offload_, - struct netdev *netdev, odp_port_t port_no) +dpdk_port_add(struct dpif_offload *offload_, struct netdev *netdev, + odp_port_t port_no) { - struct dpif_offload_dpdk *offload = dpif_offload_dpdk_cast(offload_); + struct dpdk_offload *offload = dpdk_offload_cast(offload_); struct dpif_offload_port_mgr_port *port = xmalloc(sizeof *port); if (dpif_offload_port_mgr_add(offload->port_mgr, port, netdev, port_no, false)) { if (dpif_offload_enabled()) { - return dpif_offload_dpdk_enable_offload(offload_, port); + return dpdk_enable_offload(offload_, port); } return 0; } @@ -629,16 +617,16 @@ dpif_offload_dpdk_port_add(struct dpif_offload *offload_, } static void -dpif_offload_dpdk_free_port(struct dpif_offload_port_mgr_port *port) +dpdk_free_port(struct dpif_offload_port_mgr_port *port) { netdev_close(port->netdev); free(port); } static int -dpif_offload_dpdk_port_del(struct dpif_offload *offload_, odp_port_t port_no) +dpdk_port_del(struct dpif_offload *offload_, odp_port_t port_no) { - struct dpif_offload_dpdk *offload = dpif_offload_dpdk_cast(offload_); + struct dpdk_offload *offload = dpdk_offload_cast(offload_); struct dpif_offload_port_mgr_port *port; int ret = 0; @@ -649,51 +637,47 @@ dpif_offload_dpdk_port_del(struct dpif_offload *offload_, odp_port_t port_no) * all pending flow operations, especially the pending delete ones, * before we remove the netdev from the port_mgr list. */ dpif_offload_set_netdev_offload(port->netdev, NULL); - dpif_offload_dpdk_flush(offload, port->netdev); + dpdk_flush(offload, port->netdev); } port = dpif_offload_port_mgr_remove(offload->port_mgr, port_no); if (port) { if (dpif_offload_enabled()) { - ret = dpif_offload_dpdk_cleanup_offload(offload_, port); + ret = dpdk_cleanup_offload(offload_, port); } - ovsrcu_postpone(dpif_offload_dpdk_free_port, port); + ovsrcu_postpone(dpdk_free_port, port); } return ret; } static int -dpif_offload_dpdk_port_dump_start(const struct dpif_offload *offload_, - void **statep) +dpdk_port_dump_start(const struct dpif_offload *offload_, void **statep) { - struct dpif_offload_dpdk *offload = dpif_offload_dpdk_cast(offload_); + struct dpdk_offload *offload = dpdk_offload_cast(offload_); return dpif_offload_port_mgr_port_dump_start(offload->port_mgr, statep); } static int -dpif_offload_dpdk_port_dump_next(const struct dpif_offload *offload_, - void *state, - struct dpif_offload_port *port) +dpdk_port_dump_next(const struct dpif_offload *offload_, void *state, + struct dpif_offload_port *port) { - struct dpif_offload_dpdk *offload = dpif_offload_dpdk_cast(offload_); + struct dpdk_offload *offload = dpdk_offload_cast(offload_); return dpif_offload_port_mgr_port_dump_next(offload->port_mgr, state, port); } static int -dpif_offload_dpdk_port_dump_done(const struct dpif_offload *offload_, - void *state) +dpdk_port_dump_done(const struct dpif_offload *offload_, void *state) { - struct dpif_offload_dpdk *offload = dpif_offload_dpdk_cast(offload_); + struct dpdk_offload *offload = dpdk_offload_cast(offload_); return dpif_offload_port_mgr_port_dump_done(offload->port_mgr, state); } struct netdev * -dpif_offload_dpdk_get_netdev(const struct dpif_offload_dpdk *offload, - odp_port_t port_no) +dpdk_get_netdev(const struct dpdk_offload *offload, odp_port_t port_no) { struct dpif_offload_port_mgr_port *port; @@ -707,21 +691,18 @@ dpif_offload_dpdk_get_netdev(const struct dpif_offload_dpdk *offload, } static struct netdev * -dpif_offload_dpdk_get_netdev_(struct dpif_offload *offload_, - odp_port_t port_no) +dpdk_get_netdev_(struct dpif_offload *offload_, odp_port_t port_no) { - struct dpif_offload_dpdk *offload = dpif_offload_dpdk_cast(offload_); + struct dpdk_offload *offload = dpdk_offload_cast(offload_); - return dpif_offload_dpdk_get_netdev(offload, port_no); + return dpdk_get_netdev(offload, port_no); } static int -dpif_offload_dpdk_open(const struct dpif_offload_class *offload_class, - struct dpif *dpif, struct dpif_offload **offload_) +dpdk_open(const struct dpif_offload_class *offload_class, struct dpif *dpif, + struct dpif_offload **offload_) { - struct dpif_offload_dpdk *offload; - - offload = xmalloc(sizeof *offload); + struct dpdk_offload *offload = xmalloc(sizeof *offload); dpif_offload_init(&offload->offload, offload_class, dpif); offload->port_mgr = dpif_offload_port_mgr_init(); @@ -738,13 +719,13 @@ dpif_offload_dpdk_open(const struct dpif_offload_class *offload_class, } static void -dpif_offload_dpdk_close(struct dpif_offload *offload_) +dpdk_close(struct dpif_offload *offload_) { - struct dpif_offload_dpdk *offload = dpif_offload_dpdk_cast(offload_); + struct dpdk_offload *offload = dpdk_offload_cast(offload_); struct dpif_offload_port_mgr_port *port; DPIF_OFFLOAD_PORT_MGR_PORT_FOR_EACH (port, offload->port_mgr) { - dpif_offload_dpdk_port_del(offload_, port->port_no); + dpdk_port_del(offload_, port->port_no); } atomic_store_relaxed(&offload->offload_thread_shutdown, true); @@ -767,10 +748,9 @@ dpif_offload_dpdk_close(struct dpif_offload *offload_) } static void -dpif_offload_dpdk_set_config(struct dpif_offload *offload_, - const struct smap *other_cfg) +dpdk_set_config(struct dpif_offload *offload_, const struct smap *other_cfg) { - struct dpif_offload_dpdk *offload = dpif_offload_dpdk_cast(offload_); + struct dpdk_offload *offload = dpdk_offload_cast(offload_); if (smap_get_bool(other_cfg, "hw-offload", false)) { if (ovsthread_once_start(&offload->once_enable)) { @@ -791,9 +771,9 @@ dpif_offload_dpdk_set_config(struct dpif_offload *offload_, offload->offload_thread_count = offload_thread_count; - dpif_offload_dpdk_offload_threads_init(offload); + dpdk_offload_threads_init(offload); DPIF_OFFLOAD_PORT_MGR_PORT_FOR_EACH (port, offload->port_mgr) { - dpif_offload_dpdk_enable_offload(offload_, port); + dpdk_enable_offload(offload_, port); } ovsthread_once_done(&offload->once_enable); @@ -802,10 +782,10 @@ dpif_offload_dpdk_set_config(struct dpif_offload *offload_, } static void -dpif_offload_dpdk_get_debug(const struct dpif_offload *offload_, struct ds *ds, - struct json *json) +dpdk_get_debug(const struct dpif_offload *offload_, struct ds *ds, + struct json *json) { - struct dpif_offload_dpdk *offload = dpif_offload_dpdk_cast(offload_); + struct dpdk_offload *offload = dpdk_offload_cast(offload_); if (json) { struct json *json_ports = json_object_create(); @@ -837,8 +817,8 @@ dpif_offload_dpdk_get_debug(const struct dpif_offload *offload_, struct ds *ds, } static bool -dpif_offload_dpdk_can_offload(struct dpif_offload *offload OVS_UNUSED, - struct netdev *netdev) +dpdk_can_offload(struct dpif_offload *offload OVS_UNUSED, + struct netdev *netdev) { if (netdev_vport_is_vport_class(netdev->netdev_class) && strcmp(netdev_get_dpif_type(netdev), "netdev")) { @@ -851,9 +831,9 @@ dpif_offload_dpdk_can_offload(struct dpif_offload *offload OVS_UNUSED, } static uint64_t -dpif_offload_dpdk_flow_count(const struct dpif_offload *offload_) +dpdk_flow_count(const struct dpif_offload *offload_) { - struct dpif_offload_dpdk *offload = dpif_offload_dpdk_cast(offload_); + struct dpdk_offload *offload = dpdk_offload_cast(offload_); struct dpif_offload_port_mgr_port *port; uint64_t total = 0; @@ -862,16 +842,15 @@ dpif_offload_dpdk_flow_count(const struct dpif_offload *offload_) } DPIF_OFFLOAD_PORT_MGR_PORT_FOR_EACH (port, offload->port_mgr) { - total += netdev_offload_dpdk_flow_count(port->netdev, - offload->offload_thread_count); + total += dpdk_netdev_flow_count(port->netdev, + offload->offload_thread_count); } return total; } static uint64_t -dpif_offload_dpdk_flow_count_by_thread(struct dpif_offload_dpdk *offload, - unsigned int tid) +dpdk_flow_count_by_thread(struct dpdk_offload *offload, unsigned int tid) { struct dpif_offload_port_mgr_port *port; uint64_t total = 0; @@ -881,36 +860,35 @@ dpif_offload_dpdk_flow_count_by_thread(struct dpif_offload_dpdk *offload, } DPIF_OFFLOAD_PORT_MGR_PORT_FOR_EACH (port, offload->port_mgr) { - total += netdev_offload_dpdk_flow_count_by_thread(port->netdev, tid); + total += dpdk_netdev_flow_count_by_thread(port->netdev, tid); } return total; } static int -dpif_offload_dpdk_netdev_hw_post_process( - const struct dpif_offload *offload_, struct netdev *netdev, - unsigned pmd_id, struct dp_packet *packet, void **flow_reference) +dpdk_netdev_hw_post_process(const struct dpif_offload *offload_, + struct netdev *netdev, unsigned pmd_id, + struct dp_packet *packet, void **flow_reference) { - struct dpif_offload_dpdk *offload = dpif_offload_dpdk_cast(offload_); + struct dpdk_offload *offload = dpdk_offload_cast(offload_); - return netdev_offload_dpdk_hw_miss_packet_recover(offload, netdev, pmd_id, - packet, flow_reference); + return dpdk_netdev_hw_miss_packet_recover(offload, netdev, pmd_id, packet, + flow_reference); } static int -dpif_offload_dpdk_netdev_flow_put(const struct dpif_offload *offload_, - struct netdev *netdev OVS_UNUSED, - struct dpif_offload_flow_put *put, - void **previous_flow_reference OVS_UNUSED) +dpdk_flow_put(const struct dpif_offload *offload_, + struct netdev *netdev OVS_UNUSED, + struct dpif_offload_flow_put *put, + void **previous_flow_reference OVS_UNUSED) { - struct dpif_offload_dpdk *offload = dpif_offload_dpdk_cast(offload_); + struct dpdk_offload *offload = dpdk_offload_cast(offload_); struct dpdk_offload_thread_item *item; struct dpdk_offload_flow_item *flow_offload; - item = dpif_offload_dpdk_alloc_flow_offload( - DPDK_NETDEV_FLOW_OFFLOAD_OP_PUT); - item->timestamp = dpif_offload_dpdk_get_timestamp(); + item = dpdk_alloc_flow_offload(DPDK_NETDEV_FLOW_OFFLOAD_OP_PUT); + item->timestamp = dpdk_get_timestamp(); flow_offload = &item->data->flow; flow_offload->in_port = put->in_port; @@ -925,22 +903,21 @@ dpif_offload_dpdk_netdev_flow_put(const struct dpif_offload *offload_, flow_offload->requested_stats = !!put->stats; flow_offload->callback = put->cb_data; - dpif_offload_dpdk_offload_flow_enqueue(offload, item); + dpdk_offload_flow_enqueue(offload, item); return EINPROGRESS; } static int -dpif_offload_dpdk_netdev_flow_del(const struct dpif_offload *offload_, - struct netdev *netdev OVS_UNUSED, - struct dpif_offload_flow_del *del) +dpdk_flow_del(const struct dpif_offload *offload_, + struct netdev *netdev OVS_UNUSED, + struct dpif_offload_flow_del *del) { - struct dpif_offload_dpdk *offload = dpif_offload_dpdk_cast(offload_); + struct dpdk_offload *offload = dpdk_offload_cast(offload_); struct dpdk_offload_thread_item *item; struct dpdk_offload_flow_item *flow_offload; - item = dpif_offload_dpdk_alloc_flow_offload( - DPDK_NETDEV_FLOW_OFFLOAD_OP_DEL); - item->timestamp =dpif_offload_dpdk_get_timestamp(); + item = dpdk_alloc_flow_offload(DPDK_NETDEV_FLOW_OFFLOAD_OP_DEL); + item->timestamp =dpdk_get_timestamp(); flow_offload = &item->data->flow; flow_offload->in_port = del->in_port; @@ -950,22 +927,22 @@ dpif_offload_dpdk_netdev_flow_del(const struct dpif_offload *offload_, flow_offload->pmd_id = del->pmd_id; flow_offload->callback = del->cb_data; - dpif_offload_dpdk_offload_flow_enqueue(offload, item); + dpdk_offload_flow_enqueue(offload, item); return EINPROGRESS; } static void -dpif_offload_dpdk_register_flow_unreference_cb( - const struct dpif_offload *offload_, dpif_offload_flow_unreference_cb *cb) +dpdk_register_flow_unreference_cb(const struct dpif_offload *offload_, + dpif_offload_flow_unreference_cb *cb) { - struct dpif_offload_dpdk *offload = dpif_offload_dpdk_cast(offload_); + struct dpdk_offload *offload = dpdk_offload_cast(offload_); offload->unreference_cb = cb; } void -dpif_offload_dpdk_flow_unreference(struct dpif_offload_dpdk *offload, - unsigned pmd_id, void *flow_reference) +dpdk_flow_unreference(struct dpdk_offload *offload, unsigned pmd_id, + void *flow_reference) { if (offload->unreference_cb) { offload->unreference_cb(pmd_id, flow_reference); @@ -973,11 +950,9 @@ dpif_offload_dpdk_flow_unreference(struct dpif_offload_dpdk *offload, } static bool -dpif_offload_dpdk_netdev_flow_stats(const struct dpif_offload *ol OVS_UNUSED, - struct netdev *netdev, - const ovs_u128 *ufid, - struct dpif_flow_stats *stats, - struct dpif_flow_attrs *attrs) +dpdk_flow_stats(const struct dpif_offload *ol OVS_UNUSED, + struct netdev *netdev, const ovs_u128 *ufid, + struct dpif_flow_stats *stats, struct dpif_flow_attrs *attrs) { uint64_t act_buf[1024 / 8]; struct nlattr *actions; @@ -986,15 +961,15 @@ dpif_offload_dpdk_netdev_flow_stats(const struct dpif_offload *ol OVS_UNUSED, ofpbuf_use_stack(&buf, &act_buf, sizeof act_buf); - return !netdev_offload_dpdk_flow_get(netdev, &match, &actions, - ufid, stats, attrs, &buf); + return !dpdk_netdev_flow_get(netdev, &match, &actions, ufid, stats, attrs, + &buf); } static int -dpif_offload_dpdk_get_global_stats(const struct dpif_offload *offload_, - struct netdev_custom_stats *stats) +dpdk_get_global_stats(const struct dpif_offload *offload_, + struct netdev_custom_stats *stats) { - struct dpif_offload_dpdk *offload = dpif_offload_dpdk_cast(offload_); + struct dpdk_offload *offload = dpdk_offload_cast(offload_); unsigned int nb_thread = offload->offload_thread_count; struct dpdk_offload_thread *offload_threads = offload->offload_threads; unsigned int tid; @@ -1044,7 +1019,7 @@ dpif_offload_dpdk_get_global_stats(const struct dpif_offload *offload_, memset(counts, 0, sizeof counts); if (offload_threads != NULL) { counts[DP_NETDEV_HW_OFFLOADS_STATS_INSERTED] = - dpif_offload_dpdk_flow_count_by_thread(offload, tid); + dpdk_flow_count_by_thread(offload, tid); atomic_read_relaxed(&offload_threads[tid].enqueued_item, &counts[DP_NETDEV_HW_OFFLOADS_STATS_ENQUEUED]); @@ -1077,7 +1052,7 @@ dpif_offload_dpdk_get_global_stats(const struct dpif_offload *offload_, /* Get the total offload count. */ hwol_stats[DP_NETDEV_HW_OFFLOADS_STATS_INSERTED].total = - dpif_offload_dpdk_flow_count(offload_); + dpdk_flow_count(offload_); for (i = 0; i < ARRAY_SIZE(hwol_stats); i++) { snprintf(stats->counters[i].name, sizeof(stats->counters[i].name), @@ -1092,23 +1067,22 @@ struct dpif_offload_class dpif_offload_dpdk_class = { .type = "dpdk", .impl_type = DPIF_OFFLOAD_IMPL_FLOWS_DPIF_SYNCED, .supported_dpif_types = (const char *const[]) {"netdev", NULL}, - .open = dpif_offload_dpdk_open, - .close = dpif_offload_dpdk_close, - .set_config = dpif_offload_dpdk_set_config, - .get_debug = dpif_offload_dpdk_get_debug, - .get_global_stats = dpif_offload_dpdk_get_global_stats, - .can_offload = dpif_offload_dpdk_can_offload, - .port_add = dpif_offload_dpdk_port_add, - .port_del = dpif_offload_dpdk_port_del, - .port_dump_start = dpif_offload_dpdk_port_dump_start, - .port_dump_next = dpif_offload_dpdk_port_dump_next, - .port_dump_done = dpif_offload_dpdk_port_dump_done, - .flow_count = dpif_offload_dpdk_flow_count, - .get_netdev = dpif_offload_dpdk_get_netdev_, - .netdev_hw_post_process = dpif_offload_dpdk_netdev_hw_post_process, - .netdev_flow_put = dpif_offload_dpdk_netdev_flow_put, - .netdev_flow_del = dpif_offload_dpdk_netdev_flow_del, - .netdev_flow_stats = dpif_offload_dpdk_netdev_flow_stats, - .register_flow_unreference_cb = - dpif_offload_dpdk_register_flow_unreference_cb, + .open = dpdk_open, + .close = dpdk_close, + .set_config = dpdk_set_config, + .get_debug = dpdk_get_debug, + .get_global_stats = dpdk_get_global_stats, + .can_offload = dpdk_can_offload, + .port_add = dpdk_port_add, + .port_del = dpdk_port_del, + .port_dump_start = dpdk_port_dump_start, + .port_dump_next = dpdk_port_dump_next, + .port_dump_done = dpdk_port_dump_done, + .flow_count = dpdk_flow_count, + .get_netdev = dpdk_get_netdev_, + .netdev_hw_post_process = dpdk_netdev_hw_post_process, + .netdev_flow_put = dpdk_flow_put, + .netdev_flow_del = dpdk_flow_del, + .netdev_flow_stats = dpdk_flow_stats, + .register_flow_unreference_cb = dpdk_register_flow_unreference_cb, }; diff --git a/lib/dpif-offload-dummy.c b/lib/dpif-offload-dummy.c index 519aad56e..b0e55e050 100644 --- a/lib/dpif-offload-dummy.c +++ b/lib/dpif-offload-dummy.c @@ -49,7 +49,7 @@ struct dummy_offloaded_flow { struct hmap pmd_id_map; }; -struct dpif_offload_dummy { +struct dummy_offload { struct dpif_offload offload; struct dpif_offload_port_mgr *port_mgr; struct id_fpool *flow_mark_pool; @@ -59,30 +59,29 @@ struct dpif_offload_dummy { struct ovsthread_once once_enable; /* Track first-time enablement. */ }; -struct dpif_offload_dummy_port { +struct dummy_offload_port { struct dpif_offload_port_mgr_port pm_port; struct ovs_mutex port_mutex; /* Protect all below members. */ struct hmap offloaded_flows OVS_GUARDED; }; -static void dpif_offload_dummy_flow_unreference(struct dpif_offload_dummy *, - unsigned pmd_id, - void *flow_reference); +static void dummy_flow_unreference(struct dummy_offload *, unsigned pmd_id, + void *flow_reference); static uint32_t -dpif_offload_dummy_allocate_flow_mark(struct dpif_offload_dummy *offload_dummy) +dummy_allocate_flow_mark(struct dummy_offload *offload) { static struct ovsthread_once init_once = OVSTHREAD_ONCE_INITIALIZER; uint32_t flow_mark; if (ovsthread_once_start(&init_once)) { /* Haven't initiated yet, do it here. */ - offload_dummy->flow_mark_pool = id_fpool_create(1, 1, UINT32_MAX - 1); + offload->flow_mark_pool = id_fpool_create(1, 1, UINT32_MAX - 1); ovsthread_once_done(&init_once); } - if (id_fpool_new_id(offload_dummy->flow_mark_pool, 0, &flow_mark)) { + if (id_fpool_new_id(offload->flow_mark_pool, 0, &flow_mark)) { return flow_mark; } @@ -90,36 +89,35 @@ dpif_offload_dummy_allocate_flow_mark(struct dpif_offload_dummy *offload_dummy) } static void -dpif_offload_dummy_free_flow_mark(struct dpif_offload_dummy *offload_dummy, - uint32_t flow_mark) +dummy_free_flow_mark(struct dummy_offload *offload, uint32_t flow_mark) { if (flow_mark != INVALID_FLOW_MARK) { - id_fpool_free_id(offload_dummy->flow_mark_pool, 0, flow_mark); + id_fpool_free_id(offload->flow_mark_pool, 0, flow_mark); } } -static struct dpif_offload_dummy_port * -dpif_offload_dummy_cast_port(struct dpif_offload_port_mgr_port *port) +static struct dummy_offload_port * +dummy_offload_port_cast(struct dpif_offload_port_mgr_port *port) { - return CONTAINER_OF(port, struct dpif_offload_dummy_port, pm_port); + return CONTAINER_OF(port, struct dummy_offload_port, pm_port); } -static struct dpif_offload_dummy * -dpif_offload_dummy_cast(const struct dpif_offload *offload) +static struct dummy_offload * +dummy_offload_cast(const struct dpif_offload *offload) { - return CONTAINER_OF(offload, struct dpif_offload_dummy, offload); + return CONTAINER_OF(offload, struct dummy_offload, offload); } static uint32_t -dpif_offload_dummy_flow_hash(const ovs_u128 *ufid) +dummy_flow_hash(const ovs_u128 *ufid) { return ufid->u32[0]; } static struct pmd_id_data * -dpif_offload_dummy_find_flow_pmd_data( - struct dpif_offload_dummy_port *port OVS_UNUSED, - struct dummy_offloaded_flow *off_flow, unsigned pmd_id) +dummy_find_flow_pmd_data(struct dummy_offload_port *port OVS_UNUSED, + struct dummy_offloaded_flow *off_flow, + unsigned pmd_id) OVS_REQUIRES(port->port_mutex) { size_t hash = hash_int(pmd_id, 0); @@ -134,10 +132,9 @@ dpif_offload_dummy_find_flow_pmd_data( } static void -dpif_offload_dummy_add_flow_pmd_data( - struct dpif_offload_dummy_port *port OVS_UNUSED, - struct dummy_offloaded_flow *off_flow, unsigned pmd_id, - void *flow_reference) +dummy_add_flow_pmd_data(struct dummy_offload_port *port OVS_UNUSED, + struct dummy_offloaded_flow *off_flow, unsigned pmd_id, + void *flow_reference) OVS_REQUIRES(port->port_mutex) { struct pmd_id_data *pmd_data = xmalloc(sizeof *pmd_data); @@ -149,31 +146,28 @@ dpif_offload_dummy_add_flow_pmd_data( } static void -dpif_offload_dummy_update_flow_pmd_data( - struct dpif_offload_dummy_port *port, - struct dummy_offloaded_flow *off_flow, unsigned pmd_id, - void *flow_reference, void **previous_flow_reference) +dummy_update_flow_pmd_data(struct dummy_offload_port *port, + struct dummy_offloaded_flow *off_flow, + unsigned pmd_id, void *flow_reference, + void **previous_flow_reference) OVS_REQUIRES(port->port_mutex) { - struct pmd_id_data *data = dpif_offload_dummy_find_flow_pmd_data(port, - off_flow, - pmd_id); + struct pmd_id_data *data = dummy_find_flow_pmd_data(port, off_flow, + pmd_id); if (data) { *previous_flow_reference = data->flow_reference; data->flow_reference = flow_reference; } else { - dpif_offload_dummy_add_flow_pmd_data(port, off_flow, pmd_id, - flow_reference); + dummy_add_flow_pmd_data(port, off_flow, pmd_id, flow_reference); *previous_flow_reference = NULL; } } static bool -dpif_offload_dummy_del_flow_pmd_data( - struct dpif_offload_dummy_port *port OVS_UNUSED, - struct dummy_offloaded_flow *off_flow, unsigned pmd_id, - void *flow_reference) +dummy_del_flow_pmd_data(struct dummy_offload_port *port OVS_UNUSED, + struct dummy_offloaded_flow *off_flow, unsigned pmd_id, + void *flow_reference) OVS_REQUIRES(port->port_mutex) { size_t hash = hash_int(pmd_id, 0); @@ -191,10 +185,9 @@ dpif_offload_dummy_del_flow_pmd_data( } static void -dpif_offload_dummy_cleanup_flow_pmd_data( - struct dpif_offload_dummy *offload, - struct dpif_offload_dummy_port *port OVS_UNUSED, - struct dummy_offloaded_flow *off_flow) +dummy_cleanup_flow_pmd_data(struct dummy_offload *offload, + struct dummy_offload_port *port OVS_UNUSED, + struct dummy_offloaded_flow *off_flow) OVS_REQUIRES(port->port_mutex) { struct pmd_id_data *data; @@ -202,16 +195,14 @@ dpif_offload_dummy_cleanup_flow_pmd_data( HMAP_FOR_EACH_SAFE (data, node, &off_flow->pmd_id_map) { hmap_remove(&off_flow->pmd_id_map, &data->node); - dpif_offload_dummy_flow_unreference(offload, data->pmd_id, - data->flow_reference); + dummy_flow_unreference(offload, data->pmd_id, data->flow_reference); free(data); } } static struct dummy_offloaded_flow * -dpif_offload_dummy_add_flow(struct dpif_offload_dummy_port *port, - const ovs_u128 *ufid, unsigned pmd_id, - void *flow_reference, uint32_t mark) +dummy_add_flow(struct dummy_offload_port *port, const ovs_u128 *ufid, + unsigned pmd_id, void *flow_reference, uint32_t mark) OVS_REQUIRES(port->port_mutex) { struct dummy_offloaded_flow *off_flow = xzalloc(sizeof *off_flow); @@ -219,19 +210,17 @@ dpif_offload_dummy_add_flow(struct dpif_offload_dummy_port *port, off_flow->mark = mark; memcpy(&off_flow->ufid, ufid, sizeof off_flow->ufid); hmap_init(&off_flow->pmd_id_map); - dpif_offload_dummy_add_flow_pmd_data(port, off_flow, pmd_id, - flow_reference); + dummy_add_flow_pmd_data(port, off_flow, pmd_id, flow_reference); hmap_insert(&port->offloaded_flows, &off_flow->node, - dpif_offload_dummy_flow_hash(ufid)); + dummy_flow_hash(ufid)); return off_flow; } static void -dpif_offload_dummy_free_flow(struct dpif_offload_dummy_port *port, - struct dummy_offloaded_flow *off_flow, - bool remove_from_port) +dummy_free_flow(struct dummy_offload_port *port, + struct dummy_offloaded_flow *off_flow, bool remove_from_port) OVS_REQUIRES(port->port_mutex) { if (remove_from_port) { @@ -244,11 +233,11 @@ dpif_offload_dummy_free_flow(struct dpif_offload_dummy_port *port, } static struct dummy_offloaded_flow * -dpif_offload_dummy_find_offloaded_flow(struct dpif_offload_dummy_port *port, - const ovs_u128 *ufid) +dummy_find_offloaded_flow(struct dummy_offload_port *port, + const ovs_u128 *ufid) OVS_REQUIRES(port->port_mutex) { - uint32_t hash = dpif_offload_dummy_flow_hash(ufid); + uint32_t hash = dummy_flow_hash(ufid); struct dummy_offloaded_flow *data; HMAP_FOR_EACH_WITH_HASH (data, node, hash, &port->offloaded_flows) { @@ -261,28 +250,28 @@ dpif_offload_dummy_find_offloaded_flow(struct dpif_offload_dummy_port *port, } static struct dummy_offloaded_flow * -dpif_offload_dummy_find_offloaded_flow_and_update( - struct dpif_offload_dummy_port *port, const ovs_u128 *ufid, - unsigned pmd_id, void *new_flow_reference, void **previous_flow_reference) +dummy_find_offloaded_flow_and_update(struct dummy_offload_port *port, + const ovs_u128 *ufid, unsigned pmd_id, + void *new_flow_reference, + void **previous_flow_reference) OVS_REQUIRES(port->port_mutex) { struct dummy_offloaded_flow *off_flow; - off_flow = dpif_offload_dummy_find_offloaded_flow(port, ufid); + off_flow = dummy_find_offloaded_flow(port, ufid); if (!off_flow) { return NULL; } - dpif_offload_dummy_update_flow_pmd_data(port, off_flow, pmd_id, - new_flow_reference, - previous_flow_reference); + dummy_update_flow_pmd_data(port, off_flow, pmd_id, new_flow_reference, + previous_flow_reference); return off_flow; } static void -dpif_offload_dummy_enable_offload(struct dpif_offload *dpif_offload, - struct dpif_offload_port_mgr_port *port) +dummy_enable_offload(struct dpif_offload *dpif_offload, + struct dpif_offload_port_mgr_port *port) { atomic_store_relaxed(&port->netdev->hw_info.post_process_api_supported, true); @@ -290,22 +279,21 @@ dpif_offload_dummy_enable_offload(struct dpif_offload *dpif_offload, } static void -dpif_offload_dummy_cleanup_offload(struct dpif_offload_port_mgr_port *port) +dummy_cleanup_offload(struct dpif_offload_port_mgr_port *port) { dpif_offload_set_netdev_offload(port->netdev, NULL); } static void -dpif_offload_dummy_free_port__(struct dpif_offload_dummy *offload, - struct dpif_offload_dummy_port *port, - bool close_netdev) +dummy_free_port__(struct dummy_offload *offload, + struct dummy_offload_port *port, bool close_netdev) { struct dummy_offloaded_flow *off_flow; ovs_mutex_lock(&port->port_mutex); HMAP_FOR_EACH_POP (off_flow, node, &port->offloaded_flows) { - dpif_offload_dummy_cleanup_flow_pmd_data(offload, port, off_flow); - dpif_offload_dummy_free_flow(port, off_flow, false); + dummy_cleanup_flow_pmd_data(offload, port, off_flow); + dummy_free_flow(port, off_flow, false); } hmap_destroy(&port->offloaded_flows); ovs_mutex_unlock(&port->port_mutex); @@ -317,116 +305,104 @@ dpif_offload_dummy_free_port__(struct dpif_offload_dummy *offload, } struct free_port_rcu { - struct dpif_offload_dummy *offload; - struct dpif_offload_dummy_port *port; + struct dummy_offload *offload; + struct dummy_offload_port *port; }; static void -dpif_offload_dummy_free_port_rcu(struct free_port_rcu *fpc) +dummy_free_port_rcu(struct free_port_rcu *fpc) { - dpif_offload_dummy_free_port__(fpc->offload, fpc->port, true); + dummy_free_port__(fpc->offload, fpc->port, true); free(fpc); } static void -dpif_offload_dummy_free_port(struct dpif_offload_dummy *offload, - struct dpif_offload_dummy_port *port) +dummy_free_port(struct dummy_offload *offload, struct dummy_offload_port *port) { struct free_port_rcu *fpc = xmalloc(sizeof *fpc); fpc->offload = offload; fpc->port = port; - ovsrcu_postpone(dpif_offload_dummy_free_port_rcu, fpc); + ovsrcu_postpone(dummy_free_port_rcu, fpc); } static int -dpif_offload_dummy_port_add(struct dpif_offload *dpif_offload, - struct netdev *netdev, odp_port_t port_no) +dummy_port_add(struct dpif_offload *dpif_offload, struct netdev *netdev, + odp_port_t port_no) { - struct dpif_offload_dummy_port *port = xmalloc(sizeof *port); - struct dpif_offload_dummy *offload_dummy; + struct dummy_offload *offload = dummy_offload_cast(dpif_offload); + struct dummy_offload_port *port = xmalloc(sizeof *port); ovs_mutex_init(&port->port_mutex); ovs_mutex_lock(&port->port_mutex); hmap_init(&port->offloaded_flows); ovs_mutex_unlock(&port->port_mutex); - offload_dummy = dpif_offload_dummy_cast(dpif_offload); - if (dpif_offload_port_mgr_add(offload_dummy->port_mgr, &port->pm_port, + if (dpif_offload_port_mgr_add(offload->port_mgr, &port->pm_port, netdev, port_no, false)) { if (dpif_offload_enabled()) { - dpif_offload_dummy_enable_offload(dpif_offload, &port->pm_port); + dummy_enable_offload(dpif_offload, &port->pm_port); } return 0; } - dpif_offload_dummy_free_port__(offload_dummy, port, false); + dummy_free_port__(offload, port, false); return EEXIST; } static int -dpif_offload_dummy_port_del(struct dpif_offload *dpif_offload, - odp_port_t port_no) +dummy_port_del(struct dpif_offload *dpif_offload, odp_port_t port_no) { - struct dpif_offload_dummy *offload_dummy; + struct dummy_offload *offload = dummy_offload_cast(dpif_offload); struct dpif_offload_port_mgr_port *port; - offload_dummy = dpif_offload_dummy_cast(dpif_offload); - - port = dpif_offload_port_mgr_remove(offload_dummy->port_mgr, port_no); + port = dpif_offload_port_mgr_remove(offload->port_mgr, port_no); if (port) { - struct dpif_offload_dummy_port *dummy_port; + struct dummy_offload_port *dummy_port; - dummy_port = dpif_offload_dummy_cast_port(port); + dummy_port = dummy_offload_port_cast(port); if (dpif_offload_enabled()) { - dpif_offload_dummy_cleanup_offload(port); + dummy_cleanup_offload(port); } - dpif_offload_dummy_free_port(offload_dummy, dummy_port); + dummy_free_port(offload, dummy_port); } return 0; } static int -dpif_offload_dummy_port_dump_start(const struct dpif_offload *offload_, - void **statep) +dummy_port_dump_start(const struct dpif_offload *offload_, void **statep) { - struct dpif_offload_dummy *offload = dpif_offload_dummy_cast(offload_); + struct dummy_offload *offload = dummy_offload_cast(offload_); return dpif_offload_port_mgr_port_dump_start(offload->port_mgr, statep); } static int -dpif_offload_dummy_port_dump_next(const struct dpif_offload *offload_, - void *state, - struct dpif_offload_port *port) +dummy_port_dump_next(const struct dpif_offload *offload_, void *state, + struct dpif_offload_port *port) { - struct dpif_offload_dummy *offload = dpif_offload_dummy_cast(offload_); + struct dummy_offload *offload = dummy_offload_cast(offload_); return dpif_offload_port_mgr_port_dump_next(offload->port_mgr, state, port); } static int -dpif_offload_dummy_port_dump_done(const struct dpif_offload *offload_, - void *state) +dummy_port_dump_done(const struct dpif_offload *offload_, void *state) { - struct dpif_offload_dummy *offload = dpif_offload_dummy_cast(offload_); + struct dummy_offload *offload = dummy_offload_cast(offload_); return dpif_offload_port_mgr_port_dump_done(offload->port_mgr, state); } static struct netdev * -dpif_offload_dummy_get_netdev(struct dpif_offload *dpif_offload, - odp_port_t port_no) +dummy_get_netdev(struct dpif_offload *dpif_offload, odp_port_t port_no) { - struct dpif_offload_dummy *offload_dummy; + struct dummy_offload *offload = dummy_offload_cast(dpif_offload); struct dpif_offload_port_mgr_port *port; - offload_dummy = dpif_offload_dummy_cast(dpif_offload); - - port = dpif_offload_port_mgr_find_by_odp_port(offload_dummy->port_mgr, - port_no); + port = dpif_offload_port_mgr_find_by_odp_port(offload->port_mgr, port_no); if (!port) { return NULL; } @@ -435,82 +411,74 @@ dpif_offload_dummy_get_netdev(struct dpif_offload *dpif_offload, } static int -dpif_offload_dummy_open(const struct dpif_offload_class *offload_class, - struct dpif *dpif, struct dpif_offload **dpif_offload) +dummy_open(const struct dpif_offload_class *offload_class, struct dpif *dpif, + struct dpif_offload **dpif_offload) { - struct dpif_offload_dummy *offload_dummy; + struct dummy_offload *offload; - offload_dummy = xmalloc(sizeof *offload_dummy); + offload = xmalloc(sizeof *offload); - dpif_offload_init(&offload_dummy->offload, offload_class, dpif); - offload_dummy->port_mgr = dpif_offload_port_mgr_init(); - offload_dummy->once_enable = - (struct ovsthread_once) OVSTHREAD_ONCE_INITIALIZER; - offload_dummy->flow_mark_pool = NULL; - offload_dummy->unreference_cb = NULL; + dpif_offload_init(&offload->offload, offload_class, dpif); + offload->port_mgr = dpif_offload_port_mgr_init(); + offload->once_enable = (struct ovsthread_once) OVSTHREAD_ONCE_INITIALIZER; + offload->flow_mark_pool = NULL; + offload->unreference_cb = NULL; - *dpif_offload = &offload_dummy->offload; + *dpif_offload = &offload->offload; return 0; } static void -dpif_offload_dummy_close(struct dpif_offload *dpif_offload) +dummy_close(struct dpif_offload *dpif_offload) { - struct dpif_offload_dummy *offload_dummy; - - offload_dummy = dpif_offload_dummy_cast(dpif_offload); + struct dummy_offload *offload = dummy_offload_cast(dpif_offload); /* The ofproto layer may not call dpif_port_del() for all ports, * especially internal ones, so we need to clean up any remaining ports. */ struct dpif_offload_port_mgr_port *port; - DPIF_OFFLOAD_PORT_MGR_PORT_FOR_EACH (port, offload_dummy->port_mgr) { - dpif_offload_dummy_port_del(dpif_offload, port->port_no); + DPIF_OFFLOAD_PORT_MGR_PORT_FOR_EACH (port, offload->port_mgr) { + dummy_port_del(dpif_offload, port->port_no); } - dpif_offload_port_mgr_uninit(offload_dummy->port_mgr); - if (offload_dummy->flow_mark_pool) { - id_fpool_destroy(offload_dummy->flow_mark_pool); + dpif_offload_port_mgr_uninit(offload->port_mgr); + if (offload->flow_mark_pool) { + id_fpool_destroy(offload->flow_mark_pool); } - ovsthread_once_destroy(&offload_dummy->once_enable); - free(offload_dummy); + ovsthread_once_destroy(&offload->once_enable); + free(offload); } static void -dpif_offload_dummy_set_config(struct dpif_offload *dpif_offload, - const struct smap *other_cfg) +dummy_set_config(struct dpif_offload *dpif_offload, + const struct smap *other_cfg) { - struct dpif_offload_dummy *offload_dummy; - - offload_dummy = dpif_offload_dummy_cast(dpif_offload); + struct dummy_offload *offload = dummy_offload_cast(dpif_offload); if (smap_get_bool(other_cfg, "hw-offload", false)) { - if (ovsthread_once_start(&offload_dummy->once_enable)) { + if (ovsthread_once_start(&offload->once_enable)) { struct dpif_offload_port_mgr_port *port; - DPIF_OFFLOAD_PORT_MGR_PORT_FOR_EACH (port, - offload_dummy->port_mgr) { - dpif_offload_dummy_enable_offload(dpif_offload, port); + DPIF_OFFLOAD_PORT_MGR_PORT_FOR_EACH (port, offload->port_mgr) { + dummy_enable_offload(dpif_offload, port); } - ovsthread_once_done(&offload_dummy->once_enable); + ovsthread_once_done(&offload->once_enable); } } } static void -dpif_offload_dummy_get_debug(const struct dpif_offload *offload, struct ds *ds, - struct json *json) +dummy_get_debug(const struct dpif_offload *offload_, struct ds *ds, + struct json *json) { - struct dpif_offload_dummy *offload_dummy; - - offload_dummy = dpif_offload_dummy_cast(offload); + struct dummy_offload *offload = dummy_offload_cast(offload_); if (json) { struct json *json_ports = json_object_create(); struct dpif_offload_port_mgr_port *port; - DPIF_OFFLOAD_PORT_MGR_PORT_FOR_EACH (port, offload_dummy->port_mgr) { + DPIF_OFFLOAD_PORT_MGR_PORT_FOR_EACH (port, offload->port_mgr) { struct json *json_port = json_object_create(); json_object_put(json_port, "port_no", @@ -528,7 +496,7 @@ dpif_offload_dummy_get_debug(const struct dpif_offload *offload, struct ds *ds, } else if (ds) { struct dpif_offload_port_mgr_port *port; - DPIF_OFFLOAD_PORT_MGR_PORT_FOR_EACH (port, offload_dummy->port_mgr) { + DPIF_OFFLOAD_PORT_MGR_PORT_FOR_EACH (port, offload->port_mgr) { ds_put_format(ds, " - %s: port_no: %u\n", netdev_get_name(port->netdev), port->port_no); } @@ -536,10 +504,10 @@ dpif_offload_dummy_get_debug(const struct dpif_offload *offload, struct ds *ds, } static int -dpif_offload_dummy_get_global_stats(const struct dpif_offload *offload_, - struct netdev_custom_stats *stats) +dummy_get_global_stats(const struct dpif_offload *offload_, + struct netdev_custom_stats *stats) { - struct dpif_offload_dummy *offload = dpif_offload_dummy_cast(offload_); + struct dummy_offload *offload = dummy_offload_cast(offload_); /* Add a single counter telling how many ports we are servicing. */ stats->label = xstrdup(dpif_offload_name(offload_)); @@ -554,46 +522,45 @@ dpif_offload_dummy_get_global_stats(const struct dpif_offload *offload_, } static bool -dpif_offload_dummy_can_offload(struct dpif_offload *dpif_offload OVS_UNUSED, - struct netdev *netdev) +dummy_can_offload(struct dpif_offload *dpif_offload OVS_UNUSED, + struct netdev *netdev) { return is_dummy_netdev_class(netdev->netdev_class); } static void -dpif_offload_dummy_log_operation(const char *op, int error, - const ovs_u128 *ufid) +dummy_log_operation(const char *op, int error, const ovs_u128 *ufid) { VLOG_DBG("%s to %s netdev flow "UUID_FMT, error == 0 ? "succeed" : "failed", op, UUID_ARGS((struct uuid *) ufid)); } -static struct dpif_offload_dummy_port * -dpif_offload_dummy_get_port_by_netdev(const struct dpif_offload *offload_, - struct netdev *netdev) +static struct dummy_offload_port * +dummy_get_port_by_netdev(const struct dpif_offload *offload_, + struct netdev *netdev) { - struct dpif_offload_dummy *offload = dpif_offload_dummy_cast(offload_); + struct dummy_offload *offload = dummy_offload_cast(offload_); struct dpif_offload_port_mgr_port *port; port = dpif_offload_port_mgr_find_by_netdev(offload->port_mgr, netdev); if (!port) { return NULL; } - return dpif_offload_dummy_cast_port(port); + return dummy_offload_port_cast(port); } static int -dpif_offload_dummy_netdev_hw_post_process( - const struct dpif_offload *offload_, struct netdev *netdev, - unsigned pmd_id, struct dp_packet *packet, void **flow_reference_) +dummy_netdev_hw_post_process(const struct dpif_offload *offload_, + struct netdev *netdev, unsigned pmd_id, + struct dp_packet *packet, void **flow_reference_) { struct dummy_offloaded_flow *off_flow; - struct dpif_offload_dummy_port *port; + struct dummy_offload_port *port; void *flow_reference = NULL; uint32_t flow_mark; - port = dpif_offload_dummy_get_port_by_netdev(offload_, netdev); + port = dummy_get_port_by_netdev(offload_, netdev); if (!port || !dp_packet_has_flow_mark(packet, &flow_mark)) { *flow_reference_ = NULL; return 0; @@ -604,8 +571,7 @@ dpif_offload_dummy_netdev_hw_post_process( struct pmd_id_data *pmd_data; if (flow_mark == off_flow->mark) { - pmd_data = dpif_offload_dummy_find_flow_pmd_data(port, off_flow, - pmd_id); + pmd_data = dummy_find_flow_pmd_data(port, off_flow, pmd_id); if (pmd_data) { flow_reference = pmd_data->flow_reference; } @@ -619,18 +585,17 @@ dpif_offload_dummy_netdev_hw_post_process( } static int -dpif_offload_dummy_netdev_flow_put(const struct dpif_offload *offload_, - struct netdev *netdev, - struct dpif_offload_flow_put *put, - void **previous_flow_reference) +dummy_netdev_flow_put(const struct dpif_offload *offload_, + struct netdev *netdev, struct dpif_offload_flow_put *put, + void **previous_flow_reference) { - struct dpif_offload_dummy *offload = dpif_offload_dummy_cast(offload_); + struct dummy_offload *offload = dummy_offload_cast(offload_); struct dummy_offloaded_flow *off_flow; - struct dpif_offload_dummy_port *port; + struct dummy_offload_port *port; bool modify = true; int error = 0; - port = dpif_offload_dummy_get_port_by_netdev(offload_, netdev); + port = dummy_get_port_by_netdev(offload_, netdev); if (!port) { error = ENODEV; goto exit; @@ -638,21 +603,21 @@ dpif_offload_dummy_netdev_flow_put(const struct dpif_offload *offload_, ovs_mutex_lock(&port->port_mutex); - off_flow = dpif_offload_dummy_find_offloaded_flow_and_update( + off_flow = dummy_find_offloaded_flow_and_update( port, put->ufid, put->pmd_id, put->flow_reference, previous_flow_reference); if (!off_flow) { /* Create new offloaded flow. */ - uint32_t mark = dpif_offload_dummy_allocate_flow_mark(offload); + uint32_t mark = dummy_allocate_flow_mark(offload); if (mark == INVALID_FLOW_MARK) { error = ENOSPC; goto exit_unlock; } - off_flow = dpif_offload_dummy_add_flow(port, put->ufid, put->pmd_id, - put->flow_reference, mark); + off_flow = dummy_add_flow(port, put->ufid, put->pmd_id, + put->flow_reference, mark); modify = false; *previous_flow_reference = NULL; } @@ -686,23 +651,21 @@ exit: memset(put->stats, 0, sizeof *put->stats); } - dpif_offload_dummy_log_operation(modify ? "modify" : "add", error, - put->ufid); + dummy_log_operation(modify ? "modify" : "add", error, put->ufid); return error; } static int -dpif_offload_dummy_netdev_flow_del(const struct dpif_offload *offload_, - struct netdev *netdev, - struct dpif_offload_flow_del *del) +dummy_netdev_flow_del(const struct dpif_offload *offload_, + struct netdev *netdev, struct dpif_offload_flow_del *del) { - struct dpif_offload_dummy *offload = dpif_offload_dummy_cast(offload_); + struct dummy_offload *offload = dummy_offload_cast(offload_); struct dummy_offloaded_flow *off_flow; - struct dpif_offload_dummy_port *port; + struct dummy_offload_port *port; uint32_t mark = INVALID_FLOW_MARK; const char *error = NULL; - port = dpif_offload_dummy_get_port_by_netdev(offload_, netdev); + port = dummy_get_port_by_netdev(offload_, netdev); if (!port) { error = "No such (net)device."; goto exit; @@ -710,22 +673,22 @@ dpif_offload_dummy_netdev_flow_del(const struct dpif_offload *offload_, ovs_mutex_lock(&port->port_mutex); - off_flow = dpif_offload_dummy_find_offloaded_flow(port, del->ufid); + off_flow = dummy_find_offloaded_flow(port, del->ufid); if (!off_flow) { error = "No such flow."; goto exit_unlock; } - if (!dpif_offload_dummy_del_flow_pmd_data(port, off_flow, del->pmd_id, - del->flow_reference)) { + if (!dummy_del_flow_pmd_data(port, off_flow, del->pmd_id, + del->flow_reference)) { error = "No such flow with pmd_id and reference."; goto exit_unlock; } mark = off_flow->mark; if (!hmap_count(&off_flow->pmd_id_map)) { - dpif_offload_dummy_free_flow_mark(offload, mark); - dpif_offload_dummy_free_flow(port, off_flow, true); + dummy_free_flow_mark(offload, mark); + dummy_free_flow(port, off_flow, true); } exit_unlock: @@ -754,27 +717,26 @@ exit: memset(del->stats, 0, sizeof *del->stats); } - dpif_offload_dummy_log_operation("delete", error ? -1 : 0, del->ufid); + dummy_log_operation("delete", error ? -1 : 0, del->ufid); return error ? ENOENT : 0; } static bool -dpif_offload_dummy_netdev_flow_stats(const struct dpif_offload *offload_, - struct netdev *netdev, - const ovs_u128 *ufid, - struct dpif_flow_stats *stats, - struct dpif_flow_attrs *attrs) +dummy_netdev_flow_stats(const struct dpif_offload *offload_, + struct netdev *netdev, const ovs_u128 *ufid, + struct dpif_flow_stats *stats, + struct dpif_flow_attrs *attrs) { struct dummy_offloaded_flow *off_flow = NULL; - struct dpif_offload_dummy_port *port; + struct dummy_offload_port *port; - port = dpif_offload_dummy_get_port_by_netdev(offload_, netdev); + port = dummy_get_port_by_netdev(offload_, netdev); if (!port) { return false; } ovs_mutex_lock(&port->port_mutex); - off_flow = dpif_offload_dummy_find_offloaded_flow(port, ufid); + off_flow = dummy_find_offloaded_flow(port, ufid); ovs_mutex_unlock(&port->port_mutex); memset(stats, 0, sizeof *stats); @@ -786,31 +748,30 @@ dpif_offload_dummy_netdev_flow_stats(const struct dpif_offload *offload_, } static void -dpif_offload_dummy_register_flow_unreference_cb( - const struct dpif_offload *offload_, dpif_offload_flow_unreference_cb *cb) +dummy_register_flow_unreference_cb(const struct dpif_offload *offload_, + dpif_offload_flow_unreference_cb *cb) { - struct dpif_offload_dummy *offload = dpif_offload_dummy_cast(offload_); + struct dummy_offload *offload = dummy_offload_cast(offload_); offload->unreference_cb = cb; } static void -dpif_offload_dummy_flow_unreference(struct dpif_offload_dummy *offload, - unsigned pmd_id, void *flow_reference) +dummy_flow_unreference(struct dummy_offload *offload, unsigned pmd_id, + void *flow_reference) { if (offload->unreference_cb) { offload->unreference_cb(pmd_id, flow_reference); } } -void -dpif_offload_dummy_netdev_simulate_offload(struct netdev *netdev, - struct dp_packet *packet, - struct flow *flow) +void dpif_offload_dummy_netdev_simulate_offload(struct netdev *netdev, + struct dp_packet *packet, + struct flow *flow) { const struct dpif_offload *offload = ovsrcu_get( const struct dpif_offload *, &netdev->dpif_offload); - struct dpif_offload_dummy_port *port; + struct dummy_offload_port *port; struct dummy_offloaded_flow *data; struct flow packet_flow; @@ -818,7 +779,7 @@ dpif_offload_dummy_netdev_simulate_offload(struct netdev *netdev, return; } - port = dpif_offload_dummy_get_port_by_netdev(offload, netdev); + port = dummy_get_port_by_netdev(offload, netdev); if (!port) { return; } @@ -859,30 +820,28 @@ dpif_offload_dummy_netdev_simulate_offload(struct netdev *netdev, ovs_mutex_unlock(&port->port_mutex); } -#define DEFINE_DPIF_DUMMY_CLASS(NAME, TYPE_STR) \ - struct dpif_offload_class NAME = { \ - .type = TYPE_STR, \ - .impl_type = DPIF_OFFLOAD_IMPL_FLOWS_DPIF_SYNCED, \ - .supported_dpif_types = (const char *const[]) {"dummy", NULL}, \ - .open = dpif_offload_dummy_open, \ - .close = dpif_offload_dummy_close, \ - .set_config = dpif_offload_dummy_set_config, \ - .get_debug = dpif_offload_dummy_get_debug, \ - .get_global_stats = dpif_offload_dummy_get_global_stats, \ - .can_offload = dpif_offload_dummy_can_offload, \ - .port_add = dpif_offload_dummy_port_add, \ - .port_del = dpif_offload_dummy_port_del, \ - .port_dump_start = dpif_offload_dummy_port_dump_start, \ - .port_dump_next = dpif_offload_dummy_port_dump_next, \ - .port_dump_done = dpif_offload_dummy_port_dump_done, \ - .get_netdev = dpif_offload_dummy_get_netdev, \ - .netdev_hw_post_process = \ - dpif_offload_dummy_netdev_hw_post_process, \ - .netdev_flow_put = dpif_offload_dummy_netdev_flow_put, \ - .netdev_flow_del = dpif_offload_dummy_netdev_flow_del, \ - .netdev_flow_stats = dpif_offload_dummy_netdev_flow_stats, \ - .register_flow_unreference_cb = \ - dpif_offload_dummy_register_flow_unreference_cb, \ +#define DEFINE_DPIF_DUMMY_CLASS(NAME, TYPE_STR) \ + struct dpif_offload_class NAME = { \ + .type = TYPE_STR, \ + .impl_type = DPIF_OFFLOAD_IMPL_FLOWS_DPIF_SYNCED, \ + .supported_dpif_types = (const char *const[]) {"dummy", NULL}, \ + .open = dummy_open, \ + .close = dummy_close, \ + .set_config = dummy_set_config, \ + .get_debug = dummy_get_debug, \ + .get_global_stats = dummy_get_global_stats, \ + .can_offload = dummy_can_offload, \ + .port_add = dummy_port_add, \ + .port_del = dummy_port_del, \ + .port_dump_start = dummy_port_dump_start, \ + .port_dump_next = dummy_port_dump_next, \ + .port_dump_done = dummy_port_dump_done, \ + .get_netdev = dummy_get_netdev, \ + .netdev_hw_post_process = dummy_netdev_hw_post_process, \ + .netdev_flow_put = dummy_netdev_flow_put, \ + .netdev_flow_del = dummy_netdev_flow_del, \ + .netdev_flow_stats = dummy_netdev_flow_stats, \ + .register_flow_unreference_cb = dummy_register_flow_unreference_cb, \ } DEFINE_DPIF_DUMMY_CLASS(dpif_offload_dummy_class, "dummy"); diff --git a/lib/dpif-offload-tc-netdev.c b/lib/dpif-offload-tc-netdev.c index f40cf7342..c92069b43 100644 --- a/lib/dpif-offload-tc-netdev.c +++ b/lib/dpif-offload-tc-netdev.c @@ -564,7 +564,7 @@ delete_chains_from_netdev(struct netdev *netdev, struct tcf_id *id) } int -tc_flow_flush(struct netdev *netdev) +tc_netdev_flow_flush(struct netdev *netdev) { struct ufid_tc_data *data; int err; @@ -586,8 +586,8 @@ tc_flow_flush(struct netdev *netdev) } int -tc_flow_dump_create(struct netdev *netdev, - struct netdev_tc_flow_dump **dump_out, bool terse) +tc_netdev_flow_dump_create(struct netdev *netdev, + struct netdev_tc_flow_dump **dump_out, bool terse) { enum tc_qdisc_hook hook = get_tc_qdisc_hook(netdev); struct netdev_tc_flow_dump *dump; @@ -617,7 +617,7 @@ tc_flow_dump_create(struct netdev *netdev, return 0; } int -tc_flow_dump_destroy(struct netdev_tc_flow_dump *dump) +tc_netdev_flow_dump_destroy(struct netdev_tc_flow_dump *dump) { nl_dump_done(dump->nl_dump); netdev_close(dump->netdev); @@ -837,7 +837,7 @@ netdev_tc_get_port_id_by_ifindex(const struct netdev *in_netdev, int ifindex) return ODPP_NONE; } - return dpif_offload_tc_get_port_id_by_ifindex(offload, ifindex); + return tc_get_port_id_by_ifindex(offload, ifindex); } static int @@ -1364,10 +1364,11 @@ parse_tc_flower_to_match(const struct netdev *netdev, } bool -tc_flow_dump_next(struct netdev_tc_flow_dump *dump, struct match *match, - struct nlattr **actions, struct dpif_flow_stats *stats, - struct dpif_flow_attrs *attrs, ovs_u128 *ufid, - struct ofpbuf *rbuffer, struct ofpbuf *wbuffer) +tc_netdev_flow_dump_next(struct netdev_tc_flow_dump *dump, struct match *match, + struct nlattr **actions, + struct dpif_flow_stats *stats, + struct dpif_flow_attrs *attrs, ovs_u128 *ufid, + struct ofpbuf *rbuffer, struct ofpbuf *wbuffer) { struct netdev *netdev = dump->netdev; struct ofpbuf nl_flow; @@ -2310,12 +2311,11 @@ netdev_tc_parse_nl_actions(struct dpif *dpif, struct netdev *netdev, return 0; } -int -netdev_offload_tc_flow_put(struct dpif *dpif, struct netdev *netdev, - struct match *match, struct nlattr *actions, - size_t actions_len, const ovs_u128 *ufid, - struct tc_offload_info *info, - struct dpif_flow_stats *stats) +int tc_netdev_flow_put(struct dpif *dpif, struct netdev *netdev, + struct match *match, struct nlattr *actions, + size_t actions_len, const ovs_u128 *ufid, + struct tc_offload_info *info, + struct dpif_flow_stats *stats) { static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(5, 20); enum tc_qdisc_hook hook = get_tc_qdisc_hook(netdev); @@ -2738,14 +2738,10 @@ netdev_offload_tc_flow_put(struct dpif *dpif, struct netdev *netdev, return err; } -int -netdev_offload_tc_flow_get(struct netdev *netdev, - struct match *match, - struct nlattr **actions, - const ovs_u128 *ufid, - struct dpif_flow_stats *stats, - struct dpif_flow_attrs *attrs, - struct ofpbuf *buf) +int tc_netdev_flow_get(struct netdev *netdev, struct match *match, + struct nlattr **actions, const ovs_u128 *ufid, + struct dpif_flow_stats *stats, + struct dpif_flow_attrs *attrs, struct ofpbuf *buf) { static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(5, 20); struct tc_flower flower; @@ -2796,8 +2792,7 @@ netdev_offload_tc_flow_get(struct netdev *netdev, } int -netdev_offload_tc_flow_del(const ovs_u128 *ufid, - struct dpif_flow_stats *stats) +tc_netdev_flow_del(const ovs_u128 *ufid, struct dpif_flow_stats *stats) { struct tcf_id id; int error; @@ -2811,7 +2806,7 @@ netdev_offload_tc_flow_del(const ovs_u128 *ufid, } uint64_t -dpif_offload_tc_flow_count(const struct dpif_offload *offload OVS_UNUSED) +tc_flow_count(const struct dpif_offload *offload OVS_UNUSED) { uint64_t total; @@ -3160,7 +3155,7 @@ tc_cleanup_policer_actions(struct id_pool *police_ids, } void -dpif_offload_tc_meter_init(void) +tc_meter_init(void) { static struct ovsthread_once once = OVSTHREAD_ONCE_INITIALIZER; @@ -3176,7 +3171,7 @@ dpif_offload_tc_meter_init(void) } int -netdev_offload_tc_init(struct netdev *netdev) +tc_netdev_init(struct netdev *netdev) { static struct ovsthread_once once = OVSTHREAD_ONCE_INITIALIZER; enum tc_qdisc_hook hook = get_tc_qdisc_hook(netdev); @@ -3229,7 +3224,7 @@ netdev_offload_tc_init(struct netdev *netdev) probe_vxlan_gbp_support(ifindex); probe_enc_flags_support(ifindex); - dpif_offload_tc_meter_init(); + tc_meter_init(); ovs_mutex_lock(&meter_police_ids_mutex); tc_cleanup_policer_actions(meter_police_ids, METER_POLICE_IDS_BASE, @@ -3358,9 +3353,8 @@ meter_free_police_index(uint32_t police_index) } int -dpif_offload_tc_meter_set(const struct dpif_offload *offload OVS_UNUSED, - ofproto_meter_id meter_id, - struct ofputil_meter_config *config) +tc_meter_set(const struct dpif_offload *offload OVS_UNUSED, + ofproto_meter_id meter_id, struct ofputil_meter_config *config) { uint32_t police_index; uint32_t rate, burst; @@ -3413,9 +3407,8 @@ dpif_offload_tc_meter_set(const struct dpif_offload *offload OVS_UNUSED, } int -dpif_offload_tc_meter_get(const struct dpif_offload *offload OVS_UNUSED, - ofproto_meter_id meter_id, - struct ofputil_meter_stats *stats) +tc_meter_get(const struct dpif_offload *offload OVS_UNUSED, + ofproto_meter_id meter_id, struct ofputil_meter_stats *stats) { uint32_t police_index; int err = ENOENT; @@ -3433,9 +3426,8 @@ dpif_offload_tc_meter_get(const struct dpif_offload *offload OVS_UNUSED, } int -dpif_offload_tc_meter_del(const struct dpif_offload *offload OVS_UNUSED, - ofproto_meter_id meter_id, - struct ofputil_meter_stats *stats) +tc_meter_del(const struct dpif_offload *offload OVS_UNUSED, + ofproto_meter_id meter_id, struct ofputil_meter_stats *stats) { uint32_t police_index; int err = ENOENT; diff --git a/lib/dpif-offload-tc-private.h b/lib/dpif-offload-tc-private.h index 790f642f5..b876ff1c9 100644 --- a/lib/dpif-offload-tc-private.h +++ b/lib/dpif-offload-tc-private.h @@ -41,33 +41,34 @@ struct tc_offload_info { /* Netdev-specific offload functions. These should only be used by the * associated dpif offload provider. */ -int netdev_offload_tc_init(struct netdev *); -int tc_flow_flush(struct netdev *); -int tc_flow_dump_create(struct netdev *, struct netdev_tc_flow_dump **, - bool terse); -int tc_flow_dump_destroy(struct netdev_tc_flow_dump *); -bool tc_flow_dump_next(struct netdev_tc_flow_dump *, struct match *, - struct nlattr **actions, struct dpif_flow_stats *, - struct dpif_flow_attrs *, ovs_u128 *ufid, - struct ofpbuf *rbuffer, struct ofpbuf *wbuffer); -int netdev_offload_tc_flow_put(struct dpif *, struct netdev *, struct match *, - struct nlattr *actions, size_t actions_len, - const ovs_u128 *ufid, struct tc_offload_info *, - struct dpif_flow_stats *); -int netdev_offload_tc_flow_del(const ovs_u128 *ufid, struct dpif_flow_stats *); -int netdev_offload_tc_flow_get(struct netdev *, struct match *, - struct nlattr **actions, const ovs_u128 *ufid, - struct dpif_flow_stats *, - struct dpif_flow_attrs *, struct ofpbuf *); -void dpif_offload_tc_meter_init(void); -int dpif_offload_tc_meter_set(const struct dpif_offload *, ofproto_meter_id, +int tc_netdev_init(struct netdev *); +int tc_netdev_flow_flush(struct netdev *); +int tc_netdev_flow_dump_create(struct netdev *, struct netdev_tc_flow_dump **, + bool terse); +int tc_netdev_flow_dump_destroy(struct netdev_tc_flow_dump *); +bool tc_netdev_flow_dump_next(struct netdev_tc_flow_dump *, struct match *, + struct nlattr **actions, + struct dpif_flow_stats *, + struct dpif_flow_attrs *, ovs_u128 *ufid, + struct ofpbuf *rbuffer, struct ofpbuf *wbuffer); +int tc_netdev_flow_put(struct dpif *, struct netdev *, struct match *, + struct nlattr *actions, size_t actions_len, + const ovs_u128 *ufid, struct tc_offload_info *, + struct dpif_flow_stats *); +int tc_netdev_flow_del(const ovs_u128 *ufid, struct dpif_flow_stats *); +int tc_netdev_flow_get(struct netdev *, struct match *, + struct nlattr **actions, const ovs_u128 *ufid, + struct dpif_flow_stats *, struct dpif_flow_attrs *, + struct ofpbuf *); + +void tc_meter_init(void); +int tc_meter_set(const struct dpif_offload *, ofproto_meter_id, struct ofputil_meter_config *); -int dpif_offload_tc_meter_get(const struct dpif_offload *, ofproto_meter_id, +int tc_meter_get(const struct dpif_offload *, ofproto_meter_id, struct ofputil_meter_stats *); -int dpif_offload_tc_meter_del(const struct dpif_offload *, ofproto_meter_id, +int tc_meter_del(const struct dpif_offload *, ofproto_meter_id, struct ofputil_meter_stats *); -uint64_t dpif_offload_tc_flow_count(const struct dpif_offload *); -odp_port_t dpif_offload_tc_get_port_id_by_ifindex(const struct dpif_offload *, - int ifindex); +uint64_t tc_flow_count(const struct dpif_offload *); +odp_port_t tc_get_port_id_by_ifindex(const struct dpif_offload *, int ifindex); #endif /* DPIF_OFFLOAD_TC_PRIVATE_H */ diff --git a/lib/dpif-offload-tc.c b/lib/dpif-offload-tc.c index 3b9192563..746ad5a81 100644 --- a/lib/dpif-offload-tc.c +++ b/lib/dpif-offload-tc.c @@ -33,7 +33,7 @@ VLOG_DEFINE_THIS_MODULE(dpif_offload_tc); /* dpif offload interface for the tc implementation. */ -struct dpif_offload_tc { +struct offload_tc { struct dpif_offload offload; struct dpif_offload_port_mgr *port_mgr; @@ -43,7 +43,7 @@ struct dpif_offload_tc { }; /* tc's flow dump specific data structures. */ -struct dpif_offload_tc_flow_dump { +struct tc_flow_dump { struct dpif_offload_flow_dump dump; struct ovs_mutex netdev_dump_mutex; size_t netdev_dump_index; @@ -53,9 +53,9 @@ struct dpif_offload_tc_flow_dump { #define FLOW_DUMP_MAX_BATCH 50 -struct dpif_offload_tc_flow_dump_thread { +struct tc_flow_dump_thread { struct dpif_offload_flow_dump_thread thread; - struct dpif_offload_tc_flow_dump *dump; + struct tc_flow_dump *dump; bool netdev_dump_done; size_t netdev_dump_index; @@ -66,18 +66,18 @@ struct dpif_offload_tc_flow_dump_thread { struct odputil_keybuf actbuf[FLOW_DUMP_MAX_BATCH]; }; -static struct dpif_offload_tc * -dpif_offload_tc_cast(const struct dpif_offload *offload) +static struct offload_tc * +tc_offload_cast(const struct dpif_offload *offload) { dpif_offload_assert_class(offload, &dpif_offload_tc_class); - return CONTAINER_OF(offload, struct dpif_offload_tc, offload); + return CONTAINER_OF(offload, struct offload_tc, offload); } static int -dpif_offload_tc_enable_offload(struct dpif_offload *dpif_offload, - struct dpif_offload_port_mgr_port *port) +tc_enable_offload(struct dpif_offload *dpif_offload, + struct dpif_offload_port_mgr_port *port) { - int ret = netdev_offload_tc_init(port->netdev); + int ret = tc_netdev_init(port->netdev); if (ret) { VLOG_WARN("%s: Failed assigning flow API 'tc', error %d", netdev_get_name(port->netdev), ret); @@ -89,24 +89,24 @@ dpif_offload_tc_enable_offload(struct dpif_offload *dpif_offload, } static int -dpif_offload_tc_cleanup_offload(struct dpif_offload *dpif_offload OVS_UNUSED, - struct dpif_offload_port_mgr_port *port) +tc_cleanup_offload(struct dpif_offload *dpif_offload OVS_UNUSED, + struct dpif_offload_port_mgr_port *port) { dpif_offload_set_netdev_offload(port->netdev, NULL); return 0; } static int -dpif_offload_tc_port_add(struct dpif_offload *dpif_offload, - struct netdev *netdev, odp_port_t port_no) +tc_port_add(struct dpif_offload *dpif_offload, struct netdev *netdev, + odp_port_t port_no) { - struct dpif_offload_tc *offload_tc = dpif_offload_tc_cast(dpif_offload); struct dpif_offload_port_mgr_port *port = xmalloc(sizeof *port); + struct offload_tc *offload = tc_offload_cast(dpif_offload); - if (dpif_offload_port_mgr_add(offload_tc->port_mgr, port, netdev, - port_no, true)) { + if (dpif_offload_port_mgr_add(offload->port_mgr, port, netdev, port_no, + true)) { if (dpif_offload_enabled()) { - return dpif_offload_tc_enable_offload(dpif_offload, port); + return tc_enable_offload(dpif_offload, port); } return 0; } @@ -116,68 +116,62 @@ dpif_offload_tc_port_add(struct dpif_offload *dpif_offload, } static void -dpif_offload_tc_free_port(struct dpif_offload_port_mgr_port *port) +tc_free_port(struct dpif_offload_port_mgr_port *port) { netdev_close(port->netdev); free(port); } static int -dpif_offload_tc_port_del(struct dpif_offload *dpif_offload, - odp_port_t port_no) +tc_port_del(struct dpif_offload *dpif_offload, odp_port_t port_no) { - struct dpif_offload_tc *offload_tc = dpif_offload_tc_cast(dpif_offload); + struct offload_tc *offload = tc_offload_cast(dpif_offload); struct dpif_offload_port_mgr_port *port; int ret = 0; - port = dpif_offload_port_mgr_remove(offload_tc->port_mgr, port_no); + port = dpif_offload_port_mgr_remove(offload->port_mgr, port_no); if (port) { if (dpif_offload_enabled()) { - ret = dpif_offload_tc_cleanup_offload(dpif_offload, port); + ret = tc_cleanup_offload(dpif_offload, port); } - ovsrcu_postpone(dpif_offload_tc_free_port, port); + ovsrcu_postpone(tc_free_port, port); } return ret; } static int -dpif_offload_tc_port_dump_start(const struct dpif_offload *offload_, - void **statep) +tc_port_dump_start(const struct dpif_offload *offload_, void **statep) { - struct dpif_offload_tc *offload = dpif_offload_tc_cast(offload_); + struct offload_tc *offload = tc_offload_cast(offload_); return dpif_offload_port_mgr_port_dump_start(offload->port_mgr, statep); } static int -dpif_offload_tc_port_dump_next(const struct dpif_offload *offload_, - void *state, - struct dpif_offload_port *port) +tc_port_dump_next(const struct dpif_offload *offload_, void *state, + struct dpif_offload_port *port) { - struct dpif_offload_tc *offload = dpif_offload_tc_cast(offload_); + struct offload_tc *offload = tc_offload_cast(offload_); return dpif_offload_port_mgr_port_dump_next(offload->port_mgr, state, port); } static int -dpif_offload_tc_port_dump_done(const struct dpif_offload *offload_, - void *state) +tc_port_dump_done(const struct dpif_offload *offload_, void *state) { - struct dpif_offload_tc *offload = dpif_offload_tc_cast(offload_); + struct offload_tc *offload = tc_offload_cast(offload_); return dpif_offload_port_mgr_port_dump_done(offload->port_mgr, state); } static struct netdev * -dpif_offload_tc_get_netdev(struct dpif_offload *dpif_offload, - odp_port_t port_no) +tc_get_netdev(struct dpif_offload *dpif_offload, odp_port_t port_no) { - struct dpif_offload_tc *offload_tc = dpif_offload_tc_cast(dpif_offload); + struct offload_tc *offload = tc_offload_cast(dpif_offload); struct dpif_offload_port_mgr_port *port; - port = dpif_offload_port_mgr_find_by_odp_port(offload_tc->port_mgr, - port_no); + port = dpif_offload_port_mgr_find_by_odp_port(offload->port_mgr, port_no); if (!port) { return NULL; } @@ -186,77 +180,73 @@ dpif_offload_tc_get_netdev(struct dpif_offload *dpif_offload, } static int -dpif_offload_tc_open(const struct dpif_offload_class *offload_class, - struct dpif *dpif, struct dpif_offload **dpif_offload) +tc_open(const struct dpif_offload_class *offload_class, struct dpif *dpif, + struct dpif_offload **dpif_offload) { - struct dpif_offload_tc *offload_tc; - - offload_tc = xmalloc(sizeof *offload_tc); + struct offload_tc *offload = xmalloc(sizeof *offload); - dpif_offload_init(&offload_tc->offload, offload_class, dpif); - offload_tc->port_mgr = dpif_offload_port_mgr_init(); - offload_tc->once_enable = - (struct ovsthread_once) OVSTHREAD_ONCE_INITIALIZER; - offload_tc->recirc_id_shared = !!(dpif_get_features(dpif) - & OVS_DP_F_TC_RECIRC_SHARING); + dpif_offload_init(&offload->offload, offload_class, dpif); + offload->port_mgr = dpif_offload_port_mgr_init(); + offload->once_enable = (struct ovsthread_once) OVSTHREAD_ONCE_INITIALIZER; + offload->recirc_id_shared = !!(dpif_get_features(dpif) + & OVS_DP_F_TC_RECIRC_SHARING); VLOG_DBG("Datapath %s recirculation id sharing ", - offload_tc->recirc_id_shared ? "supports" : "does not support"); + offload->recirc_id_shared ? "supports" : "does not support"); - dpif_offload_tc_meter_init(); + tc_meter_init(); - *dpif_offload = &offload_tc->offload; + *dpif_offload = &offload->offload; return 0; } static void -dpif_offload_tc_close(struct dpif_offload *dpif_offload) +tc_close(struct dpif_offload *dpif_offload) { - struct dpif_offload_tc *offload_tc = dpif_offload_tc_cast(dpif_offload); + struct offload_tc *offload = tc_offload_cast(dpif_offload); struct dpif_offload_port_mgr_port *port; - DPIF_OFFLOAD_PORT_MGR_PORT_FOR_EACH (port, offload_tc->port_mgr) { - dpif_offload_tc_port_del(dpif_offload, port->port_no); + DPIF_OFFLOAD_PORT_MGR_PORT_FOR_EACH (port, offload->port_mgr) { + tc_port_del(dpif_offload, port->port_no); } - dpif_offload_port_mgr_uninit(offload_tc->port_mgr); - ovsthread_once_destroy(&offload_tc->once_enable); - free(offload_tc); + dpif_offload_port_mgr_uninit(offload->port_mgr); + ovsthread_once_destroy(&offload->once_enable); + free(offload); } static void -dpif_offload_tc_set_config(struct dpif_offload *offload, - const struct smap *other_cfg) +tc_set_config(struct dpif_offload *offload_, const struct smap *other_cfg) { - struct dpif_offload_tc *offload_tc = dpif_offload_tc_cast(offload); + struct offload_tc *offload = tc_offload_cast(offload_); if (smap_get_bool(other_cfg, "hw-offload", false)) { - if (ovsthread_once_start(&offload_tc->once_enable)) { + if (ovsthread_once_start(&offload->once_enable)) { struct dpif_offload_port_mgr_port *port; tc_set_policy(smap_get_def(other_cfg, "tc-policy", TC_POLICY_DEFAULT)); - DPIF_OFFLOAD_PORT_MGR_PORT_FOR_EACH (port, offload_tc->port_mgr) { - dpif_offload_tc_enable_offload(offload, port); + DPIF_OFFLOAD_PORT_MGR_PORT_FOR_EACH (port, offload->port_mgr) { + tc_enable_offload(offload_, port); } - ovsthread_once_done(&offload_tc->once_enable); + ovsthread_once_done(&offload->once_enable); } } } static void -dpif_offload_tc_get_debug(const struct dpif_offload *offload, struct ds *ds, - struct json *json) +tc_get_debug(const struct dpif_offload *offload_, struct ds *ds, + struct json *json) { - struct dpif_offload_tc *offload_tc = dpif_offload_tc_cast(offload); + struct offload_tc *offload = tc_offload_cast(offload_); if (json) { struct json *json_ports = json_object_create(); struct dpif_offload_port_mgr_port *port; - DPIF_OFFLOAD_PORT_MGR_PORT_FOR_EACH (port, offload_tc->port_mgr) { + DPIF_OFFLOAD_PORT_MGR_PORT_FOR_EACH (port, offload->port_mgr) { struct json *json_port = json_object_create(); json_object_put(json_port, "port_no", @@ -276,7 +266,7 @@ dpif_offload_tc_get_debug(const struct dpif_offload *offload, struct ds *ds, } else if (ds) { struct dpif_offload_port_mgr_port *port; - DPIF_OFFLOAD_PORT_MGR_PORT_FOR_EACH (port, offload_tc->port_mgr) { + DPIF_OFFLOAD_PORT_MGR_PORT_FOR_EACH (port, offload->port_mgr) { ds_put_format(ds, " - %s: port_no: %u, ifindex: %d\n", netdev_get_name(port->netdev), port->port_no, port->ifindex); @@ -285,8 +275,8 @@ dpif_offload_tc_get_debug(const struct dpif_offload *offload, struct ds *ds, } static bool -dpif_offload_tc_can_offload(struct dpif_offload *dpif_offload OVS_UNUSED, - struct netdev *netdev) +tc_can_offload(struct dpif_offload *dpif_offload OVS_UNUSED, + struct netdev *netdev) { if (netdev_vport_is_vport_class(netdev->netdev_class) && strcmp(netdev_get_dpif_type(netdev), "system")) { @@ -298,14 +288,14 @@ dpif_offload_tc_can_offload(struct dpif_offload *dpif_offload OVS_UNUSED, } static int -dpif_offload_tc_flow_flush(const struct dpif_offload *offload) +tc_flow_flush(const struct dpif_offload *offload_) { - struct dpif_offload_tc *offload_tc = dpif_offload_tc_cast(offload); + struct offload_tc *offload = tc_offload_cast(offload_); struct dpif_offload_port_mgr_port *port; int error = 0; - DPIF_OFFLOAD_PORT_MGR_PORT_FOR_EACH (port, offload_tc->port_mgr) { - int rc = tc_flow_flush(port->netdev); + DPIF_OFFLOAD_PORT_MGR_PORT_FOR_EACH (port, offload->port_mgr) { + int rc = tc_netdev_flow_flush(port->netdev); if (rc && !error) { error = rc; @@ -314,28 +304,26 @@ dpif_offload_tc_flow_flush(const struct dpif_offload *offload) return error; } -static struct dpif_offload_tc_flow_dump * -dpif_offload_tc_flow_dump_cast(struct dpif_offload_flow_dump *dump) +static struct tc_flow_dump * +tc_flow_dump_cast(struct dpif_offload_flow_dump *dump) { - return CONTAINER_OF(dump, struct dpif_offload_tc_flow_dump, dump); + return CONTAINER_OF(dump, struct tc_flow_dump, dump); } -static struct dpif_offload_tc_flow_dump_thread * -dpif_offload_tc_flow_dump_thread_cast( +static struct tc_flow_dump_thread * +tc_flow_dump_thread_cast( struct dpif_offload_flow_dump_thread *thread) { - return CONTAINER_OF(thread, struct dpif_offload_tc_flow_dump_thread, - thread); + return CONTAINER_OF(thread, struct tc_flow_dump_thread, thread); } static struct dpif_offload_flow_dump * -dpif_offload_tc_flow_dump_create(const struct dpif_offload *offload_, - bool terse) +tc_flow_dump_create(const struct dpif_offload *offload_, bool terse) { - struct dpif_offload_tc *offload = dpif_offload_tc_cast(offload_); + struct offload_tc *offload = tc_offload_cast(offload_); struct dpif_offload_port_mgr_port *port; - struct dpif_offload_tc_flow_dump *dump; size_t added_port_count = 0; + struct tc_flow_dump *dump; size_t port_count; port_count = dpif_offload_port_mgr_port_count(offload->port_mgr); @@ -349,7 +337,7 @@ dpif_offload_tc_flow_dump_create(const struct dpif_offload *offload_, if (added_port_count >= port_count) { break; } - if (tc_flow_dump_create( + if (tc_netdev_flow_dump_create( port->netdev, &dump->netdev_dumps[added_port_count], terse)) { continue; } @@ -363,11 +351,11 @@ dpif_offload_tc_flow_dump_create(const struct dpif_offload *offload_, } static int -tc_netdev_match_to_dpif_flow(struct match *match, struct ofpbuf *key_buf, - struct ofpbuf *mask_buf, struct nlattr *actions, - struct dpif_flow_stats *stats, - struct dpif_flow_attrs *attrs, ovs_u128 *ufid, - struct dpif_flow *flow, bool terse) +tc_match_to_dpif_flow(struct match *match, struct ofpbuf *key_buf, + struct ofpbuf *mask_buf, struct nlattr *actions, + struct dpif_flow_stats *stats, + struct dpif_flow_attrs *attrs, ovs_u128 *ufid, + struct dpif_flow *flow, bool terse) { memset(flow, 0, sizeof *flow); @@ -419,10 +407,9 @@ tc_netdev_match_to_dpif_flow(struct match *match, struct ofpbuf *key_buf, } static void -dpif_offload_tc_advance_provider_dump( - struct dpif_offload_tc_flow_dump_thread *thread) +tc_advance_provider_dump(struct tc_flow_dump_thread *thread) { - struct dpif_offload_tc_flow_dump *dump = thread->dump; + struct tc_flow_dump *dump = thread->dump; ovs_mutex_lock(&dump->netdev_dump_mutex); @@ -449,13 +436,12 @@ dpif_offload_tc_advance_provider_dump( } static int -dpif_offload_tc_flow_dump_next(struct dpif_offload_flow_dump_thread *thread_, - struct dpif_flow *flows, int max_flows) +tc_flow_dump_next(struct dpif_offload_flow_dump_thread *thread_, + struct dpif_flow *flows, int max_flows) { - struct dpif_offload_tc_flow_dump_thread *thread; + struct tc_flow_dump_thread *thread = tc_flow_dump_thread_cast(thread_); int n_flows = 0; - thread = dpif_offload_tc_flow_dump_thread_cast(thread_); max_flows = MIN(max_flows, FLOW_DUMP_MAX_BATCH); while (!thread->netdev_dump_done && n_flows < max_flows) { @@ -477,30 +463,29 @@ dpif_offload_tc_flow_dump_next(struct dpif_offload_flow_dump_thread *thread_, ofpbuf_use_stack(&key, keybuf, sizeof *keybuf); ofpbuf_use_stack(&act, actbuf, sizeof *actbuf); ofpbuf_use_stack(&mask, maskbuf, sizeof *maskbuf); - has_next = tc_flow_dump_next(netdev_dump, &match, &actions, &stats, - &attrs, &ufid, &thread->nl_flows, &act); + has_next = tc_netdev_flow_dump_next(netdev_dump, &match, &actions, + &stats, &attrs, &ufid, + &thread->nl_flows, &act); if (has_next) { - tc_netdev_match_to_dpif_flow(&match, &key, &mask, actions, &stats, - &attrs, &ufid, f, - thread->dump->dump.terse); + tc_match_to_dpif_flow(&match, &key, &mask, actions, &stats, + &attrs, &ufid, f, thread->dump->dump.terse); n_flows++; } else { - dpif_offload_tc_advance_provider_dump(thread); + tc_advance_provider_dump(thread); } } return n_flows; } static int -dpif_offload_tc_flow_dump_destroy(struct dpif_offload_flow_dump *dump_) +tc_flow_dump_destroy(struct dpif_offload_flow_dump *dump_) { - struct dpif_offload_tc_flow_dump *dump; + struct tc_flow_dump *dump = tc_flow_dump_cast(dump_); int error = 0; - dump = dpif_offload_tc_flow_dump_cast(dump_); for (int i = 0; i < dump->netdev_dump_count; i++) { struct netdev_tc_flow_dump *dump_netdev = dump->netdev_dumps[i]; - int rc = tc_flow_dump_destroy(dump_netdev); + int rc = tc_netdev_flow_dump_destroy(dump_netdev); if (rc && !error) { error = rc; @@ -512,13 +497,13 @@ dpif_offload_tc_flow_dump_destroy(struct dpif_offload_flow_dump *dump_) } static struct dpif_offload_flow_dump_thread * -dpif_offload_tc_flow_dump_thread_create(struct dpif_offload_flow_dump *dump) +tc_flow_dump_thread_create(struct dpif_offload_flow_dump *dump) { - struct dpif_offload_tc_flow_dump_thread *thread; + struct tc_flow_dump_thread *thread; thread = xmalloc(sizeof *thread); dpif_offload_flow_dump_thread_init(&thread->thread, dump); - thread->dump = dpif_offload_tc_flow_dump_cast(dump); + thread->dump = tc_flow_dump_cast(dump); thread->netdev_dump_index = 0; thread->netdev_dump_done = !thread->dump->netdev_dump_count; ofpbuf_init(&thread->nl_flows, NL_DUMP_BUFSIZE); @@ -526,19 +511,17 @@ dpif_offload_tc_flow_dump_thread_create(struct dpif_offload_flow_dump *dump) } static void -dpif_offload_tc_flow_dump_thread_destroy( - struct dpif_offload_flow_dump_thread *thread_) +tc_flow_dump_thread_destroy(struct dpif_offload_flow_dump_thread *thread_) { - struct dpif_offload_tc_flow_dump_thread *thread; + struct tc_flow_dump_thread *thread = tc_flow_dump_thread_cast(thread_); - thread = dpif_offload_tc_flow_dump_thread_cast(thread_); ofpbuf_uninit(&thread->nl_flows); free(thread); } static int -dpif_offload_tc_parse_flow_put(struct dpif_offload_tc *offload_tc, - struct dpif *dpif, struct dpif_flow_put *put) +tc_parse_flow_put(struct offload_tc *offload_tc, struct dpif *dpif, + struct dpif_flow_put *put) { static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(5, 20); struct dpif_offload_port_mgr_port *port; @@ -588,11 +571,11 @@ dpif_offload_tc_parse_flow_put(struct dpif_offload_tc *offload_tc, info.recirc_id_shared_with_tc = offload_tc->recirc_id_shared; - err = netdev_offload_tc_flow_put(dpif, port->netdev, &match, - CONST_CAST(struct nlattr *, put->actions), - put->actions_len, - CONST_CAST(ovs_u128 *, put->ufid), - &info, put->stats); + err = tc_netdev_flow_put(dpif, port->netdev, &match, + CONST_CAST(struct nlattr *, put->actions), + put->actions_len, + CONST_CAST(ovs_u128 *, put->ufid), + &info, put->stats); if (!err) { if (put->flags & DPIF_FP_MODIFY && !info.tc_modify_flow) { @@ -643,7 +626,7 @@ out: int del_err = 0; if (!info.tc_modify_flow_deleted) { - del_err = netdev_offload_tc_flow_del(put->ufid, put->stats); + del_err = tc_netdev_flow_del(put->ufid, put->stats); } if (!del_err) { @@ -663,8 +646,7 @@ out: } static int -dpif_offload_tc_parse_flow_get(struct dpif_offload_tc *offload_tc, - struct dpif_flow_get *get) +tc_parse_flow_get(struct offload_tc *offload_tc, struct dpif_flow_get *get) { struct dpif_offload_port_mgr_port *port; struct dpif_flow *dpif_flow = get->flow; @@ -683,8 +665,8 @@ dpif_offload_tc_parse_flow_get(struct dpif_offload_tc *offload_tc, ofpbuf_use_stack(&buf, &act_buf, sizeof act_buf); DPIF_OFFLOAD_PORT_MGR_PORT_FOR_EACH (port, offload_tc->port_mgr) { - if (!netdev_offload_tc_flow_get(port->netdev, &match, &actions, - get->ufid, &stats, &attrs, &buf)) { + if (!tc_netdev_flow_get(port->netdev, &match, &actions, get->ufid, + &stats, &attrs, &buf)) { err = 0; break; } @@ -699,8 +681,8 @@ dpif_offload_tc_parse_flow_get(struct dpif_offload_tc *offload_tc, ofpbuf_use_stack(&key, &keybuf, sizeof keybuf); ofpbuf_use_stack(&act, &actbuf, sizeof actbuf); ofpbuf_use_stack(&mask, &maskbuf, sizeof maskbuf); - tc_netdev_match_to_dpif_flow(&match, &key, &mask, actions, &stats, &attrs, - (ovs_u128 *) get->ufid, dpif_flow, false); + tc_match_to_dpif_flow(&match, &key, &mask, actions, &stats, &attrs, + (ovs_u128 *) get->ufid, dpif_flow, false); ofpbuf_put(get->buffer, nl_attr_get(actions), nl_attr_get_size(actions)); dpif_flow->actions = ofpbuf_at(get->buffer, 0, 0); dpif_flow->actions_len = nl_attr_get_size(actions); @@ -709,10 +691,10 @@ dpif_offload_tc_parse_flow_get(struct dpif_offload_tc *offload_tc, } static void -dpif_offload_tc_operate(struct dpif *dpif, const struct dpif_offload *offload, - struct dpif_op **ops, size_t n_ops) +tc_operate(struct dpif *dpif, const struct dpif_offload *offload_, + struct dpif_op **ops, size_t n_ops) { - struct dpif_offload_tc *offload_tc = dpif_offload_tc_cast(offload); + struct offload_tc *offload = tc_offload_cast(offload_); for (size_t i = 0; i < n_ops; i++) { struct dpif_op *op = ops[i]; @@ -730,7 +712,7 @@ dpif_offload_tc_operate(struct dpif *dpif, const struct dpif_offload *offload, break; } - error = dpif_offload_tc_parse_flow_put(offload_tc, dpif, put); + error = tc_parse_flow_put(offload, dpif, put); break; } case DPIF_OP_FLOW_DEL: { @@ -740,7 +722,7 @@ dpif_offload_tc_operate(struct dpif *dpif, const struct dpif_offload *offload, break; } - error = netdev_offload_tc_flow_del(del->ufid, del->stats); + error = tc_netdev_flow_del(del->ufid, del->stats); break; } case DPIF_OP_FLOW_GET: { @@ -750,7 +732,7 @@ dpif_offload_tc_operate(struct dpif *dpif, const struct dpif_offload *offload, break; } - error = dpif_offload_tc_parse_flow_get(offload_tc, get); + error = tc_parse_flow_get(offload, get); break; } case DPIF_OP_EXECUTE: @@ -767,14 +749,12 @@ dpif_offload_tc_operate(struct dpif *dpif, const struct dpif_offload *offload, } odp_port_t -dpif_offload_tc_get_port_id_by_ifindex(const struct dpif_offload *offload, - int ifindex) +tc_get_port_id_by_ifindex(const struct dpif_offload *offload_, int ifindex) { - struct dpif_offload_tc *offload_tc = dpif_offload_tc_cast(offload); + struct offload_tc *offload = tc_offload_cast(offload_); struct dpif_offload_port_mgr_port *port; - port = dpif_offload_port_mgr_find_by_ifindex(offload_tc->port_mgr, - ifindex); + port = dpif_offload_port_mgr_find_by_ifindex(offload->port_mgr, ifindex); if (port) { return port->port_no; } @@ -785,26 +765,26 @@ struct dpif_offload_class dpif_offload_tc_class = { .type = "tc", .impl_type = DPIF_OFFLOAD_IMPL_FLOWS_PROVIDER_ONLY, .supported_dpif_types = (const char *const[]) {"system", NULL}, - .open = dpif_offload_tc_open, - .close = dpif_offload_tc_close, - .set_config = dpif_offload_tc_set_config, - .get_debug = dpif_offload_tc_get_debug, - .can_offload = dpif_offload_tc_can_offload, - .port_add = dpif_offload_tc_port_add, - .port_del = dpif_offload_tc_port_del, - .port_dump_start = dpif_offload_tc_port_dump_start, - .port_dump_next = dpif_offload_tc_port_dump_next, - .port_dump_done = dpif_offload_tc_port_dump_done, - .flow_flush = dpif_offload_tc_flow_flush, - .flow_dump_create = dpif_offload_tc_flow_dump_create, - .flow_dump_next = dpif_offload_tc_flow_dump_next, - .flow_dump_destroy = dpif_offload_tc_flow_dump_destroy, - .flow_dump_thread_create = dpif_offload_tc_flow_dump_thread_create, - .flow_dump_thread_destroy = dpif_offload_tc_flow_dump_thread_destroy, - .operate = dpif_offload_tc_operate, - .flow_count = dpif_offload_tc_flow_count, - .meter_set = dpif_offload_tc_meter_set, - .meter_get = dpif_offload_tc_meter_get, - .meter_del = dpif_offload_tc_meter_del, - .get_netdev = dpif_offload_tc_get_netdev, + .open = tc_open, + .close = tc_close, + .set_config = tc_set_config, + .get_debug = tc_get_debug, + .can_offload = tc_can_offload, + .port_add = tc_port_add, + .port_del = tc_port_del, + .port_dump_start = tc_port_dump_start, + .port_dump_next = tc_port_dump_next, + .port_dump_done = tc_port_dump_done, + .flow_flush = tc_flow_flush, + .flow_dump_create = tc_flow_dump_create, + .flow_dump_next = tc_flow_dump_next, + .flow_dump_destroy = tc_flow_dump_destroy, + .flow_dump_thread_create = tc_flow_dump_thread_create, + .flow_dump_thread_destroy = tc_flow_dump_thread_destroy, + .operate = tc_operate, + .flow_count = tc_flow_count, + .meter_set = tc_meter_set, + .meter_get = tc_meter_get, + .meter_del = tc_meter_del, + .get_netdev = tc_get_netdev, }; -- 2.52.0 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
