I have two 8mhz hardware spi Master/Slave connected 26FK80 pics running at 64mhz cpu speed. All good.
I am currently using SS Mode for the SPI.

The PIC's both receive and transmit CAN packet data at 500kbps on the hardware CAN modules after exchanging it over SPI.
The CAN Rx/Tx side all works fine I have used it a lot.

So in essence .... Let's just think about data, it could be ESUART bytes or CAN packets....

PIC1 receives a CAN/ESUART packet, let's say 11 bytes including ID etc, it is sent to PIC2 over the SPI bus, which then sends it out on the PIC2 CAN/ESUART module.
PIC2 receives a CAN/ESUART packet, let's say 11 bytes including ID etc, it is sent to PIC1 over the SPI bus, which then sends it out on the PIC1 CAN/ESUART module.

This is a man in the middle type device.

Now they don't both receive the same amount of data/bytes/packets at the same time.
As and when data is received on the two respective CAN busses, it needs transferring to the other PIC for onward transmission.

So my question is this.

How best to organise handling the data handling/exchange and onward transmission?

Polling ESUART/CAN Flags?
Interrupts?
Different SPI Mode?

I have had this working using a crude I/O PIN handshaking,
where the Master PIC initiates an SPI exchange when the slave signals it has data,
or when the Master itself has data and the slave signals is ready to receive it.

I am sure there is a brilliant/better idea I haven't thought of.. Thanks Peter