All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC bluetooth-next] cfg802154: pass name_assign_type to rdev_add_virtual_intf()
@ 2015-04-22  8:37 Varka Bhadram
  2015-04-28  3:32 ` Varka Bhadram
  2015-04-28  7:37 ` Alexander Aring
  0 siblings, 2 replies; 6+ messages in thread
From: Varka Bhadram @ 2015-04-22  8:37 UTC (permalink / raw)
  To: linux-wpan; +Cc: alex.aring, Varka Bhadram

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);
 	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);
 }
 
diff --git a/net/ieee802154/rdev-ops.h b/net/ieee802154/rdev-ops.h
index 7c46732..ced5ac3 100644
--- a/net/ieee802154/rdev-ops.h
+++ b/net/ieee802154/rdev-ops.h
@@ -7,10 +7,12 @@
 
 static inline struct net_device *
 rdev_add_virtual_intf_deprecated(struct cfg802154_registered_device *rdev,
-				 const char *name, int type)
+				 const char *name,
+				 unsigned char name_assign_type,
+				 int type)
 {
 	return rdev->ops->add_virtual_intf_deprecated(&rdev->wpan_phy, name,
-						      type);
+						      name_assign_type, type);
 }
 
 static inline void
@@ -22,9 +24,11 @@ rdev_del_virtual_intf_deprecated(struct cfg802154_registered_device *rdev,
 
 static inline int
 rdev_add_virtual_intf(struct cfg802154_registered_device *rdev, char *name,
+		      unsigned char name_assign_type,
 		      enum nl802154_iftype type, __le64 extended_addr)
 {
-	return rdev->ops->add_virtual_intf(&rdev->wpan_phy, name, type,
+	return rdev->ops->add_virtual_intf(&rdev->wpan_phy, name,
+					   name_assign_type, type,
 					   extended_addr);
 }
 
diff --git a/net/mac802154/cfg.c b/net/mac802154/cfg.c
index 5d9f68c..41a167b 100644
--- a/net/mac802154/cfg.c
+++ b/net/mac802154/cfg.c
@@ -22,13 +22,14 @@
 
 static struct net_device *
 ieee802154_add_iface_deprecated(struct wpan_phy *wpan_phy,
-				const char *name, int type)
+				const char *name,
+				unsigned char name_assign_type, int type)
 {
 	struct ieee802154_local *local = wpan_phy_priv(wpan_phy);
 	struct net_device *dev;
 
 	rtnl_lock();
-	dev = ieee802154_if_add(local, name, type,
+	dev = ieee802154_if_add(local, name, name_assign_type, type,
 				cpu_to_le64(0x0000000000000000ULL));
 	rtnl_unlock();
 
@@ -45,12 +46,14 @@ static void ieee802154_del_iface_deprecated(struct wpan_phy *wpan_phy,
 
 static int
 ieee802154_add_iface(struct wpan_phy *phy, const char *name,
+		     unsigned char name_assign_type,
 		     enum nl802154_iftype type, __le64 extended_addr)
 {
 	struct ieee802154_local *local = wpan_phy_priv(phy);
 	struct net_device *err;
 
-	err = ieee802154_if_add(local, name, type, extended_addr);
+	err = ieee802154_if_add(local, name, name_assign_type,
+				type, extended_addr);
 	return PTR_ERR_OR_ZERO(err);
 }
 
diff --git a/net/mac802154/ieee802154_i.h b/net/mac802154/ieee802154_i.h
index bebd70f..35a5920 100644
--- a/net/mac802154/ieee802154_i.h
+++ b/net/mac802154/ieee802154_i.h
@@ -182,6 +182,7 @@ void ieee802154_iface_exit(void);
 void ieee802154_if_remove(struct ieee802154_sub_if_data *sdata);
 struct net_device *
 ieee802154_if_add(struct ieee802154_local *local, const char *name,
+		  unsigned char name_assign_type,
 		  enum nl802154_iftype type, __le64 extended_addr);
 void ieee802154_remove_interfaces(struct ieee802154_local *local);
 
diff --git a/net/mac802154/iface.c b/net/mac802154/iface.c
index 38b56f9..91b75ab 100644
--- a/net/mac802154/iface.c
+++ b/net/mac802154/iface.c
@@ -522,7 +522,8 @@ ieee802154_setup_sdata(struct ieee802154_sub_if_data *sdata,
 
 struct net_device *
 ieee802154_if_add(struct ieee802154_local *local, const char *name,
-		  enum nl802154_iftype type, __le64 extended_addr)
+		  unsigned char name_assign_type, enum nl802154_iftype type,
+		  __le64 extended_addr)
 {
 	struct net_device *ndev = NULL;
 	struct ieee802154_sub_if_data *sdata = NULL;
@@ -531,7 +532,7 @@ ieee802154_if_add(struct ieee802154_local *local, const char *name,
 	ASSERT_RTNL();
 
 	ndev = alloc_netdev(sizeof(*sdata) + local->hw.vif_data_size, name,
-			    NET_NAME_UNKNOWN, ieee802154_if_setup);
+			    name_assign_type, ieee802154_if_setup);
 	if (!ndev)
 		return ERR_PTR(-ENOMEM);
 
diff --git a/net/mac802154/main.c b/net/mac802154/main.c
index 8500378..68b9667 100644
--- a/net/mac802154/main.c
+++ b/net/mac802154/main.c
@@ -161,7 +161,8 @@ int ieee802154_register_hw(struct ieee802154_hw *hw)
 
 	rtnl_lock();
 
-	dev = ieee802154_if_add(local, "wpan%d", NL802154_IFTYPE_NODE,
+	dev = ieee802154_if_add(local, "wpan%d", NET_NAME_ENUM,
+				NL802154_IFTYPE_NODE,
 				cpu_to_le64(0x0000000000000000ULL));
 	if (IS_ERR(dev)) {
 		rtnl_unlock();
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [RFC bluetooth-next] cfg802154: pass name_assign_type to rdev_add_virtual_intf()
  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
  1 sibling, 0 replies; 6+ messages in thread
From: Varka Bhadram @ 2015-04-28  3:32 UTC (permalink / raw)
  To: linux-wpan; +Cc: alex.aring, Varka Bhadram

On 04/22/2015 02:07 PM, 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);
>  	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);
>  }
>  
> diff --git a/net/ieee802154/rdev-ops.h b/net/ieee802154/rdev-ops.h
> index 7c46732..ced5ac3 100644
> --- a/net/ieee802154/rdev-ops.h
> +++ b/net/ieee802154/rdev-ops.h
> @@ -7,10 +7,12 @@
>  
>  static inline struct net_device *
>  rdev_add_virtual_intf_deprecated(struct cfg802154_registered_device *rdev,
> -				 const char *name, int type)
> +				 const char *name,
> +				 unsigned char name_assign_type,
> +				 int type)
>  {
>  	return rdev->ops->add_virtual_intf_deprecated(&rdev->wpan_phy, name,
> -						      type);
> +						      name_assign_type, type);
>  }
>  
>  static inline void
> @@ -22,9 +24,11 @@ rdev_del_virtual_intf_deprecated(struct cfg802154_registered_device *rdev,
>  
>  static inline int
>  rdev_add_virtual_intf(struct cfg802154_registered_device *rdev, char *name,
> +		      unsigned char name_assign_type,
>  		      enum nl802154_iftype type, __le64 extended_addr)
>  {
> -	return rdev->ops->add_virtual_intf(&rdev->wpan_phy, name, type,
> +	return rdev->ops->add_virtual_intf(&rdev->wpan_phy, name,
> +					   name_assign_type, type,
>  					   extended_addr);
>  }
>  
> diff --git a/net/mac802154/cfg.c b/net/mac802154/cfg.c
> index 5d9f68c..41a167b 100644
> --- a/net/mac802154/cfg.c
> +++ b/net/mac802154/cfg.c
> @@ -22,13 +22,14 @@
>  
>  static struct net_device *
>  ieee802154_add_iface_deprecated(struct wpan_phy *wpan_phy,
> -				const char *name, int type)
> +				const char *name,
> +				unsigned char name_assign_type, int type)
>  {
>  	struct ieee802154_local *local = wpan_phy_priv(wpan_phy);
>  	struct net_device *dev;
>  
>  	rtnl_lock();
> -	dev = ieee802154_if_add(local, name, type,
> +	dev = ieee802154_if_add(local, name, name_assign_type, type,
>  				cpu_to_le64(0x0000000000000000ULL));
>  	rtnl_unlock();
>  
> @@ -45,12 +46,14 @@ static void ieee802154_del_iface_deprecated(struct wpan_phy *wpan_phy,
>  
>  static int
>  ieee802154_add_iface(struct wpan_phy *phy, const char *name,
> +		     unsigned char name_assign_type,
>  		     enum nl802154_iftype type, __le64 extended_addr)
>  {
>  	struct ieee802154_local *local = wpan_phy_priv(phy);
>  	struct net_device *err;
>  
> -	err = ieee802154_if_add(local, name, type, extended_addr);
> +	err = ieee802154_if_add(local, name, name_assign_type,
> +				type, extended_addr);
>  	return PTR_ERR_OR_ZERO(err);
>  }
>  
> diff --git a/net/mac802154/ieee802154_i.h b/net/mac802154/ieee802154_i.h
> index bebd70f..35a5920 100644
> --- a/net/mac802154/ieee802154_i.h
> +++ b/net/mac802154/ieee802154_i.h
> @@ -182,6 +182,7 @@ void ieee802154_iface_exit(void);
>  void ieee802154_if_remove(struct ieee802154_sub_if_data *sdata);
>  struct net_device *
>  ieee802154_if_add(struct ieee802154_local *local, const char *name,
> +		  unsigned char name_assign_type,
>  		  enum nl802154_iftype type, __le64 extended_addr);
>  void ieee802154_remove_interfaces(struct ieee802154_local *local);
>  
> diff --git a/net/mac802154/iface.c b/net/mac802154/iface.c
> index 38b56f9..91b75ab 100644
> --- a/net/mac802154/iface.c
> +++ b/net/mac802154/iface.c
> @@ -522,7 +522,8 @@ ieee802154_setup_sdata(struct ieee802154_sub_if_data *sdata,
>  
>  struct net_device *
>  ieee802154_if_add(struct ieee802154_local *local, const char *name,
> -		  enum nl802154_iftype type, __le64 extended_addr)
> +		  unsigned char name_assign_type, enum nl802154_iftype type,
> +		  __le64 extended_addr)
>  {
>  	struct net_device *ndev = NULL;
>  	struct ieee802154_sub_if_data *sdata = NULL;
> @@ -531,7 +532,7 @@ ieee802154_if_add(struct ieee802154_local *local, const char *name,
>  	ASSERT_RTNL();
>  
>  	ndev = alloc_netdev(sizeof(*sdata) + local->hw.vif_data_size, name,
> -			    NET_NAME_UNKNOWN, ieee802154_if_setup);
> +			    name_assign_type, ieee802154_if_setup);
>  	if (!ndev)
>  		return ERR_PTR(-ENOMEM);
>  
> diff --git a/net/mac802154/main.c b/net/mac802154/main.c
> index 8500378..68b9667 100644
> --- a/net/mac802154/main.c
> +++ b/net/mac802154/main.c
> @@ -161,7 +161,8 @@ int ieee802154_register_hw(struct ieee802154_hw *hw)
>  
>  	rtnl_lock();
>  
> -	dev = ieee802154_if_add(local, "wpan%d", NL802154_IFTYPE_NODE,
> +	dev = ieee802154_if_add(local, "wpan%d", NET_NAME_ENUM,
> +				NL802154_IFTYPE_NODE,
>  				cpu_to_le64(0x0000000000000000ULL));
>  	if (IS_ERR(dev)) {
>  		rtnl_unlock();

Ping ..?

-- 
Varka Bhadram


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [RFC bluetooth-next] cfg802154: pass name_assign_type to rdev_add_virtual_intf()
  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
  1 sibling, 1 reply; 6+ messages in thread
From: Alexander Aring @ 2015-04-28  7:37 UTC (permalink / raw)
  To: Varka Bhadram; +Cc: linux-wpan, Varka Bhadram

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.

>  	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.



Otherwise this patch looks good. Thanks.

- Alex

[0] http://lxr.free-electrons.com/source/net/ieee802154/nl-phy.c#L188

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [RFC bluetooth-next] cfg802154: pass name_assign_type to rdev_add_virtual_intf()
  2015-04-28  7:37 ` Alexander Aring
@ 2015-04-28  8:19   ` Varka Bhadram
  2015-04-28  8:29     ` Alexander Aring
  0 siblings, 1 reply; 6+ messages in thread
From: Varka Bhadram @ 2015-04-28  8:19 UTC (permalink / raw)
  To: Alexander Aring; +Cc: linux-wpan, Varka Bhadram

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


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [RFC bluetooth-next] cfg802154: pass name_assign_type to rdev_add_virtual_intf()
  2015-04-28  8:19   ` Varka Bhadram
@ 2015-04-28  8:29     ` Alexander Aring
  2015-04-28  8:30       ` Varka Bhadram
  0 siblings, 1 reply; 6+ messages in thread
From: Alexander Aring @ 2015-04-28  8:29 UTC (permalink / raw)
  To: Varka Bhadram; +Cc: linux-wpan, Varka Bhadram

On Tue, Apr 28, 2015 at 01:49:46PM +0530, Varka Bhadram wrote:
> 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);

yes that is what I meant.

- Alex

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [RFC bluetooth-next] cfg802154: pass name_assign_type to rdev_add_virtual_intf()
  2015-04-28  8:29     ` Alexander Aring
@ 2015-04-28  8:30       ` Varka Bhadram
  0 siblings, 0 replies; 6+ messages in thread
From: Varka Bhadram @ 2015-04-28  8:30 UTC (permalink / raw)
  To: Alexander Aring; +Cc: linux-wpan, Varka Bhadram

On 04/28/2015 01:59 PM, Alexander Aring wrote:
> On Tue, Apr 28, 2015 at 01:49:46PM +0530, Varka Bhadram wrote:
>> 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);
> yes that is what I meant.
>
> - Alex

Thanks.. I will send the updated patch.

-- 
Varka Bhadram


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2015-04-28  8:30 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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
2015-04-28  8:29     ` Alexander Aring
2015-04-28  8:30       ` Varka Bhadram

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.