From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54141) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aaaEv-0003Mn-LA for qemu-devel@nongnu.org; Mon, 29 Feb 2016 21:40:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aaaEr-0001ro-7L for qemu-devel@nongnu.org; Mon, 29 Feb 2016 21:40:45 -0500 Received: from mx1.redhat.com ([209.132.183.28]:33045) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aaaEr-0001rj-1W for qemu-devel@nongnu.org; Mon, 29 Feb 2016 21:40:41 -0500 References: <1456710366-10980-1-git-send-email-zhang.zhanghailiang@huawei.com> <1456710366-10980-3-git-send-email-zhang.zhanghailiang@huawei.com> <56D3F2D2.9030600@redhat.com> <56D3F4EB.6060704@huawei.com> From: Jason Wang Message-ID: <56D5010C.9010808@redhat.com> Date: Tue, 1 Mar 2016 10:40:12 +0800 MIME-Version: 1.0 In-Reply-To: <56D3F4EB.6060704@huawei.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2 2/2] filter-buffer: Add status_changed callback processing List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Hailiang Zhang , qemu-devel@nongnu.org Cc: peter.huangpeng@huawei.com, hongyang.yang@easystack.cn On 02/29/2016 03:36 PM, Hailiang Zhang wrote: > On 2016/2/29 15:27, Jason Wang wrote: >> >> >> On 02/29/2016 09:46 AM, zhanghailiang wrote: >>> While the status of filter-buffer changing from 'on' to 'off', >>> it need to release all the buffered packets, and delete the related >>> timer, while switch from 'off' to 'on', it need to resume the release >>> packets timer. >>> >>> Signed-off-by: zhanghailiang >>> Cc: Jason Wang >>> Cc: Yang Hongyang >>> --- >>> v2: >>> - New patch >>> --- >>> net/filter-buffer.c | 19 +++++++++++++++++++ >>> 1 file changed, 19 insertions(+) >>> >>> diff --git a/net/filter-buffer.c b/net/filter-buffer.c >>> index 12ad2e3..ed3f19e 100644 >>> --- a/net/filter-buffer.c >>> +++ b/net/filter-buffer.c >>> @@ -124,6 +124,24 @@ static void filter_buffer_setup(NetFilterState >>> *nf, Error **errp) >>> } >>> } >>> >>> +static void filter_buffer_status_changed(NetFilterState *nf, Error >>> **errp) >>> +{ >>> + FilterBufferState *s = FILTER_BUFFER(nf); >>> + >>> + if (!strcmp(nf->status, "off")) { >>> + if (s->interval) { >>> + timer_del(&s->release_timer); >>> + } >>> + filter_buffer_flush(nf); >>> + } else { >>> + if (s->interval) { >>> + timer_init_us(&s->release_timer, QEMU_CLOCK_VIRTUAL, >>> + filter_buffer_release_timer, nf); >>> + timer_mod(&s->release_timer, >>> + qemu_clock_get_us(QEMU_CLOCK_VIRTUAL) + s->interval); >>> + } >> >> The code looks duplicated with filter_buffer_setup(). >> > > Yea, extract them into a new helper ? filter_buffer_setup_timer() ? Right. > >>> + } >>> +} >>> static void filter_buffer_class_init(ObjectClass *oc, void *data) >>> { >>> NetFilterClass *nfc = NETFILTER_CLASS(oc); >>> @@ -131,6 +149,7 @@ static void filter_buffer_class_init(ObjectClass >>> *oc, void *data) >>> nfc->setup = filter_buffer_setup; >>> nfc->cleanup = filter_buffer_cleanup; >>> nfc->receive_iov = filter_buffer_receive_iov; >>> + nfc->status_changed = filter_buffer_status_changed; >>> } >>> >>> static void filter_buffer_get_interval(Object *obj, Visitor *v, >> >> >> . >> > >