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/netw... ============================================================================== --- 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"));