aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/sun/sunvnet.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/sun/sunvnet.c')
-rw-r--r--drivers/net/ethernet/sun/sunvnet.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/net/ethernet/sun/sunvnet.c b/drivers/net/ethernet/sun/sunvnet.c
index 5c5fb59adf76..deb395a82e50 100644
--- a/drivers/net/ethernet/sun/sunvnet.c
+++ b/drivers/net/ethernet/sun/sunvnet.c
@@ -559,15 +559,17 @@ static int vnet_ack(struct vnet_port *port, void *msgbuf)
559 return 0; 559 return 0;
560 560
561 end = pkt->end_idx; 561 end = pkt->end_idx;
562 if (unlikely(!idx_is_pending(dr, end)))
563 return 0;
564
565 vp = port->vp; 562 vp = port->vp;
566 dev = vp->dev; 563 dev = vp->dev;
564 netif_tx_lock(dev);
565 if (unlikely(!idx_is_pending(dr, end))) {
566 netif_tx_unlock(dev);
567 return 0;
568 }
569
567 /* sync for race conditions with vnet_start_xmit() and tell xmit it 570 /* sync for race conditions with vnet_start_xmit() and tell xmit it
568 * is time to send a trigger. 571 * is time to send a trigger.
569 */ 572 */
570 netif_tx_lock(dev);
571 dr->cons = next_idx(end, dr); 573 dr->cons = next_idx(end, dr);
572 desc = vio_dring_entry(dr, dr->cons); 574 desc = vio_dring_entry(dr, dr->cons);
573 if (desc->hdr.state == VIO_DESC_READY && port->start_cons) { 575 if (desc->hdr.state == VIO_DESC_READY && port->start_cons) {