X-Git-Url: http://git.jankratochvil.net/?a=blobdiff_plain;f=drivers%2Fnet%2Fndis%2Fndis%2Fhardware.c;h=b27ce77bccd0d5bcfc6a87e1b65f6b47e8ce47de;hb=a3df8bf1429570e0bd6c6428f6ed80073578cf4b;hp=8fcbb80e46b6783dd427bd72c61c458c70f74f5f;hpb=7c0db166f81fbe8c8b913d7f26048e337d383605;p=reactos.git diff --git a/drivers/net/ndis/ndis/hardware.c b/drivers/net/ndis/ndis/hardware.c index 8fcbb80..b27ce77 100644 --- a/drivers/net/ndis/ndis/hardware.c +++ b/drivers/net/ndis/ndis/hardware.c @@ -4,12 +4,18 @@ * FILE: ndis/hardware.c * PURPOSE: Hardware related routines * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net) + * Vizzini (vizzini@plasmic.com) * REVISIONS: * CSH 01/08-2000 Created + * 8/25/2003 Vizzini - NDIS4/5 and PnP additions */ #include +#include +/* + * @implemented + */ ULONG EXPORT NdisImmediateReadPciSlotInformation( @@ -19,12 +25,18 @@ NdisImmediateReadPciSlotInformation( IN PVOID Buffer, IN ULONG Length) { - UNIMPLEMENTED - - return 0; + return HalGetBusDataByOffset (PCIConfiguration, + 0, /* FIXME */ + SlotNumber, + Buffer, + Offset, + Length); } +/* + * @implemented + */ ULONG EXPORT NdisImmediateWritePciSlotInformation( @@ -34,25 +46,58 @@ NdisImmediateWritePciSlotInformation( IN PVOID Buffer, IN ULONG Length) { - UNIMPLEMENTED - - return 0; + return HalSetBusDataByOffset (PCIConfiguration, + 0, /* FIXME */ + SlotNumber, + Buffer, + Offset, + Length); } +/* + * @implemented + */ NDIS_STATUS EXPORT NdisMPciAssignResources( IN NDIS_HANDLE MiniportHandle, IN ULONG SlotNumber, OUT PNDIS_RESOURCE_LIST *AssignedResources) +/* + * NOTES: + * - I think this is fundamentally broken + */ { - UNIMPLEMENTED - - return NDIS_STATUS_FAILURE; + PCM_RESOURCE_LIST ResourceList; + NTSTATUS Status; + PLOGICAL_ADAPTER Adapter = (PLOGICAL_ADAPTER)MiniportHandle; + + ResourceList = NULL; + Status = HalAssignSlotResources (Adapter->Miniport->RegistryPath, + 0, + Adapter->Miniport->DriverObject, + 0, + PCIBus, + Adapter->BusNumber, + SlotNumber, + &ResourceList); + if (!NT_SUCCESS (Status)) + { + *AssignedResources = NULL; + return NDIS_STATUS_FAILURE; + } + + *AssignedResources = + (PNDIS_RESOURCE_LIST)&ResourceList->List[0].PartialResourceList; + + return NDIS_STATUS_SUCCESS; } +/* + * @unimplemented + */ VOID EXPORT NdisMQueryAdapterResources( @@ -65,18 +110,27 @@ NdisMQueryAdapterResources( } +/* + * @implemented + */ NDIS_STATUS EXPORT NdisQueryMapRegisterCount( IN NDIS_INTERFACE_TYPE BusType, OUT PUINT MapRegisterCount) +/* + * On X86 (and all other current hardware), map registers aren't real hardware, + * and there is no real limit to the number that can be allocated. + * As such, we do what microsoft does on the x86 hals and return as follows + */ { - UNIMPLEMENTED - - return NDIS_STATUS_FAILURE; + return NDIS_STATUS_NOT_SUPPORTED; } +/* + * @unimplemented + */ VOID EXPORT NdisReadEisaSlotInformation( @@ -89,6 +143,9 @@ NdisReadEisaSlotInformation( } +/* + * @unimplemented + */ VOID EXPORT NdisReadEisaSlotInformationEx( @@ -102,6 +159,9 @@ NdisReadEisaSlotInformationEx( } +/* + * @implemented + */ ULONG EXPORT NdisReadPciSlotInformation( @@ -111,12 +171,18 @@ NdisReadPciSlotInformation( IN PVOID Buffer, IN ULONG Length) { - UNIMPLEMENTED - - return 0; + return HalGetBusDataByOffset (PCIConfiguration, + 0, /* FIXME */ + SlotNumber, + Buffer, + Offset, + Length); } +/* + * @implemented + */ ULONG EXPORT NdisWritePciSlotInformation( @@ -126,9 +192,12 @@ NdisWritePciSlotInformation( IN PVOID Buffer, IN ULONG Length) { - UNIMPLEMENTED - - return 0; + return HalSetBusDataByOffset (PCIConfiguration, + 0, /* FIXME */ + SlotNumber, + Buffer, + Offset, + Length); } /* EOF */