From: Varka Bhadram <varkabhadram@gmail.com>
To: Alexander Aring <alex.aring@gmail.com>
Cc: linux-wpan@vger.kernel.org, Varka Bhadram <varkab@cdac.in>
Subject: Re: [RFC bluetooth-next] cfg802154: pass name_assign_type to rdev_add_virtual_intf()
Date: Tue, 28 Apr 2015 13:49:46 +0530 [thread overview]
Message-ID: <553F42A2.2060908@gmail.com> (raw)
In-Reply-To: <20150428073702.GA700@omega>
Hi Alex,
On 04/28/2015 01:07 PM, Alexander Aring wrote:
> Hi Varka,
>
> On Wed, Apr 22, 2015 at 02:07:16PM +0530, Varka Bhadram wrote:
>> This code is based on commit 6bab2e19c5ffd
>> ("cfg80211: pass name_assign_type to rdev_add_virtual_intf()")
>>
>> This will expose in sysfs whether the ifname of a IEEE-802.15.4
>> device is set by userspace or generated by the kernel.
>> We are using two types of name_assign_types
>> o NET_NAME_ENUM: Default interface name provided by kernel
>> o NET_NAME_USER: Interface name provided by user.
>>
>> Signed-off-by: Varka Bhadram <varkab@cdac.in>
>> ---
>> include/net/cfg802154.h | 2 ++
>> net/ieee802154/nl-phy.c | 1 +
>> net/ieee802154/nl802154.c | 1 +
>> net/ieee802154/rdev-ops.h | 10 +++++++---
>> net/mac802154/cfg.c | 9 ++++++---
>> net/mac802154/ieee802154_i.h | 1 +
>> net/mac802154/iface.c | 5 +++--
>> net/mac802154/main.c | 3 ++-
>> 8 files changed, 23 insertions(+), 9 deletions(-)
>>
>> diff --git a/include/net/cfg802154.h b/include/net/cfg802154.h
>> index eeda676..6ea16c8 100644
>> --- a/include/net/cfg802154.h
>> +++ b/include/net/cfg802154.h
>> @@ -30,11 +30,13 @@ struct wpan_phy_cca;
>> struct cfg802154_ops {
>> struct net_device * (*add_virtual_intf_deprecated)(struct wpan_phy *wpan_phy,
>> const char *name,
>> + unsigned char name_assign_type,
>> int type);
>> void (*del_virtual_intf_deprecated)(struct wpan_phy *wpan_phy,
>> struct net_device *dev);
>> int (*add_virtual_intf)(struct wpan_phy *wpan_phy,
>> const char *name,
>> + unsigned char name_assign_type,
>> enum nl802154_iftype type,
>> __le64 extended_addr);
>> int (*del_virtual_intf)(struct wpan_phy *wpan_phy,
>> diff --git a/net/ieee802154/nl-phy.c b/net/ieee802154/nl-phy.c
>> index 1b9d25f6..ac3462a 100644
>> --- a/net/ieee802154/nl-phy.c
>> +++ b/net/ieee802154/nl-phy.c
>> @@ -221,6 +221,7 @@ int ieee802154_add_iface(struct sk_buff *skb, struct genl_info *info)
>> }
>>
>> dev = rdev_add_virtual_intf_deprecated(wpan_phy_to_rdev(phy), devname,
>> + NET_NAME_ENUM,
>> type);
> This isn't always given by kernel.
>
> See [0]. If info->attrs[IEEE802154_ATTR_DEV_TYPE] is given the name
> came from user. You need to put some variable on stack and then decide
> this in the if else branch.
What about the following change..?
diff --git a/net/ieee802154/nl-phy.c b/net/ieee802154/nl-phy.c
index ac3462a..248490c 100644
--- a/net/ieee802154/nl-phy.c
+++ b/net/ieee802154/nl-phy.c
@@ -175,6 +175,7 @@ int ieee802154_add_iface(struct sk_buff *skb, struct genl_info *info)
int rc = -ENOBUFS;
struct net_device *dev;
int type = __IEEE802154_DEV_INVALID;
+ unsigned char name_assign_type;
pr_debug("%s\n", __func__);
@@ -190,8 +191,10 @@ int ieee802154_add_iface(struct sk_buff *skb, struct genl_info *info)
if (devname[nla_len(info->attrs[IEEE802154_ATTR_DEV_NAME]) - 1]
!= '\0')
return -EINVAL; /* phy name should be null-terminated */
+ name_assign_type = NET_NAME_USER;
} else {
devname = "wpan%d";
+ name_assign_type = NET_NAME_ENUM;
}
if (strlen(devname) >= IFNAMSIZ)
@@ -221,7 +224,7 @@ int ieee802154_add_iface(struct sk_buff *skb, struct genl_info *info)
}
dev = rdev_add_virtual_intf_deprecated(wpan_phy_to_rdev(phy), devname,
- NET_NAME_ENUM,
+ name_assign_type,
type);
if (IS_ERR(dev)) {
rc = PTR_ERR(dev);
--
1.7.9.5
>
>> if (IS_ERR(dev)) {
>> rc = PTR_ERR(dev);
>> diff --git a/net/ieee802154/nl802154.c b/net/ieee802154/nl802154.c
>> index a4daf91..a7eb16d 100644
>> --- a/net/ieee802154/nl802154.c
>> +++ b/net/ieee802154/nl802154.c
>> @@ -589,6 +589,7 @@ static int nl802154_new_interface(struct sk_buff *skb, struct genl_info *info)
>>
>> return rdev_add_virtual_intf(rdev,
>> nla_data(info->attrs[NL802154_ATTR_IFNAME]),
>> + NET_NAME_USER,
>> type, extended_addr);
> put what you can of these parameters in the previous line. I think
> "type" fits sure in this line.
>
Ok will do.
>
> Otherwise this patch looks good. Thanks.
>
> - Alex
>
> [0] http://lxr.free-electrons.com/source/net/ieee802154/nl-phy.c#L188
>
Thanks.
--
Varka Bhadram
next prev parent reply other threads:[~2015-04-28 8:20 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-22 8:37 [RFC bluetooth-next] cfg802154: pass name_assign_type to rdev_add_virtual_intf() Varka Bhadram
2015-04-28 3:32 ` Varka Bhadram
2015-04-28 7:37 ` Alexander Aring
2015-04-28 8:19 ` Varka Bhadram [this message]
2015-04-28 8:29 ` Alexander Aring
2015-04-28 8:30 ` Varka Bhadram
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=553F42A2.2060908@gmail.com \
--to=varkabhadram@gmail.com \
--cc=alex.aring@gmail.com \
--cc=linux-wpan@vger.kernel.org \
--cc=varkab@cdac.in \
/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