From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Vrabel Subject: Re: [PATCH V3 net-next 3/5] xen-netfront: Factor queue-specific data into queue struct. Date: Fri, 14 Feb 2014 18:04:54 +0000 Message-ID: <52FE5AC6.9000300__22173.5370964327$1392401193$gmane$org@citrix.com> References: <1392399353-11973-1-git-send-email-andrew.bennieston@citrix.com> <1392399353-11973-4-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.bemta3.messagelabs.com ([195.245.230.39]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1WEN8F-0005oU-Vv for xen-devel@lists.xenproject.org; Fri, 14 Feb 2014 18:05:00 +0000 In-Reply-To: <1392399353-11973-4-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, netdev@vger.kernel.org List-Id: xen-devel@lists.xenproject.org On 14/02/14 17:35, Andrew J. Bennieston wrote: > From: "Andrew J. Bennieston" > > In preparation for multi-queue support in xen-netfront, move the > queue-specific data from struct netfront_info to struct netfront_queue, > and update the rest of the code to use this. > > Also adds loops over queues where appropriate, even though only one is > configured at this point, and uses alloc_etherdev_mq() and the > corresponding multi-queue netif wake/start/stop functions in preparation > for multiple active queues. > > Finally, implements a trivial queue selection function suitable for > ndo_select_queue, which simply returns 0, selecting the first (and > only) queue. [...] > --- a/drivers/net/xen-netfront.c > +++ b/drivers/net/xen-netfront.c [...] > @@ -2048,17 +2196,27 @@ static const struct xenbus_device_id netfront_ids[] = { [...] > + for (i = 0; i < info->num_queues; ++i) { > + queue = &info->queues[i]; > + del_timer_sync(&queue->rx_refill_timer); > + } > + > + if (info->num_queues) { > + kfree(info->queues); > + info->queues = NULL; > + } > + > xennet_sysfs_delif(info->netdev); > > unregister_netdev(info->netdev); > > - del_timer_sync(&info->rx_refill_timer); > - This has reordered the del_timer_sync() to before the unregister_netdev() call. Can you be sure that the timer cannot be restarted after deleting it? David