KeReleaseSpinLockFromDpcLevel(&Adapter->NdisMiniportBlock.Lock);
/* Call the deferred interrupt service handler for this adapter */
- (*Adapter->Miniport->Chars.HandleInterruptHandler)(
+ (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.HandleInterruptHandler)(
Adapter->NdisMiniportBlock.MiniportAdapterContext);
KeAcquireSpinLockAtDpcLevel(&Adapter->NdisMiniportBlock.Lock);
{
if ((!WasBusy) && (Adapter->WorkQueueHead))
{
- KeInsertQueueDpc(&Adapter->MiniportDpc, NULL, NULL);
+ KeInsertQueueDpc(&Adapter->NdisMiniportBlock.DeferredDpc, NULL, NULL);
}
else
{
/* re-enable the interrupt */
NDIS_DbgPrint(MAX_TRACE, ("re-enabling the interrupt\n"));
- if(Adapter->Miniport->Chars.EnableInterruptHandler)
- (*Adapter->Miniport->Chars.EnableInterruptHandler)(
+ if(Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.EnableInterruptHandler)
+ (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.EnableInterruptHandler)(
Adapter->NdisMiniportBlock.MiniportAdapterContext);
NDIS_DbgPrint(MAX_TRACE, ("Leaving.\n"));
{
BOOLEAN InterruptRecognized;
BOOLEAN QueueMiniportHandleInterrupt;
- PLOGICAL_ADAPTER Adapter = GET_LOGICAL_ADAPTER(ServiceContext);
+ PNDIS_MINIPORT_BLOCK Adapter = (PNDIS_MINIPORT_BLOCK)ServiceContext;
NDIS_DbgPrint(MAX_TRACE, ("Called. Adapter (0x%X)\n", Adapter));
- (*Adapter->Miniport->Chars.ISRHandler)(&InterruptRecognized,
+ (*Adapter->DriverHandle->MiniportCharacteristics.ISRHandler)(
+ &InterruptRecognized,
&QueueMiniportHandleInterrupt,
- Adapter->NdisMiniportBlock.MiniportAdapterContext);
+ Adapter->MiniportAdapterContext);
if (QueueMiniportHandleInterrupt)
{
NDIS_DbgPrint(MAX_TRACE, ("Queueing DPC.\n"));
- KeInsertQueueDpc(&Adapter->NdisMiniportBlock.Interrupt->InterruptDpc, NULL, NULL);
+ KeInsertQueueDpc(&Adapter->Interrupt->InterruptDpc, NULL, NULL);
}
NDIS_DbgPrint(MAX_TRACE, ("Leaving.\n"));
* - Called at IRQL = DISPATCH_LEVEL
*/
{
- PLOGICAL_ADAPTER Adapter = (PLOGICAL_ADAPTER)Context;
+ PNDIS_MINIPORT_BLOCK Adapter = (PNDIS_MINIPORT_BLOCK)Context;
NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
- Adapter->NdisMiniportBlock.MapRegisters[Adapter->NdisMiniportBlock.CurrentMapRegister].MapRegister = MapRegisterBase;
+ Adapter->MapRegisters[Adapter->CurrentMapRegister].MapRegister = MapRegisterBase;
NDIS_DbgPrint(MAX_TRACE, ("setting event and leaving.\n"));
- KeSetEvent(&Adapter->DmaEvent, 0, FALSE);
+ KeSetEvent(Adapter->AllocationEvent, 0, FALSE);
/* this is only the thing to do for busmaster NICs */
return DeallocateObjectKeepRegisters;
* map registers to 32.
*/
{
- DEVICE_DESCRIPTION Description;
- PDMA_ADAPTER AdapterObject = 0;
- UINT MapRegistersPerBaseRegister = 0;
- ULONG AvailableMapRegisters;
- NTSTATUS NtStatus;
- PLOGICAL_ADAPTER Adapter = 0;
- PDEVICE_OBJECT DeviceObject = 0;
- KIRQL OldIrql;
+ DEVICE_DESCRIPTION Description;
+ PDMA_ADAPTER AdapterObject = 0;
+ UINT MapRegistersPerBaseRegister = 0;
+ ULONG AvailableMapRegisters;
+ NTSTATUS NtStatus;
+ PNDIS_MINIPORT_BLOCK Adapter = 0;
+ PDEVICE_OBJECT DeviceObject = 0;
+ KEVENT AllocationEvent;
+ KIRQL OldIrql;
NDIS_DbgPrint(MAX_TRACE, ("called: Handle 0x%x, DmaChannel 0x%x, DmaSize 0x%x, BaseMapRegsNeeded: 0x%x, MaxBuffer: 0x%x.\n",
MiniportAdapterHandle, DmaChannel, DmaSize, BaseMapRegistersNeeded, MaximumBufferSize));
memset(&Description,0,sizeof(Description));
- Adapter = (PLOGICAL_ADAPTER)MiniportAdapterHandle;
+ Adapter = (PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle;
ASSERT(Adapter);
/* only bus masters may call this routine */
- ASSERT(Adapter->NdisMiniportBlock.Flags & NDIS_ATTRIBUTE_BUS_MASTER);
- if(!(Adapter->NdisMiniportBlock.Flags & NDIS_ATTRIBUTE_BUS_MASTER))
+ ASSERT(Adapter->Flags & NDIS_ATTRIBUTE_BUS_MASTER);
+ if(!(Adapter->Flags & NDIS_ATTRIBUTE_BUS_MASTER))
return NDIS_STATUS_SUCCESS;
- DeviceObject = Adapter->NdisMiniportBlock.DeviceObject;
+ DeviceObject = Adapter->DeviceObject;
- KeInitializeEvent(&Adapter->DmaEvent, NotificationEvent, FALSE);
- KeInitializeSpinLock(&Adapter->DmaLock);
+ KeInitializeEvent(&AllocationEvent, NotificationEvent, FALSE);
+ Adapter->AllocationEvent = &AllocationEvent;
/*
* map registers correlate to physical pages. ndis documents a
Description.Master = TRUE; /* implied by calling this function */
Description.ScatterGather = TRUE; /* XXX UNTRUE: All BM DMA are S/G (ms seems to do this) */
Description.Dma32BitAddresses = DmaSize;
- Description.BusNumber = Adapter->NdisMiniportBlock.BusNumber;
- Description.InterfaceType = Adapter->NdisMiniportBlock.BusType;
+ Description.BusNumber = Adapter->BusNumber;
+ Description.InterfaceType = Adapter->BusType;
Description.DmaChannel = DmaChannel;
Description.MaximumLength = MaximumBufferSize;
- if(Adapter->NdisMiniportBlock.AdapterType == Isa)
+ if(Adapter->AdapterType == Isa)
{
/* system dma */
if(DmaChannel < 4)
Description.DmaSpeed = Compatible;
}
- else if(Adapter->NdisMiniportBlock.AdapterType == PCIBus)
+ else if(Adapter->AdapterType == PCIBus)
{
if(DmaSize == NDIS_DMA_64BITS)
Description.Dma64BitAddresses = TRUE;
}
AdapterObject = IoGetDmaAdapter(
- Adapter->NdisMiniportBlock.PhysicalDeviceObject,
- &Description, &AvailableMapRegisters);
+ Adapter->PhysicalDeviceObject, &Description, &AvailableMapRegisters);
if(!AdapterObject)
{
return NDIS_STATUS_RESOURCES;
}
- Adapter->NdisMiniportBlock.SystemAdapterObject = AdapterObject;
+ Adapter->SystemAdapterObject = AdapterObject;
if(AvailableMapRegisters < MapRegistersPerBaseRegister)
{
}
/* allocate & zero space in the miniport block for the registers */
- Adapter->NdisMiniportBlock.MapRegisters = ExAllocatePool(NonPagedPool, BaseMapRegistersNeeded * sizeof(MAP_REGISTER_ENTRY));
- if(!Adapter->NdisMiniportBlock.MapRegisters)
+ Adapter->MapRegisters = ExAllocatePool(NonPagedPool, BaseMapRegistersNeeded * sizeof(MAP_REGISTER_ENTRY));
+ if(!Adapter->MapRegisters)
{
NDIS_DbgPrint(MIN_TRACE, ("insufficient resources.\n"));
return NDIS_STATUS_RESOURCES;
}
- memset(Adapter->NdisMiniportBlock.MapRegisters, 0, BaseMapRegistersNeeded * sizeof(MAP_REGISTER_ENTRY));
- Adapter->NdisMiniportBlock.BaseMapRegistersNeeded = (USHORT)BaseMapRegistersNeeded;
+ memset(Adapter->MapRegisters, 0, BaseMapRegistersNeeded * sizeof(MAP_REGISTER_ENTRY));
+ Adapter->BaseMapRegistersNeeded = (USHORT)BaseMapRegistersNeeded;
while(BaseMapRegistersNeeded)
{
NDIS_DbgPrint(MAX_TRACE, ("iterating, basemapregistersneeded = %d\n", BaseMapRegistersNeeded));
BaseMapRegistersNeeded--;
- Adapter->NdisMiniportBlock.CurrentMapRegister = (USHORT)BaseMapRegistersNeeded;
+ Adapter->CurrentMapRegister = (USHORT)BaseMapRegistersNeeded;
KeRaiseIrql(DISPATCH_LEVEL, &OldIrql);
{
NtStatus = AdapterObject->DmaOperations->AllocateAdapterChannel(
NDIS_DbgPrint(MAX_TRACE, ("waiting on event\n"));
- NtStatus = KeWaitForSingleObject(&Adapter->DmaEvent, Executive, KernelMode, FALSE, 0);
+ NtStatus = KeWaitForSingleObject(&AllocationEvent, Executive, KernelMode, FALSE, 0);
if(!NT_SUCCESS(NtStatus))
{
NDIS_DbgPrint(MAX_TRACE, ("resetting event\n"));
- KeResetEvent(&Adapter->DmaEvent);
+ KeResetEvent(&AllocationEvent);
}
NDIS_DbgPrint(MAX_TRACE, ("returning success\n"));
* - The caller supplies storage for the physical address array.
*/
{
- PLOGICAL_ADAPTER Adapter = 0;
+ PNDIS_MINIPORT_BLOCK Adapter;
PVOID CurrentVa;
ULONG TotalLength;
PHYSICAL_ADDRESS ReturnedAddress;
ASSERT(KeGetCurrentIrql() <= DISPATCH_LEVEL);
ASSERT(MiniportAdapterHandle && Buffer && PhysicalAddressArray && ArraySize);
- Adapter = (PLOGICAL_ADAPTER)MiniportAdapterHandle;
+ Adapter = (PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle;
CurrentVa = MmGetMdlVirtualAddress(Buffer);
TotalLength = MmGetMdlByteCount(Buffer);
{
ULONG Length = TotalLength;
- ReturnedAddress = Adapter->NdisMiniportBlock.SystemAdapterObject->DmaOperations->MapTransfer(
- Adapter->NdisMiniportBlock.SystemAdapterObject, Buffer,
- Adapter->NdisMiniportBlock.MapRegisters[PhysicalMapRegister].MapRegister,
+ ReturnedAddress = Adapter->SystemAdapterObject->DmaOperations->MapTransfer(
+ Adapter->SystemAdapterObject, Buffer,
+ Adapter->MapRegisters[PhysicalMapRegister].MapRegister,
CurrentVa, &Length, WriteToDevice);
- Adapter->NdisMiniportBlock.MapRegisters[PhysicalMapRegister].WriteToDevice = WriteToDevice;
+ Adapter->MapRegisters[PhysicalMapRegister].WriteToDevice = WriteToDevice;
PhysicalAddressArray[LoopCount].PhysicalAddress = ReturnedAddress;
PhysicalAddressArray[LoopCount].Length = Length;
* - May be called at IRQL <= DISPATCH_LEVEL
*/
{
- PLOGICAL_ADAPTER Adapter = 0;
+ PNDIS_MINIPORT_BLOCK Adapter;
VOID *CurrentVa;
ULONG Length;
ASSERT(KeGetCurrentIrql() <= DISPATCH_LEVEL);
ASSERT(MiniportAdapterHandle && Buffer);
- Adapter = (PLOGICAL_ADAPTER)MiniportAdapterHandle;
+ Adapter = (PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle;
CurrentVa = MmGetMdlVirtualAddress(Buffer);
Length = MmGetMdlByteCount(Buffer);
- Adapter->NdisMiniportBlock.SystemAdapterObject->DmaOperations->FlushAdapterBuffers(
- Adapter->NdisMiniportBlock.SystemAdapterObject, Buffer,
- Adapter->NdisMiniportBlock.MapRegisters[PhysicalMapRegister].MapRegister,
+ Adapter->SystemAdapterObject->DmaOperations->FlushAdapterBuffers(
+ Adapter->SystemAdapterObject, Buffer,
+ Adapter->MapRegisters[PhysicalMapRegister].MapRegister,
CurrentVa, Length,
- Adapter->NdisMiniportBlock.MapRegisters[PhysicalMapRegister].WriteToDevice);
+ Adapter->MapRegisters[PhysicalMapRegister].WriteToDevice);
}
\f
* NOTES:
*/
{
- KIRQL OldIrql;
- PLOGICAL_ADAPTER Adapter = (PLOGICAL_ADAPTER)MiniportAdapterHandle;
- PDMA_ADAPTER AdapterObject;
- UINT MapRegistersPerBaseRegister;
- UINT i;
+ KIRQL OldIrql;
+ PNDIS_MINIPORT_BLOCK Adapter = (PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle;
+ PDMA_ADAPTER AdapterObject;
+ UINT MapRegistersPerBaseRegister;
+ UINT i;
NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
ASSERT(Adapter);
/* only bus masters may call this routine */
- ASSERT(Adapter->NdisMiniportBlock.Flags & NDIS_ATTRIBUTE_BUS_MASTER);
- if(!(Adapter->NdisMiniportBlock.Flags & NDIS_ATTRIBUTE_BUS_MASTER) ||
- Adapter->NdisMiniportBlock.SystemAdapterObject == NULL)
+ ASSERT(Adapter->Flags & NDIS_ATTRIBUTE_BUS_MASTER);
+ if(!(Adapter->Flags & NDIS_ATTRIBUTE_BUS_MASTER) ||
+ Adapter->SystemAdapterObject == NULL)
return;
- MapRegistersPerBaseRegister = ((Adapter->NdisMiniportBlock.MaximumPhysicalMapping - 2) / PAGE_SIZE) + 2;
+ MapRegistersPerBaseRegister = ((Adapter->MaximumPhysicalMapping - 2) / PAGE_SIZE) + 2;
- AdapterObject = Adapter->NdisMiniportBlock.SystemAdapterObject;
+ AdapterObject = Adapter->SystemAdapterObject;
KeRaiseIrql(DISPATCH_LEVEL, &OldIrql);
{
- for(i = 0; i < Adapter->NdisMiniportBlock.BaseMapRegistersNeeded; i++)
+ for(i = 0; i < Adapter->BaseMapRegistersNeeded; i++)
{
AdapterObject->DmaOperations->FreeMapRegisters(
- Adapter->NdisMiniportBlock.SystemAdapterObject,
- Adapter->NdisMiniportBlock.MapRegisters[i].MapRegister,
+ Adapter->SystemAdapterObject,
+ Adapter->MapRegisters[i].MapRegister,
MapRegistersPerBaseRegister);
}
}
KeLowerIrql(OldIrql);
AdapterObject->DmaOperations->PutDmaAdapter(AdapterObject);
- Adapter->NdisMiniportBlock.SystemAdapterObject = NULL;
+ Adapter->SystemAdapterObject = NULL;
- ExFreePool(Adapter->NdisMiniportBlock.MapRegisters);
+ ExFreePool(Adapter->MapRegisters);
}
\f
ULONG MappedIRQ;
KIRQL DIrql;
KAFFINITY Affinity;
- PLOGICAL_ADAPTER Adapter = GET_LOGICAL_ADAPTER(MiniportAdapterHandle);
+ PNDIS_MINIPORT_BLOCK Adapter = (PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle;
NDIS_DbgPrint(MAX_TRACE, ("Called. InterruptVector (0x%X) InterruptLevel (0x%X) "
"SharedInterrupt (%d) InterruptMode (0x%X)\n",
Interrupt->SharedInterrupt = SharedInterrupt;
- Adapter->NdisMiniportBlock.Interrupt = Interrupt;
+ Adapter->Interrupt = Interrupt;
- MappedIRQ = HalGetInterruptVector(Adapter->NdisMiniportBlock.BusType,
- Adapter->NdisMiniportBlock.BusNumber,
+ MappedIRQ = HalGetInterruptVector(Adapter->BusType, Adapter->BusNumber,
InterruptLevel, InterruptVector, &DIrql,
&Affinity);
* Status of operation
*/
{
- PHYSICAL_ADDRESS PortAddress, TranslatedAddress;
- PLOGICAL_ADAPTER Adapter = GET_LOGICAL_ADAPTER(MiniportAdapterHandle);
- ULONG AddressSpace = 1; /* FIXME The HAL handles this wrong atm */
+ PHYSICAL_ADDRESS PortAddress, TranslatedAddress;
+ PNDIS_MINIPORT_BLOCK Adapter = (PNDIS_MINIPORT_BLOCK)MiniportAdapterHandle;
+ ULONG AddressSpace = 1; /* FIXME The HAL handles this wrong atm */
NDIS_DbgPrint(MAX_TRACE, ("Called - InitialPort 0x%x, NumberOfPorts 0x%x\n", InitialPort, NumberOfPorts));
NDIS_DbgPrint(MAX_TRACE, ("Translating address 0x%x 0x%x\n", PortAddress.u.HighPart, PortAddress.u.LowPart));
- if(!HalTranslateBusAddress(Adapter->NdisMiniportBlock.BusType,
- Adapter->NdisMiniportBlock.BusNumber,
+ if(!HalTranslateBusAddress(Adapter->BusType, Adapter->BusNumber,
PortAddress, &AddressSpace, &TranslatedAddress))
{
NDIS_DbgPrint(MIN_TRACE, ("Unable to translate address\n"));