[ovs-dev] [patch net-next RFC 07/12] dsa: implement ndo_swdev_get_id

Florian Fainelli f.fainelli at gmail.com
Thu Aug 21 16:56:13 UTC 2014


2014-08-21 9:19 GMT-07:00 Jiri Pirko <jiri at resnulli.us>:
> Signed-off-by: Jiri Pirko <jiri at resnulli.us>
> ---
>  net/dsa/Kconfig |  2 +-
>  net/dsa/slave.c | 16 ++++++++++++++++
>  2 files changed, 17 insertions(+), 1 deletion(-)
>
> diff --git a/net/dsa/Kconfig b/net/dsa/Kconfig
> index f5eede1..66c445a 100644
> --- a/net/dsa/Kconfig
> +++ b/net/dsa/Kconfig
> @@ -1,6 +1,6 @@
>  config HAVE_NET_DSA
>         def_bool y
> -       depends on NETDEVICES && !S390
> +       depends on NETDEVICES && NET_SWITCHDEV && !S390
>
>  # Drivers must select NET_DSA and the appropriate tagging format
>
> diff --git a/net/dsa/slave.c b/net/dsa/slave.c
> index 45a1e34..e069ba3 100644
> --- a/net/dsa/slave.c
> +++ b/net/dsa/slave.c
> @@ -171,6 +171,19 @@ static int dsa_slave_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
>         return -EOPNOTSUPP;
>  }
>
> +static int dsa_slave_swdev_get_id(struct net_device *dev,
> +                                 struct netdev_phys_item_id *psid)
> +{
> +       struct dsa_slave_priv *p = netdev_priv(dev);
> +       struct dsa_switch *ds = p->parent;
> +       u64 tmp = (u64) ds;
> +
> +       /* TODO: add more sophisticated id generation */
> +       memcpy(&psid->id, &tmp, sizeof(tmp));
> +       psid->id_len = sizeof(tmp);

There is already an unique id generated, which is the index in the
switch tree, and which is stored in struct dsa_switch, so this could
probably be simplified to:

psid->id = ds->index
--
Florian



More information about the dev mailing list