If allocation of all RX buffers fails then NetMaxReceiveBuffers will be decreased accordingly, however m_nReusedRxBuffersLimit will remain set as it is configured in NetKVM device settings.
For example, if Init.MaxRxBuffers is configured to 1024 and rx_queue_size is set 256, it may cause a VM to lose connectivity when all RX buffers are exhausted.
Signed-off-by: Sergey Bykov <[email protected]>
This procedure was placed in global scope without a reason.
Making it static and inline. It is required and used only
with RSS, so removing the body if no RSS.
Signed-off-by: Yuri Benditovich <[email protected]>
This commit integrates wpp tracing into builds higher than Vista as
Windows Vista requires much more configuration for wpp integration,
however, this integration may be introduced in the future.
The old style of Dprintf is still preserved by this commit and can be
enabled by disabling WPP tracing. This can be accomplished by commenting
the following line in WPPTrace.h:
Signed-off-by: Sameeh Jubran <[email protected]>
The function has no effect and will be removed.
Also deleting the defunct "PublishIndices" config entry.
Signed-off-by: Ladi Prosek <[email protected]>
The NdisDprAcquireSpinLock and NdisDprReleaseSpinLock are an optimized
version of the Ndis Acquire and Release functions that should be called
only at Dispatch level.
Signed-off-by: Sameeh Jubran <[email protected]>
NdisMAllocateSharedMemory allocates physically contiguous memory
so it is not necessary to create the receive scatter-gather list
from single-page blocks.
With this fix, the typical number of SG descriptors is reduced from
~18 to 2, speeding up recive processing both on the guest and host
side.
ParaNdis_InitialAllocatePhysicalMemory gets a new ulSize parameter
which makes pAddresses pure output now. Also, references to a non-existent
ParaNdis_RuntimeRequestToAllocatePhysicalMemory are removed.
When working with 1 queue MQ or without MQ RX path
may be processed by a few CPUs running DPC routine
in parallel.
In this case only one of those should do the real
processing.
Signed-off-by: Dmitry Fleytman <[email protected]>
Part of the effort to simplify ndis56common.h. This is the first step in
removing kdebugprint.h from ndis56common.h, adding include where needed and
moving some functions implementation from class definitions files.
Signed-off-by: Yan Vugenfirer <[email protected]>
The logic of dispatching the packet toward different ReceiveQueues
depending on scaling data, was placed under #ifdef. In case
of no RSS support, all packets goes to the same receive queue.
In order to avoid #ifdef duplication, declarations of variables
used only for RSS-related computations, were moved under same
ifdef - with varaibels not ifdef'd, compiler complains
on unreferenced variables.
Also, parameter 'nCurrCpuReceiveQueue' is used only for RSS
computation, so in the absence of RSS, 'unused parameter' warning
was disabled with UNREFERENCED_PARAMETER macro.
Signed-off-by: Joseph Hindin <[email protected]>
Before the patch 'Routing unclassified packets through RX path's receive
queue', unclassified packets were routed through per-context receive queue,
placed into ReceiveQueues array at index 0. The patch 'Routing
unclassified packets through RX path's receive queue' changes
unclassified packets routing so that they are placed into a dedicated
receive queue, one per virtqueue/CParaNdisRX instance. This patch
completes the change by removing per-context receive queue; first
element in ReceiveQueues array has not special meaning and the
constant 'PARANDIS_RECEIVE_QUEUE_UNCLASSIFIED' was split
into 'PARANDIS_RECEIVE_UNCLASSIFIED_PACKET' and
'PARANDIS_RECEIVE_NO_QUEUE', depending on context.
Signed-off-by: Joseph Hindin <[email protected]>
The refactoring considered too deep, instead code is stabilized with
incremental changes and refactoring postponed
Signed-off-by: Joseph Hindin <[email protected]>