ixgbe: add WOL support for SFP+ subdevice
authorDon Skidmore <donald.c.skidmore@intel.com>
Fri, 3 Dec 2010 03:32:13 +0000 (03:32 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 3 Dec 2010 17:36:46 +0000 (09:36 -0800)
This patch will add wake on LAN support to the dev/sub_dev 10FB 11A9.  This
will also include ixgbe ethtool support for this device.

Signed-off-by: Don Skidmore <donald.c.skidmore@intel.com>
Tested-by: Stephen Ko <stephen.s.ko@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ixgbe/ixgbe_ethtool.c
drivers/net/ixgbe/ixgbe_main.c
drivers/net/ixgbe/ixgbe_type.h

index f9b58394fbb6a90afc149b54e9098c6aad7ca4f4..ef3f9105a05db8e2a9f6ea63487fd52f72aca7c3 100644 (file)
@@ -1879,7 +1879,16 @@ static int ixgbe_wol_exclusion(struct ixgbe_adapter *adapter,
        struct ixgbe_hw *hw = &adapter->hw;
        int retval = 1;
 
+       /* WOL not supported except for the following */
        switch(hw->device_id) {
+       case IXGBE_DEV_ID_82599_SFP:
+               /* Only this subdevice supports WOL */
+               if (hw->subsystem_device_id != IXGBE_SUBDEV_ID_82599_SFP) {
+                       wol->supported = 0;
+                       break;
+               }
+               retval = 0;
+               break;
        case IXGBE_DEV_ID_82599_COMBO_BACKPLANE:
                /* All except this subdevice support WOL */
                if (hw->subsystem_device_id ==
@@ -1887,6 +1896,8 @@ static int ixgbe_wol_exclusion(struct ixgbe_adapter *adapter,
                        wol->supported = 0;
                        break;
                }
+               retval = 0;
+               break;
        case IXGBE_DEV_ID_82599_KX4:
                retval = 0;
                break;
index 5861ece70207f5f90ae1ffdbd2673eccdf9eb52c..5f4c93d40a459785588ccebcc290431eabf7f65d 100644 (file)
@@ -7223,13 +7223,18 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev,
                goto err_sw_init;
 
        switch (pdev->device) {
+       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);
+               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 = 0;
-                       break;
-               }
+               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);
+               break;
        case IXGBE_DEV_ID_82599_KX4:
                adapter->wol = (IXGBE_WUFC_MAG | IXGBE_WUFC_EX |
                                IXGBE_WUFC_MC | IXGBE_WUFC_BC);
index 42c607339a6210d6faa9cfed5e83a115cc87bbe0..9557ae64f951df0b0b9edad47572d7a21e12ae80 100644 (file)
@@ -54,6 +54,7 @@
 #define IXGBE_DEV_ID_82599_T3_LOM        0x151C
 #define IXGBE_DEV_ID_82599_CX4           0x10F9
 #define IXGBE_DEV_ID_82599_SFP           0x10FB
+#define IXGBE_SUBDEV_ID_82599_SFP        0x11A9
 #define IXGBE_DEV_ID_82599_SFP_EM        0x1507
 #define IXGBE_DEV_ID_82599_XAUI_LOM      0x10FC
 #define IXGBE_DEV_ID_82599_COMBO_BACKPLANE 0x10F8