The RX_FREEBUFFER registers are a write to increment field.
Writing the full queue size to it every time was makeing it overflow with a lot of bogus values. This fixes the interrupt storms on irq 40. Sponsored by: Rubicon Communications, LLC (Netgate)
This commit is contained in:
parent
33d19692e8
commit
71462f5652
@ -1760,7 +1760,7 @@ cpsw_rx_enqueue(struct cpsw_softc *sc)
|
||||
sc->rx.queue_adds += added;
|
||||
sc->rx.avail_queue_len -= added;
|
||||
sc->rx.active_queue_len += added;
|
||||
cpsw_write_4(sc, CPSW_CPDMA_RX_FREEBUFFER(0), sc->rx.active_queue_len);
|
||||
cpsw_write_4(sc, CPSW_CPDMA_RX_FREEBUFFER(0), added);
|
||||
if (sc->rx.active_queue_len > sc->rx.max_active_queue_len) {
|
||||
sc->rx.max_active_queue_len = sc->rx.active_queue_len;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user