All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/10] NXP DPAA2 PMD changes
@ 2017-06-22 13:57 Hemant Agrawal
  2017-06-22 13:57 ` [PATCH 01/10] net/dpaa2: set the eth driver from dpaa2 driver Hemant Agrawal
                   ` (10 more replies)
  0 siblings, 11 replies; 13+ messages in thread
From: Hemant Agrawal @ 2017-06-22 13:57 UTC (permalink / raw)
  To: ferruh.yigit; +Cc: dev, shreyansh.jain

This patch series address some of the issues identified during testing on latest code.
Last patch adds the support for multi-segment frames.

Hemant Agrawal (9):
  net/dpaa2: set the eth driver from dpaa2 driver
  net/dpaa2: set data align option in mc firmware
  net/dpaa2: align the queue numbers with mc firmware
  net/dpaa2: check soc version for stashing enable
  net/dpaa2: disable Tx congestion notification
  doc: change the dpaa2 helper repository path
  bus/fslmc: fix the failure loop condition
  net/dpaa2: add support for frame based Tx congestion
  net/dpaa2: add support for multi seg buffers

Shreyansh Jain (1):
  bus/fslmc: add check for memseg availability

 doc/guides/nics/dpaa2.rst                |   6 +-
 drivers/bus/fslmc/fslmc_vfio.c           |  25 ++--
 drivers/bus/fslmc/portal/dpaa2_hw_dpio.c |   3 +-
 drivers/bus/fslmc/portal/dpaa2_hw_pvt.h  |  27 ++++-
 drivers/net/dpaa2/base/dpaa2_hw_dpni.c   |   7 +-
 drivers/net/dpaa2/dpaa2_ethdev.c         |  57 +++++-----
 drivers/net/dpaa2/dpaa2_ethdev.h         |  10 +-
 drivers/net/dpaa2/dpaa2_rxtx.c           | 189 +++++++++++++++++++++++++++++--
 8 files changed, 261 insertions(+), 63 deletions(-)

-- 
2.7.4

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 01/10] net/dpaa2: set the eth driver from dpaa2 driver
  2017-06-22 13:57 [PATCH 00/10] NXP DPAA2 PMD changes Hemant Agrawal
@ 2017-06-22 13:57 ` Hemant Agrawal
  2017-06-22 13:57 ` [PATCH 02/10] net/dpaa2: set data align option in mc firmware Hemant Agrawal
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Hemant Agrawal @ 2017-06-22 13:57 UTC (permalink / raw)
  To: ferruh.yigit; +Cc: dev, shreyansh.jain

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
 drivers/net/dpaa2/dpaa2_ethdev.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c
index da309ac..df11204 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.c
+++ b/drivers/net/dpaa2/dpaa2_ethdev.c
@@ -1533,7 +1533,7 @@ dpaa2_dev_uninit(struct rte_eth_dev *eth_dev)
 }
 
 static int
-rte_dpaa2_probe(struct rte_dpaa2_driver *dpaa2_drv __rte_unused,
+rte_dpaa2_probe(struct rte_dpaa2_driver *dpaa2_drv,
 		struct rte_dpaa2_device *dpaa2_dev)
 {
 	struct rte_eth_dev *eth_dev;
@@ -1560,6 +1560,8 @@ rte_dpaa2_probe(struct rte_dpaa2_driver *dpaa2_drv __rte_unused,
 		}
 	}
 	eth_dev->device = &dpaa2_dev->device;
+	eth_dev->device->driver = &dpaa2_drv->driver;
+
 	dpaa2_dev->eth_dev = eth_dev;
 	eth_dev->data->rx_mbuf_alloc_failed = 0;
 
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 02/10] net/dpaa2: set data align option in mc firmware
  2017-06-22 13:57 [PATCH 00/10] NXP DPAA2 PMD changes Hemant Agrawal
  2017-06-22 13:57 ` [PATCH 01/10] net/dpaa2: set the eth driver from dpaa2 driver Hemant Agrawal
@ 2017-06-22 13:57 ` Hemant Agrawal
  2017-06-22 13:57 ` [PATCH 03/10] net/dpaa2: align the queue numbers with " Hemant Agrawal
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Hemant Agrawal @ 2017-06-22 13:57 UTC (permalink / raw)
  To: ferruh.yigit; +Cc: dev, shreyansh.jain

Configuring the MC FW to configure data alignment by default.
This help in improving performance for some of the platform variants.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
 drivers/net/dpaa2/base/dpaa2_hw_dpni.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/net/dpaa2/base/dpaa2_hw_dpni.c b/drivers/net/dpaa2/base/dpaa2_hw_dpni.c
index 547025d..8bf7687 100644
--- a/drivers/net/dpaa2/base/dpaa2_hw_dpni.c
+++ b/drivers/net/dpaa2/base/dpaa2_hw_dpni.c
@@ -313,11 +313,13 @@ dpaa2_attach_bp_list(struct dpaa2_dev_priv *priv,
 	layout.options = DPNI_BUF_LAYOUT_OPT_DATA_HEAD_ROOM |
 			 DPNI_BUF_LAYOUT_OPT_FRAME_STATUS |
 			 DPNI_BUF_LAYOUT_OPT_PARSER_RESULT |
+			 DPNI_BUF_LAYOUT_OPT_DATA_ALIGN |
 			 DPNI_BUF_LAYOUT_OPT_PRIVATE_DATA_SIZE;
 
 	layout.pass_frame_status = 1;
 	layout.private_data_size = DPAA2_FD_PTA_SIZE;
 	layout.pass_parser_result = 1;
+	layout.data_align = DPAA2_PACKET_LAYOUT_ALIGN;
 	layout.data_head_room = tot_size - DPAA2_FD_PTA_SIZE -
 				DPAA2_MBUF_HW_ANNOTATION;
 	retcode = dpni_set_buffer_layout(dpni, CMD_PRI_LOW, priv->token,
@@ -332,9 +334,8 @@ dpaa2_attach_bp_list(struct dpaa2_dev_priv *priv,
 	bpool_cfg.num_dpbp = 1;
 	bpool_cfg.pools[0].dpbp_id = bp_list->buf_pool.dpbp_node->dpbp_id;
 	bpool_cfg.pools[0].backup_pool = 0;
-	bpool_cfg.pools[0].buffer_size =
-		RTE_ALIGN_CEIL(bp_list->buf_pool.size,
-			       256 /*DPAA2_PACKET_LAYOUT_ALIGN*/);
+	bpool_cfg.pools[0].buffer_size = RTE_ALIGN_CEIL(bp_list->buf_pool.size,
+						DPAA2_PACKET_LAYOUT_ALIGN);
 
 	retcode = dpni_set_pools(dpni, CMD_PRI_LOW, priv->token, &bpool_cfg);
 	if (retcode != 0) {
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 03/10] net/dpaa2: align the queue numbers with mc firmware
  2017-06-22 13:57 [PATCH 00/10] NXP DPAA2 PMD changes Hemant Agrawal
  2017-06-22 13:57 ` [PATCH 01/10] net/dpaa2: set the eth driver from dpaa2 driver Hemant Agrawal
  2017-06-22 13:57 ` [PATCH 02/10] net/dpaa2: set data align option in mc firmware Hemant Agrawal
@ 2017-06-22 13:57 ` Hemant Agrawal
  2017-06-22 13:57 ` [PATCH 04/10] net/dpaa2: check soc version for stashing enable Hemant Agrawal
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Hemant Agrawal @ 2017-06-22 13:57 UTC (permalink / raw)
  To: ferruh.yigit; +Cc: dev, shreyansh.jain

Align dpaa2 pmd driver code to the way MC Firmware manages queues.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
 drivers/net/dpaa2/dpaa2_ethdev.c | 40 ++++++++++++++++------------------------
 drivers/net/dpaa2/dpaa2_ethdev.h |  1 -
 2 files changed, 16 insertions(+), 25 deletions(-)

diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c
index df11204..48e0997 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.c
+++ b/drivers/net/dpaa2/dpaa2_ethdev.c
@@ -273,8 +273,7 @@ dpaa2_alloc_rx_tx_queues(struct rte_eth_dev *dev)
 	}
 
 	vq_id = 0;
-	for (dist_idx = 0; dist_idx < priv->num_dist_per_tc[DPAA2_DEF_TC];
-	     dist_idx++) {
+	for (dist_idx = 0; dist_idx < priv->nb_rx_queues; dist_idx++) {
 		mcq = (struct dpaa2_queue *)priv->rx_vq[vq_id];
 		mcq->tc_index = DPAA2_DEF_TC;
 		mcq->flow_id = dist_idx;
@@ -384,8 +383,8 @@ dpaa2_dev_rx_queue_setup(struct rte_eth_dev *dev,
 	dpaa2_q = (struct dpaa2_queue *)priv->rx_vq[rx_queue_id];
 	dpaa2_q->mb_pool = mb_pool; /**< mbuf pool to populate RX ring. */
 
-	/*Get the tc id and flow id from given VQ id*/
-	flow_id = rx_queue_id % priv->num_dist_per_tc[dpaa2_q->tc_index];
+	/*Get the flow id from given VQ id*/
+	flow_id = rx_queue_id % priv->nb_rx_queues;
 	memset(&cfg, 0, sizeof(struct dpni_queue));
 
 	options = options | DPNI_QUEUE_OPT_USER_CTX;
@@ -458,13 +457,8 @@ dpaa2_dev_tx_queue_setup(struct rte_eth_dev *dev,
 	memset(&tx_conf_cfg, 0, sizeof(struct dpni_queue));
 	memset(&tx_flow_cfg, 0, sizeof(struct dpni_queue));
 
-	if (priv->num_tc == 1) {
-		tc_id = 0;
-		flow_id = tx_queue_id % priv->num_dist_per_tc[tc_id];
-	} else {
-		tc_id = tx_queue_id;
-		flow_id = 0;
-	}
+	tc_id = tx_queue_id;
+	flow_id = 0;
 
 	ret = dpni_set_queue(dpni, CMD_PRI_LOW, priv->token, DPNI_QUEUE_TX,
 			     tc_id, flow_id, options, &tx_flow_cfg);
@@ -1338,7 +1332,7 @@ dpaa2_dev_init(struct rte_eth_dev *eth_dev)
 	struct dpni_attr attr;
 	struct dpaa2_dev_priv *priv = eth_dev->data->dev_private;
 	struct dpni_buffer_layout layout;
-	int i, ret, hw_id;
+	int ret, hw_id;
 
 	PMD_INIT_FUNC_TRACE();
 
@@ -1384,22 +1378,20 @@ dpaa2_dev_init(struct rte_eth_dev *eth_dev)
 	}
 
 	priv->num_tc = attr.num_tcs;
-	for (i = 0; i < attr.num_tcs; i++) {
-		priv->num_dist_per_tc[i] = attr.num_queues;
-		break;
-	}
 
-	/* Distribution is per Tc only,
-	 * so choosing RX queues from default TC only
+	/* Resetting the "num_rx_vqueues" to equal number of queues in first TC
+	 * as only one TC is supported on Rx Side. Once Multiple TCs will be
+	 * in use for Rx processing then this will be changed or removed.
 	 */
-	priv->nb_rx_queues = priv->num_dist_per_tc[DPAA2_DEF_TC];
+	priv->nb_rx_queues = attr.num_queues;
 
-	if (attr.num_tcs == 1)
-		priv->nb_tx_queues = attr.num_queues;
-	else
-		priv->nb_tx_queues = attr.num_tcs;
+	/* TODO:Using hard coded value for number of TX queues due to dependency
+	 * in MC.
+	 */
+	priv->nb_tx_queues = 8;
 
-	PMD_INIT_LOG(DEBUG, "num_tc %d", priv->num_tc);
+	PMD_INIT_LOG(DEBUG, "num TC - RX %d", priv->num_tc);
+	PMD_INIT_LOG(DEBUG, "nb_tx_queues %d", priv->nb_tx_queues);
 	PMD_INIT_LOG(DEBUG, "nb_rx_queues %d", priv->nb_rx_queues);
 
 	priv->hw = dpni_dev;
diff --git a/drivers/net/dpaa2/dpaa2_ethdev.h b/drivers/net/dpaa2/dpaa2_ethdev.h
index 6b37c00..a146088 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.h
+++ b/drivers/net/dpaa2/dpaa2_ethdev.h
@@ -84,7 +84,6 @@ struct dpaa2_dev_priv {
 
 	struct dpaa2_bp_list *bp_list; /**<Attached buffer pool list */
 	uint32_t options;
-	uint16_t num_dist_per_tc[MAX_TCS];
 	uint8_t max_mac_filters;
 	uint8_t max_vlan_filters;
 	uint8_t num_tc;
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 04/10] net/dpaa2: check soc version for stashing enable
  2017-06-22 13:57 [PATCH 00/10] NXP DPAA2 PMD changes Hemant Agrawal
                   ` (2 preceding siblings ...)
  2017-06-22 13:57 ` [PATCH 03/10] net/dpaa2: align the queue numbers with " Hemant Agrawal
@ 2017-06-22 13:57 ` Hemant Agrawal
  2017-06-22 13:57 ` [PATCH 05/10] net/dpaa2: disable Tx congestion notification Hemant Agrawal
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Hemant Agrawal @ 2017-06-22 13:57 UTC (permalink / raw)
  To: ferruh.yigit; +Cc: dev, shreyansh.jain

Instead of qbman version, check the soc version for stashing
enablement decision

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
 drivers/net/dpaa2/dpaa2_ethdev.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c
index 48e0997..767eb9b 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.c
+++ b/drivers/net/dpaa2/dpaa2_ethdev.c
@@ -361,6 +361,7 @@ dpaa2_dev_rx_queue_setup(struct rte_eth_dev *dev,
 {
 	struct dpaa2_dev_priv *priv = dev->data->dev_private;
 	struct fsl_mc_io *dpni = (struct fsl_mc_io *)priv->hw;
+	struct mc_soc_version mc_plat_info = {0};
 	struct dpaa2_queue *dpaa2_q;
 	struct dpni_queue cfg;
 	uint8_t options = 0;
@@ -391,7 +392,11 @@ dpaa2_dev_rx_queue_setup(struct rte_eth_dev *dev,
 	cfg.user_context = (uint64_t)(dpaa2_q);
 
 	/*if ls2088 or rev2 device, enable the stashing */
-	if ((qbman_get_version() & 0xFFFF0000) > QMAN_REV_4000) {
+
+	if (mc_get_soc_version(dpni, CMD_PRI_LOW, &mc_plat_info))
+		PMD_INIT_LOG(ERR, "\tmc_get_soc_version failed\n");
+
+	if ((mc_plat_info.svr & 0xffff0000) != SVR_LS2080A) {
 		options |= DPNI_QUEUE_OPT_FLC;
 		cfg.flc.stash_control = true;
 		cfg.flc.value &= 0xFFFFFFFFFFFFFFC0;
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 05/10] net/dpaa2: disable Tx congestion notification
  2017-06-22 13:57 [PATCH 00/10] NXP DPAA2 PMD changes Hemant Agrawal
                   ` (3 preceding siblings ...)
  2017-06-22 13:57 ` [PATCH 04/10] net/dpaa2: check soc version for stashing enable Hemant Agrawal
@ 2017-06-22 13:57 ` Hemant Agrawal
  2017-06-22 13:57 ` [PATCH 06/10] doc: change the dpaa2 helper repository path Hemant Agrawal
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Hemant Agrawal @ 2017-06-22 13:57 UTC (permalink / raw)
  To: ferruh.yigit; +Cc: dev, shreyansh.jain

Making it off by default.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
 drivers/net/dpaa2/dpaa2_ethdev.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c
index 767eb9b..a1ef1cb 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.c
+++ b/drivers/net/dpaa2/dpaa2_ethdev.c
@@ -1406,9 +1406,6 @@ dpaa2_dev_init(struct rte_eth_dev *eth_dev)
 	priv->max_vlan_filters = attr.vlan_filter_entries;
 	priv->flags = 0;
 
-	priv->flags |= DPAA2_TX_CGR_SUPPORT;
-	PMD_INIT_LOG(INFO, "Enable the tx congestion control support");
-
 	/* Allocate memory for hardware structure for queues */
 	ret = dpaa2_alloc_rx_tx_queues(eth_dev);
 	if (ret) {
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 06/10] doc: change the dpaa2 helper repository path
  2017-06-22 13:57 [PATCH 00/10] NXP DPAA2 PMD changes Hemant Agrawal
                   ` (4 preceding siblings ...)
  2017-06-22 13:57 ` [PATCH 05/10] net/dpaa2: disable Tx congestion notification Hemant Agrawal
@ 2017-06-22 13:57 ` Hemant Agrawal
  2017-06-26 15:01   ` Mcnamara, John
  2017-06-22 13:57 ` [PATCH 07/10] bus/fslmc: fix the failure loop condition Hemant Agrawal
                   ` (4 subsequent siblings)
  10 siblings, 1 reply; 13+ messages in thread
From: Hemant Agrawal @ 2017-06-22 13:57 UTC (permalink / raw)
  To: ferruh.yigit; +Cc: dev, shreyansh.jain

changing the nxp dpdk helper repository from helper to extras

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
 doc/guides/nics/dpaa2.rst | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/doc/guides/nics/dpaa2.rst b/doc/guides/nics/dpaa2.rst
index 1ca27d4..6965121 100644
--- a/doc/guides/nics/dpaa2.rst
+++ b/doc/guides/nics/dpaa2.rst
@@ -473,12 +473,12 @@ separately:
 
   SDK and related information can be obtained from:  `NXP QorIQ SDK  <http://www.nxp.com/products/software-and-tools/run-time-software/linux-sdk/linux-sdk-for-qoriq-processors:SDKLINUX>`_.
 
-- **DPDK Helper Scripts**
+- **DPDK Extra Scripts**
 
   DPAA2 based resources can be configured easily with the help of ready scripts
-  as provided in the DPDK helper repository.
+  as provided in the DPDK Extra repository.
 
-  `DPDK Helper Scripts <https://github.com/qoriq-open-source/dpdk-helper>`_.
+  `DPDK Extras Scripts <https://github.com/qoriq-open-source/dpdk-extras>`_.
 
 Currently supported by DPDK:
 
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 07/10] bus/fslmc: fix the failure loop condition
  2017-06-22 13:57 [PATCH 00/10] NXP DPAA2 PMD changes Hemant Agrawal
                   ` (5 preceding siblings ...)
  2017-06-22 13:57 ` [PATCH 06/10] doc: change the dpaa2 helper repository path Hemant Agrawal
@ 2017-06-22 13:57 ` Hemant Agrawal
  2017-06-22 13:57 ` [PATCH 08/10] bus/fslmc: add check for memseg availability Hemant Agrawal
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Hemant Agrawal @ 2017-06-22 13:57 UTC (permalink / raw)
  To: ferruh.yigit; +Cc: dev, shreyansh.jain

correct the while condition for cleanup in case of failure.

Fixes: a0d5c9caf0f1 ("bus/fslmc: add frame queue based dq storage")
Cc: stable@dpdk.org

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
 drivers/bus/fslmc/portal/dpaa2_hw_dpio.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c b/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c
