duration);
}
- poll_timer_wait_until(start_time + MIN(ofproto_max_idle, 500));
+ poll_timer_wait_until(start_time + MIN(ofproto_max_idle,
+ ofproto_max_revalidator));
seq_wait(udpif->reval_seq, last_reval_seq);
latch_wait(&udpif->exit_latch);
latch_wait(&udpif->pause_latch);
* on system load and other factors. This variable is subject to change. */
extern unsigned ofproto_max_idle;
+/* Maximum timeout (in ms) for revalidator timer.
+ * Revalidator timeout is a minimum of max_idle and max_revalidator values. */
+extern unsigned ofproto_max_revalidator;
+
/* Number of upcall handler and revalidator threads. Only affects the
* ofproto-dpif implementation. */
extern size_t n_handlers, n_revalidators;
unsigned ofproto_flow_limit = OFPROTO_FLOW_LIMIT_DEFAULT;
unsigned ofproto_max_idle = OFPROTO_MAX_IDLE_DEFAULT;
+unsigned ofproto_max_revalidator = OFPROTO_MAX_REVALIDATOR_DEFAULT;
size_t n_handlers, n_revalidators;
ofproto_max_idle = max_idle;
}
+/* Sets the maximum allowed revalidator timeout. */
+void
+ofproto_set_max_revalidator(unsigned max_revalidator)
+{
+ if (max_revalidator >= 100) {
+ ofproto_max_revalidator = max_revalidator;
+ }
+}
+
/* If forward_bpdu is true, the NORMAL action will forward frames with
* reserved (e.g. STP) destination Ethernet addresses. if forward_bpdu is false,
* the NORMAL action will drop these frames. */
#define OFPROTO_FLOW_LIMIT_DEFAULT 200000
#define OFPROTO_MAX_IDLE_DEFAULT 10000 /* ms */
+#define OFPROTO_MAX_REVALIDATOR_DEFAULT 500 /* ms */
const char *ofproto_port_open_type(const struct ofproto *,
const char *port_type);
void ofproto_set_bundle_idle_timeout(unsigned timeout);
void ofproto_set_flow_limit(unsigned limit);
void ofproto_set_max_idle(unsigned max_idle);
+void ofproto_set_max_revalidator(unsigned max_revalidator);
void ofproto_set_forward_bpdu(struct ofproto *, bool forward_bpdu);
void ofproto_set_mac_table_config(struct ofproto *, unsigned idle_time,
size_t max_entries);
OFPROTO_FLOW_LIMIT_DEFAULT));
ofproto_set_max_idle(smap_get_int(&ovs_cfg->other_config, "max-idle",
OFPROTO_MAX_IDLE_DEFAULT));
+ ofproto_set_max_revalidator(smap_get_int(&ovs_cfg->other_config,
+ "max-revalidator",
+ OFPROTO_MAX_REVALIDATOR_DEFAULT));
ofproto_set_vlan_limit(smap_get_int(&ovs_cfg->other_config, "vlan-limit",
LEGACY_MAX_VLAN_HEADERS));
ofproto_set_bundle_idle_timeout(smap_get_int(&ovs_cfg->other_config,
</p>
</column>
+ <column name="other_config" key="max-revalidator"
+ type='{"type": "integer", "minInteger": 100}'>
+ <p>
+ The maximum time (in ms) that revalidator threads will wait before
+ executing flow revalidation. Note that this is maximum allowed value.
+ Actual timeout used by OVS is minimum of max-idle and max-revalidator
+ values. Tweaking this value is discouraged unless you know exactly
+ what you're doing.
+ </p>
+ <p>
+ The default is 500.
+ </p>
+ </column>
+
<column name="other_config" key="hw-offload"
type='{"type": "boolean"}'>
<p>