From: Jiri Pirko <jiri@resnulli.us>
To: netdev@vger.kernel.org
Cc: davem@davemloft.net, stephen@networkplumber.org,
Narendra_K@Dell.com, bhutchings@solarflare.com,
john.r.fastabend@intel.com
Subject: [patch net-next v2 1/3] net: add ndo to get id of physical port of the device
Date: Sat, 20 Jul 2013 19:53:52 +0200 [thread overview]
Message-ID: <1374342834-10814-2-git-send-email-jiri@resnulli.us> (raw)
In-Reply-To: <1374342834-10814-1-git-send-email-jiri@resnulli.us>
This patch adds a ndo for getting physical port of the device. Driver
which is aware of being virtual function of some physical port should
implement this ndo.
Signed-off-by: Jiri Pirko <jiri@resnulli.us>
---
include/linux/netdevice.h | 20 ++++++++++++++++++++
net/core/dev.c | 18 ++++++++++++++++++
2 files changed, 38 insertions(+)
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 0741a1e..726dec2 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -728,6 +728,16 @@ struct netdev_fcoe_hbainfo {
};
#endif
+#define MAX_PHYS_PORT_ID_LEN 32
+
+/* This structure holds a unique identifier to identify the
+ * physical port used by a netdevice.
+ */
+struct netdev_phys_port_id {
+ unsigned char id[MAX_PHYS_PORT_ID_LEN];
+ unsigned char id_len;
+};
+
/*
* This structure defines the management hooks for network devices.
* The following hooks can be defined; unless noted otherwise, they are
@@ -932,6 +942,12 @@ struct netdev_fcoe_hbainfo {
* that determine carrier state from physical hardware properties (eg
* network cables) or protocol-dependent mechanisms (eg
* USB_CDC_NOTIFY_NETWORK_CONNECTION) should NOT implement this function.
+ *
+ * int (*ndo_get_phys_port_id)(struct net_device *dev,
+ * struct netdev_phys_port_id *ppid);
+ * Called to get ID of physical port of this device. If driver does
+ * not implement this, it is assumed that the hw is not able to have
+ * multiple net devices on single physical port.
*/
struct net_device_ops {
int (*ndo_init)(struct net_device *dev);
@@ -1060,6 +1076,8 @@ struct net_device_ops {
struct nlmsghdr *nlh);
int (*ndo_change_carrier)(struct net_device *dev,
bool new_carrier);
+ int (*ndo_get_phys_port_id)(struct net_device *dev,
+ struct netdev_phys_port_id *ppid);
};
/*
@@ -2317,6 +2335,8 @@ extern int dev_set_mac_address(struct net_device *,
struct sockaddr *);
extern int dev_change_carrier(struct net_device *,
bool new_carrier);
+extern int dev_get_phys_port_id(struct net_device *dev,
+ struct netdev_phys_port_id *ppid);
extern int dev_hard_start_xmit(struct sk_buff *skb,
struct net_device *dev,
struct netdev_queue *txq);
diff --git a/net/core/dev.c b/net/core/dev.c
index 26755dd..90172eb 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -4989,6 +4989,24 @@ int dev_change_carrier(struct net_device *dev, bool new_carrier)
EXPORT_SYMBOL(dev_change_carrier);
/**
+ * dev_get_phys_port_id - Get device physical port ID
+ * @dev: device
+ * @ppid: port ID
+ *
+ * Get device physical port ID
+ */
+int dev_get_phys_port_id(struct net_device *dev,
+ struct netdev_phys_port_id *ppid)
+{
+ const struct net_device_ops *ops = dev->netdev_ops;
+
+ if (!ops->ndo_get_phys_port_id)
+ return -EOPNOTSUPP;
+ return ops->ndo_get_phys_port_id(dev, ppid);
+}
+EXPORT_SYMBOL(dev_get_phys_port_id);
+
+/**
* dev_new_index - allocate an ifindex
* @net: the applicable net namespace
*
--
1.8.1.4
next prev parent reply other threads:[~2013-07-20 17:54 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-20 17:53 [patch net-next v2 0/3] export device physical port id to userspace Jiri Pirko
2013-07-20 17:53 ` Jiri Pirko [this message]
2013-07-21 11:10 ` [patch net-next v2 1/3] net: add ndo to get id of physical port of the device Or Gerlitz
2013-07-21 15:00 ` Ben Hutchings
2013-07-21 15:01 ` Ben Hutchings
2013-07-21 20:26 ` Or Gerlitz
2013-07-21 21:02 ` Jiri Pirko
2013-07-22 11:29 ` Narendra_K
2013-07-22 11:53 ` Jiri Pirko
2013-07-22 15:52 ` Or Gerlitz
2013-07-20 17:53 ` [patch net-next v2 2/3] rtnl: export physical port id via RT netlink Jiri Pirko
2013-07-21 15:03 ` Ben Hutchings
2013-07-22 11:50 ` Narendra_K
2013-07-20 17:53 ` [patch net-next v2 3/3] net: export physical port id via sysfs Jiri Pirko
2013-07-21 15:05 ` Ben Hutchings
2013-07-22 11:54 ` Narendra_K
2013-07-21 5:59 ` [patch net-next v2 0/3] export device physical port id to userspace Or Gerlitz
2013-07-21 7:26 ` Jiri Pirko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1374342834-10814-2-git-send-email-jiri@resnulli.us \
--to=jiri@resnulli.us \
--cc=Narendra_K@Dell.com \
--cc=bhutchings@solarflare.com \
--cc=davem@davemloft.net \
--cc=john.r.fastabend@intel.com \
--cc=netdev@vger.kernel.org \
--cc=stephen@networkplumber.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).