For device that works with SPI you've got on it an CS pin that means ChipSelect or CSN chip not select. This pin must bu set to LOW to 'talk' to the device.
So from, may be you need to create for each device 2 functions :
For the NRF :
void EnableNRF() { digitalWrite(cs_NRF_Pin, LOW); delay(50); }
void DisableNrf() { digitalWrite(cs_NRF_Pin, HIGH); delay(50); }
And for the ethernet :
void EnableEthernet() { digitalWrite(cs_Ethernet_Pin, LOW); delay(50); }
void DisableEthernet() {digitalWrite(cs_Ethernet_Pin, HIGH); delay(50); }
May be the value of delay can bed reduced. But this is the idea of using multiple SPI devices on the same board.
I just look about the Nrf24 library from Maniacbug, each function is ok considering 'Freeing' the device. (look at the code).
May be you need to write only the Ethernet part.
You must also look at the SPI speed for the ethernet device, the Nrf (still in the code) works with theses parameters :
void RF24::csn(int mode)
{
// Minimum ideal SPI bus speed is 2x data rate
// If we assume 2Mbs data rate and 16Mhz clock, a
// divider of 4 is the minimum we want.
// CLK:BUS 8Mhz:2Mhz, 16Mhz:4Mhz, or 20Mhz:5Mhz
#ifdef ARDUINO
SPI.setBitOrder(MSBFIRST);
SPI.setDataMode(SPI_MODE0);
SPI.setClockDivider(SPI_CLOCK_DIV4);
#endif
digitalWrite(csn_pin,mode);
}
May be the trouble starts from here if it's different from ethernet one.
Hope it can helps you.
Best Regards
add : Another would be to use an arduino pro mini that works very well with Nrf24 and create an small protocol to exchange datas with tx/rx pins with the board that own ethernet shield.