Jump to content
m.musashi

Marvell Yukon 8001 - the driver

409 posts in this topic

Recommended Posts

m.musashi:

In an attempt to make installation easier I created a package installer from the "skge.kext.02d.zip" archive.

 

Tested installation (since in my actual case I didn't need to edit the plist for it to work) and then started examining the plist file and am now wondering why you didn't add additional profiles to cover the other vendor ID's?

 

You do realize you can do something like the following: (probably better example exists in the Extension dir)

	<key>IOKitPersonalities</key>
<dict>
	<key>skge1/key>
	<dict>
		<key>CFBundleIdentifier</key>
		<string>com.musashi.skge1/string>
		<key>DescriptorPoolTimer</key>
		<integer>250</integer>
		<key>EnableLowPwr</key>
		<integer>0</integer>
		<key>IOClass</key>
		<string>skgeosx</string>
		<key>IOKitDebug</key>
		<integer>65535</integer>
		<key>IOMatchCategory</key>
		<string>skge1/string>
		<key>IOPCIPrimaryMatch</key>
		<string>0x432011AB</string>
		<key>IOProviderClass</key>
		<string>IOPCIDevice</string>
		<key>IOResourceMatch</key>
		<string>IOKit</string>
		<key>Model</key>
		<string>Yukon-88E8001</string>
		<key>RxRingSize</key>
		<integer>256</integer>
		<key>TxRingSize</key>
		<integer>256</integer>
		<key>Vendor</key>
		<string>Marvell</string>
		<key>WaitForLinkUp</key>
		<integer>6000</integer>
		<key>WaitToCheckDelay</key>
		<integer>10000</integer>
	</dict>
	<key>skge2/key>
	<dict>
		<key>CFBundleIdentifier</key>
		<string>com.musashi.skge2/string>
		<key>DescriptorPoolTimer</key>
		<integer>250</integer>
		<key>EnableLowPwr</key>
		<integer>0</integer>
		<key>IOClass</key>
		<string>skgeosx</string>
		<key>IOKitDebug</key>
		<integer>65535</integer>
		<key>IOMatchCategory</key>
		<string>skge2/string>
		<key>IOPCIPrimaryMatch</key>
		<string>0x432011AB</string>
		<key>IOProviderClass</key>
		<string>IOPCIDevice</string>
		<key>IOResourceMatch</key>
		<string>IOKit</string>
		<key>Model</key>
		<string>Yukon-88E8001</string>
		<key>RxRingSize</key>
		<integer>256</integer>
		<key>TxRingSize</key>
		<integer>256</integer>
		<key>Vendor</key>
		<string>Marvell</string>
		<key>WaitForLinkUp</key>
		<integer>6000</integer>
		<key>WaitToCheckDelay</key>
		<integer>10000</integer>
	</dict>
	<key>skge3</key>
	<dict>
		<key>CFBundleIdentifier</key>
		<string>com.musashi.skge3</string>
		<key>DescriptorPoolTimer</key>
		<integer>250</integer>
		<key>EnableLowPwr</key>
		<integer>0</integer>
		<key>IOClass</key>
		<string>skge3osx</string>
		<key>IOKitDebug</key>
		<integer>65535</integer>
		<key>IOMatchCategory</key>
		<string>skge3</string>
		<key>IOPCIPrimaryMatch</key>
		<string>0x432011AB</string>
		<key>IOProviderClass</key>
		<string>IOPCIDevice</string>
		<key>IOResourceMatch</key>
		<string>IOKit</string>
		<key>Model</key>
		<string>Yukon-88E8001</string>
		<key>RxRingSize</key>
		<integer>256</integer>
		<key>TxRingSize</key>
		<integer>256</integer>
		<key>Vendor</key>
		<string>Marvell</string>
		<key>WaitForLinkUp</key>
		<integer>6000</integer>
		<key>WaitToCheckDelay</key>
		<integer>10000</integer>
	</dict>
</dict>

All vendor ID's are the same because I didn't have the info to add it but you get the idea.

 

Here's the package Marvell.Gigabit.pkg.zip

Share this post


Link to post
Share on other sites
Advertisement

This worked IMMEDIATELY! WOW! THANK YOU FOR MAKING THIS :whistle:

 

Just for the record: DFI LANParty UT NF4 Ultra-D (dunno which Marvell Yukon ver, but probably 88E8001 too)

 

THANKS!!! =D

LTX

Share this post


Link to post
Share on other sites

thanks heaps musashi works with Asus K8V-SE will be adding this file to my customised install disk I have now removed my RTL8139 card and throughly test this new driver

Share this post


Link to post
Share on other sites

works perfectly for my on board Marvell Yukon 88E8001 on Asus A8V.

 

Thanks m.musashi for your great work!

Share this post


Link to post
Share on other sites

Please guys help me...

 

I'm a noob in Mac OS and I need to make the ethernet card to work.

 

 

I got the skge.kext and used it, but still no good

 

my motherboard is an asus p4p800 with 3com gigabit lom (3c940) network board

 

i changed the info.plist vendor id to 0x170010B7 , the model to 3c940 and the vendor to 3com but it didn't work

 

i got no skeg lines in dmesg.... the only thing i could find was a line with

 

ethernet: family specific matching fails

 

What did I do wrong??? please help me!!

Share this post


Link to post
Share on other sites

Hi packagefixer, i think there is a command for grab the vendor/device ID directly from the system profiler. Should it be simpler for your installer to take it and automatically write it to the info.plist (only if needed) ?

 

Thanks to m.musashi and to you for this great work. :D

Share this post


Link to post
Share on other sites

source code attached for those brave enough to plunge into the depth of IOKit :)

 

some notes to clear a couple of points:

- I have not changed the plist to include all ven/devids as I believe this is still a hackers environment. If you don't know how to modify a plist and load a kext manually then you shouldn't be using Mac OSX on x86. That's IMHO.

- For better version management and for the best interest of users (i.e. avoid confusion), I believe it would be a good thing to keep future versions of the driver in this thread. As stated in the first msg, email the source to me and I'll attach it in the first page with your name and all. Assuming it works of course.

 

bye

Share this post


Link to post
Share on other sites

<3 musashi for writing this driver for us.

keep us up to date

Share this post


Link to post
Share on other sites
Guest BuildSmart
Here's the driver I've put together to support the Marvell Yukon 88E8001.

Hopefully you have the time now to adjust the source cause when I did have a machine with the card and the time, the source wasn't available.

 

I believe you can set this up easily as done in the AppleGMACEthernet driver with something like

// in skge.h (public:)
bool		fBuiltin;			// UniN builtin = 1; PCI card = 0
bool		fYukon;

// in your start(), also see: UniNEnet::wakeUp() in AppleGMACEthernet.
// you could use the names you list in skge_chips() as match names.
fBuiltin	= matchEntry->isEqualTo( "yukonosx" ) || matchEntry->isEqualTo( "Yukon");
fYukon	= matchEntry->isEqualTo( "Yukon-LP") || matchEntry->isEqualTo( "Yukon-Lite"); // alternate PHY ID's

of course you'll have to adjust your detection to match names on hardware and PCI and don't forget to mark the controller as enabled (and disabled).

	netifEnabled = true;	/* Mark the controller as enabled by the interface.	*/

	netifEnabled = false;	/* Mark the controller as disabled by the interface.	*/

as you start (and stop) the interface.

 

Of course this is incomplete but it does provide a generalized concept to work from.

Share this post


Link to post
Share on other sites
Guest BuildSmart

I am unable to confirm any more at this time other than using ARD to see the issue however it warrants looking into further to determine if it is a conflict of some kind with dual cards installed or that the MTU size cannot be changed.

 

I was not permitted enough access to change any settings on en0 so I have no idea if the problem exists there as well.

 

As reported and viewed (due to a customization requirement of the second ethernet MTU of 700), the issue has to do with manually setting the MTU size in the Network preferences and despite the setting change, the size remains at 1500 and the application notes the 1500 and complains with an alert that it has not been set to 700 and clicking OK quits the applications and opens the Network preference to have the user set it.

 

Since the settings don't seem to be taking effect, it's an endless loop I thought I'd take a quick look and see if anything jumped out at me but other than some unrelated warnings nothing really looked out of place.

 

I also had build issues within the ADE (Apple Developer Environment) due to the Kernel framework (reworked this to the IOKit framework) and ended up repackaging the project with a package maker phase.

 

I've tested it in the x86 OS using the standard XCode and it seems to build OK there and I also noticed some warning that needed attention so I adjusted those as well.

 

I was curious about your struct implemntation with skge_chips but figured you knew more about your intened purpose so I left it alone.

 

Here's a quick diff on some of the source changes/corrections:

--- /skge_02d/skge.cpp 2006-08-23 01:54:00.000000000 -0400
+++ /SKGE/skge.cpp  2006-08-23 14:03:38.000000000 -0400
@@ -204,7 +204,7 @@

	super::free(); 
	if(d_rx_mbuf!=0 || d_tx_mbuf!=0) {
-			   IOLog("%s ERR: leaking rx_mbuf:%d tx_mbuf:%d\n",getName()),d_rx_mbuf,d_tx_mbuf;
+			   IOLog("%s ERR: leaking rx_mbuf:%d tx_mbuf:%d\n",getName(),d_rx_mbuf,d_tx_mbuf);
	}
//	 IOLog("free() <===\n"); 

@@ -315,7 +315,7 @@
	}
	while ( false );

-	   IOLog("%s : checking rx_mbuf:%d tx_mbuf:%d\n",getName()),d_rx_mbuf,d_tx_mbuf;
+	   IOLog("%s : checking rx_mbuf:%d tx_mbuf:%d\n",getName(),d_rx_mbuf,d_tx_mbuf);
	IOLog("%s: Disabled!\n", getName());
//	 IOLog("disable() <===\n"); 
	return ( ret ? kIOReturnSuccess : kIOReturnIOError );
@@ -380,7 +380,7 @@

			if ( txActiveCount > TRANSMIT_QUEUE_LENGTH )
			{
-					   IOLog( "%s ERR: ouputPacket() stall %d:%d:%d\n", getName(), txActiveCount, txHead, txTail );
+					   IOLog( "%s ERR: ouputPacket() stall %d:%d:%d\n", getName(), (int) txActiveCount, (int) txHead, (int) txTail );
					netStats->outputErrors++;
					return kIOReturnOutputStall;
			}
@@ -757,7 +757,7 @@
	bytes = (DEFAULT_RX_RING_SIZE + 1)* sizeof(struct skge_rx_desc);
	rx_md = IOBufferMemoryDescriptor::withOptions(kIOMemoryPhysicallyContiguous, bytes, PAGE_SIZE );
	if ( rx_md ==0 || rx_md->prepare() != kIOReturnSuccess ) {
-			   IOLog("%s ERR: RX can't allocate %d contiguous bytes\n", getName(), bytes);
+			   IOLog("%s ERR: RX can't allocate %d contiguous bytes\n", getName(), (int) bytes);
			return false;
	}
	rx_desc_ring = (skge_rx_desc *) rx_md->getBytesNoCopy();		//Returns a reference to the OSData object's internal data buffer
@@ -769,7 +769,7 @@
	bytes = (DEFAULT_TX_RING_SIZE + 1)* sizeof(struct skge_tx_desc);
	tx_md = IOBufferMemoryDescriptor::withOptions(kIOMemoryPhysicallyContiguous,bytes,PAGE_SIZE );
	if ( tx_md ==0 || tx_md->prepare() != kIOReturnSuccess ) {
-			   IOLog("%s ERR: TX can't allocate %d contiguous bytes\n", getName(), bytes);
+			   IOLog("%s ERR: TX can't allocate %d contiguous bytes\n", getName(), (int) bytes);
			return false;
	}
	tx_desc_ring = (skge_tx_desc *) tx_md->getBytesNoCopy();		//Returns a reference to the OSData object's internal data buffer
@@ -941,9 +941,6 @@
					}
			}

-irq_done:
-			   skge_write32(B0_IMSK, intr_mask);
-//			 IOLog("interruptOccurred() <===\n"); 
	}
}

@@ -984,7 +981,7 @@
//					 myerr = +1;
			if (rx_desc_ring[ i ].status & GMR_FS_RX_OK == 0)	   //bad_phy_status(status) for CHIP MARVELL only 
					myerr = +1;
-			   if ((rx_desc_ring[ i ].status >> GMR_FS_LEN_SHIFT) != len)	  //phy_length(status) for CHIP MARVELL only 
+			   if ((rx_desc_ring[ i ].status & GMR_FS_LEN_SHIFT) != (unsigned int) len)		//phy_length(status) for CHIP MARVELL only 
					myerr = +1;
			//reject bad packets
			if (myerr){

 

I've attached the new package and when you tell me you've grabbed it I'll edit the post and remove it after you let me know you have it (I don't need any credit).

 

The Info.plist has been removed and is generated (editable from within the package TARGETS->SKGE).

 

PLEAE NOTE:

THIS SOURCE PACKAGE IS NOT INTENDED FOR USE BY ANYONE OTHER THAN THE ORIGINAL AUTHOR.

IT WILL MORE THAN LIKELY BE MODIFIED EVEN MORE SO PLEASE DO NOT DOWNLOAD.

NO SUPPORT FOR THIS CODE OR IT'S GENERATED BINARY WILL BE PROVIDED BY MYSELF OR THE AUTHOR!!!

SKGE.zip

Share this post


Link to post
Share on other sites

Firstly, thanks to musashi and all involved in the development of the skge extension. I'd like to report some strange behaviour after I installed skge.ext 0.2d.

 

M/B: Asrock ConroeXfire-eSata2 with a Core 2 Duo E6600

GBLan: Dlink DGE-530T(88E8003-LKJ) PCI card

OSX: Fresh install from the recently available JaS 10.4.7 DVD

SKGE: skge.kext 0.2d

HD: WD 250GB SATA2

 

My IDE bios setting is set to Native/AHCI. OSX installs fine and runs fine. I install skge.kext 0.2d(after editing Info.plist, deleted Extensions.kextcache & Extensions.mkext) and reboot.

 

The result is "Waiting for root device".

 

I have to change my IDE bios setting to Native/IDE to overcome this. Now OSX will boot up OK and 100mbit network works fine via DHCP or manual IP setting. I also noticed some strange errors in dmesg output regarding failed pcimatches. Despite this OSX seems to be working fine.

 

If I "rm -R /System/Library/Extensions/skge.kext", things return to what it was before I installed skge. So clearly skge.kext is having an effect on OSX.

 

ethernet: family specific matching fails

SBRG: family specific matching fails

IDE0: family specific matching fails

IDE1: family specific matching fails

EUSB: family specific matching fails

P0P4: family specific matching fails

P0P8: family specific matching fails

P0P9: family specific matching fails

ethernet: family specific matching fails

USB0: family specific matching fails

USB1: family specific matching fails

USB2: family specific matching fails

USB3: family specific matching fails

pci8086,27da: family specific matching fails

pci8086,27d8: family specific matching fails

pci8086,2770: family specific matching fails

Matching service count = 1

skgeosx::probe(ethernet)

skgeosx::start(ethernet) <1>

skgeosx: SKGE for OSx86 v0.2d ---- M.Musashi ©2006

skgeosx: VendorID:1186 DeviceID:4c00 Rev:11

skgeosx: board is Yukon

I have attached both dmesg output before & after skge installation.

dmesg_before_skge_install.txtdmesg_after_skge_install.txt

Thanks,

 

mir...

Share this post


Link to post
Share on other sites

Worked an absolute treat straight out the box P4P800E-Deluxe (88E8001)

Swapped files between a G3 lombard and my intel machine with a cross over cable.

 

Sweet god work .... :)

Share this post


Link to post
Share on other sites
Firstly, thanks to musashi and all involved in the development of the skge extension. I'd like to report some strange behaviour after I installed skge.ext 0.2d.

 

M/B: Asrock ConroeXfire-eSata2 with a Core 2 Duo E6600

GBLan: Dlink DGE-530T(88E8003-LKJ) PCI card

OSX: Fresh install from the recently available JaS 10.4.7 DVD

SKGE: skge.kext 0.2d

HD: WD 250GB SATA2

 

My IDE bios setting is set to Native/AHCI. OSX installs fine and runs fine. I install skge.kext 0.2d(after editing Info.plist, deleted Extensions.kextcache & Extensions.mkext) and reboot.

 

The result is "Waiting for root device".

 

