david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[efi] Guard against GetStatus() failing to return a NULL TX buffer

The UEFI specification requires the EFI_SIMPLE_NETWORK_PROTOCOL
GetStatus() method to set TxBuf to NULL if there are no transmit
buffers to recycle.

Some implementations (observed with Lan9118Dxe in EDK2) fill in TxBuf
only when there is a transmit buffer to recycle, which leads to large
numbers of "spurious TX completion" errors.

Work around this problem by initialising TxBuf to NULL before calling
the GetStatus() method.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown 2016-05-11 22:02:26 +01:00
parent 47931a4de5
commit 6164741f81
1 changed files with 1 additions and 0 deletions

View File

@ -191,6 +191,7 @@ static void snpnet_poll_tx ( struct net_device *netdev ) {
int rc;
/* Get status */
txbuf = NULL;
if ( ( efirc = snp->snp->GetStatus ( snp->snp, &irq, &txbuf ) ) != 0 ) {
rc = -EEFI ( efirc );
DBGC ( snp, "SNP %s could not get status: %s\n",