|
[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |