代码拉取完成,页面将自动刷新
From 85a19a714c4b4702edc59db0a3419f48fffe2b0a Mon Sep 17 00:00:00 2001
From: Jinhua Cao <caojinhua1@huawei.com>
Date: Thu, 17 Feb 2022 17:38:41 +0800
Subject: [PATCH] OvmfPkg: VirtioNetDxe: Extend the RxBufferSize to avoid data
truncation
1822 net card needs at least 1536 bytes for DMA, even we never negotiate
VIRTIO_NET_F_MRG_RXBUF. The original max size of packet is 15144 which would
cause data trucation. Now we extend the RxBufSize to 9014(Jumbo Frame type)
so that we can avoid it.
Signed-off-by: Jinhua Cao <caojinhua1@huawei.com>
---
OvmfPkg/Include/IndustryStandard/Virtio095Net.h | 7 +++++++
OvmfPkg/VirtioNetDxe/SnpInitialize.c | 3 ++-
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/OvmfPkg/Include/IndustryStandard/Virtio095Net.h b/OvmfPkg/Include/IndustryStandard/Virtio095Net.h
index 9c0ed5ed24..28f5cc0899 100644
--- a/OvmfPkg/Include/IndustryStandard/Virtio095Net.h
+++ b/OvmfPkg/Include/IndustryStandard/Virtio095Net.h
@@ -88,4 +88,11 @@ typedef struct {
#define VIRTIO_NET_S_LINK_UP BIT0
#define VIRTIO_NET_S_ANNOUNCE BIT1
+//
+// 1822 net card needs at least 1536 bytes for DMA, even we never negotiate
+// VIRTIO_NET_F_MRG_RXBUF. The original max size of packet is 15144 which would
+// cause data trucation. Now we extend the RxBufSize to 9014(Jumbo Frame type)
+// so that we can avoid it.
+#define VIRTIO_RXBUF_JUMBO_PADDING 7500
+
#endif // _VIRTIO_0_9_5_NET_H_
diff --git a/OvmfPkg/VirtioNetDxe/SnpInitialize.c b/OvmfPkg/VirtioNetDxe/SnpInitialize.c
index bb3b552d68..6febfea3bb 100644
--- a/OvmfPkg/VirtioNetDxe/SnpInitialize.c
+++ b/OvmfPkg/VirtioNetDxe/SnpInitialize.c
@@ -337,7 +337,8 @@ VirtioNetInitRx (
// and Ethernet payload).
//
RxBufSize = VirtioNetReqSize +
- (Dev->Snm.MediaHeaderSize + Dev->Snm.MaxPacketSize);
+ (Dev->Snm.MediaHeaderSize + Dev->Snm.MaxPacketSize) +
+ VIRTIO_RXBUF_JUMBO_PADDING;
//
// Limit the number of pending RX packets if the queue is big. The division
--
2.27.0
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。