On 7/4/21 4:48 PM, Mark Cave-Ayland wrote: > On 03/07/2021 15:19, Philippe Mathieu-Daudé wrote: > >> Per the DP83932C datasheet from July 1995: >> >> 4.0 SONIC Registers >> 4.1 THE CAM UNIT >> >> The Content Addressable Memory (CAM) consists of sixteen >> 48-bit entries for complete address filtering of network >> packets. Each entry corresponds to a 48-bit destination >> address that is user programmable and can contain any >> combination of Multicast or Physical addresses. Each entry >> is partitioned into three 16-bit CAM cells accessible >> through CAM Address Ports (CAP 2, CAP 1 and CAP 0) with >> CAP0 corresponding to the least significant 16 bits of >> the Destination Address and CAP2 corresponding to the >> most significant bits. >> >> Store the CAM registers as 16-bit as it simplifies the code. >> There is no change in the migration stream. >> >> Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> >> --- >> hw/net/dp8393x.c | 23 ++++++++++------------- >> 1 file changed, 10 insertions(+), 13 deletions(-)
>> @@ -987,7 +984,7 @@ static const VMStateDescription vmstate_dp8393x = { >> .version_id = 0, >> .minimum_version_id = 0, >> .fields = (VMStateField []) { >> - VMSTATE_BUFFER_UNSAFE(cam, dp8393xState, 0, 16 * 6), >> + VMSTATE_BUFFER_UNSAFE(cam, dp8393xState, 0, 16 * 3 * 2), >> VMSTATE_UINT16_ARRAY(regs, dp8393xState, 0x40), >> VMSTATE_END_OF_LIST() >> } > > I'd still be inclined to change VMSTATE_BUFFER_UNSAFE for > VMSTATE_UINT16_ARRAY whilst you can do it without having to worry about > the migration stream being already broken, but anyhow: > > Reviewed-by: Mark Cave-Ayland <mark.cave-ayl...@ilande.co.uk> Do you want me to squash: -- >8 -- diff --git a/hw/net/dp8393x.c b/hw/net/dp8393x.c index 1d1837dbd38..4c2fa0aabbd 100644 --- a/hw/net/dp8393x.c +++ b/hw/net/dp8393x.c @@ -951,10 +951,10 @@ static void dp8393x_realize(DeviceState *dev, Error **errp) static const VMStateDescription vmstate_dp8393x = { .name = "dp8393x", - .version_id = 0, - .minimum_version_id = 0, + .version_id = 1, + .minimum_version_id = 1, .fields = (VMStateField []) { - VMSTATE_BUFFER_UNSAFE(cam, dp8393xState, 0, 16 * 3 * 2), + VMSTATE_UINT16_ARRAY(cam, dp8393xState, 0, 16 * 3), VMSTATE_UINT16_ARRAY(regs, dp8393xState, 0x40), VMSTATE_END_OF_LIST() } --- Or send it as a new patch?