[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH V2 net-next 4/5] xen-netfront: Add support for multiple queues

On 14/02/14 14:13, Wei Liu wrote:
On Fri, Feb 14, 2014 at 11:50:23AM +0000, Andrew J. Bennieston wrote:
From: "Andrew J. Bennieston" <andrew.bennieston@xxxxxxxxxx>

Build on the refactoring of the previous patch to implement multiple
queues between xen-netfront and xen-netback.

Check XenStore for multi-queue support, and set up the rings and event
channels accordingly.

Write ring references and event channels to XenStore in a queue
hierarchy if appropriate, or flat when using only one queue.

Update the xennet_select_queue() function to choose the queue on which
to transmit a packet based on the skb hash result.

Signed-off-by: Andrew J. Bennieston <andrew.bennieston@xxxxxxxxxx>
  drivers/net/xen-netfront.c |  176 ++++++++++++++++++++++++++++++++++----------
  1 file changed, 138 insertions(+), 38 deletions(-)

diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
index d4239b9..d584fa4 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -57,6 +57,10 @@
  #include <xen/interface/memory.h>
  #include <xen/interface/grant_table.h>

+/* Module parameters */
+unsigned int xennet_max_queues;
+module_param(xennet_max_queues, uint, 0644);
  static const struct ethtool_ops xennet_ethtool_ops;

  struct netfront_cb {
@@ -565,10 +569,22 @@ static int xennet_count_skb_frag_slots(struct sk_buff 
        return pages;

-static u16 xennet_select_queue(struct net_device *dev, struct sk_buff *skb)
+static u16 xennet_select_queue(struct net_device *dev, struct sk_buff *skb,
+                                                          void *accel_priv)


-       /* Stub for later implementation of queue selection */
-       return 0;
+       struct netfront_info *info = netdev_priv(dev);
+       u32 hash;
+       u16 queue_idx;
+       /* First, check if there is only one queue */
+       if (info->num_queues == 1)
+               queue_idx = 0;

Coding style. Need to put braces around this single statement.

Good catch; thanks.


Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.