Index: head/sys/dev/e1000/e1000_api.c =================================================================== --- head/sys/dev/e1000/e1000_api.c +++ head/sys/dev/e1000/e1000_api.c @@ -309,6 +309,8 @@ case E1000_DEV_ID_PCH_SPT_I219_V4: case E1000_DEV_ID_PCH_SPT_I219_LM5: case E1000_DEV_ID_PCH_SPT_I219_V5: + case E1000_DEV_ID_PCH_CMP_I219_LM12: + case E1000_DEV_ID_PCH_CMP_I219_V12: mac->type = e1000_pch_spt; break; case E1000_DEV_ID_PCH_CNP_I219_LM6: @@ -319,7 +321,10 @@ case E1000_DEV_ID_PCH_ICP_I219_V8: case E1000_DEV_ID_PCH_ICP_I219_LM9: case E1000_DEV_ID_PCH_ICP_I219_V9: - case E1000_DEV_ID_PCH_ICP_I219_V10: + case E1000_DEV_ID_PCH_CMP_I219_LM10: + case E1000_DEV_ID_PCH_CMP_I219_V10: + case E1000_DEV_ID_PCH_CMP_I219_LM11: + case E1000_DEV_ID_PCH_CMP_I219_V11: mac->type = e1000_pch_cnp; break; case E1000_DEV_ID_82575EB_COPPER: Index: head/sys/dev/e1000/e1000_hw.h =================================================================== --- head/sys/dev/e1000/e1000_hw.h +++ head/sys/dev/e1000/e1000_hw.h @@ -155,7 +155,12 @@ #define E1000_DEV_ID_PCH_ICP_I219_V8 0x15E0 #define E1000_DEV_ID_PCH_ICP_I219_LM9 0x15E1 #define E1000_DEV_ID_PCH_ICP_I219_V9 0x15E2 -#define E1000_DEV_ID_PCH_ICP_I219_V10 0x0D4F +#define E1000_DEV_ID_PCH_CMP_I219_LM10 0x0D4E +#define E1000_DEV_ID_PCH_CMP_I219_V10 0x0D4F +#define E1000_DEV_ID_PCH_CMP_I219_LM11 0x0D4C +#define E1000_DEV_ID_PCH_CMP_I219_V11 0x0D4D +#define E1000_DEV_ID_PCH_CMP_I219_LM12 0x0D53 +#define E1000_DEV_ID_PCH_CMP_I219_V12 0x0D55 #define E1000_DEV_ID_82576 0x10C9 #define E1000_DEV_ID_82576_FIBER 0x10E6 #define E1000_DEV_ID_82576_SERDES 0x10E7 Index: head/sys/dev/e1000/e1000_i210.c =================================================================== --- head/sys/dev/e1000/e1000_i210.c +++ head/sys/dev/e1000/e1000_i210.c @@ -774,6 +774,7 @@ **/ s32 e1000_init_hw_i210(struct e1000_hw *hw) { + struct e1000_mac_info *mac = &hw->mac; s32 ret_val; DEBUGFUNC("e1000_init_hw_i210"); @@ -784,6 +785,10 @@ return ret_val; } hw->phy.ops.get_cfg_done = e1000_get_cfg_done_i210; + + /* Initialize identification LED */ + mac->ops.id_led_init(hw); + ret_val = e1000_init_hw_82575(hw); return ret_val; } Index: head/sys/dev/e1000/e1000_ich8lan.c =================================================================== --- head/sys/dev/e1000/e1000_ich8lan.c +++ head/sys/dev/e1000/e1000_ich8lan.c @@ -1091,7 +1091,7 @@ value = ltr & E1000_LTRV_VALUE_MASK; scale = (ltr & E1000_LTRV_SCALE_MASK) >> E1000_LTRV_SCALE_SHIFT; - return value * (1 << (scale * E1000_LTRV_SCALE_FACTOR)); + return value * (1ULL << (scale * E1000_LTRV_SCALE_FACTOR)); } /** @@ -4161,13 +4161,6 @@ if (ret_val) goto release; - /* And invalidate the previously valid segment by setting - * its signature word (0x13) high_byte to 0b. This can be - * done without an erase because flash erase sets all bits - * to 1's. We can write 1's to 0's without an erase - */ - act_offset = (old_bank_offset + E1000_ICH_NVM_SIG_WORD) * 2 + 1; - /* offset in words but we read dword*/ act_offset = old_bank_offset + E1000_ICH_NVM_SIG_WORD - 1; ret_val = e1000_read_flash_dword_ich8lan(hw, act_offset, &dword); @@ -5235,9 +5228,6 @@ DEBUGFUNC("e1000_setup_link_ich8lan"); - if (hw->phy.ops.check_reset_block(hw)) - return E1000_SUCCESS; - /* ICH parts do not have a word in the NVM to determine * the default flow control setting, so we explicitly * set it to full. @@ -5253,10 +5243,12 @@ DEBUGOUT1("After fix-ups FlowControl is now = %x\n", hw->fc.current_mode); - /* Continue to configure the copper link. */ - ret_val = hw->mac.ops.setup_physical_interface(hw); - if (ret_val) - return ret_val; + if (!hw->phy.ops.check_reset_block(hw)) { + /* Continue to configure the copper link. */ + ret_val = hw->mac.ops.setup_physical_interface(hw); + if (ret_val) + return ret_val; + } E1000_WRITE_REG(hw, E1000_FCTTV, hw->fc.pause_time); if ((hw->phy.type == e1000_phy_82578) || Index: head/sys/dev/e1000/if_em.c =================================================================== --- head/sys/dev/e1000/if_em.c +++ head/sys/dev/e1000/if_em.c @@ -174,7 +174,12 @@ PVID(0x8086, E1000_DEV_ID_PCH_ICP_I219_V8, "Intel(R) PRO/1000 Network Connection"), PVID(0x8086, E1000_DEV_ID_PCH_ICP_I219_LM9, "Intel(R) PRO/1000 Network Connection"), PVID(0x8086, E1000_DEV_ID_PCH_ICP_I219_V9, "Intel(R) PRO/1000 Network Connection"), - PVID(0x8086, E1000_DEV_ID_PCH_ICP_I219_V10, "Intel(R) PRO/1000 Network Connection"), + PVID(0x8086, E1000_DEV_ID_PCH_CMP_I219_LM10, "Intel(R) PRO/1000 Network Connection"), + PVID(0x8086, E1000_DEV_ID_PCH_CMP_I219_V10, "Intel(R) PRO/1000 Network Connection"), + PVID(0x8086, E1000_DEV_ID_PCH_CMP_I219_LM11, "Intel(R) PRO/1000 Network Connection"), + PVID(0x8086, E1000_DEV_ID_PCH_CMP_I219_V11, "Intel(R) PRO/1000 Network Connection"), + PVID(0x8086, E1000_DEV_ID_PCH_CMP_I219_LM12, "Intel(R) PRO/1000 Network Connection"), + PVID(0x8086, E1000_DEV_ID_PCH_CMP_I219_V12, "Intel(R) PRO/1000 Network Connection"), /* required last entry */ PVID_END };