From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id 9073D591A for ; Fri, 22 May 2015 03:39:03 +0200 (CEST) Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (Postfix) with ESMTPS id BF81C8E923 for ; Fri, 22 May 2015 01:39:02 +0000 (UTC) Received: from tfherb.local (vpn-53-133.rdu2.redhat.com [10.10.53.133]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t4M1d19s018806 for ; Thu, 21 May 2015 21:39:02 -0400 Message-ID: <555E88B5.7080906@redhat.com> Date: Thu, 21 May 2015 21:39:01 -0400 From: Thomas F Herbert Organization: Red Hat User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: "dpdk >> dev@dpdk.org" References: <1432194581-15301-1-git-send-email-changchun.ouyang@intel.com> <1432194581-15301-5-git-send-email-changchun.ouyang@intel.com> In-Reply-To: <1432194581-15301-5-git-send-email-changchun.ouyang@intel.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 Subject: Re: [dpdk-dev] [PATCH 4/6] vhost: Add new command line option: rxq X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 May 2015 01:39:03 -0000 On 5/21/15 3:49 AM, Ouyang Changchun wrote: > Sample vhost need know the queue number user want to enable for each virtio device, > so add the new option '--rxq' into it. Could you also add the new --rxq option description to us_vhost_usage()? > > Signed-off-by: Changchun Ouyang > --- > examples/vhost/main.c | 46 ++++++++++++++++++++++++++++++++++++++++++---- > 1 file changed, 42 insertions(+), 4 deletions(-) > > diff --git a/examples/vhost/main.c b/examples/vhost/main.c > index 408eb3f..16d4463 100644 > --- a/examples/vhost/main.c > +++ b/examples/vhost/main.c > @@ -163,6 +163,9 @@ static int mergeable; > /* Do vlan strip on host, enabled on default */ > static uint32_t vlan_strip = 1; > > +/* Rx queue number per virtio device */ > +static uint32_t rxq = 1; > + > /* number of descriptors to apply*/ > static uint32_t num_rx_descriptor = RTE_TEST_RX_DESC_DEFAULT_ZCP; > static uint32_t num_tx_descriptor = RTE_TEST_TX_DESC_DEFAULT_ZCP; > @@ -408,8 +411,14 @@ port_init(uint8_t port) > txconf->tx_deferred_start = 1; > } > > - /*configure the number of supported virtio devices based on VMDQ limits */ > - num_devices = dev_info.max_vmdq_pools; > + /* Configure the virtio devices num based on VMDQ limits */ > + switch (rxq) { > + case 1: > + case 2: num_devices = dev_info.max_vmdq_pools; > + break; > + case 4: num_devices = dev_info.max_vmdq_pools / 2; > + break; > + } > > if (zero_copy) { > rx_ring_size = num_rx_descriptor; > @@ -431,7 +440,7 @@ port_init(uint8_t port) > return retval; > /* NIC queues are divided into pf queues and vmdq queues. */ > num_pf_queues = dev_info.max_rx_queues - dev_info.vmdq_queue_num; > - queues_per_pool = dev_info.vmdq_queue_num / dev_info.max_vmdq_pools; > + queues_per_pool = dev_info.vmdq_queue_num / num_devices; > num_vmdq_queues = num_devices * queues_per_pool; > num_queues = num_pf_queues + num_vmdq_queues; > vmdq_queue_base = dev_info.vmdq_queue_base; > @@ -576,7 +585,8 @@ us_vhost_usage(const char *prgname) > " --rx-desc-num [0-N]: the number of descriptors on rx, " > "used only when zero copy is enabled.\n" > " --tx-desc-num [0-N]: the number of descriptors on tx, " > - "used only when zero copy is enabled.\n", > + "used only when zero copy is enabled.\n" > + " --rxq [1,2,4]: rx queue number for each vhost device\n", > prgname); > } > > @@ -602,6 +612,7 @@ us_vhost_parse_args(int argc, char **argv) > {"zero-copy", required_argument, NULL, 0}, > {"rx-desc-num", required_argument, NULL, 0}, > {"tx-desc-num", required_argument, NULL, 0}, > + {"rxq", required_argument, NULL, 0}, > {NULL, 0, 0, 0}, > }; > > @@ -778,6 +789,20 @@ us_vhost_parse_args(int argc, char **argv) > } > } > > + /* Specify the Rx queue number for each vhost dev. */ > + if (!strncmp(long_option[option_index].name, > + "rxq", MAX_LONG_OPT_SZ)) { > + ret = parse_num_opt(optarg, 4); > + if ((ret == -1) || (!POWEROF2(ret))) { > + RTE_LOG(INFO, VHOST_CONFIG, > + "Invalid argument for rxq [1,2,4]," > + "power of 2 required.\n"); > + us_vhost_usage(prgname); > + return -1; > + } else { > + rxq = ret; > + } > + } > break; > > /* Invalid option - print options. */ > @@ -813,6 +838,19 @@ us_vhost_parse_args(int argc, char **argv) > return -1; > } > > + if (rxq > 1) { > + vmdq_conf_default.rxmode.mq_mode = ETH_MQ_RX_VMDQ_RSS; > + vmdq_conf_default.rx_adv_conf.rss_conf.rss_hf = ETH_RSS_IP | > + ETH_RSS_UDP | ETH_RSS_TCP | ETH_RSS_SCTP; > + } > + > + if ((zero_copy == 1) && (rxq > 1)) { > + RTE_LOG(INFO, VHOST_PORT, > + "Vhost zero copy doesn't support mq mode," > + "please specify '--rxq 1' to disable it.\n"); > + return -1; > + } > + > return 0; > } > >