{
        struct e1000_hw *hw = &adapter->hw;
        struct e1000_mac_info *mac = &hw->mac;
-       struct e1000_mac_operations *func = &mac->ops;
 
-       /* Set media type */
+       /* Set media type and media-dependent function pointers */
        switch (adapter->pdev->device) {
        case E1000_DEV_ID_80003ES2LAN_SERDES_DPT:
                hw->phy.media_type = e1000_media_type_internal_serdes;
+               mac->ops.check_for_link = e1000e_check_for_serdes_link;
+               mac->ops.setup_physical_interface =
+                   e1000e_setup_fiber_serdes_link;
                break;
        default:
                hw->phy.media_type = e1000_media_type_copper;
+               mac->ops.check_for_link = e1000e_check_for_copper_link;
+               mac->ops.setup_physical_interface =
+                   e1000_setup_copper_link_80003es2lan;
                break;
        }
 
        /* Adaptive IFS not supported */
        mac->adaptive_ifs = false;
 
-       /* check for link */
-       switch (hw->phy.media_type) {
-       case e1000_media_type_copper:
-               func->setup_physical_interface = e1000_setup_copper_link_80003es2lan;
-               func->check_for_link = e1000e_check_for_copper_link;
-               break;
-       case e1000_media_type_fiber:
-               func->setup_physical_interface = e1000e_setup_fiber_serdes_link;
-               func->check_for_link = e1000e_check_for_fiber_link;
-               break;
-       case e1000_media_type_internal_serdes:
-               func->setup_physical_interface = e1000e_setup_fiber_serdes_link;
-               func->check_for_link = e1000e_check_for_serdes_link;
-               break;
-       default:
-               return -E1000_ERR_CONFIG;
-               break;
-       }
-
        /* set lan id for port to determine which phy lock to use */
        hw->mac.ops.set_lan_id(hw);