- Merge aicom-network-fixes up to r36621

svn path=/trunk/; revision=36622
This commit is contained in:
Cameron Gutman
2008-10-02 09:42:08 +00:00
parent 0a6956246f
commit fa71aedefe
2 changed files with 37 additions and 27 deletions

View File

@@ -57,20 +57,20 @@ NdisImmediateWritePciSlotInformation(
NDIS_STATUS
EXPORT
NdisMPciAssignResources(
IN NDIS_HANDLE MiniportHandle,
IN NDIS_HANDLE MiniportAdapterHandle,
IN ULONG SlotNumber,
OUT PNDIS_RESOURCE_LIST *AssignedResources)
{
PNDIS_MINIPORT_BLOCK MiniportBlock = (PNDIS_MINIPORT_BLOCK)MiniportHandle;
PLOGICAL_ADAPTER Adapter = MiniportAdapterHandle;
if (MiniportBlock->BusType != PCIBus ||
MiniportBlock->AllocatedResources == NULL)
if (Adapter->NdisMiniportBlock.BusType != PCIBus ||
Adapter->NdisMiniportBlock.AllocatedResources == NULL)
{
*AssignedResources = NULL;
return NDIS_STATUS_FAILURE;
}
*AssignedResources = &MiniportBlock->AllocatedResources->List[0].PartialResourceList;
*AssignedResources = &Adapter->NdisMiniportBlock.AllocatedResources->List[0].PartialResourceList;
return NDIS_STATUS_SUCCESS;
}
@@ -99,7 +99,7 @@ NdisMQueryAdapterResources(
*/
{
PNDIS_WRAPPER_CONTEXT WrapperContext = (PNDIS_WRAPPER_CONTEXT)WrapperConfigurationContext;
PNDIS_MINIPORT_BLOCK MiniportBlock = WrapperContext->DeviceObject->DeviceExtension;
PLOGICAL_ADAPTER Adapter = WrapperContext->DeviceObject->DeviceExtension;
ULONG ResourceListSize;
PAGED_CODE();
@@ -107,7 +107,7 @@ NdisMQueryAdapterResources(
NDIS_DbgPrint(MAX_TRACE, ("Called\n"));
if (MiniportBlock->AllocatedResources == NULL)
if (Adapter->NdisMiniportBlock.AllocatedResources == NULL)
{
NDIS_DbgPrint(MIN_TRACE, ("No allocated resources!\n"));
*Status = NDIS_STATUS_FAILURE;
@@ -116,13 +116,13 @@ NdisMQueryAdapterResources(
ResourceListSize =
FIELD_OFFSET(CM_PARTIAL_RESOURCE_LIST, PartialDescriptors) +
MiniportBlock->AllocatedResources->List[0].PartialResourceList.Count *
Adapter->NdisMiniportBlock.AllocatedResources->List[0].PartialResourceList.Count *
sizeof(CM_PARTIAL_RESOURCE_DESCRIPTOR);
if (*BufferSize >= ResourceListSize)
{
RtlCopyMemory(ResourceList,
&MiniportBlock->AllocatedResources->List[0].PartialResourceList,
&Adapter->NdisMiniportBlock.AllocatedResources->List[0].PartialResourceList,
ResourceListSize);
*BufferSize = ResourceListSize;
*Status = NDIS_STATUS_SUCCESS;
@@ -196,10 +196,10 @@ NdisReadPciSlotInformation(
IN PVOID Buffer,
IN ULONG Length)
{
PNDIS_MINIPORT_BLOCK Adapter = (PNDIS_MINIPORT_BLOCK)NdisAdapterHandle;
PLOGICAL_ADAPTER Adapter = NdisAdapterHandle;
/* Slot number is ignored since W2K for all NDIS drivers. */
return HalGetBusDataByOffset(PCIConfiguration,
Adapter->BusNumber, Adapter->SlotNumber,
Adapter->NdisMiniportBlock.BusNumber, Adapter->NdisMiniportBlock.SlotNumber,
Buffer, Offset, Length);
}
@@ -216,10 +216,10 @@ NdisWritePciSlotInformation(
IN PVOID Buffer,
IN ULONG Length)
{
PNDIS_MINIPORT_BLOCK Adapter = (PNDIS_MINIPORT_BLOCK)NdisAdapterHandle;
PLOGICAL_ADAPTER Adapter = NdisAdapterHandle;
/* Slot number is ignored since W2K for all NDIS drivers. */
return HalSetBusDataByOffset(PCIConfiguration,
Adapter->BusNumber, Adapter->SlotNumber,
Adapter->NdisMiniportBlock.BusNumber, Adapter->NdisMiniportBlock.SlotNumber,
Buffer, Offset, Length);
}

View File

@@ -60,22 +60,31 @@ BOOLEAN NTAPI ServiceRoutine(
* TRUE if a miniport controlled device generated the interrupt
*/
{
BOOLEAN InterruptRecognized;
BOOLEAN QueueMiniportHandleInterrupt;
PNDIS_MINIPORT_BLOCK Adapter = (PNDIS_MINIPORT_BLOCK)ServiceContext;
BOOLEAN InterruptRecognized = FALSE;
BOOLEAN QueueMiniportHandleInterrupt = FALSE;
PLOGICAL_ADAPTER Adapter = ServiceContext;
NDIS_DbgPrint(MAX_TRACE, ("Called. Adapter (0x%X)\n", Adapter));
(*Adapter->DriverHandle->MiniportCharacteristics.ISRHandler)(
&InterruptRecognized,
&QueueMiniportHandleInterrupt,
Adapter->MiniportAdapterContext);
if (Adapter->NdisMiniportBlock.Interrupt->IsrRequested) {
(*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.ISRHandler)(
&InterruptRecognized,
&QueueMiniportHandleInterrupt,
Adapter->NdisMiniportBlock.MiniportAdapterContext);
} else if (Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.DisableInterruptHandler) {
(*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.DisableInterruptHandler)(
Adapter->NdisMiniportBlock.MiniportAdapterContext);
QueueMiniportHandleInterrupt = TRUE;
InterruptRecognized = TRUE;
}
if (QueueMiniportHandleInterrupt)
{
NDIS_DbgPrint(MAX_TRACE, ("Queueing DPC.\n"));
KeInsertQueueDpc(&Adapter->Interrupt->InterruptDpc, NULL, NULL);
}
{
NDIS_DbgPrint(MAX_TRACE, ("Queuing DPC.\n"));
KeInsertQueueDpc(&Adapter->NdisMiniportBlock.Interrupt->InterruptDpc, NULL, NULL);
}
NDIS_DbgPrint(MAX_TRACE, ("Leaving.\n"));
@@ -207,15 +216,15 @@ IO_ALLOCATION_ACTION NTAPI NdisMapRegisterCallback (
* - Called at IRQL = DISPATCH_LEVEL
*/
{
PNDIS_MINIPORT_BLOCK Adapter = (PNDIS_MINIPORT_BLOCK)Context;
PLOGICAL_ADAPTER Adapter = Context;
NDIS_DbgPrint(MAX_TRACE, ("Called.\n"));
Adapter->MapRegisters[Adapter->CurrentMapRegister].MapRegister = MapRegisterBase;
Adapter->NdisMiniportBlock.MapRegisters[Adapter->NdisMiniportBlock.CurrentMapRegister].MapRegister = MapRegisterBase;
NDIS_DbgPrint(MAX_TRACE, ("setting event and leaving.\n"));
KeSetEvent(Adapter->AllocationEvent, 0, FALSE);
KeSetEvent(Adapter->NdisMiniportBlock.AllocationEvent, 0, FALSE);
/* this is only the thing to do for busmaster NICs */
return DeallocateObjectKeepRegisters;
@@ -767,6 +776,7 @@ NdisMRegisterInterrupt(
KeInitializeEvent(&Interrupt->DpcsCompletedEvent, NotificationEvent, FALSE);
Interrupt->SharedInterrupt = SharedInterrupt;
Interrupt->IsrRequested = RequestIsr;
Adapter->NdisMiniportBlock.Interrupt = Interrupt;