qio: Queues with no limit are always writable
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 16 Feb 2017 19:34:07 +0000 (14:34 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 16 Feb 2017 19:34:07 +0000 (14:34 -0500)
For instance, any queues made with qbypass() (which calls a kick method)
have no q->limit.  You can always try to write to them, and the kick
function pointer will deal with the result, such as dropping a packet.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/src/ns/qio.c

index 354f3f4..8568990 100644 (file)
@@ -1893,5 +1893,5 @@ bool qreadable(struct queue *q)
 /* Helper for detecting whether we'll block on a write at this instant. */
 bool qwritable(struct queue *q)
 {
-       return qwindow(q) > 0;
+       return !q->limit || qwindow(q) > 0;
 }