We currently pass the same parameters to all handlers even if they are specific to a particular handler. Pass them via the opaque node_data instead, in preparation for adding yet another handler specific parameter.
Signed-off-by: Felix Moebius <[email protected]> --- v3: - Split refactor into separate commit for v3 --- controller/mac-cache.c | 29 +++++++++++------------------ controller/mac-cache.h | 23 +++++++++++------------ controller/statctrl.c | 21 +++++++++++---------- 3 files changed, 33 insertions(+), 40 deletions(-) diff --git a/controller/mac-cache.c b/controller/mac-cache.c index 4f859b7ea..a03581b3f 100644 --- a/controller/mac-cache.c +++ b/controller/mac-cache.c @@ -399,10 +399,8 @@ mac_binding_update_log(const char *action, } void -mac_binding_stats_run( - struct rconn *swconn OVS_UNUSED, - struct ovsdb_idl_index *sbrec_port_binding_by_name OVS_UNUSED, - struct vector *stats_vec, uint64_t *req_delay, void *data) +mac_binding_stats_run(struct vector *stats_vec, uint64_t *req_delay, + void *data) { struct mac_cache_data *cache_data = data; long long timewall_now = time_wall_msec(); @@ -445,7 +443,7 @@ mac_binding_stats_run( mac_cache_update_req_delay(&cache_data->thresholds, req_delay); if (*req_delay) { - VLOG_DBG("MAC binding statistics dalay: %"PRIu64, *req_delay); + VLOG_DBG("MAC binding statistics delay: %"PRIu64, *req_delay); } } @@ -498,10 +496,7 @@ fdb_update_log(const char *action, } void -fdb_stats_run(struct rconn *swconn OVS_UNUSED, - struct ovsdb_idl_index *sbrec_port_binding_by_name OVS_UNUSED, - struct vector *stats_vec, - uint64_t *req_delay, void *data) +fdb_stats_run(struct vector *stats_vec, uint64_t *req_delay, void *data) { struct mac_cache_data *cache_data = data; long long timewall_now = time_wall_msec(); @@ -543,7 +538,7 @@ fdb_stats_run(struct rconn *swconn OVS_UNUSED, mac_cache_update_req_delay(&cache_data->thresholds, req_delay); if (*req_delay) { - VLOG_DBG("FDB entry statistics dalay: %"PRIu64, *req_delay); + VLOG_DBG("FDB entry statistics delay: %"PRIu64, *req_delay); } } @@ -868,14 +863,12 @@ mac_binding_probe_stats_process_flow_stats( } void -mac_binding_probe_stats_run( - struct rconn *swconn, - struct ovsdb_idl_index *sbrec_port_binding_by_name, - struct vector *stats_vec, - uint64_t *req_delay, void *data) +mac_binding_probe_stats_run(struct vector *stats_vec, uint64_t *req_delay, + void *data) { long long timewall_now = time_wall_msec(); - struct mac_cache_data *cache_data = data; + struct mac_binding_probe_data *probe_data = data; + struct mac_cache_data *cache_data = probe_data->cache_data; struct mac_cache_stats *stats; VECTOR_FOR_EACH_PTR (stats_vec, stats) { @@ -908,7 +901,7 @@ mac_binding_probe_stats_run( } const struct sbrec_port_binding *pb = - lport_lookup_by_name(sbrec_port_binding_by_name, + lport_lookup_by_name(probe_data->sbrec_port_binding_by_name, sbrec->logical_port); if (!pb) { continue; @@ -930,7 +923,7 @@ mac_binding_probe_stats_run( &mb->data, true, threshold, stats->idle_age_ms, since_updated_ms); - send_self_originated_neigh_packet(swconn, + send_self_originated_neigh_packet(probe_data->swconn, sbrec->datapath->tunnel_key, pb->tunnel_key, laddr.ea, &local, &mb->data.ip, diff --git a/controller/mac-cache.h b/controller/mac-cache.h index d7b5b9cd5..e75c49820 100644 --- a/controller/mac-cache.h +++ b/controller/mac-cache.h @@ -63,6 +63,12 @@ struct mac_binding_data { struct eth_addr mac; }; +struct mac_binding_probe_data { + struct mac_cache_data *cache_data; + struct rconn *swconn; + struct ovsdb_idl_index *sbrec_port_binding_by_name; +}; + struct mac_binding { struct hmap_node hmap_node; /* Common data to identify MAC binding. */ @@ -191,19 +197,14 @@ void mac_binding_stats_process_flow_stats(struct vector *stats_vec, struct ofputil_flow_stats *ofp_stats); -void mac_binding_stats_run( - struct rconn *swconn OVS_UNUSED, - struct ovsdb_idl_index *sbrec_port_binding_by_name OVS_UNUSED, - struct vector *stats_vec, uint64_t *req_delay, void *data); +void mac_binding_stats_run(struct vector *stats_vec, uint64_t *req_delay, + void *data); /* FDB stat processing. */ void fdb_stats_process_flow_stats(struct vector *stats_vec, struct ofputil_flow_stats *ofp_stats); -void fdb_stats_run( - struct rconn *swconn OVS_UNUSED, - struct ovsdb_idl_index *sbrec_port_binding_by_name OVS_UNUSED, - struct vector *stats_vec, uint64_t *req_delay, void *data); +void fdb_stats_run(struct vector *stats_vec, uint64_t *req_delay, void *data); /* Packet buffering. */ void bp_packet_data_destroy(struct bp_packet_data *pd); @@ -235,9 +236,7 @@ void mac_binding_probe_stats_process_flow_stats( struct vector *stats_vec, struct ofputil_flow_stats *ofp_stats); -void mac_binding_probe_stats_run( - struct rconn *swconn, - struct ovsdb_idl_index *sbrec_port_binding_by_name, - struct vector *stats_vec, uint64_t *req_delay, void *data); +void mac_binding_probe_stats_run(struct vector *stats_vec, uint64_t *req_delay, + void *data); #endif /* controller/mac-cache.h */ diff --git a/controller/statctrl.c b/controller/statctrl.c index a76bac056..3ad135120 100644 --- a/controller/statctrl.c +++ b/controller/statctrl.c @@ -64,10 +64,7 @@ struct stats_node { struct ofputil_flow_stats *ofp_stats); /* Function to process the parsed stats. * This function runs in main thread locked behind mutex. */ - void (*run)(struct rconn *swconn, - struct ovsdb_idl_index *sbrec_port_binding_by_name, - struct vector *stats, - uint64_t *req_delay, void *data); + void (*run)(struct vector *stats, uint64_t *req_delay, void *data); /* Name of the stats node. */ const char *name; }; @@ -181,10 +178,16 @@ statctrl_run(struct ovsdb_idl_txn *ovnsb_idl_txn, return; } + struct mac_binding_probe_data mac_binding_probe_data = { + .cache_data = mac_cache_data, + .sbrec_port_binding_by_name = sbrec_port_binding_by_name, + .swconn = statctrl_ctx.swconn, + }; + void *node_data[STATS_MAX] = { - mac_cache_data, - mac_cache_data, - mac_cache_data + [STATS_MAC_BINDING] = mac_cache_data, + [STATS_FDB] = mac_cache_data, + [STATS_MAC_BINDING_PROBE] = &mac_binding_probe_data, }; bool schedule_updated = false; @@ -197,9 +200,7 @@ statctrl_run(struct ovsdb_idl_txn *ovnsb_idl_txn, uint64_t prev_delay = node->request_delay; stopwatch_start(node->name, time_msec()); - node->run(statctrl_ctx.swconn, - sbrec_port_binding_by_name, &node->stats, - &node->request_delay, node_data[i]); + node->run(&node->stats, &node->request_delay, node_data[i]); vector_clear(&node->stats); if (vector_capacity(&node->stats) >= STATS_VEC_CAPACITY_THRESHOLD) { VLOG_DBG("The statistics vector for node '%s' capacity " -- 2.52.0 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
