]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
net: dsa: microchip: move broadcast rate limit to ksz_setup
authorArun Ramadoss <arun.ramadoss@microchip.com>
Wed, 22 Jun 2022 09:04:17 +0000 (14:34 +0530)
committerDavid S. Miller <davem@davemloft.net>
Fri, 24 Jun 2022 10:31:43 +0000 (11:31 +0100)
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>
drivers/net/dsa/microchip/ksz8795.c
drivers/net/dsa/microchip/ksz8795_reg.h
drivers/net/dsa/microchip/ksz9477.c
drivers/net/dsa/microchip/ksz9477_reg.h
drivers/net/dsa/microchip/ksz_common.c
drivers/net/dsa/microchip/ksz_common.h

index 3d692d5816cbcb67e78d70f2ea7723964904b58e..1bbad202b23808886cf360daef446ef851502bf4 100644 (file)
@@ -1415,12 +1415,6 @@ static int ksz8_setup(struct dsa_switch *ds)
        if (!ksz_is_ksz88x3(dev))
                ksz_cfg(dev, REG_SW_CTRL_19, SW_INS_TAG_ENABLE, true);
 
-       /* set broadcast storm protection 10% rate */
-       regmap_update_bits(dev->regmap[1], S_REPLACE_VID_CTRL,
-                          BROADCAST_STORM_RATE,
-                          (BROADCAST_STORM_VALUE *
-                          BROADCAST_STORM_PROT_RATE) / 100);
-
        for (i = 0; i < (dev->info->num_vlans / 4); i++)
                ksz8_r_vlan_entries(dev, i);
 
index b8f6ad7581bcd4ffbc913a533fa2c64cb402488a..7b56e533a688309517bccf055d980960313aa095 100644 (file)
 #define SW_FLOW_CTRL                   BIT(5)
 #define SW_10_MBIT                     BIT(4)
 #define SW_REPLACE_VID                 BIT(3)
-#define BROADCAST_STORM_RATE_HI                0x07
 
 #define REG_SW_CTRL_5                  0x07
 
-#define BROADCAST_STORM_RATE_LO                0xFF
-#define BROADCAST_STORM_RATE           0x07FF
-
 #define REG_SW_CTRL_6                  0x08
 
 #define SW_MIB_COUNTER_FLUSH           BIT(7)
 #define REG_IND_EEE_GLOB2_LO           0x34
 #define REG_IND_EEE_GLOB2_HI           0x35
 
-/* Driver set switch broadcast storm protection at 10% rate. */
-#define BROADCAST_STORM_PROT_RATE      10
-
-/* 148,800 frames * 67 ms / 100 */
-#define BROADCAST_STORM_VALUE          9969
-
 /**
  * MIB_COUNTER_VALUE                   00-00000000-3FFFFFFF
  * MIB_TOTAL_BYTES                     00-0000000F-FFFFFFFF
index c8965012d1c7fa45602bc25e0de99b60149bc630..b2a6d2365c82febf69645b323585afe49b373c4f 100644 (file)
@@ -197,12 +197,6 @@ static int ksz9477_reset_switch(struct ksz_device *dev)
        ksz_write32(dev, REG_SW_PORT_INT_MASK__4, 0x7F);
        ksz_read32(dev, REG_SW_PORT_INT_STATUS__4, &data32);
 
-       /* set broadcast storm protection 10% rate */
-       regmap_update_bits(dev->regmap[1], REG_SW_MAC_CTRL_2,
-                          BROADCAST_STORM_RATE,
-                          (BROADCAST_STORM_VALUE *
-                          BROADCAST_STORM_PROT_RATE) / 100);
-
        data8 = SW_ENABLE_REFCLKO;
        if (dev->synclko_disable)
                data8 = 0;
index 077e35ab11b54278a0fe15dbad819dd53d52fbd8..0345fc7ac850589e936a578d8c0376902844ff7c 100644 (file)
 #define REG_SW_MAC_CTRL_2              0x0332
 
 #define SW_REPLACE_VID                 BIT(3)
-#define BROADCAST_STORM_RATE_HI                0x07
 
 #define REG_SW_MAC_CTRL_3              0x0333
 
-#define BROADCAST_STORM_RATE_LO                0xFF
-#define BROADCAST_STORM_RATE           0x07FF
-
 #define REG_SW_MAC_CTRL_4              0x0334
 
 #define SW_PASS_PAUSE                  BIT(3)
 #define PTP_TRIG_UNIT_M                        (BIT(MAX_TRIG_UNIT) - 1)
 #define PTP_TS_UNIT_M                  (BIT(MAX_TIMESTAMP_UNIT) - 1)
 
-/* Driver set switch broadcast storm protection at 10% rate. */
-#define BROADCAST_STORM_PROT_RATE      10
-
-/* 148,800 frames * 67 ms / 100 */
-#define BROADCAST_STORM_VALUE          9969
-
 #define KSZ9477_MAX_FRAME_SIZE         9000
 
 #endif /* KSZ9477_REGS_H */
index 792f891579ae81e01506ae558d451a86e31a8f4a..976b2b18908fbb4ba43f6016b73066344f83e92c 100644 (file)
@@ -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);
index 3b8e1d1887b85031facc9db88f75b1b3aa8dd302..6aeee4771f0679ebb2e5650e8b0e988d05e89a6f 100644 (file)
@@ -47,6 +47,7 @@ struct ksz_chip_data {
        int mib_cnt;
        u8 reg_mib_cnt;
        int stp_ctrl_reg;
+       int broadcast_ctrl_reg;
        bool supports_mii[KSZ_MAX_NUM_PORTS];
        bool supports_rmii[KSZ_MAX_NUM_PORTS];
        bool supports_rgmii[KSZ_MAX_NUM_PORTS];
@@ -415,6 +416,16 @@ static inline void ksz_regmap_unlock(void *__mtx)
 
 #define SW_REV_ID_M                    GENMASK(7, 4)
 
+/* Driver set switch broadcast storm protection at 10% rate. */
+#define BROADCAST_STORM_PROT_RATE      10
+
+/* 148,800 frames * 67 ms / 100 */
+#define BROADCAST_STORM_VALUE          9969
+
+#define BROADCAST_STORM_RATE_HI                0x07
+#define BROADCAST_STORM_RATE_LO                0xFF
+#define BROADCAST_STORM_RATE           0x07FF
+
 /* Regmap tables generation */
 #define KSZ_SPI_OP_RD          3
 #define KSZ_SPI_OP_WR          2