X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=ofproto%2Fofproto-dpif.c;h=4cebd77971d35fcd428340ecc2438628bebf15cd;hb=003ce655b7116d18c86a74c50391e54990346931;hp=0407302301a796eba76c5a4dc6f3c1ab61ec1413;hpb=cfc50ae514f805dcd9c14589f21158185424daf6;p=sliver-openvswitch.git diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c index 040730230..4cebd7797 100644 --- a/ofproto/ofproto-dpif.c +++ b/ofproto/ofproto-dpif.c @@ -73,11 +73,6 @@ VLOG_DEFINE_THIS_MODULE(ofproto_dpif); COVERAGE_DEFINE(ofproto_dpif_expired); COVERAGE_DEFINE(packet_in_overflow); -/* Number of implemented OpenFlow tables. */ -enum { N_TABLES = 255 }; -enum { TBL_INTERNAL = N_TABLES - 1 }; /* Used for internal hidden rules. */ -BUILD_ASSERT_DECL(N_TABLES >= 2 && N_TABLES <= 255); - /* No bfd/cfm status change. */ #define NO_STATUS_CHANGE -1 @@ -94,6 +89,9 @@ struct rule_dpif { struct dpif_flow_stats stats OVS_GUARDED; }; +/* RULE_CAST() depends on this. */ +BUILD_ASSERT_DECL(offsetof(struct rule_dpif, up) == 0); + static void rule_get_stats(struct rule *, uint64_t *packets, uint64_t *bytes, long long int *used); static struct rule_dpif *rule_dpif_cast(const struct rule *); @@ -1351,7 +1349,6 @@ run(struct ofproto *ofproto_) { struct ofproto_dpif *ofproto = ofproto_dpif_cast(ofproto_); uint64_t new_seq, new_dump_seq; - const bool enable_recirc = ofproto_dpif_get_enable_recirc(ofproto); if (mbridge_need_revalidate(ofproto->mbridge)) { ofproto->backer->need_revalidate = REV_RECONFIGURE; @@ -1435,17 +1432,12 @@ run(struct ofproto *ofproto_) /* All outstanding data in existing flows has been accounted, so it's a * good time to do bond rebalancing. */ - if (enable_recirc && ofproto->has_bonded_bundles) { + if (ofproto->has_bonded_bundles) { struct ofbundle *bundle; HMAP_FOR_EACH (bundle, hmap_node, &ofproto->bundles) { - struct bond *bond = bundle->bond; - - if (bond && bond_may_recirc(bond, NULL, NULL)) { - bond_recirculation_account(bond); - if (bond_rebalance(bundle->bond)) { - bond_update_post_recirc_rules(bond, true); - } + if (bundle->bond) { + bond_rebalance(bundle->bond); } } } @@ -3174,24 +3166,6 @@ rule_dpif_credit_stats(struct rule_dpif *rule, ovs_mutex_unlock(&rule->stats_mutex); } -bool -rule_dpif_is_fail_open(const struct rule_dpif *rule) -{ - return is_fail_open_rule(&rule->up); -} - -bool -rule_dpif_is_table_miss(const struct rule_dpif *rule) -{ - return rule_is_table_miss(&rule->up); -} - -bool -rule_dpif_is_internal(const struct rule_dpif *rule) -{ - return rule_is_internal(&rule->up); -} - ovs_be64 rule_dpif_get_flow_cookie(const struct rule_dpif *rule) OVS_REQUIRES(rule->up.mutex) @@ -3209,7 +3183,7 @@ rule_dpif_reduce_timeouts(struct rule_dpif *rule, uint16_t idle_timeout, /* Returns 'rule''s actions. The caller owns a reference on the returned * actions and must eventually release it (with rule_actions_unref()) to avoid * a memory leak. */ -struct rule_actions * +const struct rule_actions * rule_dpif_get_actions(const struct rule_dpif *rule) { return rule_get_actions(&rule->up); @@ -3433,22 +3407,6 @@ choose_miss_rule(enum ofputil_port_config config, struct rule_dpif *miss_rule, } } -void -rule_dpif_ref(struct rule_dpif *rule) -{ - if (rule) { - ofproto_rule_ref(&rule->up); - } -} - -void -rule_dpif_unref(struct rule_dpif *rule) -{ - if (rule) { - ofproto_rule_unref(&rule->up); - } -} - static void complete_operation(struct rule_dpif *rule) OVS_REQUIRES(ofproto_mutex) @@ -3871,7 +3829,7 @@ struct trace_ctx { static void trace_format_rule(struct ds *result, int level, const struct rule_dpif *rule) { - struct rule_actions *actions; + const struct rule_actions *actions; ovs_be64 cookie; ds_put_char_multiple(result, '\t', level); @@ -4556,13 +4514,6 @@ ofproto_dpif_unixctl_init(void) ofproto_unixctl_dpif_dump_flows, NULL); } - -/* Returns true if 'rule' is an internal rule, false otherwise. */ -bool -rule_is_internal(const struct rule *rule) -{ - return rule->table_id == TBL_INTERNAL; -} /* Linux VLAN device support (e.g. "eth0.10" for VLAN 10.) *