Loading drivers/net/ethernet/intel/e1000e/82571.c +11 −1 Original line number Diff line number Diff line Loading @@ -999,7 +999,7 @@ static s32 e1000_set_d0_lplu_state_82571(struct e1000_hw *hw, bool active) **/ static s32 e1000_reset_hw_82571(struct e1000_hw *hw) { u32 ctrl, ctrl_ext; u32 ctrl, ctrl_ext, eecd; s32 ret_val; /* Loading Loading @@ -1072,6 +1072,16 @@ static s32 e1000_reset_hw_82571(struct e1000_hw *hw) */ switch (hw->mac.type) { case e1000_82571: case e1000_82572: /* * REQ and GNT bits need to be cleared when using AUTO_RD * to access the EEPROM. */ eecd = er32(EECD); eecd &= ~(E1000_EECD_REQ | E1000_EECD_GNT); ew32(EECD, eecd); break; case e1000_82573: case e1000_82574: case e1000_82583: Loading drivers/net/ethernet/intel/e1000e/netdev.c +1 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,7 @@ #define DRV_EXTRAVERSION "-k" #define DRV_VERSION "1.11.3" DRV_EXTRAVERSION #define DRV_VERSION "2.0.0" DRV_EXTRAVERSION char e1000e_driver_name[] = "e1000e"; const char e1000e_driver_version[] = DRV_VERSION; Loading drivers/net/ethernet/intel/e1000e/phy.c +45 −26 Original line number Diff line number Diff line Loading @@ -638,6 +638,45 @@ s32 e1000e_write_kmrn_reg_locked(struct e1000_hw *hw, u32 offset, u16 data) return __e1000_write_kmrn_reg(hw, offset, data, true); } /** * e1000_set_master_slave_mode - Setup PHY for Master/slave mode * @hw: pointer to the HW structure * * Sets up Master/slave mode **/ static s32 e1000_set_master_slave_mode(struct e1000_hw *hw) { s32 ret_val; u16 phy_data; /* Resolve Master/Slave mode */ ret_val = e1e_rphy(hw, PHY_1000T_CTRL, &phy_data); if (ret_val) return ret_val; /* load defaults for future use */ hw->phy.original_ms_type = (phy_data & CR_1000T_MS_ENABLE) ? ((phy_data & CR_1000T_MS_VALUE) ? e1000_ms_force_master : e1000_ms_force_slave) : e1000_ms_auto; switch (hw->phy.ms_type) { case e1000_ms_force_master: phy_data |= (CR_1000T_MS_ENABLE | CR_1000T_MS_VALUE); break; case e1000_ms_force_slave: phy_data |= CR_1000T_MS_ENABLE; phy_data &= ~(CR_1000T_MS_VALUE); break; case e1000_ms_auto: phy_data &= ~CR_1000T_MS_ENABLE; /* fall-through */ default: break; } return e1e_wphy(hw, PHY_1000T_CTRL, phy_data); } /** * e1000_copper_link_setup_82577 - Setup 82577 PHY for copper link * @hw: pointer to the HW structure Loading @@ -659,7 +698,11 @@ s32 e1000_copper_link_setup_82577(struct e1000_hw *hw) /* Enable downshift */ phy_data |= I82577_CFG_ENABLE_DOWNSHIFT; return e1e_wphy(hw, I82577_CFG_REG, phy_data); ret_val = e1e_wphy(hw, I82577_CFG_REG, phy_data); if (ret_val) return ret_val; return e1000_set_master_slave_mode(hw); } /** Loading Loading @@ -895,31 +938,7 @@ s32 e1000e_copper_link_setup_igp(struct e1000_hw *hw) return ret_val; } ret_val = e1e_rphy(hw, PHY_1000T_CTRL, &data); if (ret_val) return ret_val; /* load defaults for future use */ phy->original_ms_type = (data & CR_1000T_MS_ENABLE) ? ((data & CR_1000T_MS_VALUE) ? e1000_ms_force_master : e1000_ms_force_slave) : e1000_ms_auto; switch (phy->ms_type) { case e1000_ms_force_master: data |= (CR_1000T_MS_ENABLE | CR_1000T_MS_VALUE); break; case e1000_ms_force_slave: data |= CR_1000T_MS_ENABLE; data &= ~(CR_1000T_MS_VALUE); break; case e1000_ms_auto: data &= ~CR_1000T_MS_ENABLE; default: break; } ret_val = e1e_wphy(hw, PHY_1000T_CTRL, data); ret_val = e1000_set_master_slave_mode(hw); } return ret_val; Loading drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.c +7 −0 Original line number Diff line number Diff line Loading @@ -662,6 +662,13 @@ static int ixgbe_dcbnl_ieee_setpfc(struct net_device *dev, return -ENOMEM; } if (pfc->pfc_en) { adapter->last_lfc_mode = adapter->hw.fc.current_mode; adapter->hw.fc.current_mode = ixgbe_fc_pfc; } else { adapter->hw.fc.current_mode = adapter->last_lfc_mode; } prio_tc = adapter->ixgbe_ieee_ets->prio_tc; memcpy(adapter->ixgbe_ieee_pfc, pfc, sizeof(*adapter->ixgbe_ieee_pfc)); return ixgbe_dcb_hw_pfc_config(&adapter->hw, pfc->pfc_en, prio_tc); Loading drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +5 −1 Original line number Diff line number Diff line Loading @@ -637,7 +637,11 @@ static void ixgbe_update_xoff_received(struct ixgbe_adapter *adapter) clear_bit(__IXGBE_HANG_CHECK_ARMED, &adapter->tx_ring[i]->state); return; } else if (!(adapter->dcb_cfg.pfc_mode_enable)) } else if (((adapter->dcbx_cap & DCB_CAP_DCBX_VER_CEE) && !(adapter->dcb_cfg.pfc_mode_enable)) || ((adapter->dcbx_cap & DCB_CAP_DCBX_VER_IEEE) && adapter->ixgbe_ieee_pfc && !(adapter->ixgbe_ieee_pfc->pfc_en))) return; /* update stats for each tc, only valid with PFC enabled */ Loading Loading
drivers/net/ethernet/intel/e1000e/82571.c +11 −1 Original line number Diff line number Diff line Loading @@ -999,7 +999,7 @@ static s32 e1000_set_d0_lplu_state_82571(struct e1000_hw *hw, bool active) **/ static s32 e1000_reset_hw_82571(struct e1000_hw *hw) { u32 ctrl, ctrl_ext; u32 ctrl, ctrl_ext, eecd; s32 ret_val; /* Loading Loading @@ -1072,6 +1072,16 @@ static s32 e1000_reset_hw_82571(struct e1000_hw *hw) */ switch (hw->mac.type) { case e1000_82571: case e1000_82572: /* * REQ and GNT bits need to be cleared when using AUTO_RD * to access the EEPROM. */ eecd = er32(EECD); eecd &= ~(E1000_EECD_REQ | E1000_EECD_GNT); ew32(EECD, eecd); break; case e1000_82573: case e1000_82574: case e1000_82583: Loading
drivers/net/ethernet/intel/e1000e/netdev.c +1 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,7 @@ #define DRV_EXTRAVERSION "-k" #define DRV_VERSION "1.11.3" DRV_EXTRAVERSION #define DRV_VERSION "2.0.0" DRV_EXTRAVERSION char e1000e_driver_name[] = "e1000e"; const char e1000e_driver_version[] = DRV_VERSION; Loading
drivers/net/ethernet/intel/e1000e/phy.c +45 −26 Original line number Diff line number Diff line Loading @@ -638,6 +638,45 @@ s32 e1000e_write_kmrn_reg_locked(struct e1000_hw *hw, u32 offset, u16 data) return __e1000_write_kmrn_reg(hw, offset, data, true); } /** * e1000_set_master_slave_mode - Setup PHY for Master/slave mode * @hw: pointer to the HW structure * * Sets up Master/slave mode **/ static s32 e1000_set_master_slave_mode(struct e1000_hw *hw) { s32 ret_val; u16 phy_data; /* Resolve Master/Slave mode */ ret_val = e1e_rphy(hw, PHY_1000T_CTRL, &phy_data); if (ret_val) return ret_val; /* load defaults for future use */ hw->phy.original_ms_type = (phy_data & CR_1000T_MS_ENABLE) ? ((phy_data & CR_1000T_MS_VALUE) ? e1000_ms_force_master : e1000_ms_force_slave) : e1000_ms_auto; switch (hw->phy.ms_type) { case e1000_ms_force_master: phy_data |= (CR_1000T_MS_ENABLE | CR_1000T_MS_VALUE); break; case e1000_ms_force_slave: phy_data |= CR_1000T_MS_ENABLE; phy_data &= ~(CR_1000T_MS_VALUE); break; case e1000_ms_auto: phy_data &= ~CR_1000T_MS_ENABLE; /* fall-through */ default: break; } return e1e_wphy(hw, PHY_1000T_CTRL, phy_data); } /** * e1000_copper_link_setup_82577 - Setup 82577 PHY for copper link * @hw: pointer to the HW structure Loading @@ -659,7 +698,11 @@ s32 e1000_copper_link_setup_82577(struct e1000_hw *hw) /* Enable downshift */ phy_data |= I82577_CFG_ENABLE_DOWNSHIFT; return e1e_wphy(hw, I82577_CFG_REG, phy_data); ret_val = e1e_wphy(hw, I82577_CFG_REG, phy_data); if (ret_val) return ret_val; return e1000_set_master_slave_mode(hw); } /** Loading Loading @@ -895,31 +938,7 @@ s32 e1000e_copper_link_setup_igp(struct e1000_hw *hw) return ret_val; } ret_val = e1e_rphy(hw, PHY_1000T_CTRL, &data); if (ret_val) return ret_val; /* load defaults for future use */ phy->original_ms_type = (data & CR_1000T_MS_ENABLE) ? ((data & CR_1000T_MS_VALUE) ? e1000_ms_force_master : e1000_ms_force_slave) : e1000_ms_auto; switch (phy->ms_type) { case e1000_ms_force_master: data |= (CR_1000T_MS_ENABLE | CR_1000T_MS_VALUE); break; case e1000_ms_force_slave: data |= CR_1000T_MS_ENABLE; data &= ~(CR_1000T_MS_VALUE); break; case e1000_ms_auto: data &= ~CR_1000T_MS_ENABLE; default: break; } ret_val = e1e_wphy(hw, PHY_1000T_CTRL, data); ret_val = e1000_set_master_slave_mode(hw); } return ret_val; Loading
drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.c +7 −0 Original line number Diff line number Diff line Loading @@ -662,6 +662,13 @@ static int ixgbe_dcbnl_ieee_setpfc(struct net_device *dev, return -ENOMEM; } if (pfc->pfc_en) { adapter->last_lfc_mode = adapter->hw.fc.current_mode; adapter->hw.fc.current_mode = ixgbe_fc_pfc; } else { adapter->hw.fc.current_mode = adapter->last_lfc_mode; } prio_tc = adapter->ixgbe_ieee_ets->prio_tc; memcpy(adapter->ixgbe_ieee_pfc, pfc, sizeof(*adapter->ixgbe_ieee_pfc)); return ixgbe_dcb_hw_pfc_config(&adapter->hw, pfc->pfc_en, prio_tc); Loading
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +5 −1 Original line number Diff line number Diff line Loading @@ -637,7 +637,11 @@ static void ixgbe_update_xoff_received(struct ixgbe_adapter *adapter) clear_bit(__IXGBE_HANG_CHECK_ARMED, &adapter->tx_ring[i]->state); return; } else if (!(adapter->dcb_cfg.pfc_mode_enable)) } else if (((adapter->dcbx_cap & DCB_CAP_DCBX_VER_CEE) && !(adapter->dcb_cfg.pfc_mode_enable)) || ((adapter->dcbx_cap & DCB_CAP_DCBX_VER_IEEE) && adapter->ixgbe_ieee_pfc && !(adapter->ixgbe_ieee_pfc->pfc_en))) return; /* update stats for each tc, only valid with PFC enabled */ Loading