bond: New function bond_is_balanced().
authorEthan Jackson <ethan@nicira.com>
Tue, 12 Apr 2011 20:39:32 +0000 (13:39 -0700)
committerEthan Jackson <ethan@nicira.com>
Wed, 13 Apr 2011 23:26:36 +0000 (16:26 -0700)
As new bond modes are added, it will be nice to have the logic
indicating whether or not a given bond mode requires rebalancing in
one place.

lib/bond.c

index de71b9f19de9fb417ba66e60c31460a05f27e198..dad34ada9164f7a8c2939db5e4bf77e938bc5da4 100644 (file)
@@ -682,23 +682,20 @@ bond_process_lacp(struct bond *bond, void *slave_, const struct ofpbuf *packet)
 \f
 /* Rebalancing. */
 
+static bool
+bond_is_balanced(const struct bond *bond)
+{
+    return bond->balance == BM_SLB || bond->balance == BM_TCP;
+}
+
 /* Notifies 'bond' that 'n_bytes' bytes were sent in 'flow' within 'vlan'. */
 void
 bond_account(struct bond *bond, const struct flow *flow, uint16_t vlan,
              uint64_t n_bytes)
 {
-    switch (bond->balance) {
-    case BM_AB:
-        /* Nothing to do. */
-        break;
 
-    case BM_SLB:
-    case BM_TCP:
+    if (bond_is_balanced(bond)) {
         lookup_bond_entry(bond, flow, vlan)->tx_bytes += n_bytes;
-        break;
-
-    default:
-        NOT_REACHED();
     }
 }
 
@@ -844,7 +841,7 @@ bond_rebalance(struct bond *bond, struct tag_set *tags)
     struct bond_entry *e;
     struct list bals;
 
-    if (bond->balance == BM_AB || time_msec() < bond->next_rebalance) {
+    if (!bond_is_balanced(bond) || time_msec() < bond->next_rebalance) {
         return;
     }
     bond->next_rebalance = time_msec() + bond->rebalance_interval;
@@ -1020,7 +1017,7 @@ bond_unixctl_show(struct unixctl_conn *conn,
     ds_put_format(&ds, "updelay: %d ms\n", bond->updelay);
     ds_put_format(&ds, "downdelay: %d ms\n", bond->downdelay);
 
-    if (bond->balance != BM_AB) {
+    if (bond_is_balanced(bond)) {
         ds_put_format(&ds, "next rebalance: %lld ms\n",
                       bond->next_rebalance - time_msec());
     }
@@ -1041,7 +1038,7 @@ bond_unixctl_show(struct unixctl_conn *conn,
                           slave->delay_expires - time_msec());
         }
 
-        if (bond->balance == BM_AB) {
+        if (!bond_is_balanced(bond)) {
             continue;
         }