diff mbox

net: mvneta: implement .set_wol and .get_wol

Message ID 1485079590-6392-1-git-send-email-houjingj@marvell.com
State Changes Requested, archived
Delegated to: David Miller
Headers show

Commit Message

Jingju Hou Jan. 22, 2017, 10:06 a.m. UTC
Signed-off-by: Jingju Hou <houjingj@marvell.com>
---
 drivers/net/ethernet/marvell/mvneta.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

Comments

kernel test robot Jan. 22, 2017, 11:13 a.m. UTC | #1
Hi Jingju,

[auto build test ERROR on net-next/master]
[also build test ERROR on v4.10-rc4 next-20170120]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Jingju-Hou/net-mvneta-implement-set_wol-and-get_wol/20170122-181651
config: xtensa-allmodconfig (attached as .config)
compiler: xtensa-linux-gcc (GCC) 4.9.0
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=xtensa 

All error/warnings (new ones prefixed by >>):

   drivers/net/ethernet/marvell/mvneta.c: In function 'mvneta_ethtool_get_wol':
>> drivers/net/ethernet/marvell/mvneta.c:3940:8: error: 'struct mvneta_port' has no member named 'phy_dev'
     if (pp->phy_dev)
           ^
   drivers/net/ethernet/marvell/mvneta.c:3941:32: error: 'struct mvneta_port' has no member named 'phy_dev'
      return phy_ethtool_get_wol(pp->phy_dev, wol);
                                   ^
>> drivers/net/ethernet/marvell/mvneta.c:3941:3: warning: 'return' with a value, in function returning void
      return phy_ethtool_get_wol(pp->phy_dev, wol);
      ^
   drivers/net/ethernet/marvell/mvneta.c: In function 'mvneta_ethtool_set_wol':
   drivers/net/ethernet/marvell/mvneta.c:3949:9: error: 'struct mvneta_port' has no member named 'phy_dev'
     if (!pp->phy_dev)
            ^
   drivers/net/ethernet/marvell/mvneta.c:3952:31: error: 'struct mvneta_port' has no member named 'phy_dev'
     return phy_ethtool_set_wol(pp->phy_dev, wol);
                                  ^
>> drivers/net/ethernet/marvell/mvneta.c:3953:1: warning: control reaches end of non-void function [-Wreturn-type]
    }
    ^

vim +3940 drivers/net/ethernet/marvell/mvneta.c

  3934	{
  3935		struct mvneta_port *pp = netdev_priv(dev);
  3936	
  3937		wol->supported = 0;
  3938		wol->wolopts = 0;
  3939	
> 3940		if (pp->phy_dev)
> 3941			return phy_ethtool_get_wol(pp->phy_dev, wol);
  3942	}
  3943	
  3944	static int
  3945	mvneta_ethtool_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
  3946	{
  3947		struct mvneta_port *pp = netdev_priv(dev);
  3948	
> 3949		if (!pp->phy_dev)
  3950			return -EOPNOTSUPP;
  3951	
  3952		return phy_ethtool_set_wol(pp->phy_dev, wol);
> 3953	}
  3954	
  3955	static const struct net_device_ops mvneta_netdev_ops = {
  3956		.ndo_open            = mvneta_open,

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
kernel test robot Jan. 22, 2017, 11:21 a.m. UTC | #2
Hi Jingju,

[auto build test ERROR on net-next/master]
[also build test ERROR on v4.10-rc4 next-20170120]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Jingju-Hou/net-mvneta-implement-set_wol-and-get_wol/20170122-181651
config: sparc64-allmodconfig (attached as .config)
compiler: sparc64-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=sparc64 

All errors (new ones prefixed by >>):

   drivers/net/ethernet/marvell/mvneta.c: In function 'mvneta_ethtool_get_wol':
>> drivers/net/ethernet/marvell/mvneta.c:3940:8: error: 'struct mvneta_port' has no member named 'phy_dev'; did you mean 'phy_node'?
     if (pp->phy_dev)
           ^~
   drivers/net/ethernet/marvell/mvneta.c:3941:32: error: 'struct mvneta_port' has no member named 'phy_dev'; did you mean 'phy_node'?
      return phy_ethtool_get_wol(pp->phy_dev, wol);
                                   ^~
   drivers/net/ethernet/marvell/mvneta.c:3941:10: warning: 'return' with a value, in function returning void
      return phy_ethtool_get_wol(pp->phy_dev, wol);
             ^~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/marvell/mvneta.c:3933:1: note: declared here
    mvneta_ethtool_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
    ^~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/marvell/mvneta.c: In function 'mvneta_ethtool_set_wol':
   drivers/net/ethernet/marvell/mvneta.c:3949:9: error: 'struct mvneta_port' has no member named 'phy_dev'; did you mean 'phy_node'?
     if (!pp->phy_dev)
            ^~
   drivers/net/ethernet/marvell/mvneta.c:3952:31: error: 'struct mvneta_port' has no member named 'phy_dev'; did you mean 'phy_node'?
     return phy_ethtool_set_wol(pp->phy_dev, wol);
                                  ^~
   drivers/net/ethernet/marvell/mvneta.c:3953:1: warning: control reaches end of non-void function [-Wreturn-type]
    }
    ^

vim +3940 drivers/net/ethernet/marvell/mvneta.c

  3934	{
  3935		struct mvneta_port *pp = netdev_priv(dev);
  3936	
  3937		wol->supported = 0;
  3938		wol->wolopts = 0;
  3939	
> 3940		if (pp->phy_dev)
  3941			return phy_ethtool_get_wol(pp->phy_dev, wol);
  3942	}
  3943	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
Andrew Lunn Jan. 22, 2017, 4:49 p.m. UTC | #3
On Sun, Jan 22, 2017 at 06:06:30PM +0800, Jingju Hou wrote:
> Signed-off-by: Jingju Hou <houjingj@marvell.com>

Hi Jingju

Please include a real comment here. Something like:

The mvneta itself does not support WOL, but the PHY might. So pass the
calls to the PHY.

It also looks like you are patching an old kernel. Network patches
like this need to be against net-next. You should also include
net-next in the subject line.

Thanks
	Andrew
diff mbox

Patch

diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
index e05e227..b684f43 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -3908,6 +3908,29 @@  static int mvneta_ethtool_get_rxfh(struct net_device *dev, u32 *indir, u8 *key,
 	return 0;
 }
 
+static void
+mvneta_ethtool_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
+{
+	struct mvneta_port *pp = netdev_priv(dev);
+
+	wol->supported = 0;
+	wol->wolopts = 0;
+
+	if (pp->phy_dev)
+		return phy_ethtool_get_wol(pp->phy_dev, wol);
+}
+
+static int
+mvneta_ethtool_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
+{
+	struct mvneta_port *pp = netdev_priv(dev);
+
+	if (!pp->phy_dev)
+		return -EOPNOTSUPP;
+
+	return phy_ethtool_set_wol(pp->phy_dev, wol);
+}
+
 static const struct net_device_ops mvneta_netdev_ops = {
 	.ndo_open            = mvneta_open,
 	.ndo_stop            = mvneta_stop,
@@ -3937,6 +3960,8 @@  static int mvneta_ethtool_get_rxfh(struct net_device *dev, u32 *indir, u8 *key,
 	.set_rxfh	= mvneta_ethtool_set_rxfh,
 	.get_link_ksettings = phy_ethtool_get_link_ksettings,
 	.set_link_ksettings = mvneta_ethtool_set_link_ksettings,
+	.get_wol        = mvneta_ethtool_get_wol,
+	.set_wol        = mvneta_ethtool_set_wol,
 };
 
 /* Initialize hw */