diff options
| author | Michael Brown | 2013-05-01 15:05:42 +0200 |
|---|---|---|
| committer | Michael Brown | 2013-05-01 15:05:42 +0200 |
| commit | 2095ed413ec213e2b3874575004eee24f62c2ff4 (patch) | |
| tree | 65dfe118491e4ea1c0128d95d0fb47c93e7623f6 /src/include/ipxe | |
| parent | [dhcp] Remove obsolete bootp.h header (diff) | |
| download | ipxe-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.h | 4 |
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, |
