qlge: use ethtool set_phys_id
authorstephen hemminger <shemminger@vyatta.com>
Wed, 6 Apr 2011 13:47:50 +0000 (13:47 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 11 Apr 2011 20:22:34 +0000 (13:22 -0700)
This is a stab at replacing old ethtool phys_id with set_phys_id
on the Qlogic 10Gb driver. Compile tested only.

Not sure if set_led_cfg will flash continuously, or needs
to be replaced by ETHTOOL_ID_ON/ETHTOOL_ID_OFF

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/qlge/qlge_ethtool.c

index 8149cc9de4ca05a0bfaca39f396359eae1eac070..687754da2a9f75cc7f53dad3f53ba2c56f2caaf4 100644 (file)
@@ -412,31 +412,31 @@ static int ql_set_wol(struct net_device *ndev, struct ethtool_wolinfo *wol)
        return 0;
 }
 
-static int ql_phys_id(struct net_device *ndev, u32 data)
+static int ql_set_phys_id(struct net_device *ndev,
+                         enum ethtool_phys_id_state state)
+
 {
        struct ql_adapter *qdev = netdev_priv(ndev);
-       u32 led_reg, i;
-       int status;
 
-       /* Save the current LED settings */
-       status = ql_mb_get_led_cfg(qdev);
-       if (status)
-               return status;
-       led_reg = qdev->led_config;
+       switch (state) {
+       case ETHTOOL_ID_ACTIVE:
+               /* Save the current LED settings */
+               if (ql_mb_get_led_cfg(qdev))
+                       return -EIO;
 
-       /* Start blinking the led */
-       if (!data || data > 300)
-               data = 300;
-
-       for (i = 0; i < (data * 10); i++)
+               /* Start blinking */
                ql_mb_set_led_cfg(qdev, QL_LED_BLINK);
+               return 0;
 
-       /* Restore LED settings */
-       status = ql_mb_set_led_cfg(qdev, led_reg);
-       if (status)
-               return status;
+       case ETHTOOL_ID_INACTIVE:
+               /* Restore LED settings */
+               if (ql_mb_set_led_cfg(qdev, qdev->led_config))
+                       return -EIO;
+               return 0;
 
-       return 0;
+       default:
+               return -EINVAL;
+       }
 }
 
 static int ql_start_loopback(struct ql_adapter *qdev)
@@ -703,7 +703,7 @@ const struct ethtool_ops qlge_ethtool_ops = {
        .get_msglevel = ql_get_msglevel,
        .set_msglevel = ql_set_msglevel,
        .get_link = ethtool_op_get_link,
-       .phys_id                 = ql_phys_id,
+       .set_phys_id             = ql_set_phys_id,
        .self_test               = ql_self_test,
        .get_pauseparam          = ql_get_pauseparam,
        .set_pauseparam          = ql_set_pauseparam,