I have a W5500 ethernet module and when i scoped out the SPI transaction the SPI clock was only at 12Mhz. Although its decent, my RP2040 board can definitly do better. The w5500 also caps out at 80Mhz. So i have a bit more room to play.
So i have a bit of a look into the library and all the spi transaction uses this definition
#define SPI_ETHERNET_SETTINGS SPISettings(14000000, MSBFIRST, SPI_MODE0)
problem with that is even if i set the SPISettings to something else it will always use that.
Option 1, I could edit the library and change that clock number but i do not like that as i would like to keep everything inside my sketch, and not destroy the library if in the future i use a slowe arduino, scratching my head why it wont work , forgetting i changed something inn the library.
Option 2, Somehow over ride that definition with my own, but im still figuring that out on how to do it.
I often copy libraries to the arduino sketch folder, and include them with "" instead of <>, especially if I do need to make a change to them, or just to archive a sketch, keeping the current version of the library, just incase the library is updated.
It may be the maximum SPI frequency supported by the module.
use buffering. for example with the BufferedPrint class from my StreamLib. it optimizes the SPI transfer and the network transfer