One observation we are seeing is even if IMASK (0xFFFC0028) is cleared, the Rx interrupts are still coming to core. Is this possible? Or are we missing some step in disabling the interrupts?
if you have set IMASK register to 0, interrupts will be still signaled in IFLAG register. But if IMASK is cleared, any interrupts will not be executed even if interrupt handler is created and correctly set.
could you please provide me any simple project which demonstrates the behavior?
If the whole IMASK is set to zero for appropriate CAN module, it is not possible that interrupt handler for any message buffer is executed.
I hope you do not POLL any flag from IFLAG register. Flags for appropriate message buffer in IFLAG register will be set even if IMASK register is set to 0.