- pci-host: designware: Limit value range of iATU viewport register - hmat acpi: Fix out of bounds access due to missing use of indirection - migration: Skip only empty block devices - aspeed/hace: Initialize g_autofree pointer - hw/net/vmxnet3: Fix guest-triggerable assert() - qxl: don't assert() if device isn't yet initialized - Avoid unaligned fetch in ladr_match() - linux-user: Fix waitid return of siginfo_t and rusage - hw/net/lan9118: Replace magic '2048' value by MIL_TXFIFO_SIZE definition - stdvga: fix screen blanking - virtio-net: drop too short packets early - ebpf: replace deprecated bpf_program__set_socket_filter - vhsot-user: only read reply of SET_LOG_BASE from vq 0 - cpu: add Tengyun S5000C cpu support - hw/virtio: Fix obtain the buffer id from the last descriptor - hw/core: ensure kernel_end never gets used undefined Signed-off-by: Jiabo Feng <fengjiabo1@huawei.com> (cherry picked from commit 1f9e476e96edb07e34e0133a312f478ddab4b6ff)
76 lines
2.5 KiB
Diff
76 lines
2.5 KiB
Diff
From c85a85a2c5eb5f26f9c713c010e2ca3408cb8ce4 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>
|
|
Date: Mon, 8 Apr 2024 12:44:22 +0200
|
|
Subject: [PATCH] hw/net/lan9118: Replace magic '2048' value by MIL_TXFIFO_SIZE
|
|
definition
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
The magic 2048 is explained in the LAN9211 datasheet (DS00002414A)
|
|
in chapter 1.4, "10/100 Ethernet MAC":
|
|
|
|
The MAC Interface Layer (MIL), within the MAC, contains a
|
|
2K Byte transmit and a 128 Byte receive FIFO which is separate
|
|
from the TX and RX FIFOs. [...]
|
|
|
|
Note, the use of the constant in lan9118_receive() reveals that
|
|
our implementation is using the same buffer for both tx and rx.
|
|
|
|
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
|
|
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
|
|
Message-Id: <20240409133801.23503-2-philmd@linaro.org>
|
|
(cherry picked from commit a45223467e4e185fff1c76a6483784fa379ded77)
|
|
Signed-off-by: zhujun2 <zhujun2_yewu@cmss.chinamobile.com>
|
|
---
|
|
hw/net/lan9118.c | 12 +++++++++---
|
|
1 file changed, 9 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/hw/net/lan9118.c b/hw/net/lan9118.c
|
|
index 942bce9ae6..fa43758105 100644
|
|
--- a/hw/net/lan9118.c
|
|
+++ b/hw/net/lan9118.c
|
|
@@ -155,6 +155,12 @@ do { fprintf(stderr, "lan9118: error: " fmt , ## __VA_ARGS__);} while (0)
|
|
|
|
#define GPT_TIMER_EN 0x20000000
|
|
|
|
+/*
|
|
+ * The MAC Interface Layer (MIL), within the MAC, contains a 2K Byte transmit
|
|
+ * and a 128 Byte receive FIFO which is separate from the TX and RX FIFOs.
|
|
+ */
|
|
+#define MIL_TXFIFO_SIZE 2048
|
|
+
|
|
enum tx_state {
|
|
TX_IDLE,
|
|
TX_B,
|
|
@@ -171,7 +177,7 @@ typedef struct {
|
|
int32_t pad;
|
|
int32_t fifo_used;
|
|
int32_t len;
|
|
- uint8_t data[2048];
|
|
+ uint8_t data[MIL_TXFIFO_SIZE];
|
|
} LAN9118Packet;
|
|
|
|
static const VMStateDescription vmstate_lan9118_packet = {
|
|
@@ -187,7 +193,7 @@ static const VMStateDescription vmstate_lan9118_packet = {
|
|
VMSTATE_INT32(pad, LAN9118Packet),
|
|
VMSTATE_INT32(fifo_used, LAN9118Packet),
|
|
VMSTATE_INT32(len, LAN9118Packet),
|
|
- VMSTATE_UINT8_ARRAY(data, LAN9118Packet, 2048),
|
|
+ VMSTATE_UINT8_ARRAY(data, LAN9118Packet, MIL_TXFIFO_SIZE),
|
|
VMSTATE_END_OF_LIST()
|
|
}
|
|
};
|
|
@@ -549,7 +555,7 @@ static ssize_t lan9118_receive(NetClientState *nc, const uint8_t *buf,
|
|
return -1;
|
|
}
|
|
|
|
- if (size >= 2048 || size < 14) {
|
|
+ if (size >= MIL_TXFIFO_SIZE || size < 14) {
|
|
return -1;
|
|
}
|
|
|
|
--
|
|
2.41.0.windows.1
|
|
|