mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
bitkeeper revision 1.103.1.1 (3e5d18a7GqCcFtgB4EjULbmAXiDJzw)
xenolinux network driver tx_event now set to tx_prod rather than tx_prod+1 seems to fix a network hang problem...
This commit is contained in:
1 parent
52c54dcbd1
commit
937d9e4f01
1 file changed
+17
-1
@@ -66,6 +66,17 @@ struct net_private
|
||||
};
|
||||
|
||||
|
||||
static void dbg_network_int(int irq, void *dev_id, struct pt_regs *ptregs)
|
||||
{
|
||||
struct net_device *dev = (struct net_device *)dev_id;
|
||||
struct net_private *np = dev->priv;
|
||||
printk(KERN_ALERT "tx_full = %d, tx_entries = %d, tx_idx = %d, tx_cons = %d, tx_prod = %d, tx_event = %d, state=%d\n",
|
||||
np->tx_full, np->tx_entries, np->tx_idx,
|
||||
np->net_ring->tx_cons,np->net_ring->tx_prod,np->net_ring->tx_event,
|
||||
test_bit(__LINK_STATE_XOFF, &dev->state));
|
||||
}
|
||||
|
||||
|
||||
static int network_open(struct net_device *dev)
|
||||
{
|
||||
struct net_private *np = dev->priv;
|
||||
@@ -123,6 +134,11 @@ static int network_open(struct net_device *dev)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
#if 1
|
||||
request_irq( _EVENT_DEBUG, dbg_network_int, SA_SHARED, "debug", dev);
|
||||
#endif
|
||||
|
||||
|
||||
printk("XenoLinux Virtual Network Driver installed as %s\n", dev->name);
|
||||
|
||||
netif_start_queue(dev);
|
||||
@@ -268,7 +284,7 @@ static int network_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
else
|
||||
{
|
||||
/* Avoid unnecessary tx interrupts. */
|
||||
np->net_ring->tx_event = TX_RING_INC(np->net_ring->tx_prod);
|
||||
np->net_ring->tx_event = np->net_ring->tx_prod;
|
||||
}
|
||||
spin_unlock_irq(&np->tx_lock);
|
||||
|
||||
|
||||