From 62cff38e78655844c423a71e796f7ab60fa8b61b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Wed, 7 Nov 2012 23:45:14 +0100 Subject: [PATCH] usb_asix: fix for 88772B * select RX header format type 1 for AX88772B. * should help with #8238 --- .../network/usb_asix/AX88772Device.cpp | 25 +++++-------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/src/add-ons/kernel/drivers/network/usb_asix/AX88772Device.cpp b/src/add-ons/kernel/drivers/network/usb_asix/AX88772Device.cpp index 728917fe661..8bb1e4b9a73 100644 --- a/src/add-ons/kernel/drivers/network/usb_asix/AX88772Device.cpp +++ b/src/add-ons/kernel/drivers/network/usb_asix/AX88772Device.cpp @@ -368,12 +368,6 @@ AX88772Device::_SetupAX88772() snooze(150000); - result = WriteRXControlRegister(0); - if (result != B_OK) { - TRACE_ALWAYS("Error of writing %#04x RX Control:%#010x\n", 0, result); - return result; - } - return B_OK; } @@ -449,12 +443,6 @@ AX88772Device::_SetupAX88772A() if (result != B_OK) return result; - result = WriteRXControlRegister(0); - if (result != B_OK) { - TRACE_ALWAYS("Error of writing %#04x RX Control:%#010x\n", 0, result); - return result; - } - fIPG[0] = 0x15; fIPG[1] = 0x16; fIPG[2] = 0x1A; @@ -481,12 +469,6 @@ AX88772Device::_SetupAX88772B() if (result != B_OK) return result; - result = WriteRXControlRegister(0); - if (result != B_OK) { - TRACE_ALWAYS("Error of writing %#04x RX Control:%#010x\n", 0, result); - return result; - } - fIPG[0] = 0x15; fIPG[1] = 0x16; fIPG[2] = 0x1A; @@ -513,6 +495,9 @@ AX88772Device::StartDevice() "%d bytes of %d written.\n", actualLength, sizeof(fIPG)); } + + uint16 rxcontrol = 0; + // AX88772B uses different maximum frame burst configuration. if (fDeviceInfo.fType == DeviceInfo::AX88772B) { result = gUSBModule->send_request(fDevice, @@ -526,9 +511,11 @@ AX88772Device::StartDevice() TRACE_ALWAYS("Error of writing frame burst:%#010x\n", result); return result; } + + rxcontrol = RXCTL_USB_MFB; } - uint16 rxcontrol = RXCTL_START | RXCTL_BROADCAST; + rxcontrol |= RXCTL_START | RXCTL_BROADCAST; result = WriteRXControlRegister(rxcontrol); if (result != B_OK) { TRACE_ALWAYS("Error of writing %#04x RX Control:%#010x\n",