Jump to content

New Driver for Realtek RTL8111


Mieze
1,592 posts in this topic

Recommended Posts

Lovely. Is there anything that can be done to mitigate the issue?

 

Yes, there are two ways to get rid of the issue:

  1. Get back to Mavericks.
  2. Apple introduced a new, private driver interface with 10.8 which supports packet scheduling and eliminates the weakness. At the moment I'm updating the Intel and Atheros driver to use the new interface and will hopefully find some time to update the Realtek driver next week too.

Mieze

Link to comment
Share on other sites

Ok, as already promised here is version 2.0.0d1 which adds:

  • Support for Apple's private driver interface introduced with 10.8.
  • Packet scheduling with QFQ.
  • Improved media reporting.

Please keep in mind that this driver requires at least 10.8. Anything below won't work because the new driver interface was introduced with Mountain Lion.

 

Good luck!

 

Mieze

 

EDIT: Please use version 2.0.0d2 instead of 2.0.0d1.

Edited by Mieze
  • Like 6
Link to comment
Share on other sites

Thanks for your new version :)

Here a log I get with it.

Do the last 3 lines with errors are problematic ? The network seems to be functional as before.

 

08/04/2015 07:08:50,000 kernel[0]: Ethernet [RealtekRTL8111]: PCIe ASPM support disabled.
08/04/2015 07:08:50,000 kernel[0]: Ethernet [RealtekRTL8111]: PCI power management capabilities: 0xffc3.
08/04/2015 07:08:50,000 kernel[0]: Ethernet [RealtekRTL8111]: PME# from D3 (cold) supported.
08/04/2015 07:08:50,000 kernel[0]: Ethernet [RealtekRTL8111]: PCIe link capabilities: 0x00077c11, link control: 0x0000.
08/04/2015 07:08:50,000 kernel[0]: Ethernet [RealtekRTL8111]: EEE support enabled.
08/04/2015 07:08:50,000 kernel[0]: Ethernet [RealtekRTL8111]: TCP/IPv4 segmentation offload enabled.
08/04/2015 07:08:50,000 kernel[0]: Ethernet [RealtekRTL8111]: TCP/IPv6 segmentation offload enabled.
08/04/2015 07:08:50,000 kernel[0]: Ethernet [RealtekRTL8111]: TCP/IPv6 checksum offload enabled.
08/04/2015 07:08:50,000 kernel[0]: Ethernet [RealtekRTL8111]: Version 2.0.0d1 using interrupt mitigate value 0xcf58.
08/04/2015 07:08:50,000 kernel[0]: Ethernet [RealtekRTL8111]: RTL8168E-VL/8111E-VL: (Chipset 16) at 0xffffff811c9dc000,  0:13:3b: f:3b:83
08/04/2015 07:08:50,000 kernel[0]: Ethernet [RealtekRTL8111]: Device is WoL capable.
08/04/2015 07:08:50,000 kernel[0]: Ethernet [RealtekRTL8111]: MSI interrupt index: 1
08/04/2015 07:08:50,000 kernel[0]: Ethernet [RealtekRTL8111]: kIOEthernetWakeOnMagicPacket added to filters.
08/04/2015 07:08:50,000 kernel[0]: Ethernet [RealtekRTL8111]: Already in power state 1.
08/04/2015 07:08:51,000 kernel[0]: Ethernet [RealtekRTL8111]: No medium selected. Falling back to autonegotiation.
08/04/2015 07:08:54,000 kernel[0]: Ethernet [RealtekRTL8111]: Link up on en0, 1-Gigabit, Full-duplex, No flow-control
08/04/2015 07:09:45,378 com.apple.kextd[42]: Can't open CFBundle for /EFI\CLOVER\kexts\10.10\RealtekRTL8111.kext.
08/04/2015 07:09:45,386 com.apple.kextd[42]: Kext com.insanelymac.RealtekRTL8111 not found for client path request.
08/04/2015 07:10:26,000 kernel[0]: Ethernet [RealtekRTL8111]: replaceOrCopyPacket() failed.

 

 
 
Thank you again for your work !
Miles
Link to comment
Share on other sites

08/04/2015 07:09:45,378 com.apple.kextd[42]: Can't open CFBundle for /EFI\CLOVER\kexts\10.10\RealtekRTL8111.kext.

08/04/2015 07:09:45,386 com.apple.kextd[42]: Kext com.insanelymac.RealtekRTL8111 not found for client path request.
08/04/2015 07:10:26,000 kernel[0]: Ethernet [RealtekRTL8111]: replaceOrCopyPacket() failed.

You are injecting the driver with Clover, right? The first two lines are harmless as the driver is working.

