Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 73517885 authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'dsa_swqitch_ops-const'



Florian Fainelli says:

====================
net: dsa: Make dsa_switch_ops const

This patch series allows us to annotate dsa_switch_ops with a const
qualifier.
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 1940075b a82f67af
Loading
Loading
Loading
Loading
+47 −34
Original line number Diff line number Diff line
@@ -712,7 +712,7 @@ static unsigned int b53_get_mib_size(struct b53_device *dev)
		return B53_MIBS_SIZE;
}

static void b53_get_strings(struct dsa_switch *ds, int port, uint8_t *data)
void b53_get_strings(struct dsa_switch *ds, int port, uint8_t *data)
{
	struct b53_device *dev = ds->priv;
	const struct b53_mib_desc *mibs = b53_get_mib(dev);
@@ -723,9 +723,9 @@ static void b53_get_strings(struct dsa_switch *ds, int port, uint8_t *data)
		memcpy(data + i * ETH_GSTRING_LEN,
		       mibs[i].name, ETH_GSTRING_LEN);
}
EXPORT_SYMBOL(b53_get_strings);

static void b53_get_ethtool_stats(struct dsa_switch *ds, int port,
				  uint64_t *data)
void b53_get_ethtool_stats(struct dsa_switch *ds, int port, uint64_t *data)
{
	struct b53_device *dev = ds->priv;
	const struct b53_mib_desc *mibs = b53_get_mib(dev);
@@ -756,13 +756,15 @@ static void b53_get_ethtool_stats(struct dsa_switch *ds, int port,

	mutex_unlock(&dev->stats_mutex);
}
EXPORT_SYMBOL(b53_get_ethtool_stats);

static int b53_get_sset_count(struct dsa_switch *ds)
int b53_get_sset_count(struct dsa_switch *ds)
{
	struct b53_device *dev = ds->priv;

	return b53_get_mib_size(dev);
}
EXPORT_SYMBOL(b53_get_sset_count);

static int b53_setup(struct dsa_switch *ds)
{
@@ -921,13 +923,13 @@ static void b53_adjust_link(struct dsa_switch *ds, int port,
	}
}

static int b53_vlan_filtering(struct dsa_switch *ds, int port,
			      bool vlan_filtering)
int b53_vlan_filtering(struct dsa_switch *ds, int port, bool vlan_filtering)
{
	return 0;
}
EXPORT_SYMBOL(b53_vlan_filtering);

static int b53_vlan_prepare(struct dsa_switch *ds, int port,
int b53_vlan_prepare(struct dsa_switch *ds, int port,
		     const struct switchdev_obj_port_vlan *vlan,
		     struct switchdev_trans *trans)
{
@@ -943,8 +945,9 @@ static int b53_vlan_prepare(struct dsa_switch *ds, int port,

	return 0;
}
EXPORT_SYMBOL(b53_vlan_prepare);

static void b53_vlan_add(struct dsa_switch *ds, int port,
void b53_vlan_add(struct dsa_switch *ds, int port,
		  const struct switchdev_obj_port_vlan *vlan,
		  struct switchdev_trans *trans)
{
@@ -977,8 +980,9 @@ static void b53_vlan_add(struct dsa_switch *ds, int port,
		b53_fast_age_vlan(dev, vid);
	}
}
EXPORT_SYMBOL(b53_vlan_add);

static int b53_vlan_del(struct dsa_switch *ds, int port,
int b53_vlan_del(struct dsa_switch *ds, int port,
		 const struct switchdev_obj_port_vlan *vlan)
{
	struct b53_device *dev = ds->priv;
@@ -1015,8 +1019,9 @@ static int b53_vlan_del(struct dsa_switch *ds, int port,

	return 0;
}
EXPORT_SYMBOL(b53_vlan_del);

static int b53_vlan_dump(struct dsa_switch *ds, int port,
int b53_vlan_dump(struct dsa_switch *ds, int port,
		  struct switchdev_obj_port_vlan *vlan,
		  int (*cb)(struct switchdev_obj *obj))
{
@@ -1057,6 +1062,7 @@ static int b53_vlan_dump(struct dsa_switch *ds, int port,

	return err;
}
EXPORT_SYMBOL(b53_vlan_dump);

/* Address Resolution Logic routines */
static int b53_arl_op_wait(struct b53_device *dev)
@@ -1175,7 +1181,7 @@ static int b53_arl_op(struct b53_device *dev, int op, int port,
	return b53_arl_rw_op(dev, 0);
}

static int b53_fdb_prepare(struct dsa_switch *ds, int port,
int b53_fdb_prepare(struct dsa_switch *ds, int port,
		    const struct switchdev_obj_port_fdb *fdb,
		    struct switchdev_trans *trans)
{
@@ -1189,8 +1195,9 @@ static int b53_fdb_prepare(struct dsa_switch *ds, int port,

	return 0;
}
EXPORT_SYMBOL(b53_fdb_prepare);

static void b53_fdb_add(struct dsa_switch *ds, int port,
void b53_fdb_add(struct dsa_switch *ds, int port,
		 const struct switchdev_obj_port_fdb *fdb,
		 struct switchdev_trans *trans)
{
@@ -1199,14 +1206,16 @@ static void b53_fdb_add(struct dsa_switch *ds, int port,
	if (b53_arl_op(priv, 0, port, fdb->addr, fdb->vid, true))
		pr_err("%s: failed to add MAC address\n", __func__);
}
EXPORT_SYMBOL(b53_fdb_add);

static int b53_fdb_del(struct dsa_switch *ds, int port,
int b53_fdb_del(struct dsa_switch *ds, int port,
		const struct switchdev_obj_port_fdb *fdb)
{
	struct b53_device *priv = ds->priv;

	return b53_arl_op(priv, 0, port, fdb->addr, fdb->vid, false);
}
EXPORT_SYMBOL(b53_fdb_del);

static int b53_arl_search_wait(struct b53_device *dev)
{
@@ -1258,7 +1267,7 @@ static int b53_fdb_copy(struct net_device *dev, int port,
	return cb(&fdb->obj);
}

static int b53_fdb_dump(struct dsa_switch *ds, int port,
int b53_fdb_dump(struct dsa_switch *ds, int port,
		 struct switchdev_obj_port_fdb *fdb,
		 int (*cb)(struct switchdev_obj *obj))
{
@@ -1297,9 +1306,9 @@ static int b53_fdb_dump(struct dsa_switch *ds, int port,

	return 0;
}
EXPORT_SYMBOL(b53_fdb_dump);

static int b53_br_join(struct dsa_switch *ds, int port,
		       struct net_device *bridge)
int b53_br_join(struct dsa_switch *ds, int port, struct net_device *bridge)
{
	struct b53_device *dev = ds->priv;
	s8 cpu_port = ds->dst->cpu_port;
@@ -1343,8 +1352,9 @@ static int b53_br_join(struct dsa_switch *ds, int port,

	return 0;
}
EXPORT_SYMBOL(b53_br_join);

static void b53_br_leave(struct dsa_switch *ds, int port)
void b53_br_leave(struct dsa_switch *ds, int port)
{
	struct b53_device *dev = ds->priv;
	struct net_device *bridge = dev->ports[port].bridge_dev;
@@ -1393,8 +1403,9 @@ static void b53_br_leave(struct dsa_switch *ds, int port)
		b53_set_vlan_entry(dev, pvid, vl);
	}
}
EXPORT_SYMBOL(b53_br_leave);

static void b53_br_set_stp_state(struct dsa_switch *ds, int port, u8 state)
void b53_br_set_stp_state(struct dsa_switch *ds, int port, u8 state)
{
	struct b53_device *dev = ds->priv;
	u8 hw_state;
@@ -1426,21 +1437,23 @@ static void b53_br_set_stp_state(struct dsa_switch *ds, int port, u8 state)
	reg |= hw_state;
	b53_write8(dev, B53_CTRL_PAGE, B53_PORT_CTRL(port), reg);
}
EXPORT_SYMBOL(b53_br_set_stp_state);

static void b53_br_fast_age(struct dsa_switch *ds, int port)
void b53_br_fast_age(struct dsa_switch *ds, int port)
{
	struct b53_device *dev = ds->priv;

	if (b53_fast_age_port(dev, port))
		dev_err(ds->dev, "fast ageing failed\n");
}
EXPORT_SYMBOL(b53_br_fast_age);

static enum dsa_tag_protocol b53_get_tag_protocol(struct dsa_switch *ds)
{
	return DSA_TAG_PROTO_NONE;
}

static struct dsa_switch_ops b53_switch_ops = {
static const struct dsa_switch_ops b53_switch_ops = {
	.get_tag_protocol	= b53_get_tag_protocol,
	.setup			= b53_setup,
	.get_strings		= b53_get_strings,
+33 −0
Original line number Diff line number Diff line
@@ -374,4 +374,37 @@ static inline int b53_switch_get_reset_gpio(struct b53_device *dev)
	return -ENOENT;
}
#endif

/* Exported functions towards other drivers */
void b53_get_strings(struct dsa_switch *ds, int port, uint8_t *data);
void b53_get_ethtool_stats(struct dsa_switch *ds, int port, uint64_t *data);
int b53_get_sset_count(struct dsa_switch *ds);
int b53_br_join(struct dsa_switch *ds, int port, struct net_device *bridge);
void b53_br_leave(struct dsa_switch *ds, int port);
void b53_br_set_stp_state(struct dsa_switch *ds, int port, u8 state);
void b53_br_fast_age(struct dsa_switch *ds, int port);
int b53_vlan_filtering(struct dsa_switch *ds, int port, bool vlan_filtering);
int b53_vlan_prepare(struct dsa_switch *ds, int port,
		     const struct switchdev_obj_port_vlan *vlan,
		     struct switchdev_trans *trans);
void b53_vlan_add(struct dsa_switch *ds, int port,
		  const struct switchdev_obj_port_vlan *vlan,
		  struct switchdev_trans *trans);
int b53_vlan_del(struct dsa_switch *ds, int port,
		 const struct switchdev_obj_port_vlan *vlan);
int b53_vlan_dump(struct dsa_switch *ds, int port,
		  struct switchdev_obj_port_vlan *vlan,
		  int (*cb)(struct switchdev_obj *obj));
int b53_fdb_prepare(struct dsa_switch *ds, int port,
		    const struct switchdev_obj_port_fdb *fdb,
		    struct switchdev_trans *trans);
void b53_fdb_add(struct dsa_switch *ds, int port,
		 const struct switchdev_obj_port_fdb *fdb,
		 struct switchdev_trans *trans);
int b53_fdb_del(struct dsa_switch *ds, int port,
		const struct switchdev_obj_port_fdb *fdb);
int b53_fdb_dump(struct dsa_switch *ds, int port,
		 struct switchdev_obj_port_fdb *fdb,
		 int (*cb)(struct switchdev_obj *obj));

#endif
+33 −22
Original line number Diff line number Diff line
@@ -977,6 +977,38 @@ static struct b53_io_ops bcm_sf2_io_ops = {
	.write64 = bcm_sf2_core_write64,
};

static const struct dsa_switch_ops bcm_sf2_ops = {
	.get_tag_protocol	= bcm_sf2_sw_get_tag_protocol,
	.setup			= bcm_sf2_sw_setup,
	.get_strings		= b53_get_strings,
	.get_ethtool_stats	= b53_get_ethtool_stats,
	.get_sset_count		= b53_get_sset_count,
	.get_phy_flags		= bcm_sf2_sw_get_phy_flags,
	.adjust_link		= bcm_sf2_sw_adjust_link,
	.fixed_link_update	= bcm_sf2_sw_fixed_link_update,
	.suspend		= bcm_sf2_sw_suspend,
	.resume			= bcm_sf2_sw_resume,
	.get_wol		= bcm_sf2_sw_get_wol,
	.set_wol		= bcm_sf2_sw_set_wol,
	.port_enable		= bcm_sf2_port_setup,
	.port_disable		= bcm_sf2_port_disable,
	.get_eee		= bcm_sf2_sw_get_eee,
	.set_eee		= bcm_sf2_sw_set_eee,
	.port_bridge_join	= b53_br_join,
	.port_bridge_leave	= b53_br_leave,
	.port_stp_state_set	= b53_br_set_stp_state,
	.port_fast_age		= b53_br_fast_age,
	.port_vlan_filtering	= b53_vlan_filtering,
	.port_vlan_prepare	= b53_vlan_prepare,
	.port_vlan_add		= b53_vlan_add,
	.port_vlan_del		= b53_vlan_del,
	.port_vlan_dump		= b53_vlan_dump,
	.port_fdb_prepare	= b53_fdb_prepare,
	.port_fdb_dump		= b53_fdb_dump,
	.port_fdb_add		= b53_fdb_add,
	.port_fdb_del		= b53_fdb_del,
};

static int bcm_sf2_sw_probe(struct platform_device *pdev)
{
	const char *reg_names[BCM_SF2_REGS_NUM] = BCM_SF2_REGS_NAME;
@@ -1017,28 +1049,7 @@ static int bcm_sf2_sw_probe(struct platform_device *pdev)

	priv->dev = dev;
	ds = dev->ds;

	/* Override the parts that are non-standard wrt. normal b53 devices */
	memcpy(ops, ds->ops, sizeof(*ops));
	ds->ops = ops;
	ds->ops->get_tag_protocol = bcm_sf2_sw_get_tag_protocol;
	ds->ops->setup = bcm_sf2_sw_setup;
	ds->ops->get_phy_flags = bcm_sf2_sw_get_phy_flags;
	ds->ops->adjust_link = bcm_sf2_sw_adjust_link;
	ds->ops->fixed_link_update = bcm_sf2_sw_fixed_link_update;
	ds->ops->suspend = bcm_sf2_sw_suspend;
	ds->ops->resume = bcm_sf2_sw_resume;
	ds->ops->get_wol = bcm_sf2_sw_get_wol;
	ds->ops->set_wol = bcm_sf2_sw_set_wol;
	ds->ops->port_enable = bcm_sf2_port_setup;
	ds->ops->port_disable = bcm_sf2_port_disable;
	ds->ops->get_eee = bcm_sf2_sw_get_eee;
	ds->ops->set_eee = bcm_sf2_sw_set_eee;

	/* Avoid having DSA free our slave MDIO bus (checking for
	 * ds->slave_mii_bus and ds->ops->phy_read being non-NULL)
	 */
	ds->ops->phy_read = NULL;
	ds->ops = &bcm_sf2_ops;

	dev_set_drvdata(&pdev->dev, priv);

+7 −3
Original line number Diff line number Diff line
@@ -252,7 +252,7 @@ mv88e6060_phy_write(struct dsa_switch *ds, int port, int regnum, u16 val)
	return reg_write(ds, addr, regnum, val);
}

static struct dsa_switch_ops mv88e6060_switch_ops = {
static const struct dsa_switch_ops mv88e6060_switch_ops = {
	.get_tag_protocol = mv88e6060_get_tag_protocol,
	.probe		= mv88e6060_drv_probe,
	.setup		= mv88e6060_setup,
@@ -261,16 +261,20 @@ static struct dsa_switch_ops mv88e6060_switch_ops = {
	.phy_write	= mv88e6060_phy_write,
};

static struct dsa_switch_driver mv88e6060_switch_drv = {
	.ops		= &mv88e6060_switch_ops,
};

static int __init mv88e6060_init(void)
{
	register_switch_driver(&mv88e6060_switch_ops);
	register_switch_driver(&mv88e6060_switch_drv);
	return 0;
}
module_init(mv88e6060_init);

static void __exit mv88e6060_cleanup(void)
{
	unregister_switch_driver(&mv88e6060_switch_ops);
	unregister_switch_driver(&mv88e6060_switch_drv);
}
module_exit(mv88e6060_cleanup);

+7 −3
Original line number Diff line number Diff line
@@ -4361,7 +4361,7 @@ static int mv88e6xxx_port_mdb_dump(struct dsa_switch *ds, int port,
	return err;
}

static struct dsa_switch_ops mv88e6xxx_switch_ops = {
static const struct dsa_switch_ops mv88e6xxx_switch_ops = {
	.probe			= mv88e6xxx_drv_probe,
	.get_tag_protocol	= mv88e6xxx_get_tag_protocol,
	.setup			= mv88e6xxx_setup,
@@ -4403,6 +4403,10 @@ static struct dsa_switch_ops mv88e6xxx_switch_ops = {
	.port_mdb_dump          = mv88e6xxx_port_mdb_dump,
};

static struct dsa_switch_driver mv88e6xxx_switch_drv = {
	.ops			= &mv88e6xxx_switch_ops,
};

static int mv88e6xxx_register_switch(struct mv88e6xxx_chip *chip,
				     struct device_node *np)
{
@@ -4565,7 +4569,7 @@ static struct mdio_driver mv88e6xxx_driver = {

static int __init mv88e6xxx_init(void)
{
	register_switch_driver(&mv88e6xxx_switch_ops);
	register_switch_driver(&mv88e6xxx_switch_drv);
	return mdio_driver_register(&mv88e6xxx_driver);
}
module_init(mv88e6xxx_init);
@@ -4573,7 +4577,7 @@ module_init(mv88e6xxx_init);
static void __exit mv88e6xxx_cleanup(void)
{
	mdio_driver_unregister(&mv88e6xxx_driver);
	unregister_switch_driver(&mv88e6xxx_switch_ops);
	unregister_switch_driver(&mv88e6xxx_switch_drv);
}
module_exit(mv88e6xxx_cleanup);

Loading