qlcnic: Enable LED test support for 83xx adapter
o Add support for LED test on 83xx series adapters Signed-off-by: Himanshu Madhani <himanshu.madhani@qlogic.com> Signed-off-by: Shahed Shaikh <shahed.shaikh@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
a96227e66f
commit
d16951d94a
|
@ -1432,6 +1432,51 @@ mbx_err:
|
|||
}
|
||||
}
|
||||
|
||||
int qlcnic_83xx_set_led(struct net_device *netdev,
|
||||
enum ethtool_phys_id_state state)
|
||||
{
|
||||
struct qlcnic_adapter *adapter = netdev_priv(netdev);
|
||||
int err = -EIO, active = 1;
|
||||
|
||||
if (adapter->ahw->op_mode == QLCNIC_NON_PRIV_FUNC) {
|
||||
netdev_warn(netdev,
|
||||
"LED test is not supported in non-privileged mode\n");
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
switch (state) {
|
||||
case ETHTOOL_ID_ACTIVE:
|
||||
if (test_and_set_bit(__QLCNIC_LED_ENABLE, &adapter->state))
|
||||
return -EBUSY;
|
||||
|
||||
if (test_bit(__QLCNIC_RESETTING, &adapter->state))
|
||||
break;
|
||||
|
||||
err = qlcnic_83xx_config_led(adapter, active, 0);
|
||||
if (err)
|
||||
netdev_err(netdev, "Failed to set LED blink state\n");
|
||||
break;
|
||||
case ETHTOOL_ID_INACTIVE:
|
||||
active = 0;
|
||||
|
||||
if (test_bit(__QLCNIC_RESETTING, &adapter->state))
|
||||
break;
|
||||
|
||||
err = qlcnic_83xx_config_led(adapter, active, 0);
|
||||
if (err)
|
||||
netdev_err(netdev, "Failed to reset LED blink state\n");
|
||||
break;
|
||||
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (!active || err)
|
||||
clear_bit(__QLCNIC_LED_ENABLE, &adapter->state);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
void qlcnic_83xx_register_nic_idc_func(struct qlcnic_adapter *adapter,
|
||||
int enable)
|
||||
{
|
||||
|
|
|
@ -449,5 +449,6 @@ int qlcnic_83xx_get_regs_len(struct qlcnic_adapter *);
|
|||
int qlcnic_83xx_get_registers(struct qlcnic_adapter *, u32 *);
|
||||
int qlcnic_83xx_loopback_test(struct net_device *, u8);
|
||||
int qlcnic_83xx_interrupt_test(struct net_device *);
|
||||
int qlcnic_83xx_set_led(struct net_device *, enum ethtool_phys_id_state);
|
||||
int qlcnic_83xx_flash_test(struct qlcnic_adapter *);
|
||||
#endif
|
||||
|
|
|
@ -1176,7 +1176,8 @@ static int qlcnic_set_led(struct net_device *dev,
|
|||
int err = -EIO, active = 1;
|
||||
|
||||
if (qlcnic_83xx_check(adapter))
|
||||
return -EOPNOTSUPP;
|
||||
return qlcnic_83xx_set_led(dev, state);
|
||||
|
||||
if (adapter->ahw->op_mode == QLCNIC_NON_PRIV_FUNC) {
|
||||
netdev_warn(dev, "LED test not supported for non "
|
||||
"privilege function\n");
|
||||
|
|
Loading…
Reference in New Issue