diff mbox

[U-Boot,v4,9/9] efi_loader: Allow bouncing for network

Message ID 1466464039-51199-10-git-send-email-agraf@suse.de
State Accepted
Commit 712cd2987489fe62aedeb24730e730871b1eb627
Delegated to: Alexander Graf
Headers show

Commit Message

Alexander Graf June 20, 2016, 11:07 p.m. UTC
So far bounce buffers were only used for disk I/O, but network I/O
may suffer from the same problem.

On platforms that have problems doing DMA on high addresses, let's
also bounce outgoing network packets. Incoming ones always already
get bounced.

Signed-off-by: Alexander Graf <agraf@suse.de>
---
 lib/efi_loader/efi_net.c | 7 +++++++
 1 file changed, 7 insertions(+)
diff mbox

Patch

diff --git a/lib/efi_loader/efi_net.c b/lib/efi_loader/efi_net.c
index dd3b485..6a8a0d7 100644
--- a/lib/efi_loader/efi_net.c
+++ b/lib/efi_loader/efi_net.c
@@ -152,7 +152,14 @@  static efi_status_t EFIAPI efi_net_transmit(struct efi_simple_network *this,
 		return EFI_EXIT(EFI_INVALID_PARAMETER);
 	}
 
+#ifdef CONFIG_EFI_LOADER_BOUNCE_BUFFER
+	/* Ethernet packets always fit, just bounce */
+	memcpy(efi_bounce_buffer, buffer, buffer_size);
+	net_send_packet(efi_bounce_buffer, buffer_size);
+#else
 	net_send_packet(buffer, buffer_size);
+#endif
+
 	new_tx_packet = buffer;
 
 	return EFI_EXIT(EFI_SUCCESS);