OSDN Git Service

net: bgmac: fix BCM5358 support by setting correct flags
authorRafał Miłecki <rafal@milecki.pl>
Wed, 8 Feb 2023 09:16:37 +0000 (10:16 +0100)
committerJakub Kicinski <kuba@kernel.org>
Fri, 10 Feb 2023 06:25:31 +0000 (22:25 -0800)
Code blocks handling BCMA_CHIP_ID_BCM5357 and BCMA_CHIP_ID_BCM53572 were
incorrectly unified. Chip package values are not unique and cannot be
checked independently. They are meaningful only in a context of a given
chip.

Packages BCM5358 and BCM47188 share the same value but then belong to
different chips. Code unification resulted in treating BCM5358 as
BCM47188 and broke its initialization.

Link: https://github.com/openwrt/openwrt/issues/8278
Fixes: cb1b0f90acfe ("net: ethernet: bgmac: unify code of the same family")
Cc: Jon Mason <jdmason@kudzu.us>
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Link: https://lore.kernel.org/r/20230208091637.16291-1-zajec5@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/broadcom/bgmac-bcma.c

index 02bd3cf..6e4f36a 100644 (file)
@@ -240,12 +240,12 @@ static int bgmac_probe(struct bcma_device *core)
                bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST;
                bgmac->feature_flags |= BGMAC_FEAT_FLW_CTRL1;
                bgmac->feature_flags |= BGMAC_FEAT_SW_TYPE_PHY;
-               if (ci->pkg == BCMA_PKG_ID_BCM47188 ||
-                   ci->pkg == BCMA_PKG_ID_BCM47186) {
+               if ((ci->id == BCMA_CHIP_ID_BCM5357 && ci->pkg == BCMA_PKG_ID_BCM47186) ||
+                   (ci->id == BCMA_CHIP_ID_BCM53572 && ci->pkg == BCMA_PKG_ID_BCM47188)) {
                        bgmac->feature_flags |= BGMAC_FEAT_SW_TYPE_RGMII;
                        bgmac->feature_flags |= BGMAC_FEAT_IOST_ATTACHED;
                }
-               if (ci->pkg == BCMA_PKG_ID_BCM5358)
+               if (ci->id == BCMA_CHIP_ID_BCM5357 && ci->pkg == BCMA_PKG_ID_BCM5358)
                        bgmac->feature_flags |= BGMAC_FEAT_SW_TYPE_EPHYRMII;
                break;
        case BCMA_CHIP_ID_BCM53573: