From 6990349d22caa8302a390d90ec9cf2b954061132 Mon Sep 17 00:00:00 2001 From: Aaron Kramer Date: Thu, 10 Oct 2019 13:30:49 -0400 Subject: [PATCH] net: prueth: fix disabling storm prevention Storm prevention feature was not being disabled because value was only being written to memory for firmware to read if storm prevention was enabled. Fix writes disabled status to memory once, when storm prevention is disabled through sysfs. Additionally, the correct DRAM was not being set during initializtion so both ports were defaulting to DRAM0. Added initialization to set correct DRAM per port. Signed-off-by: Aaron Kramer --- drivers/net/ethernet/ti/prueth.c | 11 +++++++++++ drivers/net/ethernet/ti/prueth_sysfs.c | 7 +++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/ti/prueth.c b/drivers/net/ethernet/ti/prueth.c index ef52353d008338..b82c52448a453c 100644 --- a/drivers/net/ethernet/ti/prueth.c +++ b/drivers/net/ethernet/ti/prueth.c @@ -5000,6 +5000,17 @@ static int prueth_netdev_init(struct prueth *prueth, emac->ndev = ndev; emac->port_id = port; + switch (port) { + case PRUETH_PORT_MII0: + emac->dram = PRUETH_MEM_DRAM0; + break; + case PRUETH_PORT_MII1: + emac->dram = PRUETH_MEM_DRAM1; + break; + default: + return -EINVAL; + } + if (PRUETH_HAS_PTP(prueth) && !PRUETH_IS_EMAC(prueth)) tx_int = "hsrprp_ptp_tx"; else diff --git a/drivers/net/ethernet/ti/prueth_sysfs.c b/drivers/net/ethernet/ti/prueth_sysfs.c index 742db82e7ae3bb..fdf9483a6d202f 100644 --- a/drivers/net/ethernet/ti/prueth_sysfs.c +++ b/drivers/net/ethernet/ti/prueth_sysfs.c @@ -18,16 +18,19 @@ static ssize_t nsp_credit_store(struct device *dev, const char *buffer, size_t count) { struct prueth_emac *emac = nsp_credit_to_emac(attr); + void __iomem *dram = emac->prueth->mem[emac->dram].va; u32 val; if (kstrtou32(buffer, 0, &val)) return -EINVAL; - if (val) + if (val) { emac->nsp_credit = (val << PRUETH_NSP_CREDIT_SHIFT) | PRUETH_NSP_ENABLE; - else + } else { emac->nsp_credit = PRUETH_NSP_DISABLE; + writel(emac->nsp_credit, dram + STORM_PREVENTION_OFFSET); + } return count; }