|
@@ -2003,25 +2003,30 @@ static int ixgbe_nway_reset(struct net_device *netdev)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int ixgbe_phys_id(struct net_device *netdev, u32 data)
|
|
|
|
|
|
+static int ixgbe_set_phys_id(struct net_device *netdev,
|
|
|
|
+ enum ethtool_phys_id_state state)
|
|
{
|
|
{
|
|
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
|
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
|
struct ixgbe_hw *hw = &adapter->hw;
|
|
struct ixgbe_hw *hw = &adapter->hw;
|
|
- u32 led_reg = IXGBE_READ_REG(hw, IXGBE_LEDCTL);
|
|
|
|
- u32 i;
|
|
|
|
|
|
|
|
- if (!data || data > 300)
|
|
|
|
- data = 300;
|
|
|
|
|
|
+ switch (state) {
|
|
|
|
+ case ETHTOOL_ID_ACTIVE:
|
|
|
|
+ adapter->led_reg = IXGBE_READ_REG(hw, IXGBE_LEDCTL);
|
|
|
|
+ return 2;
|
|
|
|
|
|
- for (i = 0; i < (data * 1000); i += 400) {
|
|
|
|
|
|
+ case ETHTOOL_ID_ON:
|
|
hw->mac.ops.led_on(hw, IXGBE_LED_ON);
|
|
hw->mac.ops.led_on(hw, IXGBE_LED_ON);
|
|
- msleep_interruptible(200);
|
|
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ case ETHTOOL_ID_OFF:
|
|
hw->mac.ops.led_off(hw, IXGBE_LED_ON);
|
|
hw->mac.ops.led_off(hw, IXGBE_LED_ON);
|
|
- msleep_interruptible(200);
|
|
|
|
- }
|
|
|
|
|
|
+ break;
|
|
|
|
|
|
- /* Restore LED settings */
|
|
|
|
- IXGBE_WRITE_REG(&adapter->hw, IXGBE_LEDCTL, led_reg);
|
|
|
|
|
|
+ case ETHTOOL_ID_INACTIVE:
|
|
|
|
+ /* Restore LED settings */
|
|
|
|
+ IXGBE_WRITE_REG(&adapter->hw, IXGBE_LEDCTL, adapter->led_reg);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
@@ -2469,7 +2474,7 @@ static const struct ethtool_ops ixgbe_ethtool_ops = {
|
|
.set_tso = ixgbe_set_tso,
|
|
.set_tso = ixgbe_set_tso,
|
|
.self_test = ixgbe_diag_test,
|
|
.self_test = ixgbe_diag_test,
|
|
.get_strings = ixgbe_get_strings,
|
|
.get_strings = ixgbe_get_strings,
|
|
- .phys_id = ixgbe_phys_id,
|
|
|
|
|
|
+ .set_phys_id = ixgbe_set_phys_id,
|
|
.get_sset_count = ixgbe_get_sset_count,
|
|
.get_sset_count = ixgbe_get_sset_count,
|
|
.get_ethtool_stats = ixgbe_get_ethtool_stats,
|
|
.get_ethtool_stats = ixgbe_get_ethtool_stats,
|
|
.get_coalesce = ixgbe_get_coalesce,
|
|
.get_coalesce = ixgbe_get_coalesce,
|