Merge pull request #2840 from zeroZshadow/master
Ignore all writes to BBA_TXFIFOCNT
This commit is contained in:
commit
4baaa3755e
|
@ -248,7 +248,7 @@ bool CEXIETHERNET::SendFrame(u8 *frame, u32 size)
|
|||
OVERLAPPED overlap;
|
||||
ZeroMemory(&overlap, sizeof(overlap));
|
||||
|
||||
//WriteFile will always return false because the TAP handle is async
|
||||
// WriteFile will always return false because the TAP handle is async
|
||||
WriteFile(mHAdapter, frame, size, NULL, &overlap);
|
||||
|
||||
DWORD res = GetLastError();
|
||||
|
@ -304,19 +304,25 @@ bool CEXIETHERNET::RecvStart()
|
|||
DWORD res = ReadFile(mHAdapter, mRecvBuffer, BBA_RECV_SIZE,
|
||||
(LPDWORD)&mRecvBufferLength, &mReadOverlapped);
|
||||
|
||||
if (!res && (GetLastError() != ERROR_IO_PENDING))
|
||||
if (res)
|
||||
{
|
||||
// error occurred
|
||||
// Since the read is synchronous here, complete immediately
|
||||
RecvHandlePacket();
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
DWORD err = GetLastError();
|
||||
if (err == ERROR_IO_PENDING)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// Unexpected error
|
||||
ERROR_LOG(SP1, "Failed to recieve packet with error 0x%X", err);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (res)
|
||||
{
|
||||
// Completed immediately
|
||||
RecvHandlePacket();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void CEXIETHERNET::RecvStop()
|
||||
|
@ -326,6 +332,9 @@ void CEXIETHERNET::RecvStop()
|
|||
|
||||
UnregisterWaitEx(mHReadWait, INVALID_HANDLE_VALUE);
|
||||
|
||||
CloseHandle(mHRecvEvent);
|
||||
mHRecvEvent = INVALID_HANDLE_VALUE;
|
||||
if (mHRecvEvent != INVALID_HANDLE_VALUE)
|
||||
{
|
||||
CloseHandle(mHRecvEvent);
|
||||
mHRecvEvent = INVALID_HANDLE_VALUE;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -358,6 +358,12 @@ void CEXIETHERNET::MXCommandHandler(u32 data, u32 size)
|
|||
data &= (data & 0xff) ^ 0xff;
|
||||
goto write_to_register;
|
||||
|
||||
case BBA_TXFIFOCNT:
|
||||
case BBA_TXFIFOCNT+1:
|
||||
// Ignore all writes to BBA_TXFIFOCNT
|
||||
transfer.address += size;
|
||||
return;
|
||||
|
||||
write_to_register:
|
||||
default:
|
||||
for (int i = size - 1; i >= 0; i--)
|
||||
|
|
Loading…
Reference in New Issue