From: jsg Date: Thu, 23 Jun 2022 09:47:04 +0000 (+0000) Subject: ungate DMA clock on >= tgp to avoid packet loss on Alder Lake X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=b3e30c103e1fbbcabc430d676b5da2c1e1e73281;p=openbsd ungate DMA clock on >= tgp to avoid packet loss on Alder Lake chicken bit set in linux but not documented anywhere I can find ok claudio@ --- diff --git a/sys/dev/pci/if_em_hw.c b/sys/dev/pci/if_em_hw.c index 727c431921d..6d230587e99 100644 --- a/sys/dev/pci/if_em_hw.c +++ b/sys/dev/pci/if_em_hw.c @@ -31,7 +31,7 @@ *******************************************************************************/ -/* $OpenBSD: if_em_hw.c,v 1.115 2022/06/23 09:38:28 jsg Exp $ */ +/* $OpenBSD: if_em_hw.c,v 1.116 2022/06/23 09:47:04 jsg Exp $ */ /* * if_em_hw.c Shared functions for accessing and configuring the MAC */ @@ -1846,6 +1846,13 @@ em_init_hw(struct em_softc *sc) em_set_pci_ex_no_snoop(hw, snoop); } + /* ungate DMA clock to avoid packet loss */ + if (hw->mac_type >= em_pch_tgp) { + uint32_t fflt_dbg = E1000_READ_REG(hw, FFLT_DBG); + fflt_dbg |= (1 << 12); + E1000_WRITE_REG(hw, FFLT_DBG, fflt_dbg); + } + if (hw->device_id == E1000_DEV_ID_82546GB_QUAD_COPPER || hw->device_id == E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3) { ctrl_ext = E1000_READ_REG(hw, CTRL_EXT);