WinCE iMX6 MCP2515 MessageBuffer Overflow

I am doing stress test of MCP2515 on Colibri iMX6 WinCE7. Message buffer overflow when receiving around 10k ~ 20k CAN data frames with 10ms gaps between each frames. No following frame can be read when buffer overflow happens.

CAN_MCP Warning: .\src\can_mcp2515.cpp, 164: SW MessageBuffer Overflow
Can Error: ReadCanMessageBuffer -  Buffer overflow detected
Unknown: DEBUGCHK failed in file .\src\msgbuffer.cpp at line 140
Can Error: ReadCanMessageBuffer -  Buffer overflow detected
Unknown: DEBUGCHK failed in file .\src\msgbuffer.cpp at line 140
Can Error: ReadCanMessageBuffer -  Buffer overflow detected
Unknown: DEBUGCHK failed in file .\src\msgbuffer.cpp at line 140
Can Error: ReadCanMessageBuffer -  Buffer overflow detected

USB2CAN adapter on PC is used to send frames to imx6 MCP2515. Can_Demo is the application, there is an infinite loop in CanRxProcess

DWORD CanRxProcess(HANDLE hCan)
{
    INT i;
    tCanMsg canBuf = {0};
    BYTE data[8] = {0};   // Rx buffer
	DWORD busStatus;
	INT j =0;


    // Configure timeout to 5 sec, by default it is set to 1 sec
    Can_SetConfigInt(hCan, L"Timeout", 5000, StoreVolatile);    // optional

    // 4. Use CAN
	while(1)
	{
		canBuf.dataLen = 8;
		if (Can_Read(hCan, &canBuf))
		{
			j++;
			printf("\nCAN Receive: Frame ID = 0x%x, len %d, COUNT: %d\n", canBuf.id, canBuf.dataLen, j);
		
			if(canBuf.id == 0x11)
			{

			}
			else
			{
				//return 0;
				printf("\nCAN Receive error, other ID found.\r\n");
				printf("\nCAN Receive: Frame ID = 0x%x, len %d\n", canBuf.id, canBuf.dataLen);
				for (i = 0; i < canBuf.dataLen; i++)
				{
					printf(" %d", canBuf.data[i]);
				}

			}
			
		}
		else
		{
			printf("\nCAN Receive error\r\n");
			Can_GetConfigInt(hCan, L"BusStatus", &busStatus);
			printf("BusStatus %x\n",busStatus);
		}

	}

    return 0;
}