mirror of
https://github.com/ipxe/ipxe
synced 2025-12-30 22:08:48 +03:00
[efi] Free transmit ring entry before calling netdev_tx_complete()
The snpnet driver uses netdev_tx_defer() and so must ensure that space in the (single-entry) transmit descriptor ring is freed up before calling netdev_tx_complete(). Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -185,6 +185,7 @@ static int snpnet_transmit ( struct net_device *netdev,
|
|||||||
*/
|
*/
|
||||||
static void snpnet_poll_tx ( struct net_device *netdev ) {
|
static void snpnet_poll_tx ( struct net_device *netdev ) {
|
||||||
struct snp_nic *snp = netdev->priv;
|
struct snp_nic *snp = netdev->priv;
|
||||||
|
struct io_buffer *iobuf;
|
||||||
UINT32 irq;
|
UINT32 irq;
|
||||||
VOID *txbuf;
|
VOID *txbuf;
|
||||||
EFI_STATUS efirc;
|
EFI_STATUS efirc;
|
||||||
@@ -212,8 +213,9 @@ static void snpnet_poll_tx ( struct net_device *netdev ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Complete transmission */
|
/* Complete transmission */
|
||||||
netdev_tx_complete ( netdev, snp->txbuf );
|
iobuf = snp->txbuf;
|
||||||
snp->txbuf = NULL;
|
snp->txbuf = NULL;
|
||||||
|
netdev_tx_complete ( netdev, iobuf );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user