From: Jason Wang Date: Mon, 29 Dec 2025 08:45:40 +0000 (+0800) Subject: net/filter-buffer: make interval change take effect immediately X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=60a8b9b75a5b8db61d348c84ec418aa2b7a648bd;p=thirdparty%2Fqemu.git net/filter-buffer: make interval change take effect immediately Previously, when the 'interval' property was modified at runtime via QMP, the new value would only take effect after the current timer period elapsed. This could lead to unexpected behavior when users expect immediate changes. Fix this by checking if the timer is already running when setting the interval property. If so, reschedule the timer with the new interval value immediately. Reviewed-by: Zhang Chen Signed-off-by: Jason Wang --- diff --git a/net/filter-buffer.c b/net/filter-buffer.c index a36be31dc8..427da24097 100644 --- a/net/filter-buffer.c +++ b/net/filter-buffer.c @@ -159,6 +159,7 @@ static void filter_buffer_set_interval(Object *obj, Visitor *v, Error **errp) { FilterBufferState *s = FILTER_BUFFER(obj); + NetFilterState *nf = NETFILTER(obj); uint32_t value; if (!visit_type_uint32(v, name, &value, errp)) { @@ -170,6 +171,11 @@ static void filter_buffer_set_interval(Object *obj, Visitor *v, return; } s->interval = value; + + if (nf->netdev && nf->on) { + timer_mod(&s->release_timer, + qemu_clock_get_us(QEMU_CLOCK_VIRTUAL) + s->interval); + } } static void filter_buffer_class_init(ObjectClass *oc, const void *data)