@@ -625,15 +625,18 @@ Ax88772Reset (
if (EFI_ERROR(Status)) goto err;
- SetupMsg.RequestType = USB_REQ_TYPE_VENDOR
- | USB_TARGET_DEVICE;
- SetupMsg.Request = CMD_RXQTC;
- SetupMsg.Value = 0x8000;
- SetupMsg.Index = 0x8001;
- SetupMsg.Length = 0;
- Status = Ax88772UsbCommand ( pNicDevice,
+ if (pNicDevice->Flags != FLAG_TYPE_AX88772) {
+ SetupMsg.RequestType = USB_REQ_TYPE_VENDOR
+ | USB_TARGET_DEVICE;
+ SetupMsg.Request = CMD_RXQTC;
+ SetupMsg.Value = 0x8000;
+ SetupMsg.Index = 0x8001;
+ SetupMsg.Length = 0;
+ Status = Ax88772UsbCommand ( pNicDevice,
&SetupMsg,
- NULL );
+ NULL );
+ }
+
err:
return Status;
}
@@ -404,7 +404,9 @@ typedef struct {
RX_PKT * pFirstFill;
UINTN PktCntInQueue;
UINT8 * pBulkInBuff;
-
+
+ INT32 Flags;
+
} NIC_DEVICE;
#define DEV_FROM_SIMPLE_NETWORK(a) CR (a, NIC_DEVICE, SimpleNetwork, DEV_SIGNATURE) ///< Locate NIC_DEVICE from Simple Network Protocol
@@ -124,6 +124,8 @@ DriverStart (
UINTN LengthInBytes;
EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath = NULL;
MAC_ADDR_DEVICE_PATH MacDeviceNode;
+ EFI_USB_DEVICE_DESCRIPTOR Device;
+ UINT32 Index;
//
// Allocate the device structure
@@ -178,6 +180,41 @@ DriverStart (
goto EXIT;
}
+ Status = pNicDevice->pUsbIo->UsbGetDeviceDescriptor ( pNicDevice->pUsbIo, &Device );
+ if (EFI_ERROR ( Status )) {
+ gBS->CloseProtocol (
+ Controller,
+ &gEfiUsbIoProtocolGuid,
+ pThis->DriverBindingHandle,
+ Controller
+ );
+ gBS->FreePool ( pNicDevice );
+ goto EXIT;
+ } else {
+ //
+ // Validate the adapter
+ //
+ for (Index = 0; ASIX_DONGLES[Index].VendorId != 0; Index++) {
+ if (ASIX_DONGLES[Index].VendorId == Device.IdVendor &&
+ ASIX_DONGLES[Index].ProductId == Device.IdProduct) {
+ break;
+ }
+ }
+
+ if (ASIX_DONGLES[Index].VendorId == 0) {
+ gBS->CloseProtocol (
+ Controller,
+ &gEfiUsbIoProtocolGuid,
+ pThis->DriverBindingHandle,
+ Controller
+ );
+ gBS->FreePool ( pNicDevice );
+ goto EXIT;
+ }
+
+ pNicDevice->Flags = ASIX_DONGLES[Index].Flags;
+ }
+
//
// Set Device Path
//
The USB command CMD_RXQTC ("RX Queue Cascade Threshold Control") tries to access the register and is always failing when using the Apple Ethernet adapter. It is fixed by checking flag before sending command. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Shivamurthy Shastri <shivamurthy.shastri@linaro.org> --- .../Bus/Usb/UsbNetworking/Ax88772b/Ax88772.c | 19 ++++++----- .../Bus/Usb/UsbNetworking/Ax88772b/Ax88772.h | 4 ++- .../Bus/Usb/UsbNetworking/Ax88772b/DriverBinding.c | 37 ++++++++++++++++++++++ 3 files changed, 51 insertions(+), 9 deletions(-) -- 1.9.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel