summaryrefslogtreecommitdiff
path: root/include/net/switchdev.h
diff options
context:
space:
mode:
authorScott Feldman <sfeldma@gmail.com>2015-05-10 19:47:49 +0300
committerDavid S. Miller <davem@davemloft.net>2015-05-13 01:43:53 +0300
commitf8e20a9f87d33865cc1d67f13da0db8d457fc3c9 (patch)
tree0072db71330af1215e78c1def9033d62156a4183 /include/net/switchdev.h
parent3094333d9089d43e8b8f0418676fa6ae06c27b51 (diff)
downloadlinux-f8e20a9f87d33865cc1d67f13da0db8d457fc3c9.tar.xz
switchdev: convert parent_id_get to switchdev attr get
Switch ID is just a gettable port attribute. Convert switchdev op switchdev_parent_id_get to a switchdev attr. Note: for sysfs and netlink interfaces, SWITCHDEV_ATTR_PORT_PARENT_ID is called with SWITCHDEV_F_NO_RECUSE to limit switch ID user-visiblity to only port netdevs. So when a port is stacked under bond/bridge, the user can only query switch id via the switch ports, but not via the upper devices Signed-off-by: Scott Feldman <sfeldma@gmail.com> Acked-by: Jiri Pirko <jiri@resnulli.us> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/switchdev.h')
-rw-r--r--include/net/switchdev.h18
1 files changed, 4 insertions, 14 deletions
diff --git a/include/net/switchdev.h b/include/net/switchdev.h
index 282043844bcf..93316e7ab372 100644
--- a/include/net/switchdev.h
+++ b/include/net/switchdev.h
@@ -25,12 +25,16 @@ enum switchdev_trans {
enum switchdev_attr_id {
SWITCHDEV_ATTR_UNDEFINED,
+ SWITCHDEV_ATTR_PORT_PARENT_ID,
};
struct switchdev_attr {
enum switchdev_attr_id id;
enum switchdev_trans trans;
u32 flags;
+ union {
+ struct netdev_phys_item_id ppid; /* PORT_PARENT_ID */
+ };
};
struct fib_info;
@@ -38,10 +42,6 @@ struct fib_info;
/**
* struct switchdev_ops - switchdev operations
*
- * @switchdev_parent_id_get: Called to get an ID of the switch chip this port
- * is part of. If driver implements this, it indicates that it
- * represents a port of a switch chip.
- *
* @switchdev_port_attr_get: Get a port attribute (see switchdev_attr).
*
* @switchdev_port_attr_set: Set a port attribute (see switchdev_attr).
@@ -54,8 +54,6 @@ struct fib_info;
* @switchdev_fib_ipv4_del: Called to delete IPv4 route from switch device.
*/
struct switchdev_ops {
- int (*switchdev_parent_id_get)(struct net_device *dev,
- struct netdev_phys_item_id *psid);
int (*switchdev_port_attr_get)(struct net_device *dev,
struct switchdev_attr *attr);
int (*switchdev_port_attr_set)(struct net_device *dev,
@@ -93,8 +91,6 @@ switchdev_notifier_info_to_dev(const struct switchdev_notifier_info *info)
#ifdef CONFIG_NET_SWITCHDEV
-int switchdev_parent_id_get(struct net_device *dev,
- struct netdev_phys_item_id *psid);
int switchdev_port_attr_get(struct net_device *dev,
struct switchdev_attr *attr);
int switchdev_port_attr_set(struct net_device *dev,
@@ -120,12 +116,6 @@ void switchdev_fib_ipv4_abort(struct fib_info *fi);
#else
-static inline int switchdev_parent_id_get(struct net_device *dev,
- struct netdev_phys_item_id *psid)
-{
- return -EOPNOTSUPP;
-}
-
static inline int switchdev_port_attr_get(struct net_device *dev,
struct switchdev_attr *attr)
{