hi,
I noticed that we can set bucket's weight to 0 when add/mod group.
1. when we use default select method, and when all the buckets with weight
larger than 0 change to dead,
we can still pick the bucket whose weight is 0. here is the code:
pick_default_select_group()->group_best_live_bucket():
LIST_FOR_EACH (bucket, list_node, &group->up.buckets) {
if (bucket_is_alive(ctx, bucket, 0)) { ///// so when only bucket
with weight=0 is active
uint32_t score =
(hash_int(bucket->bucket_id, basis) & 0xffff) * bucket->weight;
if (score >= best_score) { //// and bucket with
weight=0 does match this clause
best_bucket = bucket;
best_score = score;
}
2. but for dp_hash selection method, we init the bucket when group_construct
and bucket whose weight is 0 will be excluded. Here is the code:
for (int hash = 0; hash < n_hash; hash++) {
struct webster *winner = &webster[0];
for (i = 1; i < n_buckets; i++) {
if (webster[i].value > winner->value) { //// bucket with weight=0
always be excluded
winner = &webster[i];
}
}
so here is my question: why the behavior is different for dp_hash method and
default selection method?
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev