Message ID | 20220530104257.21485-6-arun.ramadoss@microchip.com (mailing list archive) |
---|---|
State | RFC |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net: dsa: microchip: common spi probe for the ksz series switches | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Clearly marked for net-next |
netdev/fixes_present | success | Fixes tag not required for -next series |
netdev/subject_prefix | success | Link |
netdev/cover_letter | success | Series has a cover letter |
netdev/patch_count | success | Link |
netdev/header_inline | success | No static functions without inline keyword in header files |
netdev/build_32bit | success | Errors and warnings before: 0 this patch: 0 |
netdev/cc_maintainers | success | CCed 11 of 11 maintainers |
netdev/build_clang | success | Errors and warnings before: 0 this patch: 0 |
netdev/module_param | success | Was 0 now: 0 |
netdev/verify_signedoff | success | Signed-off-by tag matches author and committer |
netdev/check_selftest | success | No net selftest shell script |
netdev/verify_fixes | success | No Fixes tag |
netdev/build_allmodconfig_warn | success | Errors and warnings before: 0 this patch: 0 |
netdev/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 136 lines checked |
netdev/kdoc | success | Errors and warnings before: 0 this patch: 0 |
netdev/source_inline | success | Was 0 now: 0 |
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@microchip.com> > --- Reviewed-by: Vladimir Oltean <olteanv@gmail.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 >
On Mon, 2022-06-13 at 12:28 +0300, Vladimir Oltean wrote: > EXTERNAL EMAIL: Do not click links or open attachments unless you > know the content is safe > > 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@microchip.com> > > --- > > Reviewed-by: Vladimir Oltean <olteanv@gmail.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; > > } > > > > 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); Yes it reduces the indentation. I will update it for other checks too. > > + > > +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; > > > > > > -- > > 2.36.1 > > > >
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); + +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 */
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@microchip.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(-)