diff options
| -rw-r--r-- | drivers/net/ethernet/intel/e100.c | 4 | ||||
| -rw-r--r-- | drivers/net/ethernet/intel/e1000e/ich8lan.c | 3 | ||||
| -rw-r--r-- | drivers/net/ethernet/intel/igb/e1000_phy.c | 2 | ||||
| -rw-r--r-- | drivers/net/ethernet/intel/ixgbe/ixgbe_common.c | 20 | ||||
| -rw-r--r-- | drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.c | 10 | ||||
| -rw-r--r-- | drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 48 | ||||
| -rw-r--r-- | drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.h | 2 | ||||
| -rw-r--r-- | drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 2 |
8 files changed, 45 insertions, 46 deletions
diff --git a/drivers/net/ethernet/intel/e100.c b/drivers/net/ethernet/intel/e100.c index ae17cd1a907f..5a2fdf7a00c8 100644 --- a/drivers/net/ethernet/intel/e100.c +++ b/drivers/net/ethernet/intel/e100.c | |||
| @@ -2810,6 +2810,10 @@ static int __devinit e100_probe(struct pci_dev *pdev, | |||
| 2810 | 2810 | ||
| 2811 | e100_get_defaults(nic); | 2811 | e100_get_defaults(nic); |
| 2812 | 2812 | ||
| 2813 | /* D100 MAC doesn't allow rx of vlan packets with normal MTU */ | ||
| 2814 | if (nic->mac < mac_82558_D101_A4) | ||
| 2815 | netdev->features |= NETIF_F_VLAN_CHALLENGED; | ||
| 2816 | |||
| 2813 | /* locks must be initialized before calling hw_reset */ | 2817 | /* locks must be initialized before calling hw_reset */ |
| 2814 | spin_lock_init(&nic->cb_lock); | 2818 | spin_lock_init(&nic->cb_lock); |
| 2815 | spin_lock_init(&nic->cmd_lock); | 2819 | spin_lock_init(&nic->cmd_lock); |
diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.c b/drivers/net/ethernet/intel/e1000e/ich8lan.c index 6a17c62cb86f..e2a80a283fd3 100644 --- a/drivers/net/ethernet/intel/e1000e/ich8lan.c +++ b/drivers/net/ethernet/intel/e1000e/ich8lan.c | |||
| @@ -866,8 +866,7 @@ static s32 e1000_acquire_swflag_ich8lan(struct e1000_hw *hw) | |||
| 866 | 866 | ||
| 867 | if (test_and_set_bit(__E1000_ACCESS_SHARED_RESOURCE, | 867 | if (test_and_set_bit(__E1000_ACCESS_SHARED_RESOURCE, |
| 868 | &hw->adapter->state)) { | 868 | &hw->adapter->state)) { |
| 869 | WARN(1, "e1000e: %s: contention for Phy access\n", | 869 | e_dbg("contention for Phy access\n"); |
| 870 | hw->adapter->netdev->name); | ||
| 871 | return -E1000_ERR_PHY; | 870 | return -E1000_ERR_PHY; |
| 872 | } | 871 | } |
| 873 | 872 | ||
diff --git a/drivers/net/ethernet/intel/igb/e1000_phy.c b/drivers/net/ethernet/intel/igb/e1000_phy.c index 7edf31efe756..b17d7c20f817 100644 --- a/drivers/net/ethernet/intel/igb/e1000_phy.c +++ b/drivers/net/ethernet/intel/igb/e1000_phy.c | |||
| @@ -1687,7 +1687,7 @@ s32 igb_get_cable_length_m88_gen2(struct e1000_hw *hw) | |||
| 1687 | if (ret_val) | 1687 | if (ret_val) |
| 1688 | goto out; | 1688 | goto out; |
| 1689 | 1689 | ||
| 1690 | is_cm = !(phy_data & I347AT4_PCDC_CABLE_LENGTH_UNIT); | 1690 | is_cm = !(phy_data2 & I347AT4_PCDC_CABLE_LENGTH_UNIT); |
| 1691 | 1691 | ||
| 1692 | /* Populate the phy structure with cable length in meters */ | 1692 | /* Populate the phy structure with cable length in meters */ |
| 1693 | phy->min_cable_length = phy_data / (is_cm ? 100 : 1); | 1693 | phy->min_cable_length = phy_data / (is_cm ? 100 : 1); |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c index 834f044be4c3..f1365fef4ed2 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c | |||
| @@ -3344,7 +3344,7 @@ static u8 ixgbe_calculate_checksum(u8 *buffer, u32 length) | |||
| 3344 | static s32 ixgbe_host_interface_command(struct ixgbe_hw *hw, u32 *buffer, | 3344 | static s32 ixgbe_host_interface_command(struct ixgbe_hw *hw, u32 *buffer, |
| 3345 | u32 length) | 3345 | u32 length) |
| 3346 | { | 3346 | { |
| 3347 | u32 hicr, i; | 3347 | u32 hicr, i, bi; |
| 3348 | u32 hdr_size = sizeof(struct ixgbe_hic_hdr); | 3348 | u32 hdr_size = sizeof(struct ixgbe_hic_hdr); |
| 3349 | u8 buf_len, dword_len; | 3349 | u8 buf_len, dword_len; |
| 3350 | 3350 | ||
| @@ -3398,9 +3398,9 @@ static s32 ixgbe_host_interface_command(struct ixgbe_hw *hw, u32 *buffer, | |||
| 3398 | dword_len = hdr_size >> 2; | 3398 | dword_len = hdr_size >> 2; |
| 3399 | 3399 | ||
| 3400 | /* first pull in the header so we know the buffer length */ | 3400 | /* first pull in the header so we know the buffer length */ |
| 3401 | for (i = 0; i < dword_len; i++) { | 3401 | for (bi = 0; bi < dword_len; bi++) { |
| 3402 | buffer[i] = IXGBE_READ_REG_ARRAY(hw, IXGBE_FLEX_MNG, i); | 3402 | buffer[bi] = IXGBE_READ_REG_ARRAY(hw, IXGBE_FLEX_MNG, bi); |
| 3403 | le32_to_cpus(&buffer[i]); | 3403 | le32_to_cpus(&buffer[bi]); |
| 3404 | } | 3404 | } |
| 3405 | 3405 | ||
| 3406 | /* If there is any thing in data position pull it in */ | 3406 | /* 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, | |||
| 3414 | goto out; | 3414 | goto out; |
| 3415 | } | 3415 | } |
| 3416 | 3416 | ||
| 3417 | /* Calculate length in DWORDs, add one for odd lengths */ | 3417 | /* Calculate length in DWORDs, add 3 for odd lengths */ |
| 3418 | dword_len = (buf_len + 1) >> 2; | 3418 | dword_len = (buf_len + 3) >> 2; |
| 3419 | 3419 | ||
| 3420 | /* Pull in the rest of the buffer (i is where we left off)*/ | 3420 | /* Pull in the rest of the buffer (bi is where we left off)*/ |
| 3421 | for (; i < buf_len; i++) | 3421 | for (; bi <= dword_len; bi++) { |
| 3422 | buffer[i] = IXGBE_READ_REG_ARRAY(hw, IXGBE_FLEX_MNG, i); | 3422 | buffer[bi] = IXGBE_READ_REG_ARRAY(hw, IXGBE_FLEX_MNG, bi); |
| 3423 | le32_to_cpus(&buffer[bi]); | ||
| 3424 | } | ||
| 3423 | 3425 | ||
| 3424 | out: | 3426 | out: |
| 3425 | return ret_val; | 3427 | return ret_val; |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.c index 3631d639d86a..33b93ffb87cb 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.c | |||
| @@ -561,11 +561,12 @@ static int ixgbe_dcbnl_ieee_getets(struct net_device *dev, | |||
| 561 | struct ixgbe_adapter *adapter = netdev_priv(dev); | 561 | struct ixgbe_adapter *adapter = netdev_priv(dev); |
| 562 | struct ieee_ets *my_ets = adapter->ixgbe_ieee_ets; | 562 | struct ieee_ets *my_ets = adapter->ixgbe_ieee_ets; |
| 563 | 563 | ||
| 564 | ets->ets_cap = adapter->dcb_cfg.num_tcs.pg_tcs; | ||
| 565 | |||
| 564 | /* No IEEE PFC settings available */ | 566 | /* No IEEE PFC settings available */ |
| 565 | if (!my_ets) | 567 | if (!my_ets) |
| 566 | return -EINVAL; | 568 | return 0; |
| 567 | 569 | ||
| 568 | ets->ets_cap = adapter->dcb_cfg.num_tcs.pg_tcs; | ||
| 569 | ets->cbs = my_ets->cbs; | 570 | ets->cbs = my_ets->cbs; |
| 570 | memcpy(ets->tc_tx_bw, my_ets->tc_tx_bw, sizeof(ets->tc_tx_bw)); | 571 | memcpy(ets->tc_tx_bw, my_ets->tc_tx_bw, sizeof(ets->tc_tx_bw)); |
| 571 | memcpy(ets->tc_rx_bw, my_ets->tc_rx_bw, sizeof(ets->tc_rx_bw)); | 572 | 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, | |||
| 621 | struct ieee_pfc *my_pfc = adapter->ixgbe_ieee_pfc; | 622 | struct ieee_pfc *my_pfc = adapter->ixgbe_ieee_pfc; |
| 622 | int i; | 623 | int i; |
| 623 | 624 | ||
| 625 | pfc->pfc_cap = adapter->dcb_cfg.num_tcs.pfc_tcs; | ||
| 626 | |||
| 624 | /* No IEEE PFC settings available */ | 627 | /* No IEEE PFC settings available */ |
| 625 | if (!my_pfc) | 628 | if (!my_pfc) |
| 626 | return -EINVAL; | 629 | return 0; |
| 627 | 630 | ||
| 628 | pfc->pfc_cap = adapter->dcb_cfg.num_tcs.pfc_tcs; | ||
| 629 | pfc->pfc_en = my_pfc->pfc_en; | 631 | pfc->pfc_en = my_pfc->pfc_en; |
| 630 | pfc->mbc = my_pfc->mbc; | 632 | pfc->mbc = my_pfc->mbc; |
| 631 | pfc->delay = my_pfc->delay; | 633 | pfc->delay = my_pfc->delay; |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c index 09b8e88b2999..8ef92d1a6aa1 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | |||
| @@ -3345,34 +3345,25 @@ static void ixgbe_configure_dcb(struct ixgbe_adapter *adapter) | |||
| 3345 | 3345 | ||
| 3346 | hw->mac.ops.set_vfta(&adapter->hw, 0, 0, true); | 3346 | hw->mac.ops.set_vfta(&adapter->hw, 0, 0, true); |
| 3347 | 3347 | ||
| 3348 | /* reconfigure the hardware */ | ||
| 3349 | if (adapter->dcbx_cap & DCB_CAP_DCBX_VER_CEE) { | ||
| 3350 | #ifdef IXGBE_FCOE | 3348 | #ifdef IXGBE_FCOE |
| 3351 | if (adapter->netdev->features & NETIF_F_FCOE_MTU) | 3349 | if (adapter->netdev->features & NETIF_F_FCOE_MTU) |
| 3352 | max_frame = max(max_frame, IXGBE_FCOE_JUMBO_FRAME_SIZE); | 3350 | max_frame = max(max_frame, IXGBE_FCOE_JUMBO_FRAME_SIZE); |
| 3353 | #endif | 3351 | #endif |
| 3352 | |||
| 3353 | /* reconfigure the hardware */ | ||
| 3354 | if (adapter->dcbx_cap & DCB_CAP_DCBX_VER_CEE) { | ||
| 3354 | ixgbe_dcb_calculate_tc_credits(hw, &adapter->dcb_cfg, max_frame, | 3355 | ixgbe_dcb_calculate_tc_credits(hw, &adapter->dcb_cfg, max_frame, |
| 3355 | DCB_TX_CONFIG); | 3356 | DCB_TX_CONFIG); |
| 3356 | ixgbe_dcb_calculate_tc_credits(hw, &adapter->dcb_cfg, max_frame, | 3357 | ixgbe_dcb_calculate_tc_credits(hw, &adapter->dcb_cfg, max_frame, |
| 3357 | DCB_RX_CONFIG); | 3358 | DCB_RX_CONFIG); |
| 3358 | ixgbe_dcb_hw_config(hw, &adapter->dcb_cfg); | 3359 | ixgbe_dcb_hw_config(hw, &adapter->dcb_cfg); |
| 3359 | } else { | 3360 | } else if (adapter->ixgbe_ieee_ets && adapter->ixgbe_ieee_pfc) { |
| 3360 | struct net_device *dev = adapter->netdev; | 3361 | ixgbe_dcb_hw_ets(&adapter->hw, |
| 3361 | 3362 | adapter->ixgbe_ieee_ets, | |
| 3362 | if (adapter->ixgbe_ieee_ets) { | 3363 | max_frame); |
| 3363 | struct ieee_ets *ets = adapter->ixgbe_ieee_ets; | 3364 | ixgbe_dcb_hw_pfc_config(&adapter->hw, |
| 3364 | int max_frame = dev->mtu + ETH_HLEN + ETH_FCS_LEN; | 3365 | adapter->ixgbe_ieee_pfc->pfc_en, |
| 3365 | 3366 | adapter->ixgbe_ieee_ets->prio_tc); | |
| 3366 | ixgbe_dcb_hw_ets(&adapter->hw, ets, max_frame); | ||
| 3367 | } | ||
| 3368 | |||
| 3369 | if (adapter->ixgbe_ieee_pfc) { | ||
| 3370 | struct ieee_pfc *pfc = adapter->ixgbe_ieee_pfc; | ||
| 3371 | u8 *prio_tc = adapter->ixgbe_ieee_ets->prio_tc; | ||
| 3372 | |||
| 3373 | ixgbe_dcb_hw_pfc_config(&adapter->hw, pfc->pfc_en, | ||
| 3374 | prio_tc); | ||
| 3375 | } | ||
| 3376 | } | 3367 | } |
| 3377 | 3368 | ||
| 3378 | /* Enable RSS Hash per TC */ | 3369 | /* Enable RSS Hash per TC */ |
| @@ -6125,7 +6116,6 @@ static void ixgbe_sfp_link_config_subtask(struct ixgbe_adapter *adapter) | |||
| 6125 | autoneg = hw->phy.autoneg_advertised; | 6116 | autoneg = hw->phy.autoneg_advertised; |
| 6126 | if ((!autoneg) && (hw->mac.ops.get_link_capabilities)) | 6117 | if ((!autoneg) && (hw->mac.ops.get_link_capabilities)) |
| 6127 | hw->mac.ops.get_link_capabilities(hw, &autoneg, &negotiation); | 6118 | hw->mac.ops.get_link_capabilities(hw, &autoneg, &negotiation); |
| 6128 | hw->mac.autotry_restart = false; | ||
| 6129 | if (hw->mac.ops.setup_link) | 6119 | if (hw->mac.ops.setup_link) |
| 6130 | hw->mac.ops.setup_link(hw, autoneg, negotiation, true); | 6120 | hw->mac.ops.setup_link(hw, autoneg, negotiation, true); |
| 6131 | 6121 | ||
| @@ -7589,13 +7579,6 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev, | |||
| 7589 | goto err_eeprom; | 7579 | goto err_eeprom; |
| 7590 | } | 7580 | } |
| 7591 | 7581 | ||
| 7592 | /* power down the optics for multispeed fiber and 82599 SFP+ fiber */ | ||
| 7593 | if (hw->mac.ops.disable_tx_laser && | ||
| 7594 | ((hw->phy.multispeed_fiber) || | ||
| 7595 | ((hw->mac.ops.get_media_type(hw) == ixgbe_media_type_fiber) && | ||
| 7596 | (hw->mac.type == ixgbe_mac_82599EB)))) | ||
| 7597 | hw->mac.ops.disable_tx_laser(hw); | ||
| 7598 | |||
| 7599 | setup_timer(&adapter->service_timer, &ixgbe_service_timer, | 7582 | setup_timer(&adapter->service_timer, &ixgbe_service_timer, |
| 7600 | (unsigned long) adapter); | 7583 | (unsigned long) adapter); |
| 7601 | 7584 | ||
| @@ -7693,6 +7676,13 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev, | |||
| 7693 | if (err) | 7676 | if (err) |
| 7694 | goto err_register; | 7677 | goto err_register; |
| 7695 | 7678 | ||
| 7679 | /* power down the optics for multispeed fiber and 82599 SFP+ fiber */ | ||
| 7680 | if (hw->mac.ops.disable_tx_laser && | ||
| 7681 | ((hw->phy.multispeed_fiber) || | ||
| 7682 | ((hw->mac.ops.get_media_type(hw) == ixgbe_media_type_fiber) && | ||
| 7683 | (hw->mac.type == ixgbe_mac_82599EB)))) | ||
| 7684 | hw->mac.ops.disable_tx_laser(hw); | ||
| 7685 | |||
| 7696 | /* carrier off reporting is important to ethtool even BEFORE open */ | 7686 | /* carrier off reporting is important to ethtool even BEFORE open */ |
| 7697 | netif_carrier_off(netdev); | 7687 | netif_carrier_off(netdev); |
| 7698 | 7688 | ||
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.h b/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.h index 5a7e1eb33599..4a5d8897faab 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.h +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.h | |||
| @@ -42,10 +42,12 @@ int ixgbe_ndo_set_vf_spoofchk(struct net_device *netdev, int vf, bool setting); | |||
| 42 | int ixgbe_ndo_get_vf_config(struct net_device *netdev, | 42 | int ixgbe_ndo_get_vf_config(struct net_device *netdev, |
| 43 | int vf, struct ifla_vf_info *ivi); | 43 | int vf, struct ifla_vf_info *ivi); |
| 44 | void ixgbe_check_vf_rate_limit(struct ixgbe_adapter *adapter); | 44 | void ixgbe_check_vf_rate_limit(struct ixgbe_adapter *adapter); |
| 45 | #ifdef CONFIG_PCI_IOV | ||
| 45 | void ixgbe_disable_sriov(struct ixgbe_adapter *adapter); | 46 | void ixgbe_disable_sriov(struct ixgbe_adapter *adapter); |
| 46 | void ixgbe_enable_sriov(struct ixgbe_adapter *adapter, | 47 | void ixgbe_enable_sriov(struct ixgbe_adapter *adapter, |
| 47 | const struct ixgbe_info *ii); | 48 | const struct ixgbe_info *ii); |
| 48 | int ixgbe_check_vf_assignment(struct ixgbe_adapter *adapter); | 49 | int ixgbe_check_vf_assignment(struct ixgbe_adapter *adapter); |
| 50 | #endif | ||
| 49 | 51 | ||
| 50 | 52 | ||
| 51 | #endif /* _IXGBE_SRIOV_H_ */ | 53 | #endif /* _IXGBE_SRIOV_H_ */ |
diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c index 5e92cc2079bd..4c8e19951d57 100644 --- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c +++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | |||
| @@ -54,7 +54,7 @@ char ixgbevf_driver_name[] = "ixgbevf"; | |||
| 54 | static const char ixgbevf_driver_string[] = | 54 | static const char ixgbevf_driver_string[] = |
| 55 | "Intel(R) 10 Gigabit PCI Express Virtual Function Network Driver"; | 55 | "Intel(R) 10 Gigabit PCI Express Virtual Function Network Driver"; |
| 56 | 56 | ||
| 57 | #define DRV_VERSION "2.1.0-k" | 57 | #define DRV_VERSION "2.2.0-k" |
| 58 | const char ixgbevf_driver_version[] = DRV_VERSION; | 58 | const char ixgbevf_driver_version[] = DRV_VERSION; |
| 59 | static char ixgbevf_copyright[] = | 59 | static char ixgbevf_copyright[] = |
| 60 | "Copyright (c) 2009 - 2010 Intel Corporation."; | 60 | "Copyright (c) 2009 - 2010 Intel Corporation."; |
