[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 21/39] hw/net/lan9118: Signal TSFL_INT flag when TX FIFO reaches s
From: |
Peter Maydell |
Subject: |
[PULL 21/39] hw/net/lan9118: Signal TSFL_INT flag when TX FIFO reaches specified level |
Date: |
Thu, 22 Sep 2022 17:35:18 +0100 |
From: Lucas Dietrich <ld.adecy@gmail.com>
The LAN9118 allows the guest to specify a level for both the TX and
RX FIFOs at which an interrupt will be generated. We implement the
RSFL_INT interrupt for the RX FIFO but are missing the handling of
the equivalent TSFL_INT for the TX FIFO. Add the missing test to set
the interrupt if the TX FIFO has exceeded the guest-specified level.
This flag is required for Micrium lan911x ethernet driver to work.
Signed-off-by: Lucas Dietrich <ld.adecy@gmail.com>
[PMM: Tweaked commit message and comment]
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
hw/net/lan9118.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/hw/net/lan9118.c b/hw/net/lan9118.c
index 456ae38107b..f1cba559672 100644
--- a/hw/net/lan9118.c
+++ b/hw/net/lan9118.c
@@ -696,6 +696,14 @@ static void do_tx_packet(lan9118_state *s)
n = (s->tx_status_fifo_head + s->tx_status_fifo_used) & 511;
s->tx_status_fifo[n] = status;
s->tx_status_fifo_used++;
+
+ /*
+ * Generate TSFL interrupt if TX FIFO level exceeds the level
+ * specified in the FIFO_INT TX Status Level field.
+ */
+ if (s->tx_status_fifo_used > ((s->fifo_int >> 16) & 0xff)) {
+ s->int_sts |= TSFL_INT;
+ }
if (s->tx_status_fifo_used == 512) {
s->int_sts |= TSFF_INT;
/* TODO: Stop transmission. */
--
2.25.1
- [PULL 11/39] target/arm: Remove is_subpage argument to pmsav8_mpu_lookup, (continued)
- [PULL 11/39] target/arm: Remove is_subpage argument to pmsav8_mpu_lookup, Peter Maydell, 2022/09/22
- [PULL 08/39] target/arm: Use GetPhysAddrResult in get_phys_addr_pmsav7, Peter Maydell, 2022/09/22
- [PULL 04/39] target/arm: Use GetPhysAddrResult in get_phys_addr_lpae, Peter Maydell, 2022/09/22
- [PULL 09/39] target/arm: Use GetPhysAddrResult in get_phys_addr_pmsav8, Peter Maydell, 2022/09/22
- [PULL 12/39] target/arm: Add is_secure parameter to v8m_security_lookup, Peter Maydell, 2022/09/22
- [PULL 16/39] target/arm: Add secure parameter to get_phys_addr_pmsav8, Peter Maydell, 2022/09/22
- [PULL 01/39] hw/net/can: fix Xilinx ZynqMP CAN RX FIFO logic, Peter Maydell, 2022/09/22
- [PULL 31/39] ui/curses: Avoid dynamic stack allocation, Peter Maydell, 2022/09/22
- [PULL 10/39] target/arm: Use GetPhysAddrResult in pmsav8_mpu_lookup, Peter Maydell, 2022/09/22
- [PULL 32/39] tests/unit/test-vmstate: Avoid dynamic stack allocation, Peter Maydell, 2022/09/22
- [PULL 21/39] hw/net/lan9118: Signal TSFL_INT flag when TX FIFO reaches specified level,
Peter Maydell <=
- [PULL 23/39] chardev/baum: Use definitions to avoid dynamic stack allocation, Peter Maydell, 2022/09/22
- [PULL 28/39] hw/intc/xics: Avoid dynamic stack allocation, Peter Maydell, 2022/09/22
- [PULL 18/39] target/arm: Add secure parameter to get_phys_addr_pmsav7, Peter Maydell, 2022/09/22
- [PULL 30/39] hw/usb/hcd-ohci: Use definition to avoid dynamic stack allocation, Peter Maydell, 2022/09/22
- [PULL 25/39] io/channel-websock: Replace strlen(const_str) by sizeof(const_str) - 1, Peter Maydell, 2022/09/22
- [PULL 24/39] chardev/baum: Avoid dynamic stack allocation, Peter Maydell, 2022/09/22
- [PULL 26/39] hw/net/e1000e_core: Use definition to avoid dynamic stack allocation, Peter Maydell, 2022/09/22
- [PULL 29/39] hw/i386/multiboot: Avoid dynamic stack allocation, Peter Maydell, 2022/09/22
- [PULL 20/39] hw/acpi: Add ospm_status hook implementation for acpi-ged, Peter Maydell, 2022/09/22
- [PULL 37/39] configure: Remove use of backtick `...` syntax, Peter Maydell, 2022/09/22