Commit a562a027 authored by Jakub Kicinski's avatar Jakub Kicinski

Merge branch '10GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue

Tony Nguyen says:

====================
Intel Wired LAN Driver Updates 2024-01-02 (ixgbe, i40e)

This series contains updates to ixgbe and i40e drivers.

Ovidiu Panait adds reporting of VF link state to ixgbe.

Jedrzej removes uses of IXGBE_ERR* codes to instead use standard error
codes.

Andrii modifies behavior of VF disable to properly shut down queues on
i40e.

Simon Horman removes, undesired, use of comma operator for i40e.

* '10GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue:
  i40e: Avoid unnecessary use of comma operator
  i40e: Fix VF disable behavior to block all traffic
  ixgbe: Refactor returning internal error codes
  ixgbe: Refactor overtemp event handling
  ixgbe: report link state for VF devices
====================

Link: https://lore.kernel.org/r/20240102222429.699129-1-anthony.l.nguyen@intel.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents 09f9d7a8 55f96e8b
...@@ -1911,7 +1911,7 @@ static int i40e_get_eeprom(struct net_device *netdev, ...@@ -1911,7 +1911,7 @@ static int i40e_get_eeprom(struct net_device *netdev,
len = eeprom->len - (I40E_NVM_SECTOR_SIZE * i); len = eeprom->len - (I40E_NVM_SECTOR_SIZE * i);
last = true; last = true;
} }
offset = eeprom->offset + (I40E_NVM_SECTOR_SIZE * i), offset = eeprom->offset + (I40E_NVM_SECTOR_SIZE * i);
ret_val = i40e_aq_read_nvm(hw, 0x0, offset, len, ret_val = i40e_aq_read_nvm(hw, 0x0, offset, len,
(u8 *)eeprom_buff + (I40E_NVM_SECTOR_SIZE * i), (u8 *)eeprom_buff + (I40E_NVM_SECTOR_SIZE * i),
last, NULL); last, NULL);
......
...@@ -2579,6 +2579,14 @@ static int i40e_vc_enable_queues_msg(struct i40e_vf *vf, u8 *msg) ...@@ -2579,6 +2579,14 @@ static int i40e_vc_enable_queues_msg(struct i40e_vf *vf, u8 *msg)
int aq_ret = 0; int aq_ret = 0;
int i; int i;
if (vf->is_disabled_from_host) {
aq_ret = -EPERM;
dev_info(&pf->pdev->dev,
"Admin has disabled VF %d, will not enable queues\n",
vf->vf_id);
goto error_param;
}
if (!test_bit(I40E_VF_STATE_ACTIVE, &vf->vf_states)) { if (!test_bit(I40E_VF_STATE_ACTIVE, &vf->vf_states)) {
aq_ret = -EINVAL; aq_ret = -EINVAL;
goto error_param; goto error_param;
...@@ -4705,9 +4713,12 @@ int i40e_ndo_set_vf_link_state(struct net_device *netdev, int vf_id, int link) ...@@ -4705,9 +4713,12 @@ int i40e_ndo_set_vf_link_state(struct net_device *netdev, int vf_id, int link)
struct i40e_link_status *ls = &pf->hw.phy.link_info; struct i40e_link_status *ls = &pf->hw.phy.link_info;
struct virtchnl_pf_event pfe; struct virtchnl_pf_event pfe;
struct i40e_hw *hw = &pf->hw; struct i40e_hw *hw = &pf->hw;
struct i40e_vsi *vsi;
unsigned long q_map;
struct i40e_vf *vf; struct i40e_vf *vf;
int abs_vf_id; int abs_vf_id;
int ret = 0; int ret = 0;
int tmp;
if (test_and_set_bit(__I40E_VIRTCHNL_OP_PENDING, pf->state)) { if (test_and_set_bit(__I40E_VIRTCHNL_OP_PENDING, pf->state)) {
dev_warn(&pf->pdev->dev, "Unable to configure VFs, other operation is pending.\n"); dev_warn(&pf->pdev->dev, "Unable to configure VFs, other operation is pending.\n");
...@@ -4730,17 +4741,38 @@ int i40e_ndo_set_vf_link_state(struct net_device *netdev, int vf_id, int link) ...@@ -4730,17 +4741,38 @@ int i40e_ndo_set_vf_link_state(struct net_device *netdev, int vf_id, int link)
switch (link) { switch (link) {
case IFLA_VF_LINK_STATE_AUTO: case IFLA_VF_LINK_STATE_AUTO:
vf->link_forced = false; vf->link_forced = false;
vf->is_disabled_from_host = false;
/* reset needed to reinit VF resources */
i40e_vc_reset_vf(vf, true);
i40e_set_vf_link_state(vf, &pfe, ls); i40e_set_vf_link_state(vf, &pfe, ls);
break; break;
case IFLA_VF_LINK_STATE_ENABLE: case IFLA_VF_LINK_STATE_ENABLE:
vf->link_forced = true; vf->link_forced = true;
vf->link_up = true; vf->link_up = true;
vf->is_disabled_from_host = false;
/* reset needed to reinit VF resources */
i40e_vc_reset_vf(vf, true);
i40e_set_vf_link_state(vf, &pfe, ls); i40e_set_vf_link_state(vf, &pfe, ls);
break; break;
case IFLA_VF_LINK_STATE_DISABLE: case IFLA_VF_LINK_STATE_DISABLE:
vf->link_forced = true; vf->link_forced = true;
vf->link_up = false; vf->link_up = false;
i40e_set_vf_link_state(vf, &pfe, ls); i40e_set_vf_link_state(vf, &pfe, ls);
vsi = pf->vsi[vf->lan_vsi_idx];
q_map = BIT(vsi->num_queue_pairs) - 1;
vf->is_disabled_from_host = true;
/* Try to stop both Tx&Rx rings even if one of the calls fails
* to ensure we stop the rings even in case of errors.
* If any of them returns with an error then the first
* error that occurred will be returned.
*/
tmp = i40e_ctrl_vf_tx_rings(vsi, q_map, false);
ret = i40e_ctrl_vf_rx_rings(vsi, q_map, false);
ret = tmp ? tmp : ret;
break; break;
default: default:
ret = -EINVAL; ret = -EINVAL;
......
...@@ -100,6 +100,7 @@ struct i40e_vf { ...@@ -100,6 +100,7 @@ struct i40e_vf {
bool link_forced; bool link_forced;
bool link_up; /* only valid if VF link is forced */ bool link_up; /* only valid if VF link is forced */
bool spoofchk; bool spoofchk;
bool is_disabled_from_host; /* PF ctrl of VF enable/disable */
u16 num_vlan; u16 num_vlan;
/* ADq related variables */ /* ADq related variables */
......
...@@ -123,14 +123,14 @@ static s32 ixgbe_init_phy_ops_82598(struct ixgbe_hw *hw) ...@@ -123,14 +123,14 @@ static s32 ixgbe_init_phy_ops_82598(struct ixgbe_hw *hw)
if (ret_val) if (ret_val)
return ret_val; return ret_val;
if (hw->phy.sfp_type == ixgbe_sfp_type_unknown) if (hw->phy.sfp_type == ixgbe_sfp_type_unknown)
return IXGBE_ERR_SFP_NOT_SUPPORTED; return -EOPNOTSUPP;
/* Check to see if SFP+ module is supported */ /* Check to see if SFP+ module is supported */
ret_val = ixgbe_get_sfp_init_sequence_offsets(hw, ret_val = ixgbe_get_sfp_init_sequence_offsets(hw,
&list_offset, &list_offset,
&data_offset); &data_offset);
if (ret_val) if (ret_val)
return IXGBE_ERR_SFP_NOT_SUPPORTED; return -EOPNOTSUPP;
break; break;
default: default:
break; break;
...@@ -213,7 +213,7 @@ static s32 ixgbe_get_link_capabilities_82598(struct ixgbe_hw *hw, ...@@ -213,7 +213,7 @@ static s32 ixgbe_get_link_capabilities_82598(struct ixgbe_hw *hw,
break; break;
default: default:
return IXGBE_ERR_LINK_SETUP; return -EIO;
} }
return 0; return 0;
...@@ -283,7 +283,7 @@ static s32 ixgbe_fc_enable_82598(struct ixgbe_hw *hw) ...@@ -283,7 +283,7 @@ static s32 ixgbe_fc_enable_82598(struct ixgbe_hw *hw)
/* Validate the water mark configuration */ /* Validate the water mark configuration */
if (!hw->fc.pause_time) if (!hw->fc.pause_time)
return IXGBE_ERR_INVALID_LINK_SETTINGS; return -EINVAL;
/* Low water mark of zero causes XOFF floods */ /* Low water mark of zero causes XOFF floods */
for (i = 0; i < MAX_TRAFFIC_CLASS; i++) { for (i = 0; i < MAX_TRAFFIC_CLASS; i++) {
...@@ -292,7 +292,7 @@ static s32 ixgbe_fc_enable_82598(struct ixgbe_hw *hw) ...@@ -292,7 +292,7 @@ static s32 ixgbe_fc_enable_82598(struct ixgbe_hw *hw)
if (!hw->fc.low_water[i] || if (!hw->fc.low_water[i] ||
hw->fc.low_water[i] >= hw->fc.high_water[i]) { hw->fc.low_water[i] >= hw->fc.high_water[i]) {
hw_dbg(hw, "Invalid water mark configuration\n"); hw_dbg(hw, "Invalid water mark configuration\n");
return IXGBE_ERR_INVALID_LINK_SETTINGS; return -EINVAL;
} }
} }
} }
...@@ -369,7 +369,7 @@ static s32 ixgbe_fc_enable_82598(struct ixgbe_hw *hw) ...@@ -369,7 +369,7 @@ static s32 ixgbe_fc_enable_82598(struct ixgbe_hw *hw)
break; break;
default: default:
hw_dbg(hw, "Flow control param set incorrectly\n"); hw_dbg(hw, "Flow control param set incorrectly\n");
return IXGBE_ERR_CONFIG; return -EIO;
} }
/* Set 802.3x based flow control settings. */ /* Set 802.3x based flow control settings. */
...@@ -438,7 +438,7 @@ static s32 ixgbe_start_mac_link_82598(struct ixgbe_hw *hw, ...@@ -438,7 +438,7 @@ static s32 ixgbe_start_mac_link_82598(struct ixgbe_hw *hw,
msleep(100); msleep(100);
} }
if (!(links_reg & IXGBE_LINKS_KX_AN_COMP)) { if (!(links_reg & IXGBE_LINKS_KX_AN_COMP)) {
status = IXGBE_ERR_AUTONEG_NOT_COMPLETE; status = -EIO;
hw_dbg(hw, "Autonegotiation did not complete.\n"); hw_dbg(hw, "Autonegotiation did not complete.\n");
} }
} }
...@@ -478,7 +478,7 @@ static s32 ixgbe_validate_link_ready(struct ixgbe_hw *hw) ...@@ -478,7 +478,7 @@ static s32 ixgbe_validate_link_ready(struct ixgbe_hw *hw)
if (timeout == IXGBE_VALIDATE_LINK_READY_TIMEOUT) { if (timeout == IXGBE_VALIDATE_LINK_READY_TIMEOUT) {
hw_dbg(hw, "Link was indicated but link is down\n"); hw_dbg(hw, "Link was indicated but link is down\n");
return IXGBE_ERR_LINK_SETUP; return -EIO;
} }
return 0; return 0;
...@@ -594,7 +594,7 @@ static s32 ixgbe_setup_mac_link_82598(struct ixgbe_hw *hw, ...@@ -594,7 +594,7 @@ static s32 ixgbe_setup_mac_link_82598(struct ixgbe_hw *hw,
speed &= link_capabilities; speed &= link_capabilities;
if (speed == IXGBE_LINK_SPEED_UNKNOWN) if (speed == IXGBE_LINK_SPEED_UNKNOWN)
return IXGBE_ERR_LINK_SETUP; return -EINVAL;
/* Set KX4/KX support according to speed requested */ /* Set KX4/KX support according to speed requested */
else if (link_mode == IXGBE_AUTOC_LMS_KX4_AN || else if (link_mode == IXGBE_AUTOC_LMS_KX4_AN ||
...@@ -701,9 +701,9 @@ static s32 ixgbe_reset_hw_82598(struct ixgbe_hw *hw) ...@@ -701,9 +701,9 @@ static s32 ixgbe_reset_hw_82598(struct ixgbe_hw *hw)
/* Init PHY and function pointers, perform SFP setup */ /* Init PHY and function pointers, perform SFP setup */
phy_status = hw->phy.ops.init(hw); phy_status = hw->phy.ops.init(hw);
if (phy_status == IXGBE_ERR_SFP_NOT_SUPPORTED) if (phy_status == -EOPNOTSUPP)
return phy_status; return phy_status;
if (phy_status == IXGBE_ERR_SFP_NOT_PRESENT) if (phy_status == -ENOENT)
goto mac_reset_top; goto mac_reset_top;
hw->phy.ops.reset(hw); hw->phy.ops.reset(hw);
...@@ -727,7 +727,7 @@ static s32 ixgbe_reset_hw_82598(struct ixgbe_hw *hw) ...@@ -727,7 +727,7 @@ static s32 ixgbe_reset_hw_82598(struct ixgbe_hw *hw)
udelay(1); udelay(1);
} }
if (ctrl & IXGBE_CTRL_RST) { if (ctrl & IXGBE_CTRL_RST) {
status = IXGBE_ERR_RESET_FAILED; status = -EIO;
hw_dbg(hw, "Reset polling failed to complete.\n"); hw_dbg(hw, "Reset polling failed to complete.\n");
} }
...@@ -789,7 +789,7 @@ static s32 ixgbe_set_vmdq_82598(struct ixgbe_hw *hw, u32 rar, u32 vmdq) ...@@ -789,7 +789,7 @@ static s32 ixgbe_set_vmdq_82598(struct ixgbe_hw *hw, u32 rar, u32 vmdq)
/* Make sure we are using a valid rar index range */ /* Make sure we are using a valid rar index range */
if (rar >= rar_entries) { if (rar >= rar_entries) {
hw_dbg(hw, "RAR index %d is out of range.\n", rar); hw_dbg(hw, "RAR index %d is out of range.\n", rar);
return IXGBE_ERR_INVALID_ARGUMENT; return -EINVAL;
} }
rar_high = IXGBE_READ_REG(hw, IXGBE_RAH(rar)); rar_high = IXGBE_READ_REG(hw, IXGBE_RAH(rar));
...@@ -814,7 +814,7 @@ static s32 ixgbe_clear_vmdq_82598(struct ixgbe_hw *hw, u32 rar, u32 vmdq) ...@@ -814,7 +814,7 @@ static s32 ixgbe_clear_vmdq_82598(struct ixgbe_hw *hw, u32 rar, u32 vmdq)
/* Make sure we are using a valid rar index range */ /* Make sure we are using a valid rar index range */
if (rar >= rar_entries) { if (rar >= rar_entries) {
hw_dbg(hw, "RAR index %d is out of range.\n", rar); hw_dbg(hw, "RAR index %d is out of range.\n", rar);
return IXGBE_ERR_INVALID_ARGUMENT; return -EINVAL;
} }
rar_high = IXGBE_READ_REG(hw, IXGBE_RAH(rar)); rar_high = IXGBE_READ_REG(hw, IXGBE_RAH(rar));
...@@ -845,7 +845,7 @@ static s32 ixgbe_set_vfta_82598(struct ixgbe_hw *hw, u32 vlan, u32 vind, ...@@ -845,7 +845,7 @@ static s32 ixgbe_set_vfta_82598(struct ixgbe_hw *hw, u32 vlan, u32 vind,
u32 vftabyte; u32 vftabyte;
if (vlan > 4095) if (vlan > 4095)
return IXGBE_ERR_PARAM; return -EINVAL;
/* Determine 32-bit word position in array */ /* Determine 32-bit word position in array */
regindex = (vlan >> 5) & 0x7F; /* upper seven bits */ regindex = (vlan >> 5) & 0x7F; /* upper seven bits */
...@@ -964,7 +964,7 @@ static s32 ixgbe_read_i2c_phy_82598(struct ixgbe_hw *hw, u8 dev_addr, ...@@ -964,7 +964,7 @@ static s32 ixgbe_read_i2c_phy_82598(struct ixgbe_hw *hw, u8 dev_addr,
gssr = IXGBE_GSSR_PHY0_SM; gssr = IXGBE_GSSR_PHY0_SM;
if (hw->mac.ops.acquire_swfw_sync(hw, gssr) != 0) if (hw->mac.ops.acquire_swfw_sync(hw, gssr) != 0)
return IXGBE_ERR_SWFW_SYNC; return -EBUSY;
if (hw->phy.type == ixgbe_phy_nl) { if (hw->phy.type == ixgbe_phy_nl) {
/* /*
...@@ -993,7 +993,7 @@ static s32 ixgbe_read_i2c_phy_82598(struct ixgbe_hw *hw, u8 dev_addr, ...@@ -993,7 +993,7 @@ static s32 ixgbe_read_i2c_phy_82598(struct ixgbe_hw *hw, u8 dev_addr,
if (sfp_stat != IXGBE_I2C_EEPROM_STATUS_PASS) { if (sfp_stat != IXGBE_I2C_EEPROM_STATUS_PASS) {
hw_dbg(hw, "EEPROM read did not pass.\n"); hw_dbg(hw, "EEPROM read did not pass.\n");
status = IXGBE_ERR_SFP_NOT_PRESENT; status = -ENOENT;
goto out; goto out;
} }
...@@ -1003,7 +1003,7 @@ static s32 ixgbe_read_i2c_phy_82598(struct ixgbe_hw *hw, u8 dev_addr, ...@@ -1003,7 +1003,7 @@ static s32 ixgbe_read_i2c_phy_82598(struct ixgbe_hw *hw, u8 dev_addr,
*eeprom_data = (u8)(sfp_data >> 8); *eeprom_data = (u8)(sfp_data >> 8);
} else { } else {
status = IXGBE_ERR_PHY; status = -EIO;
} }
out: out:
......
...@@ -117,7 +117,7 @@ static s32 ixgbe_setup_sfp_modules_82599(struct ixgbe_hw *hw) ...@@ -117,7 +117,7 @@ static s32 ixgbe_setup_sfp_modules_82599(struct ixgbe_hw *hw)
ret_val = hw->mac.ops.acquire_swfw_sync(hw, ret_val = hw->mac.ops.acquire_swfw_sync(hw,
IXGBE_GSSR_MAC_CSR_SM); IXGBE_GSSR_MAC_CSR_SM);
if (ret_val) if (ret_val)
return IXGBE_ERR_SWFW_SYNC; return -EBUSY;
if (hw->eeprom.ops.read(hw, ++data_offset, &data_value)) if (hw->eeprom.ops.read(hw, ++data_offset, &data_value))
goto setup_sfp_err; goto setup_sfp_err;
...@@ -144,7 +144,7 @@ static s32 ixgbe_setup_sfp_modules_82599(struct ixgbe_hw *hw) ...@@ -144,7 +144,7 @@ static s32 ixgbe_setup_sfp_modules_82599(struct ixgbe_hw *hw)
if (ret_val) { if (ret_val) {
hw_dbg(hw, " sfp module setup not complete\n"); hw_dbg(hw, " sfp module setup not complete\n");
return IXGBE_ERR_SFP_SETUP_NOT_COMPLETE; return -EIO;
} }
} }
...@@ -159,7 +159,7 @@ static s32 ixgbe_setup_sfp_modules_82599(struct ixgbe_hw *hw) ...@@ -159,7 +159,7 @@ static s32 ixgbe_setup_sfp_modules_82599(struct ixgbe_hw *hw)
usleep_range(hw->eeprom.semaphore_delay * 1000, usleep_range(hw->eeprom.semaphore_delay * 1000,
hw->eeprom.semaphore_delay * 2000); hw->eeprom.semaphore_delay * 2000);
hw_err(hw, "eeprom read at offset %d failed\n", data_offset); hw_err(hw, "eeprom read at offset %d failed\n", data_offset);
return IXGBE_ERR_SFP_SETUP_NOT_COMPLETE; return -EIO;
} }
/** /**
...@@ -184,7 +184,7 @@ static s32 prot_autoc_read_82599(struct ixgbe_hw *hw, bool *locked, ...@@ -184,7 +184,7 @@ static s32 prot_autoc_read_82599(struct ixgbe_hw *hw, bool *locked,
ret_val = hw->mac.ops.acquire_swfw_sync(hw, ret_val = hw->mac.ops.acquire_swfw_sync(hw,
IXGBE_GSSR_MAC_CSR_SM); IXGBE_GSSR_MAC_CSR_SM);
if (ret_val) if (ret_val)
return IXGBE_ERR_SWFW_SYNC; return -EBUSY;
*locked = true; *locked = true;
} }
...@@ -219,7 +219,7 @@ static s32 prot_autoc_write_82599(struct ixgbe_hw *hw, u32 autoc, bool locked) ...@@ -219,7 +219,7 @@ static s32 prot_autoc_write_82599(struct ixgbe_hw *hw, u32 autoc, bool locked)
ret_val = hw->mac.ops.acquire_swfw_sync(hw, ret_val = hw->mac.ops.acquire_swfw_sync(hw,
IXGBE_GSSR_MAC_CSR_SM); IXGBE_GSSR_MAC_CSR_SM);
if (ret_val) if (ret_val)
return IXGBE_ERR_SWFW_SYNC; return -EBUSY;
locked = true; locked = true;
} }
...@@ -400,7 +400,7 @@ static s32 ixgbe_get_link_capabilities_82599(struct ixgbe_hw *hw, ...@@ -400,7 +400,7 @@ static s32 ixgbe_get_link_capabilities_82599(struct ixgbe_hw *hw,
break; break;
default: default:
return IXGBE_ERR_LINK_SETUP; return -EIO;
} }
if (hw->phy.multispeed_fiber) { if (hw->phy.multispeed_fiber) {
...@@ -541,7 +541,7 @@ static s32 ixgbe_start_mac_link_82599(struct ixgbe_hw *hw, ...@@ -541,7 +541,7 @@ static s32 ixgbe_start_mac_link_82599(struct ixgbe_hw *hw,
msleep(100); msleep(100);
} }
if (!(links_reg & IXGBE_LINKS_KX_AN_COMP)) { if (!(links_reg & IXGBE_LINKS_KX_AN_COMP)) {
status = IXGBE_ERR_AUTONEG_NOT_COMPLETE; status = -EIO;
hw_dbg(hw, "Autoneg did not complete.\n"); hw_dbg(hw, "Autoneg did not complete.\n");
} }
} }
...@@ -794,7 +794,7 @@ static s32 ixgbe_setup_mac_link_82599(struct ixgbe_hw *hw, ...@@ -794,7 +794,7 @@ static s32 ixgbe_setup_mac_link_82599(struct ixgbe_hw *hw,
speed &= link_capabilities; speed &= link_capabilities;
if (speed == IXGBE_LINK_SPEED_UNKNOWN) if (speed == IXGBE_LINK_SPEED_UNKNOWN)
return IXGBE_ERR_LINK_SETUP; return -EINVAL;
/* Use stored value (EEPROM defaults) of AUTOC to find KR/KX4 support*/ /* Use stored value (EEPROM defaults) of AUTOC to find KR/KX4 support*/
if (hw->mac.orig_link_settings_stored) if (hw->mac.orig_link_settings_stored)
...@@ -861,8 +861,7 @@ static s32 ixgbe_setup_mac_link_82599(struct ixgbe_hw *hw, ...@@ -861,8 +861,7 @@ static s32 ixgbe_setup_mac_link_82599(struct ixgbe_hw *hw,
msleep(100); msleep(100);
} }
if (!(links_reg & IXGBE_LINKS_KX_AN_COMP)) { if (!(links_reg & IXGBE_LINKS_KX_AN_COMP)) {
status = status = -EIO;
IXGBE_ERR_AUTONEG_NOT_COMPLETE;
hw_dbg(hw, "Autoneg did not complete.\n"); hw_dbg(hw, "Autoneg did not complete.\n");
} }
} }
...@@ -927,7 +926,7 @@ static s32 ixgbe_reset_hw_82599(struct ixgbe_hw *hw) ...@@ -927,7 +926,7 @@ static s32 ixgbe_reset_hw_82599(struct ixgbe_hw *hw)
/* Identify PHY and related function pointers */ /* Identify PHY and related function pointers */
status = hw->phy.ops.init(hw); status = hw->phy.ops.init(hw);
if (status == IXGBE_ERR_SFP_NOT_SUPPORTED) if (status == -EOPNOTSUPP)
return status; return status;
/* Setup SFP module if there is one present. */ /* Setup SFP module if there is one present. */
...@@ -936,7 +935,7 @@ static s32 ixgbe_reset_hw_82599(struct ixgbe_hw *hw) ...@@ -936,7 +935,7 @@ static s32 ixgbe_reset_hw_82599(struct ixgbe_hw *hw)
hw->phy.sfp_setup_needed = false; hw->phy.sfp_setup_needed = false;
} }
if (status == IXGBE_ERR_SFP_NOT_SUPPORTED) if (status == -EOPNOTSUPP)
return status; return status;
/* Reset PHY */ /* Reset PHY */
...@@ -974,7 +973,7 @@ static s32 ixgbe_reset_hw_82599(struct ixgbe_hw *hw) ...@@ -974,7 +973,7 @@ static s32 ixgbe_reset_hw_82599(struct ixgbe_hw *hw)
} }
if (ctrl & IXGBE_CTRL_RST_MASK) { if (ctrl & IXGBE_CTRL_RST_MASK) {
status = IXGBE_ERR_RESET_FAILED; status = -EIO;
hw_dbg(hw, "Reset polling failed to complete.\n"); hw_dbg(hw, "Reset polling failed to complete.\n");
} }
...@@ -1093,7 +1092,7 @@ static s32 ixgbe_fdir_check_cmd_complete(struct ixgbe_hw *hw, u32 *fdircmd) ...@@ -1093,7 +1092,7 @@ static s32 ixgbe_fdir_check_cmd_complete(struct ixgbe_hw *hw, u32 *fdircmd)
udelay(10); udelay(10);
} }
return IXGBE_ERR_FDIR_CMD_INCOMPLETE; return -EIO;
} }
/** /**
...@@ -1155,7 +1154,7 @@ s32 ixgbe_reinit_fdir_tables_82599(struct ixgbe_hw *hw) ...@@ -1155,7 +1154,7 @@ s32 ixgbe_reinit_fdir_tables_82599(struct ixgbe_hw *hw)
} }
if (i >= IXGBE_FDIR_INIT_DONE_POLL) { if (i >= IXGBE_FDIR_INIT_DONE_POLL) {
hw_dbg(hw, "Flow Director Signature poll time exceeded!\n"); hw_dbg(hw, "Flow Director Signature poll time exceeded!\n");
return IXGBE_ERR_FDIR_REINIT_FAILED; return -EIO;
} }
/* Clear FDIR statistics registers (read to clear) */ /* Clear FDIR statistics registers (read to clear) */
...@@ -1387,7 +1386,7 @@ s32 ixgbe_fdir_add_signature_filter_82599(struct ixgbe_hw *hw, ...@@ -1387,7 +1386,7 @@ s32 ixgbe_fdir_add_signature_filter_82599(struct ixgbe_hw *hw,
break; break;
default: default:
hw_dbg(hw, " Error on flow type input\n"); hw_dbg(hw, " Error on flow type input\n");
return IXGBE_ERR_CONFIG; return -EIO;
} }
/* configure FDIRCMD register */ /* configure FDIRCMD register */
...@@ -1546,7 +1545,7 @@ s32 ixgbe_fdir_set_input_mask_82599(struct ixgbe_hw *hw, ...@@ -1546,7 +1545,7 @@ s32 ixgbe_fdir_set_input_mask_82599(struct ixgbe_hw *hw,
break; break;
default: default:
hw_dbg(hw, " Error on vm pool mask\n"); hw_dbg(hw, " Error on vm pool mask\n");
return IXGBE_ERR_CONFIG; return -EIO;
} }
switch (input_mask->formatted.flow_type & IXGBE_ATR_L4TYPE_MASK) { switch (input_mask->formatted.flow_type & IXGBE_ATR_L4TYPE_MASK) {
...@@ -1555,14 +1554,14 @@ s32 ixgbe_fdir_set_input_mask_82599(struct ixgbe_hw *hw, ...@@ -1555,14 +1554,14 @@ s32 ixgbe_fdir_set_input_mask_82599(struct ixgbe_hw *hw,
if (input_mask->formatted.dst_port || if (input_mask->formatted.dst_port ||
input_mask->formatted.src_port) { input_mask->formatted.src_port) {
hw_dbg(hw, " Error on src/dst port mask\n"); hw_dbg(hw, " Error on src/dst port mask\n");
return IXGBE_ERR_CONFIG; return -EIO;
} }
break; break;
case IXGBE_ATR_L4TYPE_MASK: case IXGBE_ATR_L4TYPE_MASK:
break; break;
default: default:
hw_dbg(hw, " Error on flow type mask\n"); hw_dbg(hw, " Error on flow type mask\n");
return IXGBE_ERR_CONFIG; return -EIO;
} }
switch (ntohs(input_mask->formatted.vlan_id) & 0xEFFF) { switch (ntohs(input_mask->formatted.vlan_id) & 0xEFFF) {
...@@ -1583,7 +1582,7 @@ s32 ixgbe_fdir_set_input_mask_82599(struct ixgbe_hw *hw, ...@@ -1583,7 +1582,7 @@ s32 ixgbe_fdir_set_input_mask_82599(struct ixgbe_hw *hw,
break; break;
default: default:
hw_dbg(hw, " Error on VLAN mask\n"); hw_dbg(hw, " Error on VLAN mask\n");
return IXGBE_ERR_CONFIG; return -EIO;
} }
switch ((__force u16)input_mask->formatted.flex_bytes & 0xFFFF) { switch ((__force u16)input_mask->formatted.flex_bytes & 0xFFFF) {
...@@ -1595,7 +1594,7 @@ s32 ixgbe_fdir_set_input_mask_82599(struct ixgbe_hw *hw, ...@@ -1595,7 +1594,7 @@ s32 ixgbe_fdir_set_input_mask_82599(struct ixgbe_hw *hw,
break; break;
default: default:
hw_dbg(hw, " Error on flexible byte mask\n"); hw_dbg(hw, " Error on flexible byte mask\n");
return IXGBE_ERR_CONFIG; return -EIO;
} }
/* Now mask VM pool and destination IPv6 - bits 5 and 2 */ /* Now mask VM pool and destination IPv6 - bits 5 and 2 */
...@@ -1824,7 +1823,7 @@ static s32 ixgbe_identify_phy_82599(struct ixgbe_hw *hw) ...@@ -1824,7 +1823,7 @@ static s32 ixgbe_identify_phy_82599(struct ixgbe_hw *hw)
/* Return error if SFP module has been detected but is not supported */ /* Return error if SFP module has been detected but is not supported */
if (hw->phy.type == ixgbe_phy_sfp_unsupported) if (hw->phy.type == ixgbe_phy_sfp_unsupported)
return IXGBE_ERR_SFP_NOT_SUPPORTED; return -EOPNOTSUPP;
return status; return status;
} }
...@@ -1863,13 +1862,13 @@ static s32 ixgbe_enable_rx_dma_82599(struct ixgbe_hw *hw, u32 regval) ...@@ -1863,13 +1862,13 @@ static s32 ixgbe_enable_rx_dma_82599(struct ixgbe_hw *hw, u32 regval)
* Verifies that installed the firmware version is 0.6 or higher * Verifies that installed the firmware version is 0.6 or higher
* for SFI devices. All 82599 SFI devices should have version 0.6 or higher. * for SFI devices. All 82599 SFI devices should have version 0.6 or higher.
* *
* Returns IXGBE_ERR_EEPROM_VERSION if the FW is not present or * Return: -EACCES if the FW is not present or if the FW version is
* if the FW version is not supported. * not supported.
**/ **/
static s32 ixgbe_verify_fw_version_82599(struct ixgbe_hw *hw) static s32 ixgbe_verify_fw_version_82599(struct ixgbe_hw *hw)
{ {
s32 status = IXGBE_ERR_EEPROM_VERSION;
u16 fw_offset, fw_ptp_cfg_offset; u16 fw_offset, fw_ptp_cfg_offset;
s32 status = -EACCES;
u16 offset; u16 offset;
u16 fw_version = 0; u16 fw_version = 0;
...@@ -1883,7 +1882,7 @@ static s32 ixgbe_verify_fw_version_82599(struct ixgbe_hw *hw) ...@@ -1883,7 +1882,7 @@ static s32 ixgbe_verify_fw_version_82599(struct ixgbe_hw *hw)
goto fw_version_err; goto fw_version_err;
if (fw_offset == 0 || fw_offset == 0xFFFF) if (fw_offset == 0 || fw_offset == 0xFFFF)
return IXGBE_ERR_EEPROM_VERSION; return -EACCES;
/* get the offset to the Pass Through Patch Configuration block */ /* get the offset to the Pass Through Patch Configuration block */
offset = fw_offset + IXGBE_FW_PASSTHROUGH_PATCH_CONFIG_PTR; offset = fw_offset + IXGBE_FW_PASSTHROUGH_PATCH_CONFIG_PTR;
...@@ -1891,7 +1890,7 @@ static s32 ixgbe_verify_fw_version_82599(struct ixgbe_hw *hw) ...@@ -1891,7 +1890,7 @@ static s32 ixgbe_verify_fw_version_82599(struct ixgbe_hw *hw)
goto fw_version_err; goto fw_version_err;
if (fw_ptp_cfg_offset == 0 || fw_ptp_cfg_offset == 0xFFFF) if (fw_ptp_cfg_offset == 0 || fw_ptp_cfg_offset == 0xFFFF)
return IXGBE_ERR_EEPROM_VERSION; return -EACCES;
/* get the firmware version */ /* get the firmware version */
offset = fw_ptp_cfg_offset + IXGBE_FW_PATCH_VERSION_4; offset = fw_ptp_cfg_offset + IXGBE_FW_PATCH_VERSION_4;
...@@ -1905,7 +1904,7 @@ static s32 ixgbe_verify_fw_version_82599(struct ixgbe_hw *hw) ...@@ -1905,7 +1904,7 @@ static s32 ixgbe_verify_fw_version_82599(struct ixgbe_hw *hw)
fw_version_err: fw_version_err:
hw_err(hw, "eeprom read at offset %d failed\n", offset); hw_err(hw, "eeprom read at offset %d failed\n", offset);
return IXGBE_ERR_EEPROM_VERSION; return -EACCES;
} }
/** /**
...@@ -2038,7 +2037,7 @@ static s32 ixgbe_reset_pipeline_82599(struct ixgbe_hw *hw) ...@@ -2038,7 +2037,7 @@ static s32 ixgbe_reset_pipeline_82599(struct ixgbe_hw *hw)
if (!(anlp1_reg & IXGBE_ANLP1_AN_STATE_MASK)) { if (!(anlp1_reg & IXGBE_ANLP1_AN_STATE_MASK)) {
hw_dbg(hw, "auto negotiation not completed\n"); hw_dbg(hw, "auto negotiation not completed\n");
ret_val = IXGBE_ERR_RESET_FAILED; ret_val = -EIO;
goto reset_pipeline_out; goto reset_pipeline_out;
} }
...@@ -2087,7 +2086,7 @@ static s32 ixgbe_read_i2c_byte_82599(struct ixgbe_hw *hw, u8 byte_offset, ...@@ -2087,7 +2086,7 @@ static s32 ixgbe_read_i2c_byte_82599(struct ixgbe_hw *hw, u8 byte_offset,
if (!timeout) { if (!timeout) {
hw_dbg(hw, "Driver can't access resource, acquiring I2C bus timeout.\n"); hw_dbg(hw, "Driver can't access resource, acquiring I2C bus timeout.\n");
status = IXGBE_ERR_I2C; status = -EIO;
goto release_i2c_access; goto release_i2c_access;
} }
} }
...@@ -2141,7 +2140,7 @@ static s32 ixgbe_write_i2c_byte_82599(struct ixgbe_hw *hw, u8 byte_offset, ...@@ -2141,7 +2140,7 @@ static s32 ixgbe_write_i2c_byte_82599(struct ixgbe_hw *hw, u8 byte_offset,
if (!timeout) { if (!timeout) {
hw_dbg(hw, "Driver can't access resource, acquiring I2C bus timeout.\n"); hw_dbg(hw, "Driver can't access resource, acquiring I2C bus timeout.\n");
status = IXGBE_ERR_I2C; status = -EIO;
goto release_i2c_access; goto release_i2c_access;
} }
} }
......
...@@ -3372,7 +3372,7 @@ static int ixgbe_get_module_eeprom(struct net_device *dev, ...@@ -3372,7 +3372,7 @@ static int ixgbe_get_module_eeprom(struct net_device *dev,
{ {
struct ixgbe_adapter *adapter = netdev_priv(dev); struct ixgbe_adapter *adapter = netdev_priv(dev);
struct ixgbe_hw *hw = &adapter->hw; struct ixgbe_hw *hw = &adapter->hw;
s32 status = IXGBE_ERR_PHY_ADDR_INVALID; s32 status = -EFAULT;
u8 databyte = 0xFF; u8 databyte = 0xFF;
int i = 0; int i = 0;
......
...@@ -2756,7 +2756,6 @@ static void ixgbe_check_overtemp_subtask(struct ixgbe_adapter *adapter) ...@@ -2756,7 +2756,6 @@ static void ixgbe_check_overtemp_subtask(struct ixgbe_adapter *adapter)
{ {
struct ixgbe_hw *hw = &adapter->hw; struct ixgbe_hw *hw = &adapter->hw;
u32 eicr = adapter->interrupt_event; u32 eicr = adapter->interrupt_event;
s32 rc;
if (test_bit(__IXGBE_DOWN, &adapter->state)) if (test_bit(__IXGBE_DOWN, &adapter->state))
return; return;
...@@ -2790,14 +2789,13 @@ static void ixgbe_check_overtemp_subtask(struct ixgbe_adapter *adapter) ...@@ -2790,14 +2789,13 @@ static void ixgbe_check_overtemp_subtask(struct ixgbe_adapter *adapter)
} }
/* Check if this is not due to overtemp */ /* Check if this is not due to overtemp */
if (hw->phy.ops.check_overtemp(hw) != IXGBE_ERR_OVERTEMP) if (!hw->phy.ops.check_overtemp(hw))
return; return;
break; break;
case IXGBE_DEV_ID_X550EM_A_1G_T: case IXGBE_DEV_ID_X550EM_A_1G_T:
case IXGBE_DEV_ID_X550EM_A_1G_T_L: case IXGBE_DEV_ID_X550EM_A_1G_T_L:
rc = hw->phy.ops.check_overtemp(hw); if (!hw->phy.ops.check_overtemp(hw))
if (rc != IXGBE_ERR_OVERTEMP)
return; return;
break; break;
default: default:
...@@ -5512,7 +5510,7 @@ static int ixgbe_non_sfp_link_config(struct ixgbe_hw *hw) ...@@ -5512,7 +5510,7 @@ static int ixgbe_non_sfp_link_config(struct ixgbe_hw *hw)
{ {
u32 speed; u32 speed;
bool autoneg, link_up = false; bool autoneg, link_up = false;
int ret = IXGBE_ERR_LINK_SETUP; int ret = -EIO;
if (hw->mac.ops.check_link) if (hw->mac.ops.check_link)
ret = hw->mac.ops.check_link(hw, &speed, &link_up, false); ret = hw->mac.ops.check_link(hw, &speed, &link_up, false);
...@@ -5983,13 +5981,13 @@ void ixgbe_reset(struct ixgbe_adapter *adapter) ...@@ -5983,13 +5981,13 @@ void ixgbe_reset(struct ixgbe_adapter *adapter)
err = hw->mac.ops.init_hw(hw); err = hw->mac.ops.init_hw(hw);
switch (err) { switch (err) {
case 0: case 0:
case IXGBE_ERR_SFP_NOT_PRESENT: case -ENOENT:
case IXGBE_ERR_SFP_NOT_SUPPORTED: case -EOPNOTSUPP:
break; break;
case IXGBE_ERR_PRIMARY_REQUESTS_PENDING: case -EALREADY:
e_dev_err("primary disable timed out\n"); e_dev_err("primary disable timed out\n");
break; break;
case IXGBE_ERR_EEPROM_VERSION: case -EACCES:
/* We are running on a pre-production device, log a warning */ /* We are running on a pre-production device, log a warning */
e_dev_warn("This device is a pre-production adapter/LOM. " e_dev_warn("This device is a pre-production adapter/LOM. "
"Please be aware there may be issues associated with " "Please be aware there may be issues associated with "
...@@ -7829,10 +7827,10 @@ static void ixgbe_sfp_detection_subtask(struct ixgbe_adapter *adapter) ...@@ -7829,10 +7827,10 @@ static void ixgbe_sfp_detection_subtask(struct ixgbe_adapter *adapter)
adapter->sfp_poll_time = jiffies + IXGBE_SFP_POLL_JIFFIES - 1; adapter->sfp_poll_time = jiffies + IXGBE_SFP_POLL_JIFFIES - 1;
err = hw->phy.ops.identify_sfp(hw); err = hw->phy.ops.identify_sfp(hw);
if (err == IXGBE_ERR_SFP_NOT_SUPPORTED) if (err == -EOPNOTSUPP)
goto sfp_out; goto sfp_out;
if (err == IXGBE_ERR_SFP_NOT_PRESENT) { if (err == -ENOENT) {
/* If no cable is present, then we need to reset /* If no cable is present, then we need to reset
* the next time we find a good cable. */ * the next time we find a good cable. */
adapter->flags2 |= IXGBE_FLAG2_SFP_NEEDS_RESET; adapter->flags2 |= IXGBE_FLAG2_SFP_NEEDS_RESET;
...@@ -7858,7 +7856,7 @@ static void ixgbe_sfp_detection_subtask(struct ixgbe_adapter *adapter) ...@@ -7858,7 +7856,7 @@ static void ixgbe_sfp_detection_subtask(struct ixgbe_adapter *adapter)
else else
err = hw->mac.ops.setup_sfp(hw); err = hw->mac.ops.setup_sfp(hw);
if (err == IXGBE_ERR_SFP_NOT_SUPPORTED) if (err == -EOPNOTSUPP)
goto sfp_out; goto sfp_out;
adapter->flags |= IXGBE_FLAG_NEED_LINK_CONFIG; adapter->flags |= IXGBE_FLAG_NEED_LINK_CONFIG;
...@@ -7867,8 +7865,8 @@ static void ixgbe_sfp_detection_subtask(struct ixgbe_adapter *adapter) ...@@ -7867,8 +7865,8 @@ static void ixgbe_sfp_detection_subtask(struct ixgbe_adapter *adapter)
sfp_out: sfp_out:
clear_bit(__IXGBE_IN_SFP_INIT, &adapter->state); clear_bit(__IXGBE_IN_SFP_INIT, &adapter->state);
if ((err == IXGBE_ERR_SFP_NOT_SUPPORTED) && if (err == -EOPNOTSUPP &&
(adapter->netdev->reg_state == NETREG_REGISTERED)) { adapter->netdev->reg_state == NETREG_REGISTERED) {
e_dev_err("failed to initialize because an unsupported " e_dev_err("failed to initialize because an unsupported "
"SFP+ module type was detected.\n"); "SFP+ module type was detected.\n");
e_dev_err("Reload the driver after installing a " e_dev_err("Reload the driver after installing a "
...@@ -7938,7 +7936,7 @@ static void ixgbe_service_timer(struct timer_list *t) ...@@ -7938,7 +7936,7 @@ static void ixgbe_service_timer(struct timer_list *t)
static void ixgbe_phy_interrupt_subtask(struct ixgbe_adapter *adapter) static void ixgbe_phy_interrupt_subtask(struct ixgbe_adapter *adapter)
{ {
struct ixgbe_hw *hw = &adapter->hw; struct ixgbe_hw *hw = &adapter->hw;
u32 status; bool overtemp;
if (!(adapter->flags2 & IXGBE_FLAG2_PHY_INTERRUPT)) if (!(adapter->flags2 & IXGBE_FLAG2_PHY_INTERRUPT))
return; return;
...@@ -7948,10 +7946,8 @@ static void ixgbe_phy_interrupt_subtask(struct ixgbe_adapter *adapter) ...@@ -7948,10 +7946,8 @@ static void ixgbe_phy_interrupt_subtask(struct ixgbe_adapter *adapter)
if (!hw->phy.ops.handle_lasi) if (!hw->phy.ops.handle_lasi)
return; return;
status = hw->phy.ops.handle_lasi(&adapter->hw); hw->phy.ops.handle_lasi(&adapter->hw, &overtemp);
if (status != IXGBE_ERR_OVERTEMP) if (overtemp)
return;
e_crit(drv, "%s\n", ixgbe_overheat_msg); e_crit(drv, "%s\n", ixgbe_overheat_msg);
} }
...@@ -10922,9 +10918,9 @@ static int ixgbe_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -10922,9 +10918,9 @@ static int ixgbe_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
err = hw->mac.ops.reset_hw(hw); err = hw->mac.ops.reset_hw(hw);
hw->phy.reset_if_overtemp = false; hw->phy.reset_if_overtemp = false;
ixgbe_set_eee_capable(adapter); ixgbe_set_eee_capable(adapter);
if (err == IXGBE_ERR_SFP_NOT_PRESENT) { if (err == -ENOENT) {
err = 0; err = 0;
} else if (err == IXGBE_ERR_SFP_NOT_SUPPORTED) { } else if (err == -EOPNOTSUPP) {
e_dev_err("failed to load because an unsupported SFP+ or QSFP module type was detected.\n"); e_dev_err("failed to load because an unsupported SFP+ or QSFP module type was detected.\n");
e_dev_err("Reload the driver after installing a supported module.\n"); e_dev_err("Reload the driver after installing a supported module.\n");
goto err_sw_init; goto err_sw_init;
...@@ -11143,7 +11139,7 @@ static int ixgbe_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -11143,7 +11139,7 @@ static int ixgbe_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
/* reset the hardware with the new settings */ /* reset the hardware with the new settings */
err = hw->mac.ops.start_hw(hw); err = hw->mac.ops.start_hw(hw);
if (err == IXGBE_ERR_EEPROM_VERSION) { if (err == -EACCES) {
/* We are running on a pre-production device, log a warning */ /* We are running on a pre-production device, log a warning */
e_dev_warn("This device is a pre-production adapter/LOM. " e_dev_warn("This device is a pre-production adapter/LOM. "
"Please be aware there may be issues associated " "Please be aware there may be issues associated "
......
...@@ -24,7 +24,7 @@ s32 ixgbe_read_mbx(struct ixgbe_hw *hw, u32 *msg, u16 size, u16 mbx_id) ...@@ -24,7 +24,7 @@ s32 ixgbe_read_mbx(struct ixgbe_hw *hw, u32 *msg, u16 size, u16 mbx_id)
size = mbx->size; size = mbx->size;
if (!mbx->ops) if (!mbx->ops)
return IXGBE_ERR_MBX; return -EIO;
return mbx->ops->read(hw, msg, size, mbx_id); return mbx->ops->read(hw, msg, size, mbx_id);
} }
...@@ -43,10 +43,10 @@ s32 ixgbe_write_mbx(struct ixgbe_hw *hw, u32 *msg, u16 size, u16 mbx_id) ...@@ -43,10 +43,10 @@ s32 ixgbe_write_mbx(struct ixgbe_hw *hw, u32 *msg, u16 size, u16 mbx_id)
struct ixgbe_mbx_info *mbx = &hw->mbx; struct ixgbe_mbx_info *mbx = &hw->mbx;
if (size > mbx->size) if (size > mbx->size)
return IXGBE_ERR_MBX; return -EINVAL;
if (!mbx->ops) if (!mbx->ops)
return IXGBE_ERR_MBX; return -EIO;
return mbx->ops->write(hw, msg, size, mbx_id); return mbx->ops->write(hw, msg, size, mbx_id);
} }
...@@ -63,7 +63,7 @@ s32 ixgbe_check_for_msg(struct ixgbe_hw *hw, u16 mbx_id) ...@@ -63,7 +63,7 @@ s32 ixgbe_check_for_msg(struct ixgbe_hw *hw, u16 mbx_id)
struct ixgbe_mbx_info *mbx = &hw->mbx; struct ixgbe_mbx_info *mbx = &hw->mbx;
if (!mbx->ops) if (!mbx->ops)
return IXGBE_ERR_MBX; return -EIO;
return mbx->ops->check_for_msg(hw, mbx_id); return mbx->ops->check_for_msg(hw, mbx_id);
} }
...@@ -80,7 +80,7 @@ s32 ixgbe_check_for_ack(struct ixgbe_hw *hw, u16 mbx_id) ...@@ -80,7 +80,7 @@ s32 ixgbe_check_for_ack(struct ixgbe_hw *hw, u16 mbx_id)
struct ixgbe_mbx_info *mbx = &hw->mbx; struct ixgbe_mbx_info *mbx = &hw->mbx;
if (!mbx->ops) if (!mbx->ops)
return IXGBE_ERR_MBX; return -EIO;
return mbx->ops->check_for_ack(hw, mbx_id); return mbx->ops->check_for_ack(hw, mbx_id);
} }
...@@ -97,7 +97,7 @@ s32 ixgbe_check_for_rst(struct ixgbe_hw *hw, u16 mbx_id) ...@@ -97,7 +97,7 @@ s32 ixgbe_check_for_rst(struct ixgbe_hw *hw, u16 mbx_id)
struct ixgbe_mbx_info *mbx = &hw->mbx; struct ixgbe_mbx_info *mbx = &hw->mbx;
if (!mbx->ops) if (!mbx->ops)
return IXGBE_ERR_MBX; return -EIO;
return mbx->ops->check_for_rst(hw, mbx_id); return mbx->ops->check_for_rst(hw, mbx_id);
} }
...@@ -115,12 +115,12 @@ static s32 ixgbe_poll_for_msg(struct ixgbe_hw *hw, u16 mbx_id) ...@@ -115,12 +115,12 @@ static s32 ixgbe_poll_for_msg(struct ixgbe_hw *hw, u16 mbx_id)
int countdown = mbx->timeout; int countdown = mbx->timeout;
if (!countdown || !mbx->ops) if (!countdown || !mbx->ops)
return IXGBE_ERR_MBX; return -EIO;
while (mbx->ops->check_for_msg(hw, mbx_id)) { while (mbx->ops->check_for_msg(hw, mbx_id)) {
countdown--; countdown--;
if (!countdown) if (!countdown)
return IXGBE_ERR_MBX; return -EIO;
udelay(mbx->usec_delay); udelay(mbx->usec_delay);
} }
...@@ -140,12 +140,12 @@ static s32 ixgbe_poll_for_ack(struct ixgbe_hw *hw, u16 mbx_id) ...@@ -140,12 +140,12 @@ static s32 ixgbe_poll_for_ack(struct ixgbe_hw *hw, u16 mbx_id)
int countdown = mbx->timeout; int countdown = mbx->timeout;
if (!countdown || !mbx->ops) if (!countdown || !mbx->ops)
return IXGBE_ERR_MBX; return -EIO;
while (mbx->ops->check_for_ack(hw, mbx_id)) { while (mbx->ops->check_for_ack(hw, mbx_id)) {
countdown--; countdown--;
if (!countdown) if (!countdown)
return IXGBE_ERR_MBX; return -EIO;
udelay(mbx->usec_delay); udelay(mbx->usec_delay);
} }
...@@ -169,7 +169,7 @@ static s32 ixgbe_read_posted_mbx(struct ixgbe_hw *hw, u32 *msg, u16 size, ...@@ -169,7 +169,7 @@ static s32 ixgbe_read_posted_mbx(struct ixgbe_hw *hw, u32 *msg, u16 size,
s32 ret_val; s32 ret_val;
if (!mbx->ops) if (!mbx->ops)
return IXGBE_ERR_MBX; return -EIO;
ret_val = ixgbe_poll_for_msg(hw, mbx_id); ret_val = ixgbe_poll_for_msg(hw, mbx_id);
if (ret_val) if (ret_val)
...@@ -197,7 +197,7 @@ static s32 ixgbe_write_posted_mbx(struct ixgbe_hw *hw, u32 *msg, u16 size, ...@@ -197,7 +197,7 @@ static s32 ixgbe_write_posted_mbx(struct ixgbe_hw *hw, u32 *msg, u16 size,
/* exit if either we can't write or there isn't a defined timeout */ /* exit if either we can't write or there isn't a defined timeout */
if (!mbx->ops || !mbx->timeout) if (!mbx->ops || !mbx->timeout)
return IXGBE_ERR_MBX; return -EIO;
/* send msg */ /* send msg */
ret_val = mbx->ops->write(hw, msg, size, mbx_id); ret_val = mbx->ops->write(hw, msg, size, mbx_id);
...@@ -217,7 +217,7 @@ static s32 ixgbe_check_for_bit_pf(struct ixgbe_hw *hw, u32 mask, s32 index) ...@@ -217,7 +217,7 @@ static s32 ixgbe_check_for_bit_pf(struct ixgbe_hw *hw, u32 mask, s32 index)
return 0; return 0;
} }
return IXGBE_ERR_MBX; return -EIO;
} }
/** /**
...@@ -238,7 +238,7 @@ static s32 ixgbe_check_for_msg_pf(struct ixgbe_hw *hw, u16 vf_number) ...@@ -238,7 +238,7 @@ static s32 ixgbe_check_for_msg_pf(struct ixgbe_hw *hw, u16 vf_number)
return 0; return 0;
} }
return IXGBE_ERR_MBX; return -EIO;
} }
/** /**
...@@ -259,7 +259,7 @@ static s32 ixgbe_check_for_ack_pf(struct ixgbe_hw *hw, u16 vf_number) ...@@ -259,7 +259,7 @@ static s32 ixgbe_check_for_ack_pf(struct ixgbe_hw *hw, u16 vf_number)
return 0; return 0;
} }
return IXGBE_ERR_MBX; return -EIO;
} }
/** /**
...@@ -295,7 +295,7 @@ static s32 ixgbe_check_for_rst_pf(struct ixgbe_hw *hw, u16 vf_number) ...@@ -295,7 +295,7 @@ static s32 ixgbe_check_for_rst_pf(struct ixgbe_hw *hw, u16 vf_number)
return 0; return 0;
} }
return IXGBE_ERR_MBX; return -EIO;
} }
/** /**
...@@ -317,7 +317,7 @@ static s32 ixgbe_obtain_mbx_lock_pf(struct ixgbe_hw *hw, u16 vf_number) ...@@ -317,7 +317,7 @@ static s32 ixgbe_obtain_mbx_lock_pf(struct ixgbe_hw *hw, u16 vf_number)
if (p2v_mailbox & IXGBE_PFMAILBOX_PFU) if (p2v_mailbox & IXGBE_PFMAILBOX_PFU)
return 0; return 0;
return IXGBE_ERR_MBX; return -EIO;
} }
/** /**
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
#include "ixgbe_type.h" #include "ixgbe_type.h"
#define IXGBE_VFMAILBOX_SIZE 16 /* 16 32 bit words - 64 bytes */ #define IXGBE_VFMAILBOX_SIZE 16 /* 16 32 bit words - 64 bytes */
#define IXGBE_ERR_MBX -100
#define IXGBE_VFMAILBOX 0x002FC #define IXGBE_VFMAILBOX 0x002FC
#define IXGBE_VFMBMEM 0x00200 #define IXGBE_VFMBMEM 0x00200
......
...@@ -155,7 +155,7 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw); ...@@ -155,7 +155,7 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw);
s32 ixgbe_get_sfp_init_sequence_offsets(struct ixgbe_hw *hw, s32 ixgbe_get_sfp_init_sequence_offsets(struct ixgbe_hw *hw,
u16 *list_offset, u16 *list_offset,
u16 *data_offset); u16 *data_offset);
s32 ixgbe_tn_check_overtemp(struct ixgbe_hw *hw); bool ixgbe_tn_check_overtemp(struct ixgbe_hw *hw);
s32 ixgbe_read_i2c_byte_generic(struct ixgbe_hw *hw, u8 byte_offset, s32 ixgbe_read_i2c_byte_generic(struct ixgbe_hw *hw, u8 byte_offset,
u8 dev_addr, u8 *data); u8 dev_addr, u8 *data);
s32 ixgbe_read_i2c_byte_generic_unlocked(struct ixgbe_hw *hw, u8 byte_offset, s32 ixgbe_read_i2c_byte_generic_unlocked(struct ixgbe_hw *hw, u8 byte_offset,
......
...@@ -1325,7 +1325,7 @@ static int ixgbe_rcv_msg_from_vf(struct ixgbe_adapter *adapter, u32 vf) ...@@ -1325,7 +1325,7 @@ static int ixgbe_rcv_msg_from_vf(struct ixgbe_adapter *adapter, u32 vf)
break; break;
default: default:
e_err(drv, "Unhandled Msg %8.8x\n", msgbuf[0]); e_err(drv, "Unhandled Msg %8.8x\n", msgbuf[0]);
retval = IXGBE_ERR_MBX; retval = -EIO;
break; break;
} }
...@@ -1847,5 +1847,6 @@ int ixgbe_ndo_get_vf_config(struct net_device *netdev, ...@@ -1847,5 +1847,6 @@ int ixgbe_ndo_get_vf_config(struct net_device *netdev,
ivi->spoofchk = adapter->vfinfo[vf].spoofchk_enabled; ivi->spoofchk = adapter->vfinfo[vf].spoofchk_enabled;
ivi->rss_query_en = adapter->vfinfo[vf].rss_query_enabled; ivi->rss_query_en = adapter->vfinfo[vf].rss_query_enabled;
ivi->trusted = adapter->vfinfo[vf].trusted; ivi->trusted = adapter->vfinfo[vf].trusted;
ivi->linkstate = adapter->vfinfo[vf].link_state;
return 0; return 0;
} }
...@@ -3509,10 +3509,10 @@ struct ixgbe_phy_operations { ...@@ -3509,10 +3509,10 @@ struct ixgbe_phy_operations {
s32 (*read_i2c_sff8472)(struct ixgbe_hw *, u8 , u8 *); s32 (*read_i2c_sff8472)(struct ixgbe_hw *, u8 , u8 *);
s32 (*read_i2c_eeprom)(struct ixgbe_hw *, u8 , u8 *); s32 (*read_i2c_eeprom)(struct ixgbe_hw *, u8 , u8 *);
s32 (*write_i2c_eeprom)(struct ixgbe_hw *, u8, u8); s32 (*write_i2c_eeprom)(struct ixgbe_hw *, u8, u8);
s32 (*check_overtemp)(struct ixgbe_hw *); bool (*check_overtemp)(struct ixgbe_hw *);
s32 (*set_phy_power)(struct ixgbe_hw *, bool on); s32 (*set_phy_power)(struct ixgbe_hw *, bool on);
s32 (*enter_lplu)(struct ixgbe_hw *); s32 (*enter_lplu)(struct ixgbe_hw *);
s32 (*handle_lasi)(struct ixgbe_hw *hw); s32 (*handle_lasi)(struct ixgbe_hw *hw, bool *);
s32 (*read_i2c_byte_unlocked)(struct ixgbe_hw *, u8 offset, u8 addr, s32 (*read_i2c_byte_unlocked)(struct ixgbe_hw *, u8 offset, u8 addr,
u8 *value); u8 *value);
s32 (*write_i2c_byte_unlocked)(struct ixgbe_hw *, u8 offset, u8 addr, s32 (*write_i2c_byte_unlocked)(struct ixgbe_hw *, u8 offset, u8 addr,
...@@ -3665,45 +3665,6 @@ struct ixgbe_info { ...@@ -3665,45 +3665,6 @@ struct ixgbe_info {
const u32 *mvals; const u32 *mvals;
}; };
/* Error Codes */
#define IXGBE_ERR_EEPROM -1
#define IXGBE_ERR_EEPROM_CHECKSUM -2
#define IXGBE_ERR_PHY -3
#define IXGBE_ERR_CONFIG -4
#define IXGBE_ERR_PARAM -5
#define IXGBE_ERR_MAC_TYPE -6
#define IXGBE_ERR_UNKNOWN_PHY -7
#define IXGBE_ERR_LINK_SETUP -8
#define IXGBE_ERR_ADAPTER_STOPPED -9
#define IXGBE_ERR_INVALID_MAC_ADDR -10
#define IXGBE_ERR_DEVICE_NOT_SUPPORTED -11
#define IXGBE_ERR_PRIMARY_REQUESTS_PENDING -12
#define IXGBE_ERR_INVALID_LINK_SETTINGS -13
#define IXGBE_ERR_AUTONEG_NOT_COMPLETE -14
#define IXGBE_ERR_RESET_FAILED -15
#define IXGBE_ERR_SWFW_SYNC -16
#define IXGBE_ERR_PHY_ADDR_INVALID -17
#define IXGBE_ERR_I2C -18
#define IXGBE_ERR_SFP_NOT_SUPPORTED -19
#define IXGBE_ERR_SFP_NOT_PRESENT -20
#define IXGBE_ERR_SFP_NO_INIT_SEQ_PRESENT -21
#define IXGBE_ERR_NO_SAN_ADDR_PTR -22
#define IXGBE_ERR_FDIR_REINIT_FAILED -23
#define IXGBE_ERR_EEPROM_VERSION -24
#define IXGBE_ERR_NO_SPACE -25
#define IXGBE_ERR_OVERTEMP -26
#define IXGBE_ERR_FC_NOT_NEGOTIATED -27
#define IXGBE_ERR_FC_NOT_SUPPORTED -28
#define IXGBE_ERR_SFP_SETUP_NOT_COMPLETE -30
#define IXGBE_ERR_PBA_SECTION -31
#define IXGBE_ERR_INVALID_ARGUMENT -32
#define IXGBE_ERR_HOST_INTERFACE_COMMAND -33
#define IXGBE_ERR_FDIR_CMD_INCOMPLETE -38
#define IXGBE_ERR_FW_RESP_INVALID -39
#define IXGBE_ERR_TOKEN_RETRY -40
#define IXGBE_NOT_IMPLEMENTED 0x7FFFFFFF
#define IXGBE_FUSES0_GROUP(_i) (0x11158 + ((_i) * 4)) #define IXGBE_FUSES0_GROUP(_i) (0x11158 + ((_i) * 4))
#define IXGBE_FUSES0_300MHZ BIT(5) #define IXGBE_FUSES0_300MHZ BIT(5)
#define IXGBE_FUSES0_REV_MASK (3u << 6) #define IXGBE_FUSES0_REV_MASK (3u << 6)
......
...@@ -84,7 +84,7 @@ s32 ixgbe_reset_hw_X540(struct ixgbe_hw *hw) ...@@ -84,7 +84,7 @@ s32 ixgbe_reset_hw_X540(struct ixgbe_hw *hw)
status = hw->mac.ops.acquire_swfw_sync(hw, swfw_mask); status = hw->mac.ops.acquire_swfw_sync(hw, swfw_mask);
if (status) { if (status) {
hw_dbg(hw, "semaphore failed with %d", status); hw_dbg(hw, "semaphore failed with %d", status);
return IXGBE_ERR_SWFW_SYNC; return -EBUSY;
} }
ctrl = IXGBE_CTRL_RST; ctrl = IXGBE_CTRL_RST;
...@@ -103,7 +103,7 @@ s32 ixgbe_reset_hw_X540(struct ixgbe_hw *hw) ...@@ -103,7 +103,7 @@ s32 ixgbe_reset_hw_X540(struct ixgbe_hw *hw)
} }
if (ctrl & IXGBE_CTRL_RST_MASK) { if (ctrl & IXGBE_CTRL_RST_MASK) {
status = IXGBE_ERR_RESET_FAILED; status = -EIO;
hw_dbg(hw, "Reset polling failed to complete.\n"); hw_dbg(hw, "Reset polling failed to complete.\n");
} }
msleep(100); msleep(100);
...@@ -220,7 +220,7 @@ static s32 ixgbe_read_eerd_X540(struct ixgbe_hw *hw, u16 offset, u16 *data) ...@@ -220,7 +220,7 @@ static s32 ixgbe_read_eerd_X540(struct ixgbe_hw *hw, u16 offset, u16 *data)
s32 status; s32 status;
if (hw->mac.ops.acquire_swfw_sync(hw, IXGBE_GSSR_EEP_SM)) if (hw->mac.ops.acquire_swfw_sync(hw, IXGBE_GSSR_EEP_SM))
return IXGBE_ERR_SWFW_SYNC; return -EBUSY;
status = ixgbe_read_eerd_generic(hw, offset, data); status = ixgbe_read_eerd_generic(hw, offset, data);
...@@ -243,7 +243,7 @@ static s32 ixgbe_read_eerd_buffer_X540(struct ixgbe_hw *hw, ...@@ -243,7 +243,7 @@ static s32 ixgbe_read_eerd_buffer_X540(struct ixgbe_hw *hw,
s32 status; s32 status;
if (hw->mac.ops.acquire_swfw_sync(hw, IXGBE_GSSR_EEP_SM)) if (hw->mac.ops.acquire_swfw_sync(hw, IXGBE_GSSR_EEP_SM))
return IXGBE_ERR_SWFW_SYNC; return -EBUSY;
status = ixgbe_read_eerd_buffer_generic(hw, offset, words, data); status = ixgbe_read_eerd_buffer_generic(hw, offset, words, data);
...@@ -264,7 +264,7 @@ static s32 ixgbe_write_eewr_X540(struct ixgbe_hw *hw, u16 offset, u16 data) ...@@ -264,7 +264,7 @@ static s32 ixgbe_write_eewr_X540(struct ixgbe_hw *hw, u16 offset, u16 data)
s32 status; s32 status;
if (hw->mac.ops.acquire_swfw_sync(hw, IXGBE_GSSR_EEP_SM)) if (hw->mac.ops.acquire_swfw_sync(hw, IXGBE_GSSR_EEP_SM))
return IXGBE_ERR_SWFW_SYNC; return -EBUSY;
status = ixgbe_write_eewr_generic(hw, offset, data); status = ixgbe_write_eewr_generic(hw, offset, data);
...@@ -287,7 +287,7 @@ static s32 ixgbe_write_eewr_buffer_X540(struct ixgbe_hw *hw, ...@@ -287,7 +287,7 @@ static s32 ixgbe_write_eewr_buffer_X540(struct ixgbe_hw *hw,
s32 status; s32 status;
if (hw->mac.ops.acquire_swfw_sync(hw, IXGBE_GSSR_EEP_SM)) if (hw->mac.ops.acquire_swfw_sync(hw, IXGBE_GSSR_EEP_SM))
return IXGBE_ERR_SWFW_SYNC; return -EBUSY;
status = ixgbe_write_eewr_buffer_generic(hw, offset, words, data); status = ixgbe_write_eewr_buffer_generic(hw, offset, words, data);
...@@ -324,7 +324,7 @@ static s32 ixgbe_calc_eeprom_checksum_X540(struct ixgbe_hw *hw) ...@@ -324,7 +324,7 @@ static s32 ixgbe_calc_eeprom_checksum_X540(struct ixgbe_hw *hw)
for (i = 0; i < checksum_last_word; i++) { for (i = 0; i < checksum_last_word; i++) {
if (ixgbe_read_eerd_generic(hw, i, &word)) { if (ixgbe_read_eerd_generic(hw, i, &word)) {
hw_dbg(hw, "EEPROM read failed\n"); hw_dbg(hw, "EEPROM read failed\n");
return IXGBE_ERR_EEPROM; return -EIO;
} }
checksum += word; checksum += word;
} }
...@@ -349,7 +349,7 @@ static s32 ixgbe_calc_eeprom_checksum_X540(struct ixgbe_hw *hw) ...@@ -349,7 +349,7 @@ static s32 ixgbe_calc_eeprom_checksum_X540(struct ixgbe_hw *hw)
if (ixgbe_read_eerd_generic(hw, pointer, &length)) { if (ixgbe_read_eerd_generic(hw, pointer, &length)) {
hw_dbg(hw, "EEPROM read failed\n"); hw_dbg(hw, "EEPROM read failed\n");
return IXGBE_ERR_EEPROM; return -EIO;
} }
/* Skip pointer section if length is invalid. */ /* Skip pointer section if length is invalid. */
...@@ -360,7 +360,7 @@ static s32 ixgbe_calc_eeprom_checksum_X540(struct ixgbe_hw *hw) ...@@ -360,7 +360,7 @@ static s32 ixgbe_calc_eeprom_checksum_X540(struct ixgbe_hw *hw)
for (j = pointer + 1; j <= pointer + length; j++) { for (j = pointer + 1; j <= pointer + length; j++) {
if (ixgbe_read_eerd_generic(hw, j, &word)) { if (ixgbe_read_eerd_generic(hw, j, &word)) {
hw_dbg(hw, "EEPROM read failed\n"); hw_dbg(hw, "EEPROM read failed\n");
return IXGBE_ERR_EEPROM; return -EIO;
} }
checksum += word; checksum += word;
} }
...@@ -397,7 +397,7 @@ static s32 ixgbe_validate_eeprom_checksum_X540(struct ixgbe_hw *hw, ...@@ -397,7 +397,7 @@ static s32 ixgbe_validate_eeprom_checksum_X540(struct ixgbe_hw *hw,
} }
if (hw->mac.ops.acquire_swfw_sync(hw, IXGBE_GSSR_EEP_SM)) if (hw->mac.ops.acquire_swfw_sync(hw, IXGBE_GSSR_EEP_SM))
return IXGBE_ERR_SWFW_SYNC; return -EBUSY;
status = hw->eeprom.ops.calc_checksum(hw); status = hw->eeprom.ops.calc_checksum(hw);
if (status < 0) if (status < 0)
...@@ -418,7 +418,7 @@ static s32 ixgbe_validate_eeprom_checksum_X540(struct ixgbe_hw *hw, ...@@ -418,7 +418,7 @@ static s32 ixgbe_validate_eeprom_checksum_X540(struct ixgbe_hw *hw,
*/ */
if (read_checksum != checksum) { if (read_checksum != checksum) {
hw_dbg(hw, "Invalid EEPROM checksum"); hw_dbg(hw, "Invalid EEPROM checksum");
status = IXGBE_ERR_EEPROM_CHECKSUM; status = -EIO;
} }
/* If the user cares, return the calculated checksum */ /* If the user cares, return the calculated checksum */
...@@ -455,7 +455,7 @@ static s32 ixgbe_update_eeprom_checksum_X540(struct ixgbe_hw *hw) ...@@ -455,7 +455,7 @@ static s32 ixgbe_update_eeprom_checksum_X540(struct ixgbe_hw *hw)
} }
if (hw->mac.ops.acquire_swfw_sync(hw, IXGBE_GSSR_EEP_SM)) if (hw->mac.ops.acquire_swfw_sync(hw, IXGBE_GSSR_EEP_SM))
return IXGBE_ERR_SWFW_SYNC; return -EBUSY;
status = hw->eeprom.ops.calc_checksum(hw); status = hw->eeprom.ops.calc_checksum(hw);
if (status < 0) if (status < 0)
...@@ -490,7 +490,7 @@ static s32 ixgbe_update_flash_X540(struct ixgbe_hw *hw) ...@@ -490,7 +490,7 @@ static s32 ixgbe_update_flash_X540(struct ixgbe_hw *hw)
s32 status; s32 status;
status = ixgbe_poll_flash_update_done_X540(hw); status = ixgbe_poll_flash_update_done_X540(hw);
if (status == IXGBE_ERR_EEPROM) { if (status == -EIO) {
hw_dbg(hw, "Flash update time out\n"); hw_dbg(hw, "Flash update time out\n");
return status; return status;
} }
...@@ -540,7 +540,7 @@ static s32 ixgbe_poll_flash_update_done_X540(struct ixgbe_hw *hw) ...@@ -540,7 +540,7 @@ static s32 ixgbe_poll_flash_update_done_X540(struct ixgbe_hw *hw)
return 0; return 0;
udelay(5); udelay(5);
} }
return IXGBE_ERR_EEPROM; return -EIO;
} }
/** /**
...@@ -575,7 +575,7 @@ s32 ixgbe_acquire_swfw_sync_X540(struct ixgbe_hw *hw, u32 mask) ...@@ -575,7 +575,7 @@ s32 ixgbe_acquire_swfw_sync_X540(struct ixgbe_hw *hw, u32 mask)
* SW_FW_SYNC bits (not just NVM) * SW_FW_SYNC bits (not just NVM)
*/ */
if (ixgbe_get_swfw_sync_semaphore(hw)) if (ixgbe_get_swfw_sync_semaphore(hw))
return IXGBE_ERR_SWFW_SYNC; return -EBUSY;
swfw_sync = IXGBE_READ_REG(hw, IXGBE_SWFW_SYNC(hw)); swfw_sync = IXGBE_READ_REG(hw, IXGBE_SWFW_SYNC(hw));
if (!(swfw_sync & (fwmask | swmask | hwmask))) { if (!(swfw_sync & (fwmask | swmask | hwmask))) {
...@@ -599,7 +599,7 @@ s32 ixgbe_acquire_swfw_sync_X540(struct ixgbe_hw *hw, u32 mask) ...@@ -599,7 +599,7 @@ s32 ixgbe_acquire_swfw_sync_X540(struct ixgbe_hw *hw, u32 mask)
* bits in the SW_FW_SYNC register. * bits in the SW_FW_SYNC register.
*/ */
if (ixgbe_get_swfw_sync_semaphore(hw)) if (ixgbe_get_swfw_sync_semaphore(hw))
return IXGBE_ERR_SWFW_SYNC; return -EBUSY;
swfw_sync = IXGBE_READ_REG(hw, IXGBE_SWFW_SYNC(hw)); swfw_sync = IXGBE_READ_REG(hw, IXGBE_SWFW_SYNC(hw));
if (swfw_sync & (fwmask | hwmask)) { if (swfw_sync & (fwmask | hwmask)) {
swfw_sync |= swmask; swfw_sync |= swmask;
...@@ -622,11 +622,11 @@ s32 ixgbe_acquire_swfw_sync_X540(struct ixgbe_hw *hw, u32 mask) ...@@ -622,11 +622,11 @@ s32 ixgbe_acquire_swfw_sync_X540(struct ixgbe_hw *hw, u32 mask)
rmask |= IXGBE_GSSR_I2C_MASK; rmask |= IXGBE_GSSR_I2C_MASK;
ixgbe_release_swfw_sync_X540(hw, rmask); ixgbe_release_swfw_sync_X540(hw, rmask);
ixgbe_release_swfw_sync_semaphore(hw); ixgbe_release_swfw_sync_semaphore(hw);
return IXGBE_ERR_SWFW_SYNC; return -EBUSY;
} }
ixgbe_release_swfw_sync_semaphore(hw); ixgbe_release_swfw_sync_semaphore(hw);
return IXGBE_ERR_SWFW_SYNC; return -EBUSY;
} }
/** /**
...@@ -680,7 +680,7 @@ static s32 ixgbe_get_swfw_sync_semaphore(struct ixgbe_hw *hw) ...@@ -680,7 +680,7 @@ static s32 ixgbe_get_swfw_sync_semaphore(struct ixgbe_hw *hw)
if (i == timeout) { if (i == timeout) {
hw_dbg(hw, hw_dbg(hw,
"Software semaphore SMBI between device drivers not granted.\n"); "Software semaphore SMBI between device drivers not granted.\n");
return IXGBE_ERR_EEPROM; return -EIO;
} }
/* Now get the semaphore between SW/FW through the REGSMP bit */ /* Now get the semaphore between SW/FW through the REGSMP bit */
...@@ -697,7 +697,7 @@ static s32 ixgbe_get_swfw_sync_semaphore(struct ixgbe_hw *hw) ...@@ -697,7 +697,7 @@ static s32 ixgbe_get_swfw_sync_semaphore(struct ixgbe_hw *hw)
*/ */
hw_dbg(hw, "REGSMP Software NVM semaphore not granted\n"); hw_dbg(hw, "REGSMP Software NVM semaphore not granted\n");
ixgbe_release_swfw_sync_semaphore(hw); ixgbe_release_swfw_sync_semaphore(hw);
return IXGBE_ERR_EEPROM; return -EIO;
} }
/** /**
...@@ -768,7 +768,7 @@ s32 ixgbe_blink_led_start_X540(struct ixgbe_hw *hw, u32 index) ...@@ -768,7 +768,7 @@ s32 ixgbe_blink_led_start_X540(struct ixgbe_hw *hw, u32 index)
bool link_up; bool link_up;
if (index > 3) if (index > 3)
return IXGBE_ERR_PARAM; return -EINVAL;
/* Link should be up in order for the blink bit in the LED control /* Link should be up in order for the blink bit in the LED control
* register to work. Force link and speed in the MAC if link is down. * register to work. Force link and speed in the MAC if link is down.
...@@ -804,7 +804,7 @@ s32 ixgbe_blink_led_stop_X540(struct ixgbe_hw *hw, u32 index) ...@@ -804,7 +804,7 @@ s32 ixgbe_blink_led_stop_X540(struct ixgbe_hw *hw, u32 index)
u32 ledctl_reg; u32 ledctl_reg;
if (index > 3) if (index > 3)
return IXGBE_ERR_PARAM; return -EINVAL;
/* Restore the LED to its default value. */ /* Restore the LED to its default value. */
ledctl_reg = IXGBE_READ_REG(hw, IXGBE_LEDCTL); ledctl_reg = IXGBE_READ_REG(hw, IXGBE_LEDCTL);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment