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
| ||
|
Date: Mon, 13 Jun 2022 12:28:33 +0300 From: Vladimir Oltean <olteanv@...il.com> To: Arun Ramadoss <arun.ramadoss@...rochip.com> Cc: linux-kernel@...r.kernel.org, netdev@...r.kernel.org, Woojung Huh <woojung.huh@...rochip.com>, UNGLinuxDriver@...rochip.com, Andrew Lunn <andrew@...n.ch>, Vivien Didelot <vivien.didelot@...il.com>, Florian Fainelli <f.fainelli@...il.com>, "David S. Miller" <davem@...emloft.net>, Eric Dumazet <edumazet@...gle.com>, Jakub Kicinski <kuba@...nel.org>, Paolo Abeni <pabeni@...hat.com>, Russell King <linux@...linux.org.uk> Subject: Re: [RFC Patch net-next v2 05/15] net: dsa: microchip: move the port mirror to ksz_common On Mon, May 30, 2022 at 04:12:47PM +0530, Arun Ramadoss wrote: > This patch updates the common port mirror add/del dsa_switch_ops in > ksz_common.c. The individual switches implementation is executed based > on the ksz_dev_ops function pointers. > > Signed-off-by: Arun Ramadoss <arun.ramadoss@...rochip.com> > --- Reviewed-by: Vladimir Oltean <olteanv@...il.com> > drivers/net/dsa/microchip/ksz8795.c | 13 ++++++------- > drivers/net/dsa/microchip/ksz9477.c | 12 ++++++------ > drivers/net/dsa/microchip/ksz_common.c | 25 +++++++++++++++++++++++++ > drivers/net/dsa/microchip/ksz_common.h | 10 ++++++++++ > 4 files changed, 47 insertions(+), 13 deletions(-) > > diff --git a/drivers/net/dsa/microchip/ksz8795.c b/drivers/net/dsa/microchip/ksz8795.c > index 157d69e46793..8657b520b336 100644 > --- a/drivers/net/dsa/microchip/ksz8795.c > +++ b/drivers/net/dsa/microchip/ksz8795.c > @@ -1089,12 +1089,10 @@ static int ksz8_port_vlan_del(struct ksz_device *dev, int port, > return 0; > } > > -static int ksz8_port_mirror_add(struct dsa_switch *ds, int port, > +static int ksz8_port_mirror_add(struct ksz_device *dev, int port, > struct dsa_mall_mirror_tc_entry *mirror, > bool ingress, struct netlink_ext_ack *extack) > { > - struct ksz_device *dev = ds->priv; > - > if (ingress) { > ksz_port_cfg(dev, port, P_MIRROR_CTRL, PORT_MIRROR_RX, true); > dev->mirror_rx |= BIT(port); > @@ -1113,10 +1111,9 @@ static int ksz8_port_mirror_add(struct dsa_switch *ds, int port, > return 0; > } > > -static void ksz8_port_mirror_del(struct dsa_switch *ds, int port, > +static void ksz8_port_mirror_del(struct ksz_device *dev, int port, > struct dsa_mall_mirror_tc_entry *mirror) > { > - struct ksz_device *dev = ds->priv; > u8 data; > > if (mirror->ingress) { > @@ -1400,8 +1397,8 @@ static const struct dsa_switch_ops ksz8_switch_ops = { > .port_fdb_dump = ksz_port_fdb_dump, > .port_mdb_add = ksz_port_mdb_add, > .port_mdb_del = ksz_port_mdb_del, > - .port_mirror_add = ksz8_port_mirror_add, > - .port_mirror_del = ksz8_port_mirror_del, > + .port_mirror_add = ksz_port_mirror_add, > + .port_mirror_del = ksz_port_mirror_del, > }; > > static u32 ksz8_get_port_addr(int port, int offset) > @@ -1464,6 +1461,8 @@ static const struct ksz_dev_ops ksz8_dev_ops = { > .vlan_filtering = ksz8_port_vlan_filtering, > .vlan_add = ksz8_port_vlan_add, > .vlan_del = ksz8_port_vlan_del, > + .mirror_add = ksz8_port_mirror_add, > + .mirror_del = ksz8_port_mirror_del, > .shutdown = ksz8_reset_switch, > .init = ksz8_switch_init, > .exit = ksz8_switch_exit, > diff --git a/drivers/net/dsa/microchip/ksz9477.c b/drivers/net/dsa/microchip/ksz9477.c > index e230fe1d1917..6796c9d89ab9 100644 > --- a/drivers/net/dsa/microchip/ksz9477.c > +++ b/drivers/net/dsa/microchip/ksz9477.c > @@ -811,11 +811,10 @@ static int ksz9477_port_mdb_del(struct dsa_switch *ds, int port, > return ret; > } > > -static int ksz9477_port_mirror_add(struct dsa_switch *ds, int port, > +static int ksz9477_port_mirror_add(struct ksz_device *dev, int port, > struct dsa_mall_mirror_tc_entry *mirror, > bool ingress, struct netlink_ext_ack *extack) > { > - struct ksz_device *dev = ds->priv; > u8 data; > int p; > > @@ -851,10 +850,9 @@ static int ksz9477_port_mirror_add(struct dsa_switch *ds, int port, > return 0; > } > > -static void ksz9477_port_mirror_del(struct dsa_switch *ds, int port, > +static void ksz9477_port_mirror_del(struct ksz_device *dev, int port, > struct dsa_mall_mirror_tc_entry *mirror) > { > - struct ksz_device *dev = ds->priv; > bool in_use = false; > u8 data; > int p; > @@ -1327,8 +1325,8 @@ static const struct dsa_switch_ops ksz9477_switch_ops = { > .port_fdb_del = ksz9477_port_fdb_del, > .port_mdb_add = ksz9477_port_mdb_add, > .port_mdb_del = ksz9477_port_mdb_del, > - .port_mirror_add = ksz9477_port_mirror_add, > - .port_mirror_del = ksz9477_port_mirror_del, > + .port_mirror_add = ksz_port_mirror_add, > + .port_mirror_del = ksz_port_mirror_del, > .get_stats64 = ksz_get_stats64, > .port_change_mtu = ksz9477_change_mtu, > .port_max_mtu = ksz9477_max_mtu, > @@ -1406,6 +1404,8 @@ static const struct ksz_dev_ops ksz9477_dev_ops = { > .vlan_filtering = ksz9477_port_vlan_filtering, > .vlan_add = ksz9477_port_vlan_add, > .vlan_del = ksz9477_port_vlan_del, > + .mirror_add = ksz9477_port_mirror_add, > + .mirror_del = ksz9477_port_mirror_del, > .shutdown = ksz9477_reset_switch, > .init = ksz9477_switch_init, > .exit = ksz9477_switch_exit, > diff --git a/drivers/net/dsa/microchip/ksz_common.c b/drivers/net/dsa/microchip/ksz_common.c > index a1fef9e4e36c..1ed4cc94795e 100644 > --- a/drivers/net/dsa/microchip/ksz_common.c > +++ b/drivers/net/dsa/microchip/ksz_common.c > @@ -994,6 +994,31 @@ int ksz_port_vlan_del(struct dsa_switch *ds, int port, > } > EXPORT_SYMBOL_GPL(ksz_port_vlan_del); > > +int ksz_port_mirror_add(struct dsa_switch *ds, int port, > + struct dsa_mall_mirror_tc_entry *mirror, > + bool ingress, struct netlink_ext_ack *extack) > +{ > + struct ksz_device *dev = ds->priv; > + int ret = -EOPNOTSUPP; > + > + if (dev->dev_ops->mirror_add) > + ret = dev->dev_ops->mirror_add(dev, port, mirror, ingress, > + extack); > + > + return ret; > +} > +EXPORT_SYMBOL_GPL(ksz_port_mirror_add); Just as a minor style comment, take it or leave it. If you switch the function pointer presence check, you reduce the indentation of the long statement, making it fit a single line, and you eliminate the need for a "ret" variable: if (!dev->dev_ops->mirror_add) return -EOPNOTSUPP; return dev->dev_ops->mirror_add(dev, port, mirror, ingress, extack); > + > +void ksz_port_mirror_del(struct dsa_switch *ds, int port, > + struct dsa_mall_mirror_tc_entry *mirror) > +{ > + struct ksz_device *dev = ds->priv; > + > + if (dev->dev_ops->mirror_del) > + dev->dev_ops->mirror_del(dev, port, mirror); > +} > +EXPORT_SYMBOL_GPL(ksz_port_mirror_del); > + > static int ksz_switch_detect(struct ksz_device *dev) > { > u8 id1, id2; > diff --git a/drivers/net/dsa/microchip/ksz_common.h b/drivers/net/dsa/microchip/ksz_common.h > index 03e738c0cbb8..01080ec22bf1 100644 > --- a/drivers/net/dsa/microchip/ksz_common.h > +++ b/drivers/net/dsa/microchip/ksz_common.h > @@ -187,6 +187,11 @@ struct ksz_dev_ops { > struct netlink_ext_ack *extack); > int (*vlan_del)(struct ksz_device *dev, int port, > const struct switchdev_obj_port_vlan *vlan); > + int (*mirror_add)(struct ksz_device *dev, int port, > + struct dsa_mall_mirror_tc_entry *mirror, > + bool ingress, struct netlink_ext_ack *extack); > + void (*mirror_del)(struct ksz_device *dev, int port, > + struct dsa_mall_mirror_tc_entry *mirror); > void (*freeze_mib)(struct ksz_device *dev, int port, bool freeze); > void (*port_init_cnt)(struct ksz_device *dev, int port); > int (*shutdown)(struct ksz_device *dev); > @@ -247,6 +252,11 @@ int ksz_port_vlan_add(struct dsa_switch *ds, int port, > struct netlink_ext_ack *extack); > int ksz_port_vlan_del(struct dsa_switch *ds, int port, > const struct switchdev_obj_port_vlan *vlan); > +int ksz_port_mirror_add(struct dsa_switch *ds, int port, > + struct dsa_mall_mirror_tc_entry *mirror, > + bool ingress, struct netlink_ext_ack *extack); > +void ksz_port_mirror_del(struct dsa_switch *ds, int port, > + struct dsa_mall_mirror_tc_entry *mirror); > > /* Common register access functions */ > > -- > 2.36.1 >
Powered by blists - more mailing lists