[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 10/12] netbuffer: add a public api filter_buffer
From: |
Jason Wang |
Subject: |
Re: [Qemu-devel] [PATCH 10/12] netbuffer: add a public api filter_buffer_release_all |
Date: |
Thu, 30 Jul 2015 16:42:10 +0800 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0 |
On 07/30/2015 01:50 PM, Yang Hongyang wrote:
> On 07/30/2015 01:25 PM, Jason Wang wrote:
>>
>>
>> On 07/29/2015 06:51 PM, Yang Hongyang wrote:
>>> add a public api filter_buffer_release_all to release all
>>> buffered packets.
>>> also introduce qemu_find_netfilters_by_model to find all buffer
>>> filters.
>>>
>>> Signed-off-by: Yang Hongyang <address@hidden>
>>> ---
>>> include/net/filter.h | 5 +++++
>>> net/filter-buffer.c | 41 +++++++++++++++++++++++++++++++++++++++++
>>> net/filter.c | 18 ++++++++++++++++++
>>> 3 files changed, 64 insertions(+)
>>>
>>> diff --git a/include/net/filter.h b/include/net/filter.h
>>> index 5292563..798b5b2 100644
>>> --- a/include/net/filter.h
>>> +++ b/include/net/filter.h
>>> @@ -50,5 +50,10 @@ NetFilterState *qemu_new_net_filter(NetFilterInfo
>>> *info,
>>> const char *name);
>>> void netfilter_add(QemuOpts *opts, Error **errp);
>>> void qmp_netfilter_add(QDict *qdict, QObject **ret, Error **errp);
>>> +int qemu_find_netfilters_by_model(const char *model, NetFilterState
>>> **nfs,
>>> + int max);
>>> +
>>> +/* netbuffer filter */
>>> +void filter_buffer_release_all(void);
>>>
>>> #endif /* QEMU_NET_FILTER_H */
>>> diff --git a/net/filter-buffer.c b/net/filter-buffer.c
>>> index 628e66f..8bac73b 100644
>>> --- a/net/filter-buffer.c
>>> +++ b/net/filter-buffer.c
>>> @@ -11,12 +11,14 @@
>>> #include "filters.h"
>>> #include "qemu-common.h"
>>> #include "qemu/error-report.h"
>>> +#include "qemu/main-loop.h"
>>>
>>> typedef struct FILTERBUFFERState {
>>> NetFilterState nf;
>>> NetClientState dummy; /* used to send buffered packets */
>>> NetQueue *incoming_queue;
>>> NetQueue *inflight_queue;
>>> + QEMUBH *flush_bh;
>>
>> bh should be stopped and restarted during vm stop and continue.
>
> Sorry, could you explain more about this? do you mean to check
> the vm state before bh_schedule?
> how to stop&restart a bh? bh_delete bh_new bh_schedule?
>
>>
>>> } FILTERBUFFERState;
>>>
>>> static void packet_send_completed(NetClientState *nc, ssize_t len)
>>> @@ -56,6 +58,27 @@ static void filter_buffer_flush(NetFilterState *nf)
>>> }
>>> }
>>>
>>> +static void filter_buffer_flush_bh(void *opaque)
>>> +{
>>> + FILTERBUFFERState *s = opaque;
> [...]
>>> +
>>> +/* public APIs */
>>> +void filter_buffer_release_all(void)
>>> +{
>>> + NetFilterState *nfs[MAX_QUEUE_NUM];
>>> + int queues, i;
>>> +
>>> + queues = qemu_find_netfilters_by_model("buffer", nfs,
>>> MAX_QUEUE_NUM);
>>> +
>>> + for (i = 0; i < queues; i++) {
>>> + filter_buffer_release_one(nfs[i]);
>>> + }
>>> +}
>>
>> Looks like the function was never used by following patches?
>
> Right, it's not used in this series. But it can be used by MC to
> release packets
> at checkpoint, Should I mark this unused, or drop this API?
Please drop this and re-introduce them which it has users.
- Re: [Qemu-devel] [PATCH 09/12] netfilter: add a netbuffer filter, (continued)
[Qemu-devel] [PATCH 06/12] netfilter: provide a compat receive_iov, Yang Hongyang, 2015/07/29
[Qemu-devel] [PATCH 05/12] netfilter: hook packets before receive, Yang Hongyang, 2015/07/29
[Qemu-devel] [PATCH 12/12] filter/buffer: update command description and help, Yang Hongyang, 2015/07/29
[Qemu-devel] [PATCH 10/12] netbuffer: add a public api filter_buffer_release_all, Yang Hongyang, 2015/07/29
[Qemu-devel] [PATCH 11/12] filter/buffer: add an interval option to buffer filter, Yang Hongyang, 2015/07/29
[Qemu-devel] [PATCH 04/12] net: add/remove filters from network backend, Yang Hongyang, 2015/07/29
[Qemu-devel] [PATCH 02/12] init/cleanup of netfilter object, Yang Hongyang, 2015/07/29