All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/9] net/qede: update PMD to 2.5.1.1
@ 2017-06-29  9:51 Rasesh Mody
  2017-06-29  9:51 ` [PATCH 1/9] net/qede: fix DMA memory leak Rasesh Mody
                   ` (18 more replies)
  0 siblings, 19 replies; 27+ messages in thread
From: Rasesh Mody @ 2017-06-29  9:51 UTC (permalink / raw)
  To: dev; +Cc: Rasesh Mody, Dept-EngDPDKDev

Hi,

This patch set contains minor enhancements and bug fixes for QEDE PMD.
It updates the driver version to 2.5.1.1. The patch set is tested
against dpdk-next-net.

Thanks!
Rasesh

Harish Patil (3):
  net/qede: fix DMA memory leak
  net/qede: add notifying HW errors
  net/qede: limit ring size to 32k

Rasesh Mody (6):
  net/qede: comments traces and format changes
  net/qede: change debug verbosity of PMD messages
  net/qede: set mdump flag
  net/qede: add missing check for VNI
  net/qede: use newer packet mbuf allocate API
  net/qede: update PMD version to 2.5.1.1

 drivers/net/qede/base/bcm_osal.c      |   82 ++++++++++++++++++++++++++++++---
 drivers/net/qede/base/bcm_osal.h      |   12 +++--
 drivers/net/qede/base/ecore.h         |    2 +-
 drivers/net/qede/base/ecore_dev.c     |    1 +
 drivers/net/qede/base/ecore_dev_api.h |    3 ++
 drivers/net/qede/base/ecore_int.c     |    2 +-
 drivers/net/qede/base/ecore_mcp.c     |    3 +-
 drivers/net/qede/qede_ethdev.c        |   45 +++++++++---------
 drivers/net/qede/qede_ethdev.h        |    2 +-
 drivers/net/qede/qede_logs.h          |   23 +++++----
 drivers/net/qede/qede_main.c          |   21 ++++-----
 drivers/net/qede/qede_rxtx.c          |   73 ++++++++++++++++++++---------
 12 files changed, 192 insertions(+), 77 deletions(-)

-- 
1.7.10.3

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

* [PATCH 1/9] net/qede: fix DMA memory leak
  2017-06-29  9:51 [PATCH 0/9] net/qede: update PMD to 2.5.1.1 Rasesh Mody
@ 2017-06-29  9:51 ` Rasesh Mody
  2017-06-29  9:51 ` [PATCH 2/9] net/qede: add notifying HW errors Rasesh Mody
                   ` (17 subsequent siblings)
  18 siblings, 0 replies; 27+ messages in thread
From: Rasesh Mody @ 2017-06-29  9:51 UTC (permalink / raw)
  To: dev; +Cc: Harish Patil, Dept-EngDPDKDev, Rasesh Mody

From: Harish Patil <harish.patil@cavium.com>

Implement the macro OSAL_DMA_FREE_COHERENT to release DMA memories.
Track all DMA memory allocations using an array of memzone pointers and
use that to free memory resoureces along with other resource deallocation.
With this change there is no need to alter the base code to additionally
pass an unique string needed for memzone creation.

Fixes: ec94dbc57362 ("qede: add base driver")

Signed-off-by: Harish Patil <harish.patil@cavium.com>
Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
---
 drivers/net/qede/base/bcm_osal.c |   36 +++++++++++++++++++++++++++
 drivers/net/qede/base/bcm_osal.h |    6 +++--
 drivers/net/qede/qede_ethdev.c   |    9 +------
 drivers/net/qede/qede_rxtx.c     |   50 +++++++++++++++++++++++++++++++-------
 4 files changed, 82 insertions(+), 19 deletions(-)

diff --git a/drivers/net/qede/base/bcm_osal.c b/drivers/net/qede/base/bcm_osal.c
index 3f895cd..1ccfad0 100644
--- a/drivers/net/qede/base/bcm_osal.c
+++ b/drivers/net/qede/base/bcm_osal.c
@@ -16,6 +16,10 @@
 #include "ecore_mcp_api.h"
 #include "ecore_l2_api.h"
 
+/* Array of memzone pointers */
+static const struct rte_memzone *ecore_mz_mapping[RTE_MAX_MEMZONE];
+/* Counter to track current memzone allocated */
+uint16_t ecore_mz_count;
 
 unsigned long qede_log2_align(unsigned long n)
 {
@@ -118,6 +122,13 @@ void *osal_dma_alloc_coherent(struct ecore_dev *p_dev,
 	uint32_t core_id = rte_lcore_id();
 	unsigned int socket_id;
 
+	if (ecore_mz_count >= RTE_MAX_MEMZONE) {
+		DP_ERR(p_dev, "Memzone allocation count exceeds %u\n",
+		       RTE_MAX_MEMZONE);
+		*phys = 0;
+		return OSAL_NULL;
+	}
+
 	OSAL_MEM_ZERO(mz_name, sizeof(*mz_name));
 	snprintf(mz_name, sizeof(mz_name) - 1, "%lx",
 					(unsigned long)rte_get_timer_cycles());
@@ -134,6 +145,7 @@ void *osal_dma_alloc_coherent(struct ecore_dev *p_dev,
 		return OSAL_NULL;
 	}
 	*phys = mz->phys_addr;
+	ecore_mz_mapping[ecore_mz_count++] = mz;
 	DP_VERBOSE(p_dev, ECORE_MSG_PROBE,
 		   "size=%zu phys=0x%" PRIx64 " virt=%p on socket=%u\n",
 		   mz->len, mz->phys_addr, mz->addr, socket_id);
@@ -148,6 +160,13 @@ void *osal_dma_alloc_coherent_aligned(struct ecore_dev *p_dev,
 	uint32_t core_id = rte_lcore_id();
 	unsigned int socket_id;
 
+	if (ecore_mz_count >= RTE_MAX_MEMZONE) {
+		DP_ERR(p_dev, "Memzone allocation count exceeds %u\n",
+		       RTE_MAX_MEMZONE);
+		*phys = 0;
+		return OSAL_NULL;
+	}
+
 	OSAL_MEM_ZERO(mz_name, sizeof(*mz_name));
 	snprintf(mz_name, sizeof(mz_name) - 1, "%lx",
 					(unsigned long)rte_get_timer_cycles());
@@ -163,12 +182,29 @@ void *osal_dma_alloc_coherent_aligned(struct ecore_dev *p_dev,
 		return OSAL_NULL;
 	}
 	*phys = mz->phys_addr;
+	ecore_mz_mapping[ecore_mz_count++] = mz;
 	DP_VERBOSE(p_dev, ECORE_MSG_PROBE,
 		   "aligned memory size=%zu phys=0x%" PRIx64 " virt=%p core=%d\n",
 		   mz->len, mz->phys_addr, mz->addr, core_id);
 	return mz->addr;
 }
 
+void osal_dma_free_mem(struct ecore_dev *p_dev, dma_addr_t phys)
+{
+	uint16_t j;
+
+	for (j = 0 ; j < ecore_mz_count; j++) {
+		if (phys == ecore_mz_mapping[j]->phys_addr) {
+			DP_VERBOSE(p_dev, ECORE_MSG_SP,
+				"Free memzone %s\n", ecore_mz_mapping[j]->name);
+			rte_memzone_free(ecore_mz_mapping[j]);
+			return;
+		}
+	}
+
+	DP_ERR(p_dev, "Unexpected memory free request\n");
+}
+
 #ifdef CONFIG_ECORE_ZIPPED_FW
 u32 qede_unzip_data(struct ecore_hwfn *p_hwfn, u32 input_len,
 		    u8 *input_buf, u32 max_size, u8 *unzip_buf)
diff --git a/drivers/net/qede/base/bcm_osal.h b/drivers/net/qede/base/bcm_osal.h
index 340d5f0..444512c 100644
--- a/drivers/net/qede/base/bcm_osal.h
+++ b/drivers/net/qede/base/bcm_osal.h
@@ -107,14 +107,16 @@
 void *osal_dma_alloc_coherent_aligned(struct ecore_dev *, dma_addr_t *,
 				      size_t, int);
 
+void osal_dma_free_mem(struct ecore_dev *edev, dma_addr_t phys);
+
 #define OSAL_DMA_ALLOC_COHERENT(dev, phys, size) \
 	osal_dma_alloc_coherent(dev, phys, size)
 
 #define OSAL_DMA_ALLOC_COHERENT_ALIGNED(dev, phys, size, align) \
 	osal_dma_alloc_coherent_aligned(dev, phys, size, align)
 
-/* TODO: */
-#define OSAL_DMA_FREE_COHERENT(dev, virt, phys, size) nothing
+#define OSAL_DMA_FREE_COHERENT(dev, virt, phys, size) \
+	osal_dma_free_mem(dev, phys)
 
 /* HW reads/writes */
 
diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
index 6380c2b..3e9f359 100644
--- a/drivers/net/qede/qede_ethdev.c
+++ b/drivers/net/qede/qede_ethdev.c
@@ -1143,7 +1143,7 @@ static int qede_dev_configure(struct rte_eth_dev *eth_dev)
 	 * again and the fastpath pointers will be reinitialized there.
 	 */
 	if (qdev->num_tx_queues != eth_dev->data->nb_tx_queues ||
-			qdev->num_rx_queues != eth_dev->data->nb_rx_queues) {
+	    qdev->num_rx_queues != eth_dev->data->nb_rx_queues) {
 		qede_dealloc_fp_resc(eth_dev);
 		/* Proceed with updated queue count */
 		qdev->num_tx_queues = eth_dev->data->nb_tx_queues;
@@ -1373,7 +1373,6 @@ static void qede_dev_close(struct rte_eth_dev *eth_dev)
 	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);
 	struct qede_dev *qdev = QEDE_INIT_QDEV(eth_dev);
 	struct ecore_dev *edev = QEDE_INIT_EDEV(qdev);
-	uint8_t i;
 
 	PMD_INIT_FUNC_TRACE(edev);
 
@@ -1389,12 +1388,6 @@ static void qede_dev_close(struct rte_eth_dev *eth_dev)
 	qede_fdir_dealloc_resc(eth_dev);
 	qede_dealloc_fp_resc(eth_dev);
 
-	for (i = 0; i < eth_dev->data->nb_rx_queues; i++)
-		if (eth_dev->data->rx_queues[i])
-			eth_dev->data->rx_queues[i] = NULL;
-	for (i = 0; i < eth_dev->data->nb_tx_queues; i++)
-		if (eth_dev->data->tx_queues[i])
-			eth_dev->data->tx_queues[i] = NULL;
 	eth_dev->data->nb_rx_queues = 0;
 	eth_dev->data->nb_tx_queues = 0;
 
diff --git a/drivers/net/qede/qede_rxtx.c b/drivers/net/qede/qede_rxtx.c
index f65c833..5c9a4dd 100644
--- a/drivers/net/qede/qede_rxtx.c
+++ b/drivers/net/qede/qede_rxtx.c
@@ -149,7 +149,7 @@ static inline int qede_alloc_rx_buffer(struct qede_rx_queue *rxq)
 		DP_NOTICE(edev, false,
 			  "Unable to alloc memory for cqe ring on socket %u\n",
 			  socket_id);
-		/* TBD: Freeing RX BD ring */
+		qdev->ops->common->chain_free(edev, &rxq->rx_bd_ring);
 		rte_free(rxq->sw_rx_ring);
 		rte_free(rxq);
 		return -ENOMEM;
@@ -300,6 +300,7 @@ static int qede_rx_queue_stop(struct rte_eth_dev *eth_dev, uint16_t rx_queue_id)
 		DP_ERR(edev,
 		       "Unable to allocate memory for txbd ring on socket %u",
 		       socket_id);
+		qdev->ops->common->chain_free(edev, &txq->tx_pbl);
 		qede_tx_queue_release(txq);
 		return -ENOMEM;
 	}
@@ -363,23 +364,23 @@ void qede_tx_queue_release(void *tx_queue)
 qede_alloc_mem_sb(struct qede_dev *qdev, struct ecore_sb_info *sb_info,
 		  uint16_t sb_id)
 {
-	struct ecore_dev *edev = &qdev->edev;
+	struct ecore_dev *edev = QEDE_INIT_EDEV(qdev);
 	struct status_block *sb_virt;
 	dma_addr_t sb_phys;
 	int rc;
 
-	sb_virt = OSAL_DMA_ALLOC_COHERENT(edev, &sb_phys, sizeof(*sb_virt));
-
+	sb_virt = OSAL_DMA_ALLOC_COHERENT(edev, &sb_phys,
+					  sizeof(struct status_block));
 	if (!sb_virt) {
 		DP_ERR(edev, "Status block allocation failed\n");
 		return -ENOMEM;
 	}
-
 	rc = qdev->ops->common->sb_init(edev, sb_info, sb_virt,
 					sb_phys, sb_id);
 	if (rc) {
 		DP_ERR(edev, "Status block initialization failed\n");
-		/* TBD: No dma_free_coherent possible */
+		OSAL_DMA_FREE_COHERENT(edev, sb_virt, sb_phys,
+				       sizeof(struct status_block));
 		return rc;
 	}
 
@@ -437,9 +438,12 @@ int qede_alloc_fp_resc(struct qede_dev *qdev)
 void qede_dealloc_fp_resc(struct rte_eth_dev *eth_dev)
 {
 	struct qede_dev *qdev = QEDE_INIT_QDEV(eth_dev);
-	__rte_unused struct ecore_dev *edev = QEDE_INIT_EDEV(qdev);
+	struct ecore_dev *edev = QEDE_INIT_EDEV(qdev);
 	struct qede_fastpath *fp;
+	struct qede_rx_queue *rxq;
+	struct qede_tx_queue *txq;
 	uint16_t sb_idx;
+	uint8_t i;
 
 	PMD_INIT_FUNC_TRACE(edev);
 
@@ -447,10 +451,38 @@ void qede_dealloc_fp_resc(struct rte_eth_dev *eth_dev)
 		fp = &qdev->fp_array[sb_idx];
 		DP_INFO(edev, "Free sb_info index 0x%x\n",
 				fp->sb_info->igu_sb_id);
-		if (fp->sb_info)
+		if (fp->sb_info) {
+			OSAL_DMA_FREE_COHERENT(edev, fp->sb_info->sb_virt,
+				fp->sb_info->sb_phys,
+				sizeof(struct status_block));
 			rte_free(fp->sb_info);
-		fp->sb_info = NULL;
+			fp->sb_info = NULL;
+		}
 	}
+
+	/* Free packet buffers and ring memories */
+	for (i = 0; i < eth_dev->data->nb_rx_queues; i++) {
+		if (eth_dev->data->rx_queues[i]) {
+			qede_rx_queue_release(eth_dev->data->rx_queues[i]);
+			rxq = eth_dev->data->rx_queues[i];
+			qdev->ops->common->chain_free(edev,
+						      &rxq->rx_bd_ring);
+			qdev->ops->common->chain_free(edev,
+						      &rxq->rx_comp_ring);
+			eth_dev->data->rx_queues[i] = NULL;
+		}
+	}
+
+	for (i = 0; i < eth_dev->data->nb_tx_queues; i++) {
+		if (eth_dev->data->tx_queues[i]) {
+			txq = eth_dev->data->tx_queues[i];
+			qede_tx_queue_release(eth_dev->data->tx_queues[i]);
+			qdev->ops->common->chain_free(edev,
+						      &txq->tx_pbl);
+			eth_dev->data->tx_queues[i] = NULL;
+		}
+	}
+
 	if (qdev->fp_array)
 		rte_free(qdev->fp_array);
 	qdev->fp_array = NULL;
-- 
1.7.10.3

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

* [PATCH 2/9] net/qede: add notifying HW errors
  2017-06-29  9:51 [PATCH 0/9] net/qede: update PMD to 2.5.1.1 Rasesh Mody
  2017-06-29  9:51 ` [PATCH 1/9] net/qede: fix DMA memory leak Rasesh Mody
