@@ -93,7 +93,8 @@ VLOG_DEFINE_THIS_MODULE(dpif_netdev);
/* Auto Load Balancing Defaults */
#define ALB_IMPROVEMENT_THRESHOLD 25
#define ALB_LOAD_THRESHOLD 95
-#define ALB_REBALANCE_INTERVAL 1 /* 1 Min */
+#define ALB_REBALANCE_INTERVAL 1 /* 1 Min */
+#define MAX_ALB_REBALANCE_INTERVAL 20000 /* 20000 Min */
#define MIN_TO_MSEC 60000
#define FLOW_DUMP_MAX_BATCH 50
@@ -4883,6 +4884,9 @@ dpif_netdev_set_config(struct dpif *dpif, const struct smap *other_config)
rebalance_intvl = smap_get_ullong(other_config,
"pmd-auto-lb-rebal-interval",
ALB_REBALANCE_INTERVAL);
+ if (rebalance_intvl > MAX_ALB_REBALANCE_INTERVAL) {
+ rebalance_intvl = ALB_REBALANCE_INTERVAL;
+ }
/* Input is in min, convert it to msec. */
rebalance_intvl =
@@ -243,7 +243,25 @@ get_log_next_line_num
AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb-rebal-interval="0"])
CHECK_ALB_PARAM([interval], [1 mins], [+$LINENUM])
-# No check for above max as it is only a documented max value and not a hard limit
+# Set new value
+get_log_next_line_num
+AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb-rebal-interval="100"])
+CHECK_ALB_PARAM([interval], [100 mins], [+$LINENUM])
+
+# Set above max value
+get_log_next_line_num
+AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb-rebal-interval="20001"])
+CHECK_ALB_PARAM([interval], [1 mins], [+$LINENUM])
+
+# Set new value
+get_log_next_line_num
+AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb-rebal-interval="1000"])
+CHECK_ALB_PARAM([interval], [1000 mins], [+$LINENUM])
+
+# Set Negative value
+get_log_next_line_num
+AT_CHECK([ovs-vsctl set open_vswitch . other_config:pmd-auto-lb-rebal-interval="-1"])
+CHECK_ALB_PARAM([interval], [1 mins], [+$LINENUM])
OVS_VSWITCHD_STOP
AT_CLEANUP