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

[win-pv-devel] [PATCH] Use correct location when multi-queues are not used.



When the backend does not support multi-queues, or the frontend has
explicitly disallowed multi-queues, the frontend needs to write
event-channel and ring-references to the non-queued (old) locations,
not under device/vif/<id>/queue-<index>

Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx>
---
 src/xenvif/frontend.c    | 3 ---
 src/xenvif/receiver.c    | 9 +++++++--
 src/xenvif/transmitter.c | 9 +++++++--
 3 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c
index d2643fc..12b6287 100644
--- a/src/xenvif/frontend.c
+++ b/src/xenvif/frontend.c
@@ -237,9 +237,6 @@ FrontendFormatPath(
     PCHAR                   Path;
     NTSTATUS                status;
 
-    if (__FrontendGetQueueCount(Frontend) == 1)
-        return __FrontendGetPath(Frontend);
-
     Length = (ULONG)(strlen(__FrontendGetPath(Frontend)) +
                      strlen("/queue-00") +
                      1) * sizeof (CHAR);
diff --git a/src/xenvif/receiver.c b/src/xenvif/receiver.c
index 8856bca..a53a03f 100644
--- a/src/xenvif/receiver.c
+++ b/src/xenvif/receiver.c
@@ -2291,15 +2291,20 @@ __ReceiverRingStoreWrite(
     PXENVIF_RECEIVER                Receiver;
     PXENVIF_FRONTEND                Frontend;
     ULONG                           Port;
+    PCHAR                           Path;
     NTSTATUS                        status;
 
     Receiver = Ring->Receiver;
     Frontend = Receiver->Frontend;
 
+    Path = (FrontendGetQueueCount(Frontend) == 1 && Ring->Index == 0) ?
+                    FrontendGetPath(Frontend) :
+                    Ring->Path;
+
     status = XENBUS_STORE(Printf,
                           &Receiver->StoreInterface,
                           Transaction,
-                          Ring->Path,
+                          Path,
                           "rx-ring-ref",
                           "%u",
                           GranterGetReference(FrontendGetGranter(Frontend),
@@ -2315,7 +2320,7 @@ __ReceiverRingStoreWrite(
     status = XENBUS_STORE(Printf,
                           &Receiver->StoreInterface,
                           Transaction,
-                          Ring->Path,
+                          Path,
                           Receiver->Split ? "event-channel-rx" : 
"event-channel",
                           "%u",
                           Port);
diff --git a/src/xenvif/transmitter.c b/src/xenvif/transmitter.c
index 24fd6a5..aa55f1c 100644
--- a/src/xenvif/transmitter.c
+++ b/src/xenvif/transmitter.c
@@ -3127,15 +3127,20 @@ __TransmitterRingStoreWrite(
     PXENVIF_TRANSMITTER             Transmitter;
     PXENVIF_FRONTEND                Frontend;
     ULONG                           Port;
+    PCHAR                           Path;
     NTSTATUS                        status;
 
     Transmitter = Ring->Transmitter;
     Frontend = Transmitter->Frontend;
 
+    Path = (FrontendGetQueueCount(Frontend) == 1 && Ring->Index == 0) ?
+                    FrontendGetPath(Frontend) :
+                    Ring->Path;
+
     status = XENBUS_STORE(Printf,
                           &Transmitter->StoreInterface,
                           Transaction,
-                          Ring->Path,
+                          Path,
                           "tx-ring-ref",
                           "%u",
                           GranterGetReference(FrontendGetGranter(Frontend),
@@ -3154,7 +3159,7 @@ __TransmitterRingStoreWrite(
     status = XENBUS_STORE(Printf,
                           &Transmitter->StoreInterface,
                           Transaction,
-                          Ring->Path,
+                          Path,
                           "event-channel-tx",
                           "%u",
                           Port);
-- 
1.9.4.msysgit.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel


 


Rackspace

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