mirror of https://gitee.com/openkylin/linux.git
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next
Jeff Kirsher says: ==================== Intel Wired LAN Driver Updates This series contains updates to igb, igbvf, ixgbe, i40e and i40evf. Jacob provides eight patches to cleanup the ixgbe driver to resolve various checkpatch.pl warnings/errors as well as minor coding style issues. Stephen Hemminger and I provide simple cleanups of void functions which had useless return statements at the end of the function which are not needed. v2: Dropped Emil's patch "ixgbe: fix the detection of SFP+ capable interfaces" while I wait for his updated patch to be validated. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
0c3592b821
|
@ -6836,7 +6836,6 @@ static void i40e_vsi_delete(struct i40e_vsi *vsi)
|
|||
return;
|
||||
|
||||
i40e_aq_delete_element(&vsi->back->hw, vsi->seid, NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -7576,8 +7575,6 @@ void i40e_veb_release(struct i40e_veb *veb)
|
|||
|
||||
i40e_aq_delete_element(&pf->hw, veb->seid, NULL);
|
||||
i40e_veb_clear(veb);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -8058,7 +8055,6 @@ static void i40e_determine_queue_usage(struct i40e_pf *pf)
|
|||
}
|
||||
|
||||
pf->queues_left = queues_left;
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -693,7 +693,6 @@ static void i40evf_del_vlan(struct i40evf_adapter *adapter, u16 vlan)
|
|||
f->remove = true;
|
||||
adapter->aq_required |= I40EVF_FLAG_AQ_DEL_VLAN_FILTER;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1232,8 +1231,6 @@ void i40evf_reset_interrupt_capability(struct i40evf_adapter *adapter)
|
|||
pci_disable_msix(adapter->pdev);
|
||||
kfree(adapter->msix_entries);
|
||||
adapter->msix_entries = NULL;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2158,7 +2155,6 @@ static void i40evf_init_task(struct work_struct *work)
|
|||
return; /* do not reschedule */
|
||||
}
|
||||
schedule_delayed_work(&adapter->init_task, HZ * 3);
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -798,5 +798,4 @@ void igb_get_fw_version(struct e1000_hw *hw, struct e1000_fw_version *fw_vers)
|
|||
fw_vers->etrack_id = (eeprom_verh << NVM_ETRACK_SHIFT)
|
||||
| eeprom_verl;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -2139,7 +2139,6 @@ void igb_set_fw_version(struct igb_adapter *adapter)
|
|||
}
|
||||
break;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -119,7 +119,6 @@ static int igbvf_set_settings(struct net_device *netdev,
|
|||
static void igbvf_get_pauseparam(struct net_device *netdev,
|
||||
struct ethtool_pauseparam *pause)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
static int igbvf_set_pauseparam(struct net_device *netdev,
|
||||
|
|
|
@ -362,7 +362,7 @@ struct ixgbe_ring_container {
|
|||
for (pos = (head).ring; pos != NULL; pos = pos->next)
|
||||
|
||||
#define MAX_RX_PACKET_BUFFERS ((adapter->flags & IXGBE_FLAG_DCB_ENABLED) \
|
||||
? 8 : 1)
|
||||
? 8 : 1)
|
||||
#define MAX_TX_PACKET_BUFFERS MAX_RX_PACKET_BUFFERS
|
||||
|
||||
/* MAX_Q_VECTORS of these are allocated,
|
||||
|
|
|
@ -41,10 +41,10 @@
|
|||
#define IXGBE_82598_RX_PB_SIZE 512
|
||||
|
||||
static s32 ixgbe_setup_copper_link_82598(struct ixgbe_hw *hw,
|
||||
ixgbe_link_speed speed,
|
||||
bool autoneg_wait_to_complete);
|
||||
ixgbe_link_speed speed,
|
||||
bool autoneg_wait_to_complete);
|
||||
static s32 ixgbe_read_i2c_eeprom_82598(struct ixgbe_hw *hw, u8 byte_offset,
|
||||
u8 *eeprom_data);
|
||||
u8 *eeprom_data);
|
||||
|
||||
/**
|
||||
* ixgbe_set_pcie_completion_timeout - set pci-e completion timeout
|
||||
|
@ -140,7 +140,7 @@ static s32 ixgbe_init_phy_ops_82598(struct ixgbe_hw *hw)
|
|||
phy->ops.setup_link = &ixgbe_setup_phy_link_tnx;
|
||||
phy->ops.check_link = &ixgbe_check_phy_link_tnx;
|
||||
phy->ops.get_firmware_version =
|
||||
&ixgbe_get_phy_firmware_version_tnx;
|
||||
&ixgbe_get_phy_firmware_version_tnx;
|
||||
break;
|
||||
case ixgbe_phy_nl:
|
||||
phy->ops.reset = &ixgbe_reset_phy_nl;
|
||||
|
@ -156,8 +156,8 @@ static s32 ixgbe_init_phy_ops_82598(struct ixgbe_hw *hw)
|
|||
|
||||
/* Check to see if SFP+ module is supported */
|
||||
ret_val = ixgbe_get_sfp_init_sequence_offsets(hw,
|
||||
&list_offset,
|
||||
&data_offset);
|
||||
&list_offset,
|
||||
&data_offset);
|
||||
if (ret_val != 0) {
|
||||
ret_val = IXGBE_ERR_SFP_NOT_SUPPORTED;
|
||||
goto out;
|
||||
|
@ -219,8 +219,8 @@ static s32 ixgbe_start_hw_82598(struct ixgbe_hw *hw)
|
|||
* Determines the link capabilities by reading the AUTOC register.
|
||||
**/
|
||||
static s32 ixgbe_get_link_capabilities_82598(struct ixgbe_hw *hw,
|
||||
ixgbe_link_speed *speed,
|
||||
bool *autoneg)
|
||||
ixgbe_link_speed *speed,
|
||||
bool *autoneg)
|
||||
{
|
||||
s32 status = 0;
|
||||
u32 autoc = 0;
|
||||
|
@ -473,7 +473,7 @@ static s32 ixgbe_fc_enable_82598(struct ixgbe_hw *hw)
|
|||
* Restarts the link. Performs autonegotiation if needed.
|
||||
**/
|
||||
static s32 ixgbe_start_mac_link_82598(struct ixgbe_hw *hw,
|
||||
bool autoneg_wait_to_complete)
|
||||
bool autoneg_wait_to_complete)
|
||||
{
|
||||
u32 autoc_reg;
|
||||
u32 links_reg;
|
||||
|
@ -555,8 +555,8 @@ static s32 ixgbe_validate_link_ready(struct ixgbe_hw *hw)
|
|||
* Reads the links register to determine if link is up and the current speed
|
||||
**/
|
||||
static s32 ixgbe_check_mac_link_82598(struct ixgbe_hw *hw,
|
||||
ixgbe_link_speed *speed, bool *link_up,
|
||||
bool link_up_wait_to_complete)
|
||||
ixgbe_link_speed *speed, bool *link_up,
|
||||
bool link_up_wait_to_complete)
|
||||
{
|
||||
u32 links_reg;
|
||||
u32 i;
|
||||
|
@ -572,7 +572,7 @@ static s32 ixgbe_check_mac_link_82598(struct ixgbe_hw *hw,
|
|||
hw->phy.ops.read_reg(hw, 0xC79F, MDIO_MMD_PMAPMD, &link_reg);
|
||||
hw->phy.ops.read_reg(hw, 0xC79F, MDIO_MMD_PMAPMD, &link_reg);
|
||||
hw->phy.ops.read_reg(hw, 0xC00C, MDIO_MMD_PMAPMD,
|
||||
&adapt_comp_reg);
|
||||
&adapt_comp_reg);
|
||||
if (link_up_wait_to_complete) {
|
||||
for (i = 0; i < IXGBE_LINK_UP_TIME; i++) {
|
||||
if ((link_reg & 1) &&
|
||||
|
@ -584,11 +584,11 @@ static s32 ixgbe_check_mac_link_82598(struct ixgbe_hw *hw,
|
|||
}
|
||||
msleep(100);
|
||||
hw->phy.ops.read_reg(hw, 0xC79F,
|
||||
MDIO_MMD_PMAPMD,
|
||||
&link_reg);
|
||||
MDIO_MMD_PMAPMD,
|
||||
&link_reg);
|
||||
hw->phy.ops.read_reg(hw, 0xC00C,
|
||||
MDIO_MMD_PMAPMD,
|
||||
&adapt_comp_reg);
|
||||
MDIO_MMD_PMAPMD,
|
||||
&adapt_comp_reg);
|
||||
}
|
||||
} else {
|
||||
if ((link_reg & 1) && ((adapt_comp_reg & 1) == 0))
|
||||
|
@ -661,7 +661,7 @@ static s32 ixgbe_setup_mac_link_82598(struct ixgbe_hw *hw,
|
|||
|
||||
/* Set KX4/KX support according to speed requested */
|
||||
else if (link_mode == IXGBE_AUTOC_LMS_KX4_AN ||
|
||||
link_mode == IXGBE_AUTOC_LMS_KX4_AN_1G_AN) {
|
||||
link_mode == IXGBE_AUTOC_LMS_KX4_AN_1G_AN) {
|
||||
autoc &= ~IXGBE_AUTOC_KX4_KX_SUPP_MASK;
|
||||
if (speed & IXGBE_LINK_SPEED_10GB_FULL)
|
||||
autoc |= IXGBE_AUTOC_KX4_SUPP;
|
||||
|
@ -694,14 +694,14 @@ static s32 ixgbe_setup_mac_link_82598(struct ixgbe_hw *hw,
|
|||
* Sets the link speed in the AUTOC register in the MAC and restarts link.
|
||||
**/
|
||||
static s32 ixgbe_setup_copper_link_82598(struct ixgbe_hw *hw,
|
||||
ixgbe_link_speed speed,
|
||||
bool autoneg_wait_to_complete)
|
||||
ixgbe_link_speed speed,
|
||||
bool autoneg_wait_to_complete)
|
||||
{
|
||||
s32 status;
|
||||
|
||||
/* Setup the PHY according to input speed */
|
||||
status = hw->phy.ops.setup_link_speed(hw, speed,
|
||||
autoneg_wait_to_complete);
|
||||
autoneg_wait_to_complete);
|
||||
/* Set up MAC */
|
||||
ixgbe_start_mac_link_82598(hw, autoneg_wait_to_complete);
|
||||
|
||||
|
@ -740,28 +740,28 @@ static s32 ixgbe_reset_hw_82598(struct ixgbe_hw *hw)
|
|||
if (analog_val & IXGBE_ATLAS_PDN_TX_REG_EN) {
|
||||
/* Enable Tx Atlas so packets can be transmitted again */
|
||||
hw->mac.ops.read_analog_reg8(hw, IXGBE_ATLAS_PDN_LPBK,
|
||||
&analog_val);
|
||||
&analog_val);
|
||||
analog_val &= ~IXGBE_ATLAS_PDN_TX_REG_EN;
|
||||
hw->mac.ops.write_analog_reg8(hw, IXGBE_ATLAS_PDN_LPBK,
|
||||
analog_val);
|
||||
analog_val);
|
||||
|
||||
hw->mac.ops.read_analog_reg8(hw, IXGBE_ATLAS_PDN_10G,
|
||||
&analog_val);
|
||||
&analog_val);
|
||||
analog_val &= ~IXGBE_ATLAS_PDN_TX_10G_QL_ALL;
|
||||
hw->mac.ops.write_analog_reg8(hw, IXGBE_ATLAS_PDN_10G,
|
||||
analog_val);
|
||||
analog_val);
|
||||
|
||||
hw->mac.ops.read_analog_reg8(hw, IXGBE_ATLAS_PDN_1G,
|
||||
&analog_val);
|
||||
&analog_val);
|
||||
analog_val &= ~IXGBE_ATLAS_PDN_TX_1G_QL_ALL;
|
||||
hw->mac.ops.write_analog_reg8(hw, IXGBE_ATLAS_PDN_1G,
|
||||
analog_val);
|
||||
analog_val);
|
||||
|
||||
hw->mac.ops.read_analog_reg8(hw, IXGBE_ATLAS_PDN_AN,
|
||||
&analog_val);
|
||||
&analog_val);
|
||||
analog_val &= ~IXGBE_ATLAS_PDN_TX_AN_QL_ALL;
|
||||
hw->mac.ops.write_analog_reg8(hw, IXGBE_ATLAS_PDN_AN,
|
||||
analog_val);
|
||||
analog_val);
|
||||
}
|
||||
|
||||
/* Reset PHY */
|
||||
|
@ -960,7 +960,7 @@ static s32 ixgbe_clear_vfta_82598(struct ixgbe_hw *hw)
|
|||
for (vlanbyte = 0; vlanbyte < 4; vlanbyte++)
|
||||
for (offset = 0; offset < hw->mac.vft_size; offset++)
|
||||
IXGBE_WRITE_REG(hw, IXGBE_VFTAVIND(vlanbyte, offset),
|
||||
0);
|
||||
0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -978,7 +978,7 @@ static s32 ixgbe_read_analog_reg8_82598(struct ixgbe_hw *hw, u32 reg, u8 *val)
|
|||
u32 atlas_ctl;
|
||||
|
||||
IXGBE_WRITE_REG(hw, IXGBE_ATLASCTL,
|
||||
IXGBE_ATLASCTL_WRITE_CMD | (reg << 8));
|
||||
IXGBE_ATLASCTL_WRITE_CMD | (reg << 8));
|
||||
IXGBE_WRITE_FLUSH(hw);
|
||||
udelay(10);
|
||||
atlas_ctl = IXGBE_READ_REG(hw, IXGBE_ATLASCTL);
|
||||
|
@ -1278,8 +1278,6 @@ static void ixgbe_set_rxpba_82598(struct ixgbe_hw *hw, int num_pb,
|
|||
/* Setup Tx packet buffer sizes */
|
||||
for (i = 0; i < IXGBE_MAX_PACKET_BUFFERS; i++)
|
||||
IXGBE_WRITE_REG(hw, IXGBE_TXPBSIZE(i), IXGBE_TXPBSIZE_40KB);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static struct ixgbe_mac_operations mac_ops_82598 = {
|
||||
|
|
|
@ -48,17 +48,17 @@ static s32 ixgbe_setup_mac_link_multispeed_fiber(struct ixgbe_hw *hw,
|
|||
ixgbe_link_speed speed,
|
||||
bool autoneg_wait_to_complete);
|
||||
static s32 ixgbe_setup_mac_link_smartspeed(struct ixgbe_hw *hw,
|
||||
ixgbe_link_speed speed,
|
||||
bool autoneg_wait_to_complete);
|
||||
ixgbe_link_speed speed,
|
||||
bool autoneg_wait_to_complete);
|
||||
static void ixgbe_stop_mac_link_on_d3_82599(struct ixgbe_hw *hw);
|
||||
static s32 ixgbe_start_mac_link_82599(struct ixgbe_hw *hw,
|
||||
bool autoneg_wait_to_complete);
|
||||
static s32 ixgbe_setup_mac_link_82599(struct ixgbe_hw *hw,
|
||||
ixgbe_link_speed speed,
|
||||
bool autoneg_wait_to_complete);
|
||||
ixgbe_link_speed speed,
|
||||
bool autoneg_wait_to_complete);
|
||||
static s32 ixgbe_setup_copper_link_82599(struct ixgbe_hw *hw,
|
||||
ixgbe_link_speed speed,
|
||||
bool autoneg_wait_to_complete);
|
||||
ixgbe_link_speed speed,
|
||||
bool autoneg_wait_to_complete);
|
||||
static s32 ixgbe_verify_fw_version_82599(struct ixgbe_hw *hw);
|
||||
static s32 ixgbe_read_i2c_byte_82599(struct ixgbe_hw *hw, u8 byte_offset,
|
||||
u8 dev_addr, u8 *data);
|
||||
|
@ -96,9 +96,9 @@ static void ixgbe_init_mac_link_ops_82599(struct ixgbe_hw *hw)
|
|||
if ((mac->ops.get_media_type(hw) == ixgbe_media_type_fiber) &&
|
||||
!ixgbe_mng_enabled(hw)) {
|
||||
mac->ops.disable_tx_laser =
|
||||
&ixgbe_disable_tx_laser_multispeed_fiber;
|
||||
&ixgbe_disable_tx_laser_multispeed_fiber;
|
||||
mac->ops.enable_tx_laser =
|
||||
&ixgbe_enable_tx_laser_multispeed_fiber;
|
||||
&ixgbe_enable_tx_laser_multispeed_fiber;
|
||||
mac->ops.flap_tx_laser = &ixgbe_flap_tx_laser_multispeed_fiber;
|
||||
} else {
|
||||
mac->ops.disable_tx_laser = NULL;
|
||||
|
@ -132,13 +132,13 @@ static s32 ixgbe_setup_sfp_modules_82599(struct ixgbe_hw *hw)
|
|||
hw->phy.ops.reset = NULL;
|
||||
|
||||
ret_val = ixgbe_get_sfp_init_sequence_offsets(hw, &list_offset,
|
||||
&data_offset);
|
||||
&data_offset);
|
||||
if (ret_val != 0)
|
||||
goto setup_sfp_out;
|
||||
|
||||
/* PHY config will finish before releasing the semaphore */
|
||||
ret_val = hw->mac.ops.acquire_swfw_sync(hw,
|
||||
IXGBE_GSSR_MAC_CSR_SM);
|
||||
IXGBE_GSSR_MAC_CSR_SM);
|
||||
if (ret_val != 0) {
|
||||
ret_val = IXGBE_ERR_SWFW_SYNC;
|
||||
goto setup_sfp_out;
|
||||
|
@ -334,7 +334,7 @@ static s32 ixgbe_init_phy_ops_82599(struct ixgbe_hw *hw)
|
|||
phy->ops.check_link = &ixgbe_check_phy_link_tnx;
|
||||
phy->ops.setup_link = &ixgbe_setup_phy_link_tnx;
|
||||
phy->ops.get_firmware_version =
|
||||
&ixgbe_get_phy_firmware_version_tnx;
|
||||
&ixgbe_get_phy_firmware_version_tnx;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -352,7 +352,7 @@ static s32 ixgbe_init_phy_ops_82599(struct ixgbe_hw *hw)
|
|||
* Determines the link capabilities by reading the AUTOC register.
|
||||
**/
|
||||
static s32 ixgbe_get_link_capabilities_82599(struct ixgbe_hw *hw,
|
||||
ixgbe_link_speed *speed,
|
||||
ixgbe_link_speed *speed,
|
||||
bool *autoneg)
|
||||
{
|
||||
s32 status = 0;
|
||||
|
@ -543,7 +543,7 @@ static void ixgbe_stop_mac_link_on_d3_82599(struct ixgbe_hw *hw)
|
|||
* Restarts the link. Performs autonegotiation if needed.
|
||||
**/
|
||||
static s32 ixgbe_start_mac_link_82599(struct ixgbe_hw *hw,
|
||||
bool autoneg_wait_to_complete)
|
||||
bool autoneg_wait_to_complete)
|
||||
{
|
||||
u32 autoc_reg;
|
||||
u32 links_reg;
|
||||
|
@ -672,8 +672,8 @@ static void ixgbe_flap_tx_laser_multispeed_fiber(struct ixgbe_hw *hw)
|
|||
* Set the link speed in the AUTOC register and restarts link.
|
||||
**/
|
||||
static s32 ixgbe_setup_mac_link_multispeed_fiber(struct ixgbe_hw *hw,
|
||||
ixgbe_link_speed speed,
|
||||
bool autoneg_wait_to_complete)
|
||||
ixgbe_link_speed speed,
|
||||
bool autoneg_wait_to_complete)
|
||||
{
|
||||
s32 status = 0;
|
||||
ixgbe_link_speed link_speed = IXGBE_LINK_SPEED_UNKNOWN;
|
||||
|
@ -820,8 +820,8 @@ static s32 ixgbe_setup_mac_link_multispeed_fiber(struct ixgbe_hw *hw,
|
|||
*/
|
||||
if (speedcnt > 1)
|
||||
status = ixgbe_setup_mac_link_multispeed_fiber(hw,
|
||||
highest_link_speed,
|
||||
autoneg_wait_to_complete);
|
||||
highest_link_speed,
|
||||
autoneg_wait_to_complete);
|
||||
|
||||
out:
|
||||
/* Set autoneg_advertised value based on input link speed */
|
||||
|
@ -1009,8 +1009,8 @@ static s32 ixgbe_setup_mac_link_82599(struct ixgbe_hw *hw,
|
|||
if (speed & IXGBE_LINK_SPEED_1GB_FULL)
|
||||
autoc |= IXGBE_AUTOC_KX_SUPP;
|
||||
} else if ((pma_pmd_1g == IXGBE_AUTOC_1G_SFI) &&
|
||||
(link_mode == IXGBE_AUTOC_LMS_1G_LINK_NO_AN ||
|
||||
link_mode == IXGBE_AUTOC_LMS_1G_AN)) {
|
||||
(link_mode == IXGBE_AUTOC_LMS_1G_LINK_NO_AN ||
|
||||
link_mode == IXGBE_AUTOC_LMS_1G_AN)) {
|
||||
/* Switch from 1G SFI to 10G SFI if requested */
|
||||
if ((speed == IXGBE_LINK_SPEED_10GB_FULL) &&
|
||||
(pma_pmd_10g_serial == IXGBE_AUTOC2_10G_SFI)) {
|
||||
|
@ -1018,7 +1018,7 @@ static s32 ixgbe_setup_mac_link_82599(struct ixgbe_hw *hw,
|
|||
autoc |= IXGBE_AUTOC_LMS_10G_SERIAL;
|
||||
}
|
||||
} else if ((pma_pmd_10g_serial == IXGBE_AUTOC2_10G_SFI) &&
|
||||
(link_mode == IXGBE_AUTOC_LMS_10G_SERIAL)) {
|
||||
(link_mode == IXGBE_AUTOC_LMS_10G_SERIAL)) {
|
||||
/* Switch from 10G SFI to 1G SFI if requested */
|
||||
if ((speed == IXGBE_LINK_SPEED_1GB_FULL) &&
|
||||
(pma_pmd_1g == IXGBE_AUTOC_1G_SFI)) {
|
||||
|
@ -1051,7 +1051,7 @@ static s32 ixgbe_setup_mac_link_82599(struct ixgbe_hw *hw,
|
|||
}
|
||||
if (!(links_reg & IXGBE_LINKS_KX_AN_COMP)) {
|
||||
status =
|
||||
IXGBE_ERR_AUTONEG_NOT_COMPLETE;
|
||||
IXGBE_ERR_AUTONEG_NOT_COMPLETE;
|
||||
hw_dbg(hw, "Autoneg did not complete.\n");
|
||||
}
|
||||
}
|
||||
|
@ -1074,14 +1074,14 @@ static s32 ixgbe_setup_mac_link_82599(struct ixgbe_hw *hw,
|
|||
* Restarts link on PHY and MAC based on settings passed in.
|
||||
**/
|
||||
static s32 ixgbe_setup_copper_link_82599(struct ixgbe_hw *hw,
|
||||
ixgbe_link_speed speed,
|
||||
bool autoneg_wait_to_complete)
|
||||
ixgbe_link_speed speed,
|
||||
bool autoneg_wait_to_complete)
|
||||
{
|
||||
s32 status;
|
||||
|
||||
/* Setup the PHY according to input speed */
|
||||
status = hw->phy.ops.setup_link_speed(hw, speed,
|
||||
autoneg_wait_to_complete);
|
||||
autoneg_wait_to_complete);
|
||||
/* Set up MAC */
|
||||
ixgbe_start_mac_link_82599(hw, autoneg_wait_to_complete);
|
||||
|
||||
|
@ -1224,7 +1224,7 @@ static s32 ixgbe_reset_hw_82599(struct ixgbe_hw *hw)
|
|||
(hw->mac.orig_autoc2 & IXGBE_AUTOC2_UPPER_MASK)) {
|
||||
autoc2 &= ~IXGBE_AUTOC2_UPPER_MASK;
|
||||
autoc2 |= (hw->mac.orig_autoc2 &
|
||||
IXGBE_AUTOC2_UPPER_MASK);
|
||||
IXGBE_AUTOC2_UPPER_MASK);
|
||||
IXGBE_WRITE_REG(hw, IXGBE_AUTOC2, autoc2);
|
||||
}
|
||||
}
|
||||
|
@ -1246,7 +1246,7 @@ static s32 ixgbe_reset_hw_82599(struct ixgbe_hw *hw)
|
|||
/* Add the SAN MAC address to the RAR only if it's a valid address */
|
||||
if (is_valid_ether_addr(hw->mac.san_addr)) {
|
||||
hw->mac.ops.set_rar(hw, hw->mac.num_rar_entries - 1,
|
||||
hw->mac.san_addr, 0, IXGBE_RAH_AV);
|
||||
hw->mac.san_addr, 0, IXGBE_RAH_AV);
|
||||
|
||||
/* Save the SAN MAC RAR index */
|
||||
hw->mac.san_mac_rar_index = hw->mac.num_rar_entries - 1;
|
||||
|
@ -1257,7 +1257,7 @@ static s32 ixgbe_reset_hw_82599(struct ixgbe_hw *hw)
|
|||
|
||||
/* Store the alternative WWNN/WWPN prefix */
|
||||
hw->mac.ops.get_wwn_prefix(hw, &hw->mac.wwnn_prefix,
|
||||
&hw->mac.wwpn_prefix);
|
||||
&hw->mac.wwpn_prefix);
|
||||
|
||||
reset_hw_out:
|
||||
return status;
|
||||
|
@ -1271,6 +1271,7 @@ s32 ixgbe_reinit_fdir_tables_82599(struct ixgbe_hw *hw)
|
|||
{
|
||||
int i;
|
||||
u32 fdirctrl = IXGBE_READ_REG(hw, IXGBE_FDIRCTRL);
|
||||
|
||||
fdirctrl &= ~IXGBE_FDIRCTRL_INIT_DONE;
|
||||
|
||||
/*
|
||||
|
@ -1284,8 +1285,7 @@ s32 ixgbe_reinit_fdir_tables_82599(struct ixgbe_hw *hw)
|
|||
udelay(10);
|
||||
}
|
||||
if (i >= IXGBE_FDIRCMD_CMD_POLL) {
|
||||
hw_dbg(hw, "Flow Director previous command isn't complete, "
|
||||
"aborting table re-initialization.\n");
|
||||
hw_dbg(hw, "Flow Director previous command isn't complete, aborting table re-initialization.\n");
|
||||
return IXGBE_ERR_FDIR_REINIT_FAILED;
|
||||
}
|
||||
|
||||
|
@ -1299,12 +1299,12 @@ s32 ixgbe_reinit_fdir_tables_82599(struct ixgbe_hw *hw)
|
|||
* - write 0 to bit 8 of FDIRCMD register
|
||||
*/
|
||||
IXGBE_WRITE_REG(hw, IXGBE_FDIRCMD,
|
||||
(IXGBE_READ_REG(hw, IXGBE_FDIRCMD) |
|
||||
IXGBE_FDIRCMD_CLEARHT));
|
||||
(IXGBE_READ_REG(hw, IXGBE_FDIRCMD) |
|
||||
IXGBE_FDIRCMD_CLEARHT));
|
||||
IXGBE_WRITE_FLUSH(hw);
|
||||
IXGBE_WRITE_REG(hw, IXGBE_FDIRCMD,
|
||||
(IXGBE_READ_REG(hw, IXGBE_FDIRCMD) &
|
||||
~IXGBE_FDIRCMD_CLEARHT));
|
||||
(IXGBE_READ_REG(hw, IXGBE_FDIRCMD) &
|
||||
~IXGBE_FDIRCMD_CLEARHT));
|
||||
IXGBE_WRITE_FLUSH(hw);
|
||||
/*
|
||||
* Clear FDIR Hash register to clear any leftover hashes
|
||||
|
@ -1319,7 +1319,7 @@ s32 ixgbe_reinit_fdir_tables_82599(struct ixgbe_hw *hw)
|
|||
/* Poll init-done after we write FDIRCTRL register */
|
||||
for (i = 0; i < IXGBE_FDIR_INIT_DONE_POLL; i++) {
|
||||
if (IXGBE_READ_REG(hw, IXGBE_FDIRCTRL) &
|
||||
IXGBE_FDIRCTRL_INIT_DONE)
|
||||
IXGBE_FDIRCTRL_INIT_DONE)
|
||||
break;
|
||||
usleep_range(1000, 2000);
|
||||
}
|
||||
|
@ -1368,7 +1368,7 @@ static void ixgbe_fdir_enable_82599(struct ixgbe_hw *hw, u32 fdirctrl)
|
|||
IXGBE_WRITE_FLUSH(hw);
|
||||
for (i = 0; i < IXGBE_FDIR_INIT_DONE_POLL; i++) {
|
||||
if (IXGBE_READ_REG(hw, IXGBE_FDIRCTRL) &
|
||||
IXGBE_FDIRCTRL_INIT_DONE)
|
||||
IXGBE_FDIRCTRL_INIT_DONE)
|
||||
break;
|
||||
usleep_range(1000, 2000);
|
||||
}
|
||||
|
@ -1453,7 +1453,7 @@ do { \
|
|||
bucket_hash ^= hi_hash_dword >> n; \
|
||||
else if (IXGBE_ATR_SIGNATURE_HASH_KEY & (0x01 << (n + 16))) \
|
||||
sig_hash ^= hi_hash_dword << (16 - n); \
|
||||
} while (0);
|
||||
} while (0)
|
||||
|
||||
/**
|
||||
* ixgbe_atr_compute_sig_hash_82599 - Compute the signature hash
|
||||
|
@ -1529,9 +1529,9 @@ static u32 ixgbe_atr_compute_sig_hash_82599(union ixgbe_atr_hash_dword input,
|
|||
* @queue: queue index to direct traffic to
|
||||
**/
|
||||
s32 ixgbe_fdir_add_signature_filter_82599(struct ixgbe_hw *hw,
|
||||
union ixgbe_atr_hash_dword input,
|
||||
union ixgbe_atr_hash_dword common,
|
||||
u8 queue)
|
||||
union ixgbe_atr_hash_dword input,
|
||||
union ixgbe_atr_hash_dword common,
|
||||
u8 queue)
|
||||
{
|
||||
u64 fdirhashcmd;
|
||||
u32 fdircmd;
|
||||
|
@ -1555,7 +1555,7 @@ s32 ixgbe_fdir_add_signature_filter_82599(struct ixgbe_hw *hw,
|
|||
|
||||
/* configure FDIRCMD register */
|
||||
fdircmd = IXGBE_FDIRCMD_CMD_ADD_FLOW | IXGBE_FDIRCMD_FILTER_UPDATE |
|
||||
IXGBE_FDIRCMD_LAST | IXGBE_FDIRCMD_QUEUE_EN;
|
||||
IXGBE_FDIRCMD_LAST | IXGBE_FDIRCMD_QUEUE_EN;
|
||||
fdircmd |= input.formatted.flow_type << IXGBE_FDIRCMD_FLOW_TYPE_SHIFT;
|
||||
fdircmd |= (u32)queue << IXGBE_FDIRCMD_RX_QUEUE_SHIFT;
|
||||
|
||||
|
@ -1579,7 +1579,7 @@ do { \
|
|||
bucket_hash ^= lo_hash_dword >> n; \
|
||||
if (IXGBE_ATR_BUCKET_HASH_KEY & (0x01 << (n + 16))) \
|
||||
bucket_hash ^= hi_hash_dword >> n; \
|
||||
} while (0);
|
||||
} while (0)
|
||||
|
||||
/**
|
||||
* ixgbe_atr_compute_perfect_hash_82599 - Compute the perfect filter hash
|
||||
|
@ -1651,6 +1651,7 @@ void ixgbe_atr_compute_perfect_hash_82599(union ixgbe_atr_input *input,
|
|||
static u32 ixgbe_get_fdirtcpm_82599(union ixgbe_atr_input *input_mask)
|
||||
{
|
||||
u32 mask = ntohs(input_mask->formatted.dst_port);
|
||||
|
||||
mask <<= IXGBE_FDIRTCPM_DPORTM_SHIFT;
|
||||
mask |= ntohs(input_mask->formatted.src_port);
|
||||
mask = ((mask & 0x55555555) << 1) | ((mask & 0xAAAAAAAA) >> 1);
|
||||
|
@ -1885,7 +1886,7 @@ static s32 ixgbe_read_analog_reg8_82599(struct ixgbe_hw *hw, u32 reg, u8 *val)
|
|||
u32 core_ctl;
|
||||
|
||||
IXGBE_WRITE_REG(hw, IXGBE_CORECTL, IXGBE_CORECTL_WRITE_CMD |
|
||||
(reg << 8));
|
||||
(reg << 8));
|
||||
IXGBE_WRITE_FLUSH(hw);
|
||||
udelay(10);
|
||||
core_ctl = IXGBE_READ_REG(hw, IXGBE_CORECTL);
|
||||
|
|
|
@ -41,7 +41,7 @@ static void ixgbe_release_eeprom_semaphore(struct ixgbe_hw *hw);
|
|||
static s32 ixgbe_ready_eeprom(struct ixgbe_hw *hw);
|
||||
static void ixgbe_standby_eeprom(struct ixgbe_hw *hw);
|
||||
static void ixgbe_shift_out_eeprom_bits(struct ixgbe_hw *hw, u16 data,
|
||||
u16 count);
|
||||
u16 count);
|
||||
static u16 ixgbe_shift_in_eeprom_bits(struct ixgbe_hw *hw, u16 count);
|
||||
static void ixgbe_raise_eeprom_clk(struct ixgbe_hw *hw, u32 *eec);
|
||||
static void ixgbe_lower_eeprom_clk(struct ixgbe_hw *hw, u32 *eec);
|
||||
|
@ -485,7 +485,7 @@ s32 ixgbe_clear_hw_cntrs_generic(struct ixgbe_hw *hw)
|
|||
* Reads the part number string from the EEPROM.
|
||||
**/
|
||||
s32 ixgbe_read_pba_string_generic(struct ixgbe_hw *hw, u8 *pba_num,
|
||||
u32 pba_num_size)
|
||||
u32 pba_num_size)
|
||||
{
|
||||
s32 ret_val;
|
||||
u16 data;
|
||||
|
@ -818,9 +818,8 @@ s32 ixgbe_init_eeprom_params_generic(struct ixgbe_hw *hw)
|
|||
eeprom->address_bits = 16;
|
||||
else
|
||||
eeprom->address_bits = 8;
|
||||
hw_dbg(hw, "Eeprom params: type = %d, size = %d, address bits: "
|
||||
"%d\n", eeprom->type, eeprom->word_size,
|
||||
eeprom->address_bits);
|
||||
hw_dbg(hw, "Eeprom params: type = %d, size = %d, address bits: %d\n",
|
||||
eeprom->type, eeprom->word_size, eeprom->address_bits);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -1392,8 +1391,7 @@ static s32 ixgbe_get_eeprom_semaphore(struct ixgbe_hw *hw)
|
|||
}
|
||||
|
||||
if (i == timeout) {
|
||||
hw_dbg(hw, "Driver can't access the Eeprom - SMBI Semaphore "
|
||||
"not granted.\n");
|
||||
hw_dbg(hw, "Driver can't access the Eeprom - SMBI Semaphore not granted.\n");
|
||||
/*
|
||||
* this release is particularly important because our attempts
|
||||
* above to get the semaphore may have succeeded, and if there
|
||||
|
@ -1438,14 +1436,12 @@ static s32 ixgbe_get_eeprom_semaphore(struct ixgbe_hw *hw)
|
|||
* was not granted because we don't have access to the EEPROM
|
||||
*/
|
||||
if (i >= timeout) {
|
||||
hw_dbg(hw, "SWESMBI Software EEPROM semaphore "
|
||||
"not granted.\n");
|
||||
hw_dbg(hw, "SWESMBI Software EEPROM semaphore not granted.\n");
|
||||
ixgbe_release_eeprom_semaphore(hw);
|
||||
status = IXGBE_ERR_EEPROM;
|
||||
}
|
||||
} else {
|
||||
hw_dbg(hw, "Software semaphore SMBI between device drivers "
|
||||
"not granted.\n");
|
||||
hw_dbg(hw, "Software semaphore SMBI between device drivers not granted.\n");
|
||||
}
|
||||
|
||||
return status;
|
||||
|
@ -1487,7 +1483,7 @@ static s32 ixgbe_ready_eeprom(struct ixgbe_hw *hw)
|
|||
*/
|
||||
for (i = 0; i < IXGBE_EEPROM_MAX_RETRY_SPI; i += 5) {
|
||||
ixgbe_shift_out_eeprom_bits(hw, IXGBE_EEPROM_RDSR_OPCODE_SPI,
|
||||
IXGBE_EEPROM_OPCODE_BITS);
|
||||
IXGBE_EEPROM_OPCODE_BITS);
|
||||
spi_stat_reg = (u8)ixgbe_shift_in_eeprom_bits(hw, 8);
|
||||
if (!(spi_stat_reg & IXGBE_EEPROM_STATUS_RDY_SPI))
|
||||
break;
|
||||
|
@ -1536,7 +1532,7 @@ static void ixgbe_standby_eeprom(struct ixgbe_hw *hw)
|
|||
* @count: number of bits to shift out
|
||||
**/
|
||||
static void ixgbe_shift_out_eeprom_bits(struct ixgbe_hw *hw, u16 data,
|
||||
u16 count)
|
||||
u16 count)
|
||||
{
|
||||
u32 eec;
|
||||
u32 mask;
|
||||
|
@ -1740,7 +1736,7 @@ u16 ixgbe_calc_eeprom_checksum_generic(struct ixgbe_hw *hw)
|
|||
* caller does not need checksum_val, the value can be NULL.
|
||||
**/
|
||||
s32 ixgbe_validate_eeprom_checksum_generic(struct ixgbe_hw *hw,
|
||||
u16 *checksum_val)
|
||||
u16 *checksum_val)
|
||||
{
|
||||
s32 status;
|
||||
u16 checksum;
|
||||
|
@ -1813,7 +1809,7 @@ s32 ixgbe_update_eeprom_checksum_generic(struct ixgbe_hw *hw)
|
|||
* Puts an ethernet address into a receive address register.
|
||||
**/
|
||||
s32 ixgbe_set_rar_generic(struct ixgbe_hw *hw, u32 index, u8 *addr, u32 vmdq,
|
||||
u32 enable_addr)
|
||||
u32 enable_addr)
|
||||
{
|
||||
u32 rar_low, rar_high;
|
||||
u32 rar_entries = hw->mac.num_rar_entries;
|
||||
|
@ -2057,7 +2053,7 @@ s32 ixgbe_update_mc_addr_list_generic(struct ixgbe_hw *hw,
|
|||
|
||||
if (hw->addr_ctrl.mta_in_use > 0)
|
||||
IXGBE_WRITE_REG(hw, IXGBE_MCSTCTRL,
|
||||
IXGBE_MCSTCTRL_MFE | hw->mac.mc_filter_type);
|
||||
IXGBE_MCSTCTRL_MFE | hw->mac.mc_filter_type);
|
||||
|
||||
hw_dbg(hw, "ixgbe_update_mc_addr_list_generic Complete\n");
|
||||
return 0;
|
||||
|
@ -2075,7 +2071,7 @@ s32 ixgbe_enable_mc_generic(struct ixgbe_hw *hw)
|
|||
|
||||
if (a->mta_in_use > 0)
|
||||
IXGBE_WRITE_REG(hw, IXGBE_MCSTCTRL, IXGBE_MCSTCTRL_MFE |
|
||||
hw->mac.mc_filter_type);
|
||||
hw->mac.mc_filter_type);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -2663,8 +2659,7 @@ s32 ixgbe_disable_rx_buff_generic(struct ixgbe_hw *hw)
|
|||
|
||||
/* For informational purposes only */
|
||||
if (i >= IXGBE_MAX_SECRX_POLL)
|
||||
hw_dbg(hw, "Rx unit being enabled before security "
|
||||
"path fully disabled. Continuing with init.\n");
|
||||
hw_dbg(hw, "Rx unit being enabled before security path fully disabled. Continuing with init.\n");
|
||||
|
||||
return 0;
|
||||
|
||||
|
@ -2791,7 +2786,7 @@ s32 ixgbe_blink_led_stop_generic(struct ixgbe_hw *hw, u32 index)
|
|||
* get and set mac_addr routines.
|
||||
**/
|
||||
static s32 ixgbe_get_san_mac_addr_offset(struct ixgbe_hw *hw,
|
||||
u16 *san_mac_offset)
|
||||
u16 *san_mac_offset)
|
||||
{
|
||||
s32 ret_val;
|
||||
|
||||
|
@ -2837,7 +2832,7 @@ s32 ixgbe_get_san_mac_addr_generic(struct ixgbe_hw *hw, u8 *san_mac_addr)
|
|||
hw->mac.ops.set_lan_id(hw);
|
||||
/* apply the port offset to the address offset */
|
||||
(hw->bus.func) ? (san_mac_offset += IXGBE_SAN_MAC_ADDR_PORT1_OFFSET) :
|
||||
(san_mac_offset += IXGBE_SAN_MAC_ADDR_PORT0_OFFSET);
|
||||
(san_mac_offset += IXGBE_SAN_MAC_ADDR_PORT0_OFFSET);
|
||||
for (i = 0; i < 3; i++) {
|
||||
ret_val = hw->eeprom.ops.read(hw, san_mac_offset,
|
||||
&san_mac_data);
|
||||
|
@ -3077,7 +3072,7 @@ static s32 ixgbe_find_vlvf_slot(struct ixgbe_hw *hw, u32 vlan)
|
|||
* Turn on/off specified VLAN in the VLAN filter table.
|
||||
**/
|
||||
s32 ixgbe_set_vfta_generic(struct ixgbe_hw *hw, u32 vlan, u32 vind,
|
||||
bool vlan_on)
|
||||
bool vlan_on)
|
||||
{
|
||||
s32 regindex;
|
||||
u32 bitindex;
|
||||
|
@ -3199,9 +3194,9 @@ s32 ixgbe_set_vfta_generic(struct ixgbe_hw *hw, u32 vlan, u32 vind,
|
|||
* Ignore it. */
|
||||
vfta_changed = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
} else {
|
||||
IXGBE_WRITE_REG(hw, IXGBE_VLVF(vlvf_index), 0);
|
||||
}
|
||||
}
|
||||
|
||||
if (vfta_changed)
|
||||
|
@ -3301,7 +3296,7 @@ s32 ixgbe_check_mac_link_generic(struct ixgbe_hw *hw, ixgbe_link_speed *speed,
|
|||
* block to check the support for the alternative WWNN/WWPN prefix support.
|
||||
**/
|
||||
s32 ixgbe_get_wwn_prefix_generic(struct ixgbe_hw *hw, u16 *wwnn_prefix,
|
||||
u16 *wwpn_prefix)
|
||||
u16 *wwpn_prefix)
|
||||
{
|
||||
u16 offset, caps;
|
||||
u16 alt_san_mac_blk_offset;
|
||||
|
|
|
@ -39,7 +39,7 @@ s32 ixgbe_start_hw_generic(struct ixgbe_hw *hw);
|
|||
s32 ixgbe_start_hw_gen2(struct ixgbe_hw *hw);
|
||||
s32 ixgbe_clear_hw_cntrs_generic(struct ixgbe_hw *hw);
|
||||
s32 ixgbe_read_pba_string_generic(struct ixgbe_hw *hw, u8 *pba_num,
|
||||
u32 pba_num_size);
|
||||
u32 pba_num_size);
|
||||
s32 ixgbe_get_mac_addr_generic(struct ixgbe_hw *hw, u8 *mac_addr);
|
||||
enum ixgbe_bus_width ixgbe_convert_bus_width(u16 link_status);
|
||||
enum ixgbe_bus_speed ixgbe_convert_bus_speed(u16 link_status);
|
||||
|
@ -61,16 +61,16 @@ s32 ixgbe_write_eewr_generic(struct ixgbe_hw *hw, u16 offset, u16 data);
|
|||
s32 ixgbe_write_eewr_buffer_generic(struct ixgbe_hw *hw, u16 offset,
|
||||
u16 words, u16 *data);
|
||||
s32 ixgbe_read_eeprom_bit_bang_generic(struct ixgbe_hw *hw, u16 offset,
|
||||
u16 *data);
|
||||
u16 *data);
|
||||
s32 ixgbe_read_eeprom_buffer_bit_bang_generic(struct ixgbe_hw *hw, u16 offset,
|
||||
u16 words, u16 *data);
|
||||
u16 ixgbe_calc_eeprom_checksum_generic(struct ixgbe_hw *hw);
|
||||
s32 ixgbe_validate_eeprom_checksum_generic(struct ixgbe_hw *hw,
|
||||
u16 *checksum_val);
|
||||
u16 *checksum_val);
|
||||
s32 ixgbe_update_eeprom_checksum_generic(struct ixgbe_hw *hw);
|
||||
|
||||
s32 ixgbe_set_rar_generic(struct ixgbe_hw *hw, u32 index, u8 *addr, u32 vmdq,
|
||||
u32 enable_addr);
|
||||
u32 enable_addr);
|
||||
s32 ixgbe_clear_rar_generic(struct ixgbe_hw *hw, u32 index);
|
||||
s32 ixgbe_init_rx_addrs_generic(struct ixgbe_hw *hw);
|
||||
s32 ixgbe_update_mc_addr_list_generic(struct ixgbe_hw *hw,
|
||||
|
@ -92,13 +92,13 @@ s32 ixgbe_set_vmdq_san_mac_generic(struct ixgbe_hw *hw, u32 vmdq);
|
|||
s32 ixgbe_clear_vmdq_generic(struct ixgbe_hw *hw, u32 rar, u32 vmdq);
|
||||
s32 ixgbe_init_uta_tables_generic(struct ixgbe_hw *hw);
|
||||
s32 ixgbe_set_vfta_generic(struct ixgbe_hw *hw, u32 vlan,
|
||||
u32 vind, bool vlan_on);
|
||||
u32 vind, bool vlan_on);
|
||||
s32 ixgbe_clear_vfta_generic(struct ixgbe_hw *hw);
|
||||
s32 ixgbe_check_mac_link_generic(struct ixgbe_hw *hw,
|
||||
ixgbe_link_speed *speed,
|
||||
bool *link_up, bool link_up_wait_to_complete);
|
||||
ixgbe_link_speed *speed,
|
||||
bool *link_up, bool link_up_wait_to_complete);
|
||||
s32 ixgbe_get_wwn_prefix_generic(struct ixgbe_hw *hw, u16 *wwnn_prefix,
|
||||
u16 *wwpn_prefix);
|
||||
u16 *wwpn_prefix);
|
||||
|
||||
s32 prot_autoc_read_generic(struct ixgbe_hw *hw, bool *, u32 *reg_val);
|
||||
s32 prot_autoc_write_generic(struct ixgbe_hw *hw, u32 reg_val, bool locked);
|
||||
|
|
|
@ -267,7 +267,7 @@ void ixgbe_dcb_unpack_map(struct ixgbe_dcb_config *cfg, int direction, u8 *map)
|
|||
* Configure dcb settings and enable dcb mode.
|
||||
*/
|
||||
s32 ixgbe_dcb_hw_config(struct ixgbe_hw *hw,
|
||||
struct ixgbe_dcb_config *dcb_config)
|
||||
struct ixgbe_dcb_config *dcb_config)
|
||||
{
|
||||
s32 ret = 0;
|
||||
u8 pfc_en;
|
||||
|
@ -389,7 +389,6 @@ static void ixgbe_dcb_read_rtrup2tc_82599(struct ixgbe_hw *hw, u8 *map)
|
|||
for (i = 0; i < MAX_USER_PRIORITY; i++)
|
||||
map[i] = IXGBE_RTRUP2TC_UP_MASK &
|
||||
(reg >> (i * IXGBE_RTRUP2TC_UP_SHIFT));
|
||||
return;
|
||||
}
|
||||
|
||||
void ixgbe_dcb_read_rtrup2tc(struct ixgbe_hw *hw, u8 *map)
|
||||
|
|
|
@ -31,17 +31,17 @@
|
|||
|
||||
/* DCB register definitions */
|
||||
#define IXGBE_RTTDCS_TDPAC 0x00000001 /* 0 Round Robin,
|
||||
* 1 WSP - Weighted Strict Priority
|
||||
*/
|
||||
* 1 WSP - Weighted Strict Priority
|
||||
*/
|
||||
#define IXGBE_RTTDCS_VMPAC 0x00000002 /* 0 Round Robin,
|
||||
* 1 WRR - Weighted Round Robin
|
||||
*/
|
||||
* 1 WRR - Weighted Round Robin
|
||||
*/
|
||||
#define IXGBE_RTTDCS_TDRM 0x00000010 /* Transmit Recycle Mode */
|
||||
#define IXGBE_RTTDCS_ARBDIS 0x00000040 /* DCB arbiter disable */
|
||||
#define IXGBE_RTTDCS_BDPM 0x00400000 /* Bypass Data Pipe - must clear! */
|
||||
#define IXGBE_RTTDCS_BPBFSM 0x00800000 /* Bypass PB Free Space - must
|
||||
* clear!
|
||||
*/
|
||||
* clear!
|
||||
*/
|
||||
#define IXGBE_RTTDCS_SPEED_CHG 0x80000000 /* Link speed change */
|
||||
|
||||
/* Receive UP2TC mapping */
|
||||
|
@ -56,11 +56,11 @@
|
|||
#define IXGBE_RTRPT4C_LSP 0x80000000 /* LSP enable bit */
|
||||
|
||||
#define IXGBE_RDRXCTL_MPBEN 0x00000010 /* DMA config for multiple packet
|
||||
* buffers enable
|
||||
*/
|
||||
* buffers enable
|
||||
*/
|
||||
#define IXGBE_RDRXCTL_MCEN 0x00000040 /* DMA config for multiple cores
|
||||
* (RSS) enable
|
||||
*/
|
||||
* (RSS) enable
|
||||
*/
|
||||
|
||||
/* RTRPCS Bit Masks */
|
||||
#define IXGBE_RTRPCS_RRM 0x00000002 /* Receive Recycle Mode enable */
|
||||
|
@ -81,8 +81,8 @@
|
|||
|
||||
/* RTTPCS Bit Masks */
|
||||
#define IXGBE_RTTPCS_TPPAC 0x00000020 /* 0 Round Robin,
|
||||
* 1 SP - Strict Priority
|
||||
*/
|
||||
* 1 SP - Strict Priority
|
||||
*/
|
||||
#define IXGBE_RTTPCS_ARBDIS 0x00000040 /* Arbiter disable */
|
||||
#define IXGBE_RTTPCS_TPRM 0x00000100 /* Transmit Recycle Mode enable */
|
||||
#define IXGBE_RTTPCS_ARBD_SHIFT 22
|
||||
|
|
|
@ -192,8 +192,8 @@ static void ixgbe_dcbnl_get_perm_hw_addr(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static void ixgbe_dcbnl_set_pg_tc_cfg_tx(struct net_device *netdev, int tc,
|
||||
u8 prio, u8 bwg_id, u8 bw_pct,
|
||||
u8 up_map)
|
||||
u8 prio, u8 bwg_id, u8 bw_pct,
|
||||
u8 up_map)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
@ -210,7 +210,7 @@ static void ixgbe_dcbnl_set_pg_tc_cfg_tx(struct net_device *netdev, int tc,
|
|||
}
|
||||
|
||||
static void ixgbe_dcbnl_set_pg_bwg_cfg_tx(struct net_device *netdev, int bwg_id,
|
||||
u8 bw_pct)
|
||||
u8 bw_pct)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
@ -218,8 +218,8 @@ static void ixgbe_dcbnl_set_pg_bwg_cfg_tx(struct net_device *netdev, int bwg_id,
|
|||
}
|
||||
|
||||
static void ixgbe_dcbnl_set_pg_tc_cfg_rx(struct net_device *netdev, int tc,
|
||||
u8 prio, u8 bwg_id, u8 bw_pct,
|
||||
u8 up_map)
|
||||
u8 prio, u8 bwg_id, u8 bw_pct,
|
||||
u8 up_map)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
@ -236,7 +236,7 @@ static void ixgbe_dcbnl_set_pg_tc_cfg_rx(struct net_device *netdev, int tc,
|
|||
}
|
||||
|
||||
static void ixgbe_dcbnl_set_pg_bwg_cfg_rx(struct net_device *netdev, int bwg_id,
|
||||
u8 bw_pct)
|
||||
u8 bw_pct)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
@ -244,8 +244,8 @@ static void ixgbe_dcbnl_set_pg_bwg_cfg_rx(struct net_device *netdev, int bwg_id,
|
|||
}
|
||||
|
||||
static void ixgbe_dcbnl_get_pg_tc_cfg_tx(struct net_device *netdev, int tc,
|
||||
u8 *prio, u8 *bwg_id, u8 *bw_pct,
|
||||
u8 *up_map)
|
||||
u8 *prio, u8 *bwg_id, u8 *bw_pct,
|
||||
u8 *up_map)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
@ -256,7 +256,7 @@ static void ixgbe_dcbnl_get_pg_tc_cfg_tx(struct net_device *netdev, int tc,
|
|||
}
|
||||
|
||||
static void ixgbe_dcbnl_get_pg_bwg_cfg_tx(struct net_device *netdev, int bwg_id,
|
||||
u8 *bw_pct)
|
||||
u8 *bw_pct)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
@ -264,8 +264,8 @@ static void ixgbe_dcbnl_get_pg_bwg_cfg_tx(struct net_device *netdev, int bwg_id,
|
|||
}
|
||||
|
||||
static void ixgbe_dcbnl_get_pg_tc_cfg_rx(struct net_device *netdev, int tc,
|
||||
u8 *prio, u8 *bwg_id, u8 *bw_pct,
|
||||
u8 *up_map)
|
||||
u8 *prio, u8 *bwg_id, u8 *bw_pct,
|
||||
u8 *up_map)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
@ -276,7 +276,7 @@ static void ixgbe_dcbnl_get_pg_tc_cfg_rx(struct net_device *netdev, int tc,
|
|||
}
|
||||
|
||||
static void ixgbe_dcbnl_get_pg_bwg_cfg_rx(struct net_device *netdev, int bwg_id,
|
||||
u8 *bw_pct)
|
||||
u8 *bw_pct)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
@ -284,7 +284,7 @@ static void ixgbe_dcbnl_get_pg_bwg_cfg_rx(struct net_device *netdev, int bwg_id,
|
|||
}
|
||||
|
||||
static void ixgbe_dcbnl_set_pfc_cfg(struct net_device *netdev, int priority,
|
||||
u8 setting)
|
||||
u8 setting)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
@ -295,7 +295,7 @@ static void ixgbe_dcbnl_set_pfc_cfg(struct net_device *netdev, int priority,
|
|||
}
|
||||
|
||||
static void ixgbe_dcbnl_get_pfc_cfg(struct net_device *netdev, int priority,
|
||||
u8 *setting)
|
||||
u8 *setting)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
|
|
@ -253,8 +253,7 @@ void ixgbe_dbg_adapter_init(struct ixgbe_adapter *adapter)
|
|||
**/
|
||||
void ixgbe_dbg_adapter_exit(struct ixgbe_adapter *adapter)
|
||||
{
|
||||
if (adapter->ixgbe_dbg_adapter)
|
||||
debugfs_remove_recursive(adapter->ixgbe_dbg_adapter);
|
||||
debugfs_remove_recursive(adapter->ixgbe_dbg_adapter);
|
||||
adapter->ixgbe_dbg_adapter = NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -141,8 +141,8 @@ static const struct ixgbe_stats ixgbe_gstrings_stats[] = {
|
|||
sizeof(((struct ixgbe_adapter *)0)->stats.pxofftxc)) \
|
||||
/ sizeof(u64))
|
||||
#define IXGBE_STATS_LEN (IXGBE_GLOBAL_STATS_LEN + \
|
||||
IXGBE_PB_STATS_LEN + \
|
||||
IXGBE_QUEUE_STATS_LEN)
|
||||
IXGBE_PB_STATS_LEN + \
|
||||
IXGBE_QUEUE_STATS_LEN)
|
||||
|
||||
static const char ixgbe_gstrings_test[][ETH_GSTRING_LEN] = {
|
||||
"Register test (offline)", "Eeprom test (offline)",
|
||||
|
@ -152,7 +152,7 @@ static const char ixgbe_gstrings_test[][ETH_GSTRING_LEN] = {
|
|||
#define IXGBE_TEST_LEN sizeof(ixgbe_gstrings_test) / ETH_GSTRING_LEN
|
||||
|
||||
static int ixgbe_get_settings(struct net_device *netdev,
|
||||
struct ethtool_cmd *ecmd)
|
||||
struct ethtool_cmd *ecmd)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
struct ixgbe_hw *hw = &adapter->hw;
|
||||
|
@ -311,7 +311,7 @@ static int ixgbe_get_settings(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int ixgbe_set_settings(struct net_device *netdev,
|
||||
struct ethtool_cmd *ecmd)
|
||||
struct ethtool_cmd *ecmd)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
struct ixgbe_hw *hw = &adapter->hw;
|
||||
|
@ -368,7 +368,7 @@ static int ixgbe_set_settings(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static void ixgbe_get_pauseparam(struct net_device *netdev,
|
||||
struct ethtool_pauseparam *pause)
|
||||
struct ethtool_pauseparam *pause)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
struct ixgbe_hw *hw = &adapter->hw;
|
||||
|
@ -390,7 +390,7 @@ static void ixgbe_get_pauseparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int ixgbe_set_pauseparam(struct net_device *netdev,
|
||||
struct ethtool_pauseparam *pause)
|
||||
struct ethtool_pauseparam *pause)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
struct ixgbe_hw *hw = &adapter->hw;
|
||||
|
@ -450,7 +450,7 @@ static int ixgbe_get_regs_len(struct net_device *netdev)
|
|||
#define IXGBE_GET_STAT(_A_, _R_) _A_->stats._R_
|
||||
|
||||
static void ixgbe_get_regs(struct net_device *netdev,
|
||||
struct ethtool_regs *regs, void *p)
|
||||
struct ethtool_regs *regs, void *p)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
struct ixgbe_hw *hw = &adapter->hw;
|
||||
|
@ -812,7 +812,7 @@ static int ixgbe_get_eeprom_len(struct net_device *netdev)
|
|||
}
|
||||
|
||||
static int ixgbe_get_eeprom(struct net_device *netdev,
|
||||
struct ethtool_eeprom *eeprom, u8 *bytes)
|
||||
struct ethtool_eeprom *eeprom, u8 *bytes)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
struct ixgbe_hw *hw = &adapter->hw;
|
||||
|
@ -918,7 +918,7 @@ static int ixgbe_set_eeprom(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static void ixgbe_get_drvinfo(struct net_device *netdev,
|
||||
struct ethtool_drvinfo *drvinfo)
|
||||
struct ethtool_drvinfo *drvinfo)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
u32 nvm_track_id;
|
||||
|
@ -940,7 +940,7 @@ static void ixgbe_get_drvinfo(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static void ixgbe_get_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
struct ixgbe_ring *tx_ring = adapter->tx_ring[0];
|
||||
|
@ -953,7 +953,7 @@ static void ixgbe_get_ringparam(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int ixgbe_set_ringparam(struct net_device *netdev,
|
||||
struct ethtool_ringparam *ring)
|
||||
struct ethtool_ringparam *ring)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
struct ixgbe_ring *temp_ring;
|
||||
|
@ -1082,7 +1082,7 @@ static int ixgbe_get_sset_count(struct net_device *netdev, int sset)
|
|||
}
|
||||
|
||||
static void ixgbe_get_ethtool_stats(struct net_device *netdev,
|
||||
struct ethtool_stats *stats, u64 *data)
|
||||
struct ethtool_stats *stats, u64 *data)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
struct rtnl_link_stats64 temp;
|
||||
|
@ -1110,7 +1110,7 @@ static void ixgbe_get_ethtool_stats(struct net_device *netdev,
|
|||
}
|
||||
|
||||
data[i] = (ixgbe_gstrings_stats[i].sizeof_stat ==
|
||||
sizeof(u64)) ? *(u64 *)p : *(u32 *)p;
|
||||
sizeof(u64)) ? *(u64 *)p : *(u32 *)p;
|
||||
}
|
||||
for (j = 0; j < netdev->num_tx_queues; j++) {
|
||||
ring = adapter->tx_ring[j];
|
||||
|
@ -1180,7 +1180,7 @@ static void ixgbe_get_ethtool_stats(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static void ixgbe_get_strings(struct net_device *netdev, u32 stringset,
|
||||
u8 *data)
|
||||
u8 *data)
|
||||
{
|
||||
char *p = (char *)data;
|
||||
int i;
|
||||
|
@ -1357,8 +1357,7 @@ static bool reg_pattern_test(struct ixgbe_adapter *adapter, u64 *data, int reg,
|
|||
ixgbe_write_reg(&adapter->hw, reg, test_pattern[pat] & write);
|
||||
val = ixgbe_read_reg(&adapter->hw, reg);
|
||||
if (val != (test_pattern[pat] & write & mask)) {
|
||||
e_err(drv, "pattern test reg %04X failed: got "
|
||||
"0x%08X expected 0x%08X\n",
|
||||
e_err(drv, "pattern test reg %04X failed: got 0x%08X expected 0x%08X\n",
|
||||
reg, val, (test_pattern[pat] & write & mask));
|
||||
*data = reg;
|
||||
ixgbe_write_reg(&adapter->hw, reg, before);
|
||||
|
@ -1382,8 +1381,8 @@ static bool reg_set_and_check(struct ixgbe_adapter *adapter, u64 *data, int reg,
|
|||
ixgbe_write_reg(&adapter->hw, reg, write & mask);
|
||||
val = ixgbe_read_reg(&adapter->hw, reg);
|
||||
if ((write & mask) != (val & mask)) {
|
||||
e_err(drv, "set/check reg %04X test failed: got 0x%08X "
|
||||
"expected 0x%08X\n", reg, (val & mask), (write & mask));
|
||||
e_err(drv, "set/check reg %04X test failed: got 0x%08X expected 0x%08X\n",
|
||||
reg, (val & mask), (write & mask));
|
||||
*data = reg;
|
||||
ixgbe_write_reg(&adapter->hw, reg, before);
|
||||
return true;
|
||||
|
@ -1430,8 +1429,8 @@ static int ixgbe_reg_test(struct ixgbe_adapter *adapter, u64 *data)
|
|||
ixgbe_write_reg(&adapter->hw, IXGBE_STATUS, toggle);
|
||||
after = ixgbe_read_reg(&adapter->hw, IXGBE_STATUS) & toggle;
|
||||
if (value != after) {
|
||||
e_err(drv, "failed STATUS register test got: 0x%08X "
|
||||
"expected: 0x%08X\n", after, value);
|
||||
e_err(drv, "failed STATUS register test got: 0x%08X expected: 0x%08X\n",
|
||||
after, value);
|
||||
*data = 1;
|
||||
return 1;
|
||||
}
|
||||
|
@ -1533,10 +1532,10 @@ static int ixgbe_intr_test(struct ixgbe_adapter *adapter, u64 *data)
|
|||
return -1;
|
||||
}
|
||||
} else if (!request_irq(irq, ixgbe_test_intr, IRQF_PROBE_SHARED,
|
||||
netdev->name, netdev)) {
|
||||
netdev->name, netdev)) {
|
||||
shared_int = false;
|
||||
} else if (request_irq(irq, ixgbe_test_intr, IRQF_SHARED,
|
||||
netdev->name, netdev)) {
|
||||
netdev->name, netdev)) {
|
||||
*data = 1;
|
||||
return -1;
|
||||
}
|
||||
|
@ -1563,9 +1562,9 @@ static int ixgbe_intr_test(struct ixgbe_adapter *adapter, u64 *data)
|
|||
*/
|
||||
adapter->test_icr = 0;
|
||||
IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMC,
|
||||
~mask & 0x00007FFF);
|
||||
~mask & 0x00007FFF);
|
||||
IXGBE_WRITE_REG(&adapter->hw, IXGBE_EICS,
|
||||
~mask & 0x00007FFF);
|
||||
~mask & 0x00007FFF);
|
||||
IXGBE_WRITE_FLUSH(&adapter->hw);
|
||||
usleep_range(10000, 20000);
|
||||
|
||||
|
@ -1587,7 +1586,7 @@ static int ixgbe_intr_test(struct ixgbe_adapter *adapter, u64 *data)
|
|||
IXGBE_WRITE_FLUSH(&adapter->hw);
|
||||
usleep_range(10000, 20000);
|
||||
|
||||
if (!(adapter->test_icr &mask)) {
|
||||
if (!(adapter->test_icr & mask)) {
|
||||
*data = 4;
|
||||
break;
|
||||
}
|
||||
|
@ -1602,9 +1601,9 @@ static int ixgbe_intr_test(struct ixgbe_adapter *adapter, u64 *data)
|
|||
*/
|
||||
adapter->test_icr = 0;
|
||||
IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMC,
|
||||
~mask & 0x00007FFF);
|
||||
~mask & 0x00007FFF);
|
||||
IXGBE_WRITE_REG(&adapter->hw, IXGBE_EICS,
|
||||
~mask & 0x00007FFF);
|
||||
~mask & 0x00007FFF);
|
||||
IXGBE_WRITE_FLUSH(&adapter->hw);
|
||||
usleep_range(10000, 20000);
|
||||
|
||||
|
@ -1964,7 +1963,7 @@ static int ixgbe_loopback_test(struct ixgbe_adapter *adapter, u64 *data)
|
|||
}
|
||||
|
||||
static void ixgbe_diag_test(struct net_device *netdev,
|
||||
struct ethtool_test *eth_test, u64 *data)
|
||||
struct ethtool_test *eth_test, u64 *data)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
bool if_running = netif_running(netdev);
|
||||
|
@ -1987,10 +1986,7 @@ static void ixgbe_diag_test(struct net_device *netdev,
|
|||
int i;
|
||||
for (i = 0; i < adapter->num_vfs; i++) {
|
||||
if (adapter->vfinfo[i].clear_to_send) {
|
||||
netdev_warn(netdev, "%s",
|
||||
"offline diagnostic is not "
|
||||
"supported when VFs are "
|
||||
"present\n");
|
||||
netdev_warn(netdev, "offline diagnostic is not supported when VFs are present\n");
|
||||
data[0] = 1;
|
||||
data[1] = 1;
|
||||
data[2] = 1;
|
||||
|
@ -2037,8 +2033,7 @@ static void ixgbe_diag_test(struct net_device *netdev,
|
|||
* loopback diagnostic. */
|
||||
if (adapter->flags & (IXGBE_FLAG_SRIOV_ENABLED |
|
||||
IXGBE_FLAG_VMDQ_ENABLED)) {
|
||||
e_info(hw, "Skip MAC loopback diagnostic in VT "
|
||||
"mode\n");
|
||||
e_info(hw, "Skip MAC loopback diagnostic in VT mode\n");
|
||||
data[3] = 0;
|
||||
goto skip_loopback;
|
||||
}
|
||||
|
@ -2078,7 +2073,7 @@ static void ixgbe_diag_test(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int ixgbe_wol_exclusion(struct ixgbe_adapter *adapter,
|
||||
struct ethtool_wolinfo *wol)
|
||||
struct ethtool_wolinfo *wol)
|
||||
{
|
||||
struct ixgbe_hw *hw = &adapter->hw;
|
||||
int retval = 0;
|
||||
|
@ -2094,12 +2089,12 @@ static int ixgbe_wol_exclusion(struct ixgbe_adapter *adapter,
|
|||
}
|
||||
|
||||
static void ixgbe_get_wol(struct net_device *netdev,
|
||||
struct ethtool_wolinfo *wol)
|
||||
struct ethtool_wolinfo *wol)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
wol->supported = WAKE_UCAST | WAKE_MCAST |
|
||||
WAKE_BCAST | WAKE_MAGIC;
|
||||
WAKE_BCAST | WAKE_MAGIC;
|
||||
wol->wolopts = 0;
|
||||
|
||||
if (ixgbe_wol_exclusion(adapter, wol) ||
|
||||
|
@ -2181,7 +2176,7 @@ static int ixgbe_set_phys_id(struct net_device *netdev,
|
|||
}
|
||||
|
||||
static int ixgbe_get_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
|
@ -2222,8 +2217,7 @@ static bool ixgbe_update_rsc(struct ixgbe_adapter *adapter)
|
|||
adapter->rx_itr_setting > IXGBE_MIN_RSC_ITR) {
|
||||
if (!(adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED)) {
|
||||
adapter->flags2 |= IXGBE_FLAG2_RSC_ENABLED;
|
||||
e_info(probe, "rx-usecs value high enough "
|
||||
"to re-enable RSC\n");
|
||||
e_info(probe, "rx-usecs value high enough to re-enable RSC\n");
|
||||
return true;
|
||||
}
|
||||
/* if interrupt rate is too high then disable RSC */
|
||||
|
@ -2236,7 +2230,7 @@ static bool ixgbe_update_rsc(struct ixgbe_adapter *adapter)
|
|||
}
|
||||
|
||||
static int ixgbe_set_coalesce(struct net_device *netdev,
|
||||
struct ethtool_coalesce *ec)
|
||||
struct ethtool_coalesce *ec)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
struct ixgbe_q_vector *q_vector;
|
||||
|
@ -2421,9 +2415,11 @@ static int ixgbe_get_rss_hash_opts(struct ixgbe_adapter *adapter,
|
|||
switch (cmd->flow_type) {
|
||||
case TCP_V4_FLOW:
|
||||
cmd->data |= RXH_L4_B_0_1 | RXH_L4_B_2_3;
|
||||
/* fallthrough */
|
||||
case UDP_V4_FLOW:
|
||||
if (adapter->flags2 & IXGBE_FLAG2_RSS_FIELD_IPV4_UDP)
|
||||
cmd->data |= RXH_L4_B_0_1 | RXH_L4_B_2_3;
|
||||
/* fallthrough */
|
||||
case SCTP_V4_FLOW:
|
||||
case AH_ESP_V4_FLOW:
|
||||
case AH_V4_FLOW:
|
||||
|
@ -2433,9 +2429,11 @@ static int ixgbe_get_rss_hash_opts(struct ixgbe_adapter *adapter,
|
|||
break;
|
||||
case TCP_V6_FLOW:
|
||||
cmd->data |= RXH_L4_B_0_1 | RXH_L4_B_2_3;
|
||||
/* fallthrough */
|
||||
case UDP_V6_FLOW:
|
||||
if (adapter->flags2 & IXGBE_FLAG2_RSS_FIELD_IPV6_UDP)
|
||||
cmd->data |= RXH_L4_B_0_1 | RXH_L4_B_2_3;
|
||||
/* fallthrough */
|
||||
case SCTP_V6_FLOW:
|
||||
case AH_ESP_V6_FLOW:
|
||||
case AH_V6_FLOW:
|
||||
|
@ -2787,8 +2785,7 @@ static int ixgbe_set_rss_hash_opt(struct ixgbe_adapter *adapter,
|
|||
|
||||
if ((flags2 & UDP_RSS_FLAGS) &&
|
||||
!(adapter->flags2 & UDP_RSS_FLAGS))
|
||||
e_warn(drv, "enabling UDP RSS: fragmented packets"
|
||||
" may arrive out of order to the stack above\n");
|
||||
e_warn(drv, "enabling UDP RSS: fragmented packets may arrive out of order to the stack above\n");
|
||||
|
||||
adapter->flags2 = flags2;
|
||||
|
||||
|
|
|
@ -1113,8 +1113,8 @@ static void ixgbe_set_interrupt_capability(struct ixgbe_adapter *adapter)
|
|||
err = pci_enable_msi(adapter->pdev);
|
||||
if (err) {
|
||||
netif_printk(adapter, hw, KERN_DEBUG, adapter->netdev,
|
||||
"Unable to allocate MSI interrupt, "
|
||||
"falling back to legacy. Error: %d\n", err);
|
||||
"Unable to allocate MSI interrupt, falling back to legacy. Error: %d\n",
|
||||
err);
|
||||
return;
|
||||
}
|
||||
adapter->flags |= IXGBE_FLAG_MSI_ENABLED;
|
||||
|
|
|
@ -6087,7 +6087,7 @@ static void ixgbe_fdir_reinit_subtask(struct ixgbe_adapter *adapter)
|
|||
if (ixgbe_reinit_fdir_tables_82599(hw) == 0) {
|
||||
for (i = 0; i < adapter->num_tx_queues; i++)
|
||||
set_bit(__IXGBE_TX_FDIR_INIT_DONE,
|
||||
&(adapter->tx_ring[i]->state));
|
||||
&(adapter->tx_ring[i]->state));
|
||||
/* re-enable flow director interrupts */
|
||||
IXGBE_WRITE_REG(hw, IXGBE_EIMS, IXGBE_EIMS_FLOW_DIR);
|
||||
} else {
|
||||
|
@ -8387,7 +8387,7 @@ static int ixgbe_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||
if (ixgbe_is_sfp(hw) && hw->phy.sfp_type != ixgbe_sfp_type_not_present)
|
||||
e_dev_info("MAC: %d, PHY: %d, SFP+: %d, PBA No: %s\n",
|
||||
hw->mac.type, hw->phy.type, hw->phy.sfp_type,
|
||||
part_str);
|
||||
part_str);
|
||||
else
|
||||
e_dev_info("MAC: %d, PHY: %d, PBA No: %s\n",
|
||||
hw->mac.type, hw->phy.type, part_str);
|
||||
|
|
|
@ -223,7 +223,7 @@ static s32 ixgbe_read_posted_mbx(struct ixgbe_hw *hw, u32 *msg, u16 size,
|
|||
* received an ack to that message within delay * timeout period
|
||||
**/
|
||||
static s32 ixgbe_write_posted_mbx(struct ixgbe_hw *hw, u32 *msg, u16 size,
|
||||
u16 mbx_id)
|
||||
u16 mbx_id)
|
||||
{
|
||||
struct ixgbe_mbx_info *mbx = &hw->mbx;
|
||||
s32 ret_val = IXGBE_ERR_MBX;
|
||||
|
@ -269,7 +269,7 @@ static s32 ixgbe_check_for_msg_pf(struct ixgbe_hw *hw, u16 vf_number)
|
|||
u32 vf_bit = vf_number % 16;
|
||||
|
||||
if (!ixgbe_check_for_bit_pf(hw, IXGBE_MBVFICR_VFREQ_VF1 << vf_bit,
|
||||
index)) {
|
||||
index)) {
|
||||
ret_val = 0;
|
||||
hw->mbx.stats.reqs++;
|
||||
}
|
||||
|
@ -291,7 +291,7 @@ static s32 ixgbe_check_for_ack_pf(struct ixgbe_hw *hw, u16 vf_number)
|
|||
u32 vf_bit = vf_number % 16;
|
||||
|
||||
if (!ixgbe_check_for_bit_pf(hw, IXGBE_MBVFICR_VFACK_VF1 << vf_bit,
|
||||
index)) {
|
||||
index)) {
|
||||
ret_val = 0;
|
||||
hw->mbx.stats.acks++;
|
||||
}
|
||||
|
@ -366,7 +366,7 @@ static s32 ixgbe_obtain_mbx_lock_pf(struct ixgbe_hw *hw, u16 vf_number)
|
|||
* returns SUCCESS if it successfully copied message into the buffer
|
||||
**/
|
||||
static s32 ixgbe_write_mbx_pf(struct ixgbe_hw *hw, u32 *msg, u16 size,
|
||||
u16 vf_number)
|
||||
u16 vf_number)
|
||||
{
|
||||
s32 ret_val;
|
||||
u16 i;
|
||||
|
@ -407,7 +407,7 @@ static s32 ixgbe_write_mbx_pf(struct ixgbe_hw *hw, u32 *msg, u16 size,
|
|||
* a message due to a VF request so no polling for message is needed.
|
||||
**/
|
||||
static s32 ixgbe_read_mbx_pf(struct ixgbe_hw *hw, u32 *msg, u16 size,
|
||||
u16 vf_number)
|
||||
u16 vf_number)
|
||||
{
|
||||
s32 ret_val;
|
||||
u16 i;
|
||||
|
|
|
@ -54,11 +54,11 @@
|
|||
* Message ACK's are the value or'd with 0xF0000000
|
||||
*/
|
||||
#define IXGBE_VT_MSGTYPE_ACK 0x80000000 /* Messages below or'd with
|
||||
* this are the ACK */
|
||||
* this are the ACK */
|
||||
#define IXGBE_VT_MSGTYPE_NACK 0x40000000 /* Messages below or'd with
|
||||
* this are the NACK */
|
||||
* this are the NACK */
|
||||
#define IXGBE_VT_MSGTYPE_CTS 0x20000000 /* Indicates that VF is still
|
||||
clear to send requests */
|
||||
clear to send requests */
|
||||
#define IXGBE_VT_MSGINFO_SHIFT 16
|
||||
/* bits 23:16 are used for exra info for certain messages */
|
||||
#define IXGBE_VT_MSGINFO_MASK (0xFF << IXGBE_VT_MSGINFO_SHIFT)
|
||||
|
|
|
@ -67,7 +67,7 @@ s32 ixgbe_identify_phy_generic(struct ixgbe_hw *hw)
|
|||
if (mdio45_probe(&hw->phy.mdio, phy_addr) == 0) {
|
||||
ixgbe_get_phy_id(hw);
|
||||
hw->phy.type =
|
||||
ixgbe_get_phy_type_from_id(hw->phy.id);
|
||||
ixgbe_get_phy_type_from_id(hw->phy.id);
|
||||
|
||||
if (hw->phy.type == ixgbe_phy_unknown) {
|
||||
hw->phy.ops.read_reg(hw,
|
||||
|
@ -136,12 +136,12 @@ static s32 ixgbe_get_phy_id(struct ixgbe_hw *hw)
|
|||
u16 phy_id_low = 0;
|
||||
|
||||
status = hw->phy.ops.read_reg(hw, MDIO_DEVID1, MDIO_MMD_PMAPMD,
|
||||
&phy_id_high);
|
||||
&phy_id_high);
|
||||
|
||||
if (status == 0) {
|
||||
hw->phy.id = (u32)(phy_id_high << 16);
|
||||
status = hw->phy.ops.read_reg(hw, MDIO_DEVID2, MDIO_MMD_PMAPMD,
|
||||
&phy_id_low);
|
||||
&phy_id_low);
|
||||
hw->phy.id |= (u32)(phy_id_low & IXGBE_PHY_REVISION_MASK);
|
||||
hw->phy.revision = (u32)(phy_id_low & ~IXGBE_PHY_REVISION_MASK);
|
||||
}
|
||||
|
@ -318,7 +318,7 @@ s32 ixgbe_read_phy_reg_mdi(struct ixgbe_hw *hw, u32 reg_addr, u32 device_type,
|
|||
* @phy_data: Pointer to read data from PHY register
|
||||
**/
|
||||
s32 ixgbe_read_phy_reg_generic(struct ixgbe_hw *hw, u32 reg_addr,
|
||||
u32 device_type, u16 *phy_data)
|
||||
u32 device_type, u16 *phy_data)
|
||||
{
|
||||
s32 status;
|
||||
u16 gssr;
|
||||
|
@ -421,7 +421,7 @@ s32 ixgbe_write_phy_reg_mdi(struct ixgbe_hw *hw, u32 reg_addr,
|
|||
* @phy_data: Data to write to the PHY register
|
||||
**/
|
||||
s32 ixgbe_write_phy_reg_generic(struct ixgbe_hw *hw, u32 reg_addr,
|
||||
u32 device_type, u16 phy_data)
|
||||
u32 device_type, u16 phy_data)
|
||||
{
|
||||
s32 status;
|
||||
u16 gssr;
|
||||
|
@ -548,8 +548,8 @@ s32 ixgbe_setup_phy_link_generic(struct ixgbe_hw *hw)
|
|||
* @speed: new link speed
|
||||
**/
|
||||
s32 ixgbe_setup_phy_link_speed_generic(struct ixgbe_hw *hw,
|
||||
ixgbe_link_speed speed,
|
||||
bool autoneg_wait_to_complete)
|
||||
ixgbe_link_speed speed,
|
||||
bool autoneg_wait_to_complete)
|
||||
{
|
||||
|
||||
/*
|
||||
|
@ -582,8 +582,8 @@ s32 ixgbe_setup_phy_link_speed_generic(struct ixgbe_hw *hw,
|
|||
* Determines the link capabilities by reading the AUTOC register.
|
||||
*/
|
||||
s32 ixgbe_get_copper_link_capabilities_generic(struct ixgbe_hw *hw,
|
||||
ixgbe_link_speed *speed,
|
||||
bool *autoneg)
|
||||
ixgbe_link_speed *speed,
|
||||
bool *autoneg)
|
||||
{
|
||||
s32 status = IXGBE_ERR_LINK_SETUP;
|
||||
u16 speed_ability;
|
||||
|
@ -592,7 +592,7 @@ s32 ixgbe_get_copper_link_capabilities_generic(struct ixgbe_hw *hw,
|
|||
*autoneg = true;
|
||||
|
||||
status = hw->phy.ops.read_reg(hw, MDIO_SPEED, MDIO_MMD_PMAPMD,
|
||||
&speed_ability);
|
||||
&speed_ability);
|
||||
|
||||
if (status == 0) {
|
||||
if (speed_ability & MDIO_SPEED_10G)
|
||||
|
@ -806,11 +806,11 @@ s32 ixgbe_reset_phy_nl(struct ixgbe_hw *hw)
|
|||
|
||||
/* reset the PHY and poll for completion */
|
||||
hw->phy.ops.write_reg(hw, MDIO_CTRL1, MDIO_MMD_PHYXS,
|
||||
(phy_data | MDIO_CTRL1_RESET));
|
||||
(phy_data | MDIO_CTRL1_RESET));
|
||||
|
||||
for (i = 0; i < 100; i++) {
|
||||
hw->phy.ops.read_reg(hw, MDIO_CTRL1, MDIO_MMD_PHYXS,
|
||||
&phy_data);
|
||||
&phy_data);
|
||||
if ((phy_data & MDIO_CTRL1_RESET) == 0)
|
||||
break;
|
||||
usleep_range(10000, 20000);
|
||||
|
@ -824,7 +824,7 @@ s32 ixgbe_reset_phy_nl(struct ixgbe_hw *hw)
|
|||
|
||||
/* Get init offsets */
|
||||
ret_val = ixgbe_get_sfp_init_sequence_offsets(hw, &list_offset,
|
||||
&data_offset);
|
||||
&data_offset);
|
||||
if (ret_val != 0)
|
||||
goto out;
|
||||
|
||||
|
@ -838,7 +838,7 @@ s32 ixgbe_reset_phy_nl(struct ixgbe_hw *hw)
|
|||
if (ret_val)
|
||||
goto err_eeprom;
|
||||
control = (eword & IXGBE_CONTROL_MASK_NL) >>
|
||||
IXGBE_CONTROL_SHIFT_NL;
|
||||
IXGBE_CONTROL_SHIFT_NL;
|
||||
edata = eword & IXGBE_DATA_MASK_NL;
|
||||
switch (control) {
|
||||
case IXGBE_DELAY_NL:
|
||||
|
@ -859,7 +859,7 @@ s32 ixgbe_reset_phy_nl(struct ixgbe_hw *hw)
|
|||
if (ret_val)
|
||||
goto err_eeprom;
|
||||
hw->phy.ops.write_reg(hw, phy_offset,
|
||||
MDIO_MMD_PMAPMD, eword);
|
||||
MDIO_MMD_PMAPMD, eword);
|
||||
hw_dbg(hw, "Wrote %4.4x to %4.4x\n", eword,
|
||||
phy_offset);
|
||||
data_offset++;
|
||||
|
@ -1010,10 +1010,10 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw)
|
|||
if (cable_tech & IXGBE_SFF_DA_PASSIVE_CABLE) {
|
||||
if (hw->bus.lan_id == 0)
|
||||
hw->phy.sfp_type =
|
||||
ixgbe_sfp_type_da_cu_core0;
|
||||
ixgbe_sfp_type_da_cu_core0;
|
||||
else
|
||||
hw->phy.sfp_type =
|
||||
ixgbe_sfp_type_da_cu_core1;
|
||||
ixgbe_sfp_type_da_cu_core1;
|
||||
} else if (cable_tech & IXGBE_SFF_DA_ACTIVE_CABLE) {
|
||||
hw->phy.ops.read_i2c_eeprom(
|
||||
hw, IXGBE_SFF_CABLE_SPEC_COMP,
|
||||
|
@ -1035,10 +1035,10 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw)
|
|||
IXGBE_SFF_10GBASELR_CAPABLE)) {
|
||||
if (hw->bus.lan_id == 0)
|
||||
hw->phy.sfp_type =
|
||||
ixgbe_sfp_type_srlr_core0;
|
||||
ixgbe_sfp_type_srlr_core0;
|
||||
else
|
||||
hw->phy.sfp_type =
|
||||
ixgbe_sfp_type_srlr_core1;
|
||||
ixgbe_sfp_type_srlr_core1;
|
||||
} else if (comp_codes_1g & IXGBE_SFF_1GBASET_CAPABLE) {
|
||||
if (hw->bus.lan_id == 0)
|
||||
hw->phy.sfp_type =
|
||||
|
@ -1087,15 +1087,15 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw)
|
|||
goto err_read_i2c_eeprom;
|
||||
|
||||
status = hw->phy.ops.read_i2c_eeprom(hw,
|
||||
IXGBE_SFF_VENDOR_OUI_BYTE1,
|
||||
&oui_bytes[1]);
|
||||
IXGBE_SFF_VENDOR_OUI_BYTE1,
|
||||
&oui_bytes[1]);
|
||||
|
||||
if (status != 0)
|
||||
goto err_read_i2c_eeprom;
|
||||
|
||||
status = hw->phy.ops.read_i2c_eeprom(hw,
|
||||
IXGBE_SFF_VENDOR_OUI_BYTE2,
|
||||
&oui_bytes[2]);
|
||||
IXGBE_SFF_VENDOR_OUI_BYTE2,
|
||||
&oui_bytes[2]);
|
||||
|
||||
if (status != 0)
|
||||
goto err_read_i2c_eeprom;
|
||||
|
@ -1403,8 +1403,8 @@ static s32 ixgbe_identify_qsfp_module_generic(struct ixgbe_hw *hw)
|
|||
* so it returns the offsets to the phy init sequence block.
|
||||
**/
|
||||
s32 ixgbe_get_sfp_init_sequence_offsets(struct ixgbe_hw *hw,
|
||||
u16 *list_offset,
|
||||
u16 *data_offset)
|
||||
u16 *list_offset,
|
||||
u16 *data_offset)
|
||||
{
|
||||
u16 sfp_id;
|
||||
u16 sfp_type = hw->phy.sfp_type;
|
||||
|
@ -1493,11 +1493,11 @@ s32 ixgbe_get_sfp_init_sequence_offsets(struct ixgbe_hw *hw,
|
|||
* Performs byte read operation to SFP module's EEPROM over I2C interface.
|
||||
**/
|
||||
s32 ixgbe_read_i2c_eeprom_generic(struct ixgbe_hw *hw, u8 byte_offset,
|
||||
u8 *eeprom_data)
|
||||
u8 *eeprom_data)
|
||||
{
|
||||
return hw->phy.ops.read_i2c_byte(hw, byte_offset,
|
||||
IXGBE_I2C_EEPROM_DEV_ADDR,
|
||||
eeprom_data);
|
||||
IXGBE_I2C_EEPROM_DEV_ADDR,
|
||||
eeprom_data);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1525,11 +1525,11 @@ s32 ixgbe_read_i2c_sff8472_generic(struct ixgbe_hw *hw, u8 byte_offset,
|
|||
* Performs byte write operation to SFP module's EEPROM over I2C interface.
|
||||
**/
|
||||
s32 ixgbe_write_i2c_eeprom_generic(struct ixgbe_hw *hw, u8 byte_offset,
|
||||
u8 eeprom_data)
|
||||
u8 eeprom_data)
|
||||
{
|
||||
return hw->phy.ops.write_i2c_byte(hw, byte_offset,
|
||||
IXGBE_I2C_EEPROM_DEV_ADDR,
|
||||
eeprom_data);
|
||||
IXGBE_I2C_EEPROM_DEV_ADDR,
|
||||
eeprom_data);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1542,7 +1542,7 @@ s32 ixgbe_write_i2c_eeprom_generic(struct ixgbe_hw *hw, u8 byte_offset,
|
|||
* a specified device address.
|
||||
**/
|
||||
s32 ixgbe_read_i2c_byte_generic(struct ixgbe_hw *hw, u8 byte_offset,
|
||||
u8 dev_addr, u8 *data)
|
||||
u8 dev_addr, u8 *data)
|
||||
{
|
||||
s32 status = 0;
|
||||
u32 max_retry = 10;
|
||||
|
@ -1631,7 +1631,7 @@ s32 ixgbe_read_i2c_byte_generic(struct ixgbe_hw *hw, u8 byte_offset,
|
|||
* a specified device address.
|
||||
**/
|
||||
s32 ixgbe_write_i2c_byte_generic(struct ixgbe_hw *hw, u8 byte_offset,
|
||||
u8 dev_addr, u8 data)
|
||||
u8 dev_addr, u8 data)
|
||||
{
|
||||
s32 status = 0;
|
||||
u32 max_retry = 1;
|
||||
|
@ -2046,7 +2046,7 @@ s32 ixgbe_tn_check_overtemp(struct ixgbe_hw *hw)
|
|||
|
||||
/* Check that the LASI temp alarm status was triggered */
|
||||
hw->phy.ops.read_reg(hw, IXGBE_TN_LASI_STATUS_REG,
|
||||
MDIO_MMD_PMAPMD, &phy_data);
|
||||
MDIO_MMD_PMAPMD, &phy_data);
|
||||
|
||||
if (!(phy_data & IXGBE_TN_LASI_STATUS_TEMP_ALARM))
|
||||
goto out;
|
||||
|
|
|
@ -114,47 +114,47 @@ s32 ixgbe_init_phy_ops_generic(struct ixgbe_hw *hw);
|
|||
s32 ixgbe_identify_phy_generic(struct ixgbe_hw *hw);
|
||||
s32 ixgbe_reset_phy_generic(struct ixgbe_hw *hw);
|
||||
s32 ixgbe_read_phy_reg_generic(struct ixgbe_hw *hw, u32 reg_addr,
|
||||
u32 device_type, u16 *phy_data);
|
||||
u32 device_type, u16 *phy_data);
|
||||
s32 ixgbe_write_phy_reg_generic(struct ixgbe_hw *hw, u32 reg_addr,
|
||||
u32 device_type, u16 phy_data);
|
||||
u32 device_type, u16 phy_data);
|
||||
s32 ixgbe_read_phy_reg_mdi(struct ixgbe_hw *hw, u32 reg_addr,
|
||||
u32 device_type, u16 *phy_data);
|
||||
s32 ixgbe_write_phy_reg_mdi(struct ixgbe_hw *hw, u32 reg_addr,
|
||||
u32 device_type, u16 phy_data);
|
||||
s32 ixgbe_setup_phy_link_generic(struct ixgbe_hw *hw);
|
||||
s32 ixgbe_setup_phy_link_speed_generic(struct ixgbe_hw *hw,
|
||||
ixgbe_link_speed speed,
|
||||
bool autoneg_wait_to_complete);
|
||||
ixgbe_link_speed speed,
|
||||
bool autoneg_wait_to_complete);
|
||||
s32 ixgbe_get_copper_link_capabilities_generic(struct ixgbe_hw *hw,
|
||||
ixgbe_link_speed *speed,
|
||||
bool *autoneg);
|
||||
ixgbe_link_speed *speed,
|
||||
bool *autoneg);
|
||||
bool ixgbe_check_reset_blocked(struct ixgbe_hw *hw);
|
||||
|
||||
/* PHY specific */
|
||||
s32 ixgbe_check_phy_link_tnx(struct ixgbe_hw *hw,
|
||||
ixgbe_link_speed *speed,
|
||||
bool *link_up);
|
||||
ixgbe_link_speed *speed,
|
||||
bool *link_up);
|
||||
s32 ixgbe_setup_phy_link_tnx(struct ixgbe_hw *hw);
|
||||
s32 ixgbe_get_phy_firmware_version_tnx(struct ixgbe_hw *hw,
|
||||
u16 *firmware_version);
|
||||
u16 *firmware_version);
|
||||
s32 ixgbe_get_phy_firmware_version_generic(struct ixgbe_hw *hw,
|
||||
u16 *firmware_version);
|
||||
u16 *firmware_version);
|
||||
|
||||
s32 ixgbe_reset_phy_nl(struct ixgbe_hw *hw);
|
||||
s32 ixgbe_identify_module_generic(struct ixgbe_hw *hw);
|
||||
s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw);
|
||||
s32 ixgbe_get_sfp_init_sequence_offsets(struct ixgbe_hw *hw,
|
||||
u16 *list_offset,
|
||||
u16 *data_offset);
|
||||
u16 *list_offset,
|
||||
u16 *data_offset);
|
||||
s32 ixgbe_tn_check_overtemp(struct ixgbe_hw *hw);
|
||||
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_write_i2c_byte_generic(struct ixgbe_hw *hw, u8 byte_offset,
|
||||
u8 dev_addr, u8 data);
|
||||
u8 dev_addr, u8 data);
|
||||
s32 ixgbe_read_i2c_eeprom_generic(struct ixgbe_hw *hw, u8 byte_offset,
|
||||
u8 *eeprom_data);
|
||||
u8 *eeprom_data);
|
||||
s32 ixgbe_read_i2c_sff8472_generic(struct ixgbe_hw *hw, u8 byte_offset,
|
||||
u8 *sff8472_data);
|
||||
s32 ixgbe_write_i2c_eeprom_generic(struct ixgbe_hw *hw, u8 byte_offset,
|
||||
u8 eeprom_data);
|
||||
u8 eeprom_data);
|
||||
#endif /* _IXGBE_PHY_H_ */
|
||||
|
|
|
@ -1129,9 +1129,9 @@ int ixgbe_ndo_set_vf_vlan(struct net_device *netdev, int vf, u16 vlan, u8 qos)
|
|||
adapter->vfinfo[vf].vlan_count--;
|
||||
adapter->vfinfo[vf].pf_vlan = 0;
|
||||
adapter->vfinfo[vf].pf_qos = 0;
|
||||
}
|
||||
}
|
||||
out:
|
||||
return err;
|
||||
return err;
|
||||
}
|
||||
|
||||
static int ixgbe_link_mbps(struct ixgbe_adapter *adapter)
|
||||
|
|
|
@ -160,7 +160,7 @@ struct ixgbe_thermal_sensor_data {
|
|||
#define IXGBE_MAX_EITR 0x00000FF8
|
||||
#define IXGBE_MIN_EITR 8
|
||||
#define IXGBE_EITR(_i) (((_i) <= 23) ? (0x00820 + ((_i) * 4)) : \
|
||||
(0x012300 + (((_i) - 24) * 4)))
|
||||
(0x012300 + (((_i) - 24) * 4)))
|
||||
#define IXGBE_EITR_ITR_INT_MASK 0x00000FF8
|
||||
#define IXGBE_EITR_LLI_MOD 0x00008000
|
||||
#define IXGBE_EITR_CNT_WDIS 0x80000000
|
||||
|
@ -213,7 +213,7 @@ struct ixgbe_thermal_sensor_data {
|
|||
* 64-127: 0x0D014 + (n-64)*0x40
|
||||
*/
|
||||
#define IXGBE_SRRCTL(_i) (((_i) <= 15) ? (0x02100 + ((_i) * 4)) : \
|
||||
(((_i) < 64) ? (0x01014 + ((_i) * 0x40)) : \
|
||||
(((_i) < 64) ? (0x01014 + ((_i) * 0x40)) : \
|
||||
(0x0D014 + (((_i) - 64) * 0x40))))
|
||||
/*
|
||||
* Rx DCA Control Register:
|
||||
|
@ -222,11 +222,11 @@ struct ixgbe_thermal_sensor_data {
|
|||
* 64-127: 0x0D00C + (n-64)*0x40
|
||||
*/
|
||||
#define IXGBE_DCA_RXCTRL(_i) (((_i) <= 15) ? (0x02200 + ((_i) * 4)) : \
|
||||
(((_i) < 64) ? (0x0100C + ((_i) * 0x40)) : \
|
||||
(((_i) < 64) ? (0x0100C + ((_i) * 0x40)) : \
|
||||
(0x0D00C + (((_i) - 64) * 0x40))))
|
||||
#define IXGBE_RDRXCTL 0x02F00
|
||||
#define IXGBE_RXPBSIZE(_i) (0x03C00 + ((_i) * 4))
|
||||
/* 8 of these 0x03C00 - 0x03C1C */
|
||||
/* 8 of these 0x03C00 - 0x03C1C */
|
||||
#define IXGBE_RXCTRL 0x03000
|
||||
#define IXGBE_DROPEN 0x03D04
|
||||
#define IXGBE_RXPBSIZE_SHIFT 10
|
||||
|
@ -239,14 +239,14 @@ struct ixgbe_thermal_sensor_data {
|
|||
/* Multicast Table Array - 128 entries */
|
||||
#define IXGBE_MTA(_i) (0x05200 + ((_i) * 4))
|
||||
#define IXGBE_RAL(_i) (((_i) <= 15) ? (0x05400 + ((_i) * 8)) : \
|
||||
(0x0A200 + ((_i) * 8)))
|
||||
(0x0A200 + ((_i) * 8)))
|
||||
#define IXGBE_RAH(_i) (((_i) <= 15) ? (0x05404 + ((_i) * 8)) : \
|
||||
(0x0A204 + ((_i) * 8)))
|
||||
(0x0A204 + ((_i) * 8)))
|
||||
#define IXGBE_MPSAR_LO(_i) (0x0A600 + ((_i) * 8))
|
||||
#define IXGBE_MPSAR_HI(_i) (0x0A604 + ((_i) * 8))
|
||||
/* Packet split receive type */
|
||||
#define IXGBE_PSRTYPE(_i) (((_i) <= 15) ? (0x05480 + ((_i) * 4)) : \
|
||||
(0x0EA00 + ((_i) * 4)))
|
||||
(0x0EA00 + ((_i) * 4)))
|
||||
/* array of 4096 1-bit vlan filters */
|
||||
#define IXGBE_VFTA(_i) (0x0A000 + ((_i) * 4))
|
||||
/*array of 4096 4-bit vlan vmdq indices */
|
||||
|
@ -696,7 +696,7 @@ struct ixgbe_thermal_sensor_data {
|
|||
|
||||
#define IXGBE_RQSMR(_i) (0x02300 + ((_i) * 4))
|
||||
#define IXGBE_TQSMR(_i) (((_i) <= 7) ? (0x07300 + ((_i) * 4)) : \
|
||||
(0x08600 + ((_i) * 4)))
|
||||
(0x08600 + ((_i) * 4)))
|
||||
#define IXGBE_TQSM(_i) (0x08600 + ((_i) * 4))
|
||||
|
||||
#define IXGBE_QPRC(_i) (0x01030 + ((_i) * 0x40)) /* 16 of these */
|
||||
|
@ -820,7 +820,7 @@ struct ixgbe_thermal_sensor_data {
|
|||
#define IXGBE_GCR_EXT_VT_MODE_32 0x00000002
|
||||
#define IXGBE_GCR_EXT_VT_MODE_64 0x00000003
|
||||
#define IXGBE_GCR_EXT_SRIOV (IXGBE_GCR_EXT_MSIX_EN | \
|
||||
IXGBE_GCR_EXT_VT_MODE_64)
|
||||
IXGBE_GCR_EXT_VT_MODE_64)
|
||||
|
||||
/* Time Sync Registers */
|
||||
#define IXGBE_TSYNCRXCTL 0x05188 /* Rx Time Sync Control register - RW */
|
||||
|
@ -1396,10 +1396,10 @@ enum {
|
|||
#define IXGBE_EIMC_OTHER IXGBE_EICR_OTHER /* INT Cause Active */
|
||||
|
||||
#define IXGBE_EIMS_ENABLE_MASK ( \
|
||||
IXGBE_EIMS_RTX_QUEUE | \
|
||||
IXGBE_EIMS_LSC | \
|
||||
IXGBE_EIMS_TCP_TIMER | \
|
||||
IXGBE_EIMS_OTHER)
|
||||
IXGBE_EIMS_RTX_QUEUE | \
|
||||
IXGBE_EIMS_LSC | \
|
||||
IXGBE_EIMS_TCP_TIMER | \
|
||||
IXGBE_EIMS_OTHER)
|
||||
|
||||
/* Immediate Interrupt Rx (A.K.A. Low Latency Interrupt) */
|
||||
#define IXGBE_IMIR_PORT_IM_EN 0x00010000 /* TCP port enable */
|
||||
|
@ -2161,18 +2161,18 @@ enum {
|
|||
|
||||
/* Masks to determine if packets should be dropped due to frame errors */
|
||||
#define IXGBE_RXD_ERR_FRAME_ERR_MASK ( \
|
||||
IXGBE_RXD_ERR_CE | \
|
||||
IXGBE_RXD_ERR_LE | \
|
||||
IXGBE_RXD_ERR_PE | \
|
||||
IXGBE_RXD_ERR_OSE | \
|
||||
IXGBE_RXD_ERR_USE)
|
||||
IXGBE_RXD_ERR_CE | \
|
||||
IXGBE_RXD_ERR_LE | \
|
||||
IXGBE_RXD_ERR_PE | \
|
||||
IXGBE_RXD_ERR_OSE | \
|
||||
IXGBE_RXD_ERR_USE)
|
||||
|
||||
#define IXGBE_RXDADV_ERR_FRAME_ERR_MASK ( \
|
||||
IXGBE_RXDADV_ERR_CE | \
|
||||
IXGBE_RXDADV_ERR_LE | \
|
||||
IXGBE_RXDADV_ERR_PE | \
|
||||
IXGBE_RXDADV_ERR_OSE | \
|
||||
IXGBE_RXDADV_ERR_USE)
|
||||
IXGBE_RXDADV_ERR_CE | \
|
||||
IXGBE_RXDADV_ERR_LE | \
|
||||
IXGBE_RXDADV_ERR_PE | \
|
||||
IXGBE_RXDADV_ERR_OSE | \
|
||||
IXGBE_RXDADV_ERR_USE)
|
||||
|
||||
/* Multicast bit mask */
|
||||
#define IXGBE_MCSTCTRL_MFE 0x4
|
||||
|
@ -2393,9 +2393,9 @@ struct ixgbe_adv_tx_context_desc {
|
|||
#define IXGBE_ADVTXD_CC 0x00000080 /* Check Context */
|
||||
#define IXGBE_ADVTXD_POPTS_SHIFT 8 /* Adv desc POPTS shift */
|
||||
#define IXGBE_ADVTXD_POPTS_IXSM (IXGBE_TXD_POPTS_IXSM << \
|
||||
IXGBE_ADVTXD_POPTS_SHIFT)
|
||||
IXGBE_ADVTXD_POPTS_SHIFT)
|
||||
#define IXGBE_ADVTXD_POPTS_TXSM (IXGBE_TXD_POPTS_TXSM << \
|
||||
IXGBE_ADVTXD_POPTS_SHIFT)
|
||||
IXGBE_ADVTXD_POPTS_SHIFT)
|
||||
#define IXGBE_ADVTXD_POPTS_ISCO_1ST 0x00000000 /* 1st TSO of iSCSI PDU */
|
||||
#define IXGBE_ADVTXD_POPTS_ISCO_MDL 0x00000800 /* Middle TSO of iSCSI PDU */
|
||||
#define IXGBE_ADVTXD_POPTS_ISCO_LAST 0x00001000 /* Last TSO of iSCSI PDU */
|
||||
|
@ -2435,10 +2435,10 @@ typedef u32 ixgbe_link_speed;
|
|||
#define IXGBE_LINK_SPEED_1GB_FULL 0x0020
|
||||
#define IXGBE_LINK_SPEED_10GB_FULL 0x0080
|
||||
#define IXGBE_LINK_SPEED_82598_AUTONEG (IXGBE_LINK_SPEED_1GB_FULL | \
|
||||
IXGBE_LINK_SPEED_10GB_FULL)
|
||||
IXGBE_LINK_SPEED_10GB_FULL)
|
||||
#define IXGBE_LINK_SPEED_82599_AUTONEG (IXGBE_LINK_SPEED_100_FULL | \
|
||||
IXGBE_LINK_SPEED_1GB_FULL | \
|
||||
IXGBE_LINK_SPEED_10GB_FULL)
|
||||
IXGBE_LINK_SPEED_1GB_FULL | \
|
||||
IXGBE_LINK_SPEED_10GB_FULL)
|
||||
|
||||
|
||||
/* Physical layer type */
|
||||
|
@ -2840,7 +2840,7 @@ struct ixgbe_hw;
|
|||
|
||||
/* iterator type for walking multicast address lists */
|
||||
typedef u8* (*ixgbe_mc_addr_itr) (struct ixgbe_hw *hw, u8 **mc_addr_ptr,
|
||||
u32 *vmdq);
|
||||
u32 *vmdq);
|
||||
|
||||
/* Function pointer table */
|
||||
struct ixgbe_eeprom_operations {
|
||||
|
@ -2887,7 +2887,7 @@ struct ixgbe_mac_operations {
|
|||
s32 (*setup_link)(struct ixgbe_hw *, ixgbe_link_speed, bool);
|
||||
s32 (*check_link)(struct ixgbe_hw *, ixgbe_link_speed *, bool *, bool);
|
||||
s32 (*get_link_capabilities)(struct ixgbe_hw *, ixgbe_link_speed *,
|
||||
bool *);
|
||||
bool *);
|
||||
|
||||
/* Packet Buffer Manipulation */
|
||||
void (*set_rxpba)(struct ixgbe_hw *, int, u32, int);
|
||||
|
|
|
@ -81,7 +81,7 @@ static s32 ixgbe_setup_mac_link_X540(struct ixgbe_hw *hw,
|
|||
bool autoneg_wait_to_complete)
|
||||
{
|
||||
return hw->phy.ops.setup_link_speed(hw, speed,
|
||||
autoneg_wait_to_complete);
|
||||
autoneg_wait_to_complete);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -155,7 +155,7 @@ static s32 ixgbe_reset_hw_X540(struct ixgbe_hw *hw)
|
|||
/* Add the SAN MAC address to the RAR only if it's a valid address */
|
||||
if (is_valid_ether_addr(hw->mac.san_addr)) {
|
||||
hw->mac.ops.set_rar(hw, hw->mac.num_rar_entries - 1,
|
||||
hw->mac.san_addr, 0, IXGBE_RAH_AV);
|
||||
hw->mac.san_addr, 0, IXGBE_RAH_AV);
|
||||
|
||||
/* Save the SAN MAC RAR index */
|
||||
hw->mac.san_mac_rar_index = hw->mac.num_rar_entries - 1;
|
||||
|
@ -166,7 +166,7 @@ static s32 ixgbe_reset_hw_X540(struct ixgbe_hw *hw)
|
|||
|
||||
/* Store the alternative WWNN/WWPN prefix */
|
||||
hw->mac.ops.get_wwn_prefix(hw, &hw->mac.wwnn_prefix,
|
||||
&hw->mac.wwpn_prefix);
|
||||
&hw->mac.wwpn_prefix);
|
||||
|
||||
reset_hw_out:
|
||||
return status;
|
||||
|
@ -237,9 +237,9 @@ static s32 ixgbe_init_eeprom_params_X540(struct ixgbe_hw *hw)
|
|||
|
||||
eec = IXGBE_READ_REG(hw, IXGBE_EEC);
|
||||
eeprom_size = (u16)((eec & IXGBE_EEC_SIZE) >>
|
||||
IXGBE_EEC_SIZE_SHIFT);
|
||||
IXGBE_EEC_SIZE_SHIFT);
|
||||
eeprom->word_size = 1 << (eeprom_size +
|
||||
IXGBE_EEPROM_WORD_SIZE_SHIFT);
|
||||
IXGBE_EEPROM_WORD_SIZE_SHIFT);
|
||||
|
||||
hw_dbg(hw, "Eeprom params: type = %d, size = %d\n",
|
||||
eeprom->type, eeprom->word_size);
|
||||
|
@ -712,8 +712,7 @@ static s32 ixgbe_get_swfw_sync_semaphore(struct ixgbe_hw *hw)
|
|||
udelay(50);
|
||||
}
|
||||
} else {
|
||||
hw_dbg(hw, "Software semaphore SMBI between device drivers "
|
||||
"not granted.\n");
|
||||
hw_dbg(hw, "Software semaphore SMBI between device drivers not granted.\n");
|
||||
}
|
||||
|
||||
return status;
|
||||
|
@ -813,7 +812,7 @@ static struct ixgbe_mac_operations mac_ops_X540 = {
|
|||
.clear_hw_cntrs = &ixgbe_clear_hw_cntrs_generic,
|
||||
.get_media_type = &ixgbe_get_media_type_X540,
|
||||
.get_supported_physical_layer =
|
||||
&ixgbe_get_supported_physical_layer_X540,
|
||||
&ixgbe_get_supported_physical_layer_X540,
|
||||
.enable_rx_dma = &ixgbe_enable_rx_dma_generic,
|
||||
.get_mac_addr = &ixgbe_get_mac_addr_generic,
|
||||
.get_san_mac_addr = &ixgbe_get_san_mac_addr_generic,
|
||||
|
|
Loading…
Reference in New Issue