mirror of
https://github.com/reactos/reactos.git
synced 2025-04-26 00:20:34 +00:00
- Implement NdisMRegisterDmaChannel and NdisMInitializeScatterGatherDma
svn path=/trunk/; revision=40109
This commit is contained in:
parent
cea9babf80
commit
ac73f877b3
2 changed files with 89 additions and 25 deletions
|
@ -722,7 +722,7 @@ NdisMGetDmaAlignment(
|
|||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
* @implemented
|
||||
*/
|
||||
NDIS_STATUS
|
||||
EXPORT
|
||||
|
@ -734,9 +734,44 @@ NdisMRegisterDmaChannel(
|
|||
IN PNDIS_DMA_DESCRIPTION DmaDescription,
|
||||
IN ULONG MaximumLength)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
PLOGICAL_ADAPTER Adapter = (PLOGICAL_ADAPTER)MiniportAdapterHandle;
|
||||
DEVICE_DESCRIPTION DeviceDesc;
|
||||
ULONG MapRegisters;
|
||||
|
||||
return NDIS_STATUS_FAILURE;
|
||||
NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
|
||||
|
||||
if (Adapter->NdisMiniportBlock.SystemAdapterObject)
|
||||
{
|
||||
NDIS_DbgPrint(MIN_TRACE,("Using existing DMA adapter\n"));
|
||||
*MiniportDmaHandle = &Adapter->NdisMiniportBlock;
|
||||
return NDIS_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
RtlZeroMemory(&DeviceDesc, sizeof(DEVICE_DESCRIPTION));
|
||||
|
||||
DeviceDesc.Version = DEVICE_DESCRIPTION_VERSION;
|
||||
DeviceDesc.Master = (Adapter->NdisMiniportBlock.Flags & NDIS_ATTRIBUTE_BUS_MASTER);
|
||||
DeviceDesc.ScatterGather = FALSE; //Is this correct?
|
||||
DeviceDesc.DemandMode = DmaDescription->DemandMode;
|
||||
DeviceDesc.AutoInitialize = DmaDescription->AutoInitialize;
|
||||
DeviceDesc.Dma32BitAddresses = Dma32BitAddresses;
|
||||
DeviceDesc.Dma64BitAddresses = !Dma32BitAddresses; //Is this correct?
|
||||
DeviceDesc.BusNumber = Adapter->NdisMiniportBlock.BusNumber;
|
||||
DeviceDesc.DmaChannel = DmaDescription->DmaChannel;
|
||||
DeviceDesc.InterfaceType = Adapter->NdisMiniportBlock.BusType;
|
||||
DeviceDesc.DmaWidth = DmaDescription->DmaWidth;
|
||||
DeviceDesc.DmaSpeed = DmaDescription->DmaSpeed;
|
||||
DeviceDesc.MaximumLength = MaximumLength;
|
||||
|
||||
Adapter->NdisMiniportBlock.SystemAdapterObject =
|
||||
IoGetDmaAdapter(Adapter->NdisMiniportBlock.PhysicalDeviceObject, &DeviceDesc, &MapRegisters);
|
||||
|
||||
if (!Adapter->NdisMiniportBlock.SystemAdapterObject)
|
||||
return NDIS_STATUS_RESOURCES;
|
||||
|
||||
*MiniportDmaHandle = &Adapter->NdisMiniportBlock;
|
||||
|
||||
return NDIS_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
|
@ -922,5 +957,56 @@ NdisMUnmapIoSpace(
|
|||
MmUnmapIoSpace(VirtualAddress, Length);
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
NDIS_STATUS
|
||||
EXPORT
|
||||
NdisMInitializeScatterGatherDma(
|
||||
IN NDIS_HANDLE MiniportAdapterHandle,
|
||||
IN BOOLEAN Dma64BitAddresses,
|
||||
IN ULONG MaximumPhysicalMapping)
|
||||
/*
|
||||
* FUNCTION:
|
||||
* ARGUMENTS:
|
||||
* NOTES:
|
||||
* NDIS 5.0
|
||||
*/
|
||||
{
|
||||
PLOGICAL_ADAPTER Adapter = (PLOGICAL_ADAPTER)MiniportAdapterHandle;
|
||||
ULONG MapRegisters;
|
||||
DEVICE_DESCRIPTION DeviceDesc;
|
||||
|
||||
NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
|
||||
|
||||
if (!(Adapter->NdisMiniportBlock.Flags & NDIS_ATTRIBUTE_BUS_MASTER))
|
||||
return NDIS_STATUS_NOT_SUPPORTED;
|
||||
|
||||
if (Adapter->NdisMiniportBlock.SystemAdapterObject)
|
||||
{
|
||||
NDIS_DbgPrint(MIN_TRACE,("Using existing DMA adapter\n"));
|
||||
return NDIS_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
RtlZeroMemory(&DeviceDesc, sizeof(DEVICE_DESCRIPTION));
|
||||
|
||||
DeviceDesc.Version = DEVICE_DESCRIPTION_VERSION;
|
||||
DeviceDesc.Master = TRUE;
|
||||
DeviceDesc.ScatterGather = TRUE;
|
||||
DeviceDesc.Dma32BitAddresses = !Dma64BitAddresses;
|
||||
DeviceDesc.Dma64BitAddresses = Dma64BitAddresses;
|
||||
DeviceDesc.BusNumber = Adapter->NdisMiniportBlock.BusNumber;
|
||||
DeviceDesc.InterfaceType = Adapter->NdisMiniportBlock.BusType;
|
||||
DeviceDesc.MaximumLength = MaximumPhysicalMapping;
|
||||
|
||||
Adapter->NdisMiniportBlock.SystemAdapterObject =
|
||||
IoGetDmaAdapter(Adapter->NdisMiniportBlock.PhysicalDeviceObject, &DeviceDesc, &MapRegisters);
|
||||
|
||||
if (!Adapter->NdisMiniportBlock.SystemAdapterObject)
|
||||
return NDIS_STATUS_RESOURCES;
|
||||
|
||||
return NDIS_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
||||
|
|
|
@ -670,28 +670,6 @@ NdisMGetDeviceProperty(
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
NDIS_STATUS
|
||||
EXPORT
|
||||
NdisMInitializeScatterGatherDma(
|
||||
IN NDIS_HANDLE MiniportAdapterHandle,
|
||||
IN BOOLEAN Dma64BitAddresses,
|
||||
IN ULONG MaximumPhysicalMapping)
|
||||
/*
|
||||
* FUNCTION:
|
||||
* ARGUMENTS:
|
||||
* NOTES:
|
||||
* NDIS 5.0
|
||||
*/
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return NDIS_STATUS_FAILURE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
|
|
Loading…
Reference in a new issue