mirror of https://gitee.com/openkylin/linux.git
net-sysfs: expose physical switch id for particular device
Signed-off-by: Jiri Pirko <jiri@resnulli.us> Reviewed-by: Thomas Graf <tgraf@suug.ch> Acked-by: John Fastabend <john.r.fastabend@intel.com> Acked-by: Andy Gospodarek <gospo@cumulusnetworks.com> Acked-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
82f2841291
commit
aecbe01e74
|
@ -216,3 +216,11 @@ Contact: netdev@vger.kernel.org
|
|||
Description:
|
||||
Indicates the interface protocol type as a decimal value. See
|
||||
include/uapi/linux/if_arp.h for all possible values.
|
||||
|
||||
What: /sys/class/net/<iface>/phys_switch_id
|
||||
Date: November 2014
|
||||
KernelVersion: 3.19
|
||||
Contact: netdev@vger.kernel.org
|
||||
Description:
|
||||
Indicates the unique physical switch identifier of a switch this
|
||||
port belongs to, as a string.
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include <linux/capability.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <net/switchdev.h>
|
||||
#include <linux/if_arp.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/nsproxy.h>
|
||||
|
@ -416,6 +417,28 @@ static ssize_t phys_port_id_show(struct device *dev,
|
|||
}
|
||||
static DEVICE_ATTR_RO(phys_port_id);
|
||||
|
||||
static ssize_t phys_switch_id_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct net_device *netdev = to_net_dev(dev);
|
||||
ssize_t ret = -EINVAL;
|
||||
|
||||
if (!rtnl_trylock())
|
||||
return restart_syscall();
|
||||
|
||||
if (dev_isalive(netdev)) {
|
||||
struct netdev_phys_item_id ppid;
|
||||
|
||||
ret = netdev_switch_parent_id_get(netdev, &ppid);
|
||||
if (!ret)
|
||||
ret = sprintf(buf, "%*phN\n", ppid.id_len, ppid.id);
|
||||
}
|
||||
rtnl_unlock();
|
||||
|
||||
return ret;
|
||||
}
|
||||
static DEVICE_ATTR_RO(phys_switch_id);
|
||||
|
||||
static struct attribute *net_class_attrs[] = {
|
||||
&dev_attr_netdev_group.attr,
|
||||
&dev_attr_type.attr,
|
||||
|
@ -441,6 +464,7 @@ static struct attribute *net_class_attrs[] = {
|
|||
&dev_attr_tx_queue_len.attr,
|
||||
&dev_attr_gro_flush_timeout.attr,
|
||||
&dev_attr_phys_port_id.attr,
|
||||
&dev_attr_phys_switch_id.attr,
|
||||
NULL,
|
||||
};
|
||||
ATTRIBUTE_GROUPS(net_class);
|
||||
|
|
Loading…
Reference in New Issue