qemu-devel
[Top][All Lists]
Advanced

[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: Yang Hongyang
Subject: Re: [Qemu-devel] [PATCH 10/12] netbuffer: add a public api filter_buffer_release_all
Date: Thu, 30 Jul 2015 16:53:37 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0



On 07/30/2015 04:42 PM, Jason Wang wrote:


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.

Ok.


.


--
Thanks,
Yang.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]