diff mbox

[v3] wireless: Supporting of IFLA_INFO_KIND rtnl attribute

Message ID 1418163666-9206-1-git-send-email-vadim4j@gmail.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Vadim Kochan Dec. 9, 2014, 10:21 p.m. UTC
It allows to identify the wlan kind of device for the user application,
e.g.:

    # ip -d link

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 promiscuity 0
    2: enp0s25: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
        link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff promiscuity 0
    3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
        link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff promiscuity 0
        wlan

Signed-off-by: Vadim Kochan <vadim4j@gmail.com>
---
 net/wireless/core.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Vadim Kochan Dec. 9, 2014, 11:23 p.m. UTC | #1
On Wed, Dec 10, 2014 at 12:23:14AM +0100, Marcel Holtmann wrote:
> Hi Johannes,
> 
> > On Dec 9, 2014, at 23:21, Vadim Kochan <vadim4j@gmail.com> wrote:
> > 
> > It allows to identify the wlan kind of device for the user application,
> > e.g.:
> > 
> >    # ip -d link
> > 
> >    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default
> >        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 promiscuity 0
> >    2: enp0s25: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
> >        link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff promiscuity 0
> >    3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
> >        link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff promiscuity 0
> >        wlan
> 
> have we considered also exposing the mode of this netdev. So for example sta,ap,p2p-go,p2p-client etc. If we can send dynamic updates via RTNL, we could easily tell the networking management system what type of wireless device we have here. I am thinking about it like "wlan/p2p-go" etc. Or should this be better kept strictly to "wlan".
> 
> And I am not sure RTNL would be capable of changing this kind strings at runtime anyway.
> 
> Regards
> 
> Marcel
> 

May be better do not mix 2 things in one attribute?

Regards,
Vadim
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Marcel Holtmann Dec. 9, 2014, 11:23 p.m. UTC | #2
Hi Johannes,

> On Dec 9, 2014, at 23:21, Vadim Kochan <vadim4j@gmail.com> wrote:
> 
> It allows to identify the wlan kind of device for the user application,
> e.g.:
> 
>    # ip -d link
> 
>    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default
>        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 promiscuity 0
>    2: enp0s25: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
>        link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff promiscuity 0
>    3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
>        link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff promiscuity 0
>        wlan

have we considered also exposing the mode of this netdev. So for example sta,ap,p2p-go,p2p-client etc. If we can send dynamic updates via RTNL, we could easily tell the networking management system what type of wireless device we have here. I am thinking about it like "wlan/p2p-go" etc. Or should this be better kept strictly to "wlan".

And I am not sure RTNL would be capable of changing this kind strings at runtime anyway.

Regards

Marcel

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Bastian Bittorf Dec. 10, 2014, 8:04 a.m. UTC | #3
* vadim4j@gmail.com <vadim4j@gmail.com> [10.12.2014 08:55]:
> > have we considered also exposing the mode of this netdev. So for example sta,ap,p2p-go,p2p-client etc. If we can send dynamic updates via RTNL, we could easily tell the networking management system what type of wireless device we have here. I am thinking about it like "wlan/p2p-go" etc. Or should this be better kept strictly to "wlan".
> > 
> > And I am not sure RTNL would be capable of changing this kind strings at runtime anyway.
> 
> May be better do not mix 2 things in one attribute?

i like the idea. who is the potential audience of the attribute beside the user?  
meaning: whoever want to scan for the keyword 'wlan' can do so, even with 'wlan/xy'

bye, bastian
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Johannes Berg Dec. 10, 2014, 8:12 a.m. UTC | #4
On Wed, 2014-12-10 at 00:23 +0100, Marcel Holtmann wrote:

> have we considered also exposing the mode of this netdev. So for
> example sta,ap,p2p-go,p2p-client etc. If we can send dynamic updates
> via RTNL, we could easily tell the networking management system what
> type of wireless device we have here. I am thinking about it like
> "wlan/p2p-go" etc. Or should this be better kept strictly to "wlan".

