From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (xvm-189-124.dc0.ghst.net [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C9171A0A00; Thu, 31 Dec 2020 08:00:29 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 644BA140CC3; Thu, 31 Dec 2020 08:00:29 +0100 (CET) Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com [209.85.167.48]) by mails.dpdk.org (Postfix) with ESMTP id 084AE140CBD for ; Thu, 31 Dec 2020 08:00:28 +0100 (CET) Received: by mail-lf1-f48.google.com with SMTP id m25so42335731lfc.11 for ; Wed, 30 Dec 2020 23:00:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=emumba-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=WD5ii2/0U2Vbbyw7YgTXk0JynHXMKjBl7JQan7knl08=; b=wwA/10+bECT6iWbPMkN0lgw0mU1qnkF+39Ns2e4uwxqdKxssAvY3qGZOh1mDwhvxP3 SLWL0Wen+X/UH5F/MOGN/BT9xterxFl8HRcw13TOQuY9FKRJErkkLHSxpQWuJGic71lv 4e1ms6dsA/10AxGsrGU6z9yC9GerQJLDbOx70wXAGKviXutcRdG0ejYL2oU1STxEouKu Q4IrBBnmkEKHetIW2T9Imu959THKHVQDPs0MSa37vAoxf5cNG09z39xe3DnWYW6opJya X801CnqNIG0AJfIfX60ZqGnj/s44EOe743cGYVmHrhdlzyeh01jy/XBZ6Mqn+A29uQw2 j6Sw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=WD5ii2/0U2Vbbyw7YgTXk0JynHXMKjBl7JQan7knl08=; b=n3+t/REmKLYgKq6Mx/W01Pud9juB9G4QeIJ7uxfjRnU8xLCut368E6sergkfqE/ea/ RkCC5xycC7/aumO2x6xe4HeVURUKL0ZF5lb1bQhjUlPRUpzwoz0ndL+XfC4wRFHlwVTG vYn7tdtmqAXHSlkRJfrYZAqFMiNkdEvhE+PdMJfAc0KDEOil2r49J+jhnypOo74l2IQd ChFKbM4KUXvnN67Zb3zIRXV/8d+bDAF4ms6zIzHF2VZKJFRKJf9VAJNU5qbVOQd4o0Lv 27Puoc+31I9AIl/GCP4A5bejjH/Ao13JHdAjF6pvjfuDUdx4QjQzigirHjXxDNuOWrsP vkbQ== X-Gm-Message-State: AOAM533cWQNpcnssvU+B4q30OB8UYD7kv7NkWXzAA89QJPDoe9gmO6UI SzGejZwz2pVStLL5OD+OhEX7upvKZfSg42DpaXgFFw== X-Google-Smtp-Source: ABdhPJz8w0b3KilJF7yJfXGU/Pg592bDWAKv7U1LAfOQDUfTpcgs8qxKF3A+jwMLRGwkZ2T1qdqEIEWHcOI8Jt2DI0E= X-Received: by 2002:ac2:5294:: with SMTP id q20mr11815078lfm.251.1609398027440; Wed, 30 Dec 2020 23:00:27 -0800 (PST) MIME-Version: 1.0 References: <20201124123249.14451-1-ibtisam.tariq@emumba.com> <20201124123249.14451-6-ibtisam.tariq@emumba.com> In-Reply-To: From: Ibtisam Tariq Date: Thu, 31 Dec 2020 12:00:16 +0500 Message-ID: To: David Marchand Cc: Maxime Coquelin , "Xia, Chenbo" , Cristian Dumitrescu , "Singh, Jasvinder" , "Mcnamara, John" , "Pattan, Reshma" , "Ananyev, Konstantin" , "Kovacevic, Marko" , dev , Jiayu Hu , huawei.xie@intel.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [dpdk-dev] [PATCH 6/7] examples/vhost: enhance getopt_long usage X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Hi, Sorry, for the late reply. We have two solutions: > - we keep this &builtin_net_driver flag use, but we must accept a 0 > return value from getopt_long. > - we convert this option to the same scheme as the other and add a > OPT_BUILTIN_NET_DRIVER_NUM like other options in this example, > What should I do for built_net_driver. The convention used in eal is the 2nd option. On Mon, Dec 7, 2020 at 3:51 PM David Marchand wrote: > On Tue, Nov 24, 2020 at 1:35 PM Ibtisam Tariq > wrote: > > diff --git a/examples/vhost/main.c b/examples/vhost/main.c > > index 8d8c3038b..ce8b64035 100644 > > --- a/examples/vhost/main.c > > +++ b/examples/vhost/main.c > > @@ -466,6 +466,33 @@ us_vhost_usage(const char *prgname) > > prgname); > > } > > > > +enum { > > +#define OPT_VM2VM "vm2vm" > > + OPT_VM2VM_NUM =3D 256, > > +#define OPT_RX_RETRY "rx-retry" > > + OPT_RX_RETRY_NUM, > > +#define OPT_RX_RETRY_DELAY "rx-retry-delay" > > + OPT_RX_RETRY_DELAY_NUM, > > +#define OPT_RX_RETRY_NUMB "rx-retry-num" > > + OPT_RX_RETRY_NUMB_NUM, > > +#define OPT_MERGEABLE "mergeable" > > + OPT_MERGEABLE_NUM, > > +#define OPT_STATS "stats" > > + OPT_STATS_NUM, > > +#define OPT_SOCKET_FILE "socket-file" > > + OPT_SOCKET_FILE_NUM, > > +#define OPT_TX_CSUM "tx-csum" > > + OPT_TX_CSUM_NUM, > > +#define OPT_TSO "tso" > > + OPT_TSO_NUM, > > +#define OPT_CLIENT "client" > > +#define OPT_BUILTIN_NET_DRIVER "builtin-net-driver" > > +#define OPT_DMA_TYPE "dma-type" > > + OPT_DMA_TYPE_NUM, > > +#define OPT_DMAS "dmas" > > + OPT_DMAS_NUM, > > Nit: could you align those last two strings? > > > > +}; > > + > > /* > > * Parse the arguments given in the command line of the application. > > */ > > @@ -477,19 +504,31 @@ us_vhost_parse_args(int argc, char **argv) > > unsigned i; > > const char *prgname =3D argv[0]; > > static struct option long_option[] =3D { > > - {"vm2vm", required_argument, NULL, 0}, > > - {"rx-retry", required_argument, NULL, 0}, > > - {"rx-retry-delay", required_argument, NULL, 0}, > > - {"rx-retry-num", required_argument, NULL, 0}, > > - {"mergeable", required_argument, NULL, 0}, > > - {"stats", required_argument, NULL, 0}, > > - {"socket-file", required_argument, NULL, 0}, > > - {"tx-csum", required_argument, NULL, 0}, > > - {"tso", required_argument, NULL, 0}, > > - {"client", no_argument, &client_mode, 1}, > > - {"builtin-net-driver", no_argument, &builtin_net_driver= , > 1}, > > - {"dma-type", required_argument, NULL, 0}, > > - {"dmas", required_argument, NULL, 0}, > > + {OPT_VM2VM, required_argument, > > + NULL, OPT_VM2VM_NUM}, > > + {OPT_RX_RETRY, required_argument, > > + NULL, OPT_RX_RETRY_NUM}, > > + {OPT_RX_RETRY_DELAY, required_argument, > > + NULL, OPT_RX_RETRY_DELAY_NUM}, > > + {OPT_RX_RETRY_NUMB, required_argument, > > + NULL, OPT_RX_RETRY_NUMB_NUM}, > > + {OPT_MERGEABLE, required_argument, > > + NULL, OPT_MERGEABLE_NUM}, > > + {OPT_STATS, required_argument, > > + NULL, OPT_STATS_NUM}, > > + {OPT_SOCKET_FILE, required_argument, > > + NULL, OPT_SOCKET_FILE_NUM}, > > + {OPT_TX_CSUM, required_argument, > > + NULL, OPT_TX_CSUM_NUM}, > > + {OPT_TSO, required_argument, > > + NULL, OPT_TSO_NUM}, > > + {OPT_CLIENT, no_argument, &client_mode, 1}, > > + {OPT_BUILTIN_NET_DRIVER, no_argument, > > + &builtin_net_driver, 1}, > > We will have an issue here. > > Quoting the manual: > """ > flag specifies how results are returned for a long option. > If flag is NULL, then getopt_long() returns val. (For example, the > calling program may set val to the equivalent short option charac=E2=80= =90 > ter.) Otherwise, getopt_long() returns 0, and flag > points to a variable which is set to val if the option is found, but > left unchanged if the option is not found. > """ > > $ build/examples/dpdk-vhost --no-huge -m 1024 -l 0,1 -a 0:0.0 -- > --builtin-net-driver --socket-file /tmp/sock0 -p 0x1 > EAL: Detected 8 lcore(s) > EAL: Detected 1 NUMA nodes > EAL: Multi-process socket /run/user/114840/dpdk/rte/mp_socket > EAL: Selected IOVA mode 'VA' > EAL: Probing VFIO support... > VHOST_CONFIG: build/examples/dpdk-vhost [EAL options] -- -p PORTMASK > --vm2vm [0|1|2] > --rx_retry [0|1] --mergeable [0|1] --stats [0-N] > --socket-file > --nb-devices ND > -p PORTMASK: Set mask for ports to be used by application > --vm2vm [0|1|2]: disable/software(default)/hardware vm2vm comms > --rx-retry [0|1]: disable/enable(default) retries on rx. > Enable retry if destintation queue is full > --rx-retry-delay [0-N]: timeout(in usecond) between retries on > RX. This makes effect only if retries on rx enabled > --rx-retry-num [0-N]: the number of retries on rx. This makes > effect only if retries on rx enabled > --mergeable [0|1]: disable(default)/enable RX mergeable buffers > --stats [0-N]: 0: Disable stats, N: Time in seconds to print stat= s > --socket-file: The path of the socket file. > --tx-csum [0|1] disable/enable TX checksum offload. > --tso [0|1] disable/enable TCP segment offload. > --client register a vhost-user socket as client mode. > --dma-type register dma type for your vhost async driver. For > example "ioat" for now. > --dmas register dma channel for specific vhost device. > EAL: Error - exiting with code: 1 > Cause: Invalid argument > > This is because getopt_long returned 0. > > We have two solutions: > - we keep this &builtin_net_driver flag use, but we must accept a 0 > return value from getopt_long. > - we convert this option to the same scheme as the other and add a > OPT_BUILTIN_NET_DRIVER_NUM like other options in this example, > > Maxime, opinion? > > > -- > David Marchand > > --=20 - Ibtisam