Jump to content

Dietmar

Member
  • Posts

    1,852
  • Joined

  • Last visited

  • Days Won

    10
  • Donations

    0.00 USD 
  • Country

    Germany

Everything posted by Dietmar

  1. @reboot12 Type the following in one block to KD. If the output stops, type g . !sym noisy .reload /f sxe ld:i219 sxe ud:i219 g .reload /f i219.sys lm m i219 bc * bu i219!I219MiniportInitialize ".echo INIT; gc" bu i219!I219MiniportQueryInformation ".printf \"QRY OID=%08x LEN=%u\\n\", poi(@esp+8), poi(@esp+0x10); gc" bu i219!I219MiniportSetInformation ".printf \"SET OID=%08x LEN=%u\\n\", poi(@esp+8), poi(@esp+0x10); gc" bu i219!I219DoCtrlKickLate ".echo CTRLKICK; gc" bu i219!I219TxRxStart "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .printf \"TXRXSTART a=%p regs=%p\\n\", $t0, $t1; dd $t1+0x0008 L1; dd $t1+0x00d0 L1; dd $t1+0x0100 L1; dd $t1+0x2810 L1; dd $t1+0x2818 L1; gc" bu i219!I219MiniportSendPackets ".printf \"SEND CNT=%u\\n\", poi(@esp+0x0c); gc" bu i219!I219RxPoll "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .printf \"RXPOLL regs=%p\\n\", $t1; dd $t1+0x2810 L1; dd $t1+0x2818 L1; gc" bu i219!I219MiniportISR ".echo ISR; gc" bu i219!I219MiniportHandleInterrupt ".echo HINT; gc" g
  2. @reboot12 Hi, there is only a small step, that prevents RX to write packages. Everything other works. I make for you a new driver Dietmar https://www.upload.ee/files/19110603/i219LMv7.zip.html
  3. @reboot12 ok, please again NEW Windbg session, type this as ONE block in KD .logopen /t c:\i219LMbest_kd_diag_fixed.txt .symfix .reload /f lm m i219 bc * r $t0=0 r $t1=0 r $t2=0 r $t3=0 r $t4=0 r $t5=0 r $t6=0 r $t7=0 bu i219!I219DoCtrlKickLate "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .printf \"KICK a=%08x regs=%08x\\n\",$t0,$t1; .if ($t1==0) { .echo KICK REGS_NULL; gc; } .printf \"RDH=%08x RDT=%08x RCTL=%08x RFCTL=%08x RXDCTL0=%08x IMS=%08x ICR=%08x\\n\", poi($t1+0x2810),poi($t1+0x2818),poi($t1+0x0100),poi($t1+0x5008),poi($t1+0x2828),poi($t1+0x00D0),poi($t1+0x00C0); dd $t1+0x2800 L12; dd $t1+0x2828 L1; dd $t1+0x0100 L1; dd $t1+0x5008 L1; dd $t1+0x00D0 L1; dd $t1+0x00C0 L1; gc" bu i219!I219TxRxStart "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .printf \"START a=%08x regs=%08x\\n\",$t0,$t1; .if ($t1==0) { .echo START REGS_NULL; gc; } .printf \"RDH=%08x RDT=%08x RCTL=%08x RFCTL=%08x RXDCTL0=%08x IMS=%08x ICR=%08x\\n\", poi($t1+0x2810),poi($t1+0x2818),poi($t1+0x0100),poi($t1+0x5008),poi($t1+0x2828),poi($t1+0x00D0),poi($t1+0x00C0); dd $t1+0x2800 L12; dd $t1+0x2828 L1; dd $t1+0x0100 L1; dd $t1+0x5008 L1; dd $t1+0x00D0 L1; dd $t1+0x00C0 L1; gc" bu i219!I219PollTimerFunc "r $t0=poi(@esp+8); r $t1=poi($t0+0xDC); .if ($t1==0) { .echo PT REGS_NULL; gc; } .printf \"PT a=%08x regs=%08x RDH=%08x RDT=%08x\\n\",$t0,$t1,poi($t1+0x2810),poi($t1+0x2818); .printf \"RCTL=%08x RFCTL=%08x RXDCTL0=%08x IMS=%08x ICR=%08x\\n\", poi($t1+0x0100),poi($t1+0x5008),poi($t1+0x2828),poi($t1+0x00D0),poi($t1+0x00C0); r $t7=0; r $t7=i219!g_TxRx; .if ($t7!=0) { r $t3=poi($t7+0x1C); r $t4=poi($t7+0x0D4); r $t5=$t3+($t4*0x10); .printf \"RXDESC=%08x RXNEXT=%08x CUR=%08x\\n\",$t3,$t4,$t5; dd $t5 L4; db $t5+0x0C L4; } gc" bu i219!I219RxPoll "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .if ($t1==0) { .echo RXP REGS_NULL; gc; } .printf \"RXP RDH=%08x RDT=%08x RCTL=%08x\\n\", poi($t1+0x2810),poi($t1+0x2818),poi($t1+0x0100); r $t7=0; r $t7=i219!g_TxRx; .if ($t7!=0) { r $t3=poi($t7+0x1C); r $t4=poi($t7+0x0D4); r $t5=$t3+($t4*0x10); dd $t5 L4; db $t5+0x0C L4; } gc" bu i219!I219MiniportISR "r $t0=poi(@esp+0x0C); r $t1=poi($t0+0xDC); .if ($t1==0) { .echo ISR REGS_NULL; gc; } .printf \"ISR ICR=%08x IMS=%08x RDH=%08x RDT=%08x\\n\", poi($t1+0x00C0),poi($t1+0x00D0),poi($t1+0x2810),poi($t1+0x2818); gc" bu i219!I219MiniportHandleInterrupt "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .if ($t1==0) { .echo HINT REGS_NULL; gc; } .printf \"HINT ICR=%08x RDH=%08x RDT=%08x\\n\", poi($t1+0x00C0),poi($t1+0x2810),poi($t1+0x2818); gc" g
  4. @reboot12 Ok, next try. Start NEW Windbg session and type this as one block in KD. Then in cmd on the compi that runs Windbg: ping yourrouterIP -t .logopen /t c:\i219LMbest_kd_diag.txt .symfix .reload /f lm m i219 bc * bu i219!I219DoCtrlKickLate " r $t2=poi(@esp+4); r $t0=@ecx; .printf \"CtrlKickLate ecx=%08x stk=%08x\n\", @ecx, $t2; .if ($t0<0x80000000) { r $t0=$t2; } .if ($t0<0x80000000) { .echo CtrlKickLate NO_ADAPTER_PTR; gc; } r $t1=poi($t0+@@c++(&((i219!_I219_ADAPTER*)0)->Regs)); .printf \"a=%08x regs=%08x\n\", $t0, $t1; .if ($t1==0) { .echo CtrlKickLate REGS_NULL; gc; } dd $t1+0x0000 L2 dd $t1+0x0008 L1 dd $t1+0x00C0 L1 dd $t1+0x00D0 L1 dd $t1+0x00D8 L1 dd $t1+0x0100 L1 dd $t1+0x05008 L1 dd $t1+0x02800 L12 dd $t1+0x02810 L2 dd $t1+0x02828 L1 dd $t1+0x03800 L12 gc " bu i219!I219TxRxStart " r $t2=poi(@esp+4); r $t0=@ecx; .printf \"TxRxStart ecx=%08x stk=%08x\n\", @ecx, $t2; .if ($t0<0x80000000) { r $t0=$t2; } .if ($t0<0x80000000) { .echo TxRxStart NO_ADAPTER_PTR; gc; } r $t1=poi($t0+@@c++(&((i219!_I219_ADAPTER*)0)->Regs)); .printf \"a=%08x regs=%08x\n\", $t0, $t1; dt i219!_I219_ADAPTER $t0 dt i219!_I219_TXRX_CTX i219!g_TxRx .if ($t1==0) { .echo TxRxStart REGS_NULL; gc; } dd $t1+0x0000 L2 dd $t1+0x0008 L1 dd $t1+0x00C0 L1 dd $t1+0x00D0 L1 dd $t1+0x00D8 L1 dd $t1+0x0100 L1 dd $t1+0x05008 L1 dd $t1+0x02800 L12 dd $t1+0x02810 L2 dd $t1+0x02828 L1 dd $t1+0x03800 L12 gc " bu i219!I219PollTimerFunc " r $t2=poi(@esp+8); r $t0=@ecx; .printf \"PollTimer ecx=%08x ctx=%08x\n\", @ecx, $t2; .if ($t0<0x80000000) { r $t0=$t2; } .if ($t0<0x80000000) { .echo PollTimer NO_ADAPTER_PTR; gc; } r $t1=poi($t0+@@c++(&((i219!_I219_ADAPTER*)0)->Regs)); .if ($t1==0) { .echo PollTimer REGS_NULL; gc; } .printf \"RDH=%08x RDT=%08x RCTL=%08x RFCTL=%08x RXDCTL0=%08x IMS=%08x ICR=%08x\n\", poi($t1+0x2810), poi($t1+0x2818), poi($t1+0x0100), poi($t1+0x5008), poi($t1+0x2828), poi($t1+0x00D0), poi($t1+0x00C0); gc " bu i219!I219RxPoll " r $t2=poi(@esp+4); r $t0=@ecx; .printf \"RxPoll ecx=%08x stk=%08x\n\", @ecx, $t2; .if ($t0<0x80000000) { r $t0=$t2; } .if ($t0<0x80000000) { .echo RxPoll NO_ADAPTER_PTR; gc; } r $t1=poi($t0+@@c++(&((i219!_I219_ADAPTER*)0)->Regs)); .if ($t1==0) { .echo RxPoll REGS_NULL; gc; } r $t3=poi(i219!g_TxRx+@@c++(&((i219!_I219_TXRX_CTX*)0)->RxDesc)); r $t4=poi(i219!g_TxRx+@@c++(&((i219!_I219_TXRX_CTX*)0)->RxNext)); r $t5=$t3+($t4*0x10); .printf \"RDH=%08x RDT=%08x RCTL=%08x RFCTL=%08x RXDCTL0=%08x\n\", poi($t1+0x2810), poi($t1+0x2818), poi($t1+0x0100), poi($t1+0x5008), poi($t1+0x2828); dd $t5 L4 db $t5+0x0C L4 gc " bu i219!I219MiniportISR " r $t0=poi(@esp+0x0C); .if ($t0<0x80000000) { .echo ISR BAD_CTX; gc; } r $t1=poi($t0+@@c++(&((i219!_I219_ADAPTER*)0)->Regs)); .if ($t1==0) { .echo ISR REGS_NULL; gc; } .printf \"ISR ICR=%08x IMS=%08x RDH=%08x RDT=%08x\n\", poi($t1+0x00C0), poi($t1+0x00D0), poi($t1+0x2810), poi($t1+0x2818); gc " bu i219!I219MiniportHandleInterrupt " r $t0=poi(@esp+4); .if ($t0<0x80000000) { .echo HINT BAD_CTX; gc; } r $t1=poi($t0+@@c++(&((i219!_I219_ADAPTER*)0)->Regs)); .if ($t1==0) { .echo HINT REGS_NULL; gc; } .printf \"HINT ICR=%08x RDH=%08x RDT=%08x\n\", poi($t1+0x00C0), poi($t1+0x2810), poi($t1+0x2818); gc " g
  5. @reboot12 There may be differences on i219-LM chips. Mine works with CTRL kick setup rings write RCTL set EN bit But Intel tells for Industrial boards this CTRL.SLU is set AFTER link-up RFCTL is written AFTER RCTL RXDCTL queue enable is set Just set up a Windbg session with this. During running this in KD, ping yourrouterIP -t from command line on the compi, where Windbg runs. .logopen /t c:\i219LMbest_kd.txt .symfix .reload /f lm m i219 r $t0=0 r $t1=0 r $t2=0 r $t3=0 r $t4=0 r $t5=0 bc * bu i219!I219TxRxStart "r $t0=poi(@esp+4); r $t1=poi($t0+@@c++(&((i219!_I219_ADAPTER*)0)->Regs)); .echo --- I219TxRxStart ---; dt i219!_I219_ADAPTER $t0; dt i219!_I219_TXRX_CTX i219!g_TxRx; dd $t1+0x00000 L8; dd $t1+0x00018 L2; dd $t1+0x000C0 L1; dd $t1+0x000D0 L1; dd $t1+0x000D8 L1; dd $t1+0x00100 L1; dd $t1+0x05008 L1; dd $t1+0x02800 L12; dd $t1+0x02828 L2; dd $t1+0x03800 L12; gc" bu i219!I219DoCtrlKickLate "r $t0=poi(@esp+4); r $t1=poi($t0+@@c++(&((i219!_I219_ADAPTER*)0)->Regs)); .echo --- CtrlKickLate ---; dd $t1+0x00000 L2; dd $t1+0x00008 L1; dd $t1+0x00100 L1; gc" bu i219!I219PollTimerFunc "r $t0=poi(@esp+8); r $t1=poi($t0+@@c++(&((i219!_I219_ADAPTER*)0)->Regs)); .echo --- PollTimer ---; dd $t1+0x00008 L1; dd $t1+0x02810 L2; dd $t1+0x02828 L1; gc" bu i219!I219RxPoll "r $t0=poi(@esp+4); r $t1=poi($t0+@@c++(&((i219!_I219_ADAPTER*)0)->Regs)); r $t3=poi(i219!g_TxRx+@@c++(&((i219!_I219_TXRX_CTX*)0)->RxDesc)); r $t4=poi(i219!g_TxRx+@@c++(&((i219!_I219_TXRX_CTX*)0)->RxNext)); r $t5=$t3+($t4*0x10); .echo --- RxPoll ---; dd $t1+0x02810 L2; dd $t1+0x00100 L1; dd $t1+0x05008 L1; dd $t1+0x02828 L1; dd $t5 L4; db $t5+0x0C L4; gc" bu i219!I219MiniportISR "r $t0=poi(@esp+0xC); r $t1=poi($t0+@@c++(&((i219!_I219_ADAPTER*)0)->Regs)); .echo --- ISR ---; dd $t1+0x000C0 L1; dd $t1+0x000D0 L1; dd $t1+0x02810 L2; gc" bu i219!I219MiniportHandleInterrupt "r $t0=poi(@esp+4); r $t1=poi($t0+@@c++(&((i219!_I219_ADAPTER*)0)->Regs)); .echo --- HINT ---; dd $t1+0x000C0 L1; dd $t1+0x02810 L2; gc" g
  6. @reboot12 Here is the driver, corrected for the error above. Even before it was nearly ready, now it should work Dietmar https://www.upload.ee/files/19110246/i219LMbest.zip.html
  7. @reboot12 Oh waaaoh, now your logs show, what is going wrong: Driver initializes OK, MMIO is mapped, MAC is read: 00-0c-f1-a7-ee-da Link is reported UP: LinkState -> UP 100Mb FD Bring-up runs: bring-up (CTRL kick + TX/RX) and then TxRxStart OK But afterward your polling shows no receive progress: RXPOLL: dd regs+0x2810 = 00000000 (RDH stays 0) RXPOLL: dd regs+0x2818 = 0000001f (RDT stays 0x1f) That exactly matches the symptom “no DHCP, no ping”: Windows sends, but your driver never indicates any received frames. The bug is in code from driver , not the router. In BINDi219.c your RX descriptor layout is wrong for the classic Intel “legacy” RX descriptor. You currently define RX like this: buffer_addr (ok) then status_error (ULONG) then length (USHORT) But Intel’s legacy RX descriptor is actually: buffer_addr (8 bytes) length (2) csum (2) status (1) ← DD/EOP live here errors (1) special (2) So your code reads: ULONG se = RxDesc[idx].status_error; UCHAR st = (UCHAR)(se & 0xFF); if ((st & DD)==0) break; …but the real status byte is not located where you read it. Result: your RX loop always thinks “no packet”, so you never pass packets up to NDIS → DHCP + ping fail. I soon send you updated driver Dietmar
  8. @reboot12 I am out until 18:00 today, because of Jugend Forscht in city Hildesheim goog luck Dietmar
  9. @reboot12 To this driver here I come, when I take a look at the Bios from your board Dietmar https://www.upload.ee/files/19107283/i219CollFix.zip.html
  10. @reboot12 I also make a check in the Bios of your industrial board with i219-LM Dev_15BB. Take a look, if all this settings are fulfilled, because if not, no driver can take control over this Bios settings Dietmar AIMB-786 (AMI UEFI v5.xx) – BIOS settings to DISABLE for XP + Intel I219-LM troubleshooting 1) Advanced → Network Stack Configuration - Network Stack = Disabled 2) Advanced → Chipset → PCH-IO Configuration - LAN1 Option-ROM = Disabled - LAN2 Option-ROM = Disabled - Deep Sleep = Disabled - PCIE Wake = Disabled - PowerOn by Modem = Disabled 3) Advanced → (PCH-FW / Intel ME / Manageability area) - AMT Configuration = Disabled (if there is an on/off switch) - CIRA Configuration → Activate Remote Assistance Process = Disabled - ASF Configuration → PET Progress = Disabled - ASF Configuration → WatchDog = Disabled - ASF Configuration → ASF Sensors Table = Disabled 4) Advanced → OEM Flags Settings - MEBx Selection Screen = Disabled IMPORTANT - After changing these settings: do a REAL power-cycle (shutdown → PSU off/unplug → wait 10–20 sec → power on).
  11. @reboot12 And here is the nextnext one with name i219 coll Dietmar https://www.upload.ee/files/19106771/i219coll.zip.html And here are the Windbg KD for THIS version coll .logopen /t c:\i219_rescue_windbg.log .reload /f i219.sys bc * x i219!*Miniport*Set* x i219!*Miniport*Query* x i219!*Send* x i219!*Rx* x i219!*Poll* x i219!*Isr* x i219!*HandleInterrupt* x i219!*Indicate* x ndis!NdisMEthIndicateReceive x ndis!NdisMEthIndicateReceiveComplete x ndis!NdisMIndicateStatus x ndis!NdisMIndicateStatusComplete bu i219!I219MiniportInitialize ".echo INIT; gc" bu i219!I219IndicateMediaState ".printf \"MEDIA %u\n\", poi(@esp+8); gc" bu i219!I219MiniportQueryInformation ".printf \"QRY OID=%08x LEN=%u\n\", poi(@esp+8), poi(@esp+0x10); gc" bu i219!I219MiniportSetInformation ".printf \"SET OID=%08x LEN=%u BUF=%p\n\", poi(@esp+8), poi(@esp+0x10), poi(@esp+0x0c); .if (poi(@esp+8)==0x0001010e) { .printf \"PF=%08x\n\", poi(poi(@esp+0x0c)); } gc" bu i219!I219MiniportSendPackets ".printf \"SEND CNT=%u ARR=%p\n\", poi(@esp+0x0c), poi(@esp+8); gc" bm i219!*TxSend* ".echo TXSEND; gc" bm i219!*TxReclaim* ".echo TXRECLAIM; gc" bu ndis!NdisMEthIndicateReceive ".printf \"RX H=%u LA=%u PKT=%u\n\", poi(@esp+0x10), poi(@esp+0x18), poi(@esp+0x1c); gc" bu ndis!NdisMEthIndicateReceiveComplete ".echo RXC; gc" bu i219!I219MiniportISR ".echo ISR; gc" bu i219!I219MiniportHandleInterrupt ".echo HINT; gc" bm i219!*PollTimer* ".echo TIMER; gc" bm i219!*RxPoll* ".echo RXPOLL; gc" bu ndis!NdisMIndicateStatus ".printf \"STAT GS=%08x SZ=%u\n\", poi(@esp+8), poi(@esp+0x10); gc" bu ndis!NdisMIndicateStatusComplete ".echo STATC; gc" bu i219!I219TxRxStart "r $t0=poi(@esp+4); r $t1=poi($t0+@@c++(&((i219!_I219_ADAPTER*)0)->Regs)); .printf \"TXRXSTART a=%p regs=%p\n\", $t0, $t1; dd $t1+0x0008 L1; dd $t1+0x0100 L1; dd $t1+0x00d0 L1; dd $t1+0x00c8 L1; dd $t1+0x00d8 L1; dd $t1+0x2810 L1; dd $t1+0x2818 L1; gc" bu i219!I219RxPoll "r $t0=poi(@esp+4); r $t1=poi($t0+@@c++(&((i219!_I219_ADAPTER*)0)->Regs)); .printf \"RXPOLL regs=%p\n\", $t1; dd $t1+0x00c8 L1; dd $t1+0x00d8 L1; dd $t1+0x0100 L1; dd $t1+0x2810 L1; dd $t1+0x2818 L1; gc" g .logclose
  12. @reboot12 I make a new i219 for you. https://www.upload.ee/files/19106714/i219bind.zip.html And here comes the code, that you please put into KD with this new i219 (named .reload /f i219.sys bc * bu i219!I219MiniportInitialize ".echo INIT; gc" bu i219!I219MiniportQueryInformation ".printf \"QRY OID=%08x LEN=%u\\n\", poi(@esp+8), poi(@esp+0x10); gc" bu i219!I219MiniportSetInformation ".printf \"SET OID=%08x LEN=%u\\n\", poi(@esp+8), poi(@esp+0x10); gc" bu i219!I219DoCtrlKickLate ".echo CTRLKICK; gc" bu i219!I219TxRxStart "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .printf \"TXRXSTART a=%p regs=%p\\n\", $t0, $t1; dd $t1+0x0008 L1; dd $t1+0x00d0 L1; dd $t1+0x0100 L1; dd $t1+0x2810 L1; dd $t1+0x2818 L1; gc" bu i219!I219MiniportSendPackets ".printf \"SEND CNT=%u\\n\", poi(@esp+0x0c); gc" bu i219!I219RxPoll "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .printf \"RXPOLL regs=%p\\n\", $t1; dd $t1+0x2810 L1; dd $t1+0x2818 L1; gc" bu i219!I219MiniportISR ".echo ISR; gc" bu i219!I219MiniportHandleInterrupt ".echo HINT; gc" g bind) driver. When you come to a breakpoint in KD with name D2 (debugservice2), just enter few times (until the end, when nothing more happens, is shown or breaks at a defined place) g so that Windbg comes forward with more output Dietmar
  13. @reboot12 No need for DHCP: Set static IP in the same subnet (e.g. 192.168.2.IPfromcompi / 255.255.255.0, gateway 192.168.IPfrom Router) Open CMD and run: arp -d * ping -n 1 IPfromRouter then ping -t IPfromRouter for 10–20 seconds then arp -a If arp -a never shows a MAC for IpfromRouter, that’s almost always broadcast RX (or RX in general) Dietmar
  14. @reboot12 Please give me the output from Windbg for this new DHCP i219 driver, after this lines in KD of Windbg Dietmar .reload /f i219.sys bc * bp nt!DebugService2 "gc" bu i219!I219PollTimerFunc ".echo TIMER; gc" bu i219!I219TxRxPollEx ".echo POLL; gc" bu i219!I219RxPoll ".echo RXPOLL; gc" bu i219!I219MiniportISR ".echo ISR; gc" bu i219!I219MiniportHandleInterrupt ".echo HINT; gc" bu i219!I219IndicateMediaState ".echo MEDIA; gc" bu i219!I219TxRxStart ".echo TXRXSTART; gc" bu i219!I219MiniportQueryInformation ".printf \"QRY OID=%08x LEN=%u\n\", poi(@esp+8), poi(@esp+0x10); gc" bu i219!I219MiniportSetInformation ".printf \"SET OID=%08x LEN=%u BUF=%p\n\", poi(@esp+8), poi(@esp+0x10), poi(@esp+0x0c); .if (poi(@esp+8)==0x0001010e) { .printf \"PFnew=%08x\n\", poi(poi(@esp+0x0c)); } gc" bu i219!I219MiniportSendPackets ".printf \"SEND CNT=%u ARR=%p\n\", poi(@esp+0x0c), poi(@esp+8); gc" g
  15. @reboot12 I make a new i219 driver, based on your logs Dietmar https://www.upload.ee/files/19106535/i219DHCP.zip.html
  16. @reboot12 Yes, no other way. Only via new boot you know what happens Dietmar
  17. @reboot12 Yes, because the driver may be unloaded and then you have no symbols for it, because the i219.pdb was then also unloaded. This was all the time a problem for me, so I solved it via this way Dietmar
  18. @reboot12 Here it is much more comfortable for me, because I can use ChatGPT for to check all Windbg orders for syntax order. In Webchat I cant handle it like this here. And in the same time I always try to build a new i219.sys which is impossible with a lot of open windows. Later, when everything works, we can delete those entries here all Dietmar
  19. @reboot12 And here is already next Dietmar .logopen /t c:\i219_bind_or_rx.log .reload /f i219.sys bc * bu i219!I219MiniportQueryInformation ".printf \"QRY OID=%08x LEN=%u\n\", poi(@esp+8), poi(@esp+0x10); gc" bu i219!I219MiniportSetInformation ".printf \"SET OID=%08x LEN=%u\n\", poi(@esp+8), poi(@esp+0x10); .if (poi(@esp+8)==0x0001010e) { .printf \"PF=%08x\n\", poi(poi(@esp+0x0c)); } ; gc" bu i219!I219MiniportSendPackets ".printf \"SEND CNT=%u\n\", poi(@esp+0x0c); gc" bu ndis!NdisMEthIndicateReceive ".echo RX; gc" g
  20. @reboot12 Here ist next Dietmar .logopen /t c:\i219_dhcp_trace3.log .reload /f i219.sys bc * bp nt!DebugService2 "gc" bu i219!I219MiniportInitialize ".echo INIT; gc" bu i219!I219IndicateMediaState ".echo MEDIA; gc" bu i219!I219DoCtrlKickLate ".echo CTRLKICK; gc" bu i219!I219TxRxStart ".echo TXRXSTART; gc" bu i219!I219MiniportQueryInformation ".printf \"QRY OID=%08x LEN=%u\n\", poi(@esp+8), poi(@esp+0x10); gc" bu i219!I219MiniportSetInformation ".printf \"SET OID=%08x LEN=%u BUF=%p\n\", poi(@esp+8), poi(@esp+0x10), poi(@esp+0x0c); r $t0=poi(@esp+4); .printf \"PFcur=%08x LAcur=%08x\n\", poi($t0+4), poi($t0+8); .if (poi(@esp+8)==0x0001010e) { .printf \"PFnew=%08x\n\", poi(poi(@esp+0x0c)); } .if (poi(@esp+8)==0x0001010f) { .printf \"LAnew=%u\n\", poi(poi(@esp+0x0c)); } gc" bu i219!I219MiniportSendPackets ".printf \"SEND CNT=%u ARR=%p\n\", poi(@esp+0x0c), poi(@esp+8); gc" bu i219!I219TxSendOne ".echo TXONE; gc" bu i219!I219TxReclaim ".echo TXRECLAIM; gc" bu i219!I219RxPoll ".echo RXPOLL; gc" bu i219!I219MiniportISR ".echo ISR; gc" bu i219!I219MiniportHandleInterrupt ".echo HINT; gc" g
  21. @reboot12 The lan chip i219-LM .logopen /t c:\i219_dhcp_next.log .reload /f i219.sys bc * bu i219!I219MiniportInitialize ".echo I219MiniportInitialize; gc" bu i219!I219IndicateMediaState ".echo I219IndicateMediaState; gc" bu i219!I219MiniportSetInformation ".printf \"SET OID=%08x LEN=%u BUF=%p\n\", poi(@esp+8), poi(@esp+0x10), poi(@esp+0x0c); .if (poi(@esp+8)==0x0001010e) { .printf \"PF=%08x\n\", poi(poi(@esp+0x0c)); } ; gc" bu i219!I219MiniportQueryInformation ".printf \"QRY OID=%08x LEN=%u\n\", poi(@esp+8), poi(@esp+0x10); gc" bu i219!I219MiniportSendPackets ".printf \"SEND CNT=%u ARR=%p\n\", poi(@esp+0x0c), poi(@esp+8); gc" bu ndis!NdisMSendComplete ".echo NdisMSendComplete; gc" bu ndis!NdisMEthIndicateReceive ".printf \"RX H=%u LA=%u PKT=%u\n\", poi(@esp+0x10), poi(@esp+0x18), poi(@esp+0x1c); gc" bu ndis!NdisMEthIndicateReceiveComplete ".echo RXC; gc" bu i219!I219MiniportISR ".echo ISR; gc" bu i219!I219MiniportHandleInterrupt ".echo HINT; gc" bu i219!I219RxPoll ".echo RxPoll; gc" bu ndis!NdisMIndicateStatus ".printf \"STAT GS=%08x SZ=%u\n\", poi(@esp+8), poi(@esp+0x10); gc" bu ndis!NdisMIndicateStatusComplete ".echo STATC; gc" g is alive, so for sure it is not a power saving problem. Here is next Dietmar
  22. @reboot12 We continue with this NoPowersaving version. I agree, that this is a problem with link speed, so lets look Dietmar .logopen /t c:\i219_nextsteps.log .reload /f lm m i219 lm m ndis bc * bp NDIS!NdisMSetAttributesEx "r $t0=poi(@esp+8); .printf \"CTX=%p\n\", $t0; gc" bu i219!I219OidSetInfo ".printf \"OIDS OID=%08x Len=%u Buf=%p\n\", poi(@esp+8), poi(@esp+0x10), poi(@esp+0x0c); .if (poi(@esp+8)==0x0001010e) { .printf \"PF=%08x\n\", poi(poi(@esp+0x0c)); } ; gc" bu i219!I219OidQueryInfo ".printf \"OIDQ OID=%08x Len=%u\n\", poi(@esp+8), poi(@esp+0x10); gc" bm i219!*Send*Packets* bm i219!*Return*Packet* bm i219!*Isr* bm i219!*HandleInterrupt* bu i219!I219PollTimerFunc ".echo I219PollTimerFunc; gc" bm NDIS!NdisMIndicateReceive* bm NDIS!NdisMIndicateReceivePacket* bm NDIS!ndisMIndicateStatus* bm NDIS!ndisMIndicateStatusComplete* bu i219!I219IndicateMediaState "r $t1=poi($t0+@@c++(&((i219!_I219_ADAPTER*)0)->Regs)); .printf \"MEDIA=%u CTRL=%08x STATUS=%08x IMS=%08x RCTL=%08x TCTL=%08x\n\", poi(@esp+8), poi($t1+0), poi($t1+8), poi($t1+0xd0), poi($t1+0x100), poi($t1+0x400); gc" bu i219!I219LinkFromStatus "r $t1=poi($t0+@@c++(&((i219!_I219_ADAPTER*)0)->Regs)); .printf \"LINK CTRL=%08x STATUS=%08x\n\", poi($t1+0), poi($t1+8); gc" g
  23. @reboot12 I make a new i219 driver, where I disabled really everything about power saving Dietmar https://www.upload.ee/files/19106169/i219NOPowersaving.zip.html
  24. @reboot12 Here are next steps for Windbg Dietmar bc * bu i219!I219LinkFromStatus ".echo I219LinkFromStatus; gc" bu i219!I219IndicateMediaState ".echo I219IndicateMediaState; gc" bu NDIS!ndisMIndicateStatus ".printf \"ndisMIndicateStatus GS=%08x Size=%u\n\", poi(@esp+8), poi(@esp+0x10); gc" bu NDIS!ndisMIndicateStatusComplete ".echo ndisMIndicateStatusComplete; gc" g
  25. @reboot12 I mean the "notworking older driver" for this Wise with realtek 8168. Uncheck there the mark for "Power Saving" and take a look what happens Dietmar
×
×
  • Create New...