qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 1/4] slirp: Keep next_m always valid


From: Jan Kiszka
Subject: [Qemu-devel] [PATCH 1/4] slirp: Keep next_m always valid
Date: Wed, 29 Feb 2012 20:15:44 +0100

Make sure that next_m always points to a packet if batchq is non-empty.
This will simplify walking the queues in if_start.

CC: Fabien Chouteau <address@hidden>
CC: Zhi Yong Wu <address@hidden>
CC: Stefan Weil <address@hidden>
Signed-off-by: Jan Kiszka <address@hidden>
---
 slirp/if.c |   16 ++++++++--------
 1 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/slirp/if.c b/slirp/if.c
index 33f08e1..166852a 100644
--- a/slirp/if.c
+++ b/slirp/if.c
@@ -96,8 +96,13 @@ if_output(struct socket *so, struct mbuf *ifm)
                        ifs_insque(ifm, ifq->ifs_prev);
                        goto diddit;
                }
-       } else
+        } else {
                ifq = slirp->if_batchq.ifq_prev;
+                /* Set next_m if the queue was empty so far */
+                if (slirp->next_m == &slirp->if_batchq) {
+                    slirp->next_m = ifm;
+                }
+        }
 
        /* Create a new doubly linked list for this session */
        ifm->ifq_so = so;
@@ -170,13 +175,8 @@ void if_start(Slirp *slirp)
         if (slirp->if_fastq.ifq_next != &slirp->if_fastq) {
             ifm = slirp->if_fastq.ifq_next;
         } else {
-            /* Nothing on fastq, see if next_m is valid */
-            if (slirp->next_m != &slirp->if_batchq) {
-                ifm = slirp->next_m;
-            } else {
-                ifm = slirp->if_batchq.ifq_next;
-            }
-
+            /* Nothing on fastq, pick up from batchq via next_m */
+            ifm = slirp->next_m;
             from_batchq = true;
         }
 
-- 
1.7.3.4




reply via email to

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