--- drivers/net/dsa/microchip/ksz8.c | 6 ++++++ drivers/net/dsa/microchip/ksz8_reg.h | 3 +++ 2 files changed, 9 insertions(+) diff --git a/drivers/net/dsa/microchip/ksz8.c b/drivers/net/dsa/microchip/ksz8.c index 0f2b8acee80f..62fc59c3da7e 100644 --- a/drivers/net/dsa/microchip/ksz8.c +++ b/drivers/net/dsa/microchip/ksz8.c @@ -1297,6 +1297,9 @@ int ksz8_w_phy(struct ksz_device *dev, u16 phy, u16 reg, u16 val) case PHY_REG_KSZ87XX_LPF_BW: if (!ksz_is_ksz87xx(dev)) return -EOPNOTSUPP; + /* Only accept LPF bandwidth bits [7:6] */ + if (val & ~KSZ87XX_LPF_VALID_MASK) + return -EINVAL; ret = ksz8_ind_write8(dev, TABLE_LINK_MD, KSZ87XX_REG_PHY_LPF, (u8)val); if (ret) return ret; @@ -1305,6 +1308,9 @@ int ksz8_w_phy(struct ksz_device *dev, u16 phy, u16 reg, u16 val) case PHY_REG_KSZ87XX_EQ_INIT: if (!ksz_is_ksz87xx(dev)) return -EOPNOTSUPP; + /* Only accept DSP EQ initial value bits [5:0] */ + if (val & ~KSZ87XX_DSP_EQ_VALID_MASK) + return -EINVAL; ret = ksz8_ind_write8(dev, TABLE_LINK_MD, KSZ87XX_REG_DSP_EQ, (u8)val); if (ret) return ret; diff --git a/drivers/net/dsa/microchip/ksz8_reg.h b/drivers/net/dsa/microchip/ksz8_reg.h index 5df17c463f7c..cd41214f874e 100644 --- a/drivers/net/dsa/microchip/ksz8_reg.h +++ b/drivers/net/dsa/microchip/ksz8_reg.h @@ -206,6 +206,9 @@ #define KSZ87XX_REG_DSP_EQ 0x08 /* DSP EQ initial value */ #define KSZ87XX_REG_PHY_LPF 0x4C /* RX LPF bandwidth */ +#define KSZ87XX_DSP_EQ_VALID_MASK GENMASK(5, 0) +#define KSZ87XX_LPF_VALID_MASK GENMASK(7, 6) + /* For KSZ8765. */ #define PORT_REMOTE_ASYM_PAUSE BIT(5) #define PORT_REMOTE_SYM_PAUSE BIT(4) -- 2.53.0