index 3213237..4c4e918 100644
--- a/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c
+++ b/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c
@@ -437,8 +437,7 @@ dpaa2_alloc_dq_storage(struct queue_storage_info_t *q_storage)
 	}
 	return 0;
 fail:
-	i -= 1;
-	while (i >= 0)
+	while (--i >= 0)
 		rte_free(q_storage->dq_storage[i]);
 
 	return -1;
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 08/10] bus/fslmc: add check for memseg availability
  2017-06-22 13:57 [PATCH 00/10] NXP DPAA2 PMD changes Hemant Agrawal
                   ` (6 preceding siblings ...)
  2017-06-22 13:57 ` [PATCH 07/10] bus/fslmc: fix the failure loop condition Hemant Agrawal
@ 2017-06-22 13:57 ` Hemant Agrawal
  2017-06-22 13:57 ` [PATCH 09/10] net/dpaa2: add support for frame based Tx congestion Hemant Agrawal
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 13+ messages in thread
From: Hemant Agrawal @ 2017-06-22 13:57 UTC (permalink / raw)
  To: ferruh.yigit; +Cc: dev, shreyansh.jain

From: Shreyansh Jain <shreyansh.jain@nxp.com>

Cleanup the dma map logic for memsegs. Earlier, in case
DMA mapping reaching end of segment, it reports a suprious error.

Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
---
 drivers/bus/fslmc/fslmc_vfio.c | 25 +++++++++++++++++--------
 1 file changed, 17 insertions(+), 8 deletions(-)

diff --git a/drivers/bus/fslmc/fslmc_vfio.c b/drivers/bus/fslmc/fslmc_vfio.c
index 8471a9a..49bb670 100644
--- a/drivers/bus/fslmc/fslmc_vfio.c
+++ b/drivers/bus/fslmc/fslmc_vfio.c
@@ -214,17 +214,18 @@ int rte_fslmc_vfio_dmamap(void)
 
 	if (is_dma_done)
 		return 0;
-	is_dma_done = 1;
 
-	for (i = 0; i < RTE_MAX_MEMSEG; i++) {
-		memseg = rte_eal_get_physmem_layout();
-		if (memseg == NULL) {
-			FSLMC_VFIO_LOG(ERR, "Cannot get physical layout.");
-			return -ENODEV;
-		}
+	memseg = rte_eal_get_physmem_layout();
+	if (memseg == NULL) {
+		FSLMC_VFIO_LOG(ERR, "Cannot get physical layout.");
+		return -ENODEV;
+	}
 
-		if (memseg[i].addr == NULL && memseg[i].len == 0)
+	for (i = 0; i < RTE_MAX_MEMSEG; i++) {
+		if (memseg[i].addr == NULL && memseg[i].len == 0) {
+			FSLMC_VFIO_LOG(DEBUG, "Total %d segments found.", i);
 			break;
+		}
 
 		dma_map.size = memseg[i].len;
 		dma_map.vaddr = memseg[i].addr_64;
@@ -254,12 +255,20 @@ int rte_fslmc_vfio_dmamap(void)
 		}
 	}
 
+	/* Verifying that at least single segment is available */
+	if (i <= 0) {
+		FSLMC_VFIO_LOG(ERR, "No Segments found for VFIO Mapping");
+		return -1;
+	}
+
 	/* TODO - This is a W.A. as VFIO currently does not add the mapping of
 	 * the interrupt region to SMMU. This should be removed once the
 	 * support is added in the Kernel.
 	 */
 	vfio_map_irq_region(group);
 
+	is_dma_done = 1;
+
 	return 0;
 }
 
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 09/10] net/dpaa2: add support for frame based Tx congestion
  2017-06-22 13:57 [PATCH 00/10] NXP DPAA2 PMD changes Hemant Agrawal
                   ` (7 preceding siblings ...)
  2017-06-22 13:57 ` [PATCH 08/10] bus/fslmc: add check for memseg availability Hemant Agrawal
