From your code I see you configure CAN_E, CAN_F in the same manner. CAN_E is not used anymore in your code.
CAN_F is sending a message and you also wait on CAN_F for receive message on FIFO.
So if you want to self-receive frames then clear the SRXDIS bit in MCR register.
Moreover if using the RX FIFO you have to properly set the ID table. You are still using addresses for CAN_B module. Change ID table addresses to reflect desired module. For example
#define ID_Table0_CANF (*(vuint32_t* )(0xfffd40e0))
#define ID_Table1_CANF (*(vuint32_t* )(0xfffd40e4))
#define ID_Table2_CANF (*(vuint32_t* )(0xfffd40e8))
#define ID_Table3_CANF (*(vuint32_t* )(0xfffd40eC))
#define ID_Table4_CANF (*(vuint32_t* )(0xfffd40f0))
#define ID_Table5_CANF (*(vuint32_t* )(0xfffd40f4))
#define ID_Table6_CANF (*(vuint32_t* )(0xfffd40f8))
#define ID_Table7_CANF (*(vuint32_t* )(0xfffd40fc))
Petr