* [dpdk-dev] [PATCH] net/mlx5: add support for ConnectX-5 NICs
@ 2017-01-05 2:32 Yongseok Koh
2017-01-05 10:38 ` Adrien Mazarguil
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Yongseok Koh @ 2017-01-05 2:32 UTC (permalink / raw)
To: ferruh.yigit; +Cc: dev, adrien.mazarguil, Yongseok Koh
Add PCI device ID for ConnectX-5 and enable multi-packet send for PF and
VF.
Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
---
ConnectX-5 is a newly announced NIC of Mellanox. This patch includes basic
enablement of ConnectX-5.
drivers/net/mlx5/mlx5.c | 42 +++++++++++++++++++++++++++++++++++++-----
drivers/net/mlx5/mlx5.h | 4 ++++
drivers/net/mlx5/mlx5_ethdev.c | 7 ++-----
drivers/net/mlx5/mlx5_txq.c | 2 +-
4 files changed, 44 insertions(+), 11 deletions(-)
diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index b97b6d16a..6293c1fda 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -286,7 +286,7 @@ mlx5_args_check(const char *key, const char *val, void *opaque)
} else if (strcmp(MLX5_TXQS_MIN_INLINE, key) == 0) {
priv->txqs_inline = tmp;
} else if (strcmp(MLX5_TXQ_MPW_EN, key) == 0) {
- priv->mps = !!tmp;
+ priv->mps &= !!tmp; /* Enable MPW only if HW supports */
} else {
WARN("%s: unknown parameter", key);
return -EINVAL;
@@ -408,10 +408,26 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
sriov = ((pci_dev->id.device_id ==
PCI_DEVICE_ID_MELLANOX_CONNECTX4VF) ||
(pci_dev->id.device_id ==
- PCI_DEVICE_ID_MELLANOX_CONNECTX4LXVF));
- /* Multi-packet send is only supported by ConnectX-4 Lx PF. */
- mps = (pci_dev->id.device_id ==
- PCI_DEVICE_ID_MELLANOX_CONNECTX4LX);
+ PCI_DEVICE_ID_MELLANOX_CONNECTX4LXVF) ||
+ (pci_dev->id.device_id ==
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5VF) ||
+ (pci_dev->id.device_id ==
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5EXVF));
+ /*
+ * Multi-packet send is supported by ConnectX-4 Lx PF as well
+ * as all ConnectX-5 devices.
+ */
+ switch (pci_dev->id.device_id) {
+ case PCI_DEVICE_ID_MELLANOX_CONNECTX4LX:
+ case PCI_DEVICE_ID_MELLANOX_CONNECTX5:
+ case PCI_DEVICE_ID_MELLANOX_CONNECTX5VF:
+ case PCI_DEVICE_ID_MELLANOX_CONNECTX5EX:
+ case PCI_DEVICE_ID_MELLANOX_CONNECTX5EXVF:
+ mps = 1;
+ break;
+ default:
+ mps = 0;
+ }
INFO("PCI information matches, using device \"%s\""
" (SR-IOV: %s, MPS: %s)",
list[i]->name,
@@ -719,6 +735,22 @@ static const struct rte_pci_id mlx5_pci_id_map[] = {
PCI_DEVICE_ID_MELLANOX_CONNECTX4LXVF)
},
{
+ RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5)
+ },
+ {
+ RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5VF)
+ },
+ {
+ RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5EX)
+ },
+ {
+ RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5EXVF)
+ },
+ {
.vendor_id = 0
}
};
diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h
index c415ce32c..ee62e044e 100644
--- a/drivers/net/mlx5/mlx5.h
+++ b/drivers/net/mlx5/mlx5.h
@@ -83,6 +83,10 @@ enum {
PCI_DEVICE_ID_MELLANOX_CONNECTX4VF = 0x1014,
PCI_DEVICE_ID_MELLANOX_CONNECTX4LX = 0x1015,
PCI_DEVICE_ID_MELLANOX_CONNECTX4LXVF = 0x1016,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5 = 0x1017,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5VF = 0x1018,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5EX = 0x1019,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5EXVF = 0x101a,
};
struct priv {
diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c
index 65228d5f9..fbb1b6566 100644
--- a/drivers/net/mlx5/mlx5_ethdev.c
+++ b/drivers/net/mlx5/mlx5_ethdev.c
@@ -1517,14 +1517,11 @@ void
priv_select_tx_function(struct priv *priv)
{
priv->dev->tx_pkt_burst = mlx5_tx_burst;
- /* Display warning for unsupported configurations. */
- if (priv->sriov && priv->mps)
- WARN("multi-packet send WQE cannot be used on a SR-IOV setup");
/* Select appropriate TX function. */
- if ((priv->sriov == 0) && priv->mps && priv->txq_inline) {
+ if (priv->mps && priv->txq_inline) {
priv->dev->tx_pkt_burst = mlx5_tx_burst_mpw_inline;
DEBUG("selected MPW inline TX function");
- } else if ((priv->sriov == 0) && priv->mps) {
+ } else if (priv->mps) {
priv->dev->tx_pkt_burst = mlx5_tx_burst_mpw;
DEBUG("selected MPW TX function");
}
diff --git a/drivers/net/mlx5/mlx5_txq.c b/drivers/net/mlx5/mlx5_txq.c
index 053665d55..4f36402eb 100644
--- a/drivers/net/mlx5/mlx5_txq.c
+++ b/drivers/net/mlx5/mlx5_txq.c
@@ -412,7 +412,7 @@ txq_ctrl_setup(struct rte_eth_dev *dev, struct txq_ctrl *txq_ctrl,
.obj = tmpl.qp,
/* Enable multi-packet send if supported. */
.family_flags =
- ((priv->mps && !priv->sriov) ?
+ (priv->mps ?
IBV_EXP_QP_BURST_CREATE_ENABLE_MULTI_PACKET_SEND_WR :
0),
};
--
2.11.0
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH] net/mlx5: add support for ConnectX-5 NICs
2017-01-05 2:32 [dpdk-dev] [PATCH] net/mlx5: add support for ConnectX-5 NICs Yongseok Koh
@ 2017-01-05 10:38 ` Adrien Mazarguil
2017-01-05 11:52 ` [dpdk-dev] [PATCH v2] " Yongseok Koh
2017-01-06 0:49 ` [dpdk-dev] [PATCH v3] " Yongseok Koh
2 siblings, 0 replies; 8+ messages in thread
From: Adrien Mazarguil @ 2017-01-05 10:38 UTC (permalink / raw)
To: Yongseok Koh; +Cc: ferruh.yigit, dev
Hi Koh,
On Wed, Jan 04, 2017 at 06:32:19PM -0800, Yongseok Koh wrote:
> Add PCI device ID for ConnectX-5 and enable multi-packet send for PF and
> VF.
>
> Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
> ---
>
> ConnectX-5 is a newly announced NIC of Mellanox. This patch includes basic
> enablement of ConnectX-5.
>
> drivers/net/mlx5/mlx5.c | 42 +++++++++++++++++++++++++++++++++++++-----
> drivers/net/mlx5/mlx5.h | 4 ++++
> drivers/net/mlx5/mlx5_ethdev.c | 7 ++-----
> drivers/net/mlx5/mlx5_txq.c | 2 +-
> 4 files changed, 44 insertions(+), 11 deletions(-)
[...]
While the changes made by this patch are fine, it is missing the mandatory
update of related documentation, specifically:
- doc/guides/nics/mlx5.rst: places where ConnectX-4 is also mentioned must
be updated.
- doc/guides/rel_notes/release_17_02.rst: support for ConnectX-5 must appear
somewhere (you can use past release notes as a template).
--
Adrien Mazarguil
6WIND
^ permalink raw reply [flat|nested] 8+ messages in thread
* [dpdk-dev] [PATCH v2] net/mlx5: add support for ConnectX-5 NICs
2017-01-05 2:32 [dpdk-dev] [PATCH] net/mlx5: add support for ConnectX-5 NICs Yongseok Koh
2017-01-05 10:38 ` Adrien Mazarguil
@ 2017-01-05 11:52 ` Yongseok Koh
2017-01-05 20:26 ` Adrien Mazarguil
2017-01-06 0:49 ` [dpdk-dev] [PATCH v3] " Yongseok Koh
2 siblings, 1 reply; 8+ messages in thread
From: Yongseok Koh @ 2017-01-05 11:52 UTC (permalink / raw)
To: ferruh.yigit; +Cc: dev, adrien.mazarguil, Yongseok Koh
Add PCI device ID for ConnectX-5 and enable multi-packet send for PF and VF
along with changing documentation and release note.
Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
---
ConnectX-5 is a newly announced NIC of Mellanox. This patch includes basic
enablement of ConnectX-5 as well as documentation.
config/common_base | 2 +-
doc/guides/nics/mlx5.rst | 37 +++++++++++++++++-------------
doc/guides/rel_notes/release_17_02.rst | 5 ++++
drivers/net/mlx5/mlx5.c | 42 ++++++++++++++++++++++++++++++----
drivers/net/mlx5/mlx5.h | 4 ++++
drivers/net/mlx5/mlx5_ethdev.c | 7 ++----
drivers/net/mlx5/mlx5_txq.c | 2 +-
7 files changed, 71 insertions(+), 28 deletions(-)
diff --git a/config/common_base b/config/common_base
index faee944c8..bb7beacf6 100644
--- a/config/common_base
+++ b/config/common_base
@@ -204,7 +204,7 @@ CONFIG_RTE_LIBRTE_MLX4_TX_MP_CACHE=8
CONFIG_RTE_LIBRTE_MLX4_SOFT_COUNTERS=1
#
-# Compile burst-oriented Mellanox ConnectX-4 (MLX5) PMD
+# Compile burst-oriented Mellanox ConnectX-4 & ConnectX-5 (MLX5) PMD
#
CONFIG_RTE_LIBRTE_MLX5_PMD=n
CONFIG_RTE_LIBRTE_MLX5_DEBUG=n
diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst
index 98d134190..514232bc8 100644
--- a/doc/guides/nics/mlx5.rst
+++ b/doc/guides/nics/mlx5.rst
@@ -30,10 +30,10 @@
MLX5 poll mode driver
=====================
-The MLX5 poll mode driver library (**librte_pmd_mlx5**) provides support for
-**Mellanox ConnectX-4** and **Mellanox ConnectX-4 Lx** families of
-10/25/40/50/100 Gb/s adapters as well as their virtual functions (VF) in
-SR-IOV context.
+The MLX5 poll mode driver library (**librte_pmd_mlx5**) provides support
+for **Mellanox ConnectX-4**, **Mellanox ConnectX-4 Lx** and **Mellanox
+ConnectX-5** families of 10/25/40/50/100 Gb/s adapters as well as their
+virtual functions (VF) in SR-IOV context.
Information and documentation about these adapters can be found on the
`Mellanox website <http://www.mellanox.com>`__. Help is also provided by the
@@ -185,8 +185,8 @@ Run-time configuration
save PCI bandwidth and improve performance at the cost of a slightly
higher CPU usage.
- It is currently only supported on the ConnectX-4 Lx family of adapters.
- Enabled by default.
+ It is currently only supported on the ConnectX-4 Lx and ConnectX-5
+ families of adapters. Enabled by default.
Prerequisites
-------------
@@ -207,8 +207,8 @@ DPDK and must be installed separately:
- **libmlx5**
- Low-level user space driver library for Mellanox ConnectX-4 devices,
- it is automatically loaded by libibverbs.
+ Low-level user space driver library for Mellanox ConnectX-4/ConnectX-5
+ devices, it is automatically loaded by libibverbs.
This library basically implements send/receive calls to the hardware
queues.
@@ -222,14 +222,15 @@ DPDK and must be installed separately:
Unlike most other PMDs, these modules must remain loaded and bound to
their devices:
- - mlx5_core: hardware driver managing Mellanox ConnectX-4 devices and
- related Ethernet kernel network devices.
+ - mlx5_core: hardware driver managing Mellanox ConnectX-4/ConnectX-5
+ devices and related Ethernet kernel network devices.
- mlx5_ib: InifiniBand device driver.
- ib_uverbs: user space driver for Verbs (entry point for libibverbs).
- **Firmware update**
- Mellanox OFED releases include firmware updates for ConnectX-4 adapters.
+ Mellanox OFED releases include firmware updates for ConnectX-4/ConnectX-5
+ adapters.
Because each release provides new features, these updates must be applied to
match the kernel modules and libraries they come with.
@@ -241,12 +242,16 @@ DPDK and must be installed separately:
Currently supported by DPDK:
-- Mellanox OFED **3.4-1.0.0.0**.
+- Mellanox OFED version:
+ - ConnectX-4: **3.4-1.0.0.0** or higher
+ - ConnectX-4 Lx: **3.4-1.0.0.0** or higher
+ - ConnectX-5: **4.0-0.0.8.1** or higher
- firmware version:
- - ConnectX-4: **12.17.1010**
- - ConnectX-4 Lx: **14.17.1010**
+ - ConnectX-4: **12.17.1010** or higher
+ - ConnectX-4 Lx: **14.17.1010** or higher
+ - ConnectX-5: **16.18.0296** or higher
Getting Mellanox OFED
~~~~~~~~~~~~~~~~~~~~~
@@ -288,8 +293,8 @@ behavior as librte_pmd_mlx4:
Usage example
-------------
-This section demonstrates how to launch **testpmd** with Mellanox ConnectX-4
-devices managed by librte_pmd_mlx5.
+This section demonstrates how to launch **testpmd** with Mellanox
+ConnectX-4/ConnectX-5 devices managed by librte_pmd_mlx5.
#. Load the kernel modules:
diff --git a/doc/guides/rel_notes/release_17_02.rst b/doc/guides/rel_notes/release_17_02.rst
index 699487dfe..6da4d0f8d 100644
--- a/doc/guides/rel_notes/release_17_02.rst
+++ b/doc/guides/rel_notes/release_17_02.rst
@@ -61,6 +61,11 @@ New Features
A new network PMD which supports Solarflare SFN7xxx and SFN8xxx family
of 10/40 Gbps adapters has been added.
+* **Added support for Mellanox ConnectX-5 adpaters (mlx5).**
+
+ Support for Mellanox ConnectX-5 family of 10/25/40/50/100 Gbps adapters
+ has been added to the existing mlx5 PMD.
+
Resolved Issues
---------------
diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index b97b6d16a..6293c1fda 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -286,7 +286,7 @@ mlx5_args_check(const char *key, const char *val, void *opaque)
} else if (strcmp(MLX5_TXQS_MIN_INLINE, key) == 0) {
priv->txqs_inline = tmp;
} else if (strcmp(MLX5_TXQ_MPW_EN, key) == 0) {
- priv->mps = !!tmp;
+ priv->mps &= !!tmp; /* Enable MPW only if HW supports */
} else {
WARN("%s: unknown parameter", key);
return -EINVAL;
@@ -408,10 +408,26 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
sriov = ((pci_dev->id.device_id ==
PCI_DEVICE_ID_MELLANOX_CONNECTX4VF) ||
(pci_dev->id.device_id ==
- PCI_DEVICE_ID_MELLANOX_CONNECTX4LXVF));
- /* Multi-packet send is only supported by ConnectX-4 Lx PF. */
- mps = (pci_dev->id.device_id ==
- PCI_DEVICE_ID_MELLANOX_CONNECTX4LX);
+ PCI_DEVICE_ID_MELLANOX_CONNECTX4LXVF) ||
+ (pci_dev->id.device_id ==
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5VF) ||
+ (pci_dev->id.device_id ==
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5EXVF));
+ /*
+ * Multi-packet send is supported by ConnectX-4 Lx PF as well
+ * as all ConnectX-5 devices.
+ */
+ switch (pci_dev->id.device_id) {
+ case PCI_DEVICE_ID_MELLANOX_CONNECTX4LX:
+ case PCI_DEVICE_ID_MELLANOX_CONNECTX5:
+ case PCI_DEVICE_ID_MELLANOX_CONNECTX5VF:
+ case PCI_DEVICE_ID_MELLANOX_CONNECTX5EX:
+ case PCI_DEVICE_ID_MELLANOX_CONNECTX5EXVF:
+ mps = 1;
+ break;
+ default:
+ mps = 0;
+ }
INFO("PCI information matches, using device \"%s\""
" (SR-IOV: %s, MPS: %s)",
list[i]->name,
@@ -719,6 +735,22 @@ static const struct rte_pci_id mlx5_pci_id_map[] = {
PCI_DEVICE_ID_MELLANOX_CONNECTX4LXVF)
},
{
+ RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5)
+ },
+ {
+ RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5VF)
+ },
+ {
+ RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5EX)
+ },
+ {
+ RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5EXVF)
+ },
+ {
.vendor_id = 0
}
};
diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h
index c415ce32c..ee62e044e 100644
--- a/drivers/net/mlx5/mlx5.h
+++ b/drivers/net/mlx5/mlx5.h
@@ -83,6 +83,10 @@ enum {
PCI_DEVICE_ID_MELLANOX_CONNECTX4VF = 0x1014,
PCI_DEVICE_ID_MELLANOX_CONNECTX4LX = 0x1015,
PCI_DEVICE_ID_MELLANOX_CONNECTX4LXVF = 0x1016,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5 = 0x1017,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5VF = 0x1018,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5EX = 0x1019,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5EXVF = 0x101a,
};
struct priv {
diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c
index 65228d5f9..fbb1b6566 100644
--- a/drivers/net/mlx5/mlx5_ethdev.c
+++ b/drivers/net/mlx5/mlx5_ethdev.c
@@ -1517,14 +1517,11 @@ void
priv_select_tx_function(struct priv *priv)
{
priv->dev->tx_pkt_burst = mlx5_tx_burst;
- /* Display warning for unsupported configurations. */
- if (priv->sriov && priv->mps)
- WARN("multi-packet send WQE cannot be used on a SR-IOV setup");
/* Select appropriate TX function. */
- if ((priv->sriov == 0) && priv->mps && priv->txq_inline) {
+ if (priv->mps && priv->txq_inline) {
priv->dev->tx_pkt_burst = mlx5_tx_burst_mpw_inline;
DEBUG("selected MPW inline TX function");
- } else if ((priv->sriov == 0) && priv->mps) {
+ } else if (priv->mps) {
priv->dev->tx_pkt_burst = mlx5_tx_burst_mpw;
DEBUG("selected MPW TX function");
}
diff --git a/drivers/net/mlx5/mlx5_txq.c b/drivers/net/mlx5/mlx5_txq.c
index 053665d55..4f36402eb 100644
--- a/drivers/net/mlx5/mlx5_txq.c
+++ b/drivers/net/mlx5/mlx5_txq.c
@@ -412,7 +412,7 @@ txq_ctrl_setup(struct rte_eth_dev *dev, struct txq_ctrl *txq_ctrl,
.obj = tmpl.qp,
/* Enable multi-packet send if supported. */
.family_flags =
- ((priv->mps && !priv->sriov) ?
+ (priv->mps ?
IBV_EXP_QP_BURST_CREATE_ENABLE_MULTI_PACKET_SEND_WR :
0),
};
--
2.11.0
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH v2] net/mlx5: add support for ConnectX-5 NICs
2017-01-05 11:52 ` [dpdk-dev] [PATCH v2] " Yongseok Koh
@ 2017-01-05 20:26 ` Adrien Mazarguil
0 siblings, 0 replies; 8+ messages in thread
From: Adrien Mazarguil @ 2017-01-05 20:26 UTC (permalink / raw)
To: Yongseok Koh; +Cc: ferruh.yigit, dev
Hi Koh,
A few remaining comments, please see below.
On Thu, Jan 05, 2017 at 03:52:54AM -0800, Yongseok Koh wrote:
> Add PCI device ID for ConnectX-5 and enable multi-packet send for PF and VF
> along with changing documentation and release note.
>
> Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
> ---
>
> ConnectX-5 is a newly announced NIC of Mellanox. This patch includes basic
> enablement of ConnectX-5 as well as documentation.
>
> config/common_base | 2 +-
> doc/guides/nics/mlx5.rst | 37 +++++++++++++++++-------------
> doc/guides/rel_notes/release_17_02.rst | 5 ++++
> drivers/net/mlx5/mlx5.c | 42 ++++++++++++++++++++++++++++++----
> drivers/net/mlx5/mlx5.h | 4 ++++
> drivers/net/mlx5/mlx5_ethdev.c | 7 ++----
> drivers/net/mlx5/mlx5_txq.c | 2 +-
> 7 files changed, 71 insertions(+), 28 deletions(-)
[...]
> diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst
[...]
> @@ -185,8 +185,8 @@ Run-time configuration
> save PCI bandwidth and improve performance at the cost of a slightly
> higher CPU usage.
>
> - It is currently only supported on the ConnectX-4 Lx family of adapters.
> - Enabled by default.
> + It is currently only supported on the ConnectX-4 Lx and ConnectX-5
> + families of adapters. Enabled by default.
Minor nit, can you remove the double spacing here? I know there is another
one in the same document but it does break the style, it will be fixed
eventually.
[...]
> @@ -241,12 +242,16 @@ DPDK and must be installed separately:
>
> Currently supported by DPDK:
>
> -- Mellanox OFED **3.4-1.0.0.0**.
> +- Mellanox OFED version:
An empty line is missing after this line. It causes the list to not display
properly once exported to other formats.
> + - ConnectX-4: **3.4-1.0.0.0** or higher
> + - ConnectX-4 Lx: **3.4-1.0.0.0** or higher
> + - ConnectX-5: **4.0-0.0.8.1** or higher
>
> - firmware version:
>
> - - ConnectX-4: **12.17.1010**
> - - ConnectX-4 Lx: **14.17.1010**
> + - ConnectX-4: **12.17.1010** or higher
> + - ConnectX-4 Lx: **14.17.1010** or higher
> + - ConnectX-5: **16.18.0296** or higher
"or higher" was implicit until now, if you want to make it explicit I think
it's better to write it once in some other place (e.g. by clarifying
"Currently supported by DPDK"). Falls outside the scope of this patch
though.
> Getting Mellanox OFED
> ~~~~~~~~~~~~~~~~~~~~~
> @@ -288,8 +293,8 @@ behavior as librte_pmd_mlx4:
> Usage example
> -------------
>
> -This section demonstrates how to launch **testpmd** with Mellanox ConnectX-4
> -devices managed by librte_pmd_mlx5.
> +This section demonstrates how to launch **testpmd** with Mellanox
> +ConnectX-4/ConnectX-5 devices managed by librte_pmd_mlx5.
>
> #. Load the kernel modules:
>
> diff --git a/doc/guides/rel_notes/release_17_02.rst b/doc/guides/rel_notes/release_17_02.rst
> index 699487dfe..6da4d0f8d 100644
> --- a/doc/guides/rel_notes/release_17_02.rst
> +++ b/doc/guides/rel_notes/release_17_02.rst
> @@ -61,6 +61,11 @@ New Features
> A new network PMD which supports Solarflare SFN7xxx and SFN8xxx family
> of 10/40 Gbps adapters has been added.
>
> +* **Added support for Mellanox ConnectX-5 adpaters (mlx5).**
Typo, "adpaters".
--
Adrien Mazarguil
6WIND
^ permalink raw reply [flat|nested] 8+ messages in thread
* [dpdk-dev] [PATCH v3] net/mlx5: add support for ConnectX-5 NICs
2017-01-05 2:32 [dpdk-dev] [PATCH] net/mlx5: add support for ConnectX-5 NICs Yongseok Koh
2017-01-05 10:38 ` Adrien Mazarguil
2017-01-05 11:52 ` [dpdk-dev] [PATCH v2] " Yongseok Koh
@ 2017-01-06 0:49 ` Yongseok Koh
2017-01-06 8:50 ` Adrien Mazarguil
2 siblings, 1 reply; 8+ messages in thread
From: Yongseok Koh @ 2017-01-06 0:49 UTC (permalink / raw)
To: ferruh.yigit; +Cc: dev, adrien.mazarguil, Yongseok Koh
Add PCI device ID for ConnectX-5 and enable multi-packet send for PF and VF
along with changing documentation and release note.
Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
---
ConnectX-5 is a newly announced NIC of Mellanox. This patch includes basic
enablement of ConnectX-5 as well as documentation.
config/common_base | 2 +-
doc/guides/nics/mlx5.rst | 34 +++++++++++++++------------
doc/guides/rel_notes/release_17_02.rst | 5 ++++
drivers/net/mlx5/mlx5.c | 42 ++++++++++++++++++++++++++++++----
drivers/net/mlx5/mlx5.h | 4 ++++
drivers/net/mlx5/mlx5_ethdev.c | 7 ++----
drivers/net/mlx5/mlx5_txq.c | 2 +-
7 files changed, 70 insertions(+), 26 deletions(-)
diff --git a/config/common_base b/config/common_base
index faee944c8..bb7beacf6 100644
--- a/config/common_base
+++ b/config/common_base
@@ -204,7 +204,7 @@ CONFIG_RTE_LIBRTE_MLX4_TX_MP_CACHE=8
CONFIG_RTE_LIBRTE_MLX4_SOFT_COUNTERS=1
#
-# Compile burst-oriented Mellanox ConnectX-4 (MLX5) PMD
+# Compile burst-oriented Mellanox ConnectX-4 & ConnectX-5 (MLX5) PMD
#
CONFIG_RTE_LIBRTE_MLX5_PMD=n
CONFIG_RTE_LIBRTE_MLX5_DEBUG=n
diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst
index 98d134190..a41c4327c 100644
--- a/doc/guides/nics/mlx5.rst
+++ b/doc/guides/nics/mlx5.rst
@@ -30,10 +30,10 @@
MLX5 poll mode driver
=====================
-The MLX5 poll mode driver library (**librte_pmd_mlx5**) provides support for
-**Mellanox ConnectX-4** and **Mellanox ConnectX-4 Lx** families of
-10/25/40/50/100 Gb/s adapters as well as their virtual functions (VF) in
-SR-IOV context.
+The MLX5 poll mode driver library (**librte_pmd_mlx5**) provides support
+for **Mellanox ConnectX-4**, **Mellanox ConnectX-4 Lx** and **Mellanox
+ConnectX-5** families of 10/25/40/50/100 Gb/s adapters as well as their
+virtual functions (VF) in SR-IOV context.
Information and documentation about these adapters can be found on the
`Mellanox website <http://www.mellanox.com>`__. Help is also provided by the
@@ -185,8 +185,8 @@ Run-time configuration
save PCI bandwidth and improve performance at the cost of a slightly
higher CPU usage.
- It is currently only supported on the ConnectX-4 Lx family of adapters.
- Enabled by default.
+ It is currently only supported on the ConnectX-4 Lx and ConnectX-5
+ families of adapters. Enabled by default.
Prerequisites
-------------
@@ -207,8 +207,8 @@ DPDK and must be installed separately:
- **libmlx5**
- Low-level user space driver library for Mellanox ConnectX-4 devices,
- it is automatically loaded by libibverbs.
+ Low-level user space driver library for Mellanox ConnectX-4/ConnectX-5
+ devices, it is automatically loaded by libibverbs.
This library basically implements send/receive calls to the hardware
queues.
@@ -222,14 +222,15 @@ DPDK and must be installed separately:
Unlike most other PMDs, these modules must remain loaded and bound to
their devices:
- - mlx5_core: hardware driver managing Mellanox ConnectX-4 devices and
- related Ethernet kernel network devices.
+ - mlx5_core: hardware driver managing Mellanox ConnectX-4/ConnectX-5
+ devices and related Ethernet kernel network devices.
- mlx5_ib: InifiniBand device driver.
- ib_uverbs: user space driver for Verbs (entry point for libibverbs).
- **Firmware update**
- Mellanox OFED releases include firmware updates for ConnectX-4 adapters.
+ Mellanox OFED releases include firmware updates for ConnectX-4/ConnectX-5
+ adapters.
Because each release provides new features, these updates must be applied to
match the kernel modules and libraries they come with.
@@ -241,12 +242,17 @@ DPDK and must be installed separately:
Currently supported by DPDK:
-- Mellanox OFED **3.4-1.0.0.0**.
+- Mellanox OFED version:
+
+ - ConnectX-4: **3.4-1.0.0.0**
+ - ConnectX-4 Lx: **3.4-1.0.0.0**
+ - ConnectX-5: **4.0-0.0.8.1**
- firmware version:
- ConnectX-4: **12.17.1010**
- ConnectX-4 Lx: **14.17.1010**
+ - ConnectX-5: **16.18.0296**
Getting Mellanox OFED
~~~~~~~~~~~~~~~~~~~~~
@@ -288,8 +294,8 @@ behavior as librte_pmd_mlx4:
Usage example
-------------
-This section demonstrates how to launch **testpmd** with Mellanox ConnectX-4
-devices managed by librte_pmd_mlx5.
+This section demonstrates how to launch **testpmd** with Mellanox
+ConnectX-4/ConnectX-5 devices managed by librte_pmd_mlx5.
#. Load the kernel modules:
diff --git a/doc/guides/rel_notes/release_17_02.rst b/doc/guides/rel_notes/release_17_02.rst
index 699487dfe..5762d3f51 100644
--- a/doc/guides/rel_notes/release_17_02.rst
+++ b/doc/guides/rel_notes/release_17_02.rst
@@ -61,6 +61,11 @@ New Features
A new network PMD which supports Solarflare SFN7xxx and SFN8xxx family
of 10/40 Gbps adapters has been added.
+* **Added support for Mellanox ConnectX-5 adapters (mlx5).**
+
+ Support for Mellanox ConnectX-5 family of 10/25/40/50/100 Gbps adapters
+ has been added to the existing mlx5 PMD.
+
Resolved Issues
---------------
diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index b97b6d16a..6293c1fda 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -286,7 +286,7 @@ mlx5_args_check(const char *key, const char *val, void *opaque)
} else if (strcmp(MLX5_TXQS_MIN_INLINE, key) == 0) {
priv->txqs_inline = tmp;
} else if (strcmp(MLX5_TXQ_MPW_EN, key) == 0) {
- priv->mps = !!tmp;
+ priv->mps &= !!tmp; /* Enable MPW only if HW supports */
} else {
WARN("%s: unknown parameter", key);
return -EINVAL;
@@ -408,10 +408,26 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
sriov = ((pci_dev->id.device_id ==
PCI_DEVICE_ID_MELLANOX_CONNECTX4VF) ||
(pci_dev->id.device_id ==
- PCI_DEVICE_ID_MELLANOX_CONNECTX4LXVF));
- /* Multi-packet send is only supported by ConnectX-4 Lx PF. */
- mps = (pci_dev->id.device_id ==
- PCI_DEVICE_ID_MELLANOX_CONNECTX4LX);
+ PCI_DEVICE_ID_MELLANOX_CONNECTX4LXVF) ||
+ (pci_dev->id.device_id ==
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5VF) ||
+ (pci_dev->id.device_id ==
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5EXVF));
+ /*
+ * Multi-packet send is supported by ConnectX-4 Lx PF as well
+ * as all ConnectX-5 devices.
+ */
+ switch (pci_dev->id.device_id) {
+ case PCI_DEVICE_ID_MELLANOX_CONNECTX4LX:
+ case PCI_DEVICE_ID_MELLANOX_CONNECTX5:
+ case PCI_DEVICE_ID_MELLANOX_CONNECTX5VF:
+ case PCI_DEVICE_ID_MELLANOX_CONNECTX5EX:
+ case PCI_DEVICE_ID_MELLANOX_CONNECTX5EXVF:
+ mps = 1;
+ break;
+ default:
+ mps = 0;
+ }
INFO("PCI information matches, using device \"%s\""
" (SR-IOV: %s, MPS: %s)",
list[i]->name,
@@ -719,6 +735,22 @@ static const struct rte_pci_id mlx5_pci_id_map[] = {
PCI_DEVICE_ID_MELLANOX_CONNECTX4LXVF)
},
{
+ RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5)
+ },
+ {
+ RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5VF)
+ },
+ {
+ RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5EX)
+ },
+ {
+ RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5EXVF)
+ },
+ {
.vendor_id = 0
}
};
diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h
index c415ce32c..ee62e044e 100644
--- a/drivers/net/mlx5/mlx5.h
+++ b/drivers/net/mlx5/mlx5.h
@@ -83,6 +83,10 @@ enum {
PCI_DEVICE_ID_MELLANOX_CONNECTX4VF = 0x1014,
PCI_DEVICE_ID_MELLANOX_CONNECTX4LX = 0x1015,
PCI_DEVICE_ID_MELLANOX_CONNECTX4LXVF = 0x1016,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5 = 0x1017,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5VF = 0x1018,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5EX = 0x1019,
+ PCI_DEVICE_ID_MELLANOX_CONNECTX5EXVF = 0x101a,
};
struct priv {
diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c
index 65228d5f9..fbb1b6566 100644
--- a/drivers/net/mlx5/mlx5_ethdev.c
+++ b/drivers/net/mlx5/mlx5_ethdev.c
@@ -1517,14 +1517,11 @@ void
priv_select_tx_function(struct priv *priv)
{
priv->dev->tx_pkt_burst = mlx5_tx_burst;
- /* Display warning for unsupported configurations. */
- if (priv->sriov && priv->mps)
- WARN("multi-packet send WQE cannot be used on a SR-IOV setup");
/* Select appropriate TX function. */
- if ((priv->sriov == 0) && priv->mps && priv->txq_inline) {
+ if (priv->mps && priv->txq_inline) {
priv->dev->tx_pkt_burst = mlx5_tx_burst_mpw_inline;
DEBUG("selected MPW inline TX function");
- } else if ((priv->sriov == 0) && priv->mps) {
+ } else if (priv->mps) {
priv->dev->tx_pkt_burst = mlx5_tx_burst_mpw;
DEBUG("selected MPW TX function");
}
diff --git a/drivers/net/mlx5/mlx5_txq.c b/drivers/net/mlx5/mlx5_txq.c
index 053665d55..4f36402eb 100644
--- a/drivers/net/mlx5/mlx5_txq.c
+++ b/drivers/net/mlx5/mlx5_txq.c
@@ -412,7 +412,7 @@ txq_ctrl_setup(struct rte_eth_dev *dev, struct txq_ctrl *txq_ctrl,
.obj = tmpl.qp,
/* Enable multi-packet send if supported. */
.family_flags =
- ((priv->mps && !priv->sriov) ?
+ (priv->mps ?
IBV_EXP_QP_BURST_CREATE_ENABLE_MULTI_PACKET_SEND_WR :
0),
};
--
2.11.0
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH v3] net/mlx5: add support for ConnectX-5 NICs
2017-01-06 0:49 ` [dpdk-dev] [PATCH v3] " Yongseok Koh
@ 2017-01-06 8:50 ` Adrien Mazarguil
2017-01-06 9:09 ` Thomas Monjalon
2017-01-06 13:32 ` Ferruh Yigit
0 siblings, 2 replies; 8+ messages in thread
From: Adrien Mazarguil @ 2017-01-06 8:50 UTC (permalink / raw)
To: Yongseok Koh; +Cc: ferruh.yigit, dev
On Thu, Jan 05, 2017 at 04:49:31PM -0800, Yongseok Koh wrote:
> Add PCI device ID for ConnectX-5 and enable multi-packet send for PF and VF
> along with changing documentation and release note.
>
> Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Thanks!
--
Adrien Mazarguil
6WIND
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH v3] net/mlx5: add support for ConnectX-5 NICs
2017-01-06 8:50 ` Adrien Mazarguil
@ 2017-01-06 9:09 ` Thomas Monjalon
2017-01-06 13:32 ` Ferruh Yigit
1 sibling, 0 replies; 8+ messages in thread
From: Thomas Monjalon @ 2017-01-06 9:09 UTC (permalink / raw)
To: Adrien Mazarguil, Yongseok Koh; +Cc: dev, ferruh.yigit
2017-01-06 09:50, Adrien Mazarguil:
> On Thu, Jan 05, 2017 at 04:49:31PM -0800, Yongseok Koh wrote:
> > Add PCI device ID for ConnectX-5 and enable multi-packet send for PF and VF
> > along with changing documentation and release note.
> >
> > Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
>
> Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
You'll need to update the website:
http://dpdk.org/browse/tools/dpdk-web/tree/doc/nics.html#n83
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [dpdk-dev] [PATCH v3] net/mlx5: add support for ConnectX-5 NICs
2017-01-06 8:50 ` Adrien Mazarguil
2017-01-06 9:09 ` Thomas Monjalon
@ 2017-01-06 13:32 ` Ferruh Yigit
1 sibling, 0 replies; 8+ messages in thread
From: Ferruh Yigit @ 2017-01-06 13:32 UTC (permalink / raw)
To: Adrien Mazarguil, Yongseok Koh; +Cc: dev
On 1/6/2017 8:50 AM, Adrien Mazarguil wrote:
> On Thu, Jan 05, 2017 at 04:49:31PM -0800, Yongseok Koh wrote:
>> Add PCI device ID for ConnectX-5 and enable multi-packet send for PF and VF
>> along with changing documentation and release note.
>>
>> Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
>
> Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Applied to dpdk-next-net/master, thanks.
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2017-01-06 13:32 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-05 2:32 [dpdk-dev] [PATCH] net/mlx5: add support for ConnectX-5 NICs Yongseok Koh
2017-01-05 10:38 ` Adrien Mazarguil
2017-01-05 11:52 ` [dpdk-dev] [PATCH v2] " Yongseok Koh
2017-01-05 20:26 ` Adrien Mazarguil
2017-01-06 0:49 ` [dpdk-dev] [PATCH v3] " Yongseok Koh
2017-01-06 8:50 ` Adrien Mazarguil
2017-01-06 9:09 ` Thomas Monjalon
2017-01-06 13:32 ` Ferruh Yigit
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).