@ 2017-06-22 13:57 ` Hemant Agrawal
  2017-06-22 13:57 ` [PATCH 10/10] net/dpaa2: add support for multi seg buffers Hemant Agrawal
  2017-06-23  9:59 ` [PATCH 00/10] NXP DPAA2 PMD changes Ferruh Yigit
  10 siblings, 0 replies; 13+ messages in thread
From: Hemant Agrawal @ 2017-06-22 13:57 UTC (permalink / raw)
  To: ferruh.yigit; +Cc: dev, shreyansh.jain

Change from byte based to frame based.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
 drivers/net/dpaa2/dpaa2_ethdev.c | 3 +--
 drivers/net/dpaa2/dpaa2_ethdev.h | 9 ++++-----
 2 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c
index a1ef1cb..82dd8bb 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.c
+++ b/drivers/net/dpaa2/dpaa2_ethdev.c
@@ -492,8 +492,7 @@ dpaa2_dev_tx_queue_setup(struct rte_eth_dev *dev,
 	if (priv->flags & DPAA2_TX_CGR_SUPPORT) {
 		struct dpni_congestion_notification_cfg cong_notif_cfg;
 
-		cong_notif_cfg.units = DPNI_CONGESTION_UNIT_BYTES;
-		/* Notify about congestion when the queue size is 32 KB */
+		cong_notif_cfg.units = DPNI_CONGESTION_UNIT_FRAMES;
 		cong_notif_cfg.threshold_entry = CONG_ENTER_TX_THRESHOLD;
 		/* Notify that the queue is not congested when the data in
 		 * the queue is below this thershold.
diff --git a/drivers/net/dpaa2/dpaa2_ethdev.h b/drivers/net/dpaa2/dpaa2_ethdev.h
index a146088..ee21cbb 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.h
+++ b/drivers/net/dpaa2/dpaa2_ethdev.h
@@ -47,19 +47,18 @@
 /*default tc to be used for ,congestion, distribution etc configuration. */
 #define DPAA2_DEF_TC		0
 
-/* Threshold for a queue to *Enter* Congestion state.
- * It is set to 32KB
+/* Threshold for a Tx queue to *Enter* Congestion state.
  */
-#define CONG_ENTER_TX_THRESHOLD   (32 * 1024)
+#define CONG_ENTER_TX_THRESHOLD   512
 
 /* Threshold for a queue to *Exit* Congestion state.
  */
-#define CONG_EXIT_TX_THRESHOLD    (24 * 1024)
+#define CONG_EXIT_TX_THRESHOLD    480
 
 /* RX queue tail drop threshold
  * currently considering 32 KB packets
  */
-#define CONG_THRESHOLD_RX_Q  (32 * 1024)
+#define CONG_THRESHOLD_RX_Q  (64 * 1024)
 
 /* Size of the input SMMU mapped memory required by MC */
 #define DIST_PARAM_IOVA_SIZE 256
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 10/10] net/dpaa2: add support for multi seg buffers
  2017-06-22 13:57 [PATCH 00/10] NXP DPAA2 PMD changes Hemant Agrawal
                   ` (8 preceding siblings ...)
  2017-06-22 13:57 ` [PATCH 09/10] net/dpaa2: add support for frame based Tx congestion Hemant Agrawal
@ 2017-06-22 13:57 ` Hemant Agrawal
  2017-06-23  9:59 ` [PATCH 00/10] NXP DPAA2 PMD changes Ferruh Yigit
  10 siblings, 0 replies; 13+ messages in thread
From: Hemant Agrawal @ 2017-06-22 13:57 UTC (permalink / raw)
  To: ferruh.yigit; +Cc: dev, shreyansh.jain

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
 drivers/bus/fslmc/portal/dpaa2_hw_pvt.h |  27 ++++-
 drivers/net/dpaa2/dpaa2_rxtx.c          | 189 ++++++++++++++++++++++++++++++--
 2 files changed, 206 insertions(+), 10 deletions(-)

diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h
index 429eaee..f9f4e29 100644
--- a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h
+++ b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h
@@ -156,6 +156,19 @@ struct qbman_fle {
 	uint32_t reserved[3]; /* Not used currently */
 };
 
+struct qbman_sge {
+	uint32_t addr_lo;
+	uint32_t addr_hi;
+	uint32_t length;
+	uint32_t fin_bpid_offset;
+};
+
+/* There are three types of frames: Single, Scatter Gather and Frame Lists */
+enum qbman_fd_format {
+	qbman_fd_single = 0,
+	qbman_fd_list,
+	qbman_fd_sg
+};
 /*Macros to define operations on FD*/
 #define DPAA2_SET_FD_ADDR(fd, addr) do {			\
 	fd->simple.addr_lo = lower_32_bits((uint64_t)(addr));	\
@@ -185,7 +198,7 @@ struct qbman_fle {
 #define DPAA2_SET_FLE_OFFSET(fle, offset) \
 	((fle)->fin_bpid_offset |= (uint32_t)(offset) << 16)
 #define DPAA2_SET_FLE_BPID(fle, bpid) ((fle)->fin_bpid_offset |= (uint64_t)bpid)
-#define DPAA2_GET_FLE_BPID(fle, bpid) (fle->fin_bpid_offset & 0x000000ff)
+#define DPAA2_GET_FLE_BPID(fle) ((fle)->fin_bpid_offset & 0x000000ff)
 #define DPAA2_SET_FLE_FIN(fle)	(fle->fin_bpid_offset |= (uint64_t)1 << 31)
 #define DPAA2_SET_FLE_IVP(fle)   (((fle)->fin_bpid_offset |= 0x00004000))
 #define DPAA2_SET_FD_COMPOUND_FMT(fd)	\
@@ -197,6 +210,7 @@ struct qbman_fle {
 #define DPAA2_GET_FD_BPID(fd)	(((fd)->simple.bpid_offset & 0x00003FFF))
 #define DPAA2_GET_FD_IVP(fd)   ((fd->simple.bpid_offset & 0x00004000) >> 14)
 #define DPAA2_GET_FD_OFFSET(fd)	(((fd)->simple.bpid_offset & 0x0FFF0000) >> 16)
+#define DPAA2_GET_FLE_OFFSET(fle) (((fle)->fin_bpid_offset & 0x0FFF0000) >> 16)
 #define DPAA2_SET_FLE_SG_EXT(fle) (fle->fin_bpid_offset |= (uint64_t)1 << 29)
 #define DPAA2_IS_SET_FLE_SG_EXT(fle)	\
 	((fle->fin_bpid_offset & ((uint64_t)1 << 29)) ? 1 : 0)
@@ -206,6 +220,17 @@ struct qbman_fle {
 
 #define DPAA2_ASAL_VAL (DPAA2_MBUF_HW_ANNOTATION / 64)
 
+#define DPAA2_FD_SET_FORMAT(fd, format)	do {				\
+		(fd)->simple.bpid_offset &= 0xCFFFFFFF;			\
+		(fd)->simple.bpid_offset |= (uint32_t)format << 28;	\
+} while (0)
+#define DPAA2_FD_GET_FORMAT(fd)	(((fd)->simple.bpid_offset >> 28) & 0x3)
+
+#define DPAA2_SG_SET_FINAL(sg, fin)	do {				\
+		(sg)->fin_bpid_offset &= 0x7FFFFFFF;			\
+		(sg)->fin_bpid_offset |= (uint32_t)fin << 31;		\
+} while (0)
+#define DPAA2_SG_IS_FINAL(sg) (!!((sg)->fin_bpid_offset >> 31))
 /* Only Enqueue Error responses will be
  * pushed on FQID_ERR of Enqueue FQ
  */
diff --git a/drivers/net/dpaa2/dpaa2_rxtx.c b/drivers/net/dpaa2/dpaa2_rxtx.c
index e4bf14a..6572f25 100644
--- a/drivers/net/dpaa2/dpaa2_rxtx.c
+++ b/drivers/net/dpaa2/dpaa2_rxtx.c
@@ -133,6 +133,66 @@ dpaa2_dev_rx_offload(uint64_t hw_annot_addr, struct rte_mbuf *mbuf)
 }
 
 static inline struct rte_mbuf *__attribute__((hot))
+eth_sg_fd_to_mbuf(const struct qbman_fd *fd)
+{
+	struct qbman_sge *sgt, *sge;
+	dma_addr_t sg_addr;
+	int i = 0;
+	uint64_t fd_addr;
+	struct rte_mbuf *first_seg, *next_seg, *cur_seg, *temp;
+
+	fd_addr = (uint64_t)DPAA2_IOVA_TO_VADDR(DPAA2_GET_FD_ADDR(fd));
+
+	/* Get Scatter gather table address */
+	sgt = (struct qbman_sge *)(fd_addr + DPAA2_GET_FD_OFFSET(fd));
+
+	sge = &sgt[i++];
+	sg_addr = (uint64_t)DPAA2_IOVA_TO_VADDR(DPAA2_GET_FLE_ADDR(sge));
+
+	/* First Scatter gather entry */
+	first_seg = DPAA2_INLINE_MBUF_FROM_BUF(sg_addr,
+		rte_dpaa2_bpid_info[DPAA2_GET_FD_BPID(fd)].meta_data_size);
+	/* Prepare all the metadata for first segment */
+	first_seg->buf_addr = (uint8_t *)sg_addr;
+	first_seg->ol_flags = 0;
+	first_seg->data_off = DPAA2_GET_FLE_OFFSET(sge);
+	first_seg->data_len = sge->length  & 0x1FFFF;
+	first_seg->pkt_len = DPAA2_GET_FD_LEN(fd);
+	first_seg->nb_segs = 1;
+	first_seg->next = NULL;
+
+	first_seg->packet_type = dpaa2_dev_rx_parse(
+			 (uint64_t)DPAA2_IOVA_TO_VADDR(DPAA2_GET_FD_ADDR(fd))
+			 + DPAA2_FD_PTA_SIZE);
+	dpaa2_dev_rx_offload((uint64_t)DPAA2_IOVA_TO_VADDR(
+			DPAA2_GET_FD_ADDR(fd)) +
+			DPAA2_FD_PTA_SIZE, first_seg);
+	rte_mbuf_refcnt_set(first_seg, 1);
+	cur_seg = first_seg;
+	while (!DPAA2_SG_IS_FINAL(sge)) {
+		sge = &sgt[i++];
+		sg_addr = (uint64_t)DPAA2_IOVA_TO_VADDR(
+				DPAA2_GET_FLE_ADDR(sge));
+		next_seg = DPAA2_INLINE_MBUF_FROM_BUF(sg_addr,
+			rte_dpaa2_bpid_info[DPAA2_GET_FLE_BPID(sge)].meta_data_size);
+		next_seg->buf_addr  = (uint8_t *)sg_addr;
+		next_seg->data_off  = DPAA2_GET_FLE_OFFSET(sge);
+		next_seg->data_len  = sge->length  & 0x1FFFF;
+		first_seg->nb_segs += 1;
+		rte_mbuf_refcnt_set(next_seg, 1);
+		cur_seg->next = next_seg;
+		next_seg->next = NULL;
+		cur_seg = next_seg;
+	}
+	temp = DPAA2_INLINE_MBUF_FROM_BUF(fd_addr,
+		rte_dpaa2_bpid_info[DPAA2_GET_FD_BPID(fd)].meta_data_size);
+	rte_mbuf_refcnt_set(temp, 1);
+	rte_pktmbuf_free_seg(temp);
+
+	return (void *)first_seg;
+}
+
+static inline struct rte_mbuf *__attribute__((hot))
 eth_fd_to_mbuf(const struct qbman_fd *fd)
 {
 	struct rte_mbuf *mbuf = DPAA2_INLINE_MBUF_FROM_BUF(
@@ -171,7 +231,81 @@ eth_fd_to_mbuf(const struct qbman_fd *fd)
 	return mbuf;
 }
 
-static void __rte_noinline __attribute__((hot))
+static int __attribute__ ((noinline)) __attribute__((hot))
+eth_mbuf_to_sg_fd(struct rte_mbuf *mbuf,
+		  struct qbman_fd *fd, uint16_t bpid)
+{
+	struct rte_mbuf *cur_seg = mbuf, *prev_seg, *mi, *temp;
+	struct qbman_sge *sgt, *sge = NULL;
+	int i;
+
+	/* First Prepare FD to be transmited*/
+	/* Resetting the buffer pool id and offset field*/
+	fd->simple.bpid_offset = 0;
+
+	temp = rte_pktmbuf_alloc(mbuf->pool);
+	if (temp == NULL) {
+		PMD_TX_LOG(ERR, "No memory to allocate S/G table");
+		return -ENOMEM;
+	}
+
+	DPAA2_SET_FD_ADDR(fd, DPAA2_MBUF_VADDR_TO_IOVA(temp));
+	DPAA2_SET_FD_LEN(fd, mbuf->pkt_len);
+	DPAA2_SET_FD_OFFSET(fd, temp->data_off);
+	DPAA2_SET_FD_BPID(fd, bpid);
+	DPAA2_SET_FD_ASAL(fd, DPAA2_ASAL_VAL);
+	DPAA2_FD_SET_FORMAT(fd, qbman_fd_sg);
+	/*Set Scatter gather table and Scatter gather entries*/
+	sgt = (struct qbman_sge *)(
+			(uint64_t)DPAA2_IOVA_TO_VADDR(DPAA2_GET_FD_ADDR(fd))
+			+ DPAA2_GET_FD_OFFSET(fd));
+
+	for (i = 0; i < mbuf->nb_segs; i++) {
+		sge = &sgt[i];
+		/*Resetting the buffer pool id and offset field*/
+		sge->fin_bpid_offset = 0;
+		DPAA2_SET_FLE_ADDR(sge, DPAA2_MBUF_VADDR_TO_IOVA(cur_seg));
+		DPAA2_SET_FLE_OFFSET(sge, cur_seg->data_off);
+		sge->length = cur_seg->data_len;
+		if (RTE_MBUF_DIRECT(cur_seg)) {
+			if (rte_mbuf_refcnt_read(cur_seg) > 1) {
+				/* If refcnt > 1, invalid bpid is set to ensure
+				 * buffer is not freed by HW
+				 */
+				DPAA2_SET_FLE_IVP(sge);
+				rte_mbuf_refcnt_update(cur_seg, -1);
+			} else
+				DPAA2_SET_FLE_BPID(sge,
+						mempool_to_bpid(cur_seg->pool));
+			cur_seg = cur_seg->next;
+		} else {
+			/* Get owner MBUF from indirect buffer */
+			mi = rte_mbuf_from_indirect(cur_seg);
+			if (rte_mbuf_refcnt_read(mi) > 1) {
+				/* If refcnt > 1, invalid bpid is set to ensure
+				 * owner buffer is not freed by HW
+				 */
+				DPAA2_SET_FLE_IVP(sge);
+			} else {
+				DPAA2_SET_FLE_BPID(sge,
+						   mempool_to_bpid(mi->pool));
+				rte_mbuf_refcnt_update(mi, 1);
+			}
+			prev_seg = cur_seg;
+			cur_seg = cur_seg->next;
+			prev_seg->next = NULL;
+			rte_pktmbuf_free(prev_seg);
+		}
+	}
+	DPAA2_SG_SET_FINAL(sge, true);
+	return 0;
+}
+
+static void
+eth_mbuf_to_fd(struct rte_mbuf *mbuf,
+	       struct qbman_fd *fd, uint16_t bpid) __attribute__((unused));
+
+static void __attribute__ ((noinline)) __attribute__((hot))
 eth_mbuf_to_fd(struct rte_mbuf *mbuf,
 	       struct qbman_fd *fd, uint16_t bpid)
 {
@@ -190,8 +324,22 @@ eth_mbuf_to_fd(struct rte_mbuf *mbuf,
 		DPAA2_GET_FD_OFFSET(fd), DPAA2_GET_FD_ADDR(fd),
 		rte_dpaa2_bpid_info[DPAA2_GET_FD_BPID(fd)].meta_data_size,
 		DPAA2_GET_FD_BPID(fd), DPAA2_GET_FD_LEN(fd));
-}
+	if (RTE_MBUF_DIRECT(mbuf)) {
+		if (rte_mbuf_refcnt_read(mbuf) > 1) {
+			DPAA2_SET_FD_IVP(fd);
+			rte_mbuf_refcnt_update(mbuf, -1);
+		}
+	} else {
+		struct rte_mbuf *mi;
 
+		mi = rte_mbuf_from_indirect(mbuf);
+		if (rte_mbuf_refcnt_read(mi) > 1)
+			DPAA2_SET_FD_IVP(fd);
+		else
+			rte_mbuf_refcnt_update(mi, 1);
+		rte_pktmbuf_free(mbuf);
+	}
+}
 
 static inline int __attribute__((hot))
 eth_copy_mbuf_to_fd(struct rte_mbuf *mbuf,
@@ -325,10 +473,11 @@ dpaa2_dev_prefetch_rx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
 		rte_prefetch0((void *)((uint64_t)DPAA2_GET_FD_ADDR(fd[num_rx])
 				+ DPAA2_FD_PTA_SIZE + 16));
 
-		bufs[num_rx] = eth_fd_to_mbuf(fd[num_rx]);
+		if (unlikely(DPAA2_FD_GET_FORMAT(fd[num_rx]) == qbman_fd_sg))
+			bufs[num_rx] = eth_sg_fd_to_mbuf(fd[num_rx]);
+		else
+			bufs[num_rx] = eth_fd_to_mbuf(fd[num_rx]);
 		bufs[num_rx]->port = dev->data->port_id;
-		if (dev->data->dev_conf.rxmode.hw_vlan_strip)
-			rte_vlan_strip(bufs[num_rx]);
 
 		if (dev->data->dev_conf.rxmode.hw_vlan_strip)
 			rte_vlan_strip(bufs[num_rx]);
@@ -379,6 +528,7 @@ dpaa2_dev_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
 	uint32_t loop;
 	int32_t ret;
 	struct qbman_fd fd_arr[MAX_TX_RING_SLOTS];
+	struct rte_mbuf *mi;
 	uint32_t frames_to_send;
 	struct rte_mempool *mp;
 	struct qbman_eq_desc eqdesc;
@@ -419,8 +569,17 @@ dpaa2_dev_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
 			fd_arr[loop].simple.frc = 0;
 			DPAA2_RESET_FD_CTRL((&fd_arr[loop]));
 			DPAA2_SET_FD_FLC((&fd_arr[loop]), NULL);
-			mp = (*bufs)->pool;
+			if (RTE_MBUF_DIRECT(*bufs)) {
+				mp = (*bufs)->pool;
+			} else {
+				mi = rte_mbuf_from_indirect(*bufs);
+				mp = mi->pool;
+			}
 			/* Not a hw_pkt pool allocated frame */
+			if (!mp) {
+				PMD_TX_LOG(ERR, "err: no bpool attached");
+				goto skip_tx;
+			}
 			if (mp->ops_index != priv->bp_list->dpaa2_ops_index) {
 				PMD_TX_LOG(ERR, "non hw offload bufffer ");
 				/* alloc should be from the default buffer pool
@@ -429,11 +588,16 @@ dpaa2_dev_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
 				if (priv->bp_list) {
 					bpid = priv->bp_list->buf_pool.bpid;
 				} else {
-					PMD_TX_LOG(ERR, "errr: why no bpool"
-						   " attached");
+					PMD_TX_LOG(ERR,
+						   "err: no bpool attached");
 					num_tx = 0;
 					goto skip_tx;
 				}
+				if (unlikely((*bufs)->nb_segs > 1)) {
+					PMD_TX_LOG(ERR, "S/G support not added"
+						" for non hw offload buffer");
+					goto skip_tx;
+				}
 				if (eth_copy_mbuf_to_fd(*bufs,
 							&fd_arr[loop], bpid)) {
 					bufs++;
@@ -441,7 +605,14 @@ dpaa2_dev_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
 				}
 			} else {
 				bpid = mempool_to_bpid(mp);
-				eth_mbuf_to_fd(*bufs, &fd_arr[loop], bpid);
+				if (unlikely((*bufs)->nb_segs > 1)) {
+					if (eth_mbuf_to_sg_fd(*bufs,
+							&fd_arr[loop], bpid))
+						goto skip_tx;
+				} else {
+					eth_mbuf_to_fd(*bufs,
+						       &fd_arr[loop], bpid);
+				}
 			}
 			bufs++;
 		}
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH 00/10] NXP DPAA2 PMD changes
  2017-06-22 13:57 [PATCH 00/10] NXP DPAA2 PMD changes Hemant Agrawal
                   ` (9 preceding siblings ...)
  2017-06-22 13:57 ` [PATCH 10/10] net/dpaa2: add support for multi seg buffers Hemant Agrawal
@ 2017-06-23  9:59 ` Ferruh Yigit
  10 siblings, 0 replies; 13+ messages in thread
