[dpdk-dev] SR-IOV: dpdk16.07 on guest and ixgbe 3.19.1 on host - will that be a problem ? (requested invalid api version)

2016-08-20 Thread Lu, Wenzhuo
HI Gopakumar,


> -Original Message-
> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Gopakumar
> Choorakkot Edakkunni
> Sent: Saturday, August 20, 2016 10:57 PM
> To: dev at dpdk.org
> Subject: [dpdk-dev] SR-IOV: dpdk16.07 on guest and ixgbe 3.19.1 on host - will
> that be a problem ? (requested invalid api version)
> 
> I see the below message "requested invalid api version" on host ? Will that 
> be an
> issue or is it benign ? Should I upgrade the host ixgbe to a later version ?
> 
> On the host:
> 
> *[69576.199458] ixgbe :88:00.1 p4p2: VF 2 requested invalid api version
> 3*
It means ixgbe doesn't support ixgbe_mbox_api_12. I suggest using something 
newer.


[dpdk-dev] SR-IOV: dpdk16.07 on guest and ixgbe 3.19.1 on host - will that be a problem ? (requested invalid api version)

2016-08-20 Thread Gopakumar Choorakkot Edakkunni
I see the below message "requested invalid api version" on host ? Will that
be an issue or is it benign ? Should I upgrade the host ixgbe to a later
version ?

On the host:

*[69576.199458] ixgbe :88:00.1 p4p2: VF 2 requested invalid api version
3*

root# lsb_release -a
No LSB modules are available.
Distributor ID:Ubuntu
Description:Ubuntu 14.04.4 LTS
Release:14.04
Codename:trusty
root at mtpnjrsv113:~#


root# ethtool -i p4p2
driver: ixgbe
version: 3.19.1
firmware-version: 0x8811, 1.1067.0
bus-info: :88:00.1
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no

On the guest:

root# lsb_release -a
No LSB modules are available.
Distributor ID:Ubuntu
Description:Ubuntu 14.04.2 LTS
Release:14.04
Codename:trusty

root# find / -name rte_kni.ko
/var/lib/dkms/dpdk/16.07/3.16.0-30-generic/x86_64/module/rte_kni.ko
/lib/modules/3.16.0-30-generic/updates/dkms/rte_kni.ko


[dpdk-dev] [RFC v2] ethdev: introduce generic flow API

2016-08-20 Thread Lu, Wenzhuo
Hi  Adrien,
Thanks for the V2. 
May I ask a question that may a little out of the scope here. As currently we 
don't store all the flow rules in the driver of Intel NICs, we're trying to 
fill this gap. Considering we need to order the flow rules by the priority, I 
think it's better to introduce avl tree or RB tree or something like that. We 
can transplant the avl tree code from FreeBSD. But it doesn't make sense to put 
it in the PMD. As you mentioned you'll provide some common code in the lib, 
will you provide avl tree or something similar in the common code? If you have 
already done it, we need not waste time to do the same thing again :)




[dpdk-dev] [PATCH 2/2] examples/vhost: support multiple socket files

2016-08-20 Thread Jiayu Hu
When examples/vhost runs in client mode, only one QEMU can be connected.
This is because that examples/vhost just supports one socket file. This
patch is to add multiple sockets support for examples/vhost.

Signed-off-by: Jiayu Hu 
Reviewed-by: Maxime Coquelin 
---
 examples/vhost/main.c | 45 +
 1 file changed, 33 insertions(+), 12 deletions(-)

diff --git a/examples/vhost/main.c b/examples/vhost/main.c
index a718577..71f6d92 100644
--- a/examples/vhost/main.c
+++ b/examples/vhost/main.c
@@ -136,8 +136,9 @@ static uint32_t burst_rx_delay_time = BURST_RX_WAIT_US;
 /* Specify the number of retries on RX. */
 static uint32_t burst_rx_retry_num = BURST_RX_RETRIES;

-/* Socket file path. Can be set by user */
-static char socket_file[PATH_MAX] = "vhost-net";
+/* Socket file paths. Can be set by user */
+static char *socket_files;
+static int nb_sockets;

 /* empty vmdq configuration structure. Filled in programatically */
 static struct rte_eth_conf vmdq_conf_default = {
@@ -395,11 +396,12 @@ static int
 us_vhost_parse_socket_path(const char *q_arg)
 {
/* parse number string */
-
if (strnlen(q_arg, PATH_MAX) > PATH_MAX)
return -1;
-   else
-   snprintf((char *)&socket_file, PATH_MAX, "%s", q_arg);
+
+   socket_files = realloc(socket_files, PATH_MAX * (nb_sockets + 1));
+   snprintf(socket_files + nb_sockets * PATH_MAX, PATH_MAX, "%s", q_arg);
+   nb_sockets++;

return 0;
 }
@@ -1341,14 +1343,27 @@ print_stats(void)
}
 }

