[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <555A0B5D.3090505@citrix.com>
Date: Mon, 18 May 2015 16:55:09 +0100
From: David Vrabel <david.vrabel@...rix.com>
To: Joao Martins <joao.martins@...lab.eu>,
<xen-devel@...ts.xenproject.org>, <netdev@...r.kernel.org>
CC: <wei.liu2@...rix.com>, <ian.campbell@...rix.com>,
<david.vrabel@...rix.com>, <boris.ostrovsky@...cle.com>
Subject: Re: [Xen-devel] [RFC PATCH 12/13] xen-netfront: implement TX persistent
grants
On 12/05/15 18:18, Joao Martins wrote:
> Instead of grant/revoking the buffer related to the skb, it will use
> an already granted page and memcpy to it. The grants will be mapped
> by xen-netback and reused overtime, but only unmapped when the vif
> disconnects, as opposed to every packet.
>
> This only happens if the backend supports persistent grants since it
> would, otherwise, introduce the overhead of a memcpy on top of the
> grant map.
[...]
> --- a/drivers/net/xen-netfront.c
> +++ b/drivers/net/xen-netfront.c
[...]
> @@ -1610,7 +1622,10 @@ static int xennet_init_queue(struct netfront_queue *queue)
> for (i = 0; i < NET_TX_RING_SIZE; i++) {
> skb_entry_set_link(&queue->tx_skbs[i], i+1);
> queue->grant_tx[i].ref = GRANT_INVALID_REF;
> - queue->grant_tx[i].page = NULL;
> + if (queue->info->feature_persistent)
> + queue->grant_tx[i].page = alloc_page(GFP_NOIO);
Need to check for alloc failure here and unwind correctly?
Why NOIO?
> + else
> + queue->grant_tx[i].page = NULL;
> }
>
> /* Clear out rx_skbs */
>
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists