lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <746c5de43eecdf34ffff5c16a9f1bf4bb505bb43.camel@microchip.com>
Date:   Tue, 8 Nov 2022 05:15:48 +0000
From:   <Arun.Ramadoss@...rochip.com>
To:     <olteanv@...il.com>, <UNGLinuxDriver@...rochip.com>,
        <vivien.didelot@...il.com>, <andrew@...n.ch>,
        <f.fainelli@...il.com>, <kuba@...nel.org>, <edumazet@...gle.com>,
        <pabeni@...hat.com>, <o.rempel@...gutronix.de>,
        <Woojung.Huh@...rochip.com>, <davem@...emloft.net>
CC:     <linux-kernel@...r.kernel.org>, <netdev@...r.kernel.org>,
        <kernel@...gutronix.de>
Subject: Re: [PATCH net-next v2 1/3] net: dsa: microchip: move max mtu to one
 location

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.

> 
> Signed-off-by: Oleksij Rempel <o.rempel@...gutronix.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
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