@ 2017-06-29  9:51 ` Rasesh Mody
  2017-06-29  9:51 ` [PATCH 3/9] net/qede: limit ring size to 32k Rasesh Mody
                   ` (16 subsequent siblings)
  18 siblings, 0 replies; 27+ messages in thread
From: Rasesh Mody @ 2017-06-29  9:51 UTC (permalink / raw)
  To: dev; +Cc: Harish Patil, Dept-EngDPDKDev, Rasesh Mody

From: Harish Patil <harish.patil@cavium.com>

Log HW errmsg on the stdout and do minimal handling to prevent HW
attentions from being reasserted.

Signed-off-by: Harish Patil <harish.patil@cavium.com>
Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
---
 drivers/net/qede/base/bcm_osal.c  |   32 ++++++++++++++++++++++++++++++++
 drivers/net/qede/base/bcm_osal.h  |    6 +++++-
 drivers/net/qede/base/ecore_int.c |    2 +-
 3 files changed, 38 insertions(+), 2 deletions(-)

diff --git a/drivers/net/qede/base/bcm_osal.c b/drivers/net/qede/base/bcm_osal.c
index 1ccfad0..4dee4da 100644
--- a/drivers/net/qede/base/bcm_osal.c
+++ b/drivers/net/qede/base/bcm_osal.c
@@ -255,3 +255,35 @@ u32 qede_unzip_data(struct ecore_hwfn *p_hwfn, u32 input_len,
 		       type);
 	}
 }
+
+void
+qede_hw_err_notify(struct ecore_hwfn *p_hwfn, enum ecore_hw_err_type err_type)
+{
+	char err_str[64];
+
+	switch (err_type) {
+	case ECORE_HW_ERR_FAN_FAIL:
+		strcpy(err_str, "Fan Failure");
+		break;
+	case ECORE_HW_ERR_MFW_RESP_FAIL:
+		strcpy(err_str, "MFW Response Failure");
+		break;
+	case ECORE_HW_ERR_HW_ATTN:
+		strcpy(err_str, "HW Attention");
+		break;
+	case ECORE_HW_ERR_DMAE_FAIL:
+		strcpy(err_str, "DMAE Failure");
+		break;
+	case ECORE_HW_ERR_RAMROD_FAIL:
+		strcpy(err_str, "Ramrod Failure");
+		break;
+	case ECORE_HW_ERR_FW_ASSERT:
+		strcpy(err_str, "FW Assertion");
+		break;
+	default:
+		strcpy(err_str, "Unknown");
+	}
+
+	DP_ERR(p_hwfn, "HW error occurred [%s]\n", err_str);
+	ecore_int_attn_clr_enable(p_hwfn->p_dev, true);
+}
diff --git a/drivers/net/qede/base/bcm_osal.h b/drivers/net/qede/base/bcm_osal.h
index 444512c..3acf8f7 100644
--- a/drivers/net/qede/base/bcm_osal.h
+++ b/drivers/net/qede/base/bcm_osal.h
@@ -27,6 +27,7 @@
 struct vf_pf_resc_request;
 enum ecore_mcp_protocol_type;
 union ecore_mcp_protocol_stats;
+enum ecore_hw_err_type;
 
 void qed_link_update(struct ecore_hwfn *hwfn);
 
@@ -350,6 +351,8 @@ u32 qede_unzip_data(struct ecore_hwfn *p_hwfn, u32 input_len,
 		   u8 *input_buf, u32 max_size, u8 *unzip_buf);
 void qede_vf_fill_driver_data(struct ecore_hwfn *, struct vf_pf_resc_request *,
 			      struct ecore_vf_acquire_sw_info *);
+void qede_hw_err_notify(struct ecore_hwfn *p_hwfn,
+			enum ecore_hw_err_type err_type);
 #define OSAL_VF_FILL_ACQUIRE_RESC_REQ(_dev_p, _resc_req, _os_info) \
 	qede_vf_fill_driver_data(_dev_p, _resc_req, _os_info)
 
@@ -358,7 +361,8 @@ void qede_vf_fill_driver_data(struct ecore_hwfn *, struct vf_pf_resc_request *,
 
 /* TODO: */
 #define OSAL_SCHEDULE_RECOVERY_HANDLER(hwfn) nothing
-#define OSAL_HW_ERROR_OCCURRED(hwfn, err_type) nothing
+#define OSAL_HW_ERROR_OCCURRED(hwfn, err_type) \
+	qede_hw_err_notify(hwfn, err_type)
 
 #define OSAL_NVM_IS_ACCESS_ENABLED(hwfn) (1)
 #define OSAL_NUM_ACTIVE_CPU()	0
diff --git a/drivers/net/qede/base/ecore_int.c b/drivers/net/qede/base/ecore_int.c
index 8dc4d15..2afca29 100644
--- a/drivers/net/qede/base/ecore_int.c
+++ b/drivers/net/qede/base/ecore_int.c
@@ -842,7 +842,7 @@ static void ecore_int_attn_print(struct ecore_hwfn *p_hwfn,
 		u32 mask = ~bitmask;
 		val = ecore_rd(p_hwfn, p_hwfn->p_dpc_ptt, aeu_en_reg);
 		ecore_wr(p_hwfn, p_hwfn->p_dpc_ptt, aeu_en_reg, (val & mask));
-		DP_INFO(p_hwfn, "`%s' - Disabled future attentions\n",
+		DP_ERR(p_hwfn, "`%s' - Disabled future attentions\n",
 			p_bit_name);
 	}
 
-- 
1.7.10.3

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

* [PATCH 3/9] net/qede: limit ring size to 32k
  2017-06-29  9:51 [PATCH 0/9] net/qede: update PMD to 2.5.1.1 Rasesh Mody
  2017-06-29  9:51 ` [PATCH 1/9] net/qede: fix DMA memory leak Rasesh Mody
  2017-06-29  9:51 ` [PATCH 2/9] net/qede: add notifying HW errors Rasesh Mody
@ 2017-06-29  9:51 ` Rasesh Mody
  2017-06-29  9:51 ` [PATCH 4/9] net/qede: comments traces and format changes Rasesh Mody
                   ` (15 subsequent siblings)
  18 siblings, 0 replies; 27+ messages in thread
From: Rasesh Mody @ 2017-06-29  9:51 UTC (permalink / raw)
  To: dev; +Cc: Harish Patil, Dept-EngDPDKDev

From: Harish Patil <harish.patil@cavium.com>

Since nb_max is a u16 it can store value upto 65535 only (not 64K), but
this value is not a power-of-2. So limit the ring sizes to 32K.

Signed-off-by: Harish Patil <harish.patil@cavium.com>
---
 drivers/net/qede/qede_ethdev.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
index 3e9f359..fcc9bbb 100644
--- a/drivers/net/qede/qede_ethdev.c
+++ b/drivers/net/qede/qede_ethdev.c
@@ -1189,13 +1189,13 @@ static int qede_dev_configure(struct rte_eth_dev *eth_dev)
 
 /* Info about HW descriptor ring limitations */
 static const struct rte_eth_desc_lim qede_rx_desc_lim = {
-	.nb_max = NUM_RX_BDS_MAX,
+	.nb_max = 0x8000, /* 32K */
 	.nb_min = 128,
 	.nb_align = 128 /* lowest common multiple */
 };
 
 static const struct rte_eth_desc_lim qede_tx_desc_lim = {
-	.nb_max = NUM_TX_BDS_MAX,
+	.nb_max = 0x8000, /* 32K */
 	.nb_min = 256,
 	.nb_align = 256,
 	.nb_seg_max = ETH_TX_MAX_BDS_PER_LSO_PACKET,
-- 
1.7.10.3

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

* [PATCH 4/9] net/qede: comments traces and format changes
  2017-06-29  9:51 [PATCH 0/9] net/qede: update PMD to 2.5.1.1 Rasesh Mody
                   ` (2 preceding siblings ...)
  2017-06-29  9:51 ` [PATCH 3/9] net/qede: limit ring size to 32k Rasesh Mody
@ 2017-06-29  9:51 ` Rasesh Mody
  2017-06-29  9:51 ` [PATCH 5/9] net/qede: change debug verbosity of PMD messages Rasesh Mody
                   ` (14 subsequent siblings)
  18 siblings, 0 replies; 27+ messages in thread
From: Rasesh Mody @ 2017-06-29  9:51 UTC (permalink / raw)
  To: dev; +Cc: Rasesh Mody, Dept-EngDPDKDev

Changes include
 - comment modifications
 - adds tracing during initialization
 - adds/removes new lines

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
---
 drivers/net/qede/base/bcm_osal.c |   14 ++++++++------
 drivers/net/qede/qede_ethdev.c   |   11 +++++++++++
 drivers/net/qede/qede_rxtx.c     |    6 +++---
 3 files changed, 22 insertions(+), 9 deletions(-)

diff --git a/drivers/net/qede/base/bcm_osal.c b/drivers/net/qede/base/bcm_osal.c
index 4dee4da..70c53f5 100644
--- a/drivers/net/qede/base/bcm_osal.c
+++ b/drivers/net/qede/base/bcm_osal.c
@@ -146,9 +146,10 @@ void *osal_dma_alloc_coherent(struct ecore_dev *p_dev,
 	}
 	*phys = mz->phys_addr;
 	ecore_mz_mapping[ecore_mz_count++] = mz;
-	DP_VERBOSE(p_dev, ECORE_MSG_PROBE,
-		   "size=%zu phys=0x%" PRIx64 " virt=%p on socket=%u\n",
-		   mz->len, mz->phys_addr, mz->addr, socket_id);
+	DP_VERBOSE(p_dev, ECORE_MSG_SP,
+		   "Allocated dma memory size=%zu phys=0x%lx"
+		   " virt=%p core=%d\n",
+		   mz->len, (uintptr_t)mz->phys_addr, mz->addr, core_id);
 	return mz->addr;
 }
 
@@ -183,9 +184,10 @@ void *osal_dma_alloc_coherent_aligned(struct ecore_dev *p_dev,
 	}
 	*phys = mz->phys_addr;
 	ecore_mz_mapping[ecore_mz_count++] = mz;
-	DP_VERBOSE(p_dev, ECORE_MSG_PROBE,
-		   "aligned memory size=%zu phys=0x%" PRIx64 " virt=%p core=%d\n",
-		   mz->len, mz->phys_addr, mz->addr, core_id);
+	DP_VERBOSE(p_dev, ECORE_MSG_SP,
+		   "Allocated aligned dma memory size=%zu phys=0x%lx"
+		   " virt=%p core=%d\n",
+		   mz->len, (uintptr_t)mz->phys_addr, mz->addr, core_id);
 	return mz->addr;
 }
 
diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
index fcc9bbb..8e18a17 100644
--- a/drivers/net/qede/qede_ethdev.c
+++ b/drivers/net/qede/qede_ethdev.c
@@ -1121,8 +1121,10 @@ static int qede_dev_configure(struct rte_eth_dev *eth_dev)
 	/* Sanity checks and throw warnings */
 	if (rxmode->enable_scatter)
 		eth_dev->data->scattered_rx = 1;
+
 	if (!rxmode->hw_strip_crc)
 		DP_INFO(edev, "L2 CRC stripping is always enabled in hw\n");
+
 	if (!rxmode->hw_ip_checksum)
 		DP_INFO(edev, "IP/UDP/TCP checksum offload is always enabled "
 				"in hw\n");
@@ -2163,6 +2165,8 @@ static int qede_vxlan_tunn_config(struct rte_eth_dev *eth_dev,
 	uint16_t filter_type;
 	int rc, i;
 
+	PMD_INIT_FUNC_TRACE(edev);
+
 	filter_type = conf->filter_type | qdev->vxlan_filter_type;
 	/* First determine if the given filter classification is supported */
 	qede_get_ecore_tunn_params(filter_type, &type, &clss, str);
@@ -2605,6 +2609,13 @@ static int qede_eth_dev_init(struct rte_eth_dev *eth_dev)
 
 static int qede_dev_common_uninit(struct rte_eth_dev *eth_dev)
 {
+#ifdef RTE_LIBRTE_QEDE_DEBUG_INIT
+	struct qede_dev *qdev = eth_dev->data->dev_private;
+	struct ecore_dev *edev = &qdev->edev;
+
+	PMD_INIT_FUNC_TRACE(edev);
+#endif
+
 	/* only uninitialize in the primary process */
 	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
 		return 0;
diff --git a/drivers/net/qede/qede_rxtx.c b/drivers/net/qede/qede_rxtx.c
index 5c9a4dd..e48fd66 100644
--- a/drivers/net/qede/qede_rxtx.c
+++ b/drivers/net/qede/qede_rxtx.c
@@ -82,6 +82,7 @@ static inline int qede_alloc_rx_buffer(struct qede_rx_queue *rxq)
 	rxq->nb_rx_desc = nb_desc;
 	rxq->queue_id = queue_idx;
 	rxq->port_id = dev->data->port_id;
+
 	max_rx_pkt_len = (uint16_t)rxmode->max_rx_pkt_len;
 	qdev->mtu = max_rx_pkt_len;
 
@@ -94,6 +95,7 @@ static inline int qede_alloc_rx_buffer(struct qede_rx_queue *rxq)
 			dev->data->scattered_rx = 1;
 		}
 	}
+
 	if (dev->data->scattered_rx)
 		rxq->rx_buf_size = bufsz + QEDE_ETH_OVERHEAD;
 	else
@@ -704,7 +706,6 @@ void qede_dealloc_fp_resc(struct rte_eth_dev *eth_dev)
 		qede_free_tx_pkt(txq);
 }
 
-
 static int qede_drain_txq(struct qede_dev *qdev,
 			  struct qede_tx_queue *txq, bool allow_drain)
 {
@@ -740,7 +741,6 @@ static int qede_drain_txq(struct qede_dev *qdev,
 	return 0;
 }
 
-
 /* Stops a given TX queue in the HW */
 static int qede_tx_queue_stop(struct rte_eth_dev *eth_dev, uint16_t tx_queue_id)
 {
@@ -1083,7 +1083,7 @@ static inline uint32_t qede_rx_cqe_to_tunn_pkt_type(uint16_t flags)
 							pkt_len;
 		if (unlikely(!cur_size)) {
 			PMD_RX_LOG(ERR, rxq, "Length is 0 while %u BDs"
-				   " left for mapping jumbo", num_segs);
+				   " left for mapping jumbo\n", num_segs);
 			qede_recycle_rx_bd_ring(rxq, qdev, num_segs);
 			return -EINVAL;
 		}
-- 
1.7.10.3

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

* [PATCH 5/9] net/qede: change debug verbosity of PMD messages
  2017-06-29  9:51 [PATCH 0/9] net/qede: update PMD to 2.5.1.1 Rasesh Mody
                   ` (3 preceding siblings ...)
  2017-06-29  9:51 ` [PATCH 4/9] net/qede: comments traces and format changes Rasesh Mody
@ 2017-06-29  9:51 ` Rasesh Mody
  2017-06-29  9:51 ` [PATCH 6/9] net/qede: set mdump flag Rasesh Mody
                   ` (13 subsequent siblings)
  18 siblings, 0 replies; 27+ messages in thread
From: Rasesh Mody @ 2017-06-29  9:51 UTC (permalink / raw)
  To: dev; +Cc: Rasesh Mody, Dept-EngDPDKDev

Convert DP_NOTICE() to DP_ERR() as appropriate in PMD files.
Change DP_NOTICE() macro to make use of boolean flag to log
it as error message or informational message.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
---
 drivers/net/qede/qede_ethdev.c |   20 +++++++++-----------
 drivers/net/qede/qede_logs.h   |   23 ++++++++++++++---------
 drivers/net/qede/qede_main.c   |   20 +++++++++-----------
 drivers/net/qede/qede_rxtx.c   |   15 ++++++---------
 4 files changed, 38 insertions(+), 40 deletions(-)

diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
index 8e18a17..ad264ba 100644
--- a/drivers/net/qede/qede_ethdev.c
+++ b/drivers/net/qede/qede_ethdev.c
@@ -2434,8 +2434,7 @@ static int qede_common_dev_init(struct rte_eth_dev *eth_dev, bool is_vf)
 	eth_dev->tx_pkt_prepare = qede_xmit_prep_pkts;
 
 	if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
-		DP_NOTICE(edev, false,
-			  "Skipping device init from secondary process\n");
+		DP_ERR(edev, "Skipping device init from secondary process\n");
 		return 0;
 	}
 
@@ -2558,8 +2557,7 @@ static int qede_common_dev_init(struct rte_eth_dev *eth_dev, bool is_vf)
 				ether_addr_copy(&eth_dev->data->mac_addrs[0],
 						&adapter->primary_mac);
 			} else {
-				DP_NOTICE(edev, false,
-					  "No VF macaddr assigned\n");
+				DP_ERR(edev, "No VF macaddr assigned\n");
 			}
 		}
 	}
@@ -2584,13 +2582,13 @@ static int qede_common_dev_init(struct rte_eth_dev *eth_dev, bool is_vf)
 		if (qede_start_vport(adapter, adapter->mtu))
 			return -1;
 
-	DP_NOTICE(edev, false, "MAC address : %02x:%02x:%02x:%02x:%02x:%02x\n",
-		  adapter->primary_mac.addr_bytes[0],
-		  adapter->primary_mac.addr_bytes[1],
-		  adapter->primary_mac.addr_bytes[2],
-		  adapter->primary_mac.addr_bytes[3],
-		  adapter->primary_mac.addr_bytes[4],
-		  adapter->primary_mac.addr_bytes[5]);
+	DP_INFO(edev, "MAC address : %02x:%02x:%02x:%02x:%02x:%02x\n",
+		adapter->primary_mac.addr_bytes[0],
+		adapter->primary_mac.addr_bytes[1],
+		adapter->primary_mac.addr_bytes[2],
+		adapter->primary_mac.addr_bytes[3],
+		adapter->primary_mac.addr_bytes[4],
+		adapter->primary_mac.addr_bytes[5]);
 
 	DP_INFO(edev, "Device initialized\n");
 
diff --git a/drivers/net/qede/qede_logs.h b/drivers/net/qede/qede_logs.h
index 25c14d8..1582115 100644
--- a/drivers/net/qede/qede_logs.h
+++ b/drivers/net/qede/qede_logs.h
@@ -16,16 +16,21 @@
 		(p_dev)->name ? (p_dev)->name : "", \
 		##__VA_ARGS__)
 
-#ifdef RTE_LIBRTE_QEDE_DEBUG_INFO
 #define DP_NOTICE(p_dev, is_assert, fmt, ...) \
-	rte_log(RTE_LOG_NOTICE, RTE_LOGTYPE_PMD,\
-		"[QEDE PMD: (%s)]%s:" fmt, \
-		(p_dev)->name ? (p_dev)->name : "", \
-		 __func__, \
-		##__VA_ARGS__)
-#else
-#define DP_NOTICE(p_dev, fmt, ...) do { } while (0)
-#endif
+do { \
+	if (is_assert) \
+		rte_log(RTE_LOG_ERR, RTE_LOGTYPE_PMD,\
+			"[QEDE PMD: (%s)]%s:" fmt, \
+			(p_dev)->name ? (p_dev)->name : "", \
+			 __func__, \
+			##__VA_ARGS__); \
+	else \
+		rte_log(RTE_LOG_NOTICE, RTE_LOGTYPE_PMD,\
+			"[QEDE PMD: (%s)]%s:" fmt, \
+			(p_dev)->name ? (p_dev)->name : "", \
+			 __func__, \
+			##__VA_ARGS__); \
+} while (0)
 
 #ifdef RTE_LIBRTE_QEDE_DEBUG_INFO
 #define DP_INFO(p_dev, fmt, ...) \
diff --git a/drivers/net/qede/qede_main.c b/drivers/net/qede/qede_main.c
index f74626b..01584f8 100644
--- a/drivers/net/qede/qede_main.c
+++ b/drivers/net/qede/qede_main.c
@@ -130,12 +130,12 @@ static int qed_load_firmware_data(struct ecore_dev *edev)
 
 	fd = open(fw_file, O_RDONLY);
 	if (fd < 0) {
-		DP_NOTICE(edev, false, "Can't open firmware file\n");
+		DP_ERR(edev, "Can't open firmware file\n");
 		return -ENOENT;
 	}
 
 	if (fstat(fd, &st) < 0) {
-		DP_NOTICE(edev, false, "Can't stat firmware file\n");
+		DP_ERR(edev, "Can't stat firmware file\n");
 		close(fd);
 		return -1;
 	}
@@ -143,20 +143,20 @@ static int qed_load_firmware_data(struct ecore_dev *edev)
 	edev->firmware = rte_zmalloc("qede_fw", st.st_size,
 				    RTE_CACHE_LINE_SIZE);
 	if (!edev->firmware) {
-		DP_NOTICE(edev, false, "Can't allocate memory for firmware\n");
+		DP_ERR(edev, "Can't allocate memory for firmware\n");
 		close(fd);
 		return -ENOMEM;
 	}
 
 	if (read(fd, edev->firmware, st.st_size) != st.st_size) {
-		DP_NOTICE(edev, false, "Can't read firmware data\n");
+		DP_ERR(edev, "Can't read firmware data\n");
 		close(fd);
 		return -1;
 	}
 
 	edev->fw_len = st.st_size;
 	if (edev->fw_len < 104) {
-		DP_NOTICE(edev, false, "Invalid fw size: %" PRIu64 "\n",
+		DP_ERR(edev, "Invalid fw size: %" PRIu64 "\n",
 			  edev->fw_len);
 		close(fd);
 		return -EINVAL;
@@ -260,8 +260,7 @@ static int qed_slowpath_start(struct ecore_dev *edev,
 		/* Allocate stream for unzipping */
 		rc = qed_alloc_stream_mem(edev);
 		if (rc) {
-			DP_NOTICE(edev, true,
-			"Failed to allocate stream memory\n");
+			DP_ERR(edev, "Failed to allocate stream memory\n");
 			goto err1;
 		}
 	}
@@ -301,8 +300,7 @@ static int qed_slowpath_start(struct ecore_dev *edev,
 		rc = ecore_mcp_send_drv_version(hwfn, hwfn->p_main_ptt,
 						&drv_version);
 		if (rc) {
-			DP_NOTICE(edev, true,
-				  "Failed sending drv version command\n");
+			DP_ERR(edev, "Failed sending drv version command\n");
 			goto err3;
 		}
 	}
@@ -606,7 +604,7 @@ static int qed_drain(struct ecore_dev *edev)
 		hwfn = &edev->hwfns[i];
 		ptt = ecore_ptt_acquire(hwfn);
 		if (!ptt) {
-			DP_NOTICE(hwfn, true, "Failed to drain NIG; No PTT\n");
+			DP_ERR(hwfn, "Failed to drain NIG; No PTT\n");
 			return -EBUSY;
 		}
 		rc = ecore_mcp_drain(hwfn, ptt);
@@ -699,7 +697,7 @@ static int qed_get_sb_info(struct ecore_dev *edev, struct ecore_sb_info *sb,
 
 	ptt = ecore_ptt_acquire(hwfn);
 	if (!ptt) {
-		DP_NOTICE(hwfn, true, "Can't acquire PTT\n");
+		DP_ERR(hwfn, "Can't acquire PTT\n");
 		return -EAGAIN;
 	}
 
diff --git a/drivers/net/qede/qede_rxtx.c b/drivers/net/qede/qede_rxtx.c
index e48fd66..8063233 100644
--- a/drivers/net/qede/qede_rxtx.c
+++ b/drivers/net/qede/qede_rxtx.c
@@ -111,9 +111,8 @@ static inline int qede_alloc_rx_buffer(struct qede_rx_queue *rxq)
 	rxq->sw_rx_ring = rte_zmalloc_socket("sw_rx_ring", size,
 					     RTE_CACHE_LINE_SIZE, socket_id);
 	if (!rxq->sw_rx_ring) {
-		DP_NOTICE(edev, false,
-			  "Unable to alloc memory for sw_rx_ring on socket %u\n",
-			  socket_id);
+		DP_ERR(edev, "Memory allocation fails for sw_rx_ring on"
+		       " socket %u\n", socket_id);
 		rte_free(rxq);
 		return -ENOMEM;
 	}
@@ -129,9 +128,8 @@ static inline int qede_alloc_rx_buffer(struct qede_rx_queue *rxq)
 					    NULL);
 
 	if (rc != ECORE_SUCCESS) {
-		DP_NOTICE(edev, false,
-			  "Unable to alloc memory for rxbd ring on socket %u\n",
-			  socket_id);
+		DP_ERR(edev, "Memory allocation fails for RX BD ring"
+		       " on socket %u\n", socket_id);
 		rte_free(rxq->sw_rx_ring);
 		rte_free(rxq);
 		return -ENOMEM;
@@ -148,9 +146,8 @@ static inline int qede_alloc_rx_buffer(struct qede_rx_queue *rxq)
 					    NULL);
 
 	if (rc != ECORE_SUCCESS) {
-		DP_NOTICE(edev, false,
-			  "Unable to alloc memory for cqe ring on socket %u\n",
-			  socket_id);
+		DP_ERR(edev, "Memory allocation fails for RX CQE ring"
+		       " on socket %u\n", socket_id);
 		qdev->ops->common->chain_free(edev, &rxq->rx_bd_ring);
 		rte_free(rxq->sw_rx_ring);
 		rte_free(rxq);
-- 
1.7.10.3

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

* [PATCH 6/9] net/qede: set mdump flag
  2017-06-29  9:51 [PATCH 0/9] net/qede: update PMD to 2.5.1.1 Rasesh Mody
                   ` (4 preceding siblings ...)
  2017-06-29  9:51 ` [PATCH 5/9] net/qede: change debug verbosity of PMD messages Rasesh Mody
@ 2017-06-29  9:51 ` Rasesh Mody
  2017-06-29  9:51 ` [PATCH 7/9] net/qede: add missing check for VNI Rasesh Mody
                   ` (12 subsequent siblings)
  18 siblings, 0 replies; 27+ messages in thread
From: Rasesh Mody @ 2017-06-29  9:51 UTC (permalink / raw)
  To: dev; +Cc: Rasesh Mody, Dept-EngDPDKDev

Set allow management FW dump flag during HW prepare.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
---
 drivers/net/qede/base/ecore.h         |    2 +-
 drivers/net/qede/base/ecore_dev.c     |    1 +
 drivers/net/qede/base/ecore_dev_api.h |    3 +++
 drivers/net/qede/base/ecore_mcp.c     |    3 +--
 drivers/net/qede/qede_main.c          |    1 +
 5 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/net/qede/base/ecore.h b/drivers/net/qede/base/ecore.h
index d92988e..0d68a9b 100644
--- a/drivers/net/qede/base/ecore.h
+++ b/drivers/net/qede/base/ecore.h
@@ -770,7 +770,7 @@ struct ecore_dev {
 	bool				attn_clr_en;
 
 	/* Indicates whether allowing the MFW to collect a crash dump */
-	bool				mdump_en;
+	bool				allow_mdump;
 
 	/* Indicates if the reg_fifo is checked after any register access */
 	bool				chk_reg_fifo;
diff --git a/drivers/net/qede/base/ecore_dev.c b/drivers/net/qede/base/ecore_dev.c
index 138b986..4cfa668 100644
--- a/drivers/net/qede/base/ecore_dev.c
+++ b/drivers/net/qede/base/ecore_dev.c
@@ -3565,6 +3565,7 @@ enum _ecore_status_t ecore_hw_prepare(struct ecore_dev *p_dev,
 	enum _ecore_status_t rc;
 
 	p_dev->chk_reg_fifo = p_params->chk_reg_fifo;
+	p_dev->allow_mdump = p_params->allow_mdump;
 
 	if (p_params->b_relaxed_probe)
 		p_params->p_relaxed_res = ECORE_HW_PREPARE_SUCCESS;
diff --git a/drivers/net/qede/base/ecore_dev_api.h b/drivers/net/qede/base/ecore_dev_api.h
index e64a768..886407b 100644
--- a/drivers/net/qede/base/ecore_dev_api.h
+++ b/drivers/net/qede/base/ecore_dev_api.h
@@ -186,6 +186,9 @@ struct ecore_hw_prepare_params {
 	/* The OS Epoch time in seconds */
 	u32 epoch;
 
+	/* Allow the MFW to collect a crash dump */
+	bool allow_mdump;
+
 	/* Allow prepare to pass even if some initializations are failing.
 	 * If set, the `p_prepare_res' field would be set with the return,
 	 * and might allow probe to pass even if there are certain issues.
diff --git a/drivers/net/qede/base/ecore_mcp.c b/drivers/net/qede/base/ecore_mcp.c
index a834ac7..03cc901 100644
--- a/drivers/net/qede/base/ecore_mcp.c
+++ b/drivers/net/qede/base/ecore_mcp.c
@@ -1556,10 +1556,9 @@ static void ecore_mcp_handle_critical_error(struct ecore_hwfn *p_hwfn,
 	DP_NOTICE(p_hwfn, false,
 		  "Received a critical error notification from the MFW!\n");
 
-	if (p_hwfn->p_dev->mdump_en) {
+	if (p_hwfn->p_dev->allow_mdump) {
 		DP_NOTICE(p_hwfn, false,
 			  "Not acknowledging the notification to allow the MFW crash dump\n");
-		p_hwfn->p_dev->mdump_en = false;
 		return;
 	}
 
diff --git a/drivers/net/qede/qede_main.c b/drivers/net/qede/qede_main.c
index 01584f8..a6ff7af 100644
--- a/drivers/net/qede/qede_main.c
+++ b/drivers/net/qede/qede_main.c
@@ -60,6 +60,7 @@ static void qed_init_pci(struct ecore_dev *edev, struct rte_pci_device *pci_dev)
 	hw_prepare_params.drv_resc_alloc = false;
 	hw_prepare_params.chk_reg_fifo = false;
 	hw_prepare_params.initiate_pf_flr = true;
+	hw_prepare_params.allow_mdump = false;
 	hw_prepare_params.epoch = (u32)time(NULL);
 	rc = ecore_hw_prepare(edev, &hw_prepare_params);
 	if (rc) {
-- 
1.7.10.3

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

* [PATCH 7/9] net/qede: add missing check for VNI
  2017-06-29  9:51 [PATCH 0/9] net/qede: update PMD to 2.5.1.1 Rasesh Mody
                   ` (5 preceding siblings ...)
  2017-06-29  9:51 ` [PATCH 6/9] net/qede: set mdump flag Rasesh Mody
@ 2017-06-29  9:51 ` Rasesh Mody
  2017-06-29  9:51 ` [PATCH 8/9] net/qede: use newer packet mbuf allocate API Rasesh Mody
                   ` (11 subsequent siblings)
  18 siblings, 0 replies; 27+ messages in thread
From: Rasesh Mody @ 2017-06-29  9:51 UTC (permalink / raw)
  To: dev; +Cc: Rasesh Mody, Dept-EngDPDKDev

Add missing check for VNI field while adding unicast filter.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
---
 drivers/net/qede/qede_ethdev.c |    1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
index ad264ba..a0616a4 100644
--- a/drivers/net/qede/qede_ethdev.c
+++ b/drivers/net/qede/qede_ethdev.c
@@ -571,6 +571,7 @@ static void qede_set_cmn_tunn_param(struct ecore_tunnel_info *p_tunn,
 		SLIST_FOREACH(tmp, &qdev->uc_list_head, list) {
 			if ((memcmp(mac_addr, &tmp->mac,
 				    ETHER_ADDR_LEN) == 0) &&
+			     ucast->vni == tmp->vni &&
 			     ucast->vlan == tmp->vlan) {
 				DP_ERR(edev, "Unicast MAC is already added"
 				       " with vlan = %u, vni = %u\n",
-- 
1.7.10.3

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

* [PATCH 8/9] net/qede: use newer packet mbuf allocate API
  2017-06-29  9:51 [PATCH 0/9] net/qede: update PMD to 2.5.1.1 Rasesh Mody
                   ` (6 preceding siblings ...)
  2017-06-29  9:51 ` [PATCH 7/9] net/qede: add missing check for VNI Rasesh Mody
@ 2017-06-29  9:51 ` Rasesh Mody
  2017-06-29 12:55   ` Ferruh Yigit
  2017-06-29  9:51 ` [PATCH 9/9] net/qede: update PMD version to 2.5.1.1 Rasesh Mody
                   ` (10 subsequent siblings)
  18 siblings, 1 reply; 27+ messages in thread
From: Rasesh Mody @ 2017-06-29  9:51 UTC (permalink / raw)
  To: dev; +Cc: Rasesh Mody, Dept-EngDPDKDev

Use rte_pktmbuf_alloc() API instead of rte_mbuf_raw_alloc().

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
---
 drivers/net/qede/qede_rxtx.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/qede/qede_rxtx.c b/drivers/net/qede/qede_rxtx.c
index 8063233..6b047a3 100644
--- a/drivers/net/qede/qede_rxtx.c
+++ b/drivers/net/qede/qede_rxtx.c
@@ -16,7 +16,7 @@ static inline int qede_alloc_rx_buffer(struct qede_rx_queue *rxq)
 	dma_addr_t mapping;
 	uint16_t idx = rxq->sw_rx_prod & NUM_RX_BDS(rxq);
 
-	new_mb = rte_mbuf_raw_alloc(rxq->mb_pool);
+	new_mb = rte_pktmbuf_alloc(rxq->mb_pool);
 	if (unlikely(!new_mb)) {
 		PMD_RX_LOG(ERR, rxq,
 			   "Failed to allocate rx buffer "
-- 
1.7.10.3

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

* [PATCH 9/9] net/qede: update PMD version to 2.5.1.1
  2017-06-29  9:51 [PATCH 0/9] net/qede: update PMD to 2.5.1.1 Rasesh Mody
                   ` (7 preceding siblings ...)
  2017-06-29  9:51 ` [PATCH 8/9] net/qede: use newer packet mbuf allocate API Rasesh Mody
@ 2017-06-29  9:51 ` Rasesh Mody
  2017-06-29 12:16 ` [PATCH 0/9] net/qede: update PMD " Ferruh Yigit
                   ` (9 subsequent siblings)
  18 siblings, 0 replies; 27+ messages in thread
From: Rasesh Mody @ 2017-06-29  9:51 UTC (permalink / raw)
  To: dev; +Cc: Rasesh Mody, Dept-EngDPDKDev

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
---
 drivers/net/qede/qede_ethdev.h |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/qede/qede_ethdev.h b/drivers/net/qede/qede_ethdev.h
index 9a93286..510b6e2 100644
--- a/drivers/net/qede/qede_ethdev.h
+++ b/drivers/net/qede/qede_ethdev.h
@@ -50,7 +50,7 @@
 #define QEDE_PMD_VER_PREFIX		"QEDE PMD"
 #define QEDE_PMD_VERSION_MAJOR		2
 #define QEDE_PMD_VERSION_MINOR	        5
-#define QEDE_PMD_VERSION_REVISION       0
+#define QEDE_PMD_VERSION_REVISION       1
 #define QEDE_PMD_VERSION_PATCH	        1
 
 #define QEDE_PMD_VERSION qede_stringify(QEDE_PMD_VERSION_MAJOR) "."     \
-- 
1.7.10.3

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

* Re: [PATCH 0/9] net/qede: update PMD to 2.5.1.1
  2017-06-29  9:51 [PATCH 0/9] net/qede: update PMD to 2.5.1.1 Rasesh Mody
                   ` (8 preceding siblings ...)
  2017-06-29  9:51 ` [PATCH 9/9] net/qede: update PMD version to 2.5.1.1 Rasesh Mody
@ 2017-06-29 12:16 ` Ferruh Yigit
  2017-07-01 19:29 ` [PATCH v2 0/8] " Rasesh Mody
                   ` (8 subsequent siblings)
  18 siblings, 0 replies; 27+ messages in thread
From: Ferruh Yigit @ 2017-06-29 12:16 UTC (permalink / raw)
  To: Rasesh Mody, dev; +Cc: Dept-EngDPDKDev

On 6/29/2017 10:51 AM, Rasesh Mody wrote:
> Hi,
> 
> This patch set contains minor enhancements and bug fixes for QEDE PMD.
> It updates the driver version to 2.5.1.1. The patch set is tested
> against dpdk-next-net.
> 
> Thanks!
> Rasesh
> 
> Harish Patil (3):
>   net/qede: fix DMA memory leak
>   net/qede: add notifying HW errors
>   net/qede: limit ring size to 32k
> 
> Rasesh Mody (6):
>   net/qede: comments traces and format changes
>   net/qede: change debug verbosity of PMD messages
>   net/qede: set mdump flag
>   net/qede: add missing check for VNI
>   net/qede: use newer packet mbuf allocate API
>   net/qede: update PMD version to 2.5.1.1

Getting following build error [1] for i686 target.

Qede feature document only claims x86_64 support, but driver not
disabled in other config files. Is driver supports 32bits arch?

Can you please update config and/or features document to reflect actual
support status?

Thanks,
ferruh


[1]
In file included from/dpdk/drivers/net/qede/base/ecore.h:47:0,
                 from.../dpdk/drivers/net/qede/base/bcm_osal.c:13:
.../dpdk/drivers/net/qede/base/bcm_osal.c: In function
‘osal_dma_alloc_coherent’:
.../dpdk/drivers/net/qede/base/../qede_logs.h:51:4: error: format ‘%lx’
expects argument of type ‘long unsigned int’, but argument 8 has type
‘unsigned int’ [-Werror=format=]
    "[%s:%d(%s)]" fmt, \
    ^
.../dpdk/drivers/net/qede/base/bcm_osal.c:149:2: note: in expansion of
macro ‘DP_VERBOSE’
  DP_VERBOSE(p_dev, ECORE_MSG_SP,
  ^~~~~~~~~~
.../dpdk/drivers/net/qede/base/bcm_osal.c:150:46: note: format string is
defined here
      "Allocated dma memory size=%zu phys=0x%lx"
                                            ~~^
                                            %x
In file included from.../dpdk/drivers/net/qede/base/ecore.h:47:0,
                 from.../dpdk/drivers/net/qede/base/bcm_osal.c:13:
.../dpdk/drivers/net/qede/base/bcm_osal.c: In function
‘osal_dma_alloc_coherent_aligned’:
.../dpdk/drivers/net/qede/base/../qede_logs.h:51:4: error: format ‘%lx’
expects argument of type ‘long unsigned int’, but argument 8 has type
‘unsigned int’ [-Werror=format=]
    "[%s:%d(%s)]" fmt, \
    ^
.../dpdk/drivers/net/qede/base/bcm_osal.c:187:2: note: in expansion of
macro ‘DP_VERBOSE’
  DP_VERBOSE(p_dev, ECORE_MSG_SP,
  ^~~~~~~~~~
.../dpdk/drivers/net/qede/base/bcm_osal.c:188:54: note: format string is
defined here
      "Allocated aligned dma memory size=%zu phys=0x%lx"
                                                    ~~^
                                                    %x

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

* Re: [PATCH 8/9] net/qede: use newer packet mbuf allocate API
  2017-06-29  9:51 ` [PATCH 8/9] net/qede: use newer packet mbuf allocate API Rasesh Mody
@ 2017-06-29 12:55   ` Ferruh Yigit
  2017-07-01 19:34     ` Mody, Rasesh
  0 siblings, 1 reply; 27+ messages in thread
From: Ferruh Yigit @ 2017-06-29 12:55 UTC (permalink / raw)
  To: Rasesh Mody, dev; +Cc: Dept-EngDPDKDev

On 6/29/2017 10:51 AM, Rasesh Mody wrote:
> Use rte_pktmbuf_alloc() API instead of rte_mbuf_raw_alloc().
> 
> Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
> ---
>  drivers/net/qede/qede_rxtx.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/qede/qede_rxtx.c b/drivers/net/qede/qede_rxtx.c
> index 8063233..6b047a3 100644
> --- a/drivers/net/qede/qede_rxtx.c
> +++ b/drivers/net/qede/qede_rxtx.c
> @@ -16,7 +16,7 @@ static inline int qede_alloc_rx_buffer(struct qede_rx_queue *rxq)
>  	dma_addr_t mapping;
>  	uint16_t idx = rxq->sw_rx_prod & NUM_RX_BDS(rxq);
>  
> -	new_mb = rte_mbuf_raw_alloc(rxq->mb_pool);
> +	new_mb = rte_pktmbuf_alloc(rxq->mb_pool);

rte_pktmbuf_alloc() is more expensive call, because of
rte_pktmbuf_reset() it has.

Are you sure you want to switch, what is the motivation?

>  	if (unlikely(!new_mb)) {
>  		PMD_RX_LOG(ERR, rxq,
>  			   "Failed to allocate rx buffer "
> 

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

* [PATCH v2 0/8] net/qede: update PMD to 2.5.1.1
  2017-06-29  9:51 [PATCH 0/9] net/qede: update PMD to 2.5.1.1 Rasesh Mody
                   ` (9 preceding siblings ...)
  2017-06-29 12:16 ` [PATCH 0/9] net/qede: update PMD " Ferruh Yigit
@ 2017-07-01 19:29 ` Rasesh Mody
  2017-07-05 10:01   ` Ferruh Yigit
  2017-07-01 19:29 ` [PATCH v2 1/8] net/qede: fix DMA memory leak Rasesh Mody
                   ` (7 subsequent siblings)
  18 siblings, 1 reply; 27+ messages in thread
From: Rasesh Mody @ 2017-07-01 19:29 UTC (permalink / raw)
  To: ferruh.yigit, dev; +Cc: Rasesh Mody, Dept-EngDPDKDev

Hi Ferruh,

This patch set contains minor enhancements and bug fixes for QEDE PMD.
It updates the driver version to 2.5.1.1. The patch set is tested
against dpdk-next-net.

Please apply to 17.08 tree.

v1..v2 address all review comments

Thanks!
Rasesh

Harish Patil (3):
  net/qede: fix DMA memory leak
  net/qede: add notifying HW errors
  net/qede: limit ring size to 32k

Rasesh Mody (5):
  net/qede: comments traces and format changes
  net/qede: change debug verbosity of PMD messages
  net/qede: set mdump flag
  net/qede: add missing check for VNI
  net/qede: update PMD version to 2.5.1.1

 doc/guides/nics/features/qede.ini     |    1 +
 drivers/net/qede/base/bcm_osal.c      |   82 ++++++++++++++++++++++++++++++---
 drivers/net/qede/base/bcm_osal.h      |   12 +++--
 drivers/net/qede/base/ecore.h         |    2 +-
 drivers/net/qede/base/ecore_dev.c     |    1 +
 drivers/net/qede/base/ecore_dev_api.h |    3 ++
 drivers/net/qede/base/ecore_int.c     |    2 +-
 drivers/net/qede/base/ecore_mcp.c     |    3 +-
 drivers/net/qede/qede_ethdev.c        |   45 +++++++++---------
 drivers/net/qede/qede_ethdev.h        |    2 +-
 drivers/net/qede/qede_logs.h          |   23 +++++----
 drivers/net/qede/qede_main.c          |   21 ++++-----
 drivers/net/qede/qede_rxtx.c          |   71 +++++++++++++++++++---------
 13 files changed, 192 insertions(+), 76 deletions(-)

-- 
1.7.10.3

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

* [PATCH v2 1/8] net/qede: fix DMA memory leak
  2017-06-29  9:51 [PATCH 0/9] net/qede: update PMD to 2.5.1.1 Rasesh Mody
                   ` (10 preceding siblings ...)
  2017-07-01 19:29 ` [PATCH v2 0/8] " Rasesh Mody
@ 2017-07-01 19:29 ` Rasesh Mody
  2017-07-01 19:29 ` [PATCH v2 2/8] net/qede: add notifying HW errors Rasesh Mody
                   ` (6 subsequent siblings)
  18 siblings, 0 replies; 27+ messages in thread
From: Rasesh Mody @ 2017-07-01 19:29 UTC (permalink / raw)
  To: ferruh.yigit, dev; +Cc: Harish Patil, Dept-EngDPDKDev, Rasesh Mody

From: Harish Patil <harish.patil@cavium.com>

Implement the macro OSAL_DMA_FREE_COHERENT to release DMA memories.
Track all DMA memory allocations using an array of memzone pointers and
use that to free memory resoureces along with other resource deallocation.
With this change there is no need to alter the base code to additionally
pass an unique string needed for memzone creation.

Fixes: ec94dbc57362 ("qede: add base driver")

Signed-off-by: Harish Patil <harish.patil@cavium.com>
Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
---
 drivers/net/qede/base/bcm_osal.c |   36 +++++++++++++++++++++++++++
 drivers/net/qede/base/bcm_osal.h |    6 +++--
 drivers/net/qede/qede_ethdev.c   |    9 +------
 drivers/net/qede/qede_rxtx.c     |   50 +++++++++++++++++++++++++++++++-------
 4 files changed, 82 insertions(+), 19 deletions(-)

diff --git a/drivers/net/qede/base/bcm_osal.c b/drivers/net/qede/base/bcm_osal.c
index 3f895cd..1ccfad0 100644
--- a/drivers/net/qede/base/bcm_osal.c
+++ b/drivers/net/qede/base/bcm_osal.c
@@ -16,6 +16,10 @@
 #include "ecore_mcp_api.h"
 #include "ecore_l2_api.h"
 
+/* Array of memzone pointers */
+static const struct rte_memzone *ecore_mz_mapping[RTE_MAX_MEMZONE];
+/* Counter to track current memzone allocated */
+uint16_t ecore_mz_count;
 
 unsigned long qede_log2_align(unsigned long n)
 {
@@ -118,6 +122,13 @@ void *osal_dma_alloc_coherent(struct ecore_dev *p_dev,
 	uint32_t core_id = rte_lcore_id();
 	unsigned int socket_id;
 
+	if (ecore_mz_count >= RTE_MAX_MEMZONE) {
+		DP_ERR(p_dev, "Memzone allocation count exceeds %u\n",
+		       RTE_MAX_MEMZONE);
+		*phys = 0;
+		return OSAL_NULL;
+	}
+
 	OSAL_MEM_ZERO(mz_name, sizeof(*mz_name));
 	snprintf(mz_name, sizeof(mz_name) - 1, "%lx",
 					(unsigned long)rte_get_timer_cycles());
@@ -134,6 +145,7 @@ void *osal_dma_alloc_coherent(struct ecore_dev *p_dev,
 		return OSAL_NULL;
 	}
 	*phys = mz->phys_addr;
+	ecore_mz_mapping[ecore_mz_count++] = mz;
 	DP_VERBOSE(p_dev, ECORE_MSG_PROBE,
 		   "size=%zu phys=0x%" PRIx64 " virt=%p on socket=%u\n",
 		   mz->len, mz->phys_addr, mz->addr, socket_id);
@@ -148,6 +160,13 @@ void *osal_dma_alloc_coherent_aligned(struct ecore_dev *p_dev,
 	uint32_t core_id = rte_lcore_id();
 	unsigned int socket_id;
 
+	if (ecore_mz_count >= RTE_MAX_MEMZONE) {
+		DP_ERR(p_dev, "Memzone allocation count exceeds %u\n",
+		       RTE_MAX_MEMZONE);
+		*phys = 0;
+		return OSAL_NULL;
+	}
+
 	OSAL_MEM_ZERO(mz_name, sizeof(*mz_name));
 	snprintf(mz_name, sizeof(mz_name) - 1, "%lx",
 					(unsigned long)rte_get_timer_cycles());
@@ -163,12 +182,29 @@ void *osal_dma_alloc_coherent_aligned(struct ecore_dev *p_dev,
 		return OSAL_NULL;
 	}
 	*phys = mz->phys_addr;
+	ecore_mz_mapping[ecore_mz_count++] = mz;
 	DP_VERBOSE(p_dev, ECORE_MSG_PROBE,
 		   "aligned memory size=%zu phys=0x%" PRIx64 " virt=%p core=%d\n",
 		   mz->len, mz->phys_addr, mz->addr, core_id);
 	return mz->addr;
 }
 
+void osal_dma_free_mem(struct ecore_dev *p_dev, dma_addr_t phys)
+{
+	uint16_t j;
+
+	for (j = 0 ; j < ecore_mz_count; j++) {
+		if (phys == ecore_mz_mapping[j]->phys_addr) {
+			DP_VERBOSE(p_dev, ECORE_MSG_SP,
+				"Free memzone %s\n", ecore_mz_mapping[j]->name);
+			rte_memzone_free(ecore_mz_mapping[j]);
+			return;
+		}
+	}
+
+	DP_ERR(p_dev, "Unexpected memory free request\n");
+}
+
 #ifdef CONFIG_ECORE_ZIPPED_FW
 u32 qede_unzip_data(struct ecore_hwfn *p_hwfn, u32 input_len,
 		    u8 *input_buf, u32 max_size, u8 *unzip_buf)
diff --git a/drivers/net/qede/base/bcm_osal.h b/drivers/net/qede/base/bcm_osal.h
index 340d5f0..444512c 100644
--- a/drivers/net/qede/base/bcm_osal.h
+++ b/drivers/net/qede/base/bcm_osal.h
@@ -107,14 +107,16 @@
 void *osal_dma_alloc_coherent_aligned(struct ecore_dev *, dma_addr_t *,
 				      size_t, int);
 
+void osal_dma_free_mem(struct ecore_dev *edev, dma_addr_t phys);
+
 #define OSAL_DMA_ALLOC_COHERENT(dev, phys, size) \
 	osal_dma_alloc_coherent(dev, phys, size)
 
 #define OSAL_DMA_ALLOC_COHERENT_ALIGNED(dev, phys, size, align) \
 	osal_dma_alloc_coherent_aligned(dev, phys, size, align)
 
-/* TODO: */
-#define OSAL_DMA_FREE_COHERENT(dev, virt, phys, size) nothing
+#define OSAL_DMA_FREE_COHERENT(dev, virt, phys, size) \
+	osal_dma_free_mem(dev, phys)
 
 /* HW reads/writes */
 
diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
index 6380c2b..3e9f359 100644
--- a/drivers/net/qede/qede_ethdev.c
+++ b/drivers/net/qede/qede_ethdev.c
@@ -1143,7 +1143,7 @@ static int qede_dev_configure(struct rte_eth_dev *eth_dev)
 	 * again and the fastpath pointers will be reinitialized there.
 	 */
 	if (qdev->num_tx_queues != eth_dev->data->nb_tx_queues ||
-			qdev->num_rx_queues != eth_dev->data->nb_rx_queues) {
+	    qdev->num_rx_queues != eth_dev->data->nb_rx_queues) {
 		qede_dealloc_fp_resc(eth_dev);
 		/* Proceed with updated queue count */
 		qdev->num_tx_queues = eth_dev->data->nb_tx_queues;
@@ -1373,7 +1373,6 @@ static void qede_dev_close(struct rte_eth_dev *eth_dev)
 	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);
 	struct qede_dev *qdev = QEDE_INIT_QDEV(eth_dev);
 	struct ecore_dev *edev = QEDE_INIT_EDEV(qdev);
-	uint8_t i;
 
 	PMD_INIT_FUNC_TRACE(edev);
 
@@ -1389,12 +1388,6 @@ static void qede_dev_close(struct rte_eth_dev *eth_dev)
 	qede_fdir_dealloc_resc(eth_dev);
 	qede_dealloc_fp_resc(eth_dev);
 
-	for (i = 0; i < eth_dev->data->nb_rx_queues; i++)
-		if (eth_dev->data->rx_queues[i])
-			eth_dev->data->rx_queues[i] = NULL;
-	for (i = 0; i < eth_dev->data->nb_tx_queues; i++)
-		if (eth_dev->data->tx_queues[i])
-			eth_dev->data->tx_queues[i] = NULL;
 	eth_dev->data->nb_rx_queues = 0;
 	eth_dev->data->nb_tx_queues = 0;
 
diff --git a/drivers/net/qede/qede_rxtx.c b/drivers/net/qede/qede_rxtx.c
index f65c833..5c9a4dd 100644
--- a/drivers/net/qede/qede_rxtx.c
+++ b/drivers/net/qede/qede_rxtx.c
@@ -149,7 +149,7 @@ static inline int qede_alloc_rx_buffer(struct qede_rx_queue *rxq)
 		DP_NOTICE(edev, false,
 			  "Unable to alloc memory for cqe ring on socket %u\n",
 			  socket_id);
-		/* TBD: Freeing RX BD ring */
+		qdev->ops->common->chain_free(edev, &rxq->rx_bd_ring);
 		rte_free(rxq->sw_rx_ring);
 		rte_free(rxq);
 		return -ENOMEM;
@@ -300,6 +300,7 @@ static int qede_rx_queue_stop(struct rte_eth_dev *eth_dev, uint16_t rx_queue_id)
 		DP_ERR(edev,
 		       "Unable to allocate memory for txbd ring on socket %u",
 		       socket_id);
+		qdev->ops->common->chain_free(edev, &txq->tx_pbl);
 		qede_tx_queue_release(txq);
 		return -ENOMEM;
 	}
@@ -363,23 +364,23 @@ void qede_tx_queue_release(void *tx_queue)
 qede_alloc_mem_sb(struct qede_dev *qdev, struct ecore_sb_info *sb_info,
 		  uint16_t sb_id)
 {
-	struct ecore_dev *edev = &qdev->edev;
+	struct ecore_dev *edev = QEDE_INIT_EDEV(qdev);
 	struct status_block *sb_virt;
 	dma_addr_t sb_phys;
 	int rc;
 
-	sb_virt = OSAL_DMA_ALLOC_COHERENT(edev, &sb_phys, sizeof(*sb_virt));
-
+	sb_virt = OSAL_DMA_ALLOC_COHERENT(edev, &sb_phys,
+					  sizeof(struct status_block));
 	if (!sb_virt) {
 		DP_ERR(edev, "Status block allocation failed\n");
 		return -ENOMEM;
 	}
-
 	rc = qdev->ops->common->sb_init(edev, sb_info, sb_virt,
 					sb_phys, sb_id);
 	if (rc) {
 		DP_ERR(edev, "Status block initialization failed\n");
-		/* TBD: No dma_free_coherent possible */
+		OSAL_DMA_FREE_COHERENT(edev, sb_virt, sb_phys,
+				       sizeof(struct status_block));
 		return rc;
 	}
 
@@ -437,9 +438,12 @@ int qede_alloc_fp_resc(struct qede_dev *qdev)
 void qede_dealloc_fp_resc(struct rte_eth_dev *eth_dev)
 {
 	struct qede_dev *qdev = QEDE_INIT_QDEV(eth_dev);
-	__rte_unused struct ecore_dev *edev = QEDE_INIT_EDEV(qdev);
+	struct ecore_dev *edev = QEDE_INIT_EDEV(qdev);
 	struct qede_fastpath *fp;
+	struct qede_rx_queue *rxq;
+	struct qede_tx_queue *txq;
 	uint16_t sb_idx;
+	uint8_t i;
 
 	PMD_INIT_FUNC_TRACE(edev);
 
@@ -447,10 +451,38 @@ void qede_dealloc_fp_resc(struct rte_eth_dev *eth_dev)
 		fp = &qdev->fp_array[sb_idx];
 		DP_INFO(edev, "Free sb_info index 0x%x\n",
 				fp->sb_info->igu_sb_id);
-		if (fp->sb_info)
+		if (fp->sb_info) {
+			OSAL_DMA_FREE_COHERENT(edev, fp->sb_info->sb_virt,
+				fp->sb_info->sb_phys,
+				sizeof(struct status_block));
 			rte_free(fp->sb_info);
-		fp->sb_info = NULL;
+			fp->sb_info = NULL;
+		}
 	}
+
+	/* Free packet buffers and ring memories */
+	for (i = 0; i < eth_dev->data->nb_rx_queues; i++) {
+		if (eth_dev->data->rx_queues[i]) {
+			qede_rx_queue_release(eth_dev->data->rx_queues[i]);
+			rxq = eth_dev->data->rx_queues[i];
+			qdev->ops->common->chain_free(edev,
+						      &rxq->rx_bd_ring);
+			qdev->ops->common->chain_free(edev,
+						      &rxq->rx_comp_ring);
+			eth_dev->data->rx_queues[i] = NULL;
+		}
+	}
+
+	for (i = 0; i < eth_dev->data->nb_tx_queues; i++) {
+		if (eth_dev->data->tx_queues[i]) {
+			txq = eth_dev->data->tx_queues[i];
+			qede_tx_queue_release(eth_dev->data->tx_queues[i]);
+			qdev->ops->common->chain_free(edev,
+						      &txq->tx_pbl);
+			eth_dev->data->tx_queues[i] = NULL;
+		}
+	}
+
 	if (qdev->fp_array)
 		rte_free(qdev->fp_array);
 	qdev->fp_array = NULL;
-- 
1.7.10.3

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

* [PATCH v2 2/8] net/qede: add notifying HW errors
  2017-06-29  9:51 [PATCH 0/9] net/qede: update PMD to 2.5.1.1 Rasesh Mody
                   ` (11 preceding siblings ...)
  2017-07-01 19:29 ` [PATCH v2 1/8] net/qede: fix DMA memory leak Rasesh Mody
@ 2017-07-01 19:29 ` Rasesh Mody
  2017-07-01 19:29 ` [PATCH v2 3/8] net/qede: limit ring size to 32k Rasesh Mody
                   ` (5 subsequent siblings)
  18 siblings, 0 replies; 27+ messages in thread
From: Rasesh Mody @ 2017-07-01 19:29 UTC (permalink / raw)
  To: ferruh.yigit, dev; +Cc: Harish Patil, Dept-EngDPDKDev, Rasesh Mody

From: Harish Patil <harish.patil@cavium.com>

Log HW errmsg on the stdout and do minimal handling to prevent HW
attentions from being reasserted.

Signed-off-by: Harish Patil <harish.patil@cavium.com>
Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
---
 drivers/net/qede/base/bcm_osal.c  |   32 ++++++++++++++++++++++++++++++++
 drivers/net/qede/base/bcm_osal.h  |    6 +++++-
 drivers/net/qede/base/ecore_int.c |    2 +-
 3 files changed, 38 insertions(+), 2 deletions(-)

diff --git a/drivers/net/qede/base/bcm_osal.c b/drivers/net/qede/base/bcm_osal.c
index 1ccfad0..4dee4da 100644
--- a/drivers/net/qede/base/bcm_osal.c
+++ b/drivers/net/qede/base/bcm_osal.c
@@ -255,3 +255,35 @@ u32 qede_unzip_data(struct ecore_hwfn *p_hwfn, u32 input_len,
 		       type);
 	}
 }
+
+void
+qede_hw_err_notify(struct ecore_hwfn *p_hwfn, enum ecore_hw_err_type err_type)
+{
+	char err_str[64];
+
+	switch (err_type) {
+	case ECORE_HW_ERR_FAN_FAIL:
+		strcpy(err_str, "Fan Failure");
+		break;
+	case ECORE_HW_ERR_MFW_RESP_FAIL:
+		strcpy(err_str, "MFW Response Failure");
+		break;
+	case ECORE_HW_ERR_HW_ATTN:
+		strcpy(err_str, "HW Attention");
+		break;
+	case ECORE_HW_ERR_DMAE_FAIL:
+		strcpy(err_str, "DMAE Failure");
+		break;
+	case ECORE_HW_ERR_RAMROD_FAIL:
+		strcpy(err_str, "Ramrod Failure");
+		break;
+	case ECORE_HW_ERR_FW_ASSERT:
+		strcpy(err_str, "FW Assertion");
+		break;
+	default:
+		strcpy(err_str, "Unknown");
+	}
+
+	DP_ERR(p_hwfn, "HW error occurred [%s]\n", err_str);
+	ecore_int_attn_clr_enable(p_hwfn->p_dev, true);
+}
diff --git a/drivers/net/qede/base/bcm_osal.h b/drivers/net/qede/base/bcm_osal.h
index 444512c..3acf8f7 100644
--- a/drivers/net/qede/base/bcm_osal.h
+++ b/drivers/net/qede/base/bcm_osal.h
@@ -27,6 +27,7 @@
 struct vf_pf_resc_request;
 enum ecore_mcp_protocol_type;
 union ecore_mcp_protocol_stats;
+enum ecore_hw_err_type;
 
 void qed_link_update(struct ecore_hwfn *hwfn);
 
@@ -350,6 +351,8 @@ u32 qede_unzip_data(struct ecore_hwfn *p_hwfn, u32 input_len,
 		   u8 *input_buf, u32 max_size, u8 *unzip_buf);
 void qede_vf_fill_driver_data(struct ecore_hwfn *, struct vf_pf_resc_request *,
 			      struct ecore_vf_acquire_sw_info *);
+void qede_hw_err_notify(struct ecore_hwfn *p_hwfn,
+			enum ecore_hw_err_type err_type);
 #define OSAL_VF_FILL_ACQUIRE_RESC_REQ(_dev_p, _resc_req, _os_info) \
 	qede_vf_fill_driver_data(_dev_p, _resc_req, _os_info)
 
@@ -358,7 +361,8 @@ void qede_vf_fill_driver_data(struct ecore_hwfn *, struct vf_pf_resc_request *,
 
 /* TODO: */
 #define OSAL_SCHEDULE_RECOVERY_HANDLER(hwfn) nothing
-#define OSAL_HW_ERROR_OCCURRED(hwfn, err_type) nothing
+#define OSAL_HW_ERROR_OCCURRED(hwfn, err_type) \
+	qede_hw_err_notify(hwfn, err_type)
 
 #define OSAL_NVM_IS_ACCESS_ENABLED(hwfn) (1)
 #define OSAL_NUM_ACTIVE_CPU()	0
diff --git a/drivers/net/qede/base/ecore_int.c b/drivers/net/qede/base/ecore_int.c
index 8dc4d15..2afca29 100644
--- a/drivers/net/qede/base/ecore_int.c
+++ b/drivers/net/qede/base/ecore_int.c
@@ -842,7 +842,7 @@ static void ecore_int_attn_print(struct ecore_hwfn *p_hwfn,
 		u32 mask = ~bitmask;
 		val = ecore_rd(p_hwfn, p_hwfn->p_dpc_ptt, aeu_en_reg);
 		ecore_wr(p_hwfn, p_hwfn->p_dpc_ptt, aeu_en_reg, (val & mask));
-		DP_INFO(p_hwfn, "`%s' - Disabled future attentions\n",
+		DP_ERR(p_hwfn, "`%s' - Disabled future attentions\n",
 			p_bit_name);
 	}
 
-- 
1.7.10.3

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

* [PATCH v2 3/8] net/qede: limit ring size to 32k
  2017-06-29  9:51 [PATCH 0/9] net/qede: update PMD to 2.5.1.1 Rasesh Mody
                   ` (12 preceding siblings ...)
  2017-07-01 19:29 ` [PATCH v2 2/8] net/qede: add notifying HW errors Rasesh Mody
@ 2017-07-01 19:29 ` Rasesh Mody
  2017-07-01 19:29 ` [PATCH v2 4/8] net/qede: comments traces and format changes Rasesh Mody
                   ` (4 subsequent siblings)
  18 siblings, 0 replies; 27+ messages in thread
From: Rasesh Mody @ 2017-07-01 19:29 UTC (permalink / raw)
  To: ferruh.yigit, dev; +Cc: Harish Patil, Dept-EngDPDKDev

From: Harish Patil <harish.patil@cavium.com>

Since nb_max is a u16 it can store value upto 65535 only (not 64K), but
this value is not a power-of-2. So limit the ring sizes to 32K.

Signed-off-by: Harish Patil <harish.patil@cavium.com>
---
 drivers/net/qede/qede_ethdev.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
index 3e9f359..fcc9bbb 100644
--- a/drivers/net/qede/qede_ethdev.c
+++ b/drivers/net/qede/qede_ethdev.c
@@ -1189,13 +1189,13 @@ static int qede_dev_configure(struct rte_eth_dev *eth_dev)
 
 /* Info about HW descriptor ring limitations */
 static const struct rte_eth_desc_lim qede_rx_desc_lim = {
-	.nb_max = NUM_RX_BDS_MAX,
+	.nb_max = 0x8000, /* 32K */
 	.nb_min = 128,
 	.nb_align = 128 /* lowest common multiple */
 };
 
 static const struct rte_eth_desc_lim qede_tx_desc_lim = {
-	.nb_max = NUM_TX_BDS_MAX,
+	.nb_max = 0x8000, /* 32K */
 	.nb_min = 256,
 	.nb_align = 256,
 	.nb_seg_max = ETH_TX_MAX_BDS_PER_LSO_PACKET,
-- 
1.7.10.3

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

* [PATCH v2 4/8] net/qede: comments traces and format changes
  2017-06-29  9:51 [PATCH 0/9] net/qede: update PMD to 2.5.1.1 Rasesh Mody
                   ` (13 preceding siblings ...)
  2017-07-01 19:29 ` [PATCH v2 3/8] net/qede: limit ring size to 32k Rasesh Mody
@ 2017-07-01 19:29 ` Rasesh Mody
  2017-07-01 19:29 ` [PATCH v2 5/8] net/qede: change debug verbosity of PMD messages Rasesh Mody
                   ` (3 subsequent siblings)
  18 siblings, 0 replies; 27+ messages in thread
From: Rasesh Mody @ 2017-07-01 19:29 UTC (permalink / raw)
  To: ferruh.yigit, dev; +Cc: Rasesh Mody, Dept-EngDPDKDev

Changes include
 - comment modifications
 - adds tracing during initialization
 - adds/removes new lines

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
---
 drivers/net/qede/base/bcm_osal.c |   14 ++++++++------
 drivers/net/qede/qede_ethdev.c   |   11 +++++++++++
 drivers/net/qede/qede_rxtx.c     |    6 +++---
 3 files changed, 22 insertions(+), 9 deletions(-)

diff --git a/drivers/net/qede/base/bcm_osal.c b/drivers/net/qede/base/bcm_osal.c
index 4dee4da..968fb76 100644
--- a/drivers/net/qede/base/bcm_osal.c
+++ b/drivers/net/qede/base/bcm_osal.c
@@ -146,9 +146,10 @@ void *osal_dma_alloc_coherent(struct ecore_dev *p_dev,
 	}
 	*phys = mz->phys_addr;
 	ecore_mz_mapping[ecore_mz_count++] = mz;
-	DP_VERBOSE(p_dev, ECORE_MSG_PROBE,
-		   "size=%zu phys=0x%" PRIx64 " virt=%p on socket=%u\n",
-		   mz->len, mz->phys_addr, mz->addr, socket_id);
+	DP_VERBOSE(p_dev, ECORE_MSG_SP,
+		   "Allocated dma memory size=%zu phys=0x%lx"
+		   " virt=%p core=%d\n",
+		   mz->len, (unsigned long)mz->phys_addr, mz->addr, core_id);
 	return mz->addr;
 }
 
@@ -183,9 +184,10 @@ void *osal_dma_alloc_coherent_aligned(struct ecore_dev *p_dev,
 	}
 	*phys = mz->phys_addr;
 	ecore_mz_mapping[ecore_mz_count++] = mz;
-	DP_VERBOSE(p_dev, ECORE_MSG_PROBE,
-		   "aligned memory size=%zu phys=0x%" PRIx64 " virt=%p core=%d\n",
-		   mz->len, mz->phys_addr, mz->addr, core_id);
+	DP_VERBOSE(p_dev, ECORE_MSG_SP,
+		   "Allocated aligned dma memory size=%zu phys=0x%lx"
+		   " virt=%p core=%d\n",
+		   mz->len, (unsigned long)mz->phys_addr, mz->addr, core_id);
 	return mz->addr;
 }
 
diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
index fcc9bbb..8e18a17 100644
--- a/drivers/net/qede/qede_ethdev.c
+++ b/drivers/net/qede/qede_ethdev.c
@@ -1121,8 +1121,10 @@ static int qede_dev_configure(struct rte_eth_dev *eth_dev)
 	/* Sanity checks and throw warnings */
 	if (rxmode->enable_scatter)
 		eth_dev->data->scattered_rx = 1;
+
 	if (!rxmode->hw_strip_crc)
 		DP_INFO(edev, "L2 CRC stripping is always enabled in hw\n");
+
 	if (!rxmode->hw_ip_checksum)
 		DP_INFO(edev, "IP/UDP/TCP checksum offload is always enabled "
 				"in hw\n");
@@ -2163,6 +2165,8 @@ static int qede_vxlan_tunn_config(struct rte_eth_dev *eth_dev,
 	uint16_t filter_type;
 	int rc, i;
 
+	PMD_INIT_FUNC_TRACE(edev);
+
 	filter_type = conf->filter_type | qdev->vxlan_filter_type;
 	/* First determine if the given filter classification is supported */
 	qede_get_ecore_tunn_params(filter_type, &type, &clss, str);
@@ -2605,6 +2609,13 @@ static int qede_eth_dev_init(struct rte_eth_dev *eth_dev)
 
 static int qede_dev_common_uninit(struct rte_eth_dev *eth_dev)
 {
+#ifdef RTE_LIBRTE_QEDE_DEBUG_INIT
+	struct qede_dev *qdev = eth_dev->data->dev_private;
+	struct ecore_dev *edev = &qdev->edev;
+
+	PMD_INIT_FUNC_TRACE(edev);
+#endif
+
 	/* only uninitialize in the primary process */
 	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
 		return 0;
diff --git a/drivers/net/qede/qede_rxtx.c b/drivers/net/qede/qede_rxtx.c
index 5c9a4dd..e48fd66 100644
--- a/drivers/net/qede/qede_rxtx.c
+++ b/drivers/net/qede/qede_rxtx.c
@@ -82,6 +82,7 @@ static inline int qede_alloc_rx_buffer(struct qede_rx_queue *rxq)
 	rxq->nb_rx_desc = nb_desc;
 	rxq->queue_id = queue_idx;
 	rxq->port_id = dev->data->port_id;
+
 	max_rx_pkt_len = (uint16_t)rxmode->max_rx_pkt_len;
 	qdev->mtu = max_rx_pkt_len;
 
@@ -94,6 +95,7 @@ static inline int qede_alloc_rx_buffer(struct qede_rx_queue *rxq)
 			dev->data->scattered_rx = 1;
 		}
 	}
+
 	if (dev->data->scattered_rx)
 		rxq->rx_buf_size = bufsz + QEDE_ETH_OVERHEAD;
 	else
@@ -704,7 +706,6 @@ void qede_dealloc_fp_resc(struct rte_eth_dev *eth_dev)
 		qede_free_tx_pkt(txq);
 }
 
-
 static int qede_drain_txq(struct qede_dev *qdev,
 			  struct qede_tx_queue *txq, bool allow_drain)
 {
@@ -740,7 +741,6 @@ static int qede_drain_txq(struct qede_dev *qdev,
 	return 0;
 }
 
-
 /* Stops a given TX queue in the HW */
 static int qede_tx_queue_stop(struct rte_eth_dev *eth_dev, uint16_t tx_queue_id)
 {
@@ -1083,7 +1083,7 @@ static inline uint32_t qede_rx_cqe_to_tunn_pkt_type(uint16_t flags)
 							pkt_len;
 		if (unlikely(!cur_size)) {
 			PMD_RX_LOG(ERR, rxq, "Length is 0 while %u BDs"
-				   " left for mapping jumbo", num_segs);
+				   " left for mapping jumbo\n", num_segs);
 			qede_recycle_rx_bd_ring(rxq, qdev, num_segs);
 			return -EINVAL;
 		}
-- 
1.7.10.3

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

* [PATCH v2 5/8] net/qede: change debug verbosity of PMD messages
  2017-06-29  9:51 [PATCH 0/9] net/qede: update PMD to 2.5.1.1 Rasesh Mody
                   ` (14 preceding siblings ...)
  2017-07-01 19:29 ` [PATCH v2 4/8] net/qede: comments traces and format changes Rasesh Mody
@ 2017-07-01 19:29 ` Rasesh Mody
  2017-07-01 19:30 ` [PATCH v2 6/8] net/qede: set mdump flag Rasesh Mody
                   ` (2 subsequent siblings)
  18 siblings, 0 replies; 27+ messages in thread
From: Rasesh Mody @ 2017-07-01 19:29 UTC (permalink / raw)
  To: ferruh.yigit, dev; +Cc: Rasesh Mody, Dept-EngDPDKDev

Convert DP_NOTICE() to DP_ERR() as appropriate in PMD files.
Change DP_NOTICE() macro to make use of boolean flag to log
it as error message or informational message.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
---
 drivers/net/qede/qede_ethdev.c |   20 +++++++++-----------
 drivers/net/qede/qede_logs.h   |   23 ++++++++++++++---------
 drivers/net/qede/qede_main.c   |   20 +++++++++-----------
 drivers/net/qede/qede_rxtx.c   |   15 ++++++---------
 4 files changed, 38 insertions(+), 40 deletions(-)

diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
index 8e18a17..ad264ba 100644
--- a/drivers/net/qede/qede_ethdev.c
+++ b/drivers/net/qede/qede_ethdev.c
@@ -2434,8 +2434,7 @@ static int qede_common_dev_init(struct rte_eth_dev *eth_dev, bool is_vf)
 	eth_dev->tx_pkt_prepare = qede_xmit_prep_pkts;
 
 	if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
-		DP_NOTICE(edev, false,
-			  "Skipping device init from secondary process\n");
+		DP_ERR(edev, "Skipping device init from secondary process\n");
 		return 0;
 	}
 
@@ -2558,8 +2557,7 @@ static int qede_common_dev_init(struct rte_eth_dev *eth_dev, bool is_vf)
 				ether_addr_copy(&eth_dev->data->mac_addrs[0],
 						&adapter->primary_mac);
 			} else {
-				DP_NOTICE(edev, false,
-					  "No VF macaddr assigned\n");
+				DP_ERR(edev, "No VF macaddr assigned\n");
 			}
 		}
 	}
@@ -2584,13 +2582,13 @@ static int qede_common_dev_init(struct rte_eth_dev *eth_dev, bool is_vf)
 		if (qede_start_vport(adapter, adapter->mtu))
 			return -1;
 
-	DP_NOTICE(edev, false, "MAC address : %02x:%02x:%02x:%02x:%02x:%02x\n",
-		  adapter->primary_mac.addr_bytes[0],
-		  adapter->primary_mac.addr_bytes[1],
-		  adapter->primary_mac.addr_bytes[2],
-		  adapter->primary_mac.addr_bytes[3],
-		  adapter->primary_mac.addr_bytes[4],
-		  adapter->primary_mac.addr_bytes[5]);
+	DP_INFO(edev, "MAC address : %02x:%02x:%02x:%02x:%02x:%02x\n",
+		adapter->primary_mac.addr_bytes[0],
+		adapter->primary_mac.addr_bytes[1],
+		adapter->primary_mac.addr_bytes[2],
+		adapter->primary_mac.addr_bytes[3],
+		adapter->primary_mac.addr_bytes[4],
+		adapter->primary_mac.addr_bytes[5]);
 
 	DP_INFO(edev, "Device initialized\n");
 
diff --git a/drivers/net/qede/qede_logs.h b/drivers/net/qede/qede_logs.h
index 25c14d8..1582115 100644
--- a/drivers/net/qede/qede_logs.h
+++ b/drivers/net/qede/qede_logs.h
@@ -16,16 +16,21 @@
 		(p_dev)->name ? (p_dev)->name : "", \
 		##__VA_ARGS__)
 
-#ifdef RTE_LIBRTE_QEDE_DEBUG_INFO
 #define DP_NOTICE(p_dev, is_assert, fmt, ...) \
-	rte_log(RTE_LOG_NOTICE, RTE_LOGTYPE_PMD,\
-		"[QEDE PMD: (%s)]%s:" fmt, \
-		(p_dev)->name ? (p_dev)->name : "", \
-		 __func__, \
-		##__VA_ARGS__)
-#else
-#define DP_NOTICE(p_dev, fmt, ...) do { } while (0)
-#endif
+do { \
+	if (is_assert) \
+		rte_log(RTE_LOG_ERR, RTE_LOGTYPE_PMD,\
+			"[QEDE PMD: (%s)]%s:" fmt, \
+			(p_dev)->name ? (p_dev)->name : "", \
+			 __func__, \
+			##__VA_ARGS__); \
+	else \
+		rte_log(RTE_LOG_NOTICE, RTE_LOGTYPE_PMD,\
+			"[QEDE PMD: (%s)]%s:" fmt, \
+			(p_dev)->name ? (p_dev)->name : "", \
+			 __func__, \
+			##__VA_ARGS__); \
+} while (0)
 
 #ifdef RTE_LIBRTE_QEDE_DEBUG_INFO
 #define DP_INFO(p_dev, fmt, ...) \
diff --git a/drivers/net/qede/qede_main.c b/drivers/net/qede/qede_main.c
index f74626b..01584f8 100644
--- a/drivers/net/qede/qede_main.c
+++ b/drivers/net/qede/qede_main.c
@@ -130,12 +130,12 @@ static int qed_load_firmware_data(struct ecore_dev *edev)
 
 	fd = open(fw_file, O_RDONLY);
 	if (fd < 0) {
-		DP_NOTICE(edev, false, "Can't open firmware file\n");
+		DP_ERR(edev, "Can't open firmware file\n");
 		return -ENOENT;
 	}
 
 	if (fstat(fd, &st) < 0) {
-		DP_NOTICE(edev, false, "Can't stat firmware file\n");
+		DP_ERR(edev, "Can't stat firmware file\n");
 		close(fd);
 		return -1;
 	}
@@ -143,20 +143,20 @@ static int qed_load_firmware_data(struct ecore_dev *edev)
 	edev->firmware = rte_zmalloc("qede_fw", st.st_size,
 				    RTE_CACHE_LINE_SIZE);
 	if (!edev->firmware) {
-		DP_NOTICE(edev, false, "Can't allocate memory for firmware\n");
+		DP_ERR(edev, "Can't allocate memory for firmware\n");
 		close(fd);
 		return -ENOMEM;
 	}
 
 	if (read(fd, edev->firmware, st.st_size) != st.st_size) {
-		DP_NOTICE(edev, false, "Can't read firmware data\n");
+		DP_ERR(edev, "Can't read firmware data\n");
 		close(fd);
 		return -1;
 	}
 
 	edev->fw_len = st.st_size;
 	if (edev->fw_len < 104) {
-		DP_NOTICE(edev, false, "Invalid fw size: %" PRIu64 "\n",
+		DP_ERR(edev, "Invalid fw size: %" PRIu64 "\n",
 			  edev->fw_len);
 		close(fd);
 		return -EINVAL;
@@ -260,8 +260,7 @@ static int qed_slowpath_start(struct ecore_dev *edev,
 		/* Allocate stream for unzipping */
 		rc = qed_alloc_stream_mem(edev);
 		if (rc) {
-			DP_NOTICE(edev, true,
-			"Failed to allocate stream memory\n");
+			DP_ERR(edev, "Failed to allocate stream memory\n");
 			goto err1;
 		}
 	}
@@ -301,8 +300,7 @@ static int qed_slowpath_start(struct ecore_dev *edev,
 		rc = ecore_mcp_send_drv_version(hwfn, hwfn->p_main_ptt,
 						&drv_version);
 		if (rc) {
-			DP_NOTICE(edev, true,
-				  "Failed sending drv version command\n");
+			DP_ERR(edev, "Failed sending drv version command\n");
 			goto err3;
 		}
 	}
@@ -606,7 +604,7 @@ static int qed_drain(struct ecore_dev *edev)
 		hwfn = &edev->hwfns[i];
 		ptt = ecore_ptt_acquire(hwfn);
 		if (!ptt) {
-			DP_NOTICE(hwfn, true, "Failed to drain NIG; No PTT\n");
+			DP_ERR(hwfn, "Failed to drain NIG; No PTT\n");
 			return -EBUSY;
 		}
 		rc = ecore_mcp_drain(hwfn, ptt);
@@ -699,7 +697,7 @@ static int qed_get_sb_info(struct ecore_dev *edev, struct ecore_sb_info *sb,
 
 	ptt = ecore_ptt_acquire(hwfn);
 	if (!ptt) {
-		DP_NOTICE(hwfn, true, "Can't acquire PTT\n");
+		DP_ERR(hwfn, "Can't acquire PTT\n");
 		return -EAGAIN;
 	}
 
diff --git a/drivers/net/qede/qede_rxtx.c b/drivers/net/qede/qede_rxtx.c
index e48fd66..8063233 100644
--- a/drivers/net/qede/qede_rxtx.c
+++ b/drivers/net/qede/qede_rxtx.c
@@ -111,9 +111,8 @@ static inline int qede_alloc_rx_buffer(struct qede_rx_queue *rxq)
 	rxq->sw_rx_ring = rte_zmalloc_socket("sw_rx_ring", size,
 					     RTE_CACHE_LINE_SIZE, socket_id);
 	if (!rxq->sw_rx_ring) {
-		DP_NOTICE(edev, false,
-			  "Unable to alloc memory for sw_rx_ring on socket %u\n",
-			  socket_id);
+		DP_ERR(edev, "Memory allocation fails for sw_rx_ring on"
+		       " socket %u\n", socket_id);
 		rte_free(rxq);
 		return -ENOMEM;
 	}
@@ -129,9 +128,8 @@ static inline int qede_alloc_rx_buffer(struct qede_rx_queue *rxq)
 					    NULL);
 
 	if (rc != ECORE_SUCCESS) {
-		DP_NOTICE(edev, false,
-			  "Unable to alloc memory for rxbd ring on socket %u\n",
-			  socket_id);
+		DP_ERR(edev, "Memory allocation fails for RX BD ring"
+		       " on socket %u\n", socket_id);
 		rte_free(rxq->sw_rx_ring);
 		rte_free(rxq);
 		return -ENOMEM;
@@ -148,9 +146,8 @@ static inline int qede_alloc_rx_buffer(struct qede_rx_queue *rxq)
 					    NULL);
 
 	if (rc != ECORE_SUCCESS) {
-		DP_NOTICE(edev, false,
-			  "Unable to alloc memory for cqe ring on socket %u\n",
-			  socket_id);
+		DP_ERR(edev, "Memory allocation fails for RX CQE ring"
+		       " on socket %u\n", socket_id);
 		qdev->ops->common->chain_free(edev, &rxq->rx_bd_ring);
 		rte_free(rxq->sw_rx_ring);
 		rte_free(rxq);
-- 
1.7.10.3

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

* [PATCH v2 6/8] net/qede: set mdump flag
  2017-06-29  9:51 [PATCH 0/9] net/qede: update PMD to 2.5.1.1 Rasesh Mody
                   ` (15 preceding siblings ...)
  2017-07-01 19:29 ` [PATCH v2 5/8] net/qede: change debug verbosity of PMD messages Rasesh Mody
@ 2017-07-01 19:30 ` Rasesh Mody
  2017-07-01 19:30 ` [PATCH v2 7/8] net/qede: add missing check for VNI Rasesh Mody
  2017-07-01 19:30 ` [PATCH v2 8/8] net/qede: update PMD version to 2.5.1.1 Rasesh Mody
  18 siblings, 0 replies; 27+ messages in thread
From: Rasesh Mody @ 2017-07-01 19:30 UTC (permalink / raw)
  To: ferruh.yigit, dev; +Cc: Rasesh Mody, Dept-EngDPDKDev

Set allow management FW dump flag during HW prepare.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
---
 drivers/net/qede/base/ecore.h         |    2 +-
 drivers/net/qede/base/ecore_dev.c     |    1 +
 drivers/net/qede/base/ecore_dev_api.h |    3 +++
 drivers/net/qede/base/ecore_mcp.c     |    3 +--
 drivers/net/qede/qede_main.c          |    1 +
 5 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/net/qede/base/ecore.h b/drivers/net/qede/base/ecore.h
index d92988e..0d68a9b 100644
--- a/drivers/net/qede/base/ecore.h
+++ b/drivers/net/qede/base/ecore.h
@@ -770,7 +770,7 @@ struct ecore_dev {
 	bool				attn_clr_en;
 
 	/* Indicates whether allowing the MFW to collect a crash dump */
-	bool				mdump_en;
+	bool				allow_mdump;
 
 	/* Indicates if the reg_fifo is checked after any register access */
 	bool				chk_reg_fifo;
diff --git a/drivers/net/qede/base/ecore_dev.c b/drivers/net/qede/base/ecore_dev.c
index 138b986..4cfa668 100644
--- a/drivers/net/qede/base/ecore_dev.c
+++ b/drivers/net/qede/base/ecore_dev.c
@@ -3565,6 +3565,7 @@ enum _ecore_status_t ecore_hw_prepare(struct ecore_dev *p_dev,
 	enum _ecore_status_t rc;
 
 	p_dev->chk_reg_fifo = p_params->chk_reg_fifo;
+	p_dev->allow_mdump = p_params->allow_mdump;
 
 	if (p_params->b_relaxed_probe)
 		p_params->p_relaxed_res = ECORE_HW_PREPARE_SUCCESS;
diff --git a/drivers/net/qede/base/ecore_dev_api.h b/drivers/net/qede/base/ecore_dev_api.h
index e64a768..886407b 100644
--- a/drivers/net/qede/base/ecore_dev_api.h
+++ b/drivers/net/qede/base/ecore_dev_api.h
@@ -186,6 +186,9 @@ struct ecore_hw_prepare_params {
 	/* The OS Epoch time in seconds */
 	u32 epoch;
 
+	/* Allow the MFW to collect a crash dump */
+	bool allow_mdump;
+
 	/* Allow prepare to pass even if some initializations are failing.
 	 * If set, the `p_prepare_res' field would be set with the return,
 	 * and might allow probe to pass even if there are certain issues.
diff --git a/drivers/net/qede/base/ecore_mcp.c b/drivers/net/qede/base/ecore_mcp.c
index a834ac7..03cc901 100644
--- a/drivers/net/qede/base/ecore_mcp.c
+++ b/drivers/net/qede/base/ecore_mcp.c
@@ -1556,10 +1556,9 @@ static void ecore_mcp_handle_critical_error(struct ecore_hwfn *p_hwfn,
 	DP_NOTICE(p_hwfn, false,
 		  "Received a critical error notification from the MFW!\n");
 
-	if (p_hwfn->p_dev->mdump_en) {
+	if (p_hwfn->p_dev->allow_mdump) {
 		DP_NOTICE(p_hwfn, false,
 			  "Not acknowledging the notification to allow the MFW crash dump\n");
-		p_hwfn->p_dev->mdump_en = false;
 		return;
 	}
 
diff --git a/drivers/net/qede/qede_main.c b/drivers/net/qede/qede_main.c
index 01584f8..a6ff7af 100644
--- a/drivers/net/qede/qede_main.c
+++ b/drivers/net/qede/qede_main.c
@@ -60,6 +60,7 @@ static void qed_init_pci(struct ecore_dev *edev, struct rte_pci_device *pci_dev)
 	hw_prepare_params.drv_resc_alloc = false;
 	hw_prepare_params.chk_reg_fifo = false;
 	hw_prepare_params.initiate_pf_flr = true;
+	hw_prepare_params.allow_mdump = false;
 	hw_prepare_params.epoch = (u32)time(NULL);
 	rc = ecore_hw_prepare(edev, &hw_prepare_params);
 	if (rc) {
-- 
1.7.10.3

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

* [PATCH v2 7/8] net/qede: add missing check for VNI
  2017-06-29  9:51 [PATCH 0/9] net/qede: update PMD to 2.5.1.1 Rasesh Mody
                   ` (16 preceding siblings ...)
  2017-07-01 19:30 ` [PATCH v2 6/8] net/qede: set mdump flag Rasesh Mody
@ 2017-07-01 19:30 ` Rasesh Mody
  2017-07-03 10:08   ` Ferruh Yigit
  2017-07-01 19:30 ` [PATCH v2 8/8] net/qede: update PMD version to 2.5.1.1 Rasesh Mody
  18 siblings, 1 reply; 27+ messages in thread
From: Rasesh Mody @ 2017-07-01 19:30 UTC (permalink / raw)
  To: ferruh.yigit, dev; +Cc: Rasesh Mody, Dept-EngDPDKDev

Add missing check for VNI field while adding unicast filter.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
---
 drivers/net/qede/qede_ethdev.c |    1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
index ad264ba..a0616a4 100644
--- a/drivers/net/qede/qede_ethdev.c
+++ b/drivers/net/qede/qede_ethdev.c
@@ -571,6 +571,7 @@ static void qede_set_cmn_tunn_param(struct ecore_tunnel_info *p_tunn,
 		SLIST_FOREACH(tmp, &qdev->uc_list_head, list) {
 			if ((memcmp(mac_addr, &tmp->mac,
 				    ETHER_ADDR_LEN) == 0) &&
+			     ucast->vni == tmp->vni &&
 			     ucast->vlan == tmp->vlan) {
 				DP_ERR(edev, "Unicast MAC is already added"
 				       " with vlan = %u, vni = %u\n",
-- 
1.7.10.3

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

* [PATCH v2 8/8] net/qede: update PMD version to 2.5.1.1
  2017-06-29  9:51 [PATCH 0/9] net/qede: update PMD to 2.5.1.1 Rasesh Mody
                   ` (17 preceding siblings ...)
  2017-07-01 19:30 ` [PATCH v2 7/8] net/qede: add missing check for VNI Rasesh Mody
@ 2017-07-01 19:30 ` Rasesh Mody
  2017-07-03 10:06   ` Ferruh Yigit
  18 siblings, 1 reply; 27+ messages in thread
From: Rasesh Mody @ 2017-07-01 19:30 UTC (permalink / raw)
  To: ferruh.yigit, dev; +Cc: Rasesh Mody, Dept-EngDPDKDev

Update the PMD version and add 32bit support in documentation.

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
---
 doc/guides/nics/features/qede.ini |    1 +
 drivers/net/qede/qede_ethdev.h    |    2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/doc/guides/nics/features/qede.ini b/doc/guides/nics/features/qede.ini
index fba5dc3..43caf94 100644
--- a/doc/guides/nics/features/qede.ini
+++ b/doc/guides/nics/features/qede.ini
@@ -32,6 +32,7 @@ Extended stats       = Y
 Stats per queue      = Y
 Multiprocess aware   = Y
 Linux UIO            = Y
+x86-32               = Y
 x86-64               = Y
 Usage doc            = Y
 N-tuple filter       = Y
diff --git a/drivers/net/qede/qede_ethdev.h b/drivers/net/qede/qede_ethdev.h
index 9a93286..510b6e2 100644
--- a/drivers/net/qede/qede_ethdev.h
+++ b/drivers/net/qede/qede_ethdev.h
@@ -50,7 +50,7 @@
 #define QEDE_PMD_VER_PREFIX		"QEDE PMD"
 #define QEDE_PMD_VERSION_MAJOR		2
 #define QEDE_PMD_VERSION_MINOR	        5
-#define QEDE_PMD_VERSION_REVISION       0
+#define QEDE_PMD_VERSION_REVISION       1
 #define QEDE_PMD_VERSION_PATCH	        1
 
 #define QEDE_PMD_VERSION qede_stringify(QEDE_PMD_VERSION_MAJOR) "."     \
-- 
1.7.10.3

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

* Re: [PATCH 8/9] net/qede: use newer packet mbuf allocate API
  2017-06-29 12:55   ` Ferruh Yigit
@ 2017-07-01 19:34     ` Mody, Rasesh
  0 siblings, 0 replies; 27+ messages in thread
From: Mody, Rasesh @ 2017-07-01 19:34 UTC (permalink / raw)
  To: Ferruh Yigit, dev; +Cc: Dept-Eng DPDK Dev, Patil, Harish

Hi Ferruh,

> From: Ferruh Yigit [mailto:ferruh.yigit@intel.com]
> Sent: Thursday, June 29, 2017 5:55 AM
> 
> On 6/29/2017 10:51 AM, Rasesh Mody wrote:
> > Use rte_pktmbuf_alloc() API instead of rte_mbuf_raw_alloc().
> >
> > Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
> > ---
> >  drivers/net/qede/qede_rxtx.c |    2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/qede/qede_rxtx.c
> > b/drivers/net/qede/qede_rxtx.c index 8063233..6b047a3 100644
> > --- a/drivers/net/qede/qede_rxtx.c
> > +++ b/drivers/net/qede/qede_rxtx.c
> > @@ -16,7 +16,7 @@ static inline int qede_alloc_rx_buffer(struct
> qede_rx_queue *rxq)
> >  	dma_addr_t mapping;
> >  	uint16_t idx = rxq->sw_rx_prod & NUM_RX_BDS(rxq);
> >
> > -	new_mb = rte_mbuf_raw_alloc(rxq->mb_pool);
> > +	new_mb = rte_pktmbuf_alloc(rxq->mb_pool);
> 
> rte_pktmbuf_alloc() is more expensive call, because of
> rte_pktmbuf_reset() it has.
> 
> Are you sure you want to switch, what is the motivation?

Yes, the intent was to initialize a new mbuf. But thinking over it again, we think it's better to skip this patch as we are updating most of the mbuf flags in receive routine anyway (except next and tx_offload fields). We've sent v2 series without this patch.

Thanks!
-Rasesh

> 
> >  	if (unlikely(!new_mb)) {
> >  		PMD_RX_LOG(ERR, rxq,
> >  			   "Failed to allocate rx buffer "
> >


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

* Re: [PATCH v2 8/8] net/qede: update PMD version to 2.5.1.1
  2017-07-01 19:30 ` [PATCH v2 8/8] net/qede: update PMD version to 2.5.1.1 Rasesh Mody
@ 2017-07-03 10:06   ` Ferruh Yigit
  2017-07-05  9:57     ` Ferruh Yigit
  0 siblings, 1 reply; 27+ messages in thread
From: Ferruh Yigit @ 2017-07-03 10:06 UTC (permalink / raw)
  To: Rasesh Mody, dev; +Cc: Dept-EngDPDKDev

On 7/1/2017 8:30 PM, Rasesh Mody wrote:
> Update the PMD version and add 32bit support in documentation.
> 
> Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
> ---
>  doc/guides/nics/features/qede.ini |    1 +
>  drivers/net/qede/qede_ethdev.h    |    2 +-
>  2 files changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/doc/guides/nics/features/qede.ini b/doc/guides/nics/features/qede.ini
> index fba5dc3..43caf94 100644
> --- a/doc/guides/nics/features/qede.ini
> +++ b/doc/guides/nics/features/qede.ini
> @@ -32,6 +32,7 @@ Extended stats       = Y
>  Stats per queue      = Y
>  Multiprocess aware   = Y
>  Linux UIO            = Y
> +x86-32               = Y

Can you please extract this into separate patch?
And since you are updating supported architectures, can you please add
others too, I assume qede supports arm?

>  x86-64               = Y
>  Usage doc            = Y
>  N-tuple filter       = Y

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

* Re: [PATCH v2 7/8] net/qede: add missing check for VNI
  2017-07-01 19:30 ` [PATCH v2 7/8] net/qede: add missing check for VNI Rasesh Mody
@ 2017-07-03 10:08   ` Ferruh Yigit
  0 siblings, 0 replies; 27+ messages in thread
From: Ferruh Yigit @ 2017-07-03 10:08 UTC (permalink / raw)
  To: Rasesh Mody, dev; +Cc: Dept-EngDPDKDev

On 7/1/2017 8:30 PM, Rasesh Mody wrote:
> Add missing check for VNI field while adding unicast filter.

Can you please document the result of not having vni field? And if this
is fixing an error, can you please use fixes syntax?

> 
> Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
> ---
>  drivers/net/qede/qede_ethdev.c |    1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
> index ad264ba..a0616a4 100644
> --- a/drivers/net/qede/qede_ethdev.c
> +++ b/drivers/net/qede/qede_ethdev.c
> @@ -571,6 +571,7 @@ static void qede_set_cmn_tunn_param(struct ecore_tunnel_info *p_tunn,
>  		SLIST_FOREACH(tmp, &qdev->uc_list_head, list) {
>  			if ((memcmp(mac_addr, &tmp->mac,
>  				    ETHER_ADDR_LEN) == 0) &&
> +			     ucast->vni == tmp->vni &&
>  			     ucast->vlan == tmp->vlan) {
>  				DP_ERR(edev, "Unicast MAC is already added"
>  				       " with vlan = %u, vni = %u\n",
> 

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

* Re: [PATCH v2 8/8] net/qede: update PMD version to 2.5.1.1
  2017-07-03 10:06   ` Ferruh Yigit
@ 2017-07-05  9:57     ` Ferruh Yigit
  0 siblings, 0 replies; 27+ messages in thread
From: Ferruh Yigit @ 2017-07-05  9:57 UTC (permalink / raw)
  To: Rasesh Mody, dev; +Cc: Dept-EngDPDKDev

On 7/3/2017 11:06 AM, Ferruh Yigit wrote:
> On 7/1/2017 8:30 PM, Rasesh Mody wrote:
>> Update the PMD version and add 32bit support in documentation.
>>
>> Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
>> ---
>>  doc/guides/nics/features/qede.ini |    1 +
>>  drivers/net/qede/qede_ethdev.h    |    2 +-
>>  2 files changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/doc/guides/nics/features/qede.ini b/doc/guides/nics/features/qede.ini
>> index fba5dc3..43caf94 100644
>> --- a/doc/guides/nics/features/qede.ini
>> +++ b/doc/guides/nics/features/qede.ini
>> @@ -32,6 +32,7 @@ Extended stats       = Y
>>  Stats per queue      = Y
>>  Multiprocess aware   = Y
>>  Linux UIO            = Y
>> +x86-32               = Y
> 
> Can you please extract this into separate patch?
> And since you are updating supported architectures, can you please add
> others too, I assume qede supports arm?

Rasesh seems on vacation, to be able to include patchset into RC1, I
will drop this part from patch and will get the set.

Rasesh, Harish,

Can you please send the requested document patch before RC2?

Thanks,
ferruh

> 
>>  x86-64               = Y
>>  Usage doc            = Y
>>  N-tuple filter       = Y
> 

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

* Re: [PATCH v2 0/8] net/qede: update PMD to 2.5.1.1
  2017-07-01 19:29 ` [PATCH v2 0/8] " Rasesh Mody
@ 2017-07-05 10:01   ` Ferruh Yigit
  2017-07-08 18:35     ` Mody, Rasesh
  0 siblings, 1 reply; 27+ messages in thread
From: Ferruh Yigit @ 2017-07-05 10:01 UTC (permalink / raw)
  To: Rasesh Mody, dev; +Cc: Dept-EngDPDKDev

On 7/1/2017 8:29 PM, Rasesh Mody wrote:
> Hi Ferruh,
> 
> This patch set contains minor enhancements and bug fixes for QEDE PMD.
> It updates the driver version to 2.5.1.1. The patch set is tested
> against dpdk-next-net.
> 
> Please apply to 17.08 tree.
> 
> v1..v2 address all review comments
> 
> Thanks!
> Rasesh
> 
> Harish Patil (3):
>   net/qede: fix DMA memory leak
>   net/qede: add notifying HW errors
>   net/qede: limit ring size to 32k
> 
> Rasesh Mody (5):
>   net/qede: comments traces and format changes
>   net/qede: change debug verbosity of PMD messages
>   net/qede: set mdump flag
>   net/qede: add missing check for VNI
>   net/qede: update PMD version to 2.5.1.1

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

(patch 8/8 updated to drop document patch, please send a separate
document patch before rc2)

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

* Re: [PATCH v2 0/8] net/qede: update PMD to 2.5.1.1
  2017-07-05 10:01   ` Ferruh Yigit
@ 2017-07-08 18:35     ` Mody, Rasesh
  0 siblings, 0 replies; 27+ messages in thread
From: Mody, Rasesh @ 2017-07-08 18:35 UTC (permalink / raw)
  To: Ferruh Yigit, dev; +Cc: Dept-Eng DPDK Dev

> From: Ferruh Yigit [mailto:ferruh.yigit@intel.com]
> Sent: Wednesday, July 05, 2017 3:02 AM
> 
> On 7/1/2017 8:29 PM, Rasesh Mody wrote:
> > Hi Ferruh,
> >
> > This patch set contains minor enhancements and bug fixes for QEDE PMD.
> > It updates the driver version to 2.5.1.1. The patch set is tested
> > against dpdk-next-net.
> >
> > Please apply to 17.08 tree.
> >
> > v1..v2 address all review comments
> >
> > Thanks!
> > Rasesh
> >
> > Harish Patil (3):
> >   net/qede: fix DMA memory leak
> >   net/qede: add notifying HW errors
> >   net/qede: limit ring size to 32k
> >
> > Rasesh Mody (5):
> >   net/qede: comments traces and format changes
> >   net/qede: change debug verbosity of PMD messages
> >   net/qede: set mdump flag
> >   net/qede: add missing check for VNI
> >   net/qede: update PMD version to 2.5.1.1
> 
> Series applied to dpdk-next-net/master, thanks.
> 
> (patch 8/8 updated to drop document patch, please send a separate
> document patch before rc2)
 
Thanks Ferruh!
The document patch has been submitted with changes requested, please apply.

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

end of thread, other threads:[~2017-07-08 18:35 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-29  9:51 [PATCH 0/9] net/qede: update PMD to 2.5.1.1 Rasesh Mody
2017-06-29  9:51 ` [PATCH 1/9] net/qede: fix DMA memory leak Rasesh Mody
2017-06-29  9:51 ` [PATCH 2/9] net/qede: add notifying HW errors Rasesh Mody
2017-06-29  9:51 ` [PATCH 3/9] net/qede: limit ring size to 32k Rasesh Mody
2017-06-29  9:51 ` [PATCH 4/9] net/qede: comments traces and format changes Rasesh Mody
2017-06-29  9:51 ` [PATCH 5/9] net/qede: change debug verbosity of PMD messages Rasesh Mody
2017-06-29  9:51 ` [PATCH 6/9] net/qede: set mdump flag Rasesh Mody
2017-06-29  9:51 ` [PATCH 7/9] net/qede: add missing check for VNI Rasesh Mody
2017-06-29  9:51 ` [PATCH 8/9] net/qede: use newer packet mbuf allocate API Rasesh Mody
2017-06-29 12:55   ` Ferruh Yigit
2017-07-01 19:34     ` Mody, Rasesh
2017-06-29  9:51 ` [PATCH 9/9] net/qede: update PMD version to 2.5.1.1 Rasesh Mody
2017-06-29 12:16 ` [PATCH 0/9] net/qede: update PMD " Ferruh Yigit
2017-07-01 19:29 ` [PATCH v2 0/8] " Rasesh Mody
2017-07-05 10:01   ` Ferruh Yigit
2017-07-08 18:35     ` Mody, Rasesh
2017-07-01 19:29 ` [PATCH v2 1/8] net/qede: fix DMA memory leak Rasesh Mody
2017-07-01 19:29 ` [PATCH v2 2/8] net/qede: add notifying HW errors Rasesh Mody
2017-07-01 19:29 ` [PATCH v2 3/8] net/qede: limit ring size to 32k Rasesh Mody
2017-07-01 19:29 ` [PATCH v2 4/8] net/qede: comments traces and format changes Rasesh Mody
2017-07-01 19:29 ` [PATCH v2 5/8] net/qede: change debug verbosity of PMD messages Rasesh Mody
2017-07-01 19:30 ` [PATCH v2 6/8] net/qede: set mdump flag Rasesh Mody
2017-07-01 19:30 ` [PATCH v2 7/8] net/qede: add missing check for VNI Rasesh Mody
2017-07-03 10:08   ` Ferruh Yigit
2017-07-01 19:30 ` [PATCH v2 8/8] net/qede: update PMD version to 2.5.1.1 Rasesh Mody
2017-07-03 10:06   ` Ferruh Yigit
2017-07-05  9:57     ` 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.