[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 01/10] dp8393x: Mask EOL bit from descriptor addresses
From: |
Finn Thain |
Subject: |
[PATCH 01/10] dp8393x: Mask EOL bit from descriptor addresses |
Date: |
Sat, 14 Dec 2019 12:25:57 +1100 |
The LSB of descriptor address registers is used as an EOL flag.
It has to be masked when those registers are to be used as actual
addresses for copying memory around. But when the registers are
to be updated the EOL bit should not be masked.
Signed-off-by: Finn Thain <address@hidden>
---
hw/net/dp8393x.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/hw/net/dp8393x.c b/hw/net/dp8393x.c
index 3d991af163..164311c055 100644
--- a/hw/net/dp8393x.c
+++ b/hw/net/dp8393x.c
@@ -197,7 +197,7 @@ static uint32_t dp8393x_crba(dp8393xState *s)
static uint32_t dp8393x_crda(dp8393xState *s)
{
- return (s->regs[SONIC_URDA] << 16) | s->regs[SONIC_CRDA];
+ return (s->regs[SONIC_URDA] << 16) | (s->regs[SONIC_CRDA] & 0xfffe);
}
static uint32_t dp8393x_rbwc(dp8393xState *s)
@@ -217,7 +217,7 @@ static uint32_t dp8393x_tsa(dp8393xState *s)
static uint32_t dp8393x_ttda(dp8393xState *s)
{
- return (s->regs[SONIC_UTDA] << 16) | s->regs[SONIC_TTDA];
+ return (s->regs[SONIC_UTDA] << 16) | (s->regs[SONIC_TTDA] & 0xfffe);
}
static uint32_t dp8393x_wt(dp8393xState *s)
@@ -506,8 +506,8 @@ static void dp8393x_do_transmit_packets(dp8393xState *s)
sizeof(uint16_t) *
(4 + 3 * s->regs[SONIC_TFC]) * width,
MEMTXATTRS_UNSPECIFIED, (uint8_t *)s->data, size, 0);
- s->regs[SONIC_CTDA] = dp8393x_get(s, width, 0) & ~0x1;
- if (dp8393x_get(s, width, 0) & 0x1) {
+ s->regs[SONIC_CTDA] = dp8393x_get(s, width, 0);
+ if (s->regs[SONIC_CTDA] & 0x1) {
/* EOL detected */
break;
}
--
2.23.0
- Re: [PATCH 06/10] dp8393x: Clear RRRA command register bit only when appropriate, (continued)
- [PATCH 10/10] dp8393x: Don't clobber packet checksum, Finn Thain, 2019/12/13
- [PATCH 09/10] dp8393x: Don't stop reception upon RBE interrupt assertion, Finn Thain, 2019/12/13
- [PATCH 04/10] dp8393x: Don't advance RX descriptor twice, Finn Thain, 2019/12/13
- [PATCH 07/10] dp8393x: Implement TBWC0 and TBWC1 registers to restore buffer state, Finn Thain, 2019/12/13
- [PATCH 08/10] dp8393x: Implement packet size limit and RBAE interrupt, Finn Thain, 2019/12/13
- [PATCH 03/10] dp8393x: Have dp8393x_receive() return the packet size, Finn Thain, 2019/12/13
- [PATCH 02/10] dp8393x: Clean up endianness hacks, Finn Thain, 2019/12/13
- [PATCH 01/10] dp8393x: Mask EOL bit from descriptor addresses,
Finn Thain <=
- Re: [PATCH 00/10] Fixes for DP8393X SONIC device emulation, Aleksandar Markovic, 2019/12/14
- Re: [PATCH 00/10] Fixes for DP8393X SONIC device emulation, Finn Thain, 2019/12/14
- Re: [PATCH 00/10] Fixes for DP8393X SONIC device emulation, Aleksandar Markovic, 2019/12/14
- Re: [PATCH 00/10] Fixes for DP8393X SONIC device emulation, Aleksandar Markovic, 2019/12/14
- Re: [PATCH 00/10] Fixes for DP8393X SONIC device emulation, Finn Thain, 2019/12/19
- Re: [PATCH 00/10] Fixes for DP8393X SONIC device emulation, Philippe Mathieu-Daudé, 2019/12/23
- NetBSD/arc on MIPS Magnum, was Re: [PATCH 00/10] Fixes for DP8393X SONIC device emulation, Finn Thain, 2019/12/23
- Re: NetBSD/arc on MIPS Magnum, was Re: [PATCH 00/10] Fixes for DP8393X SONIC device emulation, Finn Thain, 2019/12/23