mirror of
https://github.com/reactos/reactos.git
synced 2026-07-05 11:44:42 +08:00
- Merge aicom-network-fixes up to r36621
svn path=/trunk/; revision=36622
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user