stmmac: review Wol and enable the Unicast support
authorGiuseppe Cavallaro <peppe.cavallaro@st.com>
Wed, 13 Apr 2011 18:51:43 +0000 (11:51 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 13 Apr 2011 18:51:43 +0000 (11:51 -0700)
Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/stmmac/dwmac1000_core.c
drivers/net/stmmac/stmmac_ethtool.c

index 6ae4c3f4c63c712031b4ca67549a8d8f631ed9fd..f20455cbfbbcfb64daa8d021952fe27adbbcbad7 100644 (file)
@@ -178,10 +178,11 @@ static void dwmac1000_pmt(void __iomem *ioaddr, unsigned long mode)
 {
        unsigned int pmt = 0;
 
-       if (mode == WAKE_MAGIC) {
+       if (mode & WAKE_MAGIC) {
                CHIP_DBG(KERN_DEBUG "GMAC: WOL Magic frame\n");
                pmt |= power_down | magic_pkt_en;
-       } else if (mode == WAKE_UCAST) {
+       }
+       if (mode & WAKE_UCAST) {
                CHIP_DBG(KERN_DEBUG "GMAC: WOL on global unicast\n");
                pmt |= global_unicast;
        }
index 156a805c6c2381e06a2d8b050034112142dce44b..0e61ac8707cbef1d5c75f82258f65d3d4cb14094 100644 (file)
@@ -308,7 +308,7 @@ static void stmmac_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
 
        spin_lock_irq(&priv->lock);
        if (device_can_wakeup(priv->device)) {
-               wol->supported = WAKE_MAGIC;
+               wol->supported = WAKE_MAGIC | WAKE_UCAST;
                wol->wolopts = priv->wolopts;
        }
        spin_unlock_irq(&priv->lock);
@@ -317,7 +317,7 @@ static void stmmac_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
 static int stmmac_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
 {
        struct stmmac_priv *priv = netdev_priv(dev);
-       u32 support = WAKE_MAGIC;
+       u32 support = WAKE_MAGIC | WAKE_UCAST;
 
        if (!device_can_wakeup(priv->device))
                return -EINVAL;