ixgbe: only enable WoL for magic packet by default
authorAndy Gospodarek <andy@greyhouse.net>
Sat, 16 Jul 2011 07:31:33 +0000 (07:31 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Fri, 22 Jul 2011 05:57:15 +0000 (22:57 -0700)
Martin Wilck <martin.wilck@ts.fujitsu.com> reported that systems using
the ixgbe-driver that were capable of WoL were rebooting almost as soon
as they were shut down.  This is because the default WoL settings
enabled magic packet, broadcast, unicast, and multicast.

Other Intel devices seem to use the stored eeprom value for initial WoL
capabilities.  The 82578DM (e1000e) and 82576 (igb) the devices I looked
at had only the magic packet enabled in the eeprom, so that seems
appropriate on ixgbe-based devices as well.  I set the WoL options on my
82578DM to be the same default as the ixgbe devices (umbg) and saw the
same as Martin -- almost as soon as my box shutdown, it booted again.

This patch changes the default to only be the magic packet.  This is the
same as the default for most Intel and non-Intel hardware currently
upstream.

Signed-off-by: Andy Gospodarek <andy@greyhouse.net>
CC: Martin Wilck <martin.wilck@ts.fujitsu.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ixgbe/ixgbe_main.c

index 358f6c9..c6fa9c7 100644 (file)
@@ -7515,18 +7515,15 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev,
        case IXGBE_DEV_ID_82599_SFP:
                /* Only this subdevice supports WOL */
                if (pdev->subsystem_device == IXGBE_SUBDEV_ID_82599_SFP)
-                       adapter->wol = (IXGBE_WUFC_MAG | IXGBE_WUFC_EX |
-                                       IXGBE_WUFC_MC | IXGBE_WUFC_BC);
+                       adapter->wol = IXGBE_WUFC_MAG;
                break;
        case IXGBE_DEV_ID_82599_COMBO_BACKPLANE:
                /* All except this subdevice support WOL */
                if (pdev->subsystem_device != IXGBE_SUBDEV_ID_82599_KX4_KR_MEZZ)
-                       adapter->wol = (IXGBE_WUFC_MAG | IXGBE_WUFC_EX |
-                                       IXGBE_WUFC_MC | IXGBE_WUFC_BC);
+                       adapter->wol = IXGBE_WUFC_MAG;
                break;
        case IXGBE_DEV_ID_82599_KX4:
-               adapter->wol = (IXGBE_WUFC_MAG | IXGBE_WUFC_EX |
-                               IXGBE_WUFC_MC | IXGBE_WUFC_BC);
+               adapter->wol = IXGBE_WUFC_MAG;
                break;
        default:
                adapter->wol = 0;