MdeModulePkg/Bus/Usb/UsbNetwork/UsbRndis: Add USB RNDIS devices support
This driver provides UEFI driver for USB RNDIS device Signed-off-by: Richard Ho <richardho@ami.com> Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <quic_llindhol@quicinc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Michael Kubacki <mikuback@linux.microsoft.com> Cc: Zhiguang Liu <zhiguang.liu@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Hao A Wu <hao.a.wu@intel.com> Cc: Ray Ni <ray.ni@intel.com> Tested-by: Tinh Nguyen <tinhnguyen@os.amperecomputing.com> Acked-by: Hao A Wu <hao.a.wu@intel.com> Reviewed-by: Rebecca Cran <rebecca@bsdio.com> Reviewed-by: Tony Lo <tonylo@ami.com>
This commit is contained in:
266
MdeModulePkg/Bus/Usb/UsbNetwork/NetworkCommon/DriverBinding.h
Normal file
266
MdeModulePkg/Bus/Usb/UsbNetwork/NetworkCommon/DriverBinding.h
Normal file
@@ -0,0 +1,266 @@
|
||||
/** @file
|
||||
Header file for for USB network common driver
|
||||
|
||||
Copyright (c) 2023, American Megatrends International LLC. All rights reserved.<BR>
|
||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
**/
|
||||
|
||||
#ifndef DRIVER_BINDING_H_
|
||||
#define DRIVER_BINDING_H_
|
||||
|
||||
#include <Library/UefiDriverEntryPoint.h>
|
||||
#include <Library/UefiBootServicesTableLib.h>
|
||||
#include <Library/UefiLib.h>
|
||||
#include <Library/DevicePathLib.h>
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/MemoryAllocationLib.h>
|
||||
#include <Library/PcdLib.h>
|
||||
#include <Library/BaseMemoryLib.h>
|
||||
#include <Library/UefiUsbLib.h>
|
||||
#include <Protocol/UsbIo.h>
|
||||
#include <Protocol/NetworkInterfaceIdentifier.h>
|
||||
#include <Protocol/UsbEthernetProtocol.h>
|
||||
|
||||
#define NETWORK_COMMON_DRIVER_VERSION 1
|
||||
#define NETWORK_COMMON_POLLING_INTERVAL 0x10
|
||||
#define RX_BUFFER_COUNT 32
|
||||
#define TX_BUFFER_COUNT 32
|
||||
#define MEMORY_REQUIRE 0
|
||||
|
||||
#define UNDI_DEV_SIGNATURE SIGNATURE_32('u','n','d','i')
|
||||
#define UNDI_DEV_FROM_THIS(a) CR(a, NIC_DEVICE, NiiProtocol, UNDI_DEV_SIGNATURE)
|
||||
#define UNDI_DEV_FROM_NIC(a) CR(a, NIC_DEVICE, NicInfo, UNDI_DEV_SIGNATURE)
|
||||
|
||||
#pragma pack(1)
|
||||
typedef struct {
|
||||
UINT8 DestAddr[PXE_HWADDR_LEN_ETHER];
|
||||
UINT8 SrcAddr[PXE_HWADDR_LEN_ETHER];
|
||||
UINT16 Protocol;
|
||||
} ETHERNET_HEADER;
|
||||
#pragma pack()
|
||||
|
||||
typedef struct {
|
||||
UINTN Signature;
|
||||
EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL NiiProtocol;
|
||||
EFI_HANDLE DeviceHandle;
|
||||
EFI_DEVICE_PATH_PROTOCOL *BaseDevPath;
|
||||
EFI_DEVICE_PATH_PROTOCOL *DevPath;
|
||||
NIC_DATA NicInfo;
|
||||
VOID *ReceiveBuffer;
|
||||
} NIC_DEVICE;
|
||||
|
||||
typedef VOID (*API_FUNC)(
|
||||
PXE_CDB *,
|
||||
NIC_DATA *
|
||||
);
|
||||
|
||||
extern PXE_SW_UNDI *gPxe;
|
||||
extern NIC_DEVICE *gLanDeviceList[MAX_LAN_INTERFACE];
|
||||
extern EFI_COMPONENT_NAME2_PROTOCOL gNetworkCommonComponentName2;
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
NetworkCommonSupported (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
NetworkCommonDriverStart (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
NetworkCommonDriverStop (
|
||||
IN EFI_DRIVER_BINDING_PROTOCOL *This,
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN UINTN NumberOfChildren,
|
||||
IN EFI_HANDLE *ChildHandleBuffer
|
||||
);
|
||||
|
||||
VOID
|
||||
PxeStructInit (
|
||||
OUT PXE_SW_UNDI *PxeSw
|
||||
);
|
||||
|
||||
VOID
|
||||
UpdateNicNum (
|
||||
IN NIC_DATA *Nic,
|
||||
IN OUT PXE_SW_UNDI *PxeSw
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
UndiApiEntry (
|
||||
IN UINT64 Cdb
|
||||
);
|
||||
|
||||
UINTN
|
||||
MapIt (
|
||||
IN NIC_DATA *Nic,
|
||||
IN UINT64 MemAddr,
|
||||
IN UINT32 Size,
|
||||
IN UINT32 Direction,
|
||||
OUT UINT64 MappedAddr
|
||||
);
|
||||
|
||||
VOID
|
||||
UnMapIt (
|
||||
IN NIC_DATA *Nic,
|
||||
IN UINT64 MemAddr,
|
||||
IN UINT32 Size,
|
||||
IN UINT32 Direction,
|
||||
IN UINT64 MappedAddr
|
||||
);
|
||||
|
||||
VOID
|
||||
UndiGetState (
|
||||
IN PXE_CDB *Cdb,
|
||||
IN NIC_DATA *Nic
|
||||
);
|
||||
|
||||
VOID
|
||||
UndiStart (
|
||||
IN PXE_CDB *Cdb,
|
||||
IN NIC_DATA *Nic
|
||||
);
|
||||
|
||||
VOID
|
||||
UndiStop (
|
||||
IN PXE_CDB *Cdb,
|
||||
IN NIC_DATA *Nic
|
||||
);
|
||||
|
||||
VOID
|
||||
UndiGetInitInfo (
|
||||
IN PXE_CDB *Cdb,
|
||||
IN NIC_DATA *Nic
|
||||
);
|
||||
|
||||
VOID
|
||||
UndiGetConfigInfo (
|
||||
IN PXE_CDB *Cdb,
|
||||
IN NIC_DATA *Nic
|
||||
);
|
||||
|
||||
VOID
|
||||
UndiInitialize (
|
||||
IN PXE_CDB *Cdb,
|
||||
IN OUT NIC_DATA *Nic
|
||||
);
|
||||
|
||||
VOID
|
||||
UndiReset (
|
||||
IN PXE_CDB *Cdb,
|
||||
IN NIC_DATA *Nic
|
||||
);
|
||||
|
||||
VOID
|
||||
UndiShutdown (
|
||||
IN PXE_CDB *Cdb,
|
||||
IN OUT NIC_DATA *Nic
|
||||
);
|
||||
|
||||
VOID
|
||||
UndiInterruptEnable (
|
||||
IN PXE_CDB *Cdb,
|
||||
IN NIC_DATA *Nic
|
||||
);
|
||||
|
||||
VOID
|
||||
UndiReceiveFilter (
|
||||
IN PXE_CDB *Cdb,
|
||||
IN NIC_DATA *Nic
|
||||
);
|
||||
|
||||
VOID
|
||||
UndiStationAddress (
|
||||
IN PXE_CDB *Cdb,
|
||||
IN NIC_DATA *Nic
|
||||
);
|
||||
|
||||
VOID
|
||||
UndiStatistics (
|
||||
IN PXE_CDB *Cdb,
|
||||
IN NIC_DATA *Nic
|
||||
);
|
||||
|
||||
VOID
|
||||
UndiMcastIp2Mac (
|
||||
IN OUT PXE_CDB *Cdb,
|
||||
IN NIC_DATA *Nic
|
||||
);
|
||||
|
||||
VOID
|
||||
UndiNvData (
|
||||
IN PXE_CDB *Cdb,
|
||||
IN NIC_DATA *Nic
|
||||
);
|
||||
|
||||
VOID
|
||||
UndiGetStatus (
|
||||
IN PXE_CDB *Cdb,
|
||||
IN NIC_DATA *Nic
|
||||
);
|
||||
|
||||
VOID
|
||||
UndiFillHeader (
|
||||
IN PXE_CDB *Cdb,
|
||||
IN NIC_DATA *Nic
|
||||
);
|
||||
|
||||
VOID
|
||||
UndiTransmit (
|
||||
IN PXE_CDB *Cdb,
|
||||
IN NIC_DATA *Nic
|
||||
);
|
||||
|
||||
VOID
|
||||
UndiReceive (
|
||||
IN PXE_CDB *Cdb,
|
||||
IN NIC_DATA *Nic
|
||||
);
|
||||
|
||||
UINT16
|
||||
Initialize (
|
||||
IN PXE_CDB *Cdb,
|
||||
IN OUT NIC_DATA *Nic
|
||||
);
|
||||
|
||||
UINT16
|
||||
Transmit (
|
||||
IN PXE_CDB *Cdb,
|
||||
IN OUT NIC_DATA *Nic,
|
||||
IN UINT64 CpbAddr,
|
||||
IN UINT16 OpFlags
|
||||
);
|
||||
|
||||
UINT16
|
||||
Receive (
|
||||
IN PXE_CDB *Cdb,
|
||||
IN OUT NIC_DATA *Nic,
|
||||
IN UINT64 CpbAddr,
|
||||
IN OUT UINT64 DbAddr
|
||||
);
|
||||
|
||||
UINT16
|
||||
SetFilter (
|
||||
IN NIC_DATA *Nic,
|
||||
IN UINT16 SetFilter,
|
||||
IN UINT64 CpbAddr,
|
||||
IN UINT32 CpbSize
|
||||
);
|
||||
|
||||
UINT16
|
||||
Statistics (
|
||||
IN NIC_DATA *Nic,
|
||||
IN UINT64 DbAddr,
|
||||
IN UINT16 DbSize
|
||||
);
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user