I have to change my IDE bios setting to Native/IDE to overcome this. Now OSX will boot up OK and 100mbit network works fine via DHCP or manual IP setting. I also noticed some strange errors in dmesg output regarding failed pcimatches. Despite this OSX seems to be working fine.

 

If I "rm -R /System/Library/Extensions/skge.kext", things return to what it was before I installed skge. So clearly skge.kext is having an effect on OSX.

 

ethernet: family specific matching fails

SBRG: family specific matching fails

IDE0: family specific matching fails

IDE1: family specific matching fails

EUSB: family specific matching fails

P0P4: family specific matching fails

P0P8: family specific matching fails

P0P9: family specific matching fails

ethernet: family specific matching fails

USB0: family specific matching fails

USB1: family specific matching fails

USB2: family specific matching fails

USB3: family specific matching fails

pci8086,27da: family specific matching fails

pci8086,27d8: family specific matching fails

pci8086,2770: family specific matching fails

Matching service count = 1

skgeosx::probe(ethernet)

skgeosx::start(ethernet) <1>

skgeosx: SKGE for OSx86 v0.2d ---- M.Musashi ©2006

skgeosx: VendorID:1186 DeviceID:4c00 Rev:11

skgeosx: board is Yukon

I have attached both dmesg output before & after skge installation.

dmesg_before_skge_install.txtdmesg_after_skge_install.txt

Thanks,

 

mir...

 

I just got up and running with the Yukon driver. Thank you very much. It must have taken a lot of time, hopefully we can repay you somehow (paypal?).

 

Attached you will find my dmesg log, which is showing the same behavior as the quoted post above from miramar.

 

M/B: ASUS A8V Deluxe with an AMD64 3000 / 939

GBLan: Marvell Yukon 88E8001 built-in

OSX: Fresh install 10.4.5 from the myzar DVD

skgeosx: SKGE for OSx86 v0.2d ---- M.Musashi ©2006

skgeosx: VendorID:11ab DeviceID:4320 Rev:13

skgeosx: board is Yukon-Lite

 

Also, if the permissions on the SKGE kext file is not set to User: "System", Group: "Wheel", i couldn't get it to load or see it in the Network panel.

Saved_Terminal_Output.txt

Share this post


Link to post
Share on other sites

These work brilliantly. Well done gentlemen and thank you so much. All of my other OSX installs and configurations have been a lot easier than on this machine for my brother and you have supplied the missing link. Thanks again. Respect. :):D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D:D

Share this post


Link to post
Share on other sites

buildsmart: thanks for the debug. I've downloaded the zip file

 

Guys, at the moment I'm too busy with my real life job and don't have any time to devote to this project or to Osx86 in general. The driver works and that's fine at the moment.

 

As soon as I'll have a couple of spare hours I'll integrate Buildsmart comments (debug and built-in detection routine) and will release a new version of the driver.

 

In the meantime, have fun!

 

bye

 

 

 

hopefully we can repay you somehow (paypal?).

 

No need, but thanks anyway :compress:

 

Attached you will find my dmesg log, which is showing the same behavior as the quoted post above from miramar.

behaviour is normal with this "debug" release of the driver; it's not an indication the driver is not working, quite the opposite

 

Also, if the permissions on the SKGE kext file is not set to User: "System", Group: "Wheel", i couldn't get it to load or see it in the Network panel.

this also is perfectly normal: it happens with all kexts

Share this post


Link to post
Share on other sites

I can not get it to work with Asus P4P800. I am sure I am just doing something wrong, do I need to copy the zip or the dir or what do i need to copy over to the folders. Thanks for your hard work, I am sure they will be rocking when I get them up.

Share this post


Link to post
Share on other sites

This driver has been working great for me over the last month or so. I was tweaking my network though, and noticed that jumbo frames (MTU 9000) isn't available in the advanced network settings.

I dont mean to be demanding at all, cause i'm greatful for the time donated to this project, but is it possible to enable that feature? From what i understand this will increase network efficiency on big file transfers.

Cheers,

IAN

Share this post


Link to post
Share on other sites
not exactly sure how to enter the password part

When you type "sudo -s" into Terminal, it will respond by asking for your password. Give it your password and hit Enter.

Share this post


Link to post
Share on other sites

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.

×