From b4ec6a6a687bd6e714e0dddcb8422cfe0d4195a1 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Wed, 1 May 2013 14:07:51 +0100 Subject: [PATCH] [realtek] Defer packets when no transmit descriptors are available Signed-off-by: Michael Brown --- src/drivers/net/realtek.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/drivers/net/realtek.c b/src/drivers/net/realtek.c index f7b5ec58..1fd3931b 100644 --- a/src/drivers/net/realtek.c +++ b/src/drivers/net/realtek.c @@ -724,8 +724,8 @@ static int realtek_transmit ( struct net_device *netdev, /* Get next transmit descriptor */ if ( ( rtl->tx.prod - rtl->tx.cons ) >= RTL_NUM_TX_DESC ) { - DBGC ( rtl, "REALTEK %p out of transmit descriptors\n", rtl ); - return -ENOBUFS; + netdev_tx_defer ( netdev, iobuf ); + return 0; } tx_idx = ( rtl->tx.prod++ % RTL_NUM_TX_DESC ); @@ -809,8 +809,8 @@ static void realtek_poll_tx ( struct net_device *netdev ) { DBGC2 ( rtl, "REALTEK %p TX %d complete\n", rtl, tx_idx ); /* Complete TX descriptor */ - netdev_tx_complete_next ( netdev ); rtl->tx.cons++; + netdev_tx_complete_next ( netdev ); } }