The last line is a memory management issue, which occurs from time to time and is self healing. No need to worry.

 

Mieze

Link to comment
Share on other sites

You are injecting the driver with Clover, right? The first two lines are harmless as the driver is working.

The last line is a memory management issue, which occurs from time to time and is self healing. No need to worry.

 

Mieze

Yea I'm injecting with clover.

Thanks for reassuring me :) and f or the works done :)

Link to comment
Share on other sites

Hi Mieze

checking the source, i noticed this

RealtekRTL8111.cpp line 467

IOReturn AtherosE2200::outputStart(IONetworkInterface *interface, IOOptionBits options )

"AtherosE2200" is this a typo or could be just "any" name?

 

Thanks :)

 

Yes, it's a typo which didn't cause any problem because I missed one definition which is essential to make the new driver interface work. Thanks for pointing me to this error. Actually version 2.0.0d1 was identical to 1.2.3. Sorry!

 

In version 2.0.0d2 I corrected that mistake so that the new driver interface is working now. This time I checked! Please use it instead of 2.0.0d1!

 

Good luck!

 

Mieze

RealtekRTL8111-V2.0.0d2.zip

Edited by Mieze
  • Like 3
Link to comment
Share on other sites

I updated to 2.0.0d2 and everything seems to be fine.

 

It seems to fix an odd read/write problem I was having with windows computers previously. They were never the same. Now I get same read/write speeds to and from PC computers. Yeah! thank you Mieze!

  • Like 1
Link to comment
Share on other sites

After updating to 2.0.0d2, it seems my networking issues are pretty much resolved.  I use VMWare and frequently have virtual machines running set use their own IP address (sharing the ethernet port as opposed to using NAT).  Prior to this version, I was having frequent network issues either when running VM's or transferring very large files.  With this version, it has been stable so far.

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

2.0.0d2 is working great with my chipset 9 8111.  On your previous driver I was only able to achieve 550mbps to my server with iperf.  With the new driver I get 940mbps.  I was also getting random IRQ errors and now those are gone.

 

Good job.

Link to comment
Share on other sites

Nice. Thanks for the hard work on this Mieze. Version 2.0.0d2 is working more or less perfectly with the 8111E on my x58a-ud3r so far. 110MB/s read write. Yosemite 10.10.3

Reliable thus far and doesn't hit the CPU as hard as some other drivers I've used for the chipset previously. Worked w/ injection via clover. 

 

I noticed that it is slightly slow to come up to a full link after startup and login. The interface is red for roughly 5-10 seconds after my desktop pops up. Could be some quirk of my setup but I figured I would mention it.

Link to comment
Share on other sites

I noticed that it is slightly slow to come up to a full link after startup and login. The interface is red for roughly 5-10 seconds after my desktop pops up. Could be some quirk of my setup but I figured I would mention it.

 

Looks like the NIC and the switch need a lot of time to negotiate and establish the link. It might also be a DHCP related issue.

 

Mieze

Link to comment
Share on other sites

  • 2 weeks later...

Looks like the NIC and the switch need a lot of time to negotiate and establish the link. It might also be a DHCP related issue.

 

Mieze

 

More or less. But unless someone is doing SSD boot, auto-login and really quickly looks at their network status they won't even notice. Either way this is more zippy than the lnx2mac driver, at least on my x58 boards.

 

Just a quick and dirty compare here with black magic speed test going to the same FreeNAS via AFP.

 

8111E (lnx2mac) W 91MB/s R 89MB/s

8111E (mieze) W 102.5MB/s R 110MB/s

Intel 1000/PT Dual port (w/ single link up) 113MB/s R 110.5 MB/s

Marvell Yukon 88E8053 W 109.4MB/s R 110.1MB/s

Link to comment
Share on other sites

@Dilemma Prison: In case you have another switch to hand you might also want to exchange it in order to solve the issue. The write speed of 102.5MB/s is a little bit low and could be an indication that the switch doesn't get on well with the NIC.

 

Mieze

Link to comment
Share on other sites

Have trouble doing WoL...  Loaded your debug kext and didn't see "Device is WoL capable" in the log.  Does it mean that my motherboard's NIC falls into the known issues of "WoL does not work in certain configurations"?

 

Gigabyte Z68A-D3H-B3

OSX 10.10.1

Graphics: HD3000

 

Is there anything I can do about it including fiddling with the source code?  Really want this WoL feature.

 

Thanks.

20/05/2015 4:30:27.000 pm kernel[0]: Ethernet [RealtekRTL8111]: PCIe ASPM support disabled.
20/05/2015 4:30:27.000 pm kernel[0]: Ethernet [RealtekRTL8111]: PCI power management capabilities: 0xffc3.
20/05/2015 4:30:27.000 pm kernel[0]: Ethernet [RealtekRTL8111]: PME# from D3 (cold) supported.
20/05/2015 4:30:27.000 pm kernel[0]: Ethernet [RealtekRTL8111]: PCIe link capabilities: 0x00077c11, link control: 0x0000.
20/05/2015 4:30:27.000 pm kernel[0]: Ethernet [RealtekRTL8111]: EEE support enabled.
20/05/2015 4:30:27.000 pm kernel[0]: Ethernet [RealtekRTL8111]: TCP/IPv4 segmentation offload enabled.
20/05/2015 4:30:27.000 pm kernel[0]: Ethernet [RealtekRTL8111]: TCP/IPv6 segmentation offload enabled.
20/05/2015 4:30:27.000 pm kernel[0]: Ethernet [RealtekRTL8111]: TCP/IPv6 checksum offload enabled.
20/05/2015 4:30:27.000 pm kernel[0]: Ethernet [RealtekRTL8111]: Version 2.0.0d2 using interrupt mitigate value 0xcf58.
20/05/2015 4:30:27.000 pm kernel[0]: Ethernet [RealtekRTL8111]: RTL8168E-VL/8111E-VL: (Chipset 16) at 0xffffff8105d8d000, 50:e5:49:b9:2f:a8
20/05/2015 4:30:27.000 pm kernel[0]: Ethernet [RealtekRTL8111]: MSI interrupt index: 1
20/05/2015 4:30:27.000 pm kernel[0]: Ethernet [RealtekRTL8111]: Already in power state 1.
20/05/2015 4:30:30.000 pm kernel[0]: Ethernet [RealtekRTL8111]: No medium selected. Falling back to autonegotiation.
20/05/2015 4:30:33.000 pm kernel[0]: Ethernet [RealtekRTL8111]: Link up on en0, 1-Gigabit, Full-duplex, flow-control
20/05/2015 4:30:57.000 pm kernel[0]: Ethernet [RealtekRTL8111]: checksums applied: 0x3, checksums valid: 0x0
20/05/2015 4:30:57.000 pm kernel[0]: Ethernet [RealtekRTL8111]: checksums applied: 0x3, checksums valid: 0x0

Link to comment
Share on other sites

Is there anything I can do about it including fiddling with the source code?  Really want this WoL feature.

 

In those cases where the issue was resolved it turned out to be related to incorrect BIOS settings. That's where you should start your search. Sometimes the solution is not as obvious as expected and hard to find.

 

Mieze 

  • Like 1
Link to comment
Share on other sites

In those cases where the issue was resolved it turned out to be related to incorrect BIOS settings. That's where you should start your search. Sometimes the solution is not as obvious as expected and hard to find.

 

Mieze 

 

Indeed.  Soon after I did the tests with the debug kext's (yours and also the one I compiled myself) and posted the log, I then wanted to find out the values of the various variables that determine wolCapable.  So I add the line 

 

    IOLog("Ethernet [RealtekRTL8111]: mcfg %d; options1 %d; options2 %d; wolCapable %d; wol %d\n",

          tp->mcfg, options1, options2, wolCapable, wol);

 

    /* Set wake on LAN support. */

    wolCapable = wolCapable && wol;

 
This gave me a shocking result: both wolCapable and wol were true and my NIC all of a sudden became WoL capable!  Then I reverted back to all the original kext's I tried before (1.2.3, 2.0.0d2 release kext).  They all worked.  This is weird.  I don't think I have changed any other settings in between.
 
I have also found out that though WoL works, it is like dark wake.  The screen remains blank and after around 30 seconds, it goes back to sleep again.  I add the boot option "darkwake=0" then WoL becomes full wake. 
Link to comment
Share on other sites

Good evening!

 

I think have a problem with my Ethernet controller. I have a RTL8111 chipset with Mieze's 1.2.3 kext.

 

I get very poor upload transfer rates:

— SpeedTest.net: 30 Mbps although I get 200 Mbps with my Windows laptop.

— curl upload to a 10 Gbps Internet server: 655 kB/s instead of 23 MB/s (yes, bytes) with my Linux server.

— SMB transfer: 1.25 MB/s from my hackintosh to my Linux server. I get 125 MB/s (1 Gigabit/s) from my Windows laptop to the same server.

 

But download works fine:

I get 125 MB/s, so 1 Gigabit/sec from my Linux server to my hackintosh. 950 Mb/s with SpeedTest.net. 26 MB/s with curl from a 10 Gbps Internet server.

 

What's wrong, what should I do? :)

Link to comment
Share on other sites

×
×
  • Create New...