From: Slava Ovsiienko <viacheslavo@mellanox.com>
To: Shahaf Shuler <shahafs@mellanox.com>, "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH 05/14] net/mlx5: add multiport IB device support to probing
Date: Thu, 21 Mar 2019 12:54:19 +0000 [thread overview]
Message-ID: <AM4PR05MB32659FABB372CF80D8C48766D2420@AM4PR05MB3265.eurprd05.prod.outlook.com> (raw)
Message-ID: <20190321125419.Yc8rJGUp6wvjVg1j0LjYHz9gla_Nwjld0NgB6Izm9RY@z> (raw)
In-Reply-To: <AM0PR0502MB379530F0A7A5ABE2467A4CD8C3420@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 05/14] net/mlx5: add multiport IB device support to
> probing
>
> Thursday, March 21, 2019 10:11 AM, Viacheslav Ovsiienko:
> > Subject: [PATCH 05/14] net/mlx5: add multiport IB device support to
> > probing
> >
> > mlx5_pci_probe() routine is refactored to probe the ports of found
> > Infiniband devices. All active ports (with attached network
> > interface), belonging to the same Infiniband device will use the
> > signle shared Infiniband context of that device.
> >
> > Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
> > ---
> > drivers/net/mlx5/mlx5.c | 302 +++++++++++++++++++++++++++++++++---
> > ------------
> > 1 file changed, 210 insertions(+), 92 deletions(-)
> >
> > diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c index
> > 89c30af..100e9f4 100644
> > --- a/drivers/net/mlx5/mlx5.c
> > +++ b/drivers/net/mlx5/mlx5.c
> > @@ -130,6 +130,16 @@
> > /** Driver-specific log messages type. */ int mlx5_logtype;
> >
> > +/** Data associated with devices to spawn. */ struct
> > +mlx5_dev_spawn_data {
> > + uint32_t ifindex; /**< Network interface index. */
> > + uint32_t max_port; /**< IB device maximal port index. */
> > + uint32_t ibv_port; /**< IB device physical port index. */
> > + struct mlx5_switch_info info; /**< Switch information. */
> > + struct ibv_device *ibv_dev; /**< Associated IB device. */
> > + struct rte_eth_dev *eth_dev; /**< Associated Ethernet device. */ };
> > +
> > /**
> > * Prepare shared data between primary and secondary process.
> > */
> > @@ -716,12 +726,10 @@
> > *
> > * @param dpdk_dev
> > * Backing DPDK device.
> > - * @param ibv_dev
> > - * Verbs device.
> > + * @param spawn
> > + * Verbs device parameters (name, port, switch_info) to spawn.
> > * @param config
> > * Device configuration parameters.
> > - * @param[in] switch_info
> > - * Switch properties of Ethernet device.
> > *
> > * @return
> > * A valid Ethernet device object on success, NULL otherwise and
> rte_errno
> > @@ -732,10 +740,11 @@
> > */
> > static struct rte_eth_dev *
> > mlx5_dev_spawn(struct rte_device *dpdk_dev,
> > - struct ibv_device *ibv_dev,
> > - struct mlx5_dev_config config,
> > - const struct mlx5_switch_info *switch_info)
> > + struct mlx5_dev_spawn_data *spawn,
> > + struct mlx5_dev_config config)
> > {
> > + const struct mlx5_switch_info *switch_info = &spawn->info;
> > + struct ibv_device *ibv_dev = spawn->ibv_dev;
> > struct ibv_context *ctx = NULL;
> > struct ibv_device_attr_ex attr;
> > struct ibv_port_attr port_attr;
> > @@ -952,7 +961,7 @@
> > return eth_dev;
> > }
> > /* Check port status. */
> > - err = mlx5_glue->query_port(ctx, 1, &port_attr);
> > + err = mlx5_glue->query_port(ctx, spawn->ibv_port, &port_attr);
> > if (err) {
> > DRV_LOG(ERR, "port query failed: %s", strerror(err));
> > goto error;
> > @@ -1316,14 +1325,6 @@
> > return NULL;
> > }
> >
> > -/** Data associated with devices to spawn. */ -struct
> > mlx5_dev_spawn_data {
> > - unsigned int ifindex; /**< Network interface index. */
> > - struct mlx5_switch_info info; /**< Switch information. */
> > - struct ibv_device *ibv_dev; /**< Associated IB device. */
> > - struct rte_eth_dev *eth_dev; /**< Associated Ethernet device. */
> > -};
> > -
> > /**
> > * Comparison callback to sort device data.
> > *
> > @@ -1380,7 +1381,9 @@ struct mlx5_dev_spawn_data {
> > struct rte_pci_device *pci_dev) {
> > struct ibv_device **ibv_list;
> > - unsigned int n = 0;
> > + unsigned int nd = 0;
> > + unsigned int np = 0;
> > + unsigned int ns = 0;
>
> This fields names are not informative. Find a better ones.
Would the adding clarifying comments be enough ?
nd - Number of (PCI) Devices (nd != 1 means we have multiple devices with the same BDF - old schema)
np - Number of (device) Ports (nd =1, np 1...n means we have new multiport device)
ns - Number to Spawn (deduced index - number of iterations)
This names are used as indices, long names may make code less readable, IMHO.
>
> > struct mlx5_dev_config dev_config;
> > int ret;
> >
> > @@ -1392,8 +1395,14 @@ struct mlx5_dev_spawn_data {
> > DRV_LOG(ERR, "cannot list devices, is ib_uverbs loaded?");
> > return -rte_errno;
> > }
> > -
> > + /*
> > + * First scan the list of all Infiniband devices to find
> > + * matching ones, gathering into the list.
> > + */
> > struct ibv_device *ibv_match[ret + 1];
> > + int nl_route = -1;
> > + int nl_rdma = -1;
> > + unsigned int i;
> >
> > while (ret-- > 0) {
> > struct rte_pci_addr pci_addr;
> > @@ -1408,77 +1417,183 @@ struct mlx5_dev_spawn_data {
> > continue;
> > DRV_LOG(INFO, "PCI information matches for device \"%s\"",
> > ibv_list[ret]->name);
> > - ibv_match[n++] = ibv_list[ret];
> > + ibv_match[nd++] = ibv_list[ret];
> > + }
> > + ibv_match[nd] = NULL;
> > + if (!nd) {
> > + /* No device macthes, just complain and bail out. */
> > + mlx5_glue->free_device_list(ibv_list);
> > + DRV_LOG(WARNING,
> > + "no Verbs device matches PCI device " PCI_PRI_FMT
> > ","
> > + " are kernel drivers loaded?",
> > + pci_dev->addr.domain, pci_dev->addr.bus,
> > + pci_dev->addr.devid, pci_dev->addr.function);
> > + rte_errno = ENOENT;
> > + ret = -rte_errno;
> > + return ret;
> > + }
> > + nl_route = mlx5_nl_init(NETLINK_ROUTE);
> > + nl_rdma = mlx5_nl_init(NETLINK_RDMA);
> > + if (nd == 1) {
> > + /*
> > + * Found single matching device may have multiple ports.
> > + * Each port may be representor, we have to check the port
> > + * number and check the representors existence.
> > + */
> > + if (nl_rdma >= 0)
> > + np = mlx5_nl_portnum(nl_rdma, ibv_match[0]-
> > >name);
> > + if (!np)
> > + DRV_LOG(WARNING, "can not get IB device \"%s\""
> > + " ports number", ibv_match[0]-
> > >name);
>
> This warning is misleading. On old kernels it is expected to have multiple IB
> devices instead of a single one w/ multiple ports.
> The level should be changed for debug, and the syntax to express it is not an
> error.
>
> > }
> > - ibv_match[n] = NULL;
> > -
> > - struct mlx5_dev_spawn_data list[n];
> > - int nl_route = n ? mlx5_nl_init(NETLINK_ROUTE) : -1;
> > - int nl_rdma = n ? mlx5_nl_init(NETLINK_RDMA) : -1;
> > - unsigned int i;
> > - unsigned int u;
> > -
> > /*
> > - * The existence of several matching entries (n > 1) means port
> > - * representors have been instantiated. No existing Verbs call nor
> > - * /sys entries can tell them apart, this can only be done through
> > - * Netlink calls assuming kernel drivers are recent enough to
> > - * support them.
> > - *
> > - * In the event of identification failure through Netlink, try again
> > - * through sysfs, then either:
> > - *
> > - * 1. No device matches (n == 0), complain and bail out.
> > - * 2. A single IB device matches (n == 1) and is not a representor,
> > - * assume no switch support.
> > - * 3. Otherwise no safe assumptions can be made; complain louder
> > and
> > - * bail out.
> > + * Now we can determine the maximal
> > + * amount of devices to be spawned.
> > */
> > - for (i = 0; i != n; ++i) {
> > - list[i].ibv_dev = ibv_match[i];
> > - list[i].eth_dev = NULL;
> > - if (nl_rdma < 0)
> > - list[i].ifindex = 0;
> > - else
> > - list[i].ifindex = mlx5_nl_ifindex
> > - (nl_rdma, list[i].ibv_dev->name, 1);
> > - if (nl_route < 0 ||
> > - !list[i].ifindex ||
> > - mlx5_nl_switch_info(nl_route, list[i].ifindex,
> > - &list[i].info) ||
> > - ((!list[i].info.representor && !list[i].info.master) &&
> > - mlx5_sysfs_switch_info(list[i].ifindex, &list[i].info))) {
> > - list[i].ifindex = 0;
> > - memset(&list[i].info, 0, sizeof(list[i].info));
> > - continue;
> > + struct mlx5_dev_spawn_data list[np ? np : nd];
> > +
> > + if (np > 1) {
> > + /*
> > + * Signle IB device with multiple ports found,
> > + * it may be E-Switch master device and representors.
> > + * We have to perform identification trough the ports.
> > + */
> > + assert(nl_rdma >= 0);
> > + assert(ns == 0);
> > + assert(nd == 1);
> > + for (i = 1; i <= np; ++i) {
> > + list[ns].max_port = np;
> > + list[ns].ibv_port = i;
> > + list[ns].ibv_dev = ibv_match[0];
> > + list[ns].eth_dev = NULL;
> > + list[ns].ifindex = mlx5_nl_ifindex
> > + (nl_rdma, list[ns].ibv_dev->name, i);
> > + if (!list[ns].ifindex) {
> > + /*
> > + * No network interface index found for the
> > + * specified port, it means there is no
> > + * representor on this port. It's OK,
> > + * there can be disabled ports, for example
> > + * if sriov_numvfs < sriov_totalvfs.
> > + */
> > + continue;
> > + }
> > + ret = -1;
> > + if (nl_route >= 0)
> > + ret = mlx5_nl_switch_info
> > + (nl_route,
> > + list[ns].ifindex,
> > + &list[ns].info);
> > + if (ret || (!list[ns].info.representor &&
> > + !list[ns].info.master)) {
> > + /*
> > + * We failed to recognize representors with
> > + * Netlink, let's try to perform the task
> > + * with sysfs.
> > + */
> > + ret = mlx5_sysfs_switch_info
> > + (list[ns].ifindex,
> > + &list[ns].info);
> > + }
> > + if (!ret && (list[ns].info.representor ^
> > + list[ns].info.master))
> > + ns++;
> > }
> > - }
> > - if (nl_rdma >= 0)
> > - close(nl_rdma);
> > - if (nl_route >= 0)
> > - close(nl_route);
> > - /* Count unidentified devices. */
> > - for (u = 0, i = 0; i != n; ++i)
> > - if (!list[i].info.master && !list[i].info.representor)
> > - ++u;
> > - if (u) {
> > - if (n == 1 && u == 1) {
> > - /* Case #2. */
> > - DRV_LOG(INFO, "no switch support detected");
> > - } else {
> > - /* Case #3. */
> > + if (!ns) {
> > + DRV_LOG(ERR,
> > + "unable to recognize master/representors"
> > + " on the IB device with multiple ports");
> > + rte_errno = ENOENT;
> > + ret = -rte_errno;
> > + goto exit;
> > + }
> > + } else {
> > + /*
> > + * The existence of several matching entries (nd > 1) means
> > + * port representors have been instantiated. No existing
> > Verbs
> > + * call nor sysfs entries can tell them apart, this can only
> > + * be done through Netlink calls assuming kernel drivers are
> > + * recent enough to support them.
> > + *
> > + * In the event of identification failure through Netlink,
> > + * try again through sysfs, then:
> > + *
> > + * 1. A single IB device matches (nd == 1) with single
> > + * port (np=0/1) and is not a representor, assume
> > + * no switch support.
> > + *
> > + * 2. Otherwise no safe assumptions can be made;
> > + * complain louder and bail out.
> > + */
> > + np = 1;
> > + for (i = 0; i != nd; ++i) {
> > + memset(&list[ns].info, 0, sizeof(list[ns].info));
> > + list[ns].max_port = 1;
> > + list[ns].ibv_port = 1;
> > + list[ns].ibv_dev = ibv_match[i];
> > + list[ns].eth_dev = NULL;
> > + list[ns].ifindex = 0;
> > + if (nl_rdma >= 0)
> > + list[ns].ifindex = mlx5_nl_ifindex
> > + (nl_rdma, list[ns].ibv_dev->name, 1);
> > + if (!list[ns].ifindex) {
> > + /*
> > + * No network interface index found for the
> > + * specified device, it means there it is not
> > + * a representor/master.
> > + */
> > + continue;
> > + }
> > + ret = -1;
> > + if (nl_route >= 0)
> > + ret = mlx5_nl_switch_info
> > + (nl_route,
> > + list[ns].ifindex,
> > + &list[ns].info);
> > + if (ret || (!list[ns].info.representor &&
> > + !list[ns].info.master)) {
> > + /*
> > + * We failed to recognize representors with
> > + * Netlink, let's try to perform the task
> > + * with sysfs.
> > + */
> > + ret = mlx5_sysfs_switch_info
> > + (list[ns].ifindex,
> > + &list[ns].info);
> > + }
> > + if (!ret && (list[ns].info.representor ^
> > + list[ns].info.master)) {
> > + ns++;
> > + } else if ((nd == 1) &&
> > + !list[ns].info.representor &&
> > + !list[ns].info.master) {
> > + /*
> > + * Single IB device with
> > + * one physical port and
> > + * attached network device.
> > + * May be SRIOV is not enabled
> > + * or there is no representors.
> > + */
> > + DRV_LOG(INFO, "no E-Switch support
> > detected");
> > + ns++;
> > + break;
> > + }
> > + }
> > + if (!ns) {
> > DRV_LOG(ERR,
> > - "unable to tell which of the matching
> > devices"
> > - " is the master (lack of kernel support?)");
> > - n = 0;
> > + "unable to recognize master/representors"
> > + " on the multiple IB devices");
> > + rte_errno = ENOENT;
> > + ret = -rte_errno;
> > + goto exit;
> > }
> > }
> > + assert(ns);
> > /*
> > * Sort list to probe devices in natural order for users convenience
> > * (i.e. master first, then representors from lowest to highest ID).
> > */
> > - if (n)
> > - qsort(list, n, sizeof(*list), mlx5_dev_spawn_data_cmp);
> > + qsort(list, ns, sizeof(*list), mlx5_dev_spawn_data_cmp);
> > /* Default configuration. */
> > dev_config = (struct mlx5_dev_config){
> > .hw_padding = 0,
> > @@ -1497,7 +1612,7 @@ struct mlx5_dev_spawn_data {
> > .min_rxqs_num = MLX5_MPRQ_MIN_RXQS,
> > },
> > };
> > - /* Device speicific configuration. */
> > + /* Device specific configuration. */
> > switch (pci_dev->id.device_id) {
> > case PCI_DEVICE_ID_MELLANOX_CONNECTX5BF:
> > dev_config.txqs_vec =
> > MLX5_VPMD_MAX_TXQS_BLUEFIELD; @@ -1514,12 +1629,12 @@ struct
> > mlx5_dev_spawn_data {
> > /* Set architecture-dependent default value if unset. */
> > if (dev_config.txqs_vec == MLX5_ARG_UNSET)
> > dev_config.txqs_vec = MLX5_VPMD_MAX_TXQS;
> > - for (i = 0; i != n; ++i) {
> > + for (i = 0; i != ns; ++i) {
> > uint32_t restore;
> >
> > list[i].eth_dev = mlx5_dev_spawn(&pci_dev->device,
> > - list[i].ibv_dev, dev_config,
> > - &list[i].info);
> > + &list[i],
> > + dev_config);
> > if (!list[i].eth_dev) {
> > if (rte_errno != EBUSY && rte_errno != EEXIST)
> > break;
> > @@ -1532,16 +1647,7 @@ struct mlx5_dev_spawn_data {
> > list[i].eth_dev->data->dev_flags |= restore;
> > rte_eth_dev_probing_finish(list[i].eth_dev);
> > }
> > - mlx5_glue->free_device_list(ibv_list);
> > - if (!n) {
> > - DRV_LOG(WARNING,
> > - "no Verbs device matches PCI device " PCI_PRI_FMT
> > ","
> > - " are kernel drivers loaded?",
> > - pci_dev->addr.domain, pci_dev->addr.bus,
> > - pci_dev->addr.devid, pci_dev->addr.function);
> > - rte_errno = ENOENT;
> > - ret = -rte_errno;
> > - } else if (i != n) {
> > + if (i != ns) {
> > DRV_LOG(ERR,
> > "probe of PCI device " PCI_PRI_FMT " aborted after"
> > " encountering an error: %s",
> > @@ -1563,6 +1669,18 @@ struct mlx5_dev_spawn_data {
> > } else {
> > ret = 0;
> > }
> > +exit:
> > + /*
> > + * Do the routine cleanup:
> > + * - close opened Netlink sockets
> > + * - free the Infiniband device list
> > + */
> > + if (nl_rdma >= 0)
> > + close(nl_rdma);
> > + if (nl_route >= 0)
> > + close(nl_route);
> > + assert(ibv_list);
> > + mlx5_glue->free_device_list(ibv_list);
> > return ret;
> > }
> >
> > --
> > 1.8.3.1
next prev parent reply other threads:[~2019-03-21 12:54 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 [this message]
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
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=AM4PR05MB32659FABB372CF80D8C48766D2420@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).