[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 09/23] dp8393x: Use long-word-aligned RRA pointers in 32-bit mode
From: |
Jason Wang |
Subject: |
[PULL 09/23] dp8393x: Use long-word-aligned RRA pointers in 32-bit mode |
Date: |
Mon, 2 Mar 2020 15:40:22 +0800 |
From: Finn Thain <address@hidden>
Section 3.4.1 of the datasheet says,
The alignment of the RRA is confined to either word or long word
boundaries, depending upon the data width mode. In 16-bit mode,
the RRA must be aligned to a word boundary (A0 is always zero)
and in 32-bit mode, the RRA is aligned to a long word boundary
(A0 and A1 are always zero).
This constraint has been implemented for 16-bit mode; implement it
for 32-bit mode too.
Signed-off-by: Finn Thain <address@hidden>
Tested-by: Laurent Vivier <address@hidden>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
Signed-off-by: Jason Wang <address@hidden>
---
hw/net/dp8393x.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/hw/net/dp8393x.c b/hw/net/dp8393x.c
index 6329341..d8bf248 100644
--- a/hw/net/dp8393x.c
+++ b/hw/net/dp8393x.c
@@ -665,12 +665,16 @@ static void dp8393x_write(void *opaque, hwaddr addr,
uint64_t data,
qemu_flush_queued_packets(qemu_get_queue(s->nic));
}
break;
- /* Ignore least significant bit */
+ /* The guest is required to store aligned pointers here */
case SONIC_RSA:
case SONIC_REA:
case SONIC_RRP:
case SONIC_RWP:
- s->regs[reg] = val & 0xfffe;
+ if (s->regs[SONIC_DCR] & SONIC_DCR_DW) {
+ s->regs[reg] = val & 0xfffc;
+ } else {
+ s->regs[reg] = val & 0xfffe;
+ }
break;
/* Invert written value for some registers */
case SONIC_CRCT:
--
2.5.0
- [PULL 07/23] dp8393x: Implement packet size limit and RBAE interrupt, (continued)
- [PULL 07/23] dp8393x: Implement packet size limit and RBAE interrupt, Jason Wang, 2020/03/02
- [PULL 04/23] dp8393x: Have dp8393x_receive() return the packet size, Jason Wang, 2020/03/02
- [PULL 05/23] dp8393x: Update LLFA and CRDA registers from rx descriptor, Jason Wang, 2020/03/02
- [PULL 08/23] dp8393x: Don't clobber packet checksum, Jason Wang, 2020/03/02
- [PULL 06/23] dp8393x: Clear RRRA command register bit only when appropriate, Jason Wang, 2020/03/02
- [PULL 11/23] dp8393x: Clear descriptor in_use field to release packet, Jason Wang, 2020/03/02
- [PULL 10/23] dp8393x: Pad frames to word or long word boundary, Jason Wang, 2020/03/02
- [PULL 13/23] dp8393x: Don't reset Silicon Revision register, Jason Wang, 2020/03/02
- [PULL 16/23] NetRxPkt: Introduce support for additional hash types, Jason Wang, 2020/03/02
- [PULL 18/23] hw: net: cadence_gem: Fix build errors in DB_PRINT(), Jason Wang, 2020/03/02
- [PULL 09/23] dp8393x: Use long-word-aligned RRA pointers in 32-bit mode,
Jason Wang <=
- [PULL 15/23] e1000e: Avoid hw_error if legacy mode used, Jason Wang, 2020/03/02
- [PULL 14/23] dp8393x: Don't stop reception upon RBE interrupt assertion, Jason Wang, 2020/03/02
- [PULL 19/23] block/replication.c: Ignore requests after failover, Jason Wang, 2020/03/02
- [PULL 12/23] dp8393x: Always update RRA pointers and sequence numbers, Jason Wang, 2020/03/02
- [PULL 20/23] tests/test-replication.c: Add test for for secondary node continuing replication, Jason Wang, 2020/03/02
- [PULL 17/23] NetRxPkt: fix hash calculation of IPV6 TCP, Jason Wang, 2020/03/02
- [PULL 22/23] colo: Update Documentation for continuous replication, Jason Wang, 2020/03/02
- [PULL 21/23] net/filter.c: Add Options to insert filters anywhere in the filter list, Jason Wang, 2020/03/02
- [PULL 23/23] l2tpv3: fix RFC number typo in qemu-options.hx, Jason Wang, 2020/03/02
- Re: [PULL 00/23] Net patches, Peter Maydell, 2020/03/02