Le 2018-01-12 18:08, Peter Maydell a écrit :
On 10 January 2018 at 20:38, Jean-Christophe Dubois <j...@tribudubois.net> wrote:
The actual imx_eth_enable_rx() function is buggy.

It updates s->regs[ENET_RDAR] after calling qemu_flush_queued_packets().

qemu_flush_queued_packets() is going to call imx_XXX_receive() which itself
is going to call imx_eth_enable_rx().

By updating s->regs[ENET_RDAR] after calling qemu_flush_queued_packets()
we end up updating the register with an outdated value which might
lead to disabling the receive function in the i.MX FEC/ENET device.

This patch change the place where the register update is done so that the
register value stays up to date and the receive function can keep
running.

Reported-by: Fyleo <fyle...@gmail.com>
Tested-by: Fyleo <fyle...@gmail.com>
Signed-off-by: Jean-Christophe Dubois <j...@tribudubois.net>

Could you have a look at current QEMU master, please? I think that
commit b2b012afdd9c has probably fixed this bug. (At any rate it
has changed that code so that your patch won't apply.)

It seems the patch (imx_fec: Refactor imx_eth_enable_rx()) only renamed a variable (from tmp to rx_ring_full) without changing the logic. So I don't expect the bug to be fixed in mainline.

I'll rebase and resubmit my patch.

JC



thanks
-- PMM


Reply via email to