+static void
+unregister_drivers(int socket_num)
+{
+   int i, ret;
+
+   for (i = 0; i < socket_num; i++) {
+   ret = rte_vhost_driver_unregister(socket_files + i * PATH_MAX);
+   if (ret != 0)
+   RTE_LOG(ERR, VHOST_CONFIG,
+   "Fail to unregister vhost driver for %s.\n",
+   socket_files + i * PATH_MAX);
+   }
+}
+
 /* When we receive a INT signal, unregister vhost driver */
 static void
 sigint_handler(__rte_unused int signum)
 {
/* Unregister vhost driver. */
-   int ret = rte_vhost_driver_unregister((char *)&socket_file);
-   if (ret != 0)
-   rte_exit(EXIT_FAILURE, "vhost driver unregister failure.\n");
+   unregister_drivers(nb_sockets);
+
exit(0);
 }

@@ -1412,7 +1427,7 @@ main(int argc, char *argv[])
 {
unsigned lcore_id, core_id = 0;
unsigned nb_ports, valid_num_ports;
-   int ret;
+   int ret, i;
uint8_t portid;
static pthread_t tid;
char thread_name[RTE_MAX_THREAD_NAME_LEN];
@@ -1511,9 +1526,15 @@ main(int argc, char *argv[])
flags |= RTE_VHOST_USER_CLIENT;

/* Register vhost user driver to handle vhost messages. */
-   ret = rte_vhost_driver_register(socket_file, flags);
-   if (ret != 0)
-   rte_exit(EXIT_FAILURE, "vhost driver register failure.\n");
+   for (i = 0; i < nb_sockets; i++) {
+   ret = rte_vhost_driver_register
+   (socket_files + i * PATH_MAX, flags);
+   if (ret != 0) {
+   unregister_drivers(i);
+   rte_exit(EXIT_FAILURE,
+   "vhost driver register failure.\n");
+   }
+   }

rte_vhost_driver_callback_register(&virtio_net_device_ops);

-- 
2.7.4



[dpdk-dev] [PATCH 1/2] examples/vhost: rename dev-basename

2016-08-20 Thread Jiayu Hu
In examples/vhost, "dev-basename" is a program option, which is to set
the vhost-net socket used by vhost-user, or the character device used
by vhost-cuse. Since vhost-cuse should be dropped, and "dev-basename"
is not a suitable name for the vhost-net socket. Therefore, this patch
is to change this option name for examples/vhost.

Signed-off-by: Jiayu Hu 
Reviewed-by: Maxime Coquelin 
---
 examples/vhost/main.c | 41 +
 1 file changed, 21 insertions(+), 20 deletions(-)

diff --git a/examples/vhost/main.c b/examples/vhost/main.c
index 92a9823..a718577 100644
--- a/examples/vhost/main.c
+++ b/examples/vhost/main.c
@@ -90,9 +90,6 @@
 /* Size of buffers used for snprintfs. */
 #define MAX_PRINT_BUFF 6072

-/* Maximum character device basename size. */
-#define MAX_BASENAME_SZ 10
-
 /* Maximum long option length for option parsing. */
 #define MAX_LONG_OPT_SZ 64

@@ -139,8 +136,8 @@ static uint32_t burst_rx_delay_time = BURST_RX_WAIT_US;
 /* Specify the number of retries on RX. */
 static uint32_t burst_rx_retry_num = BURST_RX_RETRIES;

-/* Character device basename. Can be set by user. */
-static char dev_basename[MAX_BASENAME_SZ] = "vhost-net";
+/* Socket file path. Can be set by user */
+static char socket_file[PATH_MAX] = "vhost-net";

 /* empty vmdq configuration structure. Filled in programatically */
 static struct rte_eth_conf vmdq_conf_default = {
@@ -392,17 +389,17 @@ port_init(uint8_t port)
 }

 /*
- * Set character device basename.
+ * Set socket file path.
  */
 static int
-us_vhost_parse_basename(const char *q_arg)
+us_vhost_parse_socket_path(const char *q_arg)
 {
/* parse number string */

-   if (strnlen(q_arg, MAX_BASENAME_SZ) > MAX_BASENAME_SZ)
+   if (strnlen(q_arg, PATH_MAX) > PATH_MAX)
return -1;
else
-   snprintf((char*)&dev_basename, MAX_BASENAME_SZ, "%s", q_arg);
+   snprintf((char *)&socket_file, PATH_MAX, "%s", q_arg);

return 0;
 }
@@ -462,7 +459,7 @@ us_vhost_usage(const char *prgname)
RTE_LOG(INFO, VHOST_CONFIG, "%s [EAL options] -- -p PORTMASK\n"
"   --vm2vm [0|1|2]\n"
"   --rx_retry [0|1] --mergeable [0|1] --stats [0-N]\n"
-   "   --dev-basename \n"
+   "   --socket-file \n"
"   --nb-devices ND\n"
"   -p PORTMASK: Set mask for ports to be used by 
application\n"
"   --vm2vm [0|1|2]: disable/software(default)/hardware 
vm2vm comms\n"
@@ -472,7 +469,7 @@ us_vhost_usage(const char *prgname)
"   --mergeable [0|1]: disable(default)/enable RX mergeable 
buffers\n"
"   --vlan-strip [0|1]: disable/enable(default) RX VLAN 
strip on host\n"
"   --stats [0-N]: 0: Disable stats, N: Time in seconds to 
print stats\n"
-   "   --dev-basename: The basename to be used for the 
character device.\n"
+   "   --socket-file: The path of the socket file.\n"
"   --tx-csum [0|1] disable/enable TX checksum offload.\n"
"   --tso [0|1] disable/enable TCP segment offload.\n"
"   --client register a vhost-user socket as client 
mode.\n",
@@ -497,7 +494,7 @@ us_vhost_parse_args(int argc, char **argv)
{"mergeable", required_argument, NULL, 0},
{"vlan-strip", required_argument, NULL, 0},
{"stats", required_argument, NULL, 0},
-   {"dev-basename", 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},
@@ -638,7 +635,8 @@ us_vhost_parse_args(int argc, char **argv)
if (!strncmp(long_option[option_index].name, "stats", 
MAX_LONG_OPT_SZ)) {
ret = parse_num_opt(optarg, INT32_MAX);
if (ret == -1) {
-   RTE_LOG(INFO, VHOST_CONFIG, "Invalid 
argument for stats [0..N]\n");
+   RTE_LOG(INFO, VHOST_CONFIG,
+   "Invalid argument for stats 
[0..N]\n");
us_vhost_usage(prgname);
return -1;
} else {
@@ -646,10 +644,13 @@ us_vhost_parse_args(int argc, char **argv)
}
}

-   /* Set character device basename. */
-   if (!strncmp(long_option[option_index].name, 
"dev-basename", MAX_LONG_OPT_SZ)) {
-   if (us_vhost_parse_basename(optarg) == -1) {
-   RTE_LOG(INFO, VHOST_CONFIG, "Invalid 
argument for character devic

[dpdk-dev] [PATCH 0/2] examples/vhost: rename a CLI option and support multiple socket files

2016-08-20 Thread Jiayu Hu
Patch 1: rename the CLI option "dev-basename".
Patch 2: add multiple socket files support. 

---
Changes in v2:
-Change "int nb_sockets" into "static int nb_sockets".
-Remove the initialization of socket_files and nb_sockets.
-Remove redundant comments.
-Break the long line which is over 80 characters into two lines.

Jiayu Hu (2):
  examples/vhost: rename dev-basename
  examples/vhost: support multiple socket files

 examples/vhost/main.c | 76 +--
 1 file changed, 49 insertions(+), 27 deletions(-)

-- 
2.7.4



[dpdk-dev] help

2016-08-20 Thread harshavardhan Reddy
Hi Jay,

You can refer the below sample applications from the doc.

23. Multi-process Sample Application

35. Distributor Sample Application


 you can also enable multi queue with symmetric hash at PMD level.
check this *rte_eth_conf  structure and  **rxmode options.*

*Regards,*
*Hvr*

On Fri, Aug 19, 2016 at 6:41 PM,  wrote:

> Hi ,
>
> I needs to enable SMP(symmetrical multiprocessing) in DPDK PMD NIC Port .
>
> Please let me know the command to get the same
>
> Thanks
> jayachandran
> The information contained in this electronic message and any attachments
> to this message are intended for the exclusive use of the addressee(s) and
> may contain proprietary, confidential or privileged information. If you are
> not the intended recipient, you should not disseminate, distribute or copy
> this e-mail. Please notify the sender immediately and destroy all copies of
> this message and any attachments. WARNING: Computer viruses can be
> transmitted via email. The recipient should check this email and any
> attachments for the presence of viruses. The company accepts no liability
> for any damage caused by any virus transmitted by this email.
> www.wipro.com
>