From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751283AbdAORUN (ORCPT ); Sun, 15 Jan 2017 12:20:13 -0500 Received: from mail-oi0-f67.google.com ([209.85.218.67]:34736 "EHLO mail-oi0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751165AbdAORUL (ORCPT ); Sun, 15 Jan 2017 12:20:11 -0500 Subject: Re: [PATCH net-next v3 07/10] net: Relocate dev_to_net_device() into core To: Greg KH References: <20170114214713.28109-1-f.fainelli@gmail.com> <20170114214713.28109-8-f.fainelli@gmail.com> <20170115110753.GG26374@kroah.com> Cc: netdev@vger.kernel.org, Jason Cooper , Andrew Lunn , Sebastian Hesselbarth , Gregory Clement , Russell King , Vivien Didelot , "David S. Miller" , "moderated list:ARM SUB-ARCHITECTURES" , open list From: Florian Fainelli Message-ID: <621be9fe-0869-2d0a-fd49-97468c2d4972@gmail.com> Date: Sun, 15 Jan 2017 09:20:06 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <20170115110753.GG26374@kroah.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 01/15/2017 03:07 AM, Greg KH wrote: > On Sat, Jan 14, 2017 at 01:47:10PM -0800, Florian Fainelli wrote: >> dev_to_net_device() is moved from net/dsa/dsa.c to net/core/dev.c since >> it going to be used by net/dsa/dsa2.c and the namespace of the function >> justifies making it available to other users potentially. >> >> Signed-off-by: Florian Fainelli >> --- >> include/linux/netdevice.h | 2 ++ >> net/core/dev.c | 19 +++++++++++++++++++ >> net/dsa/dsa.c | 18 ------------------ >> 3 files changed, 21 insertions(+), 18 deletions(-) >> >> diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h >> index 97ae0ac513ee..6d021c37b774 100644 >> --- a/include/linux/netdevice.h >> +++ b/include/linux/netdevice.h >> @@ -4390,4 +4390,6 @@ do { \ >> #define PTYPE_HASH_SIZE (16) >> #define PTYPE_HASH_MASK (PTYPE_HASH_SIZE - 1) >> >> +struct net_device *dev_to_net_device(struct device *dev); >> + >> #endif /* _LINUX_NETDEVICE_H */ >> diff --git a/net/core/dev.c b/net/core/dev.c >> index ad5959e56116..7547e2ccc06b 100644 >> --- a/net/core/dev.c >> +++ b/net/core/dev.c >> @@ -8128,6 +8128,25 @@ const char *netdev_drivername(const struct net_device *dev) >> return empty; >> } >> >> +struct net_device *dev_to_net_device(struct device *dev) >> +{ >> + struct device *d; >> + >> + d = device_find_class(dev, "net"); >> + if (d) { >> + struct net_device *nd; >> + >> + nd = to_net_dev(d); >> + dev_hold(nd); >> + put_device(d); >> + >> + return nd; >> + } >> + >> + return NULL; >> +} >> +EXPORT_SYMBOL_GPL(dev_to_net_device); > > This really isn't just a "struct device to net device cast" type > function, (otherwise a simple container_of() would work). You are > walking the device tree and assuming it is in a specific order so that > this function works. You better document the hell out of this, > otherwise people are going to try to use this and get very confused, > very quickly... Fair enough. Does that make it clearer how the device_find_class() is used though? Maybe device_find_class() should be named device_find_by_class_name() instead? -- Florian