Skip to content

Commit

Permalink
xilinx_ethlite: Flush queued packets on SW service
Browse files Browse the repository at this point in the history
Software services a received packet by clearing the CTRL_S bit in the RX_CTRLn
register. If this bit is cleared, flush any packets queued for the device.

Reported-by: John Williams <john.williams@xilinx.com>
Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
  • Loading branch information
pete128 authored and edgarigl committed Jan 26, 2013
1 parent 808fb9f commit 2f991ad
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions hw/xilinx_ethlite.c
Original file line number Diff line number Diff line change
Expand Up @@ -135,11 +135,14 @@ eth_write(void *opaque, hwaddr addr,
break;

/* Keep these native. */
case R_RX_CTRL0:
case R_RX_CTRL1:
if (!(value & CTRL_S)) {
qemu_flush_queued_packets(&s->nic->nc);
}
case R_TX_LEN0:
case R_TX_LEN1:
case R_TX_GIE0:
case R_RX_CTRL0:
case R_RX_CTRL1:
D(qemu_log("%s addr=%x val=%x\n", __func__, addr * 4, value));
s->regs[addr] = value;
break;
Expand Down

0 comments on commit 2f991ad

Please sign in to comment.