net: phy: micrel: Correct bit assignments for phy_device flags
authorOleksij Rempel <o.rempel@pengutronix.de>
Fri, 1 Sep 2023 04:53:23 +0000 (06:53 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 4 Sep 2023 06:08:24 +0000 (07:08 +0100)
Previously, the defines for phy_device flags in the Micrel driver were
ambiguous in their representation. They were intended to be bit masks
but were mistakenly defined as bit positions. This led to the following
issues:

- MICREL_KSZ8_P1_ERRATA, designated for KSZ88xx switches, overlapped
  with MICREL_PHY_FXEN and MICREL_PHY_50MHZ_CLK.
- Due to this overlap, the code path for MICREL_PHY_FXEN, tailored for
  the KSZ8041 PHY, was not executed for KSZ88xx PHYs.
- Similarly, the code associated with MICREL_PHY_50MHZ_CLK wasn't
  triggered for KSZ88xx.

To rectify this, all three flags have now been explicitly converted to
use the `BIT()` macro, ensuring they are defined as bit masks and
preventing potential overlaps in the future.

Fixes: 49011e0c1555 ("net: phy: micrel: ksz886x/ksz8081: add cabletest support")
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/micrel_phy.h

index 8bef1ab..322d872 100644 (file)
@@ -41,9 +41,9 @@
 #define        PHY_ID_KSZ9477          0x00221631
 
 /* struct phy_device dev_flags definitions */
-#define MICREL_PHY_50MHZ_CLK   0x00000001
-#define MICREL_PHY_FXEN                0x00000002
-#define MICREL_KSZ8_P1_ERRATA  0x00000003
+#define MICREL_PHY_50MHZ_CLK   BIT(0)
+#define MICREL_PHY_FXEN                BIT(1)
+#define MICREL_KSZ8_P1_ERRATA  BIT(2)
 
 #define MICREL_KSZ9021_EXTREG_CTRL     0xB
 #define MICREL_KSZ9021_EXTREG_DATA_WRITE       0xC