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:
CODE
--- /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!!!