}
 }
 
-static int tg3_phys_id(struct net_device *dev, u32 data)
+static int tg3_set_phys_id(struct net_device *dev,
+                           enum ethtool_phys_id_state state)
 {
        struct tg3 *tp = netdev_priv(dev);
-       int i;
 
        if (!netif_running(tp->dev))
                return -EAGAIN;
 
-       if (data == 0)
-               data = UINT_MAX / 2;
+       switch (state) {
+       case ETHTOOL_ID_ACTIVE:
+               return -EINVAL;
 
-       for (i = 0; i < (data * 2); i++) {
-               if ((i % 2) == 0)
-                       tw32(MAC_LED_CTRL, LED_CTRL_LNKLED_OVERRIDE |
-                                          LED_CTRL_1000MBPS_ON |
-                                          LED_CTRL_100MBPS_ON |
-                                          LED_CTRL_10MBPS_ON |
-                                          LED_CTRL_TRAFFIC_OVERRIDE |
-                                          LED_CTRL_TRAFFIC_BLINK |
-                                          LED_CTRL_TRAFFIC_LED);
+       case ETHTOOL_ID_ON:
+               tw32(MAC_LED_CTRL, LED_CTRL_LNKLED_OVERRIDE |
+                    LED_CTRL_1000MBPS_ON |
+                    LED_CTRL_100MBPS_ON |
+                    LED_CTRL_10MBPS_ON |
+                    LED_CTRL_TRAFFIC_OVERRIDE |
+                    LED_CTRL_TRAFFIC_BLINK |
+                    LED_CTRL_TRAFFIC_LED);
+               break;
 
-               else
-                       tw32(MAC_LED_CTRL, LED_CTRL_LNKLED_OVERRIDE |
-                                          LED_CTRL_TRAFFIC_OVERRIDE);
+       case ETHTOOL_ID_OFF:
+               tw32(MAC_LED_CTRL, LED_CTRL_LNKLED_OVERRIDE |
+                    LED_CTRL_TRAFFIC_OVERRIDE);
+               break;
 
-               if (msleep_interruptible(500))
-                       break;
+       case ETHTOOL_ID_INACTIVE:
+               tw32(MAC_LED_CTRL, tp->led_ctrl);
+               break;
        }
-       tw32(MAC_LED_CTRL, tp->led_ctrl);
+
        return 0;
 }
 
        .set_tso                = tg3_set_tso,
        .self_test              = tg3_self_test,
        .get_strings            = tg3_get_strings,
-       .phys_id                = tg3_phys_id,
+       .set_phys_id            = tg3_set_phys_id,
        .get_ethtool_stats      = tg3_get_ethtool_stats,
        .get_coalesce           = tg3_get_coalesce,
        .set_coalesce           = tg3_set_coalesce,