diff options
author | Michael Brown | 2013-05-01 15:07:51 +0200 |
---|---|---|
committer | Michael Brown | 2013-05-01 15:07:51 +0200 |
commit | b4ec6a6a687bd6e714e0dddcb8422cfe0d4195a1 (patch) | |
tree | 1a954a58ebaae6f6ea102fbb9a94c50edc3c3a2c | |
parent | [netdevice] Add netdev_tx_defer() to allow drivers to defer transmissions (diff) | |
download | ipxe-b4ec6a6a687bd6e714e0dddcb8422cfe0d4195a1.tar.gz ipxe-b4ec6a6a687bd6e714e0dddcb8422cfe0d4195a1.tar.xz ipxe-b4ec6a6a687bd6e714e0dddcb8422cfe0d4195a1.zip |
[realtek] Defer packets when no transmit descriptors are available
Signed-off-by: Michael Brown <mcb30@ipxe.org>
-rw-r--r-- | src/drivers/net/realtek.c | 6 |
1 files 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 ); } } |