From: Ferruh Yigit @ 2017-06-23  9:59 UTC (permalink / raw)
  To: Hemant Agrawal; +Cc: dev, shreyansh.jain

On 6/22/2017 2:57 PM, Hemant Agrawal wrote:
> This patch series address some of the issues identified during testing on latest code.
> Last patch adds the support for multi-segment frames.
> 
> Hemant Agrawal (9):
>   net/dpaa2: set the eth driver from dpaa2 driver
>   net/dpaa2: set data align option in mc firmware
>   net/dpaa2: align the queue numbers with mc firmware
>   net/dpaa2: check soc version for stashing enable
>   net/dpaa2: disable Tx congestion notification
>   doc: change the dpaa2 helper repository path
>   bus/fslmc: fix the failure loop condition
>   net/dpaa2: add support for frame based Tx congestion
>   net/dpaa2: add support for multi seg buffers
> 
> Shreyansh Jain (1):
>   bus/fslmc: add check for memseg availability

Series applied to dpdk-next-net/master, thanks.

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 06/10] doc: change the dpaa2 helper repository path
  2017-06-22 13:57 ` [PATCH 06/10] doc: change the dpaa2 helper repository path Hemant Agrawal
@ 2017-06-26 15:01   ` Mcnamara, John
  0 siblings, 0 replies; 13+ messages in thread
