aboutsummaryrefslogtreecommitdiffstats
path: root/xenolinux-2.4.16-sparse/arch
diff options
context:
space:
mode:
authorkaf24@labyrinth.cl.cam.ac.uk <kaf24@labyrinth.cl.cam.ac.uk>2003-02-15 16:27:50 +0000
committerkaf24@labyrinth.cl.cam.ac.uk <kaf24@labyrinth.cl.cam.ac.uk>2003-02-15 16:27:50 +0000
commit012205389ca8ec4e6d1feec967ec2228c2f72ef3 (patch)
tree93a04c533a63bbc1e95f6218ed923df54e9fa697 /xenolinux-2.4.16-sparse/arch
parent646c9dc643a42520a4eda85902bbf8e17d60b958 (diff)
downloadxen-012205389ca8ec4e6d1feec967ec2228c2f72ef3.tar.gz
xen-012205389ca8ec4e6d1feec967ec2228c2f72ef3.tar.bz2
xen-012205389ca8ec4e6d1feec967ec2228c2f72ef3.zip
bitkeeper revision 1.45 (3e4e6a86G4hu-Sevb5UwTWaaiHxKHw)
network.c: It is not safe to destroy the net rx ring in xenolinux right now. That code has been disabled.
Diffstat (limited to 'xenolinux-2.4.16-sparse/arch')
-rw-r--r--xenolinux-2.4.16-sparse/arch/xeno/drivers/network/network.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/xenolinux-2.4.16-sparse/arch/xeno/drivers/network/network.c b/xenolinux-2.4.16-sparse/arch/xeno/drivers/network/network.c
index b87ef4a090..c9c6718fd1 100644
--- a/xenolinux-2.4.16-sparse/arch/xeno/drivers/network/network.c
+++ b/xenolinux-2.4.16-sparse/arch/xeno/drivers/network/network.c
@@ -63,7 +63,6 @@ struct net_private
unsigned int rx_idx, tx_idx, tx_full;
net_ring_t *net_ring;
spinlock_t tx_lock;
- unsigned int id;
};
@@ -109,6 +108,7 @@ static int network_open(struct net_device *dev)
{
printk(KERN_WARNING "%s: Could not allocate receive interrupt\n",
dev->name);
+ network_free_rx_buffers(dev);
goto fail;
}
@@ -119,6 +119,7 @@ static int network_open(struct net_device *dev)
printk(KERN_WARNING "%s: Could not allocate transmit interrupt\n",
dev->name);
free_irq(NET_RX_IRQ, dev);
+ network_free_rx_buffers(dev);
goto fail;
}
@@ -189,8 +190,7 @@ static void network_alloc_rx_buffers(struct net_device *dev)
unsigned int i;
struct net_private *np = dev->priv;
struct sk_buff *skb;
- unsigned int end = RX_RING_ADD(np->rx_idx, RX_MAX_ENTRIES);
-
+ unsigned int end = RX_RING_ADD(np->rx_idx, RX_MAX_ENTRIES);
for ( i = np->net_ring->rx_prod; i != end; i = RX_RING_INC(i) )
{
@@ -213,6 +213,13 @@ static void network_alloc_rx_buffers(struct net_device *dev)
static void network_free_rx_buffers(struct net_device *dev)
{
+ /*
+ * XXXX This cannot be done safely until be have a proper interface
+ * for setting up and tearing down virtual interfaces on the fly.
+ * Currently the receive buffers are locked down by Xen and we have
+ * no sensible way of retrieving them.
+ */
+#if 0
unsigned int i;
struct net_private *np = dev->priv;
struct sk_buff *skb;
@@ -222,6 +229,7 @@ static void network_free_rx_buffers(struct net_device *dev)
skb = np->rx_skb_ring[i];
dev_kfree_skb(skb);
}
+#endif
}
static int network_start_xmit(struct sk_buff *skb, struct net_device *dev)
@@ -399,7 +407,6 @@ int __init init_module(void)
}
np->dev = dev;
- np->id = i;
list_add(&np->list, &dev_list);
}