DPDK patches and discussions
 help / color / mirror / Atom feed
From: Slava Ovsiienko <viacheslavo@mellanox.com>
To: Shahaf Shuler <shahafs@mellanox.com>, "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH 12/14] net/mlx5: update install/uninstall int handler routines
Date: Thu, 21 Mar 2019 14:01:53 +0000	[thread overview]
Message-ID: <AM4PR05MB326571964E8E5CD095857D0AD2420@AM4PR05MB3265.eurprd05.prod.outlook.com> (raw)
Message-ID: <20190321140153.rPv9OvCaLgqVbyGmljHaUw3b8waeU8Y1CdIzczIIEf8@z> (raw)
In-Reply-To: <AM0PR0502MB37950318C44F54097E1BEF6FC3420@AM0PR0502MB3795.eurprd05.prod.outlook.com>

> -----Original Message-----
> From: Shahaf Shuler
> Sent: Thursday, March 21, 2019 14:15
> To: Slava Ovsiienko <viacheslavo@mellanox.com>; dev@dpdk.org
> Subject: RE: [PATCH 12/14] net/mlx5: update install/uninstall int handler
> routines
> 
> Thursday, March 21, 2019 10:11 AM, Viacheslav Ovsiienko:
> > Subject: [PATCH 12/14] net/mlx5: update install/uninstall int handler
> > routines
> >
> > We are implementing the support for multport Infiniband device withj
> > representors attached to these multiple ports. Asynchronous device
> > event notifications (link status change, removal event, etc.) should
> > be shared between ports. We are going to implement shared event
> > handler and this patch introduces appropriate device structure changes
> > and updated event handler install and uninstall routines.
> >
> > Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
> > ---
> >  drivers/net/mlx5/mlx5.c        |  14 ++++-
> >  drivers/net/mlx5/mlx5.h        |   3 +-
> >  drivers/net/mlx5/mlx5_ethdev.c | 118
> > ++++++++++++++++++++++++++++++++---------
> >  3 files changed, 107 insertions(+), 28 deletions(-)
> >
> > diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c index
> > 312c42b..44b7a87 100644
> > --- a/drivers/net/mlx5/mlx5.c
> > +++ b/drivers/net/mlx5/mlx5.c
> > @@ -165,6 +165,7 @@ struct mlx5_dev_spawn_data {  {
> >  	struct mlx5_ibv_shared *sh;
> >  	int err = 0;
> > +	uint32_t i;
> >
> >  	assert(spawn);
> >  	/* Search for IB context by device name. */ @@ -212,6 +213,9 @@
> > struct mlx5_dev_spawn_data {
> >  		sizeof(sh->ibdev_name));
> >  	strncpy(sh->ibdev_path, sh->ctx->device->ibdev_path,
> >  		sizeof(sh->ibdev_path));
> > +	pthread_mutex_init(&sh->intr_mutex, NULL);
> > +	for (i = 0; i < sh->max_port; i++)
> > +		sh->port[i].port_id = RTE_MAX_ETHPORTS;
> 
> Why you need struct here? You port array is not just of uint32_t type?

For the case if we would like to add some other per-port data
accessible only from shared context. For example - in interrupt
handler we have only one parameter - the shared context, and we
should deduce eth_dev for the some device (not DPDK port_id) port

Actually it is uint_32_t array for now, but it is easily extandable,
for example, we could add per-port context for interrupt
handler.
	
> 
> >  	if (rte_eal_process_type() == RTE_PROC_SECONDARY) {
> >  		/*
> >  		 * For secondary process we just open the IB device @@ -
> > 276,6 +280,15 @@ struct mlx5_dev_spawn_data {
> >  		assert(!sh->pd);
> >  	}
> >  	LIST_REMOVE(sh, next);
> > +	/*
> > +	 *  Ensure there is no async event handler installed.
> > +	 *  Only primary process handles async device events.
> > +	 **/
> > +	assert(!sh->intr_cnt);
> > +	if (sh->intr_cnt)
> > +		rte_intr_callback_unregister
> > +			(&sh->intr_handle, mlx5_dev_interrupt_handler,
> > sh);
> > +	pthread_mutex_destroy(&sh->intr_mutex);
> >  	if (sh->pd)
> >  		claim_zero(mlx5_glue->dealloc_pd(sh->pd));
> >  	if (sh->ctx)
> > @@ -283,7 +296,6 @@ struct mlx5_dev_spawn_data {
> >  	rte_free(sh);
> >  }
> >
> > -
> >  /**
> >   * Prepare shared data between primary and secondary process.
> >   */
> > diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h index
> > d816d24..f23298e 100644
> > --- a/drivers/net/mlx5/mlx5.h
> > +++ b/drivers/net/mlx5/mlx5.h
> > @@ -216,6 +216,8 @@ struct mlx5_ibv_shared {
> >  	char ibdev_name[IBV_SYSFS_NAME_MAX]; /* IB device name. */
> >  	char ibdev_path[IBV_SYSFS_PATH_MAX]; /* IB device path for
> secondary
> > */
> >  	struct ibv_device_attr_ex device_attr; /* Device properties. */
> > +	pthread_mutex_t intr_mutex; /* Interrupt config mutex. */
> > +	uint32_t intr_cnt; /* Interrupt handler reference counter. */
> >  	struct rte_intr_handle intr_handle; /* Interrupt handler for device.
> > */
> >  	struct mlx5_ibv_shared_port port[]; /* per device port data array.
> > */ }; @@ -245,7 +247,6 @@ struct mlx5_priv {
> >  	struct mlx5_txq_data *(*txqs)[]; /* TX queues. */
> >  	struct rte_mempool *mprq_mp; /* Mempool for Multi-Packet RQ.
> > */
> >  	struct rte_eth_rss_conf rss_conf; /* RSS configuration. */
> > -	struct rte_intr_handle intr_handle; /* Interrupt handler. */
> >  	unsigned int (*reta_idx)[]; /* RETA index table. */
> >  	unsigned int reta_idx_n; /* RETA index size. */
> >  	struct mlx5_drop drop_queue; /* Flow drop queues. */ diff --git
> > a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c
> > index
> > 1b2173b..8358cd2 100644
> > --- a/drivers/net/mlx5/mlx5_ethdev.c
> > +++ b/drivers/net/mlx5/mlx5_ethdev.c
> > @@ -1109,6 +1109,96 @@ int mlx5_fw_version_get(struct rte_eth_dev
> > *dev, char *fw_ver, size_t fw_size)  }
> >
> >  /**
> > + * Uninstall shared asynchronous device events handler.
> > + * This function is implemeted to support event sharing
> > + * between multiple ports of single IB device.
> > + *
> > + * @param dev
> > + *   Pointer to Ethernet device.
> > + */
> > +static void
> > +mlx5_dev_shared_handler_uninstall(struct rte_eth_dev *dev) {
> > +	struct mlx5_priv *priv = dev->data->dev_private;
> > +	struct mlx5_ibv_shared *sh = priv->sh;
> > +
> > +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> > +		return;
> > +	pthread_mutex_lock(&sh->intr_mutex);
> > +	assert(priv->ibv_port);
> > +	assert(priv->ibv_port <= sh->max_port);
> > +	assert(dev->data->port_id < RTE_MAX_ETHPORTS);
> > +	if (sh->port[priv->ibv_port - 1].port_id >= RTE_MAX_ETHPORTS)
> > +		goto exit;
> > +	assert(sh->port[priv->ibv_port - 1].port_id ==
> > +					(uint32_t)dev->data->port_id);
> > +	assert(sh->intr_cnt);
> > +	sh->port[priv->ibv_port - 1].port_id = RTE_MAX_ETHPORTS;
> > +	if (!sh->intr_cnt || --sh->intr_cnt)
> > +		goto exit;
> > +	rte_intr_callback_unregister(&sh->intr_handle,
> > +				     mlx5_dev_interrupt_handler, sh);
> > +	sh->intr_handle.fd = 0;
> > +	sh->intr_handle.type = RTE_INTR_HANDLE_UNKNOWN;
> > +exit:
> > +	pthread_mutex_unlock(&sh->intr_mutex);
> > +}
> > +
> > +/**
> > + * Install shared asyncronous device events handler.
> > + * This function is implemeted to support event sharing
> > + * between multiple ports of single IB device.
> > + *
> > + * @param dev
> > + *   Pointer to Ethernet device.
> > + */
> > +static void
> > +mlx5_dev_shared_handler_install(struct rte_eth_dev *dev) {
> > +	struct mlx5_priv *priv = dev->data->dev_private;
> > +	struct mlx5_ibv_shared *sh = priv->sh;
> > +	int ret;
> > +	int flags;
> > +
> > +	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
> > +		return;
> > +	pthread_mutex_lock(&sh->intr_mutex);
> > +	assert(priv->ibv_port);
> > +	assert(priv->ibv_port <= sh->max_port);
> > +	assert(dev->data->port_id < RTE_MAX_ETHPORTS);
> > +	if (sh->port[priv->ibv_port - 1].port_id < RTE_MAX_ETHPORTS) {
> 
> I don't understand why need an array to understand handler is already
> exists.
> Why not the refcnt?

Array is needed to deduce the eth_dev from the device port number.
Here is interrupt handler flow:
- entry
- for()
 - get_event()
- get device port (note, this is IB port index, not DPDK port id) from event
- check in the array whether the handler is installed for this port 
  (array member is less than RTE_MAX_ETHPORTS)
-  get DPDK port_id from array()

Array member just indicates whether the handler for  given IB port is
installed. Reference counter is used for rte_intr_callback_register/
rte_intr_callback_unregister calls. 
rte_intr_callback_register() is called when the first handler for the port is
being installed.
rte_intr_callback_unregister() is called when the lastt handler for the port is
being gone away.

> 
> > +		/* The handler is already installed for this port. */
> > +		assert(sh->intr_cnt++);
> 
> Asserts are compiled only in debug mode. You should not put any logic (++)
> into them.

Yes, it is a bug, there should no be "++" at all. Thanks. 

> 
> > +		goto exit;
> > +	}
> > +	sh->port[priv->ibv_port - 1].port_id = (uint32_t)dev->data->port_id;
> > +	if (sh->intr_cnt) {
> > +		sh->intr_cnt++;
> > +		goto exit;
> > +	}
> > +	/* No shared handler installed. */
> > +	assert(sh->ctx->async_fd > 0);
> > +	flags = fcntl(sh->ctx->async_fd, F_GETFL);
> > +	ret = fcntl(sh->ctx->async_fd, F_SETFL, flags | O_NONBLOCK);
> > +	if (ret) {
> > +		DRV_LOG(INFO, "failed to change file descriptor"
> > +			      " async event queue");
> > +		/* Indicate there will be no interrupts. */
> > +		dev->data->dev_conf.intr_conf.lsc = 0;
> > +		dev->data->dev_conf.intr_conf.rmv = 0;
> > +		sh->port[priv->ibv_port - 1].port_id = RTE_MAX_ETHPORTS;
> > +		goto exit;
> > +	}
> > +	sh->intr_handle.fd = sh->ctx->async_fd;
> > +	sh->intr_handle.type = RTE_INTR_HANDLE_EXT;
> > +	rte_intr_callback_register(&sh->intr_handle,
> > +				   mlx5_dev_interrupt_handler, sh);
> > +	sh->intr_cnt++;
> > +exit:
> > +	pthread_mutex_unlock(&sh->intr_mutex);
> > +}
> > +
> > +/**
> >   * Uninstall interrupt handler.
> >   *
> >   * @param dev
> > @@ -1119,15 +1209,10 @@ int mlx5_fw_version_get(struct rte_eth_dev
> > *dev, char *fw_ver, size_t fw_size)  {
> >  	struct mlx5_priv *priv = dev->data->dev_private;
> >
> > -	if (dev->data->dev_conf.intr_conf.lsc ||
> > -	    dev->data->dev_conf.intr_conf.rmv)
> > -		rte_intr_callback_unregister(&priv->intr_handle,
> > -					     mlx5_dev_interrupt_handler,
> > dev);
> > +	mlx5_dev_shared_handler_uninstall(dev);
> >  	if (priv->primary_socket)
> >  		rte_intr_callback_unregister(&priv->intr_handle_socket,
> >  					     mlx5_dev_handler_socket, dev);
> > -	priv->intr_handle.fd = 0;
> > -	priv->intr_handle.type = RTE_INTR_HANDLE_UNKNOWN;
> >  	priv->intr_handle_socket.fd = 0;
> >  	priv->intr_handle_socket.type = RTE_INTR_HANDLE_UNKNOWN;  }
> @@
> > -1142,28 +1227,9 @@ int mlx5_fw_version_get(struct rte_eth_dev *dev,
> > char *fw_ver, size_t fw_size)
> > mlx5_dev_interrupt_handler_install(struct rte_eth_dev *dev)  {
> >  	struct mlx5_priv *priv = dev->data->dev_private;
> > -	struct ibv_context *ctx = priv->sh->ctx;
> >  	int ret;
> > -	int flags;
> >
> > -	assert(ctx->async_fd > 0);
> > -	flags = fcntl(ctx->async_fd, F_GETFL);
> > -	ret = fcntl(ctx->async_fd, F_SETFL, flags | O_NONBLOCK);
> > -	if (ret) {
> > -		DRV_LOG(INFO,
> > -			"port %u failed to change file descriptor async event"
> > -			" queue",
> > -			dev->data->port_id);
> > -		dev->data->dev_conf.intr_conf.lsc = 0;
> > -		dev->data->dev_conf.intr_conf.rmv = 0;
> > -	}
> > -	if (dev->data->dev_conf.intr_conf.lsc ||
> > -	    dev->data->dev_conf.intr_conf.rmv) {
> > -		priv->intr_handle.fd = ctx->async_fd;
> > -		priv->intr_handle.type = RTE_INTR_HANDLE_EXT;
> > -		rte_intr_callback_register(&priv->intr_handle,
> > -					   mlx5_dev_interrupt_handler, dev);
> > -	}
> > +	mlx5_dev_shared_handler_install(dev);
> >  	ret = mlx5_socket_init(dev);
> >  	if (ret)
> >  		DRV_LOG(ERR, "port %u cannot initialise socket: %s",
> > --
> > 1.8.3.1


  parent reply	other threads:[~2019-03-21 14:01 UTC|newest]

Thread overview: 217+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-28 18:02 [dpdk-dev] [RFC 00/10] net/mlx5: add support for multiport IB devices Viacheslav Ovsiienko
2019-02-28 18:02 ` [dpdk-dev] [RFC 01/10] net/mlx5: add multiport IB device port structure Viacheslav Ovsiienko
2019-02-28 18:02 ` [dpdk-dev] [RFC 02/10] net/mlx5: modify get ifindex routine for multiport IB Viacheslav Ovsiienko
2019-02-28 18:02 ` [dpdk-dev] [RFC 03/10] net/mlx5: add getting IB ports number " Viacheslav Ovsiienko
2019-02-28 18:02 ` [dpdk-dev] [RFC 04/10] net/mlx5: add multiport IB device support to probing Viacheslav Ovsiienko
2019-02-28 18:03 ` [dpdk-dev] [RFC 05/10] net/mlx5: add IB shared context alloc/free functions Viacheslav Ovsiienko
2019-02-28 18:03 ` [dpdk-dev] [RFC 06/10] net/mlx5: switch to the names in the shared IB context Viacheslav Ovsiienko
2019-02-28 18:03 ` [dpdk-dev] [RFC 07/10] net/mlx5: switch to the shared Protection Domain Viacheslav Ovsiienko
2019-02-28 18:03 ` [dpdk-dev] [RFC 08/10] net/mlx5: switch to the shared context IB attributes Viacheslav Ovsiienko
2019-02-28 18:03 ` [dpdk-dev] [RFC 09/10] net/mlx5: switch to the shared IB device context Viacheslav Ovsiienko
2019-02-28 18:03 ` [dpdk-dev] [RFC 10/10] net/mlx5: provide IB port for the object being created Viacheslav Ovsiienko
2019-03-21  8:11 ` [dpdk-dev] [PATCH 00/14] net/mlx5: add support for multiport IB devices Viacheslav Ovsiienko
2019-03-21  8:11   ` Viacheslav Ovsiienko
2019-03-21  8:11   ` [dpdk-dev] [PATCH 01/14] net/mlx5: add representor recognition on kernels 5.x Viacheslav Ovsiienko
2019-03-21  8:11     ` Viacheslav Ovsiienko
2019-03-21 12:13     ` Shahaf Shuler
2019-03-21 12:13       ` Shahaf Shuler
2019-03-21 15:08       ` Stephen Hemminger
2019-03-21 15:08         ` Stephen Hemminger
2019-03-21 15:31         ` Slava Ovsiienko
2019-03-21 15:31           ` Slava Ovsiienko
2019-03-21 19:08           ` Stephen Hemminger
2019-03-21 19:08             ` Stephen Hemminger
2019-03-22  8:15             ` Slava Ovsiienko
2019-03-22  8:15               ` Slava Ovsiienko
2019-03-21  8:11   ` [dpdk-dev] [PATCH 02/14] net/mlx5: introduce multiport IB device shared structure Viacheslav Ovsiienko
2019-03-21  8:11     ` Viacheslav Ovsiienko
2019-03-21  8:11   ` [dpdk-dev] [PATCH 03/14] net/mlx5: modify get ifindex routine for multiport IB Viacheslav Ovsiienko
2019-03-21  8:11     ` Viacheslav Ovsiienko
2019-03-21 12:14     ` Shahaf Shuler
2019-03-21 12:14       ` Shahaf Shuler
2019-03-21 12:58       ` Slava Ovsiienko
2019-03-21 12:58         ` Slava Ovsiienko
2019-03-21  8:11   ` [dpdk-dev] [PATCH 04/14] net/mlx5: add getting IB ports number " Viacheslav Ovsiienko
2019-03-21  8:11     ` Viacheslav Ovsiienko
2019-03-21 12:14     ` Shahaf Shuler
2019-03-21 12:14       ` Shahaf Shuler
2019-03-21  8:11   ` [dpdk-dev] [PATCH 05/14] net/mlx5: add multiport IB device support to probing Viacheslav Ovsiienko
2019-03-21  8:11     ` Viacheslav Ovsiienko
2019-03-21 12:14     ` Shahaf Shuler
2019-03-21 12:14       ` Shahaf Shuler
2019-03-21 12:54       ` Slava Ovsiienko
2019-03-21 12:54         ` Slava Ovsiienko
2019-03-21 12:57         ` Slava Ovsiienko
2019-03-21 12:57           ` Slava Ovsiienko
2019-03-24  9:00           ` Shahaf Shuler
2019-03-24  9:00             ` Shahaf Shuler
2019-03-21  8:11   ` [dpdk-dev] [PATCH 06/14] net/mlx5: add IB shared context alloc/free functions Viacheslav Ovsiienko
2019-03-21  8:11     ` Viacheslav Ovsiienko
2019-03-21 12:14     ` Shahaf Shuler
2019-03-21 12:14       ` Shahaf Shuler
2019-03-21  8:11   ` [dpdk-dev] [PATCH 07/14] net/mlx5: switch to the names in the shared IB context Viacheslav Ovsiienko
2019-03-21  8:11     ` Viacheslav Ovsiienko
2019-03-21 12:14     ` Shahaf Shuler
2019-03-21 12:14       ` Shahaf Shuler
2019-03-21  8:11   ` [dpdk-dev] [PATCH 08/14] net/mlx5: switch to the shared Protection Domain Viacheslav Ovsiienko
2019-03-21  8:11     ` Viacheslav Ovsiienko
2019-03-21 12:14     ` Shahaf Shuler
2019-03-21 12:14       ` Shahaf Shuler
2019-03-21  8:11   ` [dpdk-dev] [PATCH 09/14] net/mlx5: switch to the shared context IB attributes Viacheslav Ovsiienko
2019-03-21  8:11     ` Viacheslav Ovsiienko
2019-03-21 12:14     ` Shahaf Shuler
2019-03-21 12:14       ` Shahaf Shuler
2019-03-21  8:11   ` [dpdk-dev] [PATCH 10/14] net/mlx5: switch to the shared IB device context Viacheslav Ovsiienko
2019-03-21  8:11     ` Viacheslav Ovsiienko
2019-03-21 12:14     ` Shahaf Shuler
2019-03-21 12:14       ` Shahaf Shuler
2019-03-21  8:11   ` [dpdk-dev] [PATCH 11/14] net/mlx5: provide IB port for the object being created Viacheslav Ovsiienko
2019-03-21  8:11     ` Viacheslav Ovsiienko
2019-03-21 12:15     ` Shahaf Shuler
2019-03-21 12:15       ` Shahaf Shuler
2019-03-21  8:11   ` [dpdk-dev] [PATCH 12/14] net/mlx5: update install/uninstall int handler routines Viacheslav Ovsiienko
2019-03-21  8:11     ` Viacheslav Ovsiienko
2019-03-21 12:15     ` Shahaf Shuler
2019-03-21 12:15       ` Shahaf Shuler
2019-03-21 14:01       ` Slava Ovsiienko [this message]
2019-03-21 14:01         ` Slava Ovsiienko
2019-03-24  9:07         ` Shahaf Shuler
2019-03-24  9:07           ` Shahaf Shuler
2019-03-21  8:11   ` [dpdk-dev] [PATCH 13/14] net/mlx5: update event handler for multiport IB devices Viacheslav Ovsiienko
2019-03-21  8:11     ` Viacheslav Ovsiienko
2019-03-21 12:15     ` Shahaf Shuler
2019-03-21 12:15       ` Shahaf Shuler
2019-03-21 14:08       ` Slava Ovsiienko
2019-03-21 14:08         ` Slava Ovsiienko
2019-03-21  8:11   ` [dpdk-dev] [PATCH 14/14] net/mlx5: add source vport match to the ingress rules Viacheslav Ovsiienko
2019-03-21  8:11     ` Viacheslav Ovsiienko
2019-03-21 12:15     ` Shahaf Shuler
2019-03-21 12:15       ` Shahaf Shuler
2019-03-21 14:11       ` Slava Ovsiienko
2019-03-21 14:11         ` Slava Ovsiienko
2019-03-24  9:13         ` Shahaf Shuler
2019-03-24  9:13           ` Shahaf Shuler
2019-03-25  7:44           ` Slava Ovsiienko
2019-03-25  7:44             ` Slava Ovsiienko
2019-03-21 12:13   ` [dpdk-dev] [PATCH 00/14] net/mlx5: add support for multiport IB devices Shahaf Shuler
2019-03-21 12:13     ` Shahaf Shuler
2019-03-21 12:58     ` Slava Ovsiienko
2019-03-21 12:58       ` Slava Ovsiienko
2019-03-25 17:03   ` [dpdk-dev] [PATCH v2 " Viacheslav Ovsiienko
2019-03-25 17:03     ` Viacheslav Ovsiienko
2019-03-25 17:03     ` [dpdk-dev] [PATCH v2 01/13] net/mlx5: add representor recognition on kernels 5.x Viacheslav Ovsiienko
2019-03-25 17:03       ` Viacheslav Ovsiienko
2019-03-25 18:06       ` Stephen Hemminger
2019-03-25 18:06         ` Stephen Hemminger
2019-03-25 18:07       ` Stephen Hemminger
2019-03-25 18:07         ` Stephen Hemminger
2019-03-26  7:33         ` Slava Ovsiienko
2019-03-26  7:33           ` Slava Ovsiienko
2019-03-26 12:20       ` Shahaf Shuler
2019-03-26 12:20         ` Shahaf Shuler
2019-03-25 17:03     ` [dpdk-dev] [PATCH v2 02/13] net/mlx5: modify get ifindex routine for multiport IB Viacheslav Ovsiienko
2019-03-25 17:03       ` Viacheslav Ovsiienko
2019-03-26 11:47       ` Shahaf Shuler
2019-03-26 11:47         ` Shahaf Shuler
2019-03-25 17:03     ` [dpdk-dev] [PATCH v2 03/13] net/mlx5: add getting IB ports number " Viacheslav Ovsiienko
2019-03-25 17:03       ` Viacheslav Ovsiienko
2019-03-25 17:03     ` [dpdk-dev] [PATCH v2 04/13] net/mlx5: add multiport IB device support to probing Viacheslav Ovsiienko
2019-03-25 17:03       ` Viacheslav Ovsiienko
2019-03-26 12:02       ` Shahaf Shuler
2019-03-26 12:02         ` Shahaf Shuler
2019-03-25 17:03     ` [dpdk-dev] [PATCH v2 05/13] net/mlx5: add IB shared context alloc/free functions Viacheslav Ovsiienko
2019-03-25 17:03       ` Viacheslav Ovsiienko
2019-03-26 12:10       ` Shahaf Shuler
2019-03-26 12:10         ` Shahaf Shuler
2019-03-25 17:03     ` [dpdk-dev] [PATCH v2 06/13] net/mlx5: switch to the names in the shared IB context Viacheslav Ovsiienko
2019-03-25 17:03       ` Viacheslav Ovsiienko
2019-03-25 17:03     ` [dpdk-dev] [PATCH v2 07/13] net/mlx5: switch to the shared Protection Domain Viacheslav Ovsiienko
2019-03-25 17:03       ` Viacheslav Ovsiienko
2019-03-25 17:03     ` [dpdk-dev] [PATCH v2 08/13] net/mlx5: switch to the shared context IB attributes Viacheslav Ovsiienko
2019-03-25 17:03       ` Viacheslav Ovsiienko
2019-03-25 17:03     ` [dpdk-dev] [PATCH v2 09/13] net/mlx5: switch to the shared IB device context Viacheslav Ovsiienko
2019-03-25 17:03       ` Viacheslav Ovsiienko
2019-03-25 17:03     ` [dpdk-dev] [PATCH v2 10/13] net/mlx5: provide IB port for the object being created Viacheslav Ovsiienko
2019-03-25 17:03       ` Viacheslav Ovsiienko
2019-03-25 17:03     ` [dpdk-dev] [PATCH v2 11/13] net/mlx5: update install/uninstall int handler routines Viacheslav Ovsiienko
2019-03-25 17:03       ` Viacheslav Ovsiienko
2019-03-26 12:14       ` Shahaf Shuler
2019-03-26 12:14         ` Shahaf Shuler
2019-03-25 17:03     ` [dpdk-dev] [PATCH v2 12/13] net/mlx5: update event handler for multiport IB devices Viacheslav Ovsiienko
2019-03-25 17:03       ` Viacheslav Ovsiienko
2019-03-26 12:16       ` Shahaf Shuler
2019-03-26 12:16         ` Shahaf Shuler
2019-03-25 17:03     ` [dpdk-dev] [PATCH v2 13/13] net/mlx5: add source vport match to the ingress rules Viacheslav Ovsiienko
2019-03-25 17:03       ` Viacheslav Ovsiienko
2019-03-26 12:21       ` Shahaf Shuler
2019-03-26 12:21         ` Shahaf Shuler
2019-03-26 15:35     ` [dpdk-dev] [PATCH v3 00/14] net/mlx5: add support for multiport IB devices Viacheslav Ovsiienko
2019-03-26 15:35       ` Viacheslav Ovsiienko
2019-03-26 15:35       ` [dpdk-dev] [PATCH v3 01/13] net/mlx5: add representor recognition on kernels 5.x Viacheslav Ovsiienko
2019-03-26 15:35         ` Viacheslav Ovsiienko
2019-03-26 19:37         ` Shahaf Shuler
2019-03-26 19:37           ` Shahaf Shuler
2019-03-26 15:35       ` [dpdk-dev] [PATCH v3 02/13] net/mlx5: modify get ifindex routine for multiport IB Viacheslav Ovsiienko
2019-03-26 15:35         ` Viacheslav Ovsiienko
2019-03-26 15:35       ` [dpdk-dev] [PATCH v3 03/13] net/mlx5: add getting IB ports number " Viacheslav Ovsiienko
2019-03-26 15:35         ` Viacheslav Ovsiienko
2019-03-26 15:35       ` [dpdk-dev] [PATCH v3 04/13] net/mlx5: add multiport IB device support to probing Viacheslav Ovsiienko
2019-03-26 15:35         ` Viacheslav Ovsiienko
2019-03-26 15:35       ` [dpdk-dev] [PATCH v3 05/13] net/mlx5: add IB shared context alloc/free functions Viacheslav Ovsiienko
2019-03-26 15:35         ` Viacheslav Ovsiienko
2019-03-26 19:35         ` Shahaf Shuler
2019-03-26 19:35           ` Shahaf Shuler
2019-03-26 15:35       ` [dpdk-dev] [PATCH v3 06/13] net/mlx5: switch to the names in the shared IB context Viacheslav Ovsiienko
2019-03-26 15:35         ` Viacheslav Ovsiienko
2019-03-26 15:35       ` [dpdk-dev] [PATCH v3 07/13] net/mlx5: switch to the shared Protection Domain Viacheslav Ovsiienko
2019-03-26 15:35         ` Viacheslav Ovsiienko
2019-03-26 15:35       ` [dpdk-dev] [PATCH v3 08/13] net/mlx5: switch to the shared context IB attributes Viacheslav Ovsiienko
2019-03-26 15:35         ` Viacheslav Ovsiienko
2019-03-26 15:35       ` [dpdk-dev] [PATCH v3 09/13] net/mlx5: switch to the shared IB device context Viacheslav Ovsiienko
2019-03-26 15:35         ` Viacheslav Ovsiienko
2019-03-26 15:35       ` [dpdk-dev] [PATCH v3 10/13] net/mlx5: provide IB port for the object being created Viacheslav Ovsiienko
2019-03-26 15:35         ` Viacheslav Ovsiienko
2019-03-26 15:35       ` [dpdk-dev] [PATCH v3 11/13] net/mlx5: update install/uninstall int handler routines Viacheslav Ovsiienko
2019-03-26 15:35         ` Viacheslav Ovsiienko
2019-03-26 15:35       ` [dpdk-dev] [PATCH v3 12/13] net/mlx5: update event handler for multiport IB devices Viacheslav Ovsiienko
2019-03-26 15:35         ` Viacheslav Ovsiienko
2019-03-26 15:35       ` [dpdk-dev] [PATCH v3 13/13] net/mlx5: add source vport match to the ingress rules Viacheslav Ovsiienko
2019-03-26 15:35         ` Viacheslav Ovsiienko
2019-03-26 19:38         ` Shahaf Shuler
2019-03-26 19:38           ` Shahaf Shuler
2019-03-27  6:00       ` [dpdk-dev] [PATCH v3 00/14] net/mlx5: add support for multiport IB devices Shahaf Shuler
2019-03-27  6:00         ` Shahaf Shuler
2019-03-27  7:31         ` Slava Ovsiienko
2019-03-27  7:31           ` Slava Ovsiienko
2019-03-27 13:15       ` [dpdk-dev] [PATCH v4 " Viacheslav Ovsiienko
2019-03-27 13:15         ` Viacheslav Ovsiienko
2019-03-27 13:15         ` [dpdk-dev] [PATCH v4 01/13] net/mlx5: add representor recognition on kernels 5.x Viacheslav Ovsiienko
2019-03-27 13:15           ` Viacheslav Ovsiienko
2019-03-27 13:15         ` [dpdk-dev] [PATCH v4 02/13] net/mlx5: modify get ifindex routine for multiport IB Viacheslav Ovsiienko
2019-03-27 13:15           ` Viacheslav Ovsiienko
2019-03-27 13:15         ` [dpdk-dev] [PATCH v4 03/13] net/mlx5: add getting IB ports number " Viacheslav Ovsiienko
2019-03-27 13:15           ` Viacheslav Ovsiienko
2019-03-27 13:15         ` [dpdk-dev] [PATCH v4 04/13] net/mlx5: add multiport IB device support to probing Viacheslav Ovsiienko
2019-03-27 13:15           ` Viacheslav Ovsiienko
2019-03-27 13:15         ` [dpdk-dev] [PATCH v4 05/13] net/mlx5: add IB shared context alloc/free functions Viacheslav Ovsiienko
2019-03-27 13:15           ` Viacheslav Ovsiienko
2019-03-27 13:15         ` [dpdk-dev] [PATCH v4 06/13] net/mlx5: switch to the names in the shared IB context Viacheslav Ovsiienko
2019-03-27 13:15           ` Viacheslav Ovsiienko
2019-03-27 13:15         ` [dpdk-dev] [PATCH v4 07/13] net/mlx5: switch to the shared Protection Domain Viacheslav Ovsiienko
2019-03-27 13:15           ` Viacheslav Ovsiienko
2019-03-27 13:15         ` [dpdk-dev] [PATCH v4 08/13] net/mlx5: switch to the shared context IB attributes Viacheslav Ovsiienko
2019-03-27 13:15           ` Viacheslav Ovsiienko
2019-03-27 13:15         ` [dpdk-dev] [PATCH v4 09/13] net/mlx5: switch to the shared IB device context Viacheslav Ovsiienko
2019-03-27 13:15           ` Viacheslav Ovsiienko
2019-04-02  4:49           ` Shahaf Shuler
2019-04-02  4:49             ` Shahaf Shuler
2019-03-27 13:15         ` [dpdk-dev] [PATCH v4 10/13] net/mlx5: provide IB port for the object being created Viacheslav Ovsiienko
2019-03-27 13:15           ` Viacheslav Ovsiienko
2019-03-27 13:15         ` [dpdk-dev] [PATCH v4 11/13] net/mlx5: update install/uninstall int handler routines Viacheslav Ovsiienko
2019-03-27 13:15           ` Viacheslav Ovsiienko
2019-03-27 13:15         ` [dpdk-dev] [PATCH v4 12/13] net/mlx5: update event handler for multiport IB devices Viacheslav Ovsiienko
2019-03-27 13:15           ` Viacheslav Ovsiienko
2019-03-27 13:15         ` [dpdk-dev] [PATCH v4 13/13] net/mlx5: add source vport match to the ingress rules Viacheslav Ovsiienko
2019-03-27 13:15           ` Viacheslav Ovsiienko
2019-03-28  9:21         ` [dpdk-dev] [PATCH v4 00/14] net/mlx5: add support for multiport IB devices Shahaf Shuler
2019-03-28  9:21           ` Shahaf Shuler

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=AM4PR05MB326571964E8E5CD095857D0AD2420@AM4PR05MB3265.eurprd05.prod.outlook.com \
    --to=viacheslavo@mellanox.com \
    --cc=dev@dpdk.org \
    --cc=shahafs@mellanox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).