mirror of https://gitee.com/openkylin/linux.git
Merge git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net
This commit is contained in:
commit
5b67b3c04d
|
@ -2810,6 +2810,10 @@ static int __devinit e100_probe(struct pci_dev *pdev,
|
|||
|
||||
e100_get_defaults(nic);
|
||||
|
||||
/* D100 MAC doesn't allow rx of vlan packets with normal MTU */
|
||||
if (nic->mac < mac_82558_D101_A4)
|
||||
netdev->features |= NETIF_F_VLAN_CHALLENGED;
|
||||
|
||||
/* locks must be initialized before calling hw_reset */
|
||||
spin_lock_init(&nic->cb_lock);
|
||||
spin_lock_init(&nic->cmd_lock);
|
||||
|
|
|
@ -866,8 +866,7 @@ static s32 e1000_acquire_swflag_ich8lan(struct e1000_hw *hw)
|
|||
|
||||
if (test_and_set_bit(__E1000_ACCESS_SHARED_RESOURCE,
|
||||
&hw->adapter->state)) {
|
||||
WARN(1, "e1000e: %s: contention for Phy access\n",
|
||||
hw->adapter->netdev->name);
|
||||
e_dbg("contention for Phy access\n");
|
||||
return -E1000_ERR_PHY;
|
||||
}
|
||||
|
||||
|
|
|
@ -1687,7 +1687,7 @@ s32 igb_get_cable_length_m88_gen2(struct e1000_hw *hw)
|
|||
if (ret_val)
|
||||
goto out;
|
||||
|
||||
is_cm = !(phy_data & I347AT4_PCDC_CABLE_LENGTH_UNIT);
|
||||
is_cm = !(phy_data2 & I347AT4_PCDC_CABLE_LENGTH_UNIT);
|
||||
|
||||
/* Populate the phy structure with cable length in meters */
|
||||
phy->min_cable_length = phy_data / (is_cm ? 100 : 1);
|
||||
|
|
|
@ -3344,7 +3344,7 @@ static u8 ixgbe_calculate_checksum(u8 *buffer, u32 length)
|
|||
static s32 ixgbe_host_interface_command(struct ixgbe_hw *hw, u32 *buffer,
|
||||
u32 length)
|
||||
{
|
||||
u32 hicr, i;
|
||||
u32 hicr, i, bi;
|
||||
u32 hdr_size = sizeof(struct ixgbe_hic_hdr);
|
||||
u8 buf_len, dword_len;
|
||||
|
||||
|
@ -3398,9 +3398,9 @@ static s32 ixgbe_host_interface_command(struct ixgbe_hw *hw, u32 *buffer,
|
|||
dword_len = hdr_size >> 2;
|
||||
|
||||
/* first pull in the header so we know the buffer length */
|
||||
for (i = 0; i < dword_len; i++) {
|
||||
buffer[i] = IXGBE_READ_REG_ARRAY(hw, IXGBE_FLEX_MNG, i);
|
||||
le32_to_cpus(&buffer[i]);
|
||||
for (bi = 0; bi < dword_len; bi++) {
|
||||
buffer[bi] = IXGBE_READ_REG_ARRAY(hw, IXGBE_FLEX_MNG, bi);
|
||||
le32_to_cpus(&buffer[bi]);
|
||||
}
|
||||
|
||||
/* If there is any thing in data position pull it in */
|
||||
|
@ -3414,12 +3414,14 @@ static s32 ixgbe_host_interface_command(struct ixgbe_hw *hw, u32 *buffer,
|
|||
goto out;
|
||||
}
|
||||
|
||||
/* Calculate length in DWORDs, add one for odd lengths */
|
||||
dword_len = (buf_len + 1) >> 2;
|
||||
/* Calculate length in DWORDs, add 3 for odd lengths */
|
||||
dword_len = (buf_len + 3) >> 2;
|
||||
|
||||
/* Pull in the rest of the buffer (i is where we left off)*/
|
||||
for (; i < buf_len; i++)
|
||||
buffer[i] = IXGBE_READ_REG_ARRAY(hw, IXGBE_FLEX_MNG, i);
|
||||
/* Pull in the rest of the buffer (bi is where we left off)*/
|
||||
for (; bi <= dword_len; bi++) {
|
||||
buffer[bi] = IXGBE_READ_REG_ARRAY(hw, IXGBE_FLEX_MNG, bi);
|
||||
le32_to_cpus(&buffer[bi]);
|
||||
}
|
||||
|
||||
out:
|
||||
return ret_val;
|
||||
|
|
|
@ -561,11 +561,12 @@ static int ixgbe_dcbnl_ieee_getets(struct net_device *dev,
|
|||
struct ixgbe_adapter *adapter = netdev_priv(dev);
|
||||
struct ieee_ets *my_ets = adapter->ixgbe_ieee_ets;
|
||||
|
||||
ets->ets_cap = adapter->dcb_cfg.num_tcs.pg_tcs;
|
||||
|
||||
/* No IEEE PFC settings available */
|
||||
if (!my_ets)
|
||||
return -EINVAL;
|
||||
return 0;
|
||||
|
||||
ets->ets_cap = adapter->dcb_cfg.num_tcs.pg_tcs;
|
||||
ets->cbs = my_ets->cbs;
|
||||
memcpy(ets->tc_tx_bw, my_ets->tc_tx_bw, sizeof(ets->tc_tx_bw));
|
||||
memcpy(ets->tc_rx_bw, my_ets->tc_rx_bw, sizeof(ets->tc_rx_bw));
|
||||
|
@ -621,11 +622,12 @@ static int ixgbe_dcbnl_ieee_getpfc(struct net_device *dev,
|
|||
struct ieee_pfc *my_pfc = adapter->ixgbe_ieee_pfc;
|
||||
int i;
|
||||
|
||||
pfc->pfc_cap = adapter->dcb_cfg.num_tcs.pfc_tcs;
|
||||
|
||||
/* No IEEE PFC settings available */
|
||||
if (!my_pfc)
|
||||
return -EINVAL;
|
||||
return 0;
|
||||
|
||||
pfc->pfc_cap = adapter->dcb_cfg.num_tcs.pfc_tcs;
|
||||
pfc->pfc_en = my_pfc->pfc_en;
|
||||
pfc->mbc = my_pfc->mbc;
|
||||
pfc->delay = my_pfc->delay;
|
||||
|
|
|
@ -3345,34 +3345,25 @@ static void ixgbe_configure_dcb(struct ixgbe_adapter *adapter)
|
|||
|
||||
hw->mac.ops.set_vfta(&adapter->hw, 0, 0, true);
|
||||
|
||||
#ifdef IXGBE_FCOE
|
||||
if (adapter->netdev->features & NETIF_F_FCOE_MTU)
|
||||
max_frame = max(max_frame, IXGBE_FCOE_JUMBO_FRAME_SIZE);
|
||||
#endif
|
||||
|
||||
/* reconfigure the hardware */
|
||||
if (adapter->dcbx_cap & DCB_CAP_DCBX_VER_CEE) {
|
||||
#ifdef IXGBE_FCOE
|
||||
if (adapter->netdev->features & NETIF_F_FCOE_MTU)
|
||||
max_frame = max(max_frame, IXGBE_FCOE_JUMBO_FRAME_SIZE);
|
||||
#endif
|
||||
ixgbe_dcb_calculate_tc_credits(hw, &adapter->dcb_cfg, max_frame,
|
||||
DCB_TX_CONFIG);
|
||||
ixgbe_dcb_calculate_tc_credits(hw, &adapter->dcb_cfg, max_frame,
|
||||
DCB_RX_CONFIG);
|
||||
ixgbe_dcb_hw_config(hw, &adapter->dcb_cfg);
|
||||
} else {
|
||||
struct net_device *dev = adapter->netdev;
|
||||
|
||||
if (adapter->ixgbe_ieee_ets) {
|
||||
struct ieee_ets *ets = adapter->ixgbe_ieee_ets;
|
||||
int max_frame = dev->mtu + ETH_HLEN + ETH_FCS_LEN;
|
||||
|
||||
ixgbe_dcb_hw_ets(&adapter->hw, ets, max_frame);
|
||||
}
|
||||
|
||||
if (adapter->ixgbe_ieee_pfc) {
|
||||
struct ieee_pfc *pfc = adapter->ixgbe_ieee_pfc;
|
||||
u8 *prio_tc = adapter->ixgbe_ieee_ets->prio_tc;
|
||||
|
||||
ixgbe_dcb_hw_pfc_config(&adapter->hw, pfc->pfc_en,
|
||||
prio_tc);
|
||||
}
|
||||
} else if (adapter->ixgbe_ieee_ets && adapter->ixgbe_ieee_pfc) {
|
||||
ixgbe_dcb_hw_ets(&adapter->hw,
|
||||
adapter->ixgbe_ieee_ets,
|
||||
max_frame);
|
||||
ixgbe_dcb_hw_pfc_config(&adapter->hw,
|
||||
adapter->ixgbe_ieee_pfc->pfc_en,
|
||||
adapter->ixgbe_ieee_ets->prio_tc);
|
||||
}
|
||||
|
||||
/* Enable RSS Hash per TC */
|
||||
|
@ -6125,7 +6116,6 @@ static void ixgbe_sfp_link_config_subtask(struct ixgbe_adapter *adapter)
|
|||
autoneg = hw->phy.autoneg_advertised;
|
||||
if ((!autoneg) && (hw->mac.ops.get_link_capabilities))
|
||||
hw->mac.ops.get_link_capabilities(hw, &autoneg, &negotiation);
|
||||
hw->mac.autotry_restart = false;
|
||||
if (hw->mac.ops.setup_link)
|
||||
hw->mac.ops.setup_link(hw, autoneg, negotiation, true);
|
||||
|
||||
|
@ -7589,13 +7579,6 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev,
|
|||
goto err_eeprom;
|
||||
}
|
||||
|
||||
/* power down the optics for multispeed fiber and 82599 SFP+ fiber */
|
||||
if (hw->mac.ops.disable_tx_laser &&
|
||||
((hw->phy.multispeed_fiber) ||
|
||||
((hw->mac.ops.get_media_type(hw) == ixgbe_media_type_fiber) &&
|
||||
(hw->mac.type == ixgbe_mac_82599EB))))
|
||||
hw->mac.ops.disable_tx_laser(hw);
|
||||
|
||||
setup_timer(&adapter->service_timer, &ixgbe_service_timer,
|
||||
(unsigned long) adapter);
|
||||
|
||||
|
@ -7693,6 +7676,13 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev,
|
|||
if (err)
|
||||
goto err_register;
|
||||
|
||||
/* power down the optics for multispeed fiber and 82599 SFP+ fiber */
|
||||
if (hw->mac.ops.disable_tx_laser &&
|
||||
((hw->phy.multispeed_fiber) ||
|
||||
((hw->mac.ops.get_media_type(hw) == ixgbe_media_type_fiber) &&
|
||||
(hw->mac.type == ixgbe_mac_82599EB))))
|
||||
hw->mac.ops.disable_tx_laser(hw);
|
||||
|
||||
/* carrier off reporting is important to ethtool even BEFORE open */
|
||||
netif_carrier_off(netdev);
|
||||
|
||||
|
|
|
@ -42,10 +42,12 @@ int ixgbe_ndo_set_vf_spoofchk(struct net_device *netdev, int vf, bool setting);
|
|||
int ixgbe_ndo_get_vf_config(struct net_device *netdev,
|
||||
int vf, struct ifla_vf_info *ivi);
|
||||
void ixgbe_check_vf_rate_limit(struct ixgbe_adapter *adapter);
|
||||
#ifdef CONFIG_PCI_IOV
|
||||
void ixgbe_disable_sriov(struct ixgbe_adapter *adapter);
|
||||
void ixgbe_enable_sriov(struct ixgbe_adapter *adapter,
|
||||
const struct ixgbe_info *ii);
|
||||
int ixgbe_check_vf_assignment(struct ixgbe_adapter *adapter);
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* _IXGBE_SRIOV_H_ */
|
||||
|
|
|
@ -54,7 +54,7 @@ char ixgbevf_driver_name[] = "ixgbevf";
|
|||
static const char ixgbevf_driver_string[] =
|
||||
"Intel(R) 10 Gigabit PCI Express Virtual Function Network Driver";
|
||||
|
||||
#define DRV_VERSION "2.1.0-k"
|
||||
#define DRV_VERSION "2.2.0-k"
|
||||
const char ixgbevf_driver_version[] = DRV_VERSION;
|
||||
static char ixgbevf_copyright[] =
|
||||
"Copyright (c) 2009 - 2010 Intel Corporation.";
|
||||
|
|
Loading…
Reference in New Issue