From cd903cf340a0e080586d50adde61f82eadc907d3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rafa=C5=82=20Mi=C5=82ecki?= Date: Sun, 8 May 2016 21:09:18 +0000 Subject: [PATCH] kernel: use backported versions of bgmac patches MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Rafał Miłecki git-svn-id: svn://svn.openwrt.org/openwrt/branches/chaos_calmer@49298 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- ...7-14-bgmac-reset-all-4-GMAC-cores-on-init.patch | 28 ------------------ ...c-support-up-to-3-cores-devices-on-a-bus.patch} | 19 +++++++------ ...lper-checking-for-BCM4707-BCM53018-chip-.patch} | 2 +- ...-support-Ethernet-device-on-BCM47094-SoC.patch} | 0 ...eset-enable-Ethernet-core-before-using-it.patch | 33 ++++++++++++++++++++++ ...mac-fix-MAC-soft-reset-bit-for-corerev-4.patch} | 16 +++++++++-- .../patches-3.18/773-bgmac-add-srab-switch.patch | 4 +-- 7 files changed, 61 insertions(+), 41 deletions(-) delete mode 100644 target/linux/generic/patches-3.18/077-14-bgmac-reset-all-4-GMAC-cores-on-init.patch rename target/linux/{bcm53xx/patches-3.18/700-bgmac-add-support-for-the-3rd-bus-core-device.patch => generic/patches-3.18/078-01-bgmac-support-up-to-3-cores-devices-on-a-bus.patch} (67%) rename target/linux/generic/patches-3.18/{078-bgmac-add-helper-checking-for-BCM4707-BCM53018-chip-.patch => 078-02-bgmac-add-helper-checking-for-BCM4707-BCM53018-chip-.patch} (98%) rename target/linux/generic/patches-3.18/{079-bgmac-support-Ethernet-device-on-BCM47094-SoC.patch => 078-03-bgmac-support-Ethernet-device-on-BCM47094-SoC.patch} (100%) create mode 100644 target/linux/generic/patches-3.18/078-04-bgmac-reset-enable-Ethernet-core-before-using-it.patch rename target/linux/generic/patches-3.18/{077-13-bgmac-fix-MAC-soft-reset-bit-for-corerev-4.patch => 078-05-bgmac-fix-MAC-soft-reset-bit-for-corerev-4.patch} (61%) diff --git a/target/linux/generic/patches-3.18/077-14-bgmac-reset-all-4-GMAC-cores-on-init.patch b/target/linux/generic/patches-3.18/077-14-bgmac-reset-all-4-GMAC-cores-on-init.patch deleted file mode 100644 index 2a913a60e7..0000000000 --- a/target/linux/generic/patches-3.18/077-14-bgmac-reset-all-4-GMAC-cores-on-init.patch +++ /dev/null @@ -1,28 +0,0 @@ -From: Felix Fietkau -Date: Mon, 13 Apr 2015 15:56:26 +0200 -Subject: [PATCH] bgmac: reset all 4 GMAC cores on init - -On a BCM4709 based device, I found that GMAC cores may be enabled at -probe time, but only become usable after a full reset. -Disable cores before re-enabling them to ensure that they are properly -reset. - -Signed-off-by: Felix Fietkau ---- - ---- a/drivers/net/ethernet/broadcom/bgmac.c -+++ b/drivers/net/ethernet/broadcom/bgmac.c -@@ -1623,8 +1623,11 @@ static int bgmac_probe(struct bcma_devic - ns_core = bcma_find_core_unit(core->bus, - BCMA_CORE_MAC_GBIT, - ns_gmac); -- if (ns_core && !bcma_core_is_enabled(ns_core)) -- bcma_core_enable(ns_core, 0); -+ if (!ns_core) -+ continue; -+ -+ bcma_core_disable(ns_core, 0); -+ bcma_core_enable(ns_core, 0); - } - } - diff --git a/target/linux/bcm53xx/patches-3.18/700-bgmac-add-support-for-the-3rd-bus-core-device.patch b/target/linux/generic/patches-3.18/078-01-bgmac-support-up-to-3-cores-devices-on-a-bus.patch similarity index 67% rename from target/linux/bcm53xx/patches-3.18/700-bgmac-add-support-for-the-3rd-bus-core-device.patch rename to target/linux/generic/patches-3.18/078-01-bgmac-support-up-to-3-cores-devices-on-a-bus.patch index 36894fec24..d093e89dea 100644 --- a/target/linux/bcm53xx/patches-3.18/700-bgmac-add-support-for-the-3rd-bus-core-device.patch +++ b/target/linux/generic/patches-3.18/078-01-bgmac-support-up-to-3-cores-devices-on-a-bus.patch @@ -1,23 +1,26 @@ -From f5d5afc0b1402aae0f6a2350e43241603dbaff1e Mon Sep 17 00:00:00 2001 +From 538e4563198cd3d1a8e74c47fee3e49dc93e4a95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= -Date: Wed, 13 May 2015 10:46:47 +0200 -Subject: [PATCH] bgmac: add support for the 3rd bus core (device) +Date: Wed, 26 Aug 2015 17:53:45 +0200 +Subject: [PATCH] bgmac: support up to 3 cores (devices) on a bus MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -So far we were supporting up to 2 cores but recent devices (e.g. Netgear -R8000) may use 3rd as well. Lower ones (1st, 2nd) are usually used for -some offloading then. +Broadcom buses may have more than 1 Ethernet device. This is used e.g. +to have few interfaces connected to different switch ports. So far we +saw chipsets with only 2 devices (e.g. BCM4706) but recent ones have +up to 3 (e.g. Netgear R8000 uses 3rd interface for most of switch +traffic, lower interfaces are for some kind of offloading). Signed-off-by: Rafał Miłecki +Signed-off-by: David S. Miller --- drivers/net/ethernet/broadcom/bgmac.c | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) --- a/drivers/net/ethernet/broadcom/bgmac.c +++ b/drivers/net/ethernet/broadcom/bgmac.c -@@ -1566,11 +1566,20 @@ static int bgmac_probe(struct bcma_devic +@@ -1549,11 +1549,20 @@ static int bgmac_probe(struct bcma_devic struct net_device *net_dev; struct bgmac *bgmac; struct ssb_sprom *sprom = &core->bus->sprom; @@ -41,7 +44,7 @@ Signed-off-by: Rafał Miłecki pr_err("Unsupported core_unit %d\n", core->core_unit); return -ENOTSUPP; } -@@ -1605,8 +1614,17 @@ static int bgmac_probe(struct bcma_devic +@@ -1588,8 +1597,17 @@ static int bgmac_probe(struct bcma_devic } bgmac->cmn = core->bus->drv_gmac_cmn.core; diff --git a/target/linux/generic/patches-3.18/078-bgmac-add-helper-checking-for-BCM4707-BCM53018-chip-.patch b/target/linux/generic/patches-3.18/078-02-bgmac-add-helper-checking-for-BCM4707-BCM53018-chip-.patch similarity index 98% rename from target/linux/generic/patches-3.18/078-bgmac-add-helper-checking-for-BCM4707-BCM53018-chip-.patch rename to target/linux/generic/patches-3.18/078-02-bgmac-add-helper-checking-for-BCM4707-BCM53018-chip-.patch index 8e794180ac..63010c1450 100644 --- a/target/linux/generic/patches-3.18/078-bgmac-add-helper-checking-for-BCM4707-BCM53018-chip-.patch +++ b/target/linux/generic/patches-3.18/078-02-bgmac-add-helper-checking-for-BCM4707-BCM53018-chip-.patch @@ -94,7 +94,7 @@ Signed-off-by: David S. Miller struct net_device *net_dev; struct bgmac *bgmac; struct ssb_sprom *sprom = &core->bus->sprom; -@@ -1608,8 +1611,7 @@ static int bgmac_probe(struct bcma_devic +@@ -1626,8 +1629,7 @@ static int bgmac_probe(struct bcma_devic bgmac_chip_reset(bgmac); /* For Northstar, we have to take all GMAC core out of reset */ diff --git a/target/linux/generic/patches-3.18/079-bgmac-support-Ethernet-device-on-BCM47094-SoC.patch b/target/linux/generic/patches-3.18/078-03-bgmac-support-Ethernet-device-on-BCM47094-SoC.patch similarity index 100% rename from target/linux/generic/patches-3.18/079-bgmac-support-Ethernet-device-on-BCM47094-SoC.patch rename to target/linux/generic/patches-3.18/078-03-bgmac-support-Ethernet-device-on-BCM47094-SoC.patch diff --git a/target/linux/generic/patches-3.18/078-04-bgmac-reset-enable-Ethernet-core-before-using-it.patch b/target/linux/generic/patches-3.18/078-04-bgmac-reset-enable-Ethernet-core-before-using-it.patch new file mode 100644 index 0000000000..8dac985a72 --- /dev/null +++ b/target/linux/generic/patches-3.18/078-04-bgmac-reset-enable-Ethernet-core-before-using-it.patch @@ -0,0 +1,33 @@ +From b4dfd8e92956b396d3438212bc9a0be6267b8b34 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +Date: Tue, 12 Apr 2016 13:30:45 +0200 +Subject: [PATCH] bgmac: reset & enable Ethernet core before using it +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This fixes Ethernet on D-Link DIR-885L with BCM47094 SoC. Felix reported +similar fix was needed for his BCM4709 device (Buffalo WXR-1900DHP?). +I tested this for regressions on BCM4706, BCM4708A0 and BCM47081A0. + +Cc: Felix Fietkau +Signed-off-by: Rafał Miłecki +Signed-off-by: David S. Miller +--- + drivers/net/ethernet/broadcom/bgmac.c | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/drivers/net/ethernet/broadcom/bgmac.c ++++ b/drivers/net/ethernet/broadcom/bgmac.c +@@ -1578,6 +1578,11 @@ static int bgmac_probe(struct bcma_devic + dev_warn(&core->dev, "Using random MAC: %pM\n", mac); + } + ++ /* This (reset &) enable is not preset in specs or reference driver but ++ * Broadcom does it in arch PCI code when enabling fake PCI device. ++ */ ++ bcma_core_enable(core, 0); ++ + /* Allocation and references */ + net_dev = alloc_etherdev(sizeof(*bgmac)); + if (!net_dev) diff --git a/target/linux/generic/patches-3.18/077-13-bgmac-fix-MAC-soft-reset-bit-for-corerev-4.patch b/target/linux/generic/patches-3.18/078-05-bgmac-fix-MAC-soft-reset-bit-for-corerev-4.patch similarity index 61% rename from target/linux/generic/patches-3.18/077-13-bgmac-fix-MAC-soft-reset-bit-for-corerev-4.patch rename to target/linux/generic/patches-3.18/078-05-bgmac-fix-MAC-soft-reset-bit-for-corerev-4.patch index a3d9fd6cd9..9e5a37980a 100644 --- a/target/linux/generic/patches-3.18/077-13-bgmac-fix-MAC-soft-reset-bit-for-corerev-4.patch +++ b/target/linux/generic/patches-3.18/078-05-bgmac-fix-MAC-soft-reset-bit-for-corerev-4.patch @@ -1,11 +1,23 @@ +From c02bc350f9dbce7d637c394a6e1c4d29dc5b28b2 Mon Sep 17 00:00:00 2001 From: Felix Fietkau -Date: Mon, 13 Apr 2015 15:54:04 +0200 +Date: Tue, 12 Apr 2016 18:27:29 +0200 Subject: [PATCH] bgmac: fix MAC soft-reset bit for corerev > 4 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit -Only core revisions older than 4 use BGMAC_CMDCFG_SR_REV0 +Only core revisions older than 4 use BGMAC_CMDCFG_SR_REV0. This mainly +fixes support for BCM4708A0KF SoCs with Ethernet core rev 5 (it means +only some devices as most of BCM4708A0KF-s got core rev 4). +This was tested for regressions on BCM47094 which doesn't seem to care +which bit gets used. Signed-off-by: Felix Fietkau +Signed-off-by: Rafał Miłecki +Signed-off-by: David S. Miller --- + drivers/net/ethernet/broadcom/bgmac.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) --- a/drivers/net/ethernet/broadcom/bgmac.h +++ b/drivers/net/ethernet/broadcom/bgmac.h diff --git a/target/linux/generic/patches-3.18/773-bgmac-add-srab-switch.patch b/target/linux/generic/patches-3.18/773-bgmac-add-srab-switch.patch index 559731300b..9f39c8000e 100644 --- a/target/linux/generic/patches-3.18/773-bgmac-add-srab-switch.patch +++ b/target/linux/generic/patches-3.18/773-bgmac-add-srab-switch.patch @@ -30,7 +30,7 @@ Signed-off-by: Hauke Mehrtens /************************************************** * BCMA bus ops **************************************************/ -@@ -1668,6 +1680,14 @@ static int bgmac_probe(struct bcma_devic +@@ -1688,6 +1700,14 @@ static int bgmac_probe(struct bcma_devic net_dev->hw_features = net_dev->features; net_dev->vlan_features = net_dev->features; @@ -45,7 +45,7 @@ Signed-off-by: Hauke Mehrtens err = register_netdev(bgmac->net_dev); if (err) { bgmac_err(bgmac, "Cannot register net device\n"); -@@ -1694,6 +1714,10 @@ static void bgmac_remove(struct bcma_dev +@@ -1714,6 +1734,10 @@ static void bgmac_remove(struct bcma_dev { struct bgmac *bgmac = bcma_get_drvdata(core); -- 2.11.0