diff options
author | Arun Ramadoss <arun.ramadoss@microchip.com> | 2022-06-22 14:34:17 +0530 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2022-06-24 11:31:43 +0100 |
commit | 1ca6437fafc9ffddda7a6fa9b61059bcf8774b10 (patch) | |
tree | f70c58b6cf4c9ceaae4e2aa4e7efba580b2c8beb /drivers/net/dsa/microchip/ksz_common.c | |
parent | d2822e68687926ec8b103f4f146bf47ce6f0362e (diff) |
net: dsa: microchip: move broadcast rate limit to ksz_setup
This patch move the 10% broadcast protection from the individual setup
to ksz_setup. In the ksz9477, broadcast protection is updated in reset
function.
Signed-off-by: Arun Ramadoss <arun.ramadoss@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/dsa/microchip/ksz_common.c')
-rw-r--r-- | drivers/net/dsa/microchip/ksz_common.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/net/dsa/microchip/ksz_common.c b/drivers/net/dsa/microchip/ksz_common.c index 792f891579ae..976b2b18908f 100644 --- a/drivers/net/dsa/microchip/ksz_common.c +++ b/drivers/net/dsa/microchip/ksz_common.c @@ -153,6 +153,7 @@ const struct ksz_chip_data ksz_switch_chips[] = { .mib_cnt = ARRAY_SIZE(ksz9477_mib_names), .reg_mib_cnt = MIB_COUNTER_NUM, .stp_ctrl_reg = 0x02, + .broadcast_ctrl_reg = 0x06, .supports_mii = {false, false, false, false, true}, .supports_rmii = {false, false, false, false, true}, .supports_rgmii = {false, false, false, false, true}, @@ -186,6 +187,7 @@ const struct ksz_chip_data ksz_switch_chips[] = { .mib_cnt = ARRAY_SIZE(ksz9477_mib_names), .reg_mib_cnt = MIB_COUNTER_NUM, .stp_ctrl_reg = 0x02, + .broadcast_ctrl_reg = 0x06, .supports_mii = {false, false, false, false, true}, .supports_rmii = {false, false, false, false, true}, .supports_rgmii = {false, false, false, false, true}, @@ -205,6 +207,7 @@ const struct ksz_chip_data ksz_switch_chips[] = { .mib_cnt = ARRAY_SIZE(ksz9477_mib_names), .reg_mib_cnt = MIB_COUNTER_NUM, .stp_ctrl_reg = 0x02, + .broadcast_ctrl_reg = 0x06, .supports_mii = {false, false, false, false, true}, .supports_rmii = {false, false, false, false, true}, .supports_rgmii = {false, false, false, false, true}, @@ -223,6 +226,7 @@ const struct ksz_chip_data ksz_switch_chips[] = { .mib_cnt = ARRAY_SIZE(ksz88xx_mib_names), .reg_mib_cnt = MIB_COUNTER_NUM, .stp_ctrl_reg = 0x02, + .broadcast_ctrl_reg = 0x06, .supports_mii = {false, false, true}, .supports_rmii = {false, false, true}, .internal_phy = {true, true, false}, @@ -241,6 +245,7 @@ const struct ksz_chip_data ksz_switch_chips[] = { .mib_cnt = ARRAY_SIZE(ksz9477_mib_names), .reg_mib_cnt = MIB_COUNTER_NUM, .stp_ctrl_reg = 0x0B04, + .broadcast_ctrl_reg = 0x0332, .supports_mii = {false, false, false, false, false, true, false}, .supports_rmii = {false, false, false, false, @@ -264,6 +269,7 @@ const struct ksz_chip_data ksz_switch_chips[] = { .mib_cnt = ARRAY_SIZE(ksz9477_mib_names), .reg_mib_cnt = MIB_COUNTER_NUM, .stp_ctrl_reg = 0x0B04, + .broadcast_ctrl_reg = 0x0332, .supports_mii = {false, false, false, false, false, true, true}, .supports_rmii = {false, false, false, false, @@ -286,6 +292,7 @@ const struct ksz_chip_data ksz_switch_chips[] = { .mib_cnt = ARRAY_SIZE(ksz9477_mib_names), .reg_mib_cnt = MIB_COUNTER_NUM, .stp_ctrl_reg = 0x0B04, + .broadcast_ctrl_reg = 0x0332, .supports_mii = {false, false, true}, .supports_rmii = {false, false, true}, .supports_rgmii = {false, false, true}, @@ -305,6 +312,7 @@ const struct ksz_chip_data ksz_switch_chips[] = { .mib_cnt = ARRAY_SIZE(ksz9477_mib_names), .reg_mib_cnt = MIB_COUNTER_NUM, .stp_ctrl_reg = 0x0B04, + .broadcast_ctrl_reg = 0x0332, .supports_mii = {false, false, false, false, false, true, true}, .supports_rmii = {false, false, false, false, @@ -327,6 +335,7 @@ const struct ksz_chip_data ksz_switch_chips[] = { .mib_cnt = ARRAY_SIZE(ksz9477_mib_names), .reg_mib_cnt = MIB_COUNTER_NUM, .stp_ctrl_reg = 0x0B04, + .broadcast_ctrl_reg = 0x0332, .supports_mii = {false, false, false, false, true}, .supports_rmii = {false, false, false, false, true}, .supports_rgmii = {false, false, false, false, true}, @@ -345,6 +354,7 @@ const struct ksz_chip_data ksz_switch_chips[] = { .mib_cnt = ARRAY_SIZE(ksz9477_mib_names), .reg_mib_cnt = MIB_COUNTER_NUM, .stp_ctrl_reg = 0x0B04, + .broadcast_ctrl_reg = 0x0332, .supports_mii = {false, false, false, false, true, true}, .supports_rmii = {false, false, false, false, true, true}, .supports_rgmii = {false, false, false, false, true, true}, @@ -363,6 +373,7 @@ const struct ksz_chip_data ksz_switch_chips[] = { .mib_cnt = ARRAY_SIZE(ksz9477_mib_names), .reg_mib_cnt = MIB_COUNTER_NUM, .stp_ctrl_reg = 0x0B04, + .broadcast_ctrl_reg = 0x0332, .supports_mii = {false, false, false, false, true, true, false, false}, .supports_rmii = {false, false, false, false, @@ -385,6 +396,7 @@ const struct ksz_chip_data ksz_switch_chips[] = { .mib_cnt = ARRAY_SIZE(ksz9477_mib_names), .reg_mib_cnt = MIB_COUNTER_NUM, .stp_ctrl_reg = 0x0B04, + .broadcast_ctrl_reg = 0x0332, .supports_mii = {false, false, false, false, true, true, false, false}, .supports_rmii = {false, false, false, false, @@ -407,6 +419,7 @@ const struct ksz_chip_data ksz_switch_chips[] = { .mib_cnt = ARRAY_SIZE(ksz9477_mib_names), .reg_mib_cnt = MIB_COUNTER_NUM, .stp_ctrl_reg = 0x0B04, + .broadcast_ctrl_reg = 0x0332, .supports_mii = {false, false, false, false, true, true, false, false}, .supports_rmii = {false, false, false, false, @@ -623,6 +636,12 @@ int ksz_setup(struct dsa_switch *ds) return ret; } + /* set broadcast storm protection 10% rate */ + regmap_update_bits(dev->regmap[1], dev->info->broadcast_ctrl_reg, + BROADCAST_STORM_RATE, + (BROADCAST_STORM_VALUE * + BROADCAST_STORM_PROT_RATE) / 100); + dev->dev_ops->config_cpu_port(ds); dev->dev_ops->enable_stp_addr(dev); |