Jump to content

Updated drivers for Windows XP SP3 and Windows 2003 SP2 (x32/x64) for modern hardware


Recommended Posts


Posted

@reboot12

This is the last version for today, because I have no more ideas just now. Use this new KD commands in one block.

Dietmar

https://www.upload.ee/files/19112279/i219PowerOn.zip.html
 

bc *
bu i219!I219TxRxStart "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .printf \"TXRXSTART regs=%p\n\", $t1; dd $t1+0x5b50 L1; dd $t1+0x5b54 L1; dd $t1+0x5b58 L1; gc"
bu i219!I219RxPoll "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .printf \"RXPOLL regs=%p\n\", $t1; dd $t1+0x0100 L1; dd $t1+0x2828 L1; dd $t1+0x2810 L1; dd $t1+0x2818 L1; gc"
bu i219!I219MiniportSendPackets ".printf \"SEND CNT=%u\n\", poi(@esp+0x0c); gc"
bu ndis!EthFilterDprIndicateReceive ".echo NDIS_RX; gc"
bu ndis!EthFilterDprIndicateReceiveComplete ".echo NDIS_RXC; gc"
g

 

Posted

@reboot12

Ok, I make a very last driver i219 for you for today.

Use this KD commands

Dietmar

!sym quiet
bc *
bu i219!I219MiniportInitialize ".echo INIT; gc"
bu i219!I219DoCtrlKickLate "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .echo CTRLKICK; .printf \"regs=%p\\n\", $t1; dd $t1+0x0000 L1; dd $t1+0x0008 L1; dd $t1+0x0018 L1; gc"
bu i219!I219TxRxStart "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .echo TXRXSTART; .printf \"regs=%p\\n\", $t1; dd $t1+0x0000 L1; dd $t1+0x0008 L1; dd $t1+0x0100 L1; dd $t1+0x2808 L1; dd $t1+0x2810 L1; dd $t1+0x2818 L1; dd $t1+0x2828 L1; dd $t1+0x3808 L1; dd $t1+0x3810 L1; dd $t1+0x3818 L1; gc"
bu i219!I219MiniportHandleInterrupt ".echo HINT; gc"
bu i219!I219MiniportSendPackets "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .printf \"SEND CNT=%u regs=%p\\n\", poi(@esp+0x0c), $t1; dd $t1+0x3810 L1; dd $t1+0x3818 L1; gc"
bu i219!I219RxPoll "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .printf \"RXPOLL regs=%p\\n\", $t1; dd $t1+0x0100 L1; dd $t1+0x2810 L1; dd $t1+0x2818 L1; dd $t1+0x2828 L1; gc"
bu ndis!EthFilterDprIndicateReceive ".echo NDIS_RX; gc"
bu ndis!EthFilterDprIndicateReceiveComplete ".echo NDIS_RXC; gc"
g

 

Posted

@Dietmar

OK, I'll check tomorrow because I've had enough today :wacko:

P.S. If it doesn't want to work, that's too bad. I was just curious that it works for you, so I wanted to check the driver. But I don't use these i211 and i219 cards in my WinXP 64-bit on AIMB-786 anyway. I used i211 for a while, but it turned out that the driver extends the start of WinXP by 10 seconds. I disabled both cards in the BIOS and use an old PCI TP-Link Wifi card and the system starts very quickly and I have a network. These new Intel iXXX series network cards are highly advanced and problematic:
https://forums.mydigitallife.net/threads/winxp-64-bit-on-a-modern-pc-iso-boot-wim-install-wim.88435/page-7#post-1869357

Posted

@reboot12

Please check this last driver with KD commands that I give to you.

Because I found a Linux forum entry with exact your symptoms and cure for it

Dietmar

Posted

@reboot12

Here is the next best i219-LM version for you. Your log shows, that something wakes up ;))..

And use new KD block also

https://www.upload.ee/files/19112515/i219v1h.zip.html
 

bc *
bu i219!I219MiniportHandleInterrupt ".echo HINT; gc"
bu i219!I219TxRxStart ".echo TXRXSTART; gc"
bu i219!I219RxPoll "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .printf \"RXPOLL regs=%p\n\", $t1; dd $t1+0x0100 L1; dd $t1+0x2810 L1; dd $t1+0x2818 L1; dd $t1+0x2828 L1; gc"
bu i219!I219MiniportSendPackets ".printf \"SEND CNT=%u\n\", poi(@esp+0x0c); gc"
bu ndis!EthFilterDprIndicateReceive ".echo NDIS_RX; gc"
g

 

Posted (edited)

@reboot12

And here is the next one, very close to the Linux PowerSave problem.

Type that in one block in KD

Dietmar

https://www.upload.ee/files/19113237/i219v1k.zip.html

 

