Hello,
I will try to do this, however it may take some days as all five nodes I have currently built are in productive operation (three in my home and two in a colleagues home). Maybe my wife will not notice if I take the basement offline for a while
Regarding the performance: I haven't had a lost packet at the Carambola side, but once in a while I have a lost packet on the relais board side, as the curently operational software uses a soft SPI on the AVR and is sending out an acknowledge packet for each received command. As some macros send out 4 or 5 commands to the same relais board the high processor load on the AVR sometimes lead to a lost command. I have changed the software to use hardware SPI but haven't had the chance to update the production nodes, yet.
My bus load is currently rather low (as only relais are actuated at the moment). It will increase significantly once the LED ceiling is installed (with about 200 RGB(W) LEDs. Currently my maximum peak load is during node updates, where I get peak transfer rates of about 180 6-byte messages/second (at a 250 kBit bus) receiving and sending (the nodes do send an acknowledge for each received programming message), so the maximum bus load is about 20% but I suspect the node side to be the limiting factor (the bootloader uses also Soft-SPI).
Regarding the cleaner way: As I mentioned, the mcp2515 device driver can be changed to issue two SPI transfers per command (one write, one read), with cs_change set to false in the first transfer. This will keep the chip select asserted and therefore the transfer as a block. It might introduce some delay, though, so the quick and dirty version will probably be faster, also.
Best regards,
Martin