|
@@ -8099,9 +8099,6 @@ static netdev_tx_t tg3_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
|
|
/* Sync BD data before updating mailbox */
|
|
|
wmb();
|
|
|
|
|
|
- /* Packets are ready, update Tx producer idx local and on card. */
|
|
|
- tw32_tx_mbox(tnapi->prodmbox, entry);
|
|
|
-
|
|
|
tnapi->tx_prod = entry;
|
|
|
if (unlikely(tg3_tx_avail(tnapi) <= (MAX_SKB_FRAGS + 1))) {
|
|
|
netif_tx_stop_queue(txq);
|
|
@@ -8116,7 +8113,12 @@ static netdev_tx_t tg3_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
|
|
netif_tx_wake_queue(txq);
|
|
|
}
|
|
|
|
|
|
- mmiowb();
|
|
|
+ if (!skb->xmit_more || netif_xmit_stopped(txq)) {
|
|
|
+ /* Packets are ready, update Tx producer idx on card. */
|
|
|
+ tw32_tx_mbox(tnapi->prodmbox, entry);
|
|
|
+ mmiowb();
|
|
|
+ }
|
|
|
+
|
|
|
return NETDEV_TX_OK;
|
|
|
|
|
|
dma_error:
|