From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH V4] netif.h: Document xen-net{back, front} multi-queue feature Date: Fri, 2 May 2014 15:57:00 -0400 Message-ID: <20140502195700.GA6080@phenom.dumpdata.com> References: <1399048437-24390-1-git-send-email-andrew.bennieston@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1WgJa3-0004SZ-Dj for xen-devel@lists.xenproject.org; Fri, 02 May 2014 19:57:11 +0000 Content-Disposition: inline In-Reply-To: <1399048437-24390-1-git-send-email-andrew.bennieston@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: "Andrew J. Bennieston" Cc: xen-devel@lists.xenproject.org, paul.durrant@citrix.com, wei.liu2@citrix.com, ian.campbell@citrix.com, david.vrabel@citrix.com List-Id: xen-devel@lists.xenproject.org On Fri, May 02, 2014 at 05:33:57PM +0100, Andrew J. Bennieston wrote: > From: "Andrew J. Bennieston" > > Document the multi-queue feature in terms of XenStore keys to be written > by the backend and by the frontend. > > Signed-off-by: Andrew J. Bennieston > > --- > V4 > - Fix broken sentence regarging feature-split-event-channels > in conjunction with multiple queues. > > --- > xen/include/public/io/netif.h | 46 +++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 46 insertions(+) > > diff --git a/xen/include/public/io/netif.h b/xen/include/public/io/netif.h > index d7fb771..c232c22 100644 > --- a/xen/include/public/io/netif.h > +++ b/xen/include/public/io/netif.h > @@ -69,6 +69,52 @@ > */ > > /* > + * Multiple transmit and receive queues: > + * If supported, the backend will write the key "multi-queue-max-queues" to > + * the directory for that vif, and set its value to the maximum supported > + * number of queues. > + * Frontends that are aware of this feature and wish to use it can write the > + * key "multi-queue-num-queues", set to the number they wish to use. Um, should you say that said number has to be lower than 'multi-queue-max-queues'? It should be obvious but there are some devious folks who would write say '-1' in it for fun. > + * > + * Queues replicate the shared rings and event channels. > + * "feature-split-event-channels" may optionally be used when using > + * multiple queues, but is not mandatory. > + * > + * Each queue consists of one shared ring pair, i.e. there must be the same > + * number of tx and rx rings. > + * > + * For frontends requesting just one queue, the usual event-channel and > + * ring-ref keys are written as before, simplifying the backend processing > + * to avoid distinguishing between a frontend that doesn't understand the > + * multi-queue feature, and one that does, but requested only one queue. > + * > + * Frontends requesting two or more queues must not write the toplevel > + * event-channel (or event-channel-{tx,rx}) and {tx,rx}-ring-ref keys, > + * instead writing those keys under sub-keys having the name "queue-N" where > + * N is the integer ID of the queue for which those keys belong. Queues > + * are indexed from zero. For example, a frontend with two queues and split > + * event channels may write the following set of queue-related keys: > + * Should you say what to be done if the multi-queue-num-queues = N doesn't match with the 'queue-N-1' values? Say you N=4 and there are just two sub-directories: queue-0 and queue-1 ? > + * /local/domain/1/device/vif/0/multi-queue-num-queues = "2" > + * /local/domain/1/device/vif/0/queue-0 = "" > + * /local/domain/1/device/vif/0/queue-0/tx-ring-ref = "" > + * /local/domain/1/device/vif/0/queue-0/rx-ring-ref = "" > + * /local/domain/1/device/vif/0/queue-0/event-channel-tx = "" > + * /local/domain/1/device/vif/0/queue-0/event-channel-rx = "" > + * /local/domain/1/device/vif/0/queue-1 = "" > + * /local/domain/1/device/vif/0/queue-1/tx-ring-ref = "" > + * /local/domain/1/device/vif/0/queue-1/rx-ring-ref = " + * /local/domain/1/device/vif/0/queue-1/event-channel-tx = "" > + * /local/domain/1/device/vif/0/queue-1/event-channel-rx = "" > + * > + * Mapping of packets to queues is considered to be a function of the > + * transmitting system (backend or frontend) and is not negotiated > + * between the two. Guests are free to transmit packets on any queue > + * they choose, provided it has been set up correctly. Guests must be > + * prepared to receive packets on any queue they have requested be set up. > + */ > + > +/* > * "feature-no-csum-offload" should be used to turn IPv4 TCP/UDP checksum > * offload off or on. If it is missing then the feature is assumed to be on. > * "feature-ipv6-csum-offload" should be used to turn IPv6 TCP/UDP checksum > -- > 1.7.10.4 > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel