DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH 00/10] NXP DPAA2 PMD changes
@ 2017-06-22 13:57 Hemant Agrawal
  2017-06-22 13:57 ` [dpdk-dev] [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

* [dpdk-dev] [PATCH 01/10] net/dpaa2: set the eth driver from dpaa2 driver
  2017-06-22 13:57 [dpdk-dev] [PATCH 00/10] NXP DPAA2 PMD changes Hemant Agrawal
@ 2017-06-22 13:57 ` Hemant Agrawal
  2017-06-22 13:57 ` [dpdk-dev] [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	[flat|nested] 13+ messages in thread

* [dpdk-dev] [PATCH 02/10] net/dpaa2: set data align option in mc firmware
  2017-06-22 13:57 [dpdk-dev] [PATCH 00/10] NXP DPAA2 PMD changes Hemant Agrawal
  2017-06-22 13:57 ` [dpdk-dev] [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 ` [dpdk-dev] [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	[flat|nested] 13+ messages in thread

* [dpdk-dev] [PATCH 03/10] net/dpaa2: align the queue numbers with mc firmware
  2017-06-22 13:57 [dpdk-dev] [PATCH 00/10] NXP DPAA2 PMD changes Hemant Agrawal
  2017-06-22 13:57 ` [dpdk-dev] [PATCH 01/10] net/dpaa2: set the eth driver from dpaa2 driver Hemant Agrawal
  2017-06-22 13:57 ` [dpdk-dev] [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 ` [dpdk-dev] [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	[flat|nested] 13+ messages in thread

* [dpdk-dev] [PATCH 04/10] net/dpaa2: check soc version for stashing enable
  2017-06-22 13:57 [dpdk-dev] [PATCH 00/10] NXP DPAA2 PMD changes Hemant Agrawal
                   ` (2 preceding siblings ...)
  2017-06-22 13:57 ` [dpdk-dev] [PATCH 03/10] net/dpaa2: align the queue numbers with " Hemant Agrawal
@ 2017-06-22 13:57 ` Hemant Agrawal
  2017-06-22 13:57 ` [dpdk-dev] [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	[flat|nested] 13+ messages in thread

* [dpdk-dev] [PATCH 05/10] net/dpaa2: disable Tx congestion notification
  2017-06-22 13:57 [dpdk-dev] [PATCH 00/10] NXP DPAA2 PMD changes Hemant Agrawal
                   ` (3 preceding siblings ...)
  2017-06-22 13:57 ` [dpdk-dev] [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 ` [dpdk-dev] [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	[flat|nested] 13+ messages in thread

* [dpdk-dev] [PATCH 06/10] doc: change the dpaa2 helper repository path
  2017-06-22 13:57 [dpdk-dev] [PATCH 00/10] NXP DPAA2 PMD changes Hemant Agrawal
                   ` (4 preceding siblings ...)
  2017-06-22 13:57 ` [dpdk-dev] [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 ` [dpdk-dev] [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	[flat|nested] 13+ messages in thread

* [dpdk-dev] [PATCH 07/10] bus/fslmc: fix the failure loop condition
  2017-06-22 13:57 [dpdk-dev] [PATCH 00/10] NXP DPAA2 PMD changes Hemant Agrawal
                   ` (5 preceding siblings ...)
  2017-06-22 13:57 ` [dpdk-dev] [PATCH 06/10] doc: change the dpaa2 helper repository path Hemant Agrawal
@ 2017-06-22 13:57 ` Hemant Agrawal
  2017-06-22 13:57 ` [dpdk-dev] [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	[flat|nested] 13+ messages in thread

* [dpdk-dev] [PATCH 08/10] bus/fslmc: add check for memseg availability
  2017-06-22 13:57 [dpdk-dev] [PATCH 00/10] NXP DPAA2 PMD changes Hemant Agrawal
                   ` (6 preceding siblings ...)
  2017-06-22 13:57 ` [dpdk-dev] [PATCH 07/10] bus/fslmc: fix the failure loop condition Hemant Agrawal
@ 2017-06-22 13:57 ` Hemant Agrawal
  2017-06-22 13:57 ` [dpdk-dev] [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	[flat|nested] 13+ messages in thread

* [dpdk-dev] [PATCH 09/10] net/dpaa2: add support for frame based Tx congestion
  2017-06-22 13:57 [dpdk-dev] [PATCH 00/10] NXP DPAA2 PMD changes Hemant Agrawal
                   ` (7 preceding siblings ...)
  2017-06-22 13:57 ` [dpdk-dev] [PATCH 08/10] bus/fslmc: add check for memseg availability Hemant Agrawal
@ 2017-06-22 13:57 ` Hemant Agrawal
  2017-06-22 13:57 ` [dpdk-dev] [PATCH 10/10] net/dpaa2: add support for multi seg buffers Hemant Agrawal
  2017-06-23  9:59 ` [dpdk-dev] [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	[flat|nested] 13+ messages in thread

* [dpdk-dev] [PATCH 10/10] net/dpaa2: add support for multi seg buffers
  2017-06-22 13:57 [dpdk-dev] [PATCH 00/10] NXP DPAA2 PMD changes Hemant Agrawal
                   ` (8 preceding siblings ...)
  2017-06-22 13:57 ` [dpdk-dev] [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 ` [dpdk-dev] [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	[flat|nested] 13+ messages in thread

* Re: [dpdk-dev] [PATCH 00/10] NXP DPAA2 PMD changes
  2017-06-22 13:57 [dpdk-dev] [PATCH 00/10] NXP DPAA2 PMD changes Hemant Agrawal
                   ` (9 preceding siblings ...)
  2017-06-22 13:57 ` [dpdk-dev] [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: [dpdk-dev] [PATCH 06/10] doc: change the dpaa2 helper repository path
  2017-06-22 13:57 ` [dpdk-dev] [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 [dpdk-dev] [PATCH 00/10] NXP DPAA2 PMD changes Hemant Agrawal
2017-06-22 13:57 ` [dpdk-dev] [PATCH 01/10] net/dpaa2: set the eth driver from dpaa2 driver Hemant Agrawal
2017-06-22 13:57 ` [dpdk-dev] [PATCH 02/10] net/dpaa2: set data align option in mc firmware Hemant Agrawal
2017-06-22 13:57 ` [dpdk-dev] [PATCH 03/10] net/dpaa2: align the queue numbers with " Hemant Agrawal
2017-06-22 13:57 ` [dpdk-dev] [PATCH 04/10] net/dpaa2: check soc version for stashing enable Hemant Agrawal
2017-06-22 13:57 ` [dpdk-dev] [PATCH 05/10] net/dpaa2: disable Tx congestion notification Hemant Agrawal
2017-06-22 13:57 ` [dpdk-dev] [PATCH 06/10] doc: change the dpaa2 helper repository path Hemant Agrawal
2017-06-26 15:01   ` Mcnamara, John
2017-06-22 13:57 ` [dpdk-dev] [PATCH 07/10] bus/fslmc: fix the failure loop condition Hemant Agrawal
2017-06-22 13:57 ` [dpdk-dev] [PATCH 08/10] bus/fslmc: add check for memseg availability Hemant Agrawal
2017-06-22 13:57 ` [dpdk-dev] [PATCH 09/10] net/dpaa2: add support for frame based Tx congestion Hemant Agrawal
2017-06-22 13:57 ` [dpdk-dev] [PATCH 10/10] net/dpaa2: add support for multi seg buffers Hemant Agrawal
2017-06-23  9:59 ` [dpdk-dev] [PATCH 00/10] NXP DPAA2 PMD changes 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).