Dietmar Posted February 27 Posted February 27 @reboot12 Now your router shows the same 10MB as mine;)).. Here is the next KD block for the 2.5.3 driver, for to understand, what is going on Dietmar !sym quiet sxd ud bc * bu i219!I219MiniportSendPackets ".printf \"SEND CNT=%u\n\", poi(@esp+0x0c); gc" bu i219!I219TxSendOne ".echo TXONE; gc" bu i219!I219TxReclaim "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .echo TXRECLAIM; dd @$t1+0x3810 L1; dd @$t1+0x3818 L1; gc" bu i219!I219RxPoll "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .echo RXPOLL; dd @$t1+0x280c L1; dd @$t1+0x2810 L1; dd @$t1+0x2818 L1; gc" bu ndis!EthFilterDprIndicateReceive ".echo NDIS_RX; gc" bu ndis!EthFilterDprIndicateReceiveComplete ".echo NDIS_RXC; gc" g
reboot12 Posted February 27 Posted February 27 @Dietmar i219253 2 - https://pastebin.com/B9bum1fu I have to stop for today because I've had enough.
reboot12 Posted February 27 Posted February 27 13 minutes ago, Dietmar said: Now your router shows the same 10MB as mine;)).. I don't think so - my router has last DHCP query from Win10 (WinPE):
Dietmar Posted February 27 Posted February 27 @reboot12 Here is next KD block for the driver 2.5.3 Dietmar !sym quiet sxd ud bc * bu i219!I219TxSendOne "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); r $t2=poi(@esp); .printf \"TXONE_IN regs=%p\n\", $t1; bp /1 @$t2 \".echo TXONE_OUT; dd i219!g_TxRx+0x08 L12; dd i219!g_TxRx+0x4C L2; dd poi(i219!g_TxRx+0x08) L4; dd @$t1+0x3800 L3; dd @$t1+0x3810 L1; dd @$t1+0x3818 L1; dd @$t1+0x3828 L1; dd @$t1+0x3590 L1; gc\"; gc" bu i219!I219TxReclaim "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .echo TXRECLAIM; dd poi(i219!g_TxRx+0x08) L4; dd @$t1+0x3810 L1; dd @$t1+0x3818 L1; dd @$t1+0x3590 L1; gc" bu i219!I219RxPoll "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .echo RXPOLL; dd @$t1+0x280c L1; dd @$t1+0x2810 L1; dd @$t1+0x2818 L1; gc" g
Dietmar Posted February 27 Posted February 27 @reboot12 Next KD Block for the same driver 2.5.3 Dietmar !sym quiet sxd ud bc * bu i219!I219MiniportSendPackets ".echo SENDPKTS; kb; gc" bu i219!I219TxSendOne ".echo TXONE; gc" bu i219!I219TxReclaim "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .echo TXRECLAIM; dd @$t1+0x3810 L1; dd @$t1+0x3818 L1; dd @$t1+0x3828 L1; dd @$t1+0x3590 L1; gc" bu i219!I219TxRxStart "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .echo TXRXSTART; dd @$t1+0x2800 L12; dd @$t1+0x2828 L1; dd @$t1+0x2c00 L1; dd @$t1+0x3800 L12; dd @$t1+0x3590 L1; gc" bu i219!I219RxPoll "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .echo RXPOLL; dd @$t1+0x2810 L1; dd @$t1+0x2818 L1; dd @$t1+0x2828 L1; gc" g
Dietmar Posted February 27 Posted February 27 @reboot12 Just now I make a direkt compare with the Windbg output from my i219 board with yours. They are very similar, but mine connects and yours not, so may be we see alittle bit more Dietmar
reboot12 Posted February 27 Posted February 27 @Dietmar Okay, we're done for today - I have other things to do. Should I check something else because I'm logging out?
Dietmar Posted February 27 Posted February 27 @reboot12 At the moment I compare my output from Windbg with yours. So, it lasts a little bit. Just now you cant do more, wish you a nice day Dietmar
Dietmar Posted February 27 Posted February 27 @reboot12 Oh..I found something really interesting in both logs. They are nearly identic but NOT in the status of MMIO: works: MMIO mapped phys=df500000 reslen=0x20000 maplen=0x20000 irqL=5 irqV=865 ctrl=00180240 status=40080640 not works: MMIO mapped phys=c0300000 reslen=0x20000 maplen=0x20000 irqL=7 irqV=387 ctrl=00180240 status=00080640 Dietmar
Dietmar Posted February 27 Posted February 27 @reboot12 I think, that I found out, what is going on: Was bedeutet das für den i219 Treiber unter XP? Oh..I found something really interesting in both logs. They are nearly identic but NOT in the status of MMIO:works: MMIO mapped phys=df500000 reslen=0x20000 maplen=0x20000 irqL=5 irqV=865 ctrl=00180240 status=40080640not works: MMIO mapped phys=c0300000 reslen=0x20000 maplen=0x20000 irqL=7 irqV=387 ctrl=00180240 status=00080640 Das Web wird durchsucht 27 Ergebnisse Der entscheidende Unterschied zwischen den beiden Logs liegt im Status-Register der MMIO-Mapped-Region (vermutlich das STATUS-Register der e1000e-Familie, Offset 0x8 bzw. ähnlich): Funktioniert: status=40080640 Funktioniert nicht: status=00080640 Der Unterschied ist exakt Bit 30 (vom LSB aus gezählt, also 2³⁰ = 0x40000000): 40080640 = 00080640 | 40000000 Bit 30 ist 1 im funktionierenden Fall Bit 30 ist 0 im nicht funktionierenden Fall Bei Intel-Gigabit-Ethernet-Controllern (e1000/e1000e/i219 usw.) ist Bit 30 im STATUS-Register (meist Register 0008h) typischerweise:Bit 30 = Master Enable / Bus Master Status (oder sehr ähnlich benannt)Es signalisiert, ob der Bus Master DMA vom PCIe-Controller aus erlaubt und aktiv ist. Bit 30 = 1 → Bus Mastering ist enabled → der Controller darf DMA-Transfers initiieren (Rx/Tx-Descriptors, Ring-Buffer-Zugriffe usw.) Bit 30 = 0 → Bus Mastering ist deaktiviert → der Chip kann keine DMA-Operationen starten → der Treiber liest zwar Register, aber es passiert nichts mit Paketen → meist "tot" / kein Link / kein Traffic möglich Was bedeutet das konkret für i219 unter Windows XP?Der i219 (insbesondere ab I219-V/VM usw. ab ~2015/100-Serie-Chipsets) ist offiziell nie für Windows XP supported worden. Intel hat den e1000e-Treiber für XP schon sehr früh eingestellt (letzte offizielle Versionen waren meist für i210/i211/i218, teilweise i219 nur inoffiziell/hackig).Typische Probleme unter XP: Der e1000e.sys-Treiber (oder modifizierte/ältere NDIS5-Version) setzt das Bus Master Enable-Bit im PCIe Command Register (Offset 0x04 im PCIe-Config-Space, Bit 2) nicht oder falsch. XP-PnP/PCI-Enumerator respektiert manche moderne PCIe-Capabilities nicht richtig (z. B. ASPM, Power-Management-States, erweiterte Error-Handling). Auf manchen Mainboards/BIOS-Versionen wird Bus Mastering für den i219-PHY im PCH nicht automatisch freigegeben, wenn der Treiber nicht genau passt. Ergebnis: Der Treiber mapped die BAR, liest CTRL/STATUS, aber Bit 30 bleibt 0 → kein DMA → kein Netzwerkverkehr möglich (auch wenn "Gerät funktioniert irgendwie" angezeigt wird).
Dietmar Posted February 27 Posted February 27 Intel just lies in their documentation. Here is naked truth: Bit Difference: Bit 30 = 0x40000000 On the i219, bit 30 of the STATUS register is: STATUS.GIO_MASTER_ENABLE_STATUS — indicates whether GIO (PCIe) Master requests are enabled/active. 1 (0x40080640) → GIO Master is active — PCIe bus mastering is enabled and in use 0 (0x00080640) → GIO Master is disabled/idle — PCIe master requests have been quiesced Dietmar
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now