mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-21 14:41:31 +00:00
efi_loader: fix efi_net_get_status
The returned interrupt status was wrong. As out transmit buffer is empty we need to always set EFI_SIMPLE_NETWORK_TRANSMIT_INTERRUPT. When we have received a packet we need to set EFI_SIMPLE_NETWORK_RECEIVE_INTERRUPT. Furthermore we should call efi_timer_check() to handle events. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
e5c21603fc
commit
891b3d9051
2 changed files with 14 additions and 3 deletions
|
@ -600,6 +600,12 @@ struct efi_simple_network_mode {
|
||||||
#define EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS 0x08
|
#define EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS 0x08
|
||||||
#define EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS_MULTICAST 0x10
|
#define EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS_MULTICAST 0x10
|
||||||
|
|
||||||
|
/* interrupt status bit mask */
|
||||||
|
#define EFI_SIMPLE_NETWORK_RECEIVE_INTERRUPT 0x01
|
||||||
|
#define EFI_SIMPLE_NETWORK_TRANSMIT_INTERRUPT 0x02
|
||||||
|
#define EFI_SIMPLE_NETWORK_COMMAND_INTERRUPT 0x04
|
||||||
|
#define EFI_SIMPLE_NETWORK_SOFTWARE_INTERRUPT 0x08
|
||||||
|
|
||||||
/* revision of the simple network protocol */
|
/* revision of the simple network protocol */
|
||||||
#define EFI_SIMPLE_NETWORK_PROTOCOL_REVISION 0x00010000
|
#define EFI_SIMPLE_NETWORK_PROTOCOL_REVISION 0x00010000
|
||||||
|
|
||||||
|
|
|
@ -133,9 +133,14 @@ static efi_status_t EFIAPI efi_net_get_status(struct efi_simple_network *this,
|
||||||
{
|
{
|
||||||
EFI_ENTRY("%p, %p, %p", this, int_status, txbuf);
|
EFI_ENTRY("%p, %p, %p", this, int_status, txbuf);
|
||||||
|
|
||||||
/* We send packets synchronously, so nothing is outstanding */
|
efi_timer_check();
|
||||||
if (int_status)
|
|
||||||
*int_status = 0;
|
if (int_status) {
|
||||||
|
/* We send packets synchronously, so nothing is outstanding */
|
||||||
|
*int_status = EFI_SIMPLE_NETWORK_TRANSMIT_INTERRUPT;
|
||||||
|
if (new_rx_packet)
|
||||||
|
*int_status |= EFI_SIMPLE_NETWORK_RECEIVE_INTERRUPT;
|
||||||
|
}
|
||||||
if (txbuf)
|
if (txbuf)
|
||||||
*txbuf = new_tx_packet;
|
*txbuf = new_tx_packet;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue