Thread (7 messages) flat view 7 messages, 2 authors, 2022-11-08

Re: [PATCH net-next v2 1/3] net: dsa: microchip: move max mtu to one location

From: <Arun.Ramadoss@microchip.com>
Date: 2022-11-08 05:17:16
Also in: lkml

On Mon, 2022-11-07 at 14:57 +0100, Oleksij Rempel wrote:
EXTERNAL EMAIL: Do not click links or open attachments unless you
know the content is safe

There are no HW specific registers, so we can process all of them
in one location.
Tested in KSZ9893 and LAN937x by changing the mtu to max_mtu using
ifconfig. It works fine.
quoted hunk ↗ jump to hunk
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
---
 drivers/net/dsa/microchip/ksz9477.c     |  5 -----
 drivers/net/dsa/microchip/ksz9477.h     |  1 -
 drivers/net/dsa/microchip/ksz9477_reg.h |  2 --
 drivers/net/dsa/microchip/ksz_common.c  | 21 ++++++++++++++++-----
 drivers/net/dsa/microchip/ksz_common.h  |  3 ++-
 5 files changed, 18 insertions(+), 14 deletions(-)
diff --git a/drivers/net/dsa/microchip/ksz9477.c
b/drivers/net/dsa/microchip/ksz9477.c
index a6a0321a8931..e3adb126fdff 100644
--- a/drivers/net/dsa/microchip/ksz9477.c
+++ b/drivers/net/dsa/microchip/ksz9477.c
@@ -60,11 +60,6 @@ int ksz9477_change_mtu(struct ksz_device *dev, int
port, int mtu)
                                  REG_SW_MTU_MASK, max_frame);
 }

-int ksz9477_max_mtu(struct ksz_device *dev, int port)
-{
-       return KSZ9477_MAX_FRAME_SIZE - VLAN_ETH_HLEN - ETH_FCS_LEN;
-}
-
 static int ksz9477_wait_vlan_ctrl_ready(struct ksz_device *dev)
 {
        unsigned int val;
diff --git a/drivers/net/dsa/microchip/ksz9477.h
b/drivers/net/dsa/microchip/ksz9477.h
index 00862c4cfb7f..7c5bb3032772 100644
--- a/drivers/net/dsa/microchip/ksz9477.h
+++ b/drivers/net/dsa/microchip/ksz9477.h
@@ -50,7 +50,6 @@ int ksz9477_mdb_add(struct ksz_device *dev, int
port,
 int ksz9477_mdb_del(struct ksz_device *dev, int port,
                    const struct switchdev_obj_port_mdb *mdb, struct
dsa_db db);
 int ksz9477_change_mtu(struct ksz_device *dev, int port, int mtu);
-int ksz9477_max_mtu(struct ksz_device *dev, int port);
 void ksz9477_config_cpu_port(struct dsa_switch *ds);
 int ksz9477_enable_stp_addr(struct ksz_device *dev);
 int ksz9477_reset_switch(struct ksz_device *dev);
diff --git a/drivers/net/dsa/microchip/ksz9477_reg.h
b/drivers/net/dsa/microchip/ksz9477_reg.h
index 53c68d286dd3..cc457fa64939 100644
--- a/drivers/net/dsa/microchip/ksz9477_reg.h
+++ b/drivers/net/dsa/microchip/ksz9477_reg.h
@@ -1615,6 +1615,4 @@
 #define PTP_TRIG_UNIT_M                        (BIT(MAX_TRIG_UNIT) -
1)
 #define PTP_TS_UNIT_M                  (BIT(MAX_TIMESTAMP_UNIT) - 1)

-#define KSZ9477_MAX_FRAME_SIZE         9000
-
 #endif /* KSZ9477_REGS_H */
diff --git a/drivers/net/dsa/microchip/ksz_common.c
b/drivers/net/dsa/microchip/ksz_common.c
index d612181b3226..486ad03d0acf 100644
--- a/drivers/net/dsa/microchip/ksz_common.c
+++ b/drivers/net/dsa/microchip/ksz_common.c
@@ -14,6 +14,7 @@
 #include <linux/phy.h>
 #include <linux/etherdevice.h>
 #include <linux/if_bridge.h>
+#include <linux/if_vlan.h>
 #include <linux/irq.h>
 #include <linux/irqdomain.h>
 #include <linux/of_mdio.h>
@@ -206,7 +207,6 @@ static const struct ksz_dev_ops ksz9477_dev_ops =
{
        .mdb_add = ksz9477_mdb_add,
        .mdb_del = ksz9477_mdb_del,
        .change_mtu = ksz9477_change_mtu,
-       .max_mtu = ksz9477_max_mtu,
        .phylink_mac_link_up = ksz9477_phylink_mac_link_up,
        .config_cpu_port = ksz9477_config_cpu_port,
        .enable_stp_addr = ksz9477_enable_stp_addr,
@@ -243,7 +243,6 @@ static const struct ksz_dev_ops lan937x_dev_ops =
{
        .mdb_add = ksz9477_mdb_add,
        .mdb_del = ksz9477_mdb_del,
        .change_mtu = lan937x_change_mtu,
-       .max_mtu = ksz9477_max_mtu,
        .phylink_mac_link_up = ksz9477_phylink_mac_link_up,
        .config_cpu_port = lan937x_config_cpu_port,
        .enable_stp_addr = ksz9477_enable_stp_addr,
@@ -2473,10 +2472,22 @@ static int ksz_max_mtu(struct dsa_switch *ds,
int port)
 {
        struct ksz_device *dev = ds->priv;

-       if (!dev->dev_ops->max_mtu)
-               return -EOPNOTSUPP;
+       switch (dev->chip_id) {
+       case KSZ8563_CHIP_ID:
+       case KSZ9477_CHIP_ID:
+       case KSZ9567_CHIP_ID:
+       case KSZ9893_CHIP_ID:
+       case KSZ9896_CHIP_ID:
+       case KSZ9897_CHIP_ID:
+       case LAN9370_CHIP_ID:
+       case LAN9371_CHIP_ID:
+       case LAN9372_CHIP_ID:
+       case LAN9373_CHIP_ID:
+       case LAN9374_CHIP_ID:
+               return KSZ9477_MAX_FRAME_SIZE - VLAN_ETH_HLEN -
ETH_FCS_LEN;
+       }

-       return dev->dev_ops->max_mtu(dev, port);
+       return -EOPNOTSUPP;
 }

 static void ksz_set_xmii(struct ksz_device *dev, int port,
diff --git a/drivers/net/dsa/microchip/ksz_common.h
b/drivers/net/dsa/microchip/ksz_common.h
index 9cfa179575ce..7de5070637ec 100644
--- a/drivers/net/dsa/microchip/ksz_common.h
+++ b/drivers/net/dsa/microchip/ksz_common.h
@@ -320,7 +320,6 @@ struct ksz_dev_ops {
        void (*get_caps)(struct ksz_device *dev, int port,
                         struct phylink_config *config);
        int (*change_mtu)(struct ksz_device *dev, int port, int mtu);
-       int (*max_mtu)(struct ksz_device *dev, int port);
        void (*freeze_mib)(struct ksz_device *dev, int port, bool
freeze);
        void (*port_init_cnt)(struct ksz_device *dev, int port);
        void (*phylink_mac_config)(struct ksz_device *dev, int port,
@@ -585,6 +584,8 @@ static inline int is_lan937x(struct ksz_device
*dev)

 #define PORT_SRC_PHY_INT               1

+#define KSZ9477_MAX_FRAME_SIZE         9000
+
 /* Regmap tables generation */
 #define KSZ_SPI_OP_RD          3
 #define KSZ_SPI_OP_WR          2
--
2.30.2
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help