hw/net/lan9118: Signal TSFL_INT flag when TX FIFO reaches specified level
The LAN9118 allows the guest to specify a level for both the TX and RX FIFOs at which an interrupt will be generated. We implement the RSFL_INT interrupt for the RX FIFO but are missing the handling of the equivalent TSFL_INT for the TX FIFO. Add the missing test to set the interrupt if the TX FIFO has exceeded the guest-specified level. This flag is required for Micrium lan911x ethernet driver to work. Signed-off-by: Lucas Dietrich <ld.adecy@gmail.com> [PMM: Tweaked commit message and comment] Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
d4424bebce
commit
895a803ce9
@ -696,6 +696,14 @@ static void do_tx_packet(lan9118_state *s)
|
||||
n = (s->tx_status_fifo_head + s->tx_status_fifo_used) & 511;
|
||||
s->tx_status_fifo[n] = status;
|
||||
s->tx_status_fifo_used++;
|
||||
|
||||
/*
|
||||
* Generate TSFL interrupt if TX FIFO level exceeds the level
|
||||
* specified in the FIFO_INT TX Status Level field.
|
||||
*/
|
||||
if (s->tx_status_fifo_used > ((s->fifo_int >> 16) & 0xff)) {
|
||||
s->int_sts |= TSFL_INT;
|
||||
}
|
||||
if (s->tx_status_fifo_used == 512) {
|
||||
s->int_sts |= TSFF_INT;
|
||||
/* TODO: Stop transmission. */
|
||||
|
Loading…
Reference in New Issue
Block a user