Ethernet2 (UDP) SPI transfers have a lot of dead time

Hmmm, My C might not be good enough.
This line

 myspi->SPI_TDR = SPI_PCS(3) | i;

similar to:

spi->SPI_TDR = d | SPI_PCS(ch);

in SPI.cpp, how did you get 3? And why is SPI_PCS(3) bitwise Or'd with the data to be sent? I couldn't work out what SPI_PCS(3) means.

What does the creation of myspi give us? Is this the only way to gain access to SPI_SR etc..?

I just about managed to alter SPI.h to make it work.... (tho I had to run your demo, I couldn't get it to work within my code).

Not much speed difference than the library, it looks like it's the while loop waiting for the clear signal