2014-12-09 22:30:56

by angus

[permalink] [raw]
Subject: [PATCH v3] wireless: Supporting of IFLA_INFO_KIND rtnl attribute

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 <[email protected]>
---
net/wireless/core.c | 6 ++++++
1 file changed, 6 insertions(+)

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:
/*
--
2.1.3



2014-12-09 23:32:55

by angus

[permalink] [raw]
Subject: Re: [PATCH v3] wireless: Supporting of IFLA_INFO_KIND rtnl attribute

On Wed, Dec 10, 2014 at 12:23:14AM +0100, Marcel Holtmann wrote:
> Hi Johannes,
>
> > On Dec 9, 2014, at 23:21, Vadim Kochan <[email protected]> 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

2014-12-10 20:35:45

by Marcel Holtmann

[permalink] [raw]
Subject: Re: [PATCH v3] wireless: Supporting of IFLA_INFO_KIND rtnl attribute

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


2014-12-10 08:07:16

by Bastian Bittorf

[permalink] [raw]
Subject: Re: [PATCH v3] wireless: Supporting of IFLA_INFO_KIND rtnl attribute

* [email protected] <[email protected]> [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

2014-12-10 08:12:49

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH v3] wireless: Supporting of IFLA_INFO_KIND rtnl attribute

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


2014-12-12 12:43:50

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH v3] wireless: Supporting of IFLA_INFO_KIND rtnl attribute

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


2014-12-09 23:24:12

by Marcel Holtmann

[permalink] [raw]
Subject: Re: [PATCH v3] wireless: Supporting of IFLA_INFO_KIND rtnl attribute

Hi Johannes,

> On Dec 9, 2014, at 23:21, Vadim Kochan <[email protected]> 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


2014-12-10 20:36:46

by Marcel Holtmann

[permalink] [raw]
Subject: Re: [PATCH v3] wireless: Supporting of IFLA_INFO_KIND rtnl attribute

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 <[email protected]>
> ---
> net/wireless/core.c | 6 ++++++
> 1 file changed, 6 insertions(+)

for what its worth.

Acked-by: Marcel Holtmann <[email protected]>

Regards

Marcel