- Merge aicom-network-fixes up to r36633

- tcpip's ProtocolStatus routine now gets called if a media status change occurs
 - This would fix a problem in which tcpip doesn't recognize the disconnect of an adapter but the ProtocolStatus handler in tcpip isn't implemented yet so the bug remains

svn path=/trunk/; revision=36634
This commit is contained in:
Cameron Gutman 2008-10-03 18:51:33 +00:00
parent bfbc5ffd7d
commit cd9b7fd8a1

View file

@ -1052,7 +1052,29 @@ MiniStatus(
IN PVOID StatusBuffer,
IN UINT StatusBufferSize)
{
UNIMPLEMENTED
PLOGICAL_ADAPTER Adapter = MiniportHandle;
PLIST_ENTRY CurrentEntry;
PADAPTER_BINDING AdapterBinding;
KIRQL OldIrql;
KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql);
CurrentEntry = Adapter->ProtocolListHead.Flink;
while (CurrentEntry != &Adapter->ProtocolListHead)
{
AdapterBinding = CONTAINING_RECORD(CurrentEntry, ADAPTER_BINDING, AdapterListEntry);
(*AdapterBinding->ProtocolBinding->Chars.StatusHandler)(
AdapterBinding->NdisOpenBlock.ProtocolBindingContext,
GeneralStatus,
StatusBuffer,
StatusBufferSize);
CurrentEntry = CurrentEntry->Flink;
}
KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql);
}
@ -1061,7 +1083,26 @@ NTAPI
MiniStatusComplete(
IN NDIS_HANDLE MiniportAdapterHandle)
{
UNIMPLEMENTED
PLOGICAL_ADAPTER Adapter = MiniportAdapterHandle;
PLIST_ENTRY CurrentEntry;
PADAPTER_BINDING AdapterBinding;
KIRQL OldIrql;
KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql);
CurrentEntry = Adapter->ProtocolListHead.Flink;
while (CurrentEntry != &Adapter->ProtocolListHead)
{
AdapterBinding = CONTAINING_RECORD(CurrentEntry, ADAPTER_BINDING, AdapterListEntry);
(*AdapterBinding->ProtocolBinding->Chars.StatusCompleteHandler)(
AdapterBinding->NdisOpenBlock.ProtocolBindingContext);
CurrentEntry = CurrentEntry->Flink;
}
KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql);
}
@ -1126,7 +1167,7 @@ NdisMFlushLog(
}
/*
* @unimplemented
* @implemented
*/
#undef NdisMIndicateStatus
VOID
@ -1137,11 +1178,11 @@ NdisMIndicateStatus(
IN PVOID StatusBuffer,
IN UINT StatusBufferSize)
{
UNIMPLEMENTED
MiniStatus(MiniportAdapterHandle, GeneralStatus, StatusBuffer, StatusBufferSize);
}
/*
* @unimplemented
* @implemented
*/
#undef NdisMIndicateStatusComplete
VOID
@ -1149,7 +1190,7 @@ EXPORT
NdisMIndicateStatusComplete(
IN NDIS_HANDLE MiniportAdapterHandle)
{
UNIMPLEMENTED
MiniStatusComplete(MiniportAdapterHandle);
}