!sym quiet
bc *
bu i219!I219MiniportInitialize ".echo INIT; gc"
bu i219!I219DoCtrlKickLate "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .echo CTRLKICK; .printf \"regs=%p\n\", $t1; dd $t1+0x0000 L1; dd $t1+0x0008 L1; dd $t1+0x0018 L1; gc"
bu i219!I219TxRxStart "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .echo TXRXSTART; .printf \"regs=%p\n\", $t1; dd $t1+0x0000 L1; dd $t1+0x0008 L1; dd $t1+0x0100 L1; dd $t1+0x2808 L1; dd $t1+0x2810 L1; dd $t1+0x2818 L1; dd $t1+0x2828 L1; dd $t1+0x3808 L1; dd $t1+0x3810 L1; dd $t1+0x3818 L1; gc"
bu i219!I219MiniportHandleInterrupt ".echo HINT; gc"
bu i219!I219MiniportSendPackets "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .printf \"SEND CNT=%u regs=%p\n\", poi(@esp+0x0c), $t1; dd $t1+0x3810 L1; dd $t1+0x3818 L1; gc"
bu i219!I219RxPoll "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .printf \"RXPOLL regs=%p\n\", $t1; dd $t1+0x0100 L1; dd $t1+0x2810 L1; dd $t1+0x2818 L1; dd $t1+0x2828 L1; gc"
bu ndis!EthFilterDprIndicateReceive ".echo NDIS_RX; gc"
bu ndis!EthFilterDprIndicateReceiveComplete ".echo NDIS_RXC; gc"
g

 

Edited by Dietmar
Posted (edited)

@Dietmar

i219v1h - https://pastebin.com/WJUsiKYp

i219v1k - https://pastebin.com/trbArAsY

I have been testing a dozen or so drivers for several days and there is practically no progress - there are still 0 sent / 0 received packages. If it works for you on the identical i219 LM 15BB card, it should work for me too. Take a photo of the RJ45 plugs of your network cable on both sides. My cable is in standard EIA/TIA568B on both sides B-B. My cable came with the Draytek Vigor 2700G router and is 1.8 m long:
568-B-568-B-my.png RJ45-A-B.png

Draytek included such a yellow network cable 1.8 m with its routers - as in this photo:
Dray-Tek-Vigor-2710-Vn-19730.jpg

Edited by reboot12
Posted (edited)

@reboot12

I just check your 2 logs. Everything is setup correct, only to send and to get does not work.

When I look at the Linux Source code e1000e for the i219-LM they fight with the same problem.

Intel itself tells, that it does not know, why this chip sometimes remain in some kind of a sleeping state.

I run the same driver and the same KD block on my i219, so I can see the differences clear.

Here is a new KD block for the v1k version, please test

Dietmar

bc *
bu i219!I219MiniportInitialize ".echo INIT; gc"
bu i219!I219DoCtrlKickLate "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); r $t2=poi(@esp); .echo CTRLKICK_IN; .printf \"regs=%p ret=%p\n\", $t1, $t2; dd $t1+0x0000 L1; dd $t1+0x0008 L1; dd $t1+0x0018 L1; dd $t1+0x0020 L1; bp /1 @$t2 \".echo CTRLKICK_OUT; dd @$t1+0x0000 L1; dd @$t1+0x0008 L1; dd @$t1+0x0018 L1; dd @$t1+0x0020 L1; gc\"; ba w4 (@$t1+0x20) \".echo MDIC_W; dd @$t1+0x0020 L1; kb 3; gc\"; gc"
bu i219!I219TxRxStart "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); r $t2=poi(@esp); .echo TXRX_IN; .printf \"regs=%p ret=%p\n\", $t1, $t2; dd $t1+0x0100 L1; dd $t1+0x0400 L1; dd $t1+0x2800 L3; dd $t1+0x2810 L1; dd $t1+0x2818 L1; dd $t1+0x2828 L1; dd $t1+0x3800 L3; dd $t1+0x3810 L1; dd $t1+0x3818 L1; dd $t1+0x3828 L1; bp /1 @$t2 \".echo TXRX_OUT; dd @$t1+0x0100 L1; dd @$t1+0x0400 L1; dd @$t1+0x2800 L3; dd @$t1+0x2810 L1; dd @$t1+0x2818 L1; dd @$t1+0x2828 L1; dd @$t1+0x3800 L3; dd @$t1+0x3810 L1; dd @$t1+0x3818 L1; dd @$t1+0x3828 L1; gc\"; gc"
bu i219!I219MiniportHandleInterrupt ".echo HINT; gc"
bu i219!I219MiniportSendPackets "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .printf \"SEND CNT=%u regs=%p\n\", poi(@esp+0x0c), $t1; dd $t1+0x3810 L1; dd $t1+0x3818 L1; dd $t1+0x3828 L1; gc"
bu i219!I219RxPoll "r $t0=poi(@esp+4); r $t1=poi($t0+0xDC); .printf \"RXPOLL regs=%p\n\", $t1; dd $t1+0x0100 L1; dd $t1+0x2800 L3; dd $t1+0x2810 L1; dd $t1+0x2818 L1; dd $t1+0x2828 L1; gc"
bu ndis!EthFilterDprIndicateReceive ".echo NDIS_RX; gc"
bu ndis!EthFilterDprIndicateReceiveComplete ".echo NDIS_RXC; gc"
g

 

Edited by Dietmar
Posted

@Dietmar

I believe that no power-related fixes will help. Your driver has always work at speed of 1.0 Gbps and Auto Negotiation does not work, it cannot detect the correct speed of the network card on the other side of the cable. And that's the problem. Improve your driver so that it can detect the speed correctly, i.e. when I connect a Fast Ethernet device it should set a speed of 100 Mbps and when I connect a Gigabit Ethernet device it should set a connection of 1.0 Gbps

Once it works properly, you can continue to look for the cause of 0/0 packets.

Posted

@reboot12

The 100MB connection is not the problem.

Yes, I force this chip to enable not 10MB.

But it is for sure the low power setting, which works through a lot of bits, see Linux problems. And for this is the KD block above,

which register is set and which not.

If you want to make your driver work or just for to understand what is going on, lets continue

Dietmar

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...