|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH 2/2] xennet: fix TX doorbell coalescing — More flag dropped at NBL boundaries
__TransmitterSendNetBufferList computed the More flag as
(NET_BUFFER_NEXT_NB(NetBuffer) != NULL), which only looks at remaining
NET_BUFFERs within the current NBL. This evaluates to FALSE for the last
NB of every NBL, even when the outer loop in TransmitterSendNetBufferLists
still has additional NBLs to submit in the same batch.
Assisted-by: ClaudeCode:claude-opus-4.8
Signed-off-by: david ambu <david.preetham@xxxxxxxxxx>
---
src/xennet/transmitter.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/xennet/transmitter.c b/src/xennet/transmitter.c
index 4bb82bc..e17d89f 100644
--- a/src/xennet/transmitter.c
+++ b/src/xennet/transmitter.c
@@ -288,7 +288,8 @@ __TransmitterHash(
static VOID
__TransmitterSendNetBufferList(
IN PXENNET_TRANSMITTER Transmitter,
- IN PNET_BUFFER_LIST NetBufferList
+ IN PNET_BUFFER_LIST NetBufferList,
+ IN BOOLEAN MoreNbls
)
{
PNET_BUFFER_LIST_RESERVED ListReserved;
@@ -338,7 +339,7 @@ __TransmitterSendNetBufferList(
MaximumSegmentSize,
TagControlInformation,
&Hash,
- (NetBufferListNext != NULL) ? TRUE : FALSE,
+ (NetBufferListNext != NULL || MoreNbls) ? TRUE
: FALSE,
Cookie);
}
else
@@ -384,7 +385,9 @@ TransmitterSendNetBufferLists(
ListNext = NET_BUFFER_LIST_NEXT_NBL(NetBufferList);
NET_BUFFER_LIST_NEXT_NBL(NetBufferList) = NULL;
- __TransmitterSendNetBufferList(Transmitter, NetBufferList);
+ __TransmitterSendNetBufferList(Transmitter,
+ NetBufferList,
+ (ListNext != NULL) ? TRUE : FALSE);
NetBufferList = ListNext;
}
--
2.51.0.windows.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |