virtio: RSS support

Add RSS support to make use of multiple queues.

With 4 RX queues and RSS enabled

ping from host	to guest vm ip	queue use
192.168.2.3	192.168.2.1	2
''		192.168.2.10	0
''		192.168.2.5	1
''		192.168.2.105	3

With 4 RX queues and RSS disabled, queue 0 is always used for all of the above cases

Type: improvement

Change-Id: I3ca78fd83fce26cbe8f23fee0a9034cb572bacb7
Signed-off-by: Steven Luong <sluong@cisco.com>
diff --git a/src/vnet/devices/virtio/cli.c b/src/vnet/devices/virtio/cli.c
index c1b6c8b..c436460 100644
--- a/src/vnet/devices/virtio/cli.c
+++ b/src/vnet/devices/virtio/cli.c
@@ -62,6 +62,8 @@
 	args.bind = VIRTIO_BIND_FORCE;
       else if (unformat (line_input, "bind"))
 	args.bind = VIRTIO_BIND_DEFAULT;
+      else if (unformat (line_input, "rss-enabled"))
+	args.rss_enabled = 1;
       else
 	return clib_error_return (0, "unknown input `%U'",
 				  format_unformat_error, input);
@@ -77,7 +79,7 @@
   .path = "create interface virtio",
   .short_help = "create interface virtio <pci-address> "
 		"[feature-mask <hex-mask>] [tx-queue-size <size>] "
-		"[gso-enabled] [csum-enabled] "
+		"[gso-enabled] [csum-enabled] [rss-enabled] "
 		"[buffering [size <buffering-szie>]] [packed] [bind [force]]",
   .function = virtio_pci_create_command_fn,
 };