disable queue of all interfaces when tx ring is full
SVN-Revision: 10073
This commit is contained in:
parent
beb32bfbbc
commit
f6f43b9d40
1 changed files with 6 additions and 2 deletions
|
@ -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…
Reference in a new issue