I see your code but is the code correct
because you mention you have to disable the W5100 chip. but you set pin 10 high before initializing the SD card.
after the initializing you set pin 10 high again.
logical i think
void setup() {
Serial.begin(9600);
// disable w5100 SPI while setting up SD
pinMode(10,OUTPUT);
digitalWrite(10,LOW);
Serial.print("Starting SD...");
if(!SD.begin(4)) Serial.println("failed");
else Serial.println("ok");
// SD.begin() returns with its SPI disabled. Good SD library!
Serial.print("Starting w5100...");
if(!Ethernet.begin(mac)) Serial.println("failed");
else Serial.println("ok");
// Ethernet.begin() returns with the SPI enabled (bug?), so disable it. Bad Ethernet library!
digitalWrite(10,HIGH);