diff --git a/src/add-ons/kernel/drivers/network/usb_asix/ASIXDevice.cpp b/src/add-ons/kernel/drivers/network/usb_asix/ASIXDevice.cpp index 19eb3580bd..0590d59383 100644 --- a/src/add-ons/kernel/drivers/network/usb_asix/ASIXDevice.cpp +++ b/src/add-ons/kernel/drivers/network/usb_asix/ASIXDevice.cpp @@ -226,9 +226,14 @@ ASIXDevice::Read(uint8 *buffer, size_t *numBytes) *numBytes = header.Length(); - if (fActualLengthRead - sizeof(TRXHeader) > header.Length()) { + // the device pushes packets 16bit aligned + if (fActualLengthRead - sizeof(TRXHeader) > header.Length() + + (header.Length() % 2)) { TRACE_ALWAYS("MISMATCH of the frame length: hdr %d; received:%d\n", header.Length(), fActualLengthRead - sizeof(TRXHeader)); + } else if (fActualLengthRead - sizeof(TRXHeader) < header.Length()) { + TRACE_ALWAYS("Error: received too little data: hdr %d; received:%d\n", + header.Length(), fActualLengthRead - sizeof(TRXHeader)); } } else { @@ -750,4 +755,3 @@ ASIXDevice::_NotifyCallback(void *cookie, int32 status, void *data, device->fNotifyBufferLength, _NotifyCallback, device); atomic_add(&device->fInsideNotify, -1); } -