disable queue of all interfaces when tx ring is full

SVN-Revision: 10073
master
Gabor Juhos 17 years ago
parent beb32bfbbc
commit f6f43b9d40
  1. 8
      target/linux/adm5120/files/drivers/net/adm5120sw.c

@ -843,6 +843,7 @@ static int adm5120_if_hard_start_xmit(struct sk_buff *skb,
struct adm5120_if_priv *priv = netdev_priv(dev); struct adm5120_if_priv *priv = netdev_priv(dev);
unsigned int entry; unsigned int entry;
unsigned long data; unsigned long data;
int i;
/* lock switch irq */ /* lock switch irq */
spin_lock_irq(&tx_lock); spin_lock_irq(&tx_lock);
@ -875,8 +876,11 @@ static int adm5120_if_hard_start_xmit(struct sk_buff *skb,
cur_txl++; cur_txl++;
if (cur_txl == dirty_txl + TX_QUEUE_LEN) { if (cur_txl == dirty_txl + TX_QUEUE_LEN) {
/* FIXME: stop queue for all devices */ for (i = 0; i < SWITCH_NUM_PORTS; i++) {
netif_stop_queue(dev); if (!adm5120_devs[i])
continue;
netif_stop_queue(dev);
}
} }
dev->trans_start = jiffies; dev->trans_start = jiffies;

Loading…
Cancel
Save