aboutsummaryrefslogtreecommitdiffstats
path: root/extras/mini-os/netfront.c
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-06-20 17:45:23 +0100
committerKeir Fraser <keir.fraser@citrix.com>2008-06-20 17:45:23 +0100
commit639f3f1a2274add4a4d66e2819e424b19751e1b4 (patch)
tree224f25b55f18983ebd1998f8e74890b63688fa44 /extras/mini-os/netfront.c
parent0e05d6cdd81662d44e2c6f46ea89a7060012123b (diff)
downloadxen-639f3f1a2274add4a4d66e2819e424b19751e1b4.tar.gz
xen-639f3f1a2274add4a4d66e2819e424b19751e1b4.tar.bz2
xen-639f3f1a2274add4a4d66e2819e424b19751e1b4.zip
minios: fix add_id_to_freelist(0)
add_id_to_freelist(0) would make get_id_from_freelist() always return 0. Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
Diffstat (limited to 'extras/mini-os/netfront.c')
-rw-r--r--extras/mini-os/netfront.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/extras/mini-os/netfront.c b/extras/mini-os/netfront.c
index d01ce6927b..3fff0accdd 100644
--- a/extras/mini-os/netfront.c
+++ b/extras/mini-os/netfront.c
@@ -38,7 +38,7 @@ struct net_buffer {
struct netfront_dev {
domid_t dom;
- unsigned short tx_freelist[NET_TX_RING_SIZE];
+ unsigned short tx_freelist[NET_TX_RING_SIZE + 1];
struct semaphore tx_sem;
struct net_buffer rx_buffers[NET_RX_RING_SIZE];
@@ -70,14 +70,14 @@ void init_rx_buffers(struct netfront_dev *dev);
static inline void add_id_to_freelist(unsigned int id,unsigned short* freelist)
{
- freelist[id] = freelist[0];
+ freelist[id + 1] = freelist[0];
freelist[0] = id;
}
static inline unsigned short get_id_from_freelist(unsigned short* freelist)
{
unsigned int id = freelist[0];
- freelist[0] = freelist[id];
+ freelist[0] = freelist[id + 1];
return id;
}