[PATCHv2 net-next] net: mvneta: implement .set_wol and .get_wol

Subsystems: marvell mvneta ethernet driver, networking drivers, the rest

5 messages, 4 authors, 2017-01-23 · open the first message on its own page

[PATCHv2 net-next] net: mvneta: implement .set_wol and .get_wol

From: Jingju Hou <hidden>
Date: 2017-01-23 02:44:46

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

Signed-off-by: Jingju Hou <redacted>
---
Since v1:
- using phy_dev member in struct net_device

 drivers/net/ethernet/marvell/mvneta.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
index e05e227..78869fa 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -3908,6 +3908,25 @@ 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)
+{
+	wol->supported = 0;
+	wol->wolopts = 0;
+
+	if (dev->phy_dev)
+		return phy_ethtool_get_wol(dev->phy_dev, wol);
+}
+
+static int
+mvneta_ethtool_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
+{
+	if (!dev->phy_dev)
+		return -EOPNOTSUPP;
+
+	return phy_ethtool_set_wol(dev->phy_dev, wol);
+}
+
 static const struct net_device_ops mvneta_netdev_ops = {
 	.ndo_open            = mvneta_open,
 	.ndo_stop            = mvneta_stop,
@@ -3937,6 +3956,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 */
-- 
1.9.1

Re: [PATCHv2 net-next] net: mvneta: implement .set_wol and .get_wol

From: Jisheng Zhang <hidden>
Date: 2017-01-23 02:57:01

On Mon, 23 Jan 2017 10:44:07 +0800
Jingju Hou [off-list ref] wrote:
The mvneta itself does not support WOL, but the PHY might.
So pass the calls to the PHY

Signed-off-by: Jingju Hou <redacted>
Reviewed-by: Jisheng Zhang <redacted>
quoted hunk
---
Since v1:
- using phy_dev member in struct net_device

 drivers/net/ethernet/marvell/mvneta.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
index e05e227..78869fa 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -3908,6 +3908,25 @@ 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)
+{
+	wol->supported = 0;
+	wol->wolopts = 0;
+
+	if (dev->phy_dev)
+		return phy_ethtool_get_wol(dev->phy_dev, wol);
+}
+
+static int
+mvneta_ethtool_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
+{
+	if (!dev->phy_dev)
+		return -EOPNOTSUPP;
+
+	return phy_ethtool_set_wol(dev->phy_dev, wol);
+}
+
 static const struct net_device_ops mvneta_netdev_ops = {
 	.ndo_open            = mvneta_open,
 	.ndo_stop            = mvneta_stop,
@@ -3937,6 +3956,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 */

Re: [PATCHv2 net-next] net: mvneta: implement .set_wol and .get_wol

From: kbuild test robot <hidden>
Date: 2017-01-23 04:02:32

Hi Jingju,

[auto build test ERROR on net-next/master]

url:    https://github.com/0day-ci/linux/commits/Jingju-Hou/net-mvneta-implement-set_wol-and-get_wol/20170123-105218
config: ia64-allmodconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 6.2.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=ia64 

All errors (new ones prefixed by >>):

   drivers/net/ethernet/marvell/mvneta.c: In function 'mvneta_ethtool_get_wol':
quoted
drivers/net/ethernet/marvell/mvneta.c:3938:9: error: 'struct net_device' has no member named 'phy_dev'; did you mean 'phydev'?
     if (dev->phy_dev)
            ^~
   drivers/net/ethernet/marvell/mvneta.c:3939:33: error: 'struct net_device' has no member named 'phy_dev'; did you mean 'phydev'?
      return phy_ethtool_get_wol(dev->phy_dev, wol);
                                    ^~
   drivers/net/ethernet/marvell/mvneta.c:3939:10: warning: 'return' with a value, in function returning void
      return phy_ethtool_get_wol(dev->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:3945:10: error: 'struct net_device' has no member named 'phy_dev'; did you mean 'phydev'?
     if (!dev->phy_dev)
             ^~
   drivers/net/ethernet/marvell/mvneta.c:3948:32: error: 'struct net_device' has no member named 'phy_dev'; did you mean 'phydev'?
     return phy_ethtool_set_wol(dev->phy_dev, wol);
                                   ^~
   drivers/net/ethernet/marvell/mvneta.c:3949:1: warning: control reaches end of non-void function [-Wreturn-type]
    }
    ^

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

  3932	static void
  3933	mvneta_ethtool_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
  3934	{
  3935		wol->supported = 0;
  3936		wol->wolopts = 0;
  3937	
3938		if (dev->phy_dev)
  3939			return phy_ethtool_get_wol(dev->phy_dev, wol);
  3940	}
  3941	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Re: [PATCHv2 net-next] net: mvneta: implement .set_wol and .get_wol

From: kbuild test robot <hidden>
Date: 2017-01-23 04:05:32

Hi Jingju,

[auto build test ERROR on net-next/master]

url:    https://github.com/0day-ci/linux/commits/Jingju-Hou/net-mvneta-implement-set_wol-and-get_wol/20170123-105218
config: m68k-allyesconfig (attached as .config)
compiler: m68k-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=m68k 

All errors (new ones prefixed by >>):

   drivers/net/ethernet/marvell/mvneta.c: In function 'mvneta_ethtool_get_wol':
quoted
drivers/net/ethernet/marvell/mvneta.c:3938:9: error: 'struct net_device' has no member named 'phy_dev'
     if (dev->phy_dev)
            ^
   drivers/net/ethernet/marvell/mvneta.c:3939:33: error: 'struct net_device' has no member named 'phy_dev'
      return phy_ethtool_get_wol(dev->phy_dev, wol);
                                    ^
   drivers/net/ethernet/marvell/mvneta.c:3939:3: warning: 'return' with a value, in function returning void
      return phy_ethtool_get_wol(dev->phy_dev, wol);
      ^
   drivers/net/ethernet/marvell/mvneta.c: In function 'mvneta_ethtool_set_wol':
   drivers/net/ethernet/marvell/mvneta.c:3945:10: error: 'struct net_device' has no member named 'phy_dev'
     if (!dev->phy_dev)
             ^
   drivers/net/ethernet/marvell/mvneta.c:3948:32: error: 'struct net_device' has no member named 'phy_dev'
     return phy_ethtool_set_wol(dev->phy_dev, wol);
                                   ^
   drivers/net/ethernet/marvell/mvneta.c:3949:1: warning: control reaches end of non-void function [-Wreturn-type]
    }
    ^

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

  3932	static void
  3933	mvneta_ethtool_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
  3934	{
  3935		wol->supported = 0;
  3936		wol->wolopts = 0;
  3937	
3938		if (dev->phy_dev)
  3939			return phy_ethtool_get_wol(dev->phy_dev, wol);
  3940	}
  3941	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Re: [PATCHv2 net-next] net: mvneta: implement .set_wol and .get_wol

From: David Miller <davem@davemloft.net>
Date: 2017-01-23 04:27:54

The same build error exists in all submissions of your patch.

At this point you must absolutely reproduce this build failure
yourself, and stop submitting this patch until you can test that the
build failure is fixed.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help