[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 2/6] Since Rx/Tx ring disconnects now no longer wait forever, we add some logging to catch those cases where the disconnect has timed out, indicating how many requests are still in the ring. This aids greatly with customer debugging.


  • To: <win-pv-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Martin Harvey <Martin.Harvey@xxxxxxxxxx>
  • Date: Tue, 20 Jul 2021 14:29:47 +0100
  • Authentication-results: esa1.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
  • Cc: Martin Harvey <Martin.Harvey@xxxxxxxxxx>, Martin Harvey <martin.harvey@xxxxxxxxxx>
  • Delivery-date: Tue, 20 Jul 2021 13:30:28 +0000
  • Ironport-hdrordr: A9a23:giGdhqxOOLY1VxNo2CmgKrPxXeskLtp133Aq2lEZdPUMSL3+qy iv9M516faGskd2ZJhAo6HwBEDuewK+yXcY2+Qs1PKZLW3bUQiTXfFfBOnZsl/d8kTFn4Y3v5 uIMZIObeEYZmIVsS+O2mmF+qEboeVvnprFuQ6U9QYVcegjUdAZ0y5pTgSAHgl/QxRHGpojCI DZ5s1JoVObCAsqR9X+BGMIG+DFut3VlIn7e1oHAAMq8wODlC6v8/r7FBefty1uLw9n0PMh62 SAmxHl7q+jt/291xDd0nLe9JRQlp/gzcZOH8aBk9USMXHtjQmvDb4RJoGqrXQ2uu3q40oukt 3BuQ0pMcho5HPVY22voRzinxPr2DFr8HP51VqE6EGT3/DRVXY5EcYEn45DbRfD600uurhHod h2NkyixuFqMS8=
  • Ironport-sdr: mm8JjpVwDYtz9rUbr6JvKiLGX8HWUTDhr33TMSYdJUfR6uLqSMsSY2U5oqpgGmHYtbpMoNGBSJ iv867KOYIpVEWy1y4mmAeDqeh+VR1c5yIG3HBbo9wqkS+k6OBa8hGOIBf14bIi9xguVTNXxAsa 0I1fwkGkA6Ud7qJRXCtf/+V7wxWfO5K/O6bf91HHLPaIIeLYjXWr86cPir40skUyaIIV5PQ68O S9j3RgSj9i4owR0iWCYEdFjMOSI9rgOvBJmWleF8hfb/s2xd7jItL7Mx0Wq80XGXhxwdm7VOO4 1wEiwZ9Mc+Y+MFnu0RJsYoO9
  • List-id: Developer list for the Windows PV Drivers subproject <win-pv-devel.lists.xenproject.org>

Signed-Off-By: Martin Harvey <martin.harvey@xxxxxxxxxx>
---
 src/xenvif/receiver.c    | 16 ++++++++++++++++
 src/xenvif/transmitter.c |  6 ++++++
 2 files changed, 22 insertions(+)

diff --git a/src/xenvif/receiver.c b/src/xenvif/receiver.c
index c70d938..7295646 100644
--- a/src/xenvif/receiver.c
+++ b/src/xenvif/receiver.c
@@ -2887,6 +2887,22 @@ __ReceiverRingDisconnect(
     ASSERT3U(Ring->ResponsesProcessed, ==, Ring->RequestsPushed);
     ASSERT3U(Ring->RequestsPushed, ==, Ring->RequestsPosted);
 
+    //Debug logs as well as assertion, else customer debugging difficult.
+    if ((Ring->ResponsesProcessed != Ring->RequestsPushed) ||
+        (Ring->RequestsPushed != Ring->RequestsPosted))
+    {
+        Info("%s[%u]: Ring disconnect, counts do not match.\n",
+            FrontendGetPath(Frontend),
+            Ring->Index);
+
+        Info("%s[%u]: Processed: %u Pushed: %u Posted: %u\n",
+            FrontendGetPath(Frontend),
+            Ring->Index,
+            Ring->ResponsesProcessed,
+            Ring->RequestsPushed,
+            Ring->RequestsPosted);
+    }
+
     Ring->ResponsesProcessed = 0;
     Ring->RequestsPushed = 0;
     Ring->RequestsPosted = 0;
diff --git a/src/xenvif/transmitter.c b/src/xenvif/transmitter.c
index e114061..724615d 100644
--- a/src/xenvif/transmitter.c
+++ b/src/xenvif/transmitter.c
@@ -4010,6 +4010,12 @@ __TransmitterRingDisable(
     }
     if (Abort)
     {
+        Info("%s[%u]: Timed out disable: Requests pushed: %u, Responses 
processed: %u.\n",
+            FrontendGetPath(Frontend),
+            Ring->Index,
+            Ring->RequestsPushed,
+            Ring->ResponsesProcessed);
+
         __TransmitterRingFakeResponses(Ring);
         (VOID) TransmitterRingPoll(Ring);
     }
-- 
2.25.0.windows.1




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.