Author: cgutman
Date: Sun Sep 14 16:17:44 2008
New Revision: 36250
URL:
http://svn.reactos.org/svn/reactos?rev=36250&view=rev
Log:
- Use NDIS_GET_PACKET_STATUS to get the real status for the packet
- Set MiniportBusy to FALSE if Send/SendPacket didn't return NDIS_STATUS_PENDING
Modified:
branches/aicom-network-fixes/drivers/network/ndis/ndis/protocol.c
Modified: branches/aicom-network-fixes/drivers/network/ndis/ndis/protocol.c
URL:
http://svn.reactos.org/svn/reactos/branches/aicom-network-fixes/drivers/net…
==============================================================================
--- branches/aicom-network-fixes/drivers/network/ndis/ndis/protocol.c [iso-8859-1]
(original)
+++ branches/aicom-network-fixes/drivers/network/ndis/ndis/protocol.c [iso-8859-1] Sun Sep
14 16:17:44 2008
@@ -340,13 +340,10 @@
KeLowerIrql(RaiseOldIrql);
}
- /* SendPackets handlers return void - they always "succeed" */
- NdisStatus = NDIS_STATUS_SUCCESS;
+ NdisStatus = NDIS_GET_PACKET_STATUS((PNDIS_PACKET)Packet);
}
else
{
- /* XXX FIXME THIS IS WRONG */
- /* uh oh... forgot why i thought that... */
if(Adapter->NdisMiniportBlock.Flags & NDIS_ATTRIBUTE_DESERIALIZE)
{
NDIS_DbgPrint(MAX_TRACE, ("Calling miniport's Send handler\n"));
@@ -363,12 +360,13 @@
NdisStatus =
(*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.SendHandler)(
Adapter->NdisMiniportBlock.MiniportAdapterContext, Packet, 0);
NDIS_DbgPrint(MAX_TRACE, ("back from miniport's send
handler\n"));
- if( NdisStatus != NDIS_STATUS_PENDING ) {
- Adapter->MiniportBusy = FALSE;
- }
KeLowerIrql(RaiseOldIrql);
}
}
+
+ if( NdisStatus != NDIS_STATUS_PENDING ) {
+ Adapter->MiniportBusy = FALSE;
+ }
/* XXX why the hell do we do this? */
NDIS_DbgPrint(MAX_TRACE, ("acquiring miniport block lock\n"));