提交 1058e1a3 编写于 作者: M Mark Cave-Ayland

sunhme: flush any queued packets when HME_MAC_RXCFG_ENABLE bit is raised

Some client drivers use this bit to pause and resume the driver so make sure
that queued packets are flushed when the MAC is disabled and then reactivated.
Signed-off-by: NMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
上级 076489c0
......@@ -373,10 +373,20 @@ static void sunhme_mac_write(void *opaque, hwaddr addr,
uint64_t val, unsigned size)
{
SunHMEState *s = SUNHME(opaque);
uint64_t oldval = s->macregs[addr >> 2];
trace_sunhme_mac_write(addr, val);
s->macregs[addr >> 2] = val;
switch (addr) {
case HME_MACI_RXCFG:
if (!(oldval & HME_MAC_RXCFG_ENABLE) &&
(val & HME_MAC_RXCFG_ENABLE)) {
qemu_flush_queued_packets(qemu_get_queue(s->nic));
}
break;
}
}
static uint64_t sunhme_mac_read(void *opaque, hwaddr addr,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册