summaryrefslogtreecommitdiffstats
path: root/sys/arm/ti
diff options
context:
space:
mode:
authorloos <loos@FreeBSD.org>2016-12-31 01:54:48 +0000
committerloos <loos@FreeBSD.org>2016-12-31 01:54:48 +0000
commit94e07a4b48a5f04fe2a736f2dca31158b09fed52 (patch)
tree345c9cbca5d7c25939f228c4065bc6f33aecfa47 /sys/arm/ti
parentb27ff02f45134fdeb70f8c5efaebaeaaa1fe1801 (diff)
downloadFreeBSD-src-94e07a4b48a5f04fe2a736f2dca31158b09fed52.zip
FreeBSD-src-94e07a4b48a5f04fe2a736f2dca31158b09fed52.tar.gz
MFC r309345:
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. MFC r309347: MDIO_PHYACCESS_ACK is only valid for read access, remove it from miibus_writereg. Reduce the DELAY() between reads while waiting for MII access. Spotted by: yongari Sponsored by: Rubicon Communications, LLC (Netgate)
Diffstat (limited to 'sys/arm/ti')
-rw-r--r--sys/arm/ti/cpsw/if_cpsw.c5
-rw-r--r--sys/arm/ti/cpsw/if_cpswvar.h4
2 files changed, 3 insertions, 6 deletions
diff --git a/sys/arm/ti/cpsw/if_cpsw.c b/sys/arm/ti/cpsw/if_cpsw.c
index 3acb26c..8a72aa1 100644
--- a/sys/arm/ti/cpsw/if_cpsw.c
+++ b/sys/arm/ti/cpsw/if_cpsw.c
@@ -1513,9 +1513,6 @@ cpswp_miibus_writereg(device_t dev, int phy, int reg, int value)
return (0);
}
- if ((cpsw_read_4(sc->swsc, sc->phyaccess) & MDIO_PHYACCESS_ACK) == 0)
- device_printf(dev, "Failed to write to PHY.\n");
-
return (0);
}
@@ -1761,7 +1758,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;
}
diff --git a/sys/arm/ti/cpsw/if_cpswvar.h b/sys/arm/ti/cpsw/if_cpswvar.h
index 4024c52..f037dd5 100644
--- a/sys/arm/ti/cpsw/if_cpswvar.h
+++ b/sys/arm/ti/cpsw/if_cpswvar.h
@@ -33,8 +33,8 @@
#define CPSW_INTR_COUNT 4
/* MII BUS */
-#define CPSW_MIIBUS_RETRIES 5
-#define CPSW_MIIBUS_DELAY 1000
+#define CPSW_MIIBUS_RETRIES 20
+#define CPSW_MIIBUS_DELAY 100
#define CPSW_MAX_ALE_ENTRIES 1024
OpenPOWER on IntegriCloud