E1000_WRITE_REG_ARRAY(hw, E1000_MTA, i, 0);
 
        /* Setup link and flow control */
-       ret_val = e1000e_setup_link(hw);
+       ret_val = mac->ops.setup_link(hw);
 
        /* Disable IBIST slave mode (far-end loopback) */
        e1000_read_kmrn_reg_80003es2lan(hw, E1000_KMRNCTRLSTA_INBAND_PARAM,
        .clear_vfta             = e1000_clear_vfta_generic,
        .reset_hw               = e1000_reset_hw_80003es2lan,
        .init_hw                = e1000_init_hw_80003es2lan,
-       .setup_link             = e1000e_setup_link,
+       .setup_link             = e1000e_setup_link_generic,
        /* setup_physical_interface dependent on media type */
        .setup_led              = e1000e_setup_led_generic,
 };
 
                E1000_WRITE_REG_ARRAY(hw, E1000_MTA, i, 0);
 
        /* Setup link and flow control */
-       ret_val = e1000_setup_link_82571(hw);
+       ret_val = mac->ops.setup_link(hw);
 
        /* Set the transmit descriptor write-back policy */
        reg_data = er32(TXDCTL(0));
                break;
        }
 
-       return e1000e_setup_link(hw);
+       return e1000e_setup_link_generic(hw);
 }
 
 /**
 
 extern s32 e1000e_setup_fiber_serdes_link(struct e1000_hw *hw);
 extern s32 e1000e_copper_link_setup_m88(struct e1000_hw *hw);
 extern s32 e1000e_copper_link_setup_igp(struct e1000_hw *hw);
-extern s32 e1000e_setup_link(struct e1000_hw *hw);
+extern s32 e1000e_setup_link_generic(struct e1000_hw *hw);
 extern void e1000_clear_vfta_generic(struct e1000_hw *hw);
 extern void e1000e_init_rx_addrs(struct e1000_hw *hw, u16 rar_count);
 extern void e1000e_update_mc_addr_list_generic(struct e1000_hw *hw,
 
        }
 
        /* Setup link and flow control */
-       ret_val = e1000_setup_link_ich8lan(hw);
+       ret_val = mac->ops.setup_link(hw);
 
        /* Set the transmit descriptor write-back policy for both queues */
        txdctl = er32(TXDCTL(0));
 
 }
 
 /**
- *  e1000e_setup_link - Setup flow control and link settings
+ *  e1000e_setup_link_generic - Setup flow control and link settings
  *  @hw: pointer to the HW structure
  *
  *  Determines which flow control settings to use, then configures flow
  *  should be established.  Assumes the hardware has previously been reset
  *  and the transmitter and receiver are not enabled.
  **/
-s32 e1000e_setup_link(struct e1000_hw *hw)
+s32 e1000e_setup_link_generic(struct e1000_hw *hw)
 {
        struct e1000_mac_info *mac = &hw->mac;
        s32 ret_val;