I certainly haven't considered this API at all :)
That said, I'm not sure where it would be used, so I don't really know.

> And I am not sure RTNL would be capable of changing this kind strings
> at runtime anyway.

Given the API (fixed constant string in a const struct that the netdev
points to) it seems that it doesn't really support that, unless we
change the internals to have a function to return the string or keep
lots of copies of the struct and reassign them - neither seems very
appealing.

johannes

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Marcel Holtmann Dec. 10, 2014, 8:35 p.m. UTC | #5
Hi Johannes,

>> have we considered also exposing the mode of this netdev. So for
>> example sta,ap,p2p-go,p2p-client etc. If we can send dynamic updates
>> via RTNL, we could easily tell the networking management system what
>> type of wireless device we have here. I am thinking about it like
>> "wlan/p2p-go" etc. Or should this be better kept strictly to "wlan".
> 
> I certainly haven't considered this API at all :)
> That said, I'm not sure where it would be used, so I don't really know.
> 
>> And I am not sure RTNL would be capable of changing this kind strings
>> at runtime anyway.
> 
> Given the API (fixed constant string in a const struct that the netdev
> points to) it seems that it doesn't really support that, unless we
> change the internals to have a function to return the string or keep
> lots of copies of the struct and reassign them - neither seems very
> appealing.

if this is a constant string similar to DEVTYPE, the it should be just "wlan" and nothing else. If internal APIs require changing, then that could be done in addition to this patch.

Regards

Marcel

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Marcel Holtmann Dec. 10, 2014, 8:36 p.m. UTC | #6
Hi Vadim,

> It allows to identify the wlan kind of device for the user application,
> e.g.:
> 
>    # ip -d link
> 
>    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default
>        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 promiscuity 0
>    2: enp0s25: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
>        link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff promiscuity 0
>    3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
>        link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff promiscuity 0
>        wlan
> 
> Signed-off-by: Vadim Kochan <vadim4j@gmail.com>
> ---
> net/wireless/core.c | 6 ++++++
> 1 file changed, 6 insertions(+)

for what its worth.

Acked-by: Marcel Holtmann <marcel@holtmann.org>

Regards

Marcel

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Johannes Berg Dec. 12, 2014, 12:43 p.m. UTC | #7
On Wed, 2014-12-10 at 00:21 +0200, Vadim Kochan wrote:
> It allows to identify the wlan kind of device for the user application,

Applied,
 
> +static struct rtnl_link_ops wireless_link_ops __read_mostly = {
> +	.kind = "wlan",
> +};

but I've made this const. It only needs to be non-const (__read_mostly)
when used with rtnl_link_register() and friends.

johannes

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/net/wireless/core.c b/net/wireless/core.c
index f52a4cd..eb7c088 100644
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
@@ -21,6 +21,7 @@ 
 #include <linux/sched.h>
 #include <net/genetlink.h>
 #include <net/cfg80211.h>
+#include <net/rtnetlink.h>
 #include "nl80211.h"
 #include "core.h"
 #include "sysfs.h"
@@ -866,6 +867,10 @@  void cfg80211_stop_iface(struct wiphy *wiphy, struct wireless_dev *wdev,
 }
 EXPORT_SYMBOL(cfg80211_stop_iface);
 
+static struct rtnl_link_ops wireless_link_ops __read_mostly = {
+	.kind = "wlan",
+};
+
 static int cfg80211_netdev_notifier_call(struct notifier_block *nb,
 					 unsigned long state, void *ptr)
 {
@@ -883,6 +888,7 @@  static int cfg80211_netdev_notifier_call(struct notifier_block *nb,
 	switch (state) {
 	case NETDEV_POST_INIT:
 		SET_NETDEV_DEVTYPE(dev, &wiphy_type);
+		dev->rtnl_link_ops = &wireless_link_ops;
 		break;
 	case NETDEV_REGISTER:
 		/*