.setup_link             = e1000e_setup_link_generic,
        /* setup_physical_interface dependent on media type */
        .setup_led              = e1000e_setup_led_generic,
+       .config_collision_dist  = e1000e_config_collision_dist_generic,
 };
 
 static const struct e1000_phy_operations es2_phy_ops = {
 
        .setup_link             = e1000_setup_link_82571,
        /* .setup_physical_interface: media type dependent */
        .setup_led              = e1000e_setup_led_generic,
+       .config_collision_dist  = e1000e_config_collision_dist_generic,
        .read_mac_addr          = e1000_read_mac_addr_82571,
 };
 
 
 extern void e1000e_set_pcie_no_snoop(struct e1000_hw *hw, u32 no_snoop);
 extern s32 e1000e_get_hw_semaphore(struct e1000_hw *hw);
 extern s32 e1000e_valid_led_default(struct e1000_hw *hw, u16 *data);
-extern void e1000e_config_collision_dist(struct e1000_hw *hw);
+extern void e1000e_config_collision_dist_generic(struct e1000_hw *hw);
 extern s32 e1000e_config_fc_after_link_up(struct e1000_hw *hw);
 extern s32 e1000e_force_mac_fc(struct e1000_hw *hw);
 extern s32 e1000e_blink_led_generic(struct e1000_hw *hw);
 
        s32  (*setup_physical_interface)(struct e1000_hw *);
        s32  (*setup_led)(struct e1000_hw *);
        void (*write_vfta)(struct e1000_hw *, u32, u32);
+       void (*config_collision_dist)(struct e1000_hw *);
        s32  (*read_mac_addr)(struct e1000_hw *);
 };
 
 
         * of MAC speed/duplex configuration.  So we only need to
         * configure Collision Distance in the MAC.
         */
-       e1000e_config_collision_dist(hw);
+       mac->ops.config_collision_dist(hw);
 
        /*
         * Configure Flow Control now that Auto-Neg has completed.
        .setup_link             = e1000_setup_link_ich8lan,
        .setup_physical_interface= e1000_setup_copper_link_ich8lan,
        /* id_led_init dependent on mac type */
+       .config_collision_dist  = e1000e_config_collision_dist_generic,
 };
 
 static const struct e1000_phy_operations ich8_phy_ops = {
 
         * of MAC speed/duplex configuration.  So we only need to
         * configure Collision Distance in the MAC.
         */
-       e1000e_config_collision_dist(hw);
+       mac->ops.config_collision_dist(hw);
 
        /*
         * Configure Flow Control now that Auto-Neg has completed.
        /* Take the link out of reset */
        ctrl &= ~E1000_CTRL_LRST;
 
-       e1000e_config_collision_dist(hw);
+       hw->mac.ops.config_collision_dist(hw);
 
        ret_val = e1000_commit_fc_settings_generic(hw);
        if (ret_val)
 }
 
 /**
- *  e1000e_config_collision_dist - Configure collision distance
+ *  e1000e_config_collision_dist_generic - Configure collision distance
  *  @hw: pointer to the HW structure
  *
  *  Configures the collision distance to the default value and is used
- *  during link setup. Currently no func pointer exists and all
- *  implementations are handled in the generic version of this function.
+ *  during link setup.
  **/
-void e1000e_config_collision_dist(struct e1000_hw *hw)
+void e1000e_config_collision_dist_generic(struct e1000_hw *hw)
 {
        u32 tctl;
 
 
        /* enable Report Status bit */
        adapter->txd_cmd |= E1000_TXD_CMD_RS;
 
-       e1000e_config_collision_dist(hw);
+       hw->mac.ops.config_collision_dist(hw);
 }
 
 /**
 
 
        if (link) {
                e_dbg("Valid link established!!!\n");
-               e1000e_config_collision_dist(hw);
+               hw->mac.ops.config_collision_dist(hw);
                ret_val = e1000e_config_fc_after_link_up(hw);
        } else {
                e_dbg("Unable to establish link!!!\n");
                e_dbg("Forcing 10mb\n");
        }
 
-       e1000e_config_collision_dist(hw);
+       hw->mac.ops.config_collision_dist(hw);
 
        ew32(CTRL, ctrl);
 }