summaryrefslogtreecommitdiffstats
path: root/src/include/ipxe
diff options
context:
space:
mode:
authorMichael Brown2013-05-01 15:05:42 +0200
committerMichael Brown2013-05-01 15:05:42 +0200
commit2095ed413ec213e2b3874575004eee24f62c2ff4 (patch)
tree65dfe118491e4ea1c0128d95d0fb47c93e7623f6 /src/include/ipxe
parent[dhcp] Remove obsolete bootp.h header (diff)
downloadipxe-2095ed413ec213e2b3874575004eee24f62c2ff4.tar.gz
ipxe-2095ed413ec213e2b3874575004eee24f62c2ff4.tar.xz
ipxe-2095ed413ec213e2b3874575004eee24f62c2ff4.zip
[netdevice] Add netdev_tx_defer() to allow drivers to defer transmissions
Devices with small transmit descriptor rings may temporarily run out of space. Provide netdev_tx_defer() to allow drivers to defer packets for retransmission as soon as a descriptor becomes available. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/include/ipxe')
-rw-r--r--src/include/ipxe/netdevice.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/include/ipxe/netdevice.h b/src/include/ipxe/netdevice.h
index e5dbd996b..21754fe67 100644
--- a/src/include/ipxe/netdevice.h
+++ b/src/include/ipxe/netdevice.h
@@ -346,6 +346,8 @@ struct net_device {
size_t max_pkt_len;
/** TX packet queue */
struct list_head tx_queue;
+ /** Deferred TX packet queue */
+ struct list_head tx_deferred;
/** RX packet queue */
struct list_head rx_queue;
/** TX statistics */
@@ -605,6 +607,8 @@ netdev_rx_frozen ( struct net_device *netdev ) {
extern void netdev_link_err ( struct net_device *netdev, int rc );
extern void netdev_link_down ( struct net_device *netdev );
extern int netdev_tx ( struct net_device *netdev, struct io_buffer *iobuf );
+extern void netdev_tx_defer ( struct net_device *netdev,
+ struct io_buffer *iobuf );
extern void netdev_tx_err ( struct net_device *netdev,
struct io_buffer *iobuf, int rc );
extern void netdev_tx_complete_err ( struct net_device *netdev,