From: Mcnamara, John @ 2017-06-26 15:01 UTC (permalink / raw)
  To: Hemant Agrawal, Yigit, Ferruh; +Cc: dev, shreyansh.jain



> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Hemant Agrawal
> Sent: Thursday, June 22, 2017 2:57 PM
> To: Yigit, Ferruh <ferruh.yigit@intel.com>
> Cc: dev@dpdk.org; shreyansh.jain@nxp.com
> Subject: [dpdk-dev] [PATCH 06/10] doc: change the dpaa2 helper repository
> path
> 
> changing the nxp dpdk helper repository from helper to extras
> 
> Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>


Acked-by: John McNamara <john.mcnamara@intel.com>

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2017-06-26 15:01 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-22 13:57 [PATCH 00/10] NXP DPAA2 PMD changes Hemant Agrawal
2017-06-22 13:57 ` [PATCH 01/10] net/dpaa2: set the eth driver from dpaa2 driver Hemant Agrawal
2017-06-22 13:57 ` [PATCH 02/10] net/dpaa2: set data align option in mc firmware Hemant Agrawal
2017-06-22 13:57 ` [PATCH 03/10] net/dpaa2: align the queue numbers with " Hemant Agrawal
2017-06-22 13:57 ` [PATCH 04/10] net/dpaa2: check soc version for stashing enable Hemant Agrawal
2017-06-22 13:57 ` [PATCH 05/10] net/dpaa2: disable Tx congestion notification Hemant Agrawal
2017-06-22 13:57 ` [PATCH 06/10] doc: change the dpaa2 helper repository path Hemant Agrawal
2017-06-26 15:01   ` Mcnamara, John
2017-06-22 13:57 ` [PATCH 07/10] bus/fslmc: fix the failure loop condition Hemant Agrawal
2017-06-22 13:57 ` [PATCH 08/10] bus/fslmc: add check for memseg availability Hemant Agrawal
2017-06-22 13:57 ` [PATCH 09/10] net/dpaa2: add support for frame based Tx congestion Hemant Agrawal
2017-06-22 13:57 ` [PATCH 10/10] net/dpaa2: add support for multi seg buffers Hemant Agrawal
2017-06-23  9:59 ` [PATCH 00/10] NXP DPAA2 PMD changes Ferruh Yigit

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.