Use a "one block at a time" policy for snoop queues
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 21 Sep 2016 19:49:21 +0000 (15:49 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 21 Sep 2016 21:28:46 +0000 (17:28 -0400)
commitb659c65a9a8bd82ca6773f98e91fbcea5f24e92b
tree567820e16d88e665a952afb536cf1ca1da8e6637
parent00cbc7da8499ae80771f54220e6085db02c35207
Use a "one block at a time" policy for snoop queues

This fixes snoopy's packet loss.

Snoopy expects to receive a packet at a time.  If you send more than one
packet in a read, the later packets get dropped.  We could change snoopy,
but it is a little easier to tell the kernel to just return one block
(packet) at a time when we do a qread.

In part, I went with this approach since we'll probably want more kernel
support for packet tracing, not less.  For instance, right now, snoopy's
time stamps are taken in userspace when the queue is read, not when the
packet is received or sent.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/src/net/devip.c
kern/src/net/ipifc.c
kern/src/net/netif.c