Jump to content

AppleIntelE1000e.kext for 10.8/10.7/10.6/10.5


hnak
 Share

751 posts in this topic

Recommended Posts

Is this kext finally more stable yet? I've wanted to use OS X but I can't cause I rely on this kext for my ethernet and it constantly drops the connection and I have to restart. And I don't have the money to buy an ethernet card to use it or else I'd buy a mac.

Link to comment
Share on other sites

It's perfectly stable for me and always has been. I have 82579V Ethernet and I've never had any issues. 

 

You don't have to restart if the connection drops. Try disabling EN0 and then enabling it again in the network control panel. Or log out and then log back in.

Also try forcing 100 mbit/sec.

 

Also please try to be constructive when criticizing free software. Be nice to the precious few developers we have. They're the ones who make this community move forward, not you or me.

You're lucky that the driver works for you at all. Beggars can't be choosers.

Constructive in this case would be providing detailed information about your ethernet hardware, log excerpts from when the connection drops etc etc.

Link to comment
Share on other sites

And I don't have the money to buy an ethernet card to use it or else I'd buy a mac.

 

An add-on card with a Realtek RTL8111E is very affordable (~10€) and works perfectly with my RealtekRTL8111 driver. A number of users (me included) are even running servers for their business with this combination.

 

Mieze

Link to comment
Share on other sites

@mieze -

 

thanks for working on this... not sure TSO is totally fixed.

 

my ethernet on my laptop is 8086 id 1502 (system info says its a 82579LM gigabit network )

 

however, i tried out your revised kext from this post             #638             and it did not seem work with TSO set to true.

i got lot of messages in the /var/log/system.log and performance was very slow

 

to test I simply copy a large vmdk file from my Lenovo T420 system to another Macbook Pro:

 

running with TSO true -  got about ~4 MB/s (lots of log messages - see below)

running with TSO false - got about 11.2 MB/s 

running with 2.4.14 - got about 12 MB/s 

 

Aug 21 17:00:53 Toms-Mac kernel[0]: e1000_tx_map: failed to getphysicalsegment.

Aug 21 17:01:21 Toms-Mac kernel[0]: e1000_tx_map: failed to getphysicalsegment.

Aug 21 17:04:57 localhost kernel[0]: 2.432611: ath_get_caps[4019] tx chainmask mismatch actual 3 sc_chainmak 0

Aug 21 17:04:57 localhost kernel[0]: 2.437521:   pullmode[1] txringsize[  256] txsendqsize[1024] reapmin[   32] reapcount[  128]

Link to comment
Share on other sites

@tluck: First of all it is not clear if you are using TSO6 or TSO4, which I didn't touch at all. Second the "failed to getphysicalsegment" error message is a memory management issue which is not a TSO specific problem. And third, the last two messages from your log data aren't related to this driver at all.

 

Mieze

Link to comment
Share on other sites

Hi All,

 

I have a motherboard with an integrated i217v NIC as well as a PCIe Intel Pro/1000 PT (dual port).  For the past few days I have been attempting to get better transmit performance out of both of these.  Typically I'm maxing out at around 56-60MB/s for tx while rx is 100MB/s+.

 

I've ruled out all other potential causes and tried a wide variety of kexts to attempt to resolve this problem.  Thus far I've determined that the performance issue is directly linked to the E1000_CTRL_TFCE parameter.  When E1000_CTRL_TFCE is set to true transmission rates take a nosedive.  When E1000_CTRL_TFCE is set to false the NIC stops working shortly after beginning the transmission of a large file, but tx speeds are 100MB/s+.

 

Anyone have any input on this?

Link to comment
Share on other sites

I tried to debug my kernel with gdb. It seems that AppleIntelE1000e driver does not support this feature. A message said

 

kdp_pool: no debugger device

 

And the other computer cannot connect to this machine.

 

Just want to know if this is a driver feature? If so, is there any plan to implement it?

 

Thank you.

Link to comment
Share on other sites

@hnak, could you tell me the model of the ethernet card you are using?

I have no idea about the debugger interface since  I didn't dig into it yet. However, this driver (https://github.com/pmj/virtio-net-osx) implemented that interface. Maybe we can read the source code of that to learn how to implement the kernel debugging.

 

UPDATED: I scanned the source code (virtio-net/virtio_net.cpp) and it looks not difficult :-)

Link to comment
Share on other sites

I happen to use virtio-net-osx with Virtualbox.

In case of real hardware, things are more complex as polled-mode must be set upon enable(IOKernelDebugger) call, and sendPcaket/receivePacket must avoid memory allocation.

 

. The driver must have a state-variable to prevent packet processing in interrupt handlers ( or disable interrupt )

. if enable(IOKernelDebugger) is called rather than enable(IONetworkInterface), the driver must pre-allocate send/receive buffers.

. The driver must use IOKernelDebugger::lock/unlock instead of spinlock/mutex in debugging mode.

 

So, the driver should override attachDebugger/enable/disable/sendPacket/receivePacket, add a state-variable and conditional code in place where lock/mutex is used and in interrupt handlers. It is not too difficult, but will take some time.

Link to comment
Share on other sites

Strange... in Mavericks AppleIntelE1000e.kext works in EFI/Clover/Kexts/10.10 but in Yosemite only works at S/L/E... does it happen with anybody else?

 

(FakeSMC.kext works in EFI/Clover/Kexts in Mavericks and Yosemite)

Link to comment
Share on other sites

Strange... in Mavericks AppleIntelE1000e.kext works in EFI/Clover/Kexts/10.10 but in Yosemite only works at S/L/E... does it happen with anybody else?

 

(FakeSMC.kext works in EFI/Clover/Kexts in Mavericks and Yosemite)

It will work if you rebuild cache.

Link to comment
Share on other sites

  • 2 weeks later...

It will work if you rebuild cache.

 

To me, even rebuilding cache, only works in Clover/Kexts/10.10 if I install Clover without EFI partition... inside EFI partition it does not load... inside EFI I have an error, something like "can't load kext xxxxx" and at the end of the error message something about "dependencies"...

Link to comment
Share on other sites

To me, even rebuilding cache, only works in Clover/Kexts/10.10 if I install Clover without EFI partition... inside EFI partition it does not load... inside EFI I have an error, something like "can't load kext xxxxx" and at the end of the error message something about "dependencies"...

Boot without caches, then rebuild cache, then boot with cache.

 

The trick is you have to convince kextcache to include IONetworkingFamily.kext in the cache. Once it is in the cache, the dependencies for the AppleIntelE1000e.kext can be satisfied in a boot with caches. By getting both kexts to load while booting without caches, IONetworkingFamily.kext is placed in the cache (because it is in /S/L/E and it is loaded).

Link to comment
Share on other sites

Boot without caches, then rebuild cache, then boot with cache.

 

Thanks, RehabMan...

 

But while i do that process, can I put intelE1000e in EFI Partition? or do I need to place it inside S/L/E and so, after rebuilding cache, I delete it from there?

Or better, all I have to do is to load IONetworkingFamily.kext and rebuild cache?

Link to comment
Share on other sites

Thanks, RehabMan...

 

But while i do that process, can I put intelE1000e in EFI Partition? or do I need to place it inside S/L/E and so, after rebuilding cache, I delete it from there?

Or better, all I have to do is to load IONetworkingFamily.kext and rebuild cache?

 

I usually do the following, and the cache is built properly:

 

mv /System/Library/Extensions/IONetworkingFamily.kext ~/Desktop/

mv ~/Desktop/IONetworkingFamily.kext /System/Library/Extensions/

Link to comment
Share on other sites

I usually do the following, and the cache is built properly:

 

mv /System/Library/Extensions/IONetworkingFamily.kext ~/Desktop/

mv ~/Desktop/IONetworkingFamily.kext /System/Library/Extensions/

Ummm... same effect as:

sudo touch /System/Library/Extensions
Link to comment
Share on other sites

Thanks, RehabMan...

 

But while i do that process, can I put intelE1000e in EFI Partition? or do I need to place it inside S/L/E and so, after rebuilding cache, I delete it from there?

Or better, all I have to do is to load IONetworkingFamily.kext and rebuild cache?

Yes, keep in in EFI/Clover/kexts... Booting ignore caches allows both it to load and IONetworkingFamily.kext.

 

Note: Personally, I don't keep my kexts on the EFI partition. You can't keep all of them there anyway (eg. AppleHDA injector), and if you're developing kexts, there is certain disadvantages to storing them there (error checking after installing a new build is better if they are in /S/L/E).

Link to comment
Share on other sites

 Share

×
×
  • Create New...