[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 |