|
|
@@ -1834,31 +1834,19 @@ void igb_reinit_locked(struct igb_adapter *adapter)
|
|
|
*
|
|
|
* @adapter: adapter struct
|
|
|
**/
|
|
|
-static s32 igb_enable_mas(struct igb_adapter *adapter)
|
|
|
+static void igb_enable_mas(struct igb_adapter *adapter)
|
|
|
{
|
|
|
struct e1000_hw *hw = &adapter->hw;
|
|
|
- u32 connsw;
|
|
|
- s32 ret_val = 0;
|
|
|
-
|
|
|
- connsw = rd32(E1000_CONNSW);
|
|
|
- if (!(hw->phy.media_type == e1000_media_type_copper))
|
|
|
- return ret_val;
|
|
|
+ u32 connsw = rd32(E1000_CONNSW);
|
|
|
|
|
|
/* configure for SerDes media detect */
|
|
|
- if (!(connsw & E1000_CONNSW_SERDESD)) {
|
|
|
+ if ((hw->phy.media_type == e1000_media_type_copper) &&
|
|
|
+ (!(connsw & E1000_CONNSW_SERDESD))) {
|
|
|
connsw |= E1000_CONNSW_ENRGSRC;
|
|
|
connsw |= E1000_CONNSW_AUTOSENSE_EN;
|
|
|
wr32(E1000_CONNSW, connsw);
|
|
|
wrfl();
|
|
|
- } else if (connsw & E1000_CONNSW_SERDESD) {
|
|
|
- /* already SerDes, no need to enable anything */
|
|
|
- return ret_val;
|
|
|
- } else {
|
|
|
- netdev_info(adapter->netdev,
|
|
|
- "MAS: Unable to configure feature, disabling..\n");
|
|
|
- adapter->flags &= ~IGB_FLAG_MAS_ENABLE;
|
|
|
}
|
|
|
- return ret_val;
|
|
|
}
|
|
|
|
|
|
void igb_reset(struct igb_adapter *adapter)
|
|
|
@@ -1978,10 +1966,9 @@ void igb_reset(struct igb_adapter *adapter)
|
|
|
adapter->ei.get_invariants(hw);
|
|
|
adapter->flags &= ~IGB_FLAG_MEDIA_RESET;
|
|
|
}
|
|
|
- if (adapter->flags & IGB_FLAG_MAS_ENABLE) {
|
|
|
- if (igb_enable_mas(adapter))
|
|
|
- dev_err(&pdev->dev,
|
|
|
- "Error enabling Media Auto Sense\n");
|
|
|
+ if ((mac->type == e1000_82575) &&
|
|
|
+ (adapter->flags & IGB_FLAG_MAS_ENABLE)) {
|
|
|
+ igb_enable_mas(adapter);
|
|
|
}
|
|
|
if (hw->mac.ops.init_hw(hw))
|
|
|
dev_err(&pdev->dev, "Hardware Error\n");
|