patches for DPDK stable branches
 help / color / mirror / Atom feed
* [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1
@ 2018-11-21 16:47 Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'event/dpaa2: fix mbuf assignment in atomic processing' " Kevin Traynor
                   ` (72 more replies)
  0 siblings, 73 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Jerin Jacob; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From e00ebf9003c664c38a976b247efe466debe6ff90 Mon Sep 17 00:00:00 2001
From: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Date: Tue, 25 Sep 2018 18:42:41 +0530
Subject: [PATCH] doc: fix eventdev shared library version

[ upstream commit 0ad9a8d391096d67e6ae99a1d29aef36a483bcb2 ]

The below change set suppose to bump the eventdev shared library version.
It missed updating the version number so fixing it now.

Fixes: 3810ae435783 ("eventdev: add interrupt driven queues to Rx adapter")

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
---
 doc/guides/rel_notes/release_18_08.rst | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/doc/guides/rel_notes/release_18_08.rst b/doc/guides/rel_notes/release_18_08.rst
index 321fa8451..8a09dee95 100644
--- a/doc/guides/rel_notes/release_18_08.rst
+++ b/doc/guides/rel_notes/release_18_08.rst
@@ -253,5 +253,5 @@ The libraries prepended with a plus sign were incremented in this version.
    + librte_eal.so.8
    + librte_ethdev.so.10
-     librte_eventdev.so.4
+   + librte_eventdev.so.5
      librte_flow_classify.so.1
      librte_gro.so.1
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.001922542 +0000
+++ 0001-doc-fix-eventdev-shared-library-version.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,19 +1,19 @@
-From 0ad9a8d391096d67e6ae99a1d29aef36a483bcb2 Mon Sep 17 00:00:00 2001
+From e00ebf9003c664c38a976b247efe466debe6ff90 Mon Sep 17 00:00:00 2001
 From: Jerin Jacob <jerin.jacob@caviumnetworks.com>
 Date: Tue, 25 Sep 2018 18:42:41 +0530
 Subject: [PATCH] doc: fix eventdev shared library version
 
+[ upstream commit 0ad9a8d391096d67e6ae99a1d29aef36a483bcb2 ]
+
 The below change set suppose to bump the eventdev shared library version.
 It missed updating the version number so fixing it now.
 
 Fixes: 3810ae435783 ("eventdev: add interrupt driven queues to Rx adapter")
-Cc: stable@dpdk.org
 
 Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
 ---
  doc/guides/rel_notes/release_18_08.rst | 2 +-
- doc/guides/rel_notes/release_18_11.rst | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/doc/guides/rel_notes/release_18_08.rst b/doc/guides/rel_notes/release_18_08.rst
 index 321fa8451..8a09dee95 100644
@@ -26,17 +26,6 @@
 +   + librte_eventdev.so.5
       librte_flow_classify.so.1
       librte_gro.so.1
-diff --git a/doc/guides/rel_notes/release_18_11.rst b/doc/guides/rel_notes/release_18_11.rst
-index 9c00e33cc..276e4ee92 100644
---- a/doc/guides/rel_notes/release_18_11.rst
-+++ b/doc/guides/rel_notes/release_18_11.rst
-@@ -182,5 +182,5 @@ The libraries prepended with a plus sign were incremented in this version.
-      librte_eal.so.8
-      librte_ethdev.so.10
--     librte_eventdev.so.4
-+     librte_eventdev.so.5
-      librte_flow_classify.so.1
-      librte_gro.so.1
 -- 
 2.19.0
 

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

* [dpdk-stable] patch 'event/dpaa2: fix mbuf assignment in atomic processing' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'eventdev: fix eth Rx adapter hotplug incompatibility' " Kevin Traynor
                   ` (71 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Hemant Agrawal; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 15c753d40aa473c4eb8dca228b59c2f2e8e30e3a Mon Sep 17 00:00:00 2001
From: Hemant Agrawal <hemant.agrawal@nxp.com>
Date: Fri, 21 Sep 2018 17:16:02 +0530
Subject: [PATCH] event/dpaa2: fix mbuf assignment in atomic processing

[ upstream commit be0c42bfa88cf85c15d195a70ac793b1a1272e27 ]

Fixes: 7b6edb640b73 ("event/dpaa2: have separate structure to hold dqrr entries")

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
 drivers/event/dpaa2/dpaa2_eventdev.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/event/dpaa2/dpaa2_eventdev.c b/drivers/event/dpaa2/dpaa2_eventdev.c
index ea1e5cc67..ea9d8683e 100644
--- a/drivers/event/dpaa2/dpaa2_eventdev.c
+++ b/drivers/event/dpaa2/dpaa2_eventdev.c
@@ -198,4 +198,5 @@ static void dpaa2_eventdev_process_atomic(struct qbman_swp *swp,
 	DPAA2_PER_LCORE_DQRR_SIZE++;
 	DPAA2_PER_LCORE_DQRR_HELD |= 1 << dqrr_index;
+	DPAA2_PER_LCORE_DQRR_MBUF(dqrr_index) = ev->mbuf;
 }
 
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.023334645 +0000
+++ 0002-event-dpaa2-fix-mbuf-assignment-in-atomic-processing.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,10 +1,11 @@
-From be0c42bfa88cf85c15d195a70ac793b1a1272e27 Mon Sep 17 00:00:00 2001
+From 15c753d40aa473c4eb8dca228b59c2f2e8e30e3a Mon Sep 17 00:00:00 2001
 From: Hemant Agrawal <hemant.agrawal@nxp.com>
 Date: Fri, 21 Sep 2018 17:16:02 +0530
 Subject: [PATCH] event/dpaa2: fix mbuf assignment in atomic processing
 
+[ upstream commit be0c42bfa88cf85c15d195a70ac793b1a1272e27 ]
+
 Fixes: 7b6edb640b73 ("event/dpaa2: have separate structure to hold dqrr entries")
-Cc: stable@dpdk.org
 
 Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
 ---

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

* [dpdk-stable] patch 'eventdev: fix eth Rx adapter hotplug incompatibility' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'event/dpaa2: fix mbuf assignment in atomic processing' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'test/event: remove eth Rx adapter vdev workaround' " Kevin Traynor
                   ` (70 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Nikhil Rao; +Cc: Jerin Jacob, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 692226c81eda26e0bbd5643cd8a2d9a6789e8c67 Mon Sep 17 00:00:00 2001
From: Nikhil Rao <nikhil.rao@intel.com>
Date: Thu, 6 Sep 2018 14:41:42 +0530
Subject: [PATCH] eventdev: fix eth Rx adapter hotplug incompatibility

[ upstream commit d7b5f102c4781bd2e9a952243eb59cffe135b01c ]

Use RTE_MAX_ETHPORTS instead of rte_eth_dev_count_total()
when allocating eth Rx adapter's per-eth device data structure
to account for hotplugged devices.

Fixes: 9c38b704d280 ("eventdev: add eth Rx adapter implementation")

Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
---
 lib/librte_eventdev/rte_event_eth_rx_adapter.c | 5 ++---
 lib/librte_eventdev/rte_event_eth_rx_adapter.h | 4 ----
 2 files changed, 2 insertions(+), 7 deletions(-)

diff --git a/lib/librte_eventdev/rte_event_eth_rx_adapter.c b/lib/librte_eventdev/rte_event_eth_rx_adapter.c
index f5e5a0b53..870ac8c3b 100644
--- a/lib/librte_eventdev/rte_event_eth_rx_adapter.c
+++ b/lib/librte_eventdev/rte_event_eth_rx_adapter.c
@@ -1999,6 +1999,5 @@ rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,
 	strcpy(rx_adapter->mem_name, mem_name);
 	rx_adapter->eth_devices = rte_zmalloc_socket(rx_adapter->mem_name,
-					/* FIXME: incompatible with hotplug */
-					rte_eth_dev_count_total() *
+					RTE_MAX_ETHPORTS *
 					sizeof(struct eth_device_info), 0,
 					socket_id);
@@ -2013,5 +2012,5 @@ rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id,
 	}
 	rte_spinlock_init(&rx_adapter->rx_lock);
-	RTE_ETH_FOREACH_DEV(i)
+	for (i = 0; i < RTE_MAX_ETHPORTS; i++)
 		rx_adapter->eth_devices[i].dev = &rte_eth_devices[i];
 
diff --git a/lib/librte_eventdev/rte_event_eth_rx_adapter.h b/lib/librte_eventdev/rte_event_eth_rx_adapter.h
index 332ee2160..863b72a10 100644
--- a/lib/librte_eventdev/rte_event_eth_rx_adapter.h
+++ b/lib/librte_eventdev/rte_event_eth_rx_adapter.h
@@ -77,8 +77,4 @@
  * application to register a callback that selects which packets to enqueue
  * to the event device.
- *
- * Note:
- * 1) Devices created after an instance of rte_event_eth_rx_adapter_create
- *  should be added to a new instance of the rx adapter.
  */
 
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.046929561 +0000
+++ 0003-eventdev-fix-eth-Rx-adapter-hotplug-incompatibility.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,14 +1,15 @@
-From d7b5f102c4781bd2e9a952243eb59cffe135b01c Mon Sep 17 00:00:00 2001
+From 692226c81eda26e0bbd5643cd8a2d9a6789e8c67 Mon Sep 17 00:00:00 2001
 From: Nikhil Rao <nikhil.rao@intel.com>
 Date: Thu, 6 Sep 2018 14:41:42 +0530
 Subject: [PATCH] eventdev: fix eth Rx adapter hotplug incompatibility
 
+[ upstream commit d7b5f102c4781bd2e9a952243eb59cffe135b01c ]
+
 Use RTE_MAX_ETHPORTS instead of rte_eth_dev_count_total()
 when allocating eth Rx adapter's per-eth device data structure
 to account for hotplugged devices.
 
 Fixes: 9c38b704d280 ("eventdev: add eth Rx adapter implementation")
-Cc: stable@dpdk.org
 
 Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
 Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>

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

* [dpdk-stable] patch 'test/event: remove eth Rx adapter vdev workaround' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'event/dpaa2: fix mbuf assignment in atomic processing' " Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'eventdev: fix eth Rx adapter hotplug incompatibility' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'event/sw: fix cq index check for unlink usecases' " Kevin Traynor
                   ` (69 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Nikhil Rao; +Cc: Jerin Jacob, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 9cd00c00ddd2ad0f244455fe68356f9de01d208b Mon Sep 17 00:00:00 2001
From: Nikhil Rao <nikhil.rao@intel.com>
Date: Thu, 6 Sep 2018 14:41:43 +0530
Subject: [PATCH] test/event: remove eth Rx adapter vdev workaround

[ upstream commit 97428d7b8e0ff103369f95dbe35a5c0f8c2ad132 ]

eth Rx adapter has been updated to support hotplugged
devices, devices created after adapter creation can now be
added to the adapter.

Update the adapter_multi_eth_add_del
test case to create the adapter as part of test setup
instead of creating it after creating vdevs.

Fixes: 2a9c83ae3b2e ("test/eventdev: add multi-ports test")

Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
---
 test/test/test_event_eth_rx_adapter.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/test/test/test_event_eth_rx_adapter.c b/test/test/test_event_eth_rx_adapter.c
index 2337e5435..28f214687 100644
--- a/test/test/test_event_eth_rx_adapter.c
+++ b/test/test/test_event_eth_rx_adapter.c
@@ -497,7 +497,4 @@ adapter_multi_eth_add_del(void)
 	TEST_ASSERT(err == 0, "Port initialization failed err %d\n", err);
 
-	/* creating new instance for all newly added eth devices */
-	adapter_create();
-
 	/* eth_rx_adapter_queue_add for n ports */
 	port_index = 0;
@@ -517,6 +514,4 @@ adapter_multi_eth_add_del(void)
 	}
 
-	adapter_free();
-
 	return TEST_SUCCESS;
 }
@@ -683,5 +678,6 @@ static struct unit_test_suite event_eth_rx_tests = {
 		TEST_CASE_ST(adapter_create, adapter_free,
 					adapter_queue_add_del),
-		TEST_CASE_ST(NULL, NULL, adapter_multi_eth_add_del),
+		TEST_CASE_ST(adapter_create, adapter_free,
+					adapter_multi_eth_add_del),
 		TEST_CASE_ST(adapter_create, adapter_free, adapter_start_stop),
 		TEST_CASE_ST(adapter_create, adapter_free, adapter_stats),
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.071671627 +0000
+++ 0004-test-event-remove-eth-Rx-adapter-vdev-workaround.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,8 +1,10 @@
-From 97428d7b8e0ff103369f95dbe35a5c0f8c2ad132 Mon Sep 17 00:00:00 2001
+From 9cd00c00ddd2ad0f244455fe68356f9de01d208b Mon Sep 17 00:00:00 2001
 From: Nikhil Rao <nikhil.rao@intel.com>
 Date: Thu, 6 Sep 2018 14:41:43 +0530
 Subject: [PATCH] test/event: remove eth Rx adapter vdev workaround
 
+[ upstream commit 97428d7b8e0ff103369f95dbe35a5c0f8c2ad132 ]
+
 eth Rx adapter has been updated to support hotplugged
 devices, devices created after adapter creation can now be
 added to the adapter.
@@ -12,7 +14,6 @@
 instead of creating it after creating vdevs.
 
 Fixes: 2a9c83ae3b2e ("test/eventdev: add multi-ports test")
-Cc: stable@dpdk.org
 
 Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
 Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>

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

* [dpdk-stable] patch 'event/sw: fix cq index check for unlink usecases' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (2 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'test/event: remove eth Rx adapter vdev workaround' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'test/event: check burst mode capability' " Kevin Traynor
                   ` (68 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Harry van Haaren; +Cc: Matias Elo, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From abfcdd719dbdcb30dc5e790ab4c576387cec6bed Mon Sep 17 00:00:00 2001
From: Harry van Haaren <harry.van.haaren@intel.com>
Date: Fri, 21 Sep 2018 11:25:10 +0100
Subject: [PATCH] event/sw: fix cq index check for unlink usecases

[ upstream commit 733fc6ca0b48e4bdf2717a8723243f93a3864bb4 ]

This commit fixes the cq index checks when unlinking
ports/queues while the scheduler core is running.
Previously, the == comparison could be "skipped" if
in particular corner cases. With the check being changed
to >= this is resolved as the cq idx gets reset to zero.

Bugzilla ID: 60
Fixes: 617995dfc5b2 ("event/sw: add scheduling logic")

Suggested-by: Matias Elo <matias.elo@nokia.com>
Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
---
 drivers/event/sw/sw_evdev_scheduler.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/drivers/event/sw/sw_evdev_scheduler.c b/drivers/event/sw/sw_evdev_scheduler.c
index e3a41e02f..fb5d44630 100644
--- a/drivers/event/sw/sw_evdev_scheduler.c
+++ b/drivers/event/sw/sw_evdev_scheduler.c
@@ -52,7 +52,9 @@ sw_schedule_atomic_to_cq(struct sw_evdev *sw, struct sw_qid * const qid,
 
 		if (cq < 0) {
-			uint32_t cq_idx = qid->cq_next_tx++;
-			if (qid->cq_next_tx == qid->cq_num_mapped_cqs)
+			uint32_t cq_idx;
+			if (qid->cq_next_tx >= qid->cq_num_mapped_cqs)
 				qid->cq_next_tx = 0;
+			cq_idx = qid->cq_next_tx++;
+
 			cq = qid->cq_map[cq_idx];
 
@@ -141,7 +143,8 @@ sw_schedule_parallel_to_cq(struct sw_evdev *sw, struct sw_qid * const qid,
 			if (++cq_check_count > qid->cq_num_mapped_cqs)
 				goto exit;
-			cq = qid->cq_map[cq_idx];
-			if (++cq_idx == qid->cq_num_mapped_cqs)
+			if (cq_idx >= qid->cq_num_mapped_cqs)
 				cq_idx = 0;
+			cq = qid->cq_map[cq_idx++];
+
 		} while (rte_event_ring_free_count(
 				sw->ports[cq].cq_worker_ring) == 0 ||
@@ -221,5 +224,5 @@ sw_schedule_qid_to_cq(struct sw_evdev *sw)
 
 		/* zero mapped CQs indicates directed */
-		if (iq_num >= SW_IQS_MAX)
+		if (iq_num >= SW_IQS_MAX || qid->cq_num_mapped_cqs == 0)
 			continue;
 
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.094573122 +0000
+++ 0005-event-sw-fix-cq-index-check-for-unlink-usecases.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,8 +1,10 @@
-From 733fc6ca0b48e4bdf2717a8723243f93a3864bb4 Mon Sep 17 00:00:00 2001
+From abfcdd719dbdcb30dc5e790ab4c576387cec6bed Mon Sep 17 00:00:00 2001
 From: Harry van Haaren <harry.van.haaren@intel.com>
 Date: Fri, 21 Sep 2018 11:25:10 +0100
 Subject: [PATCH] event/sw: fix cq index check for unlink usecases
 
+[ upstream commit 733fc6ca0b48e4bdf2717a8723243f93a3864bb4 ]
+
 This commit fixes the cq index checks when unlinking
 ports/queues while the scheduler core is running.
 Previously, the == comparison could be "skipped" if
@@ -11,7 +13,6 @@
 
 Bugzilla ID: 60
 Fixes: 617995dfc5b2 ("event/sw: add scheduling logic")
-Cc: stable@dpdk.org
 
 Suggested-by: Matias Elo <matias.elo@nokia.com>
 Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>

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

* [dpdk-stable] patch 'test/event: check burst mode capability' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (3 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'event/sw: fix cq index check for unlink usecases' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'test/event: fix build for timer adapter' " Kevin Traynor
                   ` (67 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Pavan Nikhilesh; +Cc: Jerin Jacob, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From c30c822273aa89d0feedc211fd0dcc9822fcc9dc Mon Sep 17 00:00:00 2001
From: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Date: Wed, 5 Sep 2018 19:53:31 +0530
Subject: [PATCH] test/event: check burst mode capability

[ upstream commit 6fe63a3d7ccc2e2376182f663251f42add77ec40 ]

Enqueue, dequeue depths are only valid for event devs that have burst
mode capability. Check event dev capability before testing depth
boundary.

Fixes: f8f9d233ea0e ("test/eventdev: add unit tests")

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
---
 test/test/test_eventdev.c | 21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/test/test/test_eventdev.c b/test/test/test_eventdev.c
index 04bdc6b6c..00d73275c 100644
--- a/test/test/test_eventdev.c
+++ b/test/test/test_eventdev.c
@@ -191,13 +191,16 @@ test_eventdev_configure(void)
 	TEST_ASSERT_EQUAL(-EINVAL,
 		test_ethdev_config_run(&dev_conf, &info, max_event_queue_flows),
-		 "Config negative test failed");
-	TEST_ASSERT_EQUAL(-EINVAL,
-		test_ethdev_config_run(&dev_conf, &info,
-			max_event_port_dequeue_depth),
-			 "Config negative test failed");
-	TEST_ASSERT_EQUAL(-EINVAL,
-		test_ethdev_config_run(&dev_conf, &info,
-		max_event_port_enqueue_depth),
-		 "Config negative test failed");
+		"Config negative test failed");
+
+	if (info.event_dev_cap & RTE_EVENT_DEV_CAP_BURST_MODE) {
+		TEST_ASSERT_EQUAL(-EINVAL,
+				test_ethdev_config_run(&dev_conf, &info,
+					max_event_port_dequeue_depth),
+				"Config negative test failed");
+		TEST_ASSERT_EQUAL(-EINVAL,
+				test_ethdev_config_run(&dev_conf, &info,
+					max_event_port_enqueue_depth),
+				"Config negative test failed");
+	}
 
 	/* Positive case */
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.118072816 +0000
+++ 0006-test-event-check-burst-mode-capability.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,14 +1,15 @@
-From 6fe63a3d7ccc2e2376182f663251f42add77ec40 Mon Sep 17 00:00:00 2001
+From c30c822273aa89d0feedc211fd0dcc9822fcc9dc Mon Sep 17 00:00:00 2001
 From: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
 Date: Wed, 5 Sep 2018 19:53:31 +0530
 Subject: [PATCH] test/event: check burst mode capability
 
+[ upstream commit 6fe63a3d7ccc2e2376182f663251f42add77ec40 ]
+
 Enqueue, dequeue depths are only valid for event devs that have burst
 mode capability. Check event dev capability before testing depth
 boundary.
 
 Fixes: f8f9d233ea0e ("test/eventdev: add unit tests")
-Cc: stable@dpdk.org
 
 Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
 Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>

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

* [dpdk-stable] patch 'test/event: fix build for timer adapter' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (4 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'test/event: check burst mode capability' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'test/event: fix RSS config for eth Rx " Kevin Traynor
                   ` (66 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Nikhil Rao; +Cc: Bruce Richardson, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 7e5b9970c7027521b5ec8c2b0735542111b957e8 Mon Sep 17 00:00:00 2001
From: Nikhil Rao <nikhil.rao@intel.com>
Date: Thu, 27 Sep 2018 11:16:14 +0530
Subject: [PATCH] test/event: fix build for timer adapter

[ upstream commit 6298ec1bf8539e259595411a4af382487d32ec5c ]

Limit the number of objects passed to rte_mempool_put_bulk()
to the size of the object table. This fix eliminates a compiler
warning (array-bounds) triggered when the march command line
parameter to gcc is set to nehalem.

Fixes: d1f3385d0076 ("test: add event timer adapter auto-test")

Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
---
 test/test/test_event_timer_adapter.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/test/test_event_timer_adapter.c b/test/test/test_event_timer_adapter.c
index 93471db1d..a45b7d195 100644
--- a/test/test/test_event_timer_adapter.c
+++ b/test/test/test_event_timer_adapter.c
@@ -793,5 +793,5 @@ _cancel_burst_thread(void *args)
 				  "event timers");
 		rte_mempool_put_bulk(eventdev_test_mempool, (void **)ev_tim,
-				ret);
+				RTE_MIN(ret, MAX_BURST));
 
 		cancel_count += ret;
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.140415677 +0000
+++ 0007-test-event-fix-build-for-timer-adapter.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,15 +1,16 @@
-From 6298ec1bf8539e259595411a4af382487d32ec5c Mon Sep 17 00:00:00 2001
+From 7e5b9970c7027521b5ec8c2b0735542111b957e8 Mon Sep 17 00:00:00 2001
 From: Nikhil Rao <nikhil.rao@intel.com>
 Date: Thu, 27 Sep 2018 11:16:14 +0530
 Subject: [PATCH] test/event: fix build for timer adapter
 
+[ upstream commit 6298ec1bf8539e259595411a4af382487d32ec5c ]
+
 Limit the number of objects passed to rte_mempool_put_bulk()
 to the size of the object table. This fix eliminates a compiler
 warning (array-bounds) triggered when the march command line
 parameter to gcc is set to nehalem.
 
 Fixes: d1f3385d0076 ("test: add event timer adapter auto-test")
-Cc: stable@dpdk.org
 
 Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
 Acked-by: Bruce Richardson <bruce.richardson@intel.com>

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

* [dpdk-stable] patch 'test/event: fix RSS config for eth Rx adapter' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (5 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'test/event: fix build for timer adapter' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'app/eventdev: fix minor typos' " Kevin Traynor
                   ` (65 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Nikhil Rao; +Cc: Jerin Jacob, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 3d00f867c157cbbd737d34035046b056f051b8ca Mon Sep 17 00:00:00 2001
From: Nikhil Rao <nikhil.rao@intel.com>
Date: Mon, 24 Sep 2018 14:23:47 +0530
Subject: [PATCH] test/event: fix RSS config for eth Rx adapter

[ upstream commit 025825eab80319ceb1571fb1413075e5283095d2 ]

Remove RSS config as it is not required. The hardcoded RSS
configuration also generates an error on NICs that don't support
it.

Fixes: 8863a1fbfc66 ("ethdev: add supported hash function check")

Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
---
 test/test/test_event_eth_rx_adapter.c | 13 ++-----------
 1 file changed, 2 insertions(+), 11 deletions(-)

diff --git a/test/test/test_event_eth_rx_adapter.c b/test/test/test_event_eth_rx_adapter.c
index 28f214687..3c19ee01b 100644
--- a/test/test/test_event_eth_rx_adapter.c
+++ b/test/test/test_event_eth_rx_adapter.c
@@ -99,6 +99,5 @@ port_init_rx_intr(uint8_t port, struct rte_mempool *mp)
 	static const struct rte_eth_conf port_conf_default = {
 		.rxmode = {
-			.mq_mode = ETH_MQ_RX_RSS,
-			.max_rx_pkt_len = ETHER_MAX_LEN
+			.mq_mode = ETH_MQ_RX_NONE,
 		},
 		.intr_conf = {
@@ -115,14 +114,6 @@ port_init(uint8_t port, struct rte_mempool *mp)
 	static const struct rte_eth_conf port_conf_default = {
 		.rxmode = {
-			.mq_mode = ETH_MQ_RX_RSS,
-			.max_rx_pkt_len = ETHER_MAX_LEN
+			.mq_mode = ETH_MQ_RX_NONE,
 		},
-		.rx_adv_conf = {
-			.rss_conf = {
-				.rss_hf = ETH_RSS_IP |
-					ETH_RSS_TCP |
-					ETH_RSS_UDP,
-			}
-		}
 	};
 
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.164990501 +0000
+++ 0008-test-event-fix-RSS-config-for-eth-Rx-adapter.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,14 +1,15 @@
-From 025825eab80319ceb1571fb1413075e5283095d2 Mon Sep 17 00:00:00 2001
+From 3d00f867c157cbbd737d34035046b056f051b8ca Mon Sep 17 00:00:00 2001
 From: Nikhil Rao <nikhil.rao@intel.com>
 Date: Mon, 24 Sep 2018 14:23:47 +0530
 Subject: [PATCH] test/event: fix RSS config for eth Rx adapter
 
+[ upstream commit 025825eab80319ceb1571fb1413075e5283095d2 ]
+
 Remove RSS config as it is not required. The hardcoded RSS
 configuration also generates an error on NICs that don't support
 it.
 
 Fixes: 8863a1fbfc66 ("ethdev: add supported hash function check")
-Cc: stable@dpdk.org
 
 Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
 Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>

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

* [dpdk-stable] patch 'app/eventdev: fix minor typos' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (6 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'test/event: fix RSS config for eth Rx " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'test/event: fix eth Rx adapter test for skeleton PMD' " Kevin Traynor
                   ` (64 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Pavan Nikhilesh; +Cc: Jerin Jacob, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From f025ea074acafd1e0b7c9228c3ee7031d3e86f1b Mon Sep 17 00:00:00 2001
From: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Date: Mon, 24 Sep 2018 13:32:17 +0530
Subject: [PATCH] app/eventdev: fix minor typos

[ upstream commit f26320a6ca2b5aa76154b1e15ad81206ed240464 ]

Fix minor typos.

Fixes: 314bcf58ca8f ("app/eventdev: add pipeline queue worker functions")

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
---
 app/test-eventdev/test_pipeline_atq.c    | 16 ++++++++--------
 app/test-eventdev/test_pipeline_common.h |  8 ++++----
 app/test-eventdev/test_pipeline_queue.c  | 16 ++++++++--------
 3 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/app/test-eventdev/test_pipeline_atq.c b/app/test-eventdev/test_pipeline_atq.c
index 26dc79f90..f0b2f9015 100644
--- a/app/test-eventdev/test_pipeline_atq.c
+++ b/app/test-eventdev/test_pipeline_atq.c
@@ -19,5 +19,5 @@ static int
 pipeline_atq_worker_single_stage_tx(void *arg)
 {
-	PIPELINE_WROKER_SINGLE_STAGE_INIT;
+	PIPELINE_WORKER_SINGLE_STAGE_INIT;
 
 	while (t->done == false) {
@@ -44,5 +44,5 @@ static int
 pipeline_atq_worker_single_stage_fwd(void *arg)
 {
-	PIPELINE_WROKER_SINGLE_STAGE_INIT;
+	PIPELINE_WORKER_SINGLE_STAGE_INIT;
 	const uint8_t tx_queue = t->tx_service.queue_id;
 
@@ -67,5 +67,5 @@ static int
 pipeline_atq_worker_single_stage_burst_tx(void *arg)
 {
-	PIPELINE_WROKER_SINGLE_STAGE_BURST_INIT;
+	PIPELINE_WORKER_SINGLE_STAGE_BURST_INIT;
 
 	while (t->done == false) {
@@ -99,5 +99,5 @@ static int
 pipeline_atq_worker_single_stage_burst_fwd(void *arg)
 {
-	PIPELINE_WROKER_SINGLE_STAGE_BURST_INIT;
+	PIPELINE_WORKER_SINGLE_STAGE_BURST_INIT;
 	const uint8_t tx_queue = t->tx_service.queue_id;
 
@@ -127,5 +127,5 @@ static int
 pipeline_atq_worker_multi_stage_tx(void *arg)
 {
-	PIPELINE_WROKER_MULTI_STAGE_INIT;
+	PIPELINE_WORKER_MULTI_STAGE_INIT;
 	const uint8_t nb_stages = t->opt->nb_stages;
 
@@ -162,5 +162,5 @@ static int
 pipeline_atq_worker_multi_stage_fwd(void *arg)
 {
-	PIPELINE_WROKER_MULTI_STAGE_INIT;
+	PIPELINE_WORKER_MULTI_STAGE_INIT;
 	const uint8_t nb_stages = t->opt->nb_stages;
 	const uint8_t tx_queue = t->tx_service.queue_id;
@@ -193,5 +193,5 @@ static int
 pipeline_atq_worker_multi_stage_burst_tx(void *arg)
 {
-	PIPELINE_WROKER_MULTI_STAGE_BURST_INIT;
+	PIPELINE_WORKER_MULTI_STAGE_BURST_INIT;
 	const uint8_t nb_stages = t->opt->nb_stages;
 
@@ -235,5 +235,5 @@ static int
 pipeline_atq_worker_multi_stage_burst_fwd(void *arg)
 {
-	PIPELINE_WROKER_MULTI_STAGE_BURST_INIT;
+	PIPELINE_WORKER_MULTI_STAGE_BURST_INIT;
 	const uint8_t nb_stages = t->opt->nb_stages;
 	const uint8_t tx_queue = t->tx_service.queue_id;
diff --git a/app/test-eventdev/test_pipeline_common.h b/app/test-eventdev/test_pipeline_common.h
index 5fb91607d..9cd6b905b 100644
--- a/app/test-eventdev/test_pipeline_common.h
+++ b/app/test-eventdev/test_pipeline_common.h
@@ -66,5 +66,5 @@ struct test_pipeline {
 #define BURST_SIZE 16
 
-#define PIPELINE_WROKER_SINGLE_STAGE_INIT \
+#define PIPELINE_WORKER_SINGLE_STAGE_INIT \
 	struct worker_data *w  = arg;     \
 	struct test_pipeline *t = w->t;   \
@@ -73,5 +73,5 @@ struct test_pipeline {
 	struct rte_event ev
 
-#define PIPELINE_WROKER_SINGLE_STAGE_BURST_INIT \
+#define PIPELINE_WORKER_SINGLE_STAGE_BURST_INIT \
 	int i;                                  \
 	struct worker_data *w  = arg;           \
@@ -81,5 +81,5 @@ struct test_pipeline {
 	struct rte_event ev[BURST_SIZE + 1]
 
-#define PIPELINE_WROKER_MULTI_STAGE_INIT                         \
+#define PIPELINE_WORKER_MULTI_STAGE_INIT                         \
 	struct worker_data *w  = arg;                            \
 	struct test_pipeline *t = w->t;                          \
@@ -91,5 +91,5 @@ struct test_pipeline {
 	struct rte_event ev
 
-#define PIPELINE_WROKER_MULTI_STAGE_BURST_INIT                   \
+#define PIPELINE_WORKER_MULTI_STAGE_BURST_INIT                   \
 	int i;                                  \
 	struct worker_data *w  = arg;                            \
diff --git a/app/test-eventdev/test_pipeline_queue.c b/app/test-eventdev/test_pipeline_queue.c
index ca5f4578e..2e0d93d99 100644
--- a/app/test-eventdev/test_pipeline_queue.c
+++ b/app/test-eventdev/test_pipeline_queue.c
@@ -19,5 +19,5 @@ static int
 pipeline_queue_worker_single_stage_tx(void *arg)
 {
-	PIPELINE_WROKER_SINGLE_STAGE_INIT;
+	PIPELINE_WORKER_SINGLE_STAGE_INIT;
 
 	while (t->done == false) {
@@ -45,5 +45,5 @@ static int
 pipeline_queue_worker_single_stage_fwd(void *arg)
 {
-	PIPELINE_WROKER_SINGLE_STAGE_INIT;
+	PIPELINE_WORKER_SINGLE_STAGE_INIT;
 	const uint8_t tx_queue = t->tx_service.queue_id;
 
@@ -68,5 +68,5 @@ static int
 pipeline_queue_worker_single_stage_burst_tx(void *arg)
 {
-	PIPELINE_WROKER_SINGLE_STAGE_BURST_INIT;
+	PIPELINE_WORKER_SINGLE_STAGE_BURST_INIT;
 
 	while (t->done == false) {
@@ -102,5 +102,5 @@ static int
 pipeline_queue_worker_single_stage_burst_fwd(void *arg)
 {
-	PIPELINE_WROKER_SINGLE_STAGE_BURST_INIT;
+	PIPELINE_WORKER_SINGLE_STAGE_BURST_INIT;
 	const uint8_t tx_queue = t->tx_service.queue_id;
 
@@ -131,5 +131,5 @@ static int
 pipeline_queue_worker_multi_stage_tx(void *arg)
 {
-	PIPELINE_WROKER_MULTI_STAGE_INIT;
+	PIPELINE_WORKER_MULTI_STAGE_INIT;
 	const uint8_t nb_stages = t->opt->nb_stages + 1;
 
@@ -166,5 +166,5 @@ static int
 pipeline_queue_worker_multi_stage_fwd(void *arg)
 {
-	PIPELINE_WROKER_MULTI_STAGE_INIT;
+	PIPELINE_WORKER_MULTI_STAGE_INIT;
 	const uint8_t nb_stages = t->opt->nb_stages + 1;
 	const uint8_t tx_queue = t->tx_service.queue_id;
@@ -197,5 +197,5 @@ static int
 pipeline_queue_worker_multi_stage_burst_tx(void *arg)
 {
-	PIPELINE_WROKER_MULTI_STAGE_BURST_INIT;
+	PIPELINE_WORKER_MULTI_STAGE_BURST_INIT;
 	const uint8_t nb_stages = t->opt->nb_stages + 1;
 
@@ -241,5 +241,5 @@ static int
 pipeline_queue_worker_multi_stage_burst_fwd(void *arg)
 {
-	PIPELINE_WROKER_MULTI_STAGE_BURST_INIT;
+	PIPELINE_WORKER_MULTI_STAGE_BURST_INIT;
 	const uint8_t nb_stages = t->opt->nb_stages + 1;
 	const uint8_t tx_queue = t->tx_service.queue_id;
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.190174737 +0000
+++ 0009-app-eventdev-fix-minor-typos.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,12 +1,13 @@
-From f26320a6ca2b5aa76154b1e15ad81206ed240464 Mon Sep 17 00:00:00 2001
+From f025ea074acafd1e0b7c9228c3ee7031d3e86f1b Mon Sep 17 00:00:00 2001
 From: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
 Date: Mon, 24 Sep 2018 13:32:17 +0530
 Subject: [PATCH] app/eventdev: fix minor typos
 
+[ upstream commit f26320a6ca2b5aa76154b1e15ad81206ed240464 ]
+
 Fix minor typos.
 
 Fixes: 314bcf58ca8f ("app/eventdev: add pipeline queue worker functions")
-Cc: stable@dpdk.org
 
 Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
 Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>

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

* [dpdk-stable] patch 'test/event: fix eth Rx adapter test for skeleton PMD' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (7 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'app/eventdev: fix minor typos' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'test/event: fix Rx adapter intr " Kevin Traynor
                   ` (63 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Nikhil Rao; +Cc: Jerin Jacob, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 1e89060a39ab511a2edd3ee11713e20e37ae1b8d Mon Sep 17 00:00:00 2001
From: Nikhil Rao <nikhil.rao@intel.com>
Date: Tue, 25 Sep 2018 12:49:04 +0530
Subject: [PATCH] test/event: fix eth Rx adapter test for skeleton PMD

[ upstream commit 83294c61690fee57bfc153bfa7a9a3e9afc09fbe ]

Skeleton PMD does not support RTE_EVENT_ETH_RX_ADAPTER_CAP_MULTI_EVENTQ
and implicit_release_disable so make the Rx queue_id = -1 and
initialize the event port configuration to zero.

Fixes: ec36d881f56d ("eventdev: add implicit release disable capability")
Fixes: 2a9c83ae3b2e ("test/eventdev: add multi-ports test")

Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
---
 test/test/test_event_eth_rx_adapter.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/test/test/test_event_eth_rx_adapter.c b/test/test/test_event_eth_rx_adapter.c
index 3c19ee01b..7f9d51e9b 100644
--- a/test/test/test_event_eth_rx_adapter.c
+++ b/test/test/test_event_eth_rx_adapter.c
@@ -311,4 +311,6 @@ adapter_create(void)
 	struct rte_event_port_conf rx_p_conf;
 
+	memset(&rx_p_conf, 0, sizeof(rx_p_conf));
+
 	err = rte_event_dev_info_get(TEST_DEV_ID, &dev_info);
 	TEST_ASSERT(err == 0, "Expected 0 got %d", err);
@@ -492,5 +494,5 @@ adapter_multi_eth_add_del(void)
 	for (; port_index < rte_eth_dev_count_total(); port_index += 1) {
 		err = rte_event_eth_rx_adapter_queue_add(TEST_INST_ID,
-				port_index, 0,
+				port_index, -1,
 				&queue_config);
 		TEST_ASSERT(err == 0, "Expected 0 got %d", err);
@@ -501,5 +503,5 @@ adapter_multi_eth_add_del(void)
 	for (; port_index < rte_eth_dev_count_total(); port_index += 1) {
 		err = rte_event_eth_rx_adapter_queue_del(TEST_INST_ID,
-				port_index, 0);
+				port_index, -1);
 		TEST_ASSERT(err == 0, "Expected 0 got %d", err);
 	}
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.214413066 +0000
+++ 0010-test-event-fix-eth-Rx-adapter-test-for-skeleton-PMD.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,15 +1,16 @@
-From 83294c61690fee57bfc153bfa7a9a3e9afc09fbe Mon Sep 17 00:00:00 2001
+From 1e89060a39ab511a2edd3ee11713e20e37ae1b8d Mon Sep 17 00:00:00 2001
 From: Nikhil Rao <nikhil.rao@intel.com>
 Date: Tue, 25 Sep 2018 12:49:04 +0530
 Subject: [PATCH] test/event: fix eth Rx adapter test for skeleton PMD
 
+[ upstream commit 83294c61690fee57bfc153bfa7a9a3e9afc09fbe ]
+
 Skeleton PMD does not support RTE_EVENT_ETH_RX_ADAPTER_CAP_MULTI_EVENTQ
 and implicit_release_disable so make the Rx queue_id = -1 and
 initialize the event port configuration to zero.
 
 Fixes: ec36d881f56d ("eventdev: add implicit release disable capability")
 Fixes: 2a9c83ae3b2e ("test/eventdev: add multi-ports test")
-Cc: stable@dpdk.org
 
 Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
 Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
@@ -18,7 +19,7 @@
  1 file changed, 4 insertions(+), 2 deletions(-)
 
 diff --git a/test/test/test_event_eth_rx_adapter.c b/test/test/test_event_eth_rx_adapter.c
-index 25604ec60..1dcc09262 100644
+index 3c19ee01b..7f9d51e9b 100644
 --- a/test/test/test_event_eth_rx_adapter.c
 +++ b/test/test/test_event_eth_rx_adapter.c
 @@ -311,4 +311,6 @@ adapter_create(void)

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

* [dpdk-stable] patch 'test/event: fix Rx adapter intr test for skeleton PMD' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (8 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'test/event: fix eth Rx adapter test for skeleton PMD' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'mem: fix undefined behavior in NUMA-aware mapping' " Kevin Traynor
                   ` (62 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Nikhil Rao; +Cc: Jerin Jacob, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 88f0f7a2e3b8d2d307601c213301cd48f7201718 Mon Sep 17 00:00:00 2001
From: Nikhil Rao <nikhil.rao@intel.com>
Date: Tue, 25 Sep 2018 12:49:05 +0530
Subject: [PATCH] test/event: fix Rx adapter intr test for skeleton PMD

[ upstream commit 9b4631be9d8a5bda647d0240b2e965fd8573e6d4 ]

Skeleton PMD does not support RTE_EVENT_ETH_RX_ADAPTER_CAP_MULTI_EVENTQ
so make the Rx queue_id = -1 and initialize the event port
configuration to zero.

Fixes: d65856999dd6 ("test/event: add Rx adapter tests for interrupt driven queues")

Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
---
 test/test/test_event_eth_rx_adapter.c | 37 ++++++++++++++++-----------
 1 file changed, 22 insertions(+), 15 deletions(-)

diff --git a/test/test/test_event_eth_rx_adapter.c b/test/test/test_event_eth_rx_adapter.c
index 7f9d51e9b..cdb468fa8 100644
--- a/test/test/test_event_eth_rx_adapter.c
+++ b/test/test/test_event_eth_rx_adapter.c
@@ -536,9 +536,11 @@ adapter_intr_queue_add_del(void)
 	queue_config.servicing_weight = 0;
 
-	/* add queue 0 */
-	err = rte_event_eth_rx_adapter_queue_add(TEST_INST_ID,
-						TEST_ETHDEV_ID, 0,
-						&queue_config);
-	TEST_ASSERT(err == 0, "Expected 0 got %d", err);
+	if (cap & RTE_EVENT_ETH_RX_ADAPTER_CAP_MULTI_EVENTQ) {
+		/* add queue 0 */
+		err = rte_event_eth_rx_adapter_queue_add(TEST_INST_ID,
+							TEST_ETHDEV_ID, 0,
+							&queue_config);
+		TEST_ASSERT(err == 0, "Expected 0 got %d", err);
+	}
 
 	/* add all queues */
@@ -550,9 +552,11 @@ adapter_intr_queue_add_del(void)
 	TEST_ASSERT(err == 0, "Expected 0 got %d", err);
 
-	/* del queue 0 */
-	err = rte_event_eth_rx_adapter_queue_del(TEST_INST_ID,
-						TEST_ETHDEV_ID,
-						0);
-	TEST_ASSERT(err == 0, "Expected 0 got %d", err);
+	if (cap & RTE_EVENT_ETH_RX_ADAPTER_CAP_MULTI_EVENTQ) {
+		/* del queue 0 */
+		err = rte_event_eth_rx_adapter_queue_del(TEST_INST_ID,
+							TEST_ETHDEV_ID,
+							0);
+		TEST_ASSERT(err == 0, "Expected 0 got %d", err);
+	}
 
 	/* del remaining queues */
@@ -572,9 +576,12 @@ adapter_intr_queue_add_del(void)
 	/* intr -> poll mode queue */
 	queue_config.servicing_weight = 1;
-	err = rte_event_eth_rx_adapter_queue_add(TEST_INST_ID,
-						TEST_ETHDEV_ID,
-						0,
-						&queue_config);
-	TEST_ASSERT(err == 0, "Expected 0 got %d", err);
+
+	if (cap & RTE_EVENT_ETH_RX_ADAPTER_CAP_MULTI_EVENTQ) {
+		err = rte_event_eth_rx_adapter_queue_add(TEST_INST_ID,
+							TEST_ETHDEV_ID,
+							0,
+							&queue_config);
+		TEST_ASSERT(err == 0, "Expected 0 got %d", err);
+	}
 
 	err = rte_event_eth_rx_adapter_queue_add(TEST_INST_ID,
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.237245234 +0000
+++ 0011-test-event-fix-Rx-adapter-intr-test-for-skeleton-PMD.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,14 +1,15 @@
-From 9b4631be9d8a5bda647d0240b2e965fd8573e6d4 Mon Sep 17 00:00:00 2001
+From 88f0f7a2e3b8d2d307601c213301cd48f7201718 Mon Sep 17 00:00:00 2001
 From: Nikhil Rao <nikhil.rao@intel.com>
 Date: Tue, 25 Sep 2018 12:49:05 +0530
 Subject: [PATCH] test/event: fix Rx adapter intr test for skeleton PMD
 
+[ upstream commit 9b4631be9d8a5bda647d0240b2e965fd8573e6d4 ]
+
 Skeleton PMD does not support RTE_EVENT_ETH_RX_ADAPTER_CAP_MULTI_EVENTQ
 so make the Rx queue_id = -1 and initialize the event port
 configuration to zero.
 
 Fixes: d65856999dd6 ("test/event: add Rx adapter tests for interrupt driven queues")
-Cc: stable@dpdk.org
 
 Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
 Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
@@ -17,7 +18,7 @@
  1 file changed, 22 insertions(+), 15 deletions(-)
 
 diff --git a/test/test/test_event_eth_rx_adapter.c b/test/test/test_event_eth_rx_adapter.c
-index 1dcc09262..1d3be82b5 100644
+index 7f9d51e9b..cdb468fa8 100644
 --- a/test/test/test_event_eth_rx_adapter.c
 +++ b/test/test/test_event_eth_rx_adapter.c
 @@ -536,9 +536,11 @@ adapter_intr_queue_add_del(void)

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

* [dpdk-stable] patch 'mem: fix undefined behavior in NUMA-aware mapping' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (9 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'test/event: fix Rx adapter intr " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'mem: fix --huge-unlink option' " Kevin Traynor
                   ` (61 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Anatoly Burakov; +Cc: Ilya Maximets, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 2e003e3e3bd3bed9bdf5235349106bdb9d14dd01 Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov@intel.com>
Date: Fri, 21 Sep 2018 10:27:22 +0100
Subject: [PATCH] mem: fix undefined behavior in NUMA-aware mapping

[ upstream commit b1621823eacbe4669a4b581d6c420db08f9e6505 ]

When NUMA-aware hugepages config option is set, we rely on
libnuma to tell the kernel to allocate hugepages on a specific
NUMA node. However, we allocate node mask before we check if
NUMA is available in the first place, which, according to
the manpage [1], causes undefined behaviour.

Fix by only using nodemask when we have NUMA available.

[1] https://linux.die.net/man/3/numa_alloc_onnode

Bugzilla ID: 20
Fixes: 1b72605d2416 ("mem: balanced allocation of hugepages")

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Ilya Maximets <i.maximets@samsung.com>
---
 lib/librte_eal/linuxapp/eal/eal_memory.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/lib/librte_eal/linuxapp/eal/eal_memory.c b/lib/librte_eal/linuxapp/eal/eal_memory.c
index dbf19499e..7747ee6df 100644
--- a/lib/librte_eal/linuxapp/eal/eal_memory.c
+++ b/lib/librte_eal/linuxapp/eal/eal_memory.c
@@ -264,5 +264,5 @@ map_all_hugepages(struct hugepage_file *hugepg_tbl, struct hugepage_info *hpi,
 	int essential_prev = 0;
 	int oldpolicy;
-	struct bitmask *oldmask = numa_allocate_nodemask();
+	struct bitmask *oldmask = NULL;
 	bool have_numa = true;
 	unsigned long maxnode = 0;
@@ -276,4 +276,5 @@ map_all_hugepages(struct hugepage_file *hugepg_tbl, struct hugepage_info *hpi,
 	if (have_numa) {
 		RTE_LOG(DEBUG, EAL, "Trying to obtain current memory policy.\n");
+		oldmask = numa_allocate_nodemask();
 		if (get_mempolicy(&oldpolicy, oldmask->maskp,
 				  oldmask->size + 1, 0, 0) < 0) {
@@ -403,5 +404,6 @@ out:
 		}
 	}
-	numa_free_cpumask(oldmask);
+	if (oldmask != NULL)
+		numa_free_cpumask(oldmask);
 #endif
 	return i;
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.260841932 +0000
+++ 0012-mem-fix-undefined-behavior-in-NUMA-aware-mapping.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,8 +1,10 @@
-From b1621823eacbe4669a4b581d6c420db08f9e6505 Mon Sep 17 00:00:00 2001
+From 2e003e3e3bd3bed9bdf5235349106bdb9d14dd01 Mon Sep 17 00:00:00 2001
 From: Anatoly Burakov <anatoly.burakov@intel.com>
 Date: Fri, 21 Sep 2018 10:27:22 +0100
 Subject: [PATCH] mem: fix undefined behavior in NUMA-aware mapping
 
+[ upstream commit b1621823eacbe4669a4b581d6c420db08f9e6505 ]
+
 When NUMA-aware hugepages config option is set, we rely on
 libnuma to tell the kernel to allocate hugepages on a specific
 NUMA node. However, we allocate node mask before we check if
@@ -15,7 +17,6 @@
 
 Bugzilla ID: 20
 Fixes: 1b72605d2416 ("mem: balanced allocation of hugepages")
-Cc: stable@dpdk.org
 
 Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
 Acked-by: Ilya Maximets <i.maximets@samsung.com>
@@ -24,23 +25,23 @@
  1 file changed, 4 insertions(+), 2 deletions(-)
 
 diff --git a/lib/librte_eal/linuxapp/eal/eal_memory.c b/lib/librte_eal/linuxapp/eal/eal_memory.c
-index e3ac24815..78bfa2241 100644
+index dbf19499e..7747ee6df 100644
 --- a/lib/librte_eal/linuxapp/eal/eal_memory.c
 +++ b/lib/librte_eal/linuxapp/eal/eal_memory.c
-@@ -265,5 +265,5 @@ map_all_hugepages(struct hugepage_file *hugepg_tbl, struct hugepage_info *hpi,
+@@ -264,5 +264,5 @@ map_all_hugepages(struct hugepage_file *hugepg_tbl, struct hugepage_info *hpi,
  	int essential_prev = 0;
  	int oldpolicy;
 -	struct bitmask *oldmask = numa_allocate_nodemask();
 +	struct bitmask *oldmask = NULL;
  	bool have_numa = true;
  	unsigned long maxnode = 0;
-@@ -277,4 +277,5 @@ map_all_hugepages(struct hugepage_file *hugepg_tbl, struct hugepage_info *hpi,
+@@ -276,4 +276,5 @@ map_all_hugepages(struct hugepage_file *hugepg_tbl, struct hugepage_info *hpi,
  	if (have_numa) {
  		RTE_LOG(DEBUG, EAL, "Trying to obtain current memory policy.\n");
 +		oldmask = numa_allocate_nodemask();
  		if (get_mempolicy(&oldpolicy, oldmask->maskp,
  				  oldmask->size + 1, 0, 0) < 0) {
-@@ -404,5 +405,6 @@ out:
+@@ -403,5 +404,6 @@ out:
  		}
  	}
 -	numa_free_cpumask(oldmask);

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

* [dpdk-stable] patch 'mem: fix --huge-unlink option' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (10 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'mem: fix undefined behavior in NUMA-aware mapping' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'igb_uio: fix refcount if open returns error' " Kevin Traynor
                   ` (60 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Pawel Wodkowski; +Cc: Anatoly Burakov, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From b37f33cc06491cc7462f1721f31170910f694d9d Mon Sep 17 00:00:00 2001
From: Pawel Wodkowski <pawelx.wodkowski@intel.com>
Date: Fri, 21 Sep 2018 13:56:38 +0200
Subject: [PATCH] mem: fix --huge-unlink option

[ upstream commit 8e1fdcaa3d76bd531d03897c9dfef0f6dc76c7c8 ]

The final_va field is set during remap_segment() but this information is
not propagated to temporal copy of huge page memory configuration so the
unlink_hugepage_files() function wrongly assume that there is nothing to
unlink. Fix this issue by checking orig_va instead of final_va.

Fixes: 66cc45e293ed ("mem: replace memseg with memseg lists")

Signed-off-by: Pawel Wodkowski <pawelx.wodkowski@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
 lib/librte_eal/linuxapp/eal/eal_memory.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/librte_eal/linuxapp/eal/eal_memory.c b/lib/librte_eal/linuxapp/eal/eal_memory.c
index 7747ee6df..6131bfde2 100644
--- a/lib/librte_eal/linuxapp/eal/eal_memory.c
+++ b/lib/librte_eal/linuxapp/eal/eal_memory.c
@@ -587,5 +587,5 @@ unlink_hugepage_files(struct hugepage_file *hugepg_tbl,
 		struct hugepage_file *hp = &hugepg_tbl[page];
 
-		if (hp->final_va != NULL && unlink(hp->filepath)) {
+		if (hp->orig_va != NULL && unlink(hp->filepath)) {
 			RTE_LOG(WARNING, EAL, "%s(): Removing %s failed: %s\n",
 				__func__, hp->filepath, strerror(errno));
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.285044238 +0000
+++ 0013-mem-fix-huge-unlink-option.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,15 +1,16 @@
-From 8e1fdcaa3d76bd531d03897c9dfef0f6dc76c7c8 Mon Sep 17 00:00:00 2001
+From b37f33cc06491cc7462f1721f31170910f694d9d Mon Sep 17 00:00:00 2001
 From: Pawel Wodkowski <pawelx.wodkowski@intel.com>
 Date: Fri, 21 Sep 2018 13:56:38 +0200
 Subject: [PATCH] mem: fix --huge-unlink option
 
+[ upstream commit 8e1fdcaa3d76bd531d03897c9dfef0f6dc76c7c8 ]
+
 The final_va field is set during remap_segment() but this information is
 not propagated to temporal copy of huge page memory configuration so the
 unlink_hugepage_files() function wrongly assume that there is nothing to
 unlink. Fix this issue by checking orig_va instead of final_va.
 
 Fixes: 66cc45e293ed ("mem: replace memseg with memseg lists")
-Cc: stable@dpdk.org
 
 Signed-off-by: Pawel Wodkowski <pawelx.wodkowski@intel.com>
 Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
@@ -18,10 +19,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/lib/librte_eal/linuxapp/eal/eal_memory.c b/lib/librte_eal/linuxapp/eal/eal_memory.c
-index 4913fb05e..31f44e524 100644
+index 7747ee6df..6131bfde2 100644
 --- a/lib/librte_eal/linuxapp/eal/eal_memory.c
 +++ b/lib/librte_eal/linuxapp/eal/eal_memory.c
-@@ -588,5 +588,5 @@ unlink_hugepage_files(struct hugepage_file *hugepg_tbl,
+@@ -587,5 +587,5 @@ unlink_hugepage_files(struct hugepage_file *hugepg_tbl,
  		struct hugepage_file *hp = &hugepg_tbl[page];
  
 -		if (hp->final_va != NULL && unlink(hp->filepath)) {

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

* [dpdk-stable] patch 'igb_uio: fix refcount if open returns error' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (11 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'mem: fix --huge-unlink option' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/i40e: fix send admin queue command before init' " Kevin Traynor
                   ` (59 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 4fa9cde4881ec5327bcb44a6a9ff36a29d18b621 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Fri, 14 Sep 2018 08:30:19 -0700
Subject: [PATCH] igb_uio: fix refcount if open returns error

[ upstream commit ab856f2947ef0af523eb4d22f4aa8347bbf07391 ]

This fixes the problem of reference count leak if
igbuio_pci_enable_interrupts fails.

Also, replace mutex and integer with a kernel atomic counter.
This is standard pattern for kernel devices.

Fixes: 19685d5aa79c ("igb_uio: allow multi-process access")

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 kernel/linux/igb_uio/igb_uio.c | 33 +++++++++++----------------------
 1 file changed, 11 insertions(+), 22 deletions(-)

diff --git a/kernel/linux/igb_uio/igb_uio.c b/kernel/linux/igb_uio/igb_uio.c
index 3398eacd3..fede66cf2 100644
--- a/kernel/linux/igb_uio/igb_uio.c
+++ b/kernel/linux/igb_uio/igb_uio.c
@@ -27,6 +27,5 @@ struct rte_uio_pci_dev {
 	struct pci_dev *pdev;
 	enum rte_intr_mode mode;
-	struct mutex lock;
-	int refcnt;
+	atomic_t refcnt;
 };
 
@@ -321,9 +320,6 @@ igbuio_pci_open(struct uio_info *info, struct inode *inode)
 	int err;
 
-	mutex_lock(&udev->lock);
-	if (++udev->refcnt > 1) {
-		mutex_unlock(&udev->lock);
+	if (atomic_inc_return(&udev->refcnt) != 1)
 		return 0;
-	}
 
 	/* set bus master, which was cleared by the reset function */
@@ -332,10 +328,9 @@ igbuio_pci_open(struct uio_info *info, struct inode *inode)
 	/* enable interrupts */
 	err = igbuio_pci_enable_interrupts(udev);
-	mutex_unlock(&udev->lock);
 	if (err) {
+		atomic_dec(&udev->refcnt);
 		dev_err(&dev->dev, "Enable interrupt fails\n");
-		return err;
 	}
-	return 0;
+	return err;
 }
 
@@ -346,17 +341,12 @@ igbuio_pci_release(struct uio_info *info, struct inode *inode)
 	struct pci_dev *dev = udev->pdev;
 
-	mutex_lock(&udev->lock);
-	if (--udev->refcnt > 0) {
-		mutex_unlock(&udev->lock);
-		return 0;
+	if (atomic_dec_and_test(&udev->refcnt)) {
+		/* disable interrupts */
+		igbuio_pci_disable_interrupts(udev);
+
+		/* stop the device from further DMA */
+		pci_clear_master(dev);
 	}
 
-	/* disable interrupts */
-	igbuio_pci_disable_interrupts(udev);
-
-	/* stop the device from further DMA */
-	pci_clear_master(dev);
-
-	mutex_unlock(&udev->lock);
 	return 0;
 }
@@ -490,5 +480,4 @@ igbuio_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
 		return -ENOMEM;
 
-	mutex_init(&udev->lock);
 	/*
 	 * enable device: ask low-level code to enable I/O and
@@ -530,4 +519,5 @@ igbuio_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
 	udev->info.priv = udev;
 	udev->pdev = dev;
+	atomic_set(&udev->refcnt, 0);
 
 	err = sysfs_create_group(&dev->dev.kobj, &dev_attr_grp);
@@ -581,5 +571,4 @@ igbuio_pci_remove(struct pci_dev *dev)
 	struct rte_uio_pci_dev *udev = pci_get_drvdata(dev);
 
-	mutex_destroy(&udev->lock);
 	sysfs_remove_group(&dev->dev.kobj, &dev_attr_grp);
 	uio_unregister_device(&udev->info);
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.308435521 +0000
+++ 0014-igb_uio-fix-refcount-if-open-returns-error.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,8 +1,10 @@
-From ab856f2947ef0af523eb4d22f4aa8347bbf07391 Mon Sep 17 00:00:00 2001
+From 4fa9cde4881ec5327bcb44a6a9ff36a29d18b621 Mon Sep 17 00:00:00 2001
 From: Stephen Hemminger <stephen@networkplumber.org>
 Date: Fri, 14 Sep 2018 08:30:19 -0700
 Subject: [PATCH] igb_uio: fix refcount if open returns error
 
+[ upstream commit ab856f2947ef0af523eb4d22f4aa8347bbf07391 ]
+
 This fixes the problem of reference count leak if
 igbuio_pci_enable_interrupts fails.
 
@@ -10,7 +12,6 @@
 This is standard pattern for kernel devices.
 
 Fixes: 19685d5aa79c ("igb_uio: allow multi-process access")
-Cc: stable@dpdk.org
 
 Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
 Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>

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

* [dpdk-stable] patch 'net/i40e: fix send admin queue command before init' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (12 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'igb_uio: fix refcount if open returns error' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/i40e/base: fix partition id calculation for X722' " Kevin Traynor
                   ` (58 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Qi Zhang; +Cc: Anand Rawat, Beilei Xing, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 05ddf95eec36267989de278cb6468c7c880ff923 Mon Sep 17 00:00:00 2001
From: Qi Zhang <qi.z.zhang@intel.com>
Date: Fri, 28 Sep 2018 11:20:01 +0800
Subject: [PATCH] net/i40e: fix send admin queue command before init

[ upstream commit 0a1b657838c2c0546ebc6469ed2840c5a9a796f4 ]

We should not issue Admin Queue command before Admin Queue is initialized.
But this happened in i40e_hw_init and i40e_filter_input_set_init.

The patch fixes the issue by proper reordering.

Fixes: b6a0ec418274 ("i40e: use AQ for Rx control register read/write")

Reported-by: Anand Rawat <anand.rawat@intel.com>
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
---
 drivers/net/i40e/i40e_ethdev.c | 36 +++++++++++++++++-----------------
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index 85a6a867f..12ac6cde0 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -1268,7 +1268,4 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused)
 	i40e_clear_hw(hw);
 
-	/* Initialize the hardware */
-	i40e_hw_init(dev);
-
 	/* Reset here to make sure all is clean for each PF */
 	ret = i40e_pf_reset(hw);
@@ -1285,19 +1282,4 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused)
 	}
 
-	i40e_config_automask(pf);
-
-	i40e_set_default_pctype_table(dev);
-
-	/*
-	 * To work around the NVM issue, initialize registers
-	 * for packet type of QinQ by software.
-	 * It should be removed once issues are fixed in NVM.
-	 */
-	if (!pf->support_multi_driver)
-		i40e_GLQF_reg_init(hw);
-
-	/* Initialize the input set for filters (hash and fd) to default value */
-	i40e_filter_input_set_init(pf);
-
 	/* Initialize the parameters for adminq */
 	i40e_init_adminq_parameter(hw);
@@ -1314,4 +1296,22 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused)
 		     (hw->nvm.version & 0xf), hw->nvm.eetrack);
 
+	/* Initialize the hardware */
+	i40e_hw_init(dev);
+
+	i40e_config_automask(pf);
+
+	i40e_set_default_pctype_table(dev);
+
+	/*
+	 * To work around the NVM issue, initialize registers
+	 * for packet type of QinQ by software.
+	 * It should be removed once issues are fixed in NVM.
+	 */
+	if (!pf->support_multi_driver)
+		i40e_GLQF_reg_init(hw);
+
+	/* Initialize the input set for filters (hash and fd) to default value */
+	i40e_filter_input_set_init(pf);
+
 	/* initialise the L3_MAP register */
 	if (!pf->support_multi_driver) {
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.332334208 +0000
+++ 0015-net-i40e-fix-send-admin-queue-command-before-init.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,15 +1,16 @@
-From 0a1b657838c2c0546ebc6469ed2840c5a9a796f4 Mon Sep 17 00:00:00 2001
+From 05ddf95eec36267989de278cb6468c7c880ff923 Mon Sep 17 00:00:00 2001
 From: Qi Zhang <qi.z.zhang@intel.com>
 Date: Fri, 28 Sep 2018 11:20:01 +0800
 Subject: [PATCH] net/i40e: fix send admin queue command before init
 
+[ upstream commit 0a1b657838c2c0546ebc6469ed2840c5a9a796f4 ]
+
 We should not issue Admin Queue command before Admin Queue is initialized.
 But this happened in i40e_hw_init and i40e_filter_input_set_init.
 
 The patch fixes the issue by proper reordering.
 
 Fixes: b6a0ec418274 ("i40e: use AQ for Rx control register read/write")
-Cc: stable@dpdk.org
 
 Reported-by: Anand Rawat <anand.rawat@intel.com>
 Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
@@ -19,10 +20,10 @@
  1 file changed, 18 insertions(+), 18 deletions(-)
 
 diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
-index de25de650..9225333d0 100644
+index 85a6a867f..12ac6cde0 100644
 --- a/drivers/net/i40e/i40e_ethdev.c
 +++ b/drivers/net/i40e/i40e_ethdev.c
-@@ -1333,7 +1333,4 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused)
+@@ -1268,7 +1268,4 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused)
  	i40e_clear_hw(hw);
  
 -	/* Initialize the hardware */
@@ -30,7 +31,7 @@
 -
  	/* Reset here to make sure all is clean for each PF */
  	ret = i40e_pf_reset(hw);
-@@ -1350,19 +1347,4 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused)
+@@ -1285,19 +1282,4 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused)
  	}
  
 -	i40e_config_automask(pf);
@@ -50,7 +51,7 @@
 -
  	/* Initialize the parameters for adminq */
  	i40e_init_adminq_parameter(hw);
-@@ -1379,4 +1361,22 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused)
+@@ -1314,4 +1296,22 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused)
  		     (hw->nvm.version & 0xf), hw->nvm.eetrack);
  
 +	/* Initialize the hardware */

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

* [dpdk-stable] patch 'net/i40e/base: fix partition id calculation for X722' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (13 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/i40e: fix send admin queue command before init' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/i40e/base: improve the polling mechanism' " Kevin Traynor
                   ` (57 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Qi Zhang; +Cc: Beilei Xing, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 83f1981872079ddcbabea275df2e13a55f536c09 Mon Sep 17 00:00:00 2001
From: Qi Zhang <qi.z.zhang@intel.com>
Date: Tue, 25 Sep 2018 10:34:24 +0800
Subject: [PATCH] net/i40e/base: fix partition id calculation for X722

[ upstream commit 188d0bda2bac473a1c49987265ebd33c95c63456 ]

This patch overwrites number of ports for X722 devices with support for
OCP PHY mezzanine. The old method with checking if port is disabled in
the PRTGEN_CNF register cannot be used in this case. When the OCP is
removed, ports were seen as disabled, which resulted in wrong calculation
of partition id, that caused WoL to be disabled on certain ports.

Fixes: 3c89193a36fd ("i40e/base: support WOL config for X722")

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
---
 drivers/net/i40e/base/i40e_common.c | 23 ++++++++++++++++++++++-
 drivers/net/i40e/base/i40e_type.h   |  4 +++-
 2 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/drivers/net/i40e/base/i40e_common.c b/drivers/net/i40e/base/i40e_common.c
index e0a5be14c..6fbba01d3 100644
--- a/drivers/net/i40e/base/i40e_common.c
+++ b/drivers/net/i40e/base/i40e_common.c
@@ -3709,7 +3709,8 @@ STATIC void i40e_parse_discover_capabilities(struct i40e_hw *hw, void *buff,
 	u32 number, logical_id, phys_id;
 	struct i40e_hw_capabilities *p;
+	enum i40e_status_code status;
+	u16 id, ocp_cfg_word0;
 	u8 major_rev;
 	u32 i = 0;
-	u16 id;
 
 	cap = (struct i40e_aqc_list_capabilities_element_resp *) buff;
@@ -4003,4 +4004,24 @@ STATIC void i40e_parse_discover_capabilities(struct i40e_hw *hw, void *buff,
 	}
 
+	/* OCP cards case: if a mezz is removed the ethernet port is at
+	 * disabled state in PRTGEN_CNF register. Additional NVM read is
+	 * needed in order to check if we are dealing with OCP card.
+	 * Those cards have 4 PFs at minimum, so using PRTGEN_CNF for counting
+	 * physical ports results in wrong partition id calculation and thus
+	 * not supporting WoL.
+	 */
+	if (hw->mac.type == I40E_MAC_X722) {
+		if (i40e_acquire_nvm(hw, I40E_RESOURCE_READ) == I40E_SUCCESS) {
+			status = i40e_aq_read_nvm(hw, I40E_SR_EMP_MODULE_PTR,
+						  2 * I40E_SR_OCP_CFG_WORD0,
+						  sizeof(ocp_cfg_word0),
+						  &ocp_cfg_word0, true, NULL);
+			if (status == I40E_SUCCESS &&
+			    (ocp_cfg_word0 & I40E_SR_OCP_ENABLED))
+				hw->num_ports = 4;
+			i40e_release_nvm(hw);
+		}
+	}
+
 	valid_functions = p->valid_functions;
 	num_functions = 0;
diff --git a/drivers/net/i40e/base/i40e_type.h b/drivers/net/i40e/base/i40e_type.h
index 006a11a8a..39275074e 100644
--- a/drivers/net/i40e/base/i40e_type.h
+++ b/drivers/net/i40e/base/i40e_type.h
@@ -1542,5 +1542,7 @@ struct i40e_hw_port_stats {
 #define I40E_SR_CONTROL_WORD_1_NVM_BANK_VALID	BIT(5)
 #define I40E_SR_NVM_MAP_STRUCTURE_TYPE		BIT(12)
-#define I40E_PTR_TYPE                           BIT(15)
+#define I40E_PTR_TYPE				BIT(15)
+#define I40E_SR_OCP_CFG_WORD0			0x2B
+#define I40E_SR_OCP_ENABLED			BIT(15)
 
 /* Shadow RAM related */
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.368233730 +0000
+++ 0016-net-i40e-base-fix-partition-id-calculation-for-X722.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,8 +1,10 @@
-From 188d0bda2bac473a1c49987265ebd33c95c63456 Mon Sep 17 00:00:00 2001
+From 83f1981872079ddcbabea275df2e13a55f536c09 Mon Sep 17 00:00:00 2001
 From: Qi Zhang <qi.z.zhang@intel.com>
 Date: Tue, 25 Sep 2018 10:34:24 +0800
 Subject: [PATCH] net/i40e/base: fix partition id calculation for X722
 
+[ upstream commit 188d0bda2bac473a1c49987265ebd33c95c63456 ]
+
 This patch overwrites number of ports for X722 devices with support for
 OCP PHY mezzanine. The old method with checking if port is disabled in
 the PRTGEN_CNF register cannot be used in this case. When the OCP is
@@ -10,7 +12,6 @@
 of partition id, that caused WoL to be disabled on certain ports.
 
 Fixes: 3c89193a36fd ("i40e/base: support WOL config for X722")
-Cc: stable@dpdk.org
 
 Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
 Acked-by: Beilei Xing <beilei.xing@intel.com>
@@ -20,10 +21,10 @@
  2 files changed, 25 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/net/i40e/base/i40e_common.c b/drivers/net/i40e/base/i40e_common.c
-index dce5c3965..ee117bd5e 100644
+index e0a5be14c..6fbba01d3 100644
 --- a/drivers/net/i40e/base/i40e_common.c
 +++ b/drivers/net/i40e/base/i40e_common.c
-@@ -3679,7 +3679,8 @@ STATIC void i40e_parse_discover_capabilities(struct i40e_hw *hw, void *buff,
+@@ -3709,7 +3709,8 @@ STATIC void i40e_parse_discover_capabilities(struct i40e_hw *hw, void *buff,
  	u32 number, logical_id, phys_id;
  	struct i40e_hw_capabilities *p;
 +	enum i40e_status_code status;
@@ -33,7 +34,7 @@
 -	u16 id;
  
  	cap = (struct i40e_aqc_list_capabilities_element_resp *) buff;
-@@ -3973,4 +3974,24 @@ STATIC void i40e_parse_discover_capabilities(struct i40e_hw *hw, void *buff,
+@@ -4003,4 +4004,24 @@ STATIC void i40e_parse_discover_capabilities(struct i40e_hw *hw, void *buff,
  	}
  
 +	/* OCP cards case: if a mezz is removed the ethernet port is at
@@ -59,10 +60,10 @@
  	valid_functions = p->valid_functions;
  	num_functions = 0;
 diff --git a/drivers/net/i40e/base/i40e_type.h b/drivers/net/i40e/base/i40e_type.h
-index 55acc147e..7dde3bfd2 100644
+index 006a11a8a..39275074e 100644
 --- a/drivers/net/i40e/base/i40e_type.h
 +++ b/drivers/net/i40e/base/i40e_type.h
-@@ -1513,5 +1513,7 @@ struct i40e_hw_port_stats {
+@@ -1542,5 +1542,7 @@ struct i40e_hw_port_stats {
  #define I40E_SR_CONTROL_WORD_1_NVM_BANK_VALID	BIT(5)
  #define I40E_SR_NVM_MAP_STRUCTURE_TYPE		BIT(12)
 -#define I40E_PTR_TYPE                           BIT(15)

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

* [dpdk-stable] patch 'net/i40e/base: improve the polling mechanism' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (14 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/i40e/base: fix partition id calculation for X722' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/i40e/base: read LLDP config area with correct endianness' " Kevin Traynor
                   ` (56 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Qi Zhang; +Cc: Beilei Xing, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From a788a452adf94a9c4d3cac183b8f3d666de4a369 Mon Sep 17 00:00:00 2001
From: Qi Zhang <qi.z.zhang@intel.com>
Date: Tue, 25 Sep 2018 10:34:29 +0800
Subject: [PATCH] net/i40e/base: improve the polling mechanism

[ upstream commit 54f4a22dc1731ef32760eb3a13f7d5a2e889650b ]

This patch fixes the polling mechanism of GLGEN_RSTAT.DEVSTATE
in the PF Reset path when Global Reset is in progress.
While the driver is polling for the end of the PF Reset and
the Global Reset is triggered, abandon the PF Reset path and
prepare for the upcoming Global Reset.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
---
 drivers/net/i40e/base/i40e_common.c | 35 ++++++++++++++++++++++++-----
 1 file changed, 29 insertions(+), 6 deletions(-)

diff --git a/drivers/net/i40e/base/i40e_common.c b/drivers/net/i40e/base/i40e_common.c
index 6fbba01d3..f10761644 100644
--- a/drivers/net/i40e/base/i40e_common.c
+++ b/drivers/net/i40e/base/i40e_common.c
@@ -1327,4 +1327,27 @@ STATIC enum i40e_media_type i40e_get_media_type(struct i40e_hw *hw)
 }
 
+/**
+ * i40e_poll_globr - Poll for Global Reset completion
+ * @hw: pointer to the hardware structure
+ * @retry_limit: how many times to retry before failure
+ **/
+STATIC enum i40e_status_code i40e_poll_globr(struct i40e_hw *hw,
+					     u32 retry_limit)
+{
+	u32 cnt, reg = 0;
+
+	for (cnt = 0; cnt < retry_limit; cnt++) {
+		reg = rd32(hw, I40E_GLGEN_RSTAT);
+		if (!(reg & I40E_GLGEN_RSTAT_DEVSTATE_MASK))
+			return I40E_SUCCESS;
+		i40e_msec_delay(100);
+	}
+
+	DEBUGOUT("Global reset failed.\n");
+	DEBUGOUT1("I40E_GLGEN_RSTAT = 0x%x\n", reg);
+
+	return I40E_ERR_RESET_FAILED;
+}
+
 #define I40E_PF_RESET_WAIT_COUNT	200
 /**
@@ -1396,12 +1419,12 @@ enum i40e_status_code i40e_pf_reset(struct i40e_hw *hw)
 				break;
 			reg2 = rd32(hw, I40E_GLGEN_RSTAT);
-			if (reg2 & I40E_GLGEN_RSTAT_DEVSTATE_MASK) {
-				DEBUGOUT("Core reset upcoming. Skipping PF reset request.\n");
-				DEBUGOUT1("I40E_GLGEN_RSTAT = 0x%x\n", reg2);
-				return I40E_ERR_NOT_READY;
-			}
+			if (reg2 & I40E_GLGEN_RSTAT_DEVSTATE_MASK)
+				break;
 			i40e_msec_delay(1);
 		}
-		if (reg & I40E_PFGEN_CTRL_PFSWR_MASK) {
+		if (reg2 & I40E_GLGEN_RSTAT_DEVSTATE_MASK) {
+			if (i40e_poll_globr(hw, grst_del) != I40E_SUCCESS)
+				return I40E_ERR_RESET_FAILED;
+		} else if (reg & I40E_PFGEN_CTRL_PFSWR_MASK) {
 			DEBUGOUT("PF reset polling failed to complete.\n");
 			return I40E_ERR_RESET_FAILED;
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.399682301 +0000
+++ 0017-net-i40e-base-improve-the-polling-mechanism.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,16 +1,16 @@
-From 54f4a22dc1731ef32760eb3a13f7d5a2e889650b Mon Sep 17 00:00:00 2001
+From a788a452adf94a9c4d3cac183b8f3d666de4a369 Mon Sep 17 00:00:00 2001
 From: Qi Zhang <qi.z.zhang@intel.com>
 Date: Tue, 25 Sep 2018 10:34:29 +0800
 Subject: [PATCH] net/i40e/base: improve the polling mechanism
 
+[ upstream commit 54f4a22dc1731ef32760eb3a13f7d5a2e889650b ]
+
 This patch fixes the polling mechanism of GLGEN_RSTAT.DEVSTATE
 in the PF Reset path when Global Reset is in progress.
 While the driver is polling for the end of the PF Reset and
 the Global Reset is triggered, abandon the PF Reset path and
 prepare for the upcoming Global Reset.
 
-Cc: stable@dpdk.org
-
 Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
 Acked-by: Beilei Xing <beilei.xing@intel.com>
 ---
@@ -18,10 +18,10 @@
  1 file changed, 29 insertions(+), 6 deletions(-)
 
 diff --git a/drivers/net/i40e/base/i40e_common.c b/drivers/net/i40e/base/i40e_common.c
-index 18009be3b..0affa98ac 100644
+index 6fbba01d3..f10761644 100644
 --- a/drivers/net/i40e/base/i40e_common.c
 +++ b/drivers/net/i40e/base/i40e_common.c
-@@ -1297,4 +1297,27 @@ STATIC enum i40e_media_type i40e_get_media_type(struct i40e_hw *hw)
+@@ -1327,4 +1327,27 @@ STATIC enum i40e_media_type i40e_get_media_type(struct i40e_hw *hw)
  }
  
 +/**
@@ -49,7 +49,7 @@
 +
  #define I40E_PF_RESET_WAIT_COUNT	200
  /**
-@@ -1366,12 +1389,12 @@ enum i40e_status_code i40e_pf_reset(struct i40e_hw *hw)
+@@ -1396,12 +1419,12 @@ enum i40e_status_code i40e_pf_reset(struct i40e_hw *hw)
  				break;
  			reg2 = rd32(hw, I40E_GLGEN_RSTAT);
 -			if (reg2 & I40E_GLGEN_RSTAT_DEVSTATE_MASK) {

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

* [dpdk-stable] patch 'net/i40e/base: read LLDP config area with correct endianness' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (15 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/i40e/base: improve the polling mechanism' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/i40e/base: properly clean resources' " Kevin Traynor
                   ` (55 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Qi Zhang; +Cc: Beilei Xing, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 3feb1e9eb8faf906eee3991db764ff593e7772f5 Mon Sep 17 00:00:00 2001
From: Qi Zhang <qi.z.zhang@intel.com>
Date: Tue, 25 Sep 2018 10:34:30 +0800
Subject: [PATCH] net/i40e/base: read LLDP config area with correct endianness

[ upstream commit b72611a2743c4198e3b031cf120e0bd432256c83 ]

The NVM is in little endian so when we read from it we need to do
the correct thing for the endianness of the machine.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
---
 drivers/net/i40e/base/i40e_dcb.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/net/i40e/base/i40e_dcb.c b/drivers/net/i40e/base/i40e_dcb.c
index 7600c9227..c93b633c6 100644
--- a/drivers/net/i40e/base/i40e_dcb.c
+++ b/drivers/net/i40e/base/i40e_dcb.c
@@ -1292,4 +1292,5 @@ static enum i40e_status_code _i40e_read_lldp_cfg(struct i40e_hw *hw,
 	u32 address, offset = (2 * word_offset);
 	enum i40e_status_code ret;
+	__le16 raw_mem;
 	u16 mem;
 
@@ -1298,10 +1299,11 @@ static enum i40e_status_code _i40e_read_lldp_cfg(struct i40e_hw *hw,
 		return ret;
 
-	ret = i40e_aq_read_nvm(hw, 0x0, module * 2, sizeof(mem), &mem, true,
-			       NULL);
+	ret = i40e_aq_read_nvm(hw, 0x0, module * 2, sizeof(raw_mem), &raw_mem,
+			       true, NULL);
 	i40e_release_nvm(hw);
 	if (ret != I40E_SUCCESS)
 		return ret;
 
+	mem = LE16_TO_CPU(raw_mem);
 	/* Check if this pointer needs to be read in word size or 4K sector
 	 * units.
@@ -1316,10 +1318,11 @@ static enum i40e_status_code _i40e_read_lldp_cfg(struct i40e_hw *hw,
 		goto err_lldp_cfg;
 
-	ret = i40e_aq_read_nvm(hw, module, offset, sizeof(mem), &mem, true,
-			       NULL);
+	ret = i40e_aq_read_nvm(hw, module, offset, sizeof(raw_mem), &raw_mem,
+			       true, NULL);
 	i40e_release_nvm(hw);
 	if (ret != I40E_SUCCESS)
 		return ret;
 
+	mem = LE16_TO_CPU(raw_mem);
 	offset = mem + word_offset;
 	offset *= 2;
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.431133104 +0000
+++ 0018-net-i40e-base-read-LLDP-config-area-with-correct-end.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,13 +1,13 @@
-From b72611a2743c4198e3b031cf120e0bd432256c83 Mon Sep 17 00:00:00 2001
+From 3feb1e9eb8faf906eee3991db764ff593e7772f5 Mon Sep 17 00:00:00 2001
 From: Qi Zhang <qi.z.zhang@intel.com>
 Date: Tue, 25 Sep 2018 10:34:30 +0800
 Subject: [PATCH] net/i40e/base: read LLDP config area with correct endianness
 
+[ upstream commit b72611a2743c4198e3b031cf120e0bd432256c83 ]
+
 The NVM is in little endian so when we read from it we need to do
 the correct thing for the endianness of the machine.
 
-Cc: stable@dpdk.org
-
 Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
 Acked-by: Beilei Xing <beilei.xing@intel.com>
 ---
@@ -15,16 +15,16 @@
  1 file changed, 7 insertions(+), 4 deletions(-)
 
 diff --git a/drivers/net/i40e/base/i40e_dcb.c b/drivers/net/i40e/base/i40e_dcb.c
-index 7cd444bb3..a26f82b3a 100644
+index 7600c9227..c93b633c6 100644
 --- a/drivers/net/i40e/base/i40e_dcb.c
 +++ b/drivers/net/i40e/base/i40e_dcb.c
-@@ -1263,4 +1263,5 @@ static enum i40e_status_code _i40e_read_lldp_cfg(struct i40e_hw *hw,
+@@ -1292,4 +1292,5 @@ static enum i40e_status_code _i40e_read_lldp_cfg(struct i40e_hw *hw,
  	u32 address, offset = (2 * word_offset);
  	enum i40e_status_code ret;
 +	__le16 raw_mem;
  	u16 mem;
  
-@@ -1269,10 +1270,11 @@ static enum i40e_status_code _i40e_read_lldp_cfg(struct i40e_hw *hw,
+@@ -1298,10 +1299,11 @@ static enum i40e_status_code _i40e_read_lldp_cfg(struct i40e_hw *hw,
  		return ret;
  
 -	ret = i40e_aq_read_nvm(hw, 0x0, module * 2, sizeof(mem), &mem, true,
@@ -38,7 +38,7 @@
 +	mem = LE16_TO_CPU(raw_mem);
  	/* Check if this pointer needs to be read in word size or 4K sector
  	 * units.
-@@ -1287,10 +1289,11 @@ static enum i40e_status_code _i40e_read_lldp_cfg(struct i40e_hw *hw,
+@@ -1316,10 +1318,11 @@ static enum i40e_status_code _i40e_read_lldp_cfg(struct i40e_hw *hw,
  		goto err_lldp_cfg;
  
 -	ret = i40e_aq_read_nvm(hw, module, offset, sizeof(mem), &mem, true,

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

* [dpdk-stable] patch 'net/i40e/base: properly clean resources' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (16 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/i40e/base: read LLDP config area with correct endianness' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/i40e/base: gracefully clean the " Kevin Traynor
                   ` (54 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Qi Zhang; +Cc: Beilei Xing, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From bbbd302c63944f40adc6b3fa4958e6865b66c58b Mon Sep 17 00:00:00 2001
From: Qi Zhang <qi.z.zhang@intel.com>
Date: Tue, 25 Sep 2018 10:34:31 +0800
Subject: [PATCH] net/i40e/base: properly clean resources

[ upstream commit 02016804ed5e6a46f9162737bcdc78a3780332f5 ]

Allocated resources were not freed in the event of a failure in
i40e_init_lan_hmc function. This patch gracefully handles the fail
case after initializing the lan hmc.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
---
 drivers/net/i40e/base/i40e_lan_hmc.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/drivers/net/i40e/base/i40e_lan_hmc.c b/drivers/net/i40e/base/i40e_lan_hmc.c
index f03f38133..52c5f8100 100644
--- a/drivers/net/i40e/base/i40e_lan_hmc.c
+++ b/drivers/net/i40e/base/i40e_lan_hmc.c
@@ -144,5 +144,5 @@ enum i40e_status_code i40e_init_lan_hmc(struct i40e_hw *hw, u32 txq_num,
 		DEBUGOUT3("i40e_init_lan_hmc: Tx context: asks for 0x%x but max allowed is 0x%x, returns error %d\n",
 			  txq_num, obj->max_cnt, ret_code);
-		goto init_lan_hmc_out;
+		goto free_hmc_out;
 	}
 
@@ -167,5 +167,5 @@ enum i40e_status_code i40e_init_lan_hmc(struct i40e_hw *hw, u32 txq_num,
 		DEBUGOUT3("i40e_init_lan_hmc: Rx context: asks for 0x%x but max allowed is 0x%x, returns error %d\n",
 			  rxq_num, obj->max_cnt, ret_code);
-		goto init_lan_hmc_out;
+		goto free_hmc_out;
 	}
 
@@ -190,5 +190,5 @@ enum i40e_status_code i40e_init_lan_hmc(struct i40e_hw *hw, u32 txq_num,
 		DEBUGOUT3("i40e_init_lan_hmc: FCoE context: asks for 0x%x but max allowed is 0x%x, returns error %d\n",
 			  fcoe_cntx_num, obj->max_cnt, ret_code);
-		goto init_lan_hmc_out;
+		goto free_hmc_out;
 	}
 
@@ -213,5 +213,5 @@ enum i40e_status_code i40e_init_lan_hmc(struct i40e_hw *hw, u32 txq_num,
 		DEBUGOUT3("i40e_init_lan_hmc: FCoE filter: asks for 0x%x but max allowed is 0x%x, returns error %d\n",
 			  fcoe_filt_num, obj->max_cnt, ret_code);
-		goto init_lan_hmc_out;
+		goto free_hmc_out;
 	}
 
@@ -234,5 +234,5 @@ enum i40e_status_code i40e_init_lan_hmc(struct i40e_hw *hw, u32 txq_num,
 					  hw->hmc.sd_table.sd_cnt));
 		if (ret_code)
-			goto init_lan_hmc_out;
+			goto free_hmc_out;
 		hw->hmc.sd_table.sd_entry =
 			(struct i40e_hmc_sd_entry *)hw->hmc.sd_table.addr.va;
@@ -242,4 +242,9 @@ enum i40e_status_code i40e_init_lan_hmc(struct i40e_hw *hw, u32 txq_num,
 
 init_lan_hmc_out:
+	return ret_code;
+free_hmc_out:
+	if (hw->hmc.hmc_obj_virt_mem.va)
+		i40e_free_virt_mem(hw, &hw->hmc.hmc_obj_virt_mem);
+
 	return ret_code;
 }
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.454151081 +0000
+++ 0019-net-i40e-base-properly-clean-resources.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,14 +1,14 @@
-From 02016804ed5e6a46f9162737bcdc78a3780332f5 Mon Sep 17 00:00:00 2001
+From bbbd302c63944f40adc6b3fa4958e6865b66c58b Mon Sep 17 00:00:00 2001
 From: Qi Zhang <qi.z.zhang@intel.com>
 Date: Tue, 25 Sep 2018 10:34:31 +0800
 Subject: [PATCH] net/i40e/base: properly clean resources
 
+[ upstream commit 02016804ed5e6a46f9162737bcdc78a3780332f5 ]
+
 Allocated resources were not freed in the event of a failure in
 i40e_init_lan_hmc function. This patch gracefully handles the fail
 case after initializing the lan hmc.
 
-Cc: stable@dpdk.org
-
 Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
 Acked-by: Beilei Xing <beilei.xing@intel.com>
 ---
@@ -16,45 +16,45 @@
  1 file changed, 10 insertions(+), 5 deletions(-)
 
 diff --git a/drivers/net/i40e/base/i40e_lan_hmc.c b/drivers/net/i40e/base/i40e_lan_hmc.c
-index 510c11826..0afee49b1 100644
+index f03f38133..52c5f8100 100644
 --- a/drivers/net/i40e/base/i40e_lan_hmc.c
 +++ b/drivers/net/i40e/base/i40e_lan_hmc.c
-@@ -115,5 +115,5 @@ enum i40e_status_code i40e_init_lan_hmc(struct i40e_hw *hw, u32 txq_num,
+@@ -144,5 +144,5 @@ enum i40e_status_code i40e_init_lan_hmc(struct i40e_hw *hw, u32 txq_num,
  		DEBUGOUT3("i40e_init_lan_hmc: Tx context: asks for 0x%x but max allowed is 0x%x, returns error %d\n",
  			  txq_num, obj->max_cnt, ret_code);
 -		goto init_lan_hmc_out;
 +		goto free_hmc_out;
  	}
  
-@@ -138,5 +138,5 @@ enum i40e_status_code i40e_init_lan_hmc(struct i40e_hw *hw, u32 txq_num,
+@@ -167,5 +167,5 @@ enum i40e_status_code i40e_init_lan_hmc(struct i40e_hw *hw, u32 txq_num,
  		DEBUGOUT3("i40e_init_lan_hmc: Rx context: asks for 0x%x but max allowed is 0x%x, returns error %d\n",
  			  rxq_num, obj->max_cnt, ret_code);
 -		goto init_lan_hmc_out;
 +		goto free_hmc_out;
  	}
  
-@@ -161,5 +161,5 @@ enum i40e_status_code i40e_init_lan_hmc(struct i40e_hw *hw, u32 txq_num,
+@@ -190,5 +190,5 @@ enum i40e_status_code i40e_init_lan_hmc(struct i40e_hw *hw, u32 txq_num,
  		DEBUGOUT3("i40e_init_lan_hmc: FCoE context: asks for 0x%x but max allowed is 0x%x, returns error %d\n",
  			  fcoe_cntx_num, obj->max_cnt, ret_code);
 -		goto init_lan_hmc_out;
 +		goto free_hmc_out;
  	}
  
-@@ -184,5 +184,5 @@ enum i40e_status_code i40e_init_lan_hmc(struct i40e_hw *hw, u32 txq_num,
+@@ -213,5 +213,5 @@ enum i40e_status_code i40e_init_lan_hmc(struct i40e_hw *hw, u32 txq_num,
  		DEBUGOUT3("i40e_init_lan_hmc: FCoE filter: asks for 0x%x but max allowed is 0x%x, returns error %d\n",
  			  fcoe_filt_num, obj->max_cnt, ret_code);
 -		goto init_lan_hmc_out;
 +		goto free_hmc_out;
  	}
  
-@@ -205,5 +205,5 @@ enum i40e_status_code i40e_init_lan_hmc(struct i40e_hw *hw, u32 txq_num,
+@@ -234,5 +234,5 @@ enum i40e_status_code i40e_init_lan_hmc(struct i40e_hw *hw, u32 txq_num,
  					  hw->hmc.sd_table.sd_cnt));
  		if (ret_code)
 -			goto init_lan_hmc_out;
 +			goto free_hmc_out;
  		hw->hmc.sd_table.sd_entry =
  			(struct i40e_hmc_sd_entry *)hw->hmc.sd_table.addr.va;
-@@ -213,4 +213,9 @@ enum i40e_status_code i40e_init_lan_hmc(struct i40e_hw *hw, u32 txq_num,
+@@ -242,4 +242,9 @@ enum i40e_status_code i40e_init_lan_hmc(struct i40e_hw *hw, u32 txq_num,
  
  init_lan_hmc_out:
 +	return ret_code;

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

* [dpdk-stable] patch 'net/i40e/base: gracefully clean the resources' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (17 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/i40e/base: properly clean resources' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/i40e/base: correct global reset timeout calculation' " Kevin Traynor
                   ` (53 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Qi Zhang; +Cc: Beilei Xing, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 6e69e70467764112b03d2c0fad8c3a2997fbf8d2 Mon Sep 17 00:00:00 2001
From: Qi Zhang <qi.z.zhang@intel.com>
Date: Tue, 25 Sep 2018 10:34:32 +0800
Subject: [PATCH] net/i40e/base: gracefully clean the resources

[ upstream commit 49ea51605be46b48b12c2267b7c2a12d5ed1ed07 ]

Allocated resources were not freed in the event of failure in
i40e_init_asq function. This patch gracefully handles all failures.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
---
 drivers/net/i40e/base/i40e_adminq.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/net/i40e/base/i40e_adminq.c b/drivers/net/i40e/base/i40e_adminq.c
index 612be8839..0ca270eac 100644
--- a/drivers/net/i40e/base/i40e_adminq.c
+++ b/drivers/net/i40e/base/i40e_adminq.c
@@ -127,4 +127,5 @@ enum i40e_status_code i40e_alloc_adminq_arq_ring(struct i40e_hw *hw)
 void i40e_free_adminq_asq(struct i40e_hw *hw)
 {
+	i40e_free_virt_mem(hw, &hw->aq.asq.cmd_buf);
 	i40e_free_dma_mem(hw, &hw->aq.asq.desc_buf);
 }
@@ -434,5 +435,5 @@ enum i40e_status_code i40e_init_asq(struct i40e_hw *hw)
 	ret_code = i40e_config_asq_regs(hw);
 	if (ret_code != I40E_SUCCESS)
-		goto init_adminq_free_rings;
+		goto init_config_regs;
 
 	/* success! */
@@ -442,4 +443,8 @@ enum i40e_status_code i40e_init_asq(struct i40e_hw *hw)
 init_adminq_free_rings:
 	i40e_free_adminq_asq(hw);
+	return ret_code;
+
+init_config_regs:
+	i40e_free_asq_bufs(hw);
 
 init_adminq_exit:
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.477720594 +0000
+++ 0020-net-i40e-base-gracefully-clean-the-resources.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,13 +1,13 @@
-From 49ea51605be46b48b12c2267b7c2a12d5ed1ed07 Mon Sep 17 00:00:00 2001
+From 6e69e70467764112b03d2c0fad8c3a2997fbf8d2 Mon Sep 17 00:00:00 2001
 From: Qi Zhang <qi.z.zhang@intel.com>
 Date: Tue, 25 Sep 2018 10:34:32 +0800
 Subject: [PATCH] net/i40e/base: gracefully clean the resources
 
+[ upstream commit 49ea51605be46b48b12c2267b7c2a12d5ed1ed07 ]
+
 Allocated resources were not freed in the event of failure in
 i40e_init_asq function. This patch gracefully handles all failures.
 
-Cc: stable@dpdk.org
-
 Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
 Acked-by: Beilei Xing <beilei.xing@intel.com>
 ---
@@ -15,23 +15,23 @@
  1 file changed, 6 insertions(+), 1 deletion(-)
 
 diff --git a/drivers/net/i40e/base/i40e_adminq.c b/drivers/net/i40e/base/i40e_adminq.c
-index 5736e0cb3..bb4c5c61e 100644
+index 612be8839..0ca270eac 100644
 --- a/drivers/net/i40e/base/i40e_adminq.c
 +++ b/drivers/net/i40e/base/i40e_adminq.c
-@@ -98,4 +98,5 @@ enum i40e_status_code i40e_alloc_adminq_arq_ring(struct i40e_hw *hw)
+@@ -127,4 +127,5 @@ enum i40e_status_code i40e_alloc_adminq_arq_ring(struct i40e_hw *hw)
  void i40e_free_adminq_asq(struct i40e_hw *hw)
  {
 +	i40e_free_virt_mem(hw, &hw->aq.asq.cmd_buf);
  	i40e_free_dma_mem(hw, &hw->aq.asq.desc_buf);
  }
-@@ -405,5 +406,5 @@ enum i40e_status_code i40e_init_asq(struct i40e_hw *hw)
+@@ -434,5 +435,5 @@ enum i40e_status_code i40e_init_asq(struct i40e_hw *hw)
  	ret_code = i40e_config_asq_regs(hw);
  	if (ret_code != I40E_SUCCESS)
 -		goto init_adminq_free_rings;
 +		goto init_config_regs;
  
  	/* success! */
-@@ -413,4 +414,8 @@ enum i40e_status_code i40e_init_asq(struct i40e_hw *hw)
+@@ -442,4 +443,8 @@ enum i40e_status_code i40e_init_asq(struct i40e_hw *hw)
  init_adminq_free_rings:
  	i40e_free_adminq_asq(hw);
 +	return ret_code;

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

* [dpdk-stable] patch 'net/i40e/base: correct global reset timeout calculation' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (18 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/i40e/base: gracefully clean the " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/ixgbe: wait longer for link after fiber MAC setup' " Kevin Traynor
                   ` (52 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Qi Zhang; +Cc: Beilei Xing, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 56bb824e9d538ad2c59f35b28dd2adabda2f42f9 Mon Sep 17 00:00:00 2001
From: Qi Zhang <qi.z.zhang@intel.com>
Date: Tue, 25 Sep 2018 10:34:33 +0800
Subject: [PATCH] net/i40e/base: correct global reset timeout calculation

[ upstream commit 92451d9039ddddeddf59208a988393a6d44b2b9b ]

The wait time for Global Reset Ready steady state is calculated based on
the GLGEN_RSTCTL.GRSTDEL value. However, current impelementation multiplied
that value by 20 as a workaround for an issue in SOC platforms.
This resulted in the maximum GLGEN_RSTCTL.GRSTDEL timeout of 6.5 seconds
becoming 130 seconds, which is so long that the VMkernel watchdog thinks
the kernel is frozen and triggers a PSOD.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Beilei Xing <beilei.xing@intel.com>
---
 drivers/net/i40e/base/i40e_common.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/i40e/base/i40e_common.c b/drivers/net/i40e/base/i40e_common.c
index f10761644..77323fb7a 100644
--- a/drivers/net/i40e/base/i40e_common.c
+++ b/drivers/net/i40e/base/i40e_common.c
@@ -1373,5 +1373,5 @@ enum i40e_status_code i40e_pf_reset(struct i40e_hw *hw)
 			I40E_GLGEN_RSTCTL_GRSTDEL_SHIFT;
 
-	grst_del = grst_del * 20;
+	grst_del = min(grst_del * 20, 160U);
 
 	for (cnt = 0; cnt < grst_del; cnt++) {
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.500641917 +0000
+++ 0021-net-i40e-base-correct-global-reset-timeout-calculati.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,8 +1,10 @@
-From 92451d9039ddddeddf59208a988393a6d44b2b9b Mon Sep 17 00:00:00 2001
+From 56bb824e9d538ad2c59f35b28dd2adabda2f42f9 Mon Sep 17 00:00:00 2001
 From: Qi Zhang <qi.z.zhang@intel.com>
 Date: Tue, 25 Sep 2018 10:34:33 +0800
 Subject: [PATCH] net/i40e/base: correct global reset timeout calculation
 
+[ upstream commit 92451d9039ddddeddf59208a988393a6d44b2b9b ]
+
 The wait time for Global Reset Ready steady state is calculated based on
 the GLGEN_RSTCTL.GRSTDEL value. However, current impelementation multiplied
 that value by 20 as a workaround for an issue in SOC platforms.
@@ -10,8 +12,6 @@
 becoming 130 seconds, which is so long that the VMkernel watchdog thinks
 the kernel is frozen and triggers a PSOD.
 
-Cc: stable@dpdk.org
-
 Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
 Acked-by: Beilei Xing <beilei.xing@intel.com>
 ---
@@ -19,10 +19,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/drivers/net/i40e/base/i40e_common.c b/drivers/net/i40e/base/i40e_common.c
-index 0affa98ac..0eb369ff6 100644
+index f10761644..77323fb7a 100644
 --- a/drivers/net/i40e/base/i40e_common.c
 +++ b/drivers/net/i40e/base/i40e_common.c
-@@ -1343,5 +1343,5 @@ enum i40e_status_code i40e_pf_reset(struct i40e_hw *hw)
+@@ -1373,5 +1373,5 @@ enum i40e_status_code i40e_pf_reset(struct i40e_hw *hw)
  			I40E_GLGEN_RSTCTL_GRSTDEL_SHIFT;
  
 -	grst_del = grst_del * 20;

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

* [dpdk-stable] patch 'net/ixgbe: wait longer for link after fiber MAC setup' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (19 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/i40e/base: correct global reset timeout calculation' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/enic: do not use non-standard integer types' " Kevin Traynor
                   ` (51 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Matthew Smith; +Cc: Qi Zhang, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 80d65af2b201190e2265e084a28700b5a05c8f11 Mon Sep 17 00:00:00 2001
From: Matthew Smith <mgsmith@netgate.com>
Date: Mon, 16 Jul 2018 11:36:04 -0500
Subject: [PATCH] net/ixgbe: wait longer for link after fiber MAC setup

[ upstream commit 64f1c8539c8ce99214b9eb1fb728a2c6745f3300 ]

After setting up the link on a fiber port, the maximum wait time for
the link to come up is 500 ms in ixgbe_setup_mac_link_multispeed_fiber().
On an x550 SFP+ port, this is often not sufficiently long for the link
to come up. This can result in never being able to retrieve accurate
link status for the port using rte_eth_link_get_nowait().

Increase the maximum wait time in ixgbe_setup_mac_link_multispeed_fiber()
to 1 s.

Bugzilla ID: 69
Fixes: f3430431abaf ("ixgbe/base: add SFP+ dual-speed support")

Signed-off-by: Matthew Smith <mgsmith@netgate.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
---
 drivers/net/ixgbe/base/ixgbe_common.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ixgbe/base/ixgbe_common.c b/drivers/net/ixgbe/base/ixgbe_common.c
index e7e9256e5..2fb0a072c 100644
--- a/drivers/net/ixgbe/base/ixgbe_common.c
+++ b/drivers/net/ixgbe/base/ixgbe_common.c
@@ -5297,5 +5297,5 @@ s32 ixgbe_setup_mac_link_multispeed_fiber(struct ixgbe_hw *hw,
 		 * attempted.  82599 uses the same timing for 10g SFI.
 		 */
-		for (i = 0; i < 5; i++) {
+		for (i = 0; i < 10; i++) {
 			/* Wait for the link partner to also set speed */
 			msec_delay(100);
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.531790630 +0000
+++ 0022-net-ixgbe-wait-longer-for-link-after-fiber-MAC-setup.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,8 +1,10 @@
-From 64f1c8539c8ce99214b9eb1fb728a2c6745f3300 Mon Sep 17 00:00:00 2001
+From 80d65af2b201190e2265e084a28700b5a05c8f11 Mon Sep 17 00:00:00 2001
 From: Matthew Smith <mgsmith@netgate.com>
 Date: Mon, 16 Jul 2018 11:36:04 -0500
 Subject: [PATCH] net/ixgbe: wait longer for link after fiber MAC setup
 
+[ upstream commit 64f1c8539c8ce99214b9eb1fb728a2c6745f3300 ]
+
 After setting up the link on a fiber port, the maximum wait time for
 the link to come up is 500 ms in ixgbe_setup_mac_link_multispeed_fiber().
 On an x550 SFP+ port, this is often not sufficiently long for the link
@@ -14,7 +16,6 @@
 
 Bugzilla ID: 69
 Fixes: f3430431abaf ("ixgbe/base: add SFP+ dual-speed support")
-Cc: stable@dpdk.org
 
 Signed-off-by: Matthew Smith <mgsmith@netgate.com>
 Acked-by: Qi Zhang <qi.z.zhang@intel.com>
@@ -23,10 +24,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/drivers/net/ixgbe/base/ixgbe_common.c b/drivers/net/ixgbe/base/ixgbe_common.c
-index b4a0d7003..21f973e5e 100644
+index e7e9256e5..2fb0a072c 100644
 --- a/drivers/net/ixgbe/base/ixgbe_common.c
 +++ b/drivers/net/ixgbe/base/ixgbe_common.c
-@@ -5263,5 +5263,5 @@ s32 ixgbe_setup_mac_link_multispeed_fiber(struct ixgbe_hw *hw,
+@@ -5297,5 +5297,5 @@ s32 ixgbe_setup_mac_link_multispeed_fiber(struct ixgbe_hw *hw,
  		 * attempted.  82599 uses the same timing for 10g SFI.
  		 */
 -		for (i = 0; i < 5; i++) {

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

* [dpdk-stable] patch 'net/enic: do not use non-standard integer types' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (20 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/ixgbe: wait longer for link after fiber MAC setup' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/enic: set Rx VLAN offload flag for non-stripped packets' " Kevin Traynor
                   ` (50 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Hyong Youb Kim; +Cc: John Daley, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From e2831d15bb00733918d9cf6d1fc1d938b53963e2 Mon Sep 17 00:00:00 2001
From: Hyong Youb Kim <hyonkim@cisco.com>
Date: Tue, 25 Sep 2018 19:54:17 -0700
Subject: [PATCH] net/enic: do not use non-standard integer types

[ upstream commit 329380b3a13fe00f97465a5e27bb9535157bbe33 ]

Bugzilla ID: 39
Fixes: 9913fbb91df0 ("enic/base: common code")
Fixes: 322b355f2183 ("net/enic/base: bring NIC interface functions up to date")

Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
Reviewed-by: John Daley <johndale@cisco.com>
---
 drivers/net/enic/base/vnic_devcmd.h | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/net/enic/base/vnic_devcmd.h b/drivers/net/enic/base/vnic_devcmd.h
index a22d8a76c..fffe307e0 100644
--- a/drivers/net/enic/base/vnic_devcmd.h
+++ b/drivers/net/enic/base/vnic_devcmd.h
@@ -876,5 +876,5 @@ struct filter_action_v2 {
 	u32 flags;                     /* use FILTER_ACTION_XXX_FLAG defines */
 	u16 filter_id;
-	u_int8_t reserved[32];         /* for future expansion */
+	uint8_t reserved[32];         /* for future expansion */
 } __attribute__((packed));
 
@@ -942,7 +942,7 @@ enum {
 
 struct filter_tlv {
-	u_int32_t type;
-	u_int32_t length;
-	u_int32_t val[0];
+	uint32_t type;
+	uint32_t length;
+	uint32_t val[0];
 };
 
@@ -958,8 +958,8 @@ struct filter_tlv {
  * computing length for TLV.
  */
-static inline u_int32_t
+static inline uint32_t
 vnic_filter_size(struct filter_v2 *fp)
 {
-	u_int32_t size;
+	uint32_t size;
 
 	switch (fp->type) {
@@ -1000,8 +1000,8 @@ enum {
  * when computing length for TLV.
  */
-static inline u_int32_t
+static inline uint32_t
 vnic_action_size(struct filter_action_v2 *fap)
 {
-	u_int32_t size;
+	uint32_t size;
 
 	switch (fap->type) {
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.559653010 +0000
+++ 0023-net-enic-do-not-use-non-standard-integer-types.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,12 +1,13 @@
-From 329380b3a13fe00f97465a5e27bb9535157bbe33 Mon Sep 17 00:00:00 2001
+From e2831d15bb00733918d9cf6d1fc1d938b53963e2 Mon Sep 17 00:00:00 2001
 From: Hyong Youb Kim <hyonkim@cisco.com>
 Date: Tue, 25 Sep 2018 19:54:17 -0700
 Subject: [PATCH] net/enic: do not use non-standard integer types
 
+[ upstream commit 329380b3a13fe00f97465a5e27bb9535157bbe33 ]
+
 Bugzilla ID: 39
 Fixes: 9913fbb91df0 ("enic/base: common code")
 Fixes: 322b355f2183 ("net/enic/base: bring NIC interface functions up to date")
-Cc: stable@dpdk.org
 
 Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
 Reviewed-by: John Daley <johndale@cisco.com>

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

* [dpdk-stable] patch 'net/enic: set Rx VLAN offload flag for non-stripped packets' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (21 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/enic: do not use non-standard integer types' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/enic: explicitly disable overlay offload' " Kevin Traynor
                   ` (49 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Hyong Youb Kim; +Cc: John Daley, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From cb51dfb64fc9ce074b7bf904ce59f701be22efc6 Mon Sep 17 00:00:00 2001
From: Hyong Youb Kim <hyonkim@cisco.com>
Date: Tue, 25 Sep 2018 19:54:19 -0700
Subject: [PATCH] net/enic: set Rx VLAN offload flag for non-stripped packets

[ upstream commit fe5383d133f484d7cb2ad385bbf1e43ad7078682 ]

The NIC indicates VLAN TCI to the driver even when VLAN stripping is
disabled. The driver sets mbuf's vlan_tci but not PKT_RX_VLAN. Set
PKT_RX_VLAN to indicate that vlan_tci is valid.

Fixes: c6f455507411 ("net/enic: add ethernet VLAN packet type")

Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
Reviewed-by: John Daley <johndale@cisco.com>
---
 drivers/net/enic/enic_rxtx.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/net/enic/enic_rxtx.c b/drivers/net/enic/enic_rxtx.c
index 7129e1217..0eb113d75 100644
--- a/drivers/net/enic/enic_rxtx.c
+++ b/drivers/net/enic/enic_rxtx.c
@@ -234,8 +234,10 @@ enic_cq_rx_to_pkt_flags(struct cq_desc *cqd, struct rte_mbuf *mbuf)
 		mbuf->packet_type |= RTE_PTYPE_L2_ETHER;
 	} else {
-		if (vlan_tci != 0)
+		if (vlan_tci != 0) {
+			pkt_flags |= PKT_RX_VLAN;
 			mbuf->packet_type |= RTE_PTYPE_L2_ETHER_VLAN;
-		else
+		} else {
 			mbuf->packet_type |= RTE_PTYPE_L2_ETHER;
+		}
 	}
 	mbuf->vlan_tci = vlan_tci;
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.584149011 +0000
+++ 0024-net-enic-set-Rx-VLAN-offload-flag-for-non-stripped-p.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,14 +1,15 @@
-From fe5383d133f484d7cb2ad385bbf1e43ad7078682 Mon Sep 17 00:00:00 2001
+From cb51dfb64fc9ce074b7bf904ce59f701be22efc6 Mon Sep 17 00:00:00 2001
 From: Hyong Youb Kim <hyonkim@cisco.com>
 Date: Tue, 25 Sep 2018 19:54:19 -0700
 Subject: [PATCH] net/enic: set Rx VLAN offload flag for non-stripped packets
 
+[ upstream commit fe5383d133f484d7cb2ad385bbf1e43ad7078682 ]
+
 The NIC indicates VLAN TCI to the driver even when VLAN stripping is
 disabled. The driver sets mbuf's vlan_tci but not PKT_RX_VLAN. Set
 PKT_RX_VLAN to indicate that vlan_tci is valid.
 
 Fixes: c6f455507411 ("net/enic: add ethernet VLAN packet type")
-Cc: stable@dpdk.org
 
 Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
 Reviewed-by: John Daley <johndale@cisco.com>

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

* [dpdk-stable] patch 'net/enic: explicitly disable overlay offload' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (22 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/enic: set Rx VLAN offload flag for non-stripped packets' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/failsafe: report actual device capabilities' " Kevin Traynor
                   ` (48 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Hyong Youb Kim; +Cc: John Daley, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From cd3f20a1025595d25179ccd30000c30285a4b7dd Mon Sep 17 00:00:00 2001
From: Hyong Youb Kim <hyonkim@cisco.com>
Date: Tue, 25 Sep 2018 19:54:22 -0700
Subject: [PATCH] net/enic: explicitly disable overlay offload

[ upstream commit 308b514b8e8f712e5df1aa40b6bbd8958dc5e6b4 ]

Reopening vNIC does not automatically disable overlay offload. If it
is previously enabled, it remains enabled even when the user restarts
DPDK and requests overlay offload to be disabled via devarg
disable-overlay=1. So explicitly disable overlay offload when
requested.

Fixes: 93fb21fdbe23 ("net/enic: enable overlay offload for VXLAN and GENEVE")

Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
Reviewed-by: John Daley <johndale@cisco.com>
---
 drivers/net/enic/enic_main.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/net/enic/enic_main.c b/drivers/net/enic/enic_main.c
index fd940c583..c3c2e4fdf 100644
--- a/drivers/net/enic/enic_main.c
+++ b/drivers/net/enic/enic_main.c
@@ -1645,4 +1645,17 @@ static int enic_dev_init(struct enic *enic)
 
 	enic->overlay_offload = false;
+	if (enic->disable_overlay && enic->vxlan) {
+		/*
+		 * Explicitly disable overlay offload as the setting is
+		 * sticky, and resetting vNIC does not disable it.
+		 */
+		if (vnic_dev_overlay_offload_ctrl(enic->vdev,
+						  OVERLAY_FEATURE_VXLAN,
+						  OVERLAY_OFFLOAD_DISABLE)) {
+			dev_err(enic, "failed to disable overlay offload\n");
+		} else {
+			dev_info(enic, "Overlay offload is disabled\n");
+		}
+	}
 	if (!enic->disable_overlay && enic->vxlan &&
 	    /* 'VXLAN feature' enables VXLAN, NVGRE, and GENEVE. */
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.610486196 +0000
+++ 0025-net-enic-explicitly-disable-overlay-offload.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,8 +1,10 @@
-From 308b514b8e8f712e5df1aa40b6bbd8958dc5e6b4 Mon Sep 17 00:00:00 2001
+From cd3f20a1025595d25179ccd30000c30285a4b7dd Mon Sep 17 00:00:00 2001
 From: Hyong Youb Kim <hyonkim@cisco.com>
 Date: Tue, 25 Sep 2018 19:54:22 -0700
 Subject: [PATCH] net/enic: explicitly disable overlay offload
 
+[ upstream commit 308b514b8e8f712e5df1aa40b6bbd8958dc5e6b4 ]
+
 Reopening vNIC does not automatically disable overlay offload. If it
 is previously enabled, it remains enabled even when the user restarts
 DPDK and requests overlay offload to be disabled via devarg
@@ -10,7 +12,6 @@
 requested.
 
 Fixes: 93fb21fdbe23 ("net/enic: enable overlay offload for VXLAN and GENEVE")
-Cc: stable@dpdk.org
 
 Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
 Reviewed-by: John Daley <johndale@cisco.com>
@@ -19,10 +20,10 @@
  1 file changed, 13 insertions(+)
 
 diff --git a/drivers/net/enic/enic_main.c b/drivers/net/enic/enic_main.c
-index 03c5ef741..af29f9d90 100644
+index fd940c583..c3c2e4fdf 100644
 --- a/drivers/net/enic/enic_main.c
 +++ b/drivers/net/enic/enic_main.c
-@@ -1653,4 +1653,17 @@ static int enic_dev_init(struct enic *enic)
+@@ -1645,4 +1645,17 @@ static int enic_dev_init(struct enic *enic)
  
  	enic->overlay_offload = false;
 +	if (enic->disable_overlay && enic->vxlan) {

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

* [dpdk-stable] patch 'net/failsafe: report actual device capabilities' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (23 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/enic: explicitly disable overlay offload' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/nfp: fix RSS' " Kevin Traynor
                   ` (47 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Igor Romanov; +Cc: Andrew Rybchenko, Gaetan Rivet, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 88c8ba39161e4ab8d7a0590e1b1a34f8e09101b2 Mon Sep 17 00:00:00 2001
From: Igor Romanov <igor.romanov@oktetlabs.ru>
Date: Wed, 26 Sep 2018 07:38:04 +0100
Subject: [PATCH] net/failsafe: report actual device capabilities

[ upstream commit 4e31ee26ed510442ddacb753a31c79327aeb0fec ]

Failsafe device capabilities depend on supported by the failsafe
itself plus capabilities supported by sub-devices.
Make fs_dev_infos_get() take failsafe device capabilities into account.

Fixes: cac923cfea47 ("ethdev: support runtime queue setup")

Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Gaetan Rivet <gaetan.rivet@6wind.com>
---
 drivers/net/failsafe/failsafe_ops.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/net/failsafe/failsafe_ops.c b/drivers/net/failsafe/failsafe_ops.c
index 1343f02a9..73d6fd365 100644
--- a/drivers/net/failsafe/failsafe_ops.c
+++ b/drivers/net/failsafe/failsafe_ops.c
@@ -735,4 +735,6 @@ fs_stats_reset(struct rte_eth_dev *dev)
  *      Uses a logical AND of TX capabilities among
  *      the active probed sub_device and the default capabilities.
+ *      Uses a logical AND of device capabilities among
+ *      all sub_devices and the default capabilities.
  *
  */
@@ -753,8 +755,10 @@ fs_dev_infos_get(struct rte_eth_dev *dev,
 		uint64_t rxq_offload_capa;
 		uint64_t rss_hf_offload_capa;
+		uint64_t dev_capa;
 
 		rx_offload_capa = default_infos.rx_offload_capa;
 		rxq_offload_capa = default_infos.rx_queue_offload_capa;
 		rss_hf_offload_capa = default_infos.flow_type_rss_offloads;
+		dev_capa = default_infos.dev_capa;
 		FOREACH_SUBDEV_STATE(sdev, i, dev, DEV_PROBED) {
 			rte_eth_dev_info_get(PORT_ID(sdev),
@@ -765,4 +769,5 @@ fs_dev_infos_get(struct rte_eth_dev *dev,
 			rss_hf_offload_capa &=
 					PRIV(dev)->infos.flow_type_rss_offloads;
+			dev_capa &= PRIV(dev)->infos.dev_capa;
 		}
 		sdev = TX_SUBDEV(dev);
@@ -771,4 +776,5 @@ fs_dev_infos_get(struct rte_eth_dev *dev,
 		PRIV(dev)->infos.rx_queue_offload_capa = rxq_offload_capa;
 		PRIV(dev)->infos.flow_type_rss_offloads = rss_hf_offload_capa;
+		PRIV(dev)->infos.dev_capa = dev_capa;
 		PRIV(dev)->infos.tx_offload_capa &=
 					default_infos.tx_offload_capa;
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.632613204 +0000
+++ 0026-net-failsafe-report-actual-device-capabilities.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,14 +1,15 @@
-From 4e31ee26ed510442ddacb753a31c79327aeb0fec Mon Sep 17 00:00:00 2001
+From 88c8ba39161e4ab8d7a0590e1b1a34f8e09101b2 Mon Sep 17 00:00:00 2001
 From: Igor Romanov <igor.romanov@oktetlabs.ru>
 Date: Wed, 26 Sep 2018 07:38:04 +0100
 Subject: [PATCH] net/failsafe: report actual device capabilities
 
+[ upstream commit 4e31ee26ed510442ddacb753a31c79327aeb0fec ]
+
 Failsafe device capabilities depend on supported by the failsafe
 itself plus capabilities supported by sub-devices.
 Make fs_dev_infos_get() take failsafe device capabilities into account.
 
 Fixes: cac923cfea47 ("ethdev: support runtime queue setup")
-Cc: stable@dpdk.org
 
 Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru>
 Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
@@ -18,17 +19,17 @@
  1 file changed, 6 insertions(+)
 
 diff --git a/drivers/net/failsafe/failsafe_ops.c b/drivers/net/failsafe/failsafe_ops.c
-index 86d7fa2a0..7f8bcd4c6 100644
+index 1343f02a9..73d6fd365 100644
 --- a/drivers/net/failsafe/failsafe_ops.c
 +++ b/drivers/net/failsafe/failsafe_ops.c
-@@ -891,4 +891,6 @@ fs_stats_reset(struct rte_eth_dev *dev)
+@@ -735,4 +735,6 @@ fs_stats_reset(struct rte_eth_dev *dev)
   *      Uses a logical AND of TX capabilities among
   *      the active probed sub_device and the default capabilities.
 + *      Uses a logical AND of device capabilities among
 + *      all sub_devices and the default capabilities.
   *
   */
-@@ -909,8 +911,10 @@ fs_dev_infos_get(struct rte_eth_dev *dev,
+@@ -753,8 +755,10 @@ fs_dev_infos_get(struct rte_eth_dev *dev,
  		uint64_t rxq_offload_capa;
  		uint64_t rss_hf_offload_capa;
 +		uint64_t dev_capa;
@@ -39,13 +40,13 @@
 +		dev_capa = default_infos.dev_capa;
  		FOREACH_SUBDEV_STATE(sdev, i, dev, DEV_PROBED) {
  			rte_eth_dev_info_get(PORT_ID(sdev),
-@@ -921,4 +925,5 @@ fs_dev_infos_get(struct rte_eth_dev *dev,
+@@ -765,4 +769,5 @@ fs_dev_infos_get(struct rte_eth_dev *dev,
  			rss_hf_offload_capa &=
  					PRIV(dev)->infos.flow_type_rss_offloads;
 +			dev_capa &= PRIV(dev)->infos.dev_capa;
  		}
  		sdev = TX_SUBDEV(dev);
-@@ -927,4 +932,5 @@ fs_dev_infos_get(struct rte_eth_dev *dev,
+@@ -771,4 +776,5 @@ fs_dev_infos_get(struct rte_eth_dev *dev,
  		PRIV(dev)->infos.rx_queue_offload_capa = rxq_offload_capa;
  		PRIV(dev)->infos.flow_type_rss_offloads = rss_hf_offload_capa;
 +		PRIV(dev)->infos.dev_capa = dev_capa;

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

* [dpdk-stable] patch 'net/nfp: fix RSS' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (24 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/failsafe: report actual device capabilities' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnx2x: fix logging to include device name' " Kevin Traynor
                   ` (46 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Alejandro Lucero; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 610ea29fc84c9109a7a41b127637cdf36f6c74c7 Mon Sep 17 00:00:00 2001
From: Alejandro Lucero <alejandro.lucero@netronome.com>
Date: Wed, 26 Sep 2018 14:45:50 +0100
Subject: [PATCH] net/nfp: fix RSS

[ upstream commit f14a51689894dc226f6af4ab39f7439e4384a06b ]

Three problems are fixed in this patch:

 - RSS capabilities not advertised properly
 - RSS configuration just done for some RSS types
 - RSS hash match reported for just some RSS types

Fixes: 934e4c60fbff ("nfp: add RSS")

Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
---
 drivers/net/nfp/nfp_net.c | 36 +++++++++++++++++++++++++++++-------
 1 file changed, 29 insertions(+), 7 deletions(-)

diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c
index a588a3fe0..0649ddb9a 100644
--- a/drivers/net/nfp/nfp_net.c
+++ b/drivers/net/nfp/nfp_net.c
@@ -1206,6 +1206,8 @@ nfp_net_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 	};
 
-	dev_info->flow_type_rss_offloads = ETH_RSS_NONFRAG_IPV4_TCP |
+	dev_info->flow_type_rss_offloads = ETH_RSS_IPV4 |
+					   ETH_RSS_NONFRAG_IPV4_TCP |
 					   ETH_RSS_NONFRAG_IPV4_UDP |
+					   ETH_RSS_IPV6 |
 					   ETH_RSS_NONFRAG_IPV6_TCP |
 					   ETH_RSS_NONFRAG_IPV6_UDP;
@@ -1884,4 +1886,16 @@ nfp_net_set_hash(struct nfp_net_rxq *rxq, struct nfp_net_rx_desc *rxd,
 		mbuf->packet_type |= RTE_PTYPE_INNER_L3_IPV6_EXT;
 		break;
+	case NFP_NET_RSS_IPV4_TCP:
+		mbuf->packet_type |= RTE_PTYPE_INNER_L3_IPV6_EXT;
+		break;
+	case NFP_NET_RSS_IPV6_TCP:
+		mbuf->packet_type |= RTE_PTYPE_INNER_L3_IPV6_EXT;
+		break;
+	case NFP_NET_RSS_IPV4_UDP:
+		mbuf->packet_type |= RTE_PTYPE_INNER_L3_IPV6_EXT;
+		break;
+	case NFP_NET_RSS_IPV6_UDP:
+		mbuf->packet_type |= RTE_PTYPE_INNER_L3_IPV6_EXT;
+		break;
 	default:
 		mbuf->packet_type |= RTE_PTYPE_INNER_L4_MASK;
@@ -2465,12 +2479,20 @@ nfp_net_rss_hash_write(struct rte_eth_dev *dev,
 
 	if (rss_hf & ETH_RSS_IPV4)
-		cfg_rss_ctrl |= NFP_NET_CFG_RSS_IPV4 |
-				NFP_NET_CFG_RSS_IPV4_TCP |
-				NFP_NET_CFG_RSS_IPV4_UDP;
+		cfg_rss_ctrl |= NFP_NET_CFG_RSS_IPV4;
+
+	if (rss_hf & ETH_RSS_NONFRAG_IPV4_TCP)
+		cfg_rss_ctrl |= NFP_NET_CFG_RSS_IPV4_TCP;
+
+	if (rss_hf & ETH_RSS_NONFRAG_IPV4_UDP)
+		cfg_rss_ctrl |= NFP_NET_CFG_RSS_IPV4_UDP;
 
 	if (rss_hf & ETH_RSS_IPV6)
-		cfg_rss_ctrl |= NFP_NET_CFG_RSS_IPV6 |
-				NFP_NET_CFG_RSS_IPV6_TCP |
-				NFP_NET_CFG_RSS_IPV6_UDP;
+		cfg_rss_ctrl |= NFP_NET_CFG_RSS_IPV6;
+
+	if (rss_hf & ETH_RSS_NONFRAG_IPV6_TCP)
+		cfg_rss_ctrl |= NFP_NET_CFG_RSS_IPV6_TCP;
+
+	if (rss_hf & ETH_RSS_NONFRAG_IPV6_UDP)
+		cfg_rss_ctrl |= NFP_NET_CFG_RSS_IPV6_UDP;
 
 	cfg_rss_ctrl |= NFP_NET_CFG_RSS_MASK;
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.656004018 +0000
+++ 0027-net-nfp-fix-RSS.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,8 +1,10 @@
-From f14a51689894dc226f6af4ab39f7439e4384a06b Mon Sep 17 00:00:00 2001
+From 610ea29fc84c9109a7a41b127637cdf36f6c74c7 Mon Sep 17 00:00:00 2001
 From: Alejandro Lucero <alejandro.lucero@netronome.com>
 Date: Wed, 26 Sep 2018 14:45:50 +0100
 Subject: [PATCH] net/nfp: fix RSS
 
+[ upstream commit f14a51689894dc226f6af4ab39f7439e4384a06b ]
+
 Three problems are fixed in this patch:
 
  - RSS capabilities not advertised properly
@@ -10,7 +12,6 @@
  - RSS hash match reported for just some RSS types
 
 Fixes: 934e4c60fbff ("nfp: add RSS")
-Cc: stable@dpdk.org
 
 Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
 ---
@@ -18,10 +19,10 @@
  1 file changed, 29 insertions(+), 7 deletions(-)
 
 diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c
-index 170b5d611..4d6a797b0 100644
+index a588a3fe0..0649ddb9a 100644
 --- a/drivers/net/nfp/nfp_net.c
 +++ b/drivers/net/nfp/nfp_net.c
-@@ -1199,6 +1199,8 @@ nfp_net_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
+@@ -1206,6 +1206,8 @@ nfp_net_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
  	};
  
 -	dev_info->flow_type_rss_offloads = ETH_RSS_NONFRAG_IPV4_TCP |
@@ -31,7 +32,7 @@
 +					   ETH_RSS_IPV6 |
  					   ETH_RSS_NONFRAG_IPV6_TCP |
  					   ETH_RSS_NONFRAG_IPV6_UDP;
-@@ -1877,4 +1879,16 @@ nfp_net_set_hash(struct nfp_net_rxq *rxq, struct nfp_net_rx_desc *rxd,
+@@ -1884,4 +1886,16 @@ nfp_net_set_hash(struct nfp_net_rxq *rxq, struct nfp_net_rx_desc *rxd,
  		mbuf->packet_type |= RTE_PTYPE_INNER_L3_IPV6_EXT;
  		break;
 +	case NFP_NET_RSS_IPV4_TCP:
@@ -48,7 +49,7 @@
 +		break;
  	default:
  		mbuf->packet_type |= RTE_PTYPE_INNER_L4_MASK;
-@@ -2458,12 +2472,20 @@ nfp_net_rss_hash_write(struct rte_eth_dev *dev,
+@@ -2465,12 +2479,20 @@ nfp_net_rss_hash_write(struct rte_eth_dev *dev,
  
  	if (rss_hf & ETH_RSS_IPV4)
 -		cfg_rss_ctrl |= NFP_NET_CFG_RSS_IPV4 |

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

* [dpdk-stable] patch 'net/bnx2x: fix logging to include device name' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (25 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/nfp: fix RSS' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnx2x: fix to disable further interrupts' " Kevin Traynor
                   ` (45 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Rasesh Mody; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From e5497977a7de057ac6404145d9304c3651e69933 Mon Sep 17 00:00:00 2001
From: Rasesh Mody <rasesh.mody@cavium.com>
Date: Sat, 29 Sep 2018 05:42:29 +0000
Subject: [PATCH] net/bnx2x: fix logging to include device name

[ upstream commit ba7eeb035a5f442414f9dca6c12a9105a16576aa ]

Fix PMD logging scheme to include device name in the messages printed.

Fixes: 540a211084a7 ("bnx2x: driver core")

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
---
 drivers/net/bnx2x/bnx2x.c          | 754 ++++++++++++++--------------
 drivers/net/bnx2x/bnx2x.h          |  32 +-
 drivers/net/bnx2x/bnx2x_ethdev.c   |  90 ++--
 drivers/net/bnx2x/bnx2x_logs.h     |  25 +-
 drivers/net/bnx2x/bnx2x_rxtx.c     |  15 +-
 drivers/net/bnx2x/bnx2x_stats.c    |  35 +-
 drivers/net/bnx2x/bnx2x_vfpf.c     |  50 +-
 drivers/net/bnx2x/ecore_init.h     |   6 +-
 drivers/net/bnx2x/ecore_init_ops.h |   8 +-
 drivers/net/bnx2x/ecore_sp.c       | 258 +++++-----
 drivers/net/bnx2x/ecore_sp.h       |   4 +-
 drivers/net/bnx2x/elink.c          | 761 +++++++++++++++--------------
 12 files changed, 1052 insertions(+), 986 deletions(-)

diff --git a/drivers/net/bnx2x/bnx2x.c b/drivers/net/bnx2x/bnx2x.c
index 4904eaf38..93f8586b5 100644
--- a/drivers/net/bnx2x/bnx2x.c
+++ b/drivers/net/bnx2x/bnx2x.c
@@ -179,5 +179,5 @@ bnx2x_dma_alloc(struct bnx2x_softc *sc, size_t size, struct bnx2x_dma *dma,
 					RTE_MEMZONE_IOVA_CONTIG, align);
 	if (z == NULL) {
-		PMD_DRV_LOG(ERR, "DMA alloc failed for %s", msg);
+		PMD_DRV_LOG(ERR, sc, "DMA alloc failed for %s", msg);
 		return -ENOMEM;
 	}
@@ -185,5 +185,6 @@ bnx2x_dma_alloc(struct bnx2x_softc *sc, size_t size, struct bnx2x_dma *dma,
 	dma->vaddr = z->addr;
 
-	PMD_DRV_LOG(DEBUG, "%s: virt=%p phys=%" PRIx64, msg, dma->vaddr, dma->paddr);
+	PMD_DRV_LOG(DEBUG, sc,
+		    "%s: virt=%p phys=%" PRIx64, msg, dma->vaddr, dma->paddr);
 
 	return 0;
@@ -198,9 +199,9 @@ static int bnx2x_acquire_hw_lock(struct bnx2x_softc *sc, uint32_t resource)
 	int cnt;
 
-	PMD_INIT_FUNC_TRACE();
+	PMD_INIT_FUNC_TRACE(sc);
 
 	/* validate the resource is within range */
 	if (resource > HW_LOCK_MAX_RESOURCE_VALUE) {
-		PMD_DRV_LOG(NOTICE,
+		PMD_DRV_LOG(NOTICE, sc,
 			    "resource 0x%x > HW_LOCK_MAX_RESOURCE_VALUE",
 			    resource);
@@ -218,5 +219,5 @@ static int bnx2x_acquire_hw_lock(struct bnx2x_softc *sc, uint32_t resource)
 	lock_status = REG_RD(sc, hw_lock_control_reg);
 	if (lock_status & resource_bit) {
-		PMD_DRV_LOG(NOTICE,
+		PMD_DRV_LOG(NOTICE, sc,
 			    "resource in use (status 0x%x bit 0x%x)",
 			    lock_status, resource_bit);
@@ -234,5 +235,5 @@ static int bnx2x_acquire_hw_lock(struct bnx2x_softc *sc, uint32_t resource)
 	}
 
-	PMD_DRV_LOG(NOTICE, "Resource lock timeout!");
+	PMD_DRV_LOG(NOTICE, sc, "Resource lock timeout!");
 	return -1;
 }
@@ -245,9 +246,9 @@ static int bnx2x_release_hw_lock(struct bnx2x_softc *sc, uint32_t resource)
 	uint32_t hw_lock_control_reg;
 
-	PMD_INIT_FUNC_TRACE();
+	PMD_INIT_FUNC_TRACE(sc);
 
 	/* validate the resource is within range */
 	if (resource > HW_LOCK_MAX_RESOURCE_VALUE) {
-		PMD_DRV_LOG(NOTICE,
+		PMD_DRV_LOG(NOTICE, sc,
 			    "resource 0x%x > HW_LOCK_MAX_RESOURCE_VALUE",
 			    resource);
@@ -265,5 +266,5 @@ static int bnx2x_release_hw_lock(struct bnx2x_softc *sc, uint32_t resource)
 	lock_status = REG_RD(sc, hw_lock_control_reg);
 	if (!(lock_status & resource_bit)) {
-		PMD_DRV_LOG(NOTICE,
+		PMD_DRV_LOG(NOTICE, sc,
 			    "resource not in use (status 0x%x bit 0x%x)",
 			    lock_status, resource_bit);
@@ -367,5 +368,5 @@ bnx2x_issue_dmae_with_comp(struct bnx2x_softc *sc, struct dmae_command *dmae)
 		    (sc->recovery_state != BNX2X_RECOVERY_DONE &&
 		     sc->recovery_state != BNX2X_RECOVERY_NIC_LOADING)) {
-			PMD_DRV_LOG(INFO, "DMAE timeout!");
+			PMD_DRV_LOG(INFO, sc, "DMAE timeout!");
 			return DMAE_TIMEOUT;
 		}
@@ -376,5 +377,5 @@ bnx2x_issue_dmae_with_comp(struct bnx2x_softc *sc, struct dmae_command *dmae)
 
 	if (*wb_comp & DMAE_PCI_ERR_FLAG) {
-		PMD_DRV_LOG(INFO, "DMAE PCI error!");
+		PMD_DRV_LOG(INFO, sc, "DMAE PCI error!");
 		return DMAE_PCI_ERROR;
 	}
@@ -535,5 +536,5 @@ elink_cb_event_log(__rte_unused struct bnx2x_softc *sc,
 		   __rte_unused const elink_log_id_t elink_log_id, ...)
 {
-	PMD_DRV_LOG(DEBUG, "ELINK EVENT LOG (%d)", elink_log_id);
+	PMD_DRV_LOG(DEBUG, sc, "ELINK EVENT LOG (%d)", elink_log_id);
 }
 
@@ -544,5 +545,5 @@ static int bnx2x_set_spio(struct bnx2x_softc *sc, int spio, uint32_t mode)
 	/* Only 2 SPIOs are configurable */
 	if ((spio != MISC_SPIO_SPIO4) && (spio != MISC_SPIO_SPIO5)) {
-		PMD_DRV_LOG(NOTICE, "Invalid SPIO 0x%x", spio);
+		PMD_DRV_LOG(NOTICE, sc, "Invalid SPIO 0x%x", spio);
 		return -1;
 	}
@@ -594,5 +595,5 @@ static int bnx2x_gpio_read(struct bnx2x_softc *sc, int gpio_num, uint8_t port)
 
 	if (gpio_num > MISC_REGISTERS_GPIO_3) {
-		PMD_DRV_LOG(NOTICE, "Invalid GPIO %d", gpio_num);
+		PMD_DRV_LOG(NOTICE, sc, "Invalid GPIO %d", gpio_num);
 		return -1;
 	}
@@ -619,5 +620,5 @@ bnx2x_gpio_write(struct bnx2x_softc *sc, int gpio_num, uint32_t mode, uint8_t po
 
 	if (gpio_num > MISC_REGISTERS_GPIO_3) {
-		PMD_DRV_LOG(NOTICE, "Invalid GPIO %d", gpio_num);
+		PMD_DRV_LOG(NOTICE, sc, "Invalid GPIO %d", gpio_num);
 		return -1;
 	}
@@ -688,5 +689,6 @@ bnx2x_gpio_mult_write(struct bnx2x_softc *sc, uint8_t pins, uint32_t mode)
 
 	default:
-		PMD_DRV_LOG(NOTICE, "Invalid GPIO mode assignment %d", mode);
+		PMD_DRV_LOG(NOTICE, sc,
+			    "Invalid GPIO mode assignment %d", mode);
 		bnx2x_release_hw_lock(sc, HW_LOCK_RESOURCE_GPIO);
 		return -1;
@@ -714,5 +716,5 @@ bnx2x_gpio_int_write(struct bnx2x_softc *sc, int gpio_num, uint32_t mode,
 
 	if (gpio_num > MISC_REGISTERS_GPIO_3) {
-		PMD_DRV_LOG(NOTICE, "Invalid GPIO %d", gpio_num);
+		PMD_DRV_LOG(NOTICE, sc, "Invalid GPIO %d", gpio_num);
 		return -1;
 	}
@@ -791,5 +793,5 @@ elink_cb_fw_command(struct bnx2x_softc *sc, uint32_t command, uint32_t param)
 	SHMEM_WR(sc, func_mb[mb_idx].drv_mb_header, (command | seq));
 
-	PMD_DRV_LOG(DEBUG,
+	PMD_DRV_LOG(DEBUG, sc,
 		    "wrote command 0x%08x to FW MB param 0x%08x",
 		    (command | seq), param);
@@ -806,5 +808,5 @@ elink_cb_fw_command(struct bnx2x_softc *sc, uint32_t command, uint32_t param)
 	} else {
 		/* Ruh-roh! */
-		PMD_DRV_LOG(NOTICE, "FW failed to respond!");
+		PMD_DRV_LOG(NOTICE, sc, "FW failed to respond!");
 		rc = 0;
 	}
@@ -1024,10 +1026,10 @@ bnx2x_sp_post(struct bnx2x_softc *sc, int command, int cid, uint32_t data_hi,
 	if (common) {
 		if (!atomic_load_acq_long(&sc->eq_spq_left)) {
-			PMD_DRV_LOG(INFO, "EQ ring is full!");
+			PMD_DRV_LOG(INFO, sc, "EQ ring is full!");
 			return -1;
 		}
 	} else {
 		if (!atomic_load_acq_long(&sc->cq_spq_left)) {
-			PMD_DRV_LOG(INFO, "SPQ ring is full!");
+			PMD_DRV_LOG(INFO, sc, "SPQ ring is full!");
 			return -1;
 		}
@@ -1062,5 +1064,5 @@ bnx2x_sp_post(struct bnx2x_softc *sc, int command, int cid, uint32_t data_hi,
 	}
 
-	PMD_DRV_LOG(DEBUG,
+	PMD_DRV_LOG(DEBUG, sc,
 		    "SPQE[%x] (%x:%x) (cmd, common?) (%d,%d) hw_cid %x"
 		    "data (%x:%x) type(0x%x) left (CQ, EQ) (%lx,%lx)",
@@ -1133,5 +1135,5 @@ bnx2x_sp_event(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp,
 	struct ecore_queue_sp_obj *q_obj = &BNX2X_SP_OBJ(sc, fp).q_obj;
 
-	PMD_DRV_LOG(DEBUG,
+	PMD_DRV_LOG(DEBUG, sc,
 		    "fp=%d cid=%d got ramrod #%d state is %x type is %d",
 		    fp->index, cid, command, sc->state,
@@ -1140,35 +1142,36 @@ bnx2x_sp_event(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp,
 	switch (command) {
 	case (RAMROD_CMD_ID_ETH_CLIENT_UPDATE):
-		PMD_DRV_LOG(DEBUG, "got UPDATE ramrod. CID %d", cid);
+		PMD_DRV_LOG(DEBUG, sc, "got UPDATE ramrod. CID %d", cid);
 		drv_cmd = ECORE_Q_CMD_UPDATE;
 		break;
 
 	case (RAMROD_CMD_ID_ETH_CLIENT_SETUP):
-		PMD_DRV_LOG(DEBUG, "got MULTI[%d] setup ramrod", cid);
+		PMD_DRV_LOG(DEBUG, sc, "got MULTI[%d] setup ramrod", cid);
 		drv_cmd = ECORE_Q_CMD_SETUP;
 		break;
 
 	case (RAMROD_CMD_ID_ETH_TX_QUEUE_SETUP):
-		PMD_DRV_LOG(DEBUG, "got MULTI[%d] tx-only setup ramrod", cid);
+		PMD_DRV_LOG(DEBUG, sc,
+			    "got MULTI[%d] tx-only setup ramrod", cid);
 		drv_cmd = ECORE_Q_CMD_SETUP_TX_ONLY;
 		break;
 
 	case (RAMROD_CMD_ID_ETH_HALT):
-		PMD_DRV_LOG(DEBUG, "got MULTI[%d] halt ramrod", cid);
+		PMD_DRV_LOG(DEBUG, sc, "got MULTI[%d] halt ramrod", cid);
 		drv_cmd = ECORE_Q_CMD_HALT;
 		break;
 
 	case (RAMROD_CMD_ID_ETH_TERMINATE):
-		PMD_DRV_LOG(DEBUG, "got MULTI[%d] teminate ramrod", cid);
+		PMD_DRV_LOG(DEBUG, sc, "got MULTI[%d] teminate ramrod", cid);
 		drv_cmd = ECORE_Q_CMD_TERMINATE;
 		break;
 
 	case (RAMROD_CMD_ID_ETH_EMPTY):
-		PMD_DRV_LOG(DEBUG, "got MULTI[%d] empty ramrod", cid);
+		PMD_DRV_LOG(DEBUG, sc, "got MULTI[%d] empty ramrod", cid);
 		drv_cmd = ECORE_Q_CMD_EMPTY;
 		break;
 
 	default:
-		PMD_DRV_LOG(DEBUG,
+		PMD_DRV_LOG(DEBUG, sc,
 			    "ERROR: unexpected MC reply (%d)"
 			    "on fp[%d]", command, fp->index);
@@ -1192,5 +1195,5 @@ bnx2x_sp_event(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp,
 	atomic_add_acq_long(&sc->cq_spq_left, 1);
 
-	PMD_DRV_LOG(DEBUG, "sc->cq_spq_left 0x%lx",
+	PMD_DRV_LOG(DEBUG, sc, "sc->cq_spq_left 0x%lx",
 		    atomic_load_acq_long(&sc->cq_spq_left));
 }
@@ -1388,5 +1391,5 @@ bnx2x_del_all_macs(struct bnx2x_softc *sc, struct ecore_vlan_mac_obj *mac_obj,
 	rc = mac_obj->delete_all(sc, mac_obj, &vlan_mac_flags, &ramrod_flags);
 	if (rc < 0)
-		PMD_DRV_LOG(ERR, "Failed to delete MACs (%d)", rc);
+		PMD_DRV_LOG(ERR, sc, "Failed to delete MACs (%d)", rc);
 
 	return rc;
@@ -1539,5 +1542,5 @@ static int bnx2x_nic_load_no_mcp(struct bnx2x_softc *sc)
 	int port = SC_PORT(sc);
 
-	PMD_DRV_LOG(INFO, "NO MCP - load counts[%d]      %d, %d, %d",
+	PMD_DRV_LOG(INFO, sc, "NO MCP - load counts[%d]      %d, %d, %d",
 		    path, load_count[path][0], load_count[path][1],
 		    load_count[path][2]);
@@ -1545,5 +1548,5 @@ static int bnx2x_nic_load_no_mcp(struct bnx2x_softc *sc)
 	load_count[path][0]++;
 	load_count[path][1 + port]++;
-	PMD_DRV_LOG(INFO, "NO MCP - new load counts[%d]  %d, %d, %d",
+	PMD_DRV_LOG(INFO, sc, "NO MCP - new load counts[%d]  %d, %d, %d",
 		    path, load_count[path][0], load_count[path][1],
 		    load_count[path][2]);
@@ -1562,10 +1565,10 @@ static int bnx2x_nic_unload_no_mcp(struct bnx2x_softc *sc)
 	int path = SC_PATH(sc);
 
-	PMD_DRV_LOG(INFO, "NO MCP - load counts[%d]      %d, %d, %d",
+	PMD_DRV_LOG(INFO, sc, "NO MCP - load counts[%d]      %d, %d, %d",
 		    path, load_count[path][0], load_count[path][1],
 		    load_count[path][2]);
 	load_count[path][0]--;
 	load_count[path][1 + port]--;
-	PMD_DRV_LOG(INFO, "NO MCP - new load counts[%d]  %d, %d, %d",
+	PMD_DRV_LOG(INFO, sc, "NO MCP - new load counts[%d]  %d, %d, %d",
 		    path, load_count[path][0], load_count[path][1],
 		    load_count[path][2]);
@@ -1647,5 +1650,5 @@ static int bnx2x_func_wait_started(struct bnx2x_softc *sc)
 		struct ecore_func_state_params func_params = { NULL };
 
-		PMD_DRV_LOG(NOTICE, "Unexpected function state! "
+		PMD_DRV_LOG(NOTICE, sc, "Unexpected function state! "
 			    "Forcing STARTED-->TX_STOPPED-->STARTED");
 
@@ -1671,5 +1674,5 @@ static int bnx2x_stop_queue(struct bnx2x_softc *sc, int index)
 	int rc;
 
-	PMD_DRV_LOG(DEBUG, "stopping queue %d cid %d", index, fp->index);
+	PMD_DRV_LOG(DEBUG, sc, "stopping queue %d cid %d", index, fp->index);
 
 	q_params.q_obj = &sc->sp_objs[fp->index].q_obj;
@@ -1722,5 +1725,5 @@ static uint8_t bnx2x_wait_sp_comp(struct bnx2x_softc *sc, unsigned long mask)
 	tmp = atomic_load_acq_long(&sc->sp_state);
 	if (tmp & mask) {
-		PMD_DRV_LOG(INFO, "Filtering completion timed out: "
+		PMD_DRV_LOG(INFO, sc, "Filtering completion timed out: "
 			    "sp_state 0x%lx, mask 0x%lx", tmp, mask);
 		return FALSE;
@@ -1748,5 +1751,5 @@ static int bnx2x_func_stop(struct bnx2x_softc *sc)
 	rc = ecore_func_state_change(sc, &func_params);
 	if (rc) {
-		PMD_DRV_LOG(NOTICE, "FUNC_STOP ramrod failed. "
+		PMD_DRV_LOG(NOTICE, sc, "FUNC_STOP ramrod failed. "
 			    "Running a dry transaction");
 		bnx2x_set_bit(RAMROD_DRV_CLR_ONLY, &func_params.ramrod_flags);
@@ -1797,5 +1800,6 @@ bnx2x_chip_cleanup(struct bnx2x_softc *sc, uint32_t unload_mode, uint8_t keep_li
 			      FALSE);
 	if (rc < 0) {
-		PMD_DRV_LOG(NOTICE, "Failed to delete all ETH MACs (%d)", rc);
+		PMD_DRV_LOG(NOTICE, sc,
+			    "Failed to delete all ETH MACs (%d)", rc);
 	}
 
@@ -1804,5 +1808,6 @@ bnx2x_chip_cleanup(struct bnx2x_softc *sc, uint32_t unload_mode, uint8_t keep_li
 			      TRUE);
 	if (rc < 0) {
-		PMD_DRV_LOG(NOTICE, "Failed to delete UC MACs list (%d)", rc);
+		PMD_DRV_LOG(NOTICE, sc,
+			    "Failed to delete UC MACs list (%d)", rc);
 	}
 
@@ -1827,5 +1832,5 @@ bnx2x_chip_cleanup(struct bnx2x_softc *sc, uint32_t unload_mode, uint8_t keep_li
 	rc = ecore_config_mcast(sc, &rparam, ECORE_MCAST_CMD_DEL);
 	if (rc < 0) {
-		PMD_DRV_LOG(NOTICE,
+		PMD_DRV_LOG(NOTICE, sc,
 			    "Failed to send DEL MCAST command (%d)", rc);
 	}
@@ -1844,5 +1849,5 @@ bnx2x_chip_cleanup(struct bnx2x_softc *sc, uint32_t unload_mode, uint8_t keep_li
 	rc = bnx2x_func_wait_started(sc);
 	if (rc) {
-		PMD_DRV_LOG(NOTICE, "bnx2x_func_wait_started failed");
+		PMD_DRV_LOG(NOTICE, sc, "bnx2x_func_wait_started failed");
 	}
 
@@ -1862,5 +1867,5 @@ bnx2x_chip_cleanup(struct bnx2x_softc *sc, uint32_t unload_mode, uint8_t keep_li
 	 */
 	if (!bnx2x_wait_sp_comp(sc, ~0x0UL)) {
-		PMD_DRV_LOG(NOTICE, "Common slow path ramrods got stuck!");
+		PMD_DRV_LOG(NOTICE, sc, "Common slow path ramrods got stuck!");
 	}
 
@@ -1869,5 +1874,5 @@ unload_error:
 	rc = bnx2x_func_stop(sc);
 	if (rc) {
-		PMD_DRV_LOG(NOTICE, "Function stop failed!");
+		PMD_DRV_LOG(NOTICE, sc, "Function stop failed!");
 	}
 
@@ -1878,5 +1883,5 @@ unload_error:
 	rc = bnx2x_reset_hw(sc, reset_code);
 	if (rc) {
-		PMD_DRV_LOG(NOTICE, "Hardware reset failed");
+		PMD_DRV_LOG(NOTICE, sc, "Hardware reset failed");
 	}
 
@@ -1889,5 +1894,5 @@ static void bnx2x_disable_close_the_gate(struct bnx2x_softc *sc)
 	uint32_t val;
 
-	PMD_DRV_LOG(DEBUG, "Disabling 'close the gates'");
+	PMD_DRV_LOG(DEBUG, sc, "Disabling 'close the gates'");
 
 	val = REG_RD(sc, MISC_REG_AEU_GENERAL_MASK);
@@ -1920,5 +1925,5 @@ static void bnx2x_squeeze_objects(struct bnx2x_softc *sc)
 				 &ramrod_flags);
 	if (rc != 0) {
-		PMD_DRV_LOG(NOTICE, "Failed to clean ETH MACs (%d)", rc);
+		PMD_DRV_LOG(NOTICE, sc, "Failed to clean ETH MACs (%d)", rc);
 	}
 
@@ -1928,5 +1933,6 @@ static void bnx2x_squeeze_objects(struct bnx2x_softc *sc)
 	rc = mac_obj->delete_all(sc, mac_obj, &vlan_mac_flags, &ramrod_flags);
 	if (rc != 0) {
-		PMD_DRV_LOG(NOTICE, "Failed to clean UC list MACs (%d)", rc);
+		PMD_DRV_LOG(NOTICE, sc,
+			    "Failed to clean UC list MACs (%d)", rc);
 	}
 
@@ -1939,5 +1945,5 @@ static void bnx2x_squeeze_objects(struct bnx2x_softc *sc)
 	rc = ecore_config_mcast(sc, &rparam, ECORE_MCAST_CMD_DEL);
 	if (rc < 0) {
-		PMD_DRV_LOG(NOTICE,
+		PMD_DRV_LOG(NOTICE, sc,
 			    "Failed to send DEL MCAST command (%d)", rc);
 	}
@@ -1948,5 +1954,5 @@ static void bnx2x_squeeze_objects(struct bnx2x_softc *sc)
 	while (rc != 0) {
 		if (rc < 0) {
-			PMD_DRV_LOG(NOTICE,
+			PMD_DRV_LOG(NOTICE, sc,
 				    "Failed to clean MCAST object (%d)", rc);
 			return;
@@ -1965,5 +1971,5 @@ bnx2x_nic_unload(struct bnx2x_softc *sc, uint32_t unload_mode, uint8_t keep_link
 	uint32_t val;
 
-	PMD_DRV_LOG(DEBUG, "Starting NIC unload...");
+	PMD_DRV_LOG(DEBUG, sc, "Starting NIC unload...");
 
 	/* mark driver as unloaded in shmem2 */
@@ -1989,5 +1995,5 @@ bnx2x_nic_unload(struct bnx2x_softc *sc, uint32_t unload_mode, uint8_t keep_link
 		mb();
 
-		PMD_DRV_LOG(NOTICE, "Can't unload in closed or error state");
+		PMD_DRV_LOG(NOTICE, sc, "Can't unload in closed or error state");
 		return -1;
 	}
@@ -2094,5 +2100,5 @@ bnx2x_nic_unload(struct bnx2x_softc *sc, uint32_t unload_mode, uint8_t keep_link
 	}
 
-	PMD_DRV_LOG(DEBUG, "Ended NIC unload");
+	PMD_DRV_LOG(DEBUG, sc, "Ended NIC unload");
 
 	return 0;
@@ -2242,5 +2248,5 @@ static void bnx2x_ilt_set_info(struct bnx2x_softc *sc)
 	uint16_t line = 0;
 
-	PMD_INIT_FUNC_TRACE();
+	PMD_INIT_FUNC_TRACE(sc);
 
 	ilt->start_line = FUNC_ILT_BASE(SC_FUNC(sc));
@@ -2396,5 +2402,5 @@ static int bnx2x_alloc_mem(struct bnx2x_softc *sc)
 
 	if (ecore_ilt_mem_op(sc, ILT_MEMOP_ALLOC)) {
-		PMD_DRV_LOG(NOTICE, "ecore_ilt_mem_op ILT_MEMOP_ALLOC failed");
+		PMD_DRV_LOG(NOTICE, sc, "ecore_ilt_mem_op ILT_MEMOP_ALLOC failed");
 		bnx2x_free_mem(sc);
 		return -1;
@@ -2599,5 +2605,5 @@ static void bnx2x_set_pf_load(struct bnx2x_softc *sc)
 	bnx2x_acquire_hw_lock(sc, HW_LOCK_RESOURCE_RECOVERY_REG);
 
-	PMD_INIT_FUNC_TRACE();
+	PMD_INIT_FUNC_TRACE(sc);
 
 	val = REG_RD(sc, BNX2X_RECOVERY_GLOB_REG);
@@ -2652,5 +2658,5 @@ static uint8_t bnx2x_clear_pf_load(struct bnx2x_softc *sc)
 static int bnx2x_nic_load_request(struct bnx2x_softc *sc, uint32_t * load_code)
 {
-	PMD_INIT_FUNC_TRACE();
+	PMD_INIT_FUNC_TRACE(sc);
 
 	/* init fw_seq */
@@ -2659,5 +2665,5 @@ static int bnx2x_nic_load_request(struct bnx2x_softc *sc, uint32_t * load_code)
 	     DRV_MSG_SEQ_NUMBER_MASK);
 
-	PMD_DRV_LOG(DEBUG, "initial fw_seq 0x%04x", sc->fw_seq);
+	PMD_DRV_LOG(DEBUG, sc, "initial fw_seq 0x%04x", sc->fw_seq);
 
 #ifdef BNX2X_PULSE
@@ -2678,5 +2684,5 @@ static int bnx2x_nic_load_request(struct bnx2x_softc *sc, uint32_t * load_code)
 	/* if the MCP fails to respond we must abort */
 	if (!(*load_code)) {
-		PMD_DRV_LOG(NOTICE, "MCP response failure!");
+		PMD_DRV_LOG(NOTICE, sc, "MCP response failure!");
 		return -1;
 	}
@@ -2684,5 +2690,5 @@ static int bnx2x_nic_load_request(struct bnx2x_softc *sc, uint32_t * load_code)
 	/* if MCP refused then must abort */
 	if ((*load_code) == FW_MSG_CODE_DRV_LOAD_REFUSED) {
-		PMD_DRV_LOG(NOTICE, "MCP refused load request");
+		PMD_DRV_LOG(NOTICE, sc, "MCP refused load request");
 		return -1;
 	}
@@ -2711,10 +2717,10 @@ static int bnx2x_nic_load_analyze_req(struct bnx2x_softc *sc, uint32_t load_code
 		/* read loaded FW from chip */
 		loaded_fw = REG_RD(sc, XSEM_REG_PRAM);
-		PMD_DRV_LOG(DEBUG, "loaded FW 0x%08x / my FW 0x%08x",
+		PMD_DRV_LOG(DEBUG, sc, "loaded FW 0x%08x / my FW 0x%08x",
 			    loaded_fw, my_fw);
 
 		/* abort nic load if version mismatch */
 		if (my_fw != loaded_fw) {
-			PMD_DRV_LOG(NOTICE,
+			PMD_DRV_LOG(NOTICE, sc,
 				    "FW 0x%08x already loaded (mine is 0x%08x)",
 				    loaded_fw, my_fw);
@@ -2731,5 +2737,5 @@ static void bnx2x_nic_load_pmf(struct bnx2x_softc *sc, uint32_t load_code)
 	uint32_t ncsi_oem_data_addr;
 
-	PMD_INIT_FUNC_TRACE();
+	PMD_INIT_FUNC_TRACE(sc);
 
 	if ((load_code == FW_MSG_CODE_DRV_LOAD_COMMON) ||
@@ -2746,5 +2752,5 @@ static void bnx2x_nic_load_pmf(struct bnx2x_softc *sc, uint32_t load_code)
 	}
 
-	PMD_DRV_LOG(DEBUG, "pmf %d", sc->port.pmf);
+	PMD_DRV_LOG(DEBUG, sc, "pmf %d", sc->port.pmf);
 
 	if (load_code == FW_MSG_CODE_DRV_LOAD_COMMON_CHIP) {
@@ -2789,8 +2795,8 @@ static void bnx2x_read_mf_cfg(struct bnx2x_softc *sc)
 	if (sc->devinfo.mf_info.mf_config[SC_VN(sc)] &
 	    FUNC_MF_CFG_FUNC_DISABLED) {
-		PMD_DRV_LOG(DEBUG, "mf_cfg function disabled");
+		PMD_DRV_LOG(DEBUG, sc, "mf_cfg function disabled");
 		sc->flags |= BNX2X_MF_FUNC_DIS;
 	} else {
-		PMD_DRV_LOG(DEBUG, "mf_cfg function enabled");
+		PMD_DRV_LOG(DEBUG, sc, "mf_cfg function enabled");
 		sc->flags &= ~BNX2X_MF_FUNC_DIS;
 	}
@@ -2813,5 +2819,5 @@ static int bnx2x_acquire_alr(struct bnx2x_softc *sc)
 
 	if (!(val & (1L << 31))) {
-		PMD_DRV_LOG(NOTICE, "Cannot acquire MCP access lock register");
+		PMD_DRV_LOG(NOTICE, sc, "Cannot acquire MCP access lock register");
 		return -1;
 	}
@@ -2841,5 +2847,5 @@ static void bnx2x_fan_failure(struct bnx2x_softc *sc)
 
 	/* log the failure */
-	PMD_DRV_LOG(INFO,
+	PMD_DRV_LOG(INFO, sc,
 		    "Fan Failure has caused the driver to shutdown "
 		    "the card to prevent permanent damage. "
@@ -2919,5 +2925,5 @@ static void bnx2x_attn_int_asserted(struct bnx2x_softc *sc, uint32_t asserted)
 
 	if (sc->attn_state & asserted) {
-		PMD_DRV_LOG(ERR, "IGU ERROR attn=0x%08x", asserted);
+		PMD_DRV_LOG(ERR, sc, "IGU ERROR attn=0x%08x", asserted);
 	}
 
@@ -2951,43 +2957,43 @@ static void bnx2x_attn_int_asserted(struct bnx2x_softc *sc, uint32_t asserted)
 
 		if (asserted & ATTN_SW_TIMER_4_FUNC) {
-			PMD_DRV_LOG(DEBUG, "ATTN_SW_TIMER_4_FUNC!");
+			PMD_DRV_LOG(DEBUG, sc, "ATTN_SW_TIMER_4_FUNC!");
 		}
 
 		if (asserted & GPIO_2_FUNC) {
-			PMD_DRV_LOG(DEBUG, "GPIO_2_FUNC!");
+			PMD_DRV_LOG(DEBUG, sc, "GPIO_2_FUNC!");
 		}
 
 		if (asserted & GPIO_3_FUNC) {
-			PMD_DRV_LOG(DEBUG, "GPIO_3_FUNC!");
+			PMD_DRV_LOG(DEBUG, sc, "GPIO_3_FUNC!");
 		}
 
 		if (asserted & GPIO_4_FUNC) {
-			PMD_DRV_LOG(DEBUG, "GPIO_4_FUNC!");
+			PMD_DRV_LOG(DEBUG, sc, "GPIO_4_FUNC!");
 		}
 
 		if (port == 0) {
 			if (asserted & ATTN_GENERAL_ATTN_1) {
-				PMD_DRV_LOG(DEBUG, "ATTN_GENERAL_ATTN_1!");
+				PMD_DRV_LOG(DEBUG, sc, "ATTN_GENERAL_ATTN_1!");
 				REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_1, 0x0);
 			}
 			if (asserted & ATTN_GENERAL_ATTN_2) {
-				PMD_DRV_LOG(DEBUG, "ATTN_GENERAL_ATTN_2!");
+				PMD_DRV_LOG(DEBUG, sc, "ATTN_GENERAL_ATTN_2!");
 				REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_2, 0x0);
 			}
 			if (asserted & ATTN_GENERAL_ATTN_3) {
-				PMD_DRV_LOG(DEBUG, "ATTN_GENERAL_ATTN_3!");
+				PMD_DRV_LOG(DEBUG, sc, "ATTN_GENERAL_ATTN_3!");
 				REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_3, 0x0);
 			}
 		} else {
 			if (asserted & ATTN_GENERAL_ATTN_4) {
-				PMD_DRV_LOG(DEBUG, "ATTN_GENERAL_ATTN_4!");
+				PMD_DRV_LOG(DEBUG, sc, "ATTN_GENERAL_ATTN_4!");
 				REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_4, 0x0);
 			}
 			if (asserted & ATTN_GENERAL_ATTN_5) {
-				PMD_DRV_LOG(DEBUG, "ATTN_GENERAL_ATTN_5!");
+				PMD_DRV_LOG(DEBUG, sc, "ATTN_GENERAL_ATTN_5!");
 				REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_5, 0x0);
 			}
 			if (asserted & ATTN_GENERAL_ATTN_6) {
-				PMD_DRV_LOG(DEBUG, "ATTN_GENERAL_ATTN_6!");
+				PMD_DRV_LOG(DEBUG, sc, "ATTN_GENERAL_ATTN_6!");
 				REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_6, 0x0);
 			}
@@ -3003,5 +3009,5 @@ static void bnx2x_attn_int_asserted(struct bnx2x_softc *sc, uint32_t asserted)
 	}
 
-	PMD_DRV_LOG(DEBUG, "about to mask 0x%08x at %s addr 0x%08x",
+	PMD_DRV_LOG(DEBUG, sc, "about to mask 0x%08x at %s addr 0x%08x",
 		    asserted,
 		    (sc->devinfo.int_block == INT_BLOCK_HC) ? "HC" : "IGU",
@@ -3025,5 +3031,5 @@ static void bnx2x_attn_int_asserted(struct bnx2x_softc *sc, uint32_t asserted)
 
 			if (!igu_acked) {
-				PMD_DRV_LOG(ERR,
+				PMD_DRV_LOG(ERR, sc,
 					    "Failed to verify IGU ack on time");
 			}
@@ -3041,5 +3047,5 @@ bnx2x_print_next_block(__rte_unused struct bnx2x_softc *sc, __rte_unused int idx
 		     __rte_unused const char *blk)
 {
-	PMD_DRV_LOG(INFO, "%s%s", idx ? ", " : "", blk);
+	PMD_DRV_LOG(INFO, sc, "%s%s", idx ? ", " : "", blk);
 }
 
@@ -3349,5 +3355,5 @@ bnx2x_parity_attn(struct bnx2x_softc *sc, uint8_t * global, uint8_t print,
 	    (sig[3] & HW_PRTY_ASSERT_SET_3) ||
 	    (sig[4] & HW_PRTY_ASSERT_SET_4)) {
-		PMD_DRV_LOG(ERR,
+		PMD_DRV_LOG(ERR, sc,
 			    "Parity error: HW block parity attention:"
 			    "[0]:0x%08x [1]:0x%08x [2]:0x%08x [3]:0x%08x [4]:0x%08x",
@@ -3359,5 +3365,5 @@ bnx2x_parity_attn(struct bnx2x_softc *sc, uint8_t * global, uint8_t print,
 
 		if (print)
-			PMD_DRV_LOG(INFO, "Parity errors detected in blocks: ");
+			PMD_DRV_LOG(INFO, sc, "Parity errors detected in blocks: ");
 
 		par_num =
@@ -3383,5 +3389,5 @@ bnx2x_parity_attn(struct bnx2x_softc *sc, uint8_t * global, uint8_t print,
 
 		if (print)
-			PMD_DRV_LOG(INFO, "");
+			PMD_DRV_LOG(INFO, sc, "");
 
 		return TRUE;
@@ -3415,33 +3421,33 @@ static void bnx2x_attn_int_deasserted4(struct bnx2x_softc *sc, uint32_t attn)
 	if (attn & AEU_INPUTS_ATTN_BITS_PGLUE_HW_INTERRUPT) {
 		val = REG_RD(sc, PGLUE_B_REG_PGLUE_B_INT_STS_CLR);
-		PMD_DRV_LOG(INFO, "ERROR: PGLUE hw attention 0x%08x", val);
+		PMD_DRV_LOG(INFO, sc, "ERROR: PGLUE hw attention 0x%08x", val);
 		if (val & PGLUE_B_PGLUE_B_INT_STS_REG_ADDRESS_ERROR)
-			PMD_DRV_LOG(INFO,
+			PMD_DRV_LOG(INFO, sc,
 				    "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_ADDRESS_ERROR");
 		if (val & PGLUE_B_PGLUE_B_INT_STS_REG_INCORRECT_RCV_BEHAVIOR)
-			PMD_DRV_LOG(INFO,
+			PMD_DRV_LOG(INFO, sc,
 				    "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_INCORRECT_RCV_BEHAVIOR");
 		if (val & PGLUE_B_PGLUE_B_INT_STS_REG_WAS_ERROR_ATTN)
-			PMD_DRV_LOG(INFO,
+			PMD_DRV_LOG(INFO, sc,
 				    "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_WAS_ERROR_ATTN");
 		if (val & PGLUE_B_PGLUE_B_INT_STS_REG_VF_LENGTH_VIOLATION_ATTN)
-			PMD_DRV_LOG(INFO,
+			PMD_DRV_LOG(INFO, sc,
 				    "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_VF_LENGTH_VIOLATION_ATTN");
 		if (val &
 		    PGLUE_B_PGLUE_B_INT_STS_REG_VF_GRC_SPACE_VIOLATION_ATTN)
-			PMD_DRV_LOG(INFO,
+			PMD_DRV_LOG(INFO, sc,
 				    "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_VF_GRC_SPACE_VIOLATION_ATTN");
 		if (val &
 		    PGLUE_B_PGLUE_B_INT_STS_REG_VF_MSIX_BAR_VIOLATION_ATTN)
-			PMD_DRV_LOG(INFO,
+			PMD_DRV_LOG(INFO, sc,
 				    "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_VF_MSIX_BAR_VIOLATION_ATTN");
 		if (val & PGLUE_B_PGLUE_B_INT_STS_REG_TCPL_ERROR_ATTN)
-			PMD_DRV_LOG(INFO,
+			PMD_DRV_LOG(INFO, sc,
 				    "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_TCPL_ERROR_ATTN");
 		if (val & PGLUE_B_PGLUE_B_INT_STS_REG_TCPL_IN_TWO_RCBS_ATTN)
-			PMD_DRV_LOG(INFO,
+			PMD_DRV_LOG(INFO, sc,
 				    "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_TCPL_IN_TWO_RCBS_ATTN");
 		if (val & PGLUE_B_PGLUE_B_INT_STS_REG_CSSNOOP_FIFO_OVERFLOW)
-			PMD_DRV_LOG(INFO,
+			PMD_DRV_LOG(INFO, sc,
 				    "ERROR: PGLUE_B_PGLUE_B_INT_STS_REG_CSSNOOP_FIFO_OVERFLOW");
 	}
@@ -3449,22 +3455,22 @@ static void bnx2x_attn_int_deasserted4(struct bnx2x_softc *sc, uint32_t attn)
 	if (attn & AEU_INPUTS_ATTN_BITS_ATC_HW_INTERRUPT) {
 		val = REG_RD(sc, ATC_REG_ATC_INT_STS_CLR);
-		PMD_DRV_LOG(INFO, "ERROR: ATC hw attention 0x%08x", val);
+		PMD_DRV_LOG(INFO, sc, "ERROR: ATC hw attention 0x%08x", val);
 		if (val & ATC_ATC_INT_STS_REG_ADDRESS_ERROR)
-			PMD_DRV_LOG(INFO,
+			PMD_DRV_LOG(INFO, sc,
 				    "ERROR: ATC_ATC_INT_STS_REG_ADDRESS_ERROR");
 		if (val & ATC_ATC_INT_STS_REG_ATC_TCPL_TO_NOT_PEND)
-			PMD_DRV_LOG(INFO,
+			PMD_DRV_LOG(INFO, sc,
 				    "ERROR: ATC_ATC_INT_STS_REG_ATC_TCPL_TO_NOT_PEND");
 		if (val & ATC_ATC_INT_STS_REG_ATC_GPA_MULTIPLE_HITS)
-			PMD_DRV_LOG(INFO,
+			PMD_DRV_LOG(INFO, sc,
 				    "ERROR: ATC_ATC_INT_STS_REG_ATC_GPA_MULTIPLE_HITS");
 		if (val & ATC_ATC_INT_STS_REG_ATC_RCPL_TO_EMPTY_CNT)
-			PMD_DRV_LOG(INFO,
+			PMD_DRV_LOG(INFO, sc,
 				    "ERROR: ATC_ATC_INT_STS_REG_ATC_RCPL_TO_EMPTY_CNT");
 		if (val & ATC_ATC_INT_STS_REG_ATC_TCPL_ERROR)
-			PMD_DRV_LOG(INFO,
+			PMD_DRV_LOG(INFO, sc,
 				    "ERROR: ATC_ATC_INT_STS_REG_ATC_TCPL_ERROR");
 		if (val & ATC_ATC_INT_STS_REG_ATC_IREQ_LESS_THAN_STU)
-			PMD_DRV_LOG(INFO,
+			PMD_DRV_LOG(INFO, sc,
 				    "ERROR: ATC_ATC_INT_STS_REG_ATC_IREQ_LESS_THAN_STU");
 	}
@@ -3472,5 +3478,5 @@ static void bnx2x_attn_int_deasserted4(struct bnx2x_softc *sc, uint32_t attn)
 	if (attn & (AEU_INPUTS_ATTN_BITS_PGLUE_PARITY_ERROR |
 		    AEU_INPUTS_ATTN_BITS_ATC_PARITY_ERROR)) {
-		PMD_DRV_LOG(INFO,
+		PMD_DRV_LOG(INFO, sc,
 			    "ERROR: FATAL parity attention set4 0x%08x",
 			    (uint32_t) (attn &
@@ -3595,9 +3601,9 @@ static void bnx2x_dcc_event(struct bnx2x_softc *sc, uint32_t dcc_event)
 		if (sc->devinfo.
 		    mf_info.mf_config[SC_VN(sc)] & FUNC_MF_CFG_FUNC_DISABLED) {
-			PMD_DRV_LOG(DEBUG, "mf_cfg function disabled");
+			PMD_DRV_LOG(DEBUG, sc, "mf_cfg function disabled");
 			sc->flags |= BNX2X_MF_FUNC_DIS;
 			bnx2x_e1h_disable(sc);
 		} else {
-			PMD_DRV_LOG(DEBUG, "mf_cfg function enabled");
+			PMD_DRV_LOG(DEBUG, sc, "mf_cfg function enabled");
 			sc->flags &= ~BNX2X_MF_FUNC_DIS;
 			bnx2x_e1h_enable(sc);
@@ -3654,5 +3660,5 @@ static int bnx2x_mc_assert(struct bnx2x_softc *sc)
 	    REG_RD8(sc, BAR_XSTRORM_INTMEM + XSTORM_ASSERT_LIST_INDEX_OFFSET);
 	if (last_idx)
-		PMD_DRV_LOG(ERR, "XSTORM_ASSERT_LIST_INDEX 0x%x", last_idx);
+		PMD_DRV_LOG(ERR, sc, "XSTORM_ASSERT_LIST_INDEX 0x%x", last_idx);
 
 	/* print the asserts */
@@ -3676,5 +3682,5 @@ static int bnx2x_mc_assert(struct bnx2x_softc *sc)
 
 		if (row0 != COMMON_ASM_INVALID_ASSERT_OPCODE) {
-			PMD_DRV_LOG(ERR,
+			PMD_DRV_LOG(ERR, sc,
 				    "XSTORM_ASSERT_INDEX 0x%x = 0x%08x 0x%08x 0x%08x 0x%08x",
 				    i, row3, row2, row1, row0);
@@ -3689,5 +3695,5 @@ static int bnx2x_mc_assert(struct bnx2x_softc *sc)
 	    REG_RD8(sc, BAR_TSTRORM_INTMEM + TSTORM_ASSERT_LIST_INDEX_OFFSET);
 	if (last_idx) {
-		PMD_DRV_LOG(ERR, "TSTORM_ASSERT_LIST_INDEX 0x%x", last_idx);
+		PMD_DRV_LOG(ERR, sc, "TSTORM_ASSERT_LIST_INDEX 0x%x", last_idx);
 	}
 
@@ -3712,5 +3718,5 @@ static int bnx2x_mc_assert(struct bnx2x_softc *sc)
 
 		if (row0 != COMMON_ASM_INVALID_ASSERT_OPCODE) {
-			PMD_DRV_LOG(ERR,
+			PMD_DRV_LOG(ERR, sc,
 				    "TSTORM_ASSERT_INDEX 0x%x = 0x%08x 0x%08x 0x%08x 0x%08x",
 				    i, row3, row2, row1, row0);
@@ -3725,5 +3731,5 @@ static int bnx2x_mc_assert(struct bnx2x_softc *sc)
 	    REG_RD8(sc, BAR_CSTRORM_INTMEM + CSTORM_ASSERT_LIST_INDEX_OFFSET);
 	if (last_idx) {
-		PMD_DRV_LOG(ERR, "CSTORM_ASSERT_LIST_INDEX 0x%x", last_idx);
+		PMD_DRV_LOG(ERR, sc, "CSTORM_ASSERT_LIST_INDEX 0x%x", last_idx);
 	}
 
@@ -3748,5 +3754,5 @@ static int bnx2x_mc_assert(struct bnx2x_softc *sc)
 
 		if (row0 != COMMON_ASM_INVALID_ASSERT_OPCODE) {
-			PMD_DRV_LOG(ERR,
+			PMD_DRV_LOG(ERR, sc,
 				    "CSTORM_ASSERT_INDEX 0x%x = 0x%08x 0x%08x 0x%08x 0x%08x",
 				    i, row3, row2, row1, row0);
@@ -3761,5 +3767,5 @@ static int bnx2x_mc_assert(struct bnx2x_softc *sc)
 	    REG_RD8(sc, BAR_USTRORM_INTMEM + USTORM_ASSERT_LIST_INDEX_OFFSET);
 	if (last_idx) {
-		PMD_DRV_LOG(ERR, "USTORM_ASSERT_LIST_INDEX 0x%x", last_idx);
+		PMD_DRV_LOG(ERR, sc, "USTORM_ASSERT_LIST_INDEX 0x%x", last_idx);
 	}
 
@@ -3784,5 +3790,5 @@ static int bnx2x_mc_assert(struct bnx2x_softc *sc)
 
 		if (row0 != COMMON_ASM_INVALID_ASSERT_OPCODE) {
-			PMD_DRV_LOG(ERR,
+			PMD_DRV_LOG(ERR, sc,
 				    "USTORM_ASSERT_INDEX 0x%x = 0x%08x 0x%08x 0x%08x 0x%08x",
 				    i, row3, row2, row1, row0);
@@ -3849,5 +3855,5 @@ static void bnx2x_attn_int_deasserted3(struct bnx2x_softc *sc, uint32_t attn)
 		} else if (attn & BNX2X_MC_ASSERT_BITS) {
 
-			PMD_DRV_LOG(ERR, "MC assert!");
+			PMD_DRV_LOG(ERR, sc, "MC assert!");
 			bnx2x_mc_assert(sc);
 			REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_10, 0);
@@ -3859,9 +3865,9 @@ static void bnx2x_attn_int_deasserted3(struct bnx2x_softc *sc, uint32_t attn)
 		} else if (attn & BNX2X_MCP_ASSERT) {
 
-			PMD_DRV_LOG(ERR, "MCP assert!");
+			PMD_DRV_LOG(ERR, sc, "MCP assert!");
 			REG_WR(sc, MISC_REG_AEU_GENERAL_ATTN_11, 0);
 
 		} else {
-			PMD_DRV_LOG(ERR,
+			PMD_DRV_LOG(ERR, sc,
 				    "Unknown HW assert! (attn 0x%08x)", attn);
 		}
@@ -3869,12 +3875,12 @@ static void bnx2x_attn_int_deasserted3(struct bnx2x_softc *sc, uint32_t attn)
 
 	if (attn & EVEREST_LATCHED_ATTN_IN_USE_MASK) {
-		PMD_DRV_LOG(ERR, "LATCHED attention 0x%08x (masked)", attn);
+		PMD_DRV_LOG(ERR, sc, "LATCHED attention 0x%08x (masked)", attn);
 		if (attn & BNX2X_GRC_TIMEOUT) {
 			val = REG_RD(sc, MISC_REG_GRC_TIMEOUT_ATTN);
-			PMD_DRV_LOG(ERR, "GRC time-out 0x%08x", val);
+			PMD_DRV_LOG(ERR, sc, "GRC time-out 0x%08x", val);
 		}
 		if (attn & BNX2X_GRC_RSV) {
 			val = REG_RD(sc, MISC_REG_GRC_RSV_ATTN);
-			PMD_DRV_LOG(ERR, "GRC reserved 0x%08x", val);
+			PMD_DRV_LOG(ERR, sc, "GRC reserved 0x%08x", val);
 		}
 		REG_WR(sc, MISC_REG_AEU_CLR_LATCH_SIGNAL, 0x7ff);
@@ -3891,8 +3897,8 @@ static void bnx2x_attn_int_deasserted2(struct bnx2x_softc *sc, uint32_t attn)
 	if (attn & AEU_INPUTS_ATTN_BITS_CFC_HW_INTERRUPT) {
 		val = REG_RD(sc, CFC_REG_CFC_INT_STS_CLR);
-		PMD_DRV_LOG(ERR, "CFC hw attention 0x%08x", val);
+		PMD_DRV_LOG(ERR, sc, "CFC hw attention 0x%08x", val);
 /* CFC error attention */
 		if (val & 0x2) {
-			PMD_DRV_LOG(ERR, "FATAL error from CFC");
+			PMD_DRV_LOG(ERR, sc, "FATAL error from CFC");
 		}
 	}
@@ -3900,13 +3906,13 @@ static void bnx2x_attn_int_deasserted2(struct bnx2x_softc *sc, uint32_t attn)
 	if (attn & AEU_INPUTS_ATTN_BITS_PXP_HW_INTERRUPT) {
 		val = REG_RD(sc, PXP_REG_PXP_INT_STS_CLR_0);
-		PMD_DRV_LOG(ERR, "PXP hw attention-0 0x%08x", val);
+		PMD_DRV_LOG(ERR, sc, "PXP hw attention-0 0x%08x", val);
 /* RQ_USDMDP_FIFO_OVERFLOW */
 		if (val & 0x18000) {
-			PMD_DRV_LOG(ERR, "FATAL error from PXP");
+			PMD_DRV_LOG(ERR, sc, "FATAL error from PXP");
 		}
 
 		if (!CHIP_IS_E1x(sc)) {
 			val = REG_RD(sc, PXP_REG_PXP_INT_STS_CLR_1);
-			PMD_DRV_LOG(ERR, "PXP hw attention-1 0x%08x", val);
+			PMD_DRV_LOG(ERR, sc, "PXP hw attention-1 0x%08x", val);
 		}
 	}
@@ -3936,5 +3942,5 @@ static void bnx2x_attn_int_deasserted2(struct bnx2x_softc *sc, uint32_t attn)
 
 			/* print the register, since no one can restore it */
-			PMD_DRV_LOG(ERR,
+			PMD_DRV_LOG(ERR, sc,
 				    "PXP2_REG_PXP2_INT_STS_CLR_0 0x%08x", val0);
 
@@ -3944,5 +3950,5 @@ static void bnx2x_attn_int_deasserted2(struct bnx2x_softc *sc, uint32_t attn)
 			 */
 			if (val0 & PXP2_EOP_ERROR_BIT) {
-				PMD_DRV_LOG(ERR, "PXP2_WR_PGLUE_EOP_ERROR");
+				PMD_DRV_LOG(ERR, sc, "PXP2_WR_PGLUE_EOP_ERROR");
 
 				/*
@@ -3965,5 +3971,5 @@ static void bnx2x_attn_int_deasserted2(struct bnx2x_softc *sc, uint32_t attn)
 		REG_WR(sc, reg_offset, val);
 
-		PMD_DRV_LOG(ERR,
+		PMD_DRV_LOG(ERR, sc,
 			    "FATAL HW block attention set2 0x%x",
 			    (uint32_t) (attn & HW_INTERRUT_ASSERT_SET_2));
@@ -3980,8 +3986,8 @@ static void bnx2x_attn_int_deasserted1(struct bnx2x_softc *sc, uint32_t attn)
 	if (attn & AEU_INPUTS_ATTN_BITS_DOORBELLQ_HW_INTERRUPT) {
 		val = REG_RD(sc, DORQ_REG_DORQ_INT_STS_CLR);
-		PMD_DRV_LOG(ERR, "DB hw attention 0x%08x", val);
+		PMD_DRV_LOG(ERR, sc, "DB hw attention 0x%08x", val);
 /* DORQ discard attention */
 		if (val & 0x2) {
-			PMD_DRV_LOG(ERR, "FATAL error from DORQ");
+			PMD_DRV_LOG(ERR, sc, "FATAL error from DORQ");
 		}
 	}
@@ -3995,5 +4001,5 @@ static void bnx2x_attn_int_deasserted1(struct bnx2x_softc *sc, uint32_t attn)
 		REG_WR(sc, reg_offset, val);
 
-		PMD_DRV_LOG(ERR,
+		PMD_DRV_LOG(ERR, sc,
 			    "FATAL HW block attention set1 0x%08x",
 			    (uint32_t) (attn & HW_INTERRUT_ASSERT_SET_1));
@@ -4016,5 +4022,5 @@ static void bnx2x_attn_int_deasserted0(struct bnx2x_softc *sc, uint32_t attn)
 		REG_WR(sc, reg_offset, val);
 
-		PMD_DRV_LOG(WARNING, "SPIO5 hw attention");
+		PMD_DRV_LOG(WARNING, sc, "SPIO5 hw attention");
 
 /* Fan failure attention */
@@ -4106,5 +4112,5 @@ static void bnx2x_attn_int_deasserted(struct bnx2x_softc *sc, uint32_t deasserte
 
 	val = ~deasserted;
-	PMD_DRV_LOG(DEBUG,
+	PMD_DRV_LOG(DEBUG, sc,
 		    "about to mask 0x%08x at %s addr 0x%08x", val,
 		    (sc->devinfo.int_block == INT_BLOCK_HC) ? "HC" : "IGU",
@@ -4113,5 +4119,5 @@ static void bnx2x_attn_int_deasserted(struct bnx2x_softc *sc, uint32_t deasserte
 
 	if (~sc->attn_state & deasserted) {
-		PMD_DRV_LOG(ERR, "IGU error");
+		PMD_DRV_LOG(ERR, sc, "IGU error");
 	}
 
@@ -4143,10 +4149,10 @@ static void bnx2x_attn_int(struct bnx2x_softc *sc)
 	uint32_t deasserted = ~attn_bits & attn_ack & attn_state;
 
-	PMD_DRV_LOG(DEBUG,
+	PMD_DRV_LOG(DEBUG, sc,
 		    "attn_bits 0x%08x attn_ack 0x%08x asserted 0x%08x deasserted 0x%08x",
 		    attn_bits, attn_ack, asserted, deasserted);
 
 	if (~(attn_bits ^ attn_ack) & (attn_bits ^ attn_state)) {
-		PMD_DRV_LOG(ERR, "BAD attention state");
+		PMD_DRV_LOG(ERR, sc, "BAD attention state");
 	}
 
@@ -4205,5 +4211,5 @@ static void bnx2x_handle_mcast_eqe(struct bnx2x_softc *sc)
 		rc = ecore_config_mcast(sc, &rparam, ECORE_MCAST_CMD_CONT);
 		if (rc < 0) {
-			PMD_DRV_LOG(INFO,
+			PMD_DRV_LOG(INFO, sc,
 				    "Failed to send pending mcast commands (%d)",
 				    rc);
@@ -4225,15 +4231,15 @@ bnx2x_handle_classification_eqe(struct bnx2x_softc *sc, union event_ring_elem *e
 	switch (le32toh(elem->message.data.eth_event.echo) >> BNX2X_SWCID_SHIFT) {
 	case ECORE_FILTER_MAC_PENDING:
-		PMD_DRV_LOG(DEBUG, "Got SETUP_MAC completions");
+		PMD_DRV_LOG(DEBUG, sc, "Got SETUP_MAC completions");
 		vlan_mac_obj = &sc->sp_objs[cid].mac_obj;
 		break;
 
 	case ECORE_FILTER_MCAST_PENDING:
-		PMD_DRV_LOG(DEBUG, "Got SETUP_MCAST completions");
+		PMD_DRV_LOG(DEBUG, sc, "Got SETUP_MCAST completions");
 		bnx2x_handle_mcast_eqe(sc);
 		return;
 
 	default:
-		PMD_DRV_LOG(NOTICE, "Unsupported classification command: %d",
+		PMD_DRV_LOG(NOTICE, sc, "Unsupported classification command: %d",
 			    elem->message.data.eth_event.echo);
 		return;
@@ -4243,7 +4249,8 @@ bnx2x_handle_classification_eqe(struct bnx2x_softc *sc, union event_ring_elem *e
 
 	if (rc < 0) {
-		PMD_DRV_LOG(NOTICE, "Failed to schedule new commands (%d)", rc);
+		PMD_DRV_LOG(NOTICE, sc,
+			    "Failed to schedule new commands (%d)", rc);
 	} else if (rc > 0) {
-		PMD_DRV_LOG(DEBUG, "Scheduled next pending commands...");
+		PMD_DRV_LOG(DEBUG, sc, "Scheduled next pending commands...");
 	}
 }
@@ -4309,5 +4316,5 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc)
 		switch (opcode) {
 		case EVENT_RING_OPCODE_STAT_QUERY:
-			PMD_DEBUG_PERIODIC_LOG(DEBUG, "got statistics completion event %d",
+			PMD_DEBUG_PERIODIC_LOG(DEBUG, sc, "got statistics completion event %d",
 				    sc->stats_comp++);
 			/* nothing to do with stats comp */
@@ -4317,5 +4324,5 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc)
 			/* handle according to cid range */
 			/* we may want to verify here that the sc state is HALTING */
-			PMD_DRV_LOG(DEBUG, "got delete ramrod for MULTI[%d]",
+			PMD_DRV_LOG(DEBUG, sc, "got delete ramrod for MULTI[%d]",
 				    cid);
 			q_obj = bnx2x_cid_to_q_obj(sc, cid);
@@ -4326,5 +4333,5 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc)
 
 		case EVENT_RING_OPCODE_STOP_TRAFFIC:
-			PMD_DRV_LOG(DEBUG, "got STOP TRAFFIC");
+			PMD_DRV_LOG(DEBUG, sc, "got STOP TRAFFIC");
 			if (f_obj->complete_cmd(sc, f_obj, ECORE_F_CMD_TX_STOP)) {
 				break;
@@ -4333,5 +4340,5 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc)
 
 		case EVENT_RING_OPCODE_START_TRAFFIC:
-			PMD_DRV_LOG(DEBUG, "got START TRAFFIC");
+			PMD_DRV_LOG(DEBUG, sc, "got START TRAFFIC");
 			if (f_obj->complete_cmd
 			    (sc, f_obj, ECORE_F_CMD_TX_START)) {
@@ -4343,5 +4350,5 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc)
 			echo = elem->message.data.function_update_event.echo;
 			if (echo == SWITCH_UPDATE) {
-				PMD_DRV_LOG(DEBUG,
+				PMD_DRV_LOG(DEBUG, sc,
 					    "got FUNC_SWITCH_UPDATE ramrod");
 				if (f_obj->complete_cmd(sc, f_obj,
@@ -4351,5 +4358,5 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc)
 				}
 			} else {
-				PMD_DRV_LOG(DEBUG,
+				PMD_DRV_LOG(DEBUG, sc,
 					    "AFEX: ramrod completed FUNCTION_UPDATE");
 				f_obj->complete_cmd(sc, f_obj,
@@ -4367,5 +4374,5 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc)
 
 		case EVENT_RING_OPCODE_FUNCTION_START:
-			PMD_DRV_LOG(DEBUG, "got FUNC_START ramrod");
+			PMD_DRV_LOG(DEBUG, sc, "got FUNC_START ramrod");
 			if (f_obj->complete_cmd(sc, f_obj, ECORE_F_CMD_START)) {
 				break;
@@ -4374,5 +4381,5 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc)
 
 		case EVENT_RING_OPCODE_FUNCTION_STOP:
-			PMD_DRV_LOG(DEBUG, "got FUNC_STOP ramrod");
+			PMD_DRV_LOG(DEBUG, sc, "got FUNC_STOP ramrod");
 			if (f_obj->complete_cmd(sc, f_obj, ECORE_F_CMD_STOP)) {
 				break;
@@ -4386,5 +4393,5 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc)
 			cid =
 			    elem->message.data.eth_event.echo & BNX2X_SWCID_MASK;
-			PMD_DRV_LOG(DEBUG, "got RSS_UPDATE ramrod. CID %d",
+			PMD_DRV_LOG(DEBUG, sc, "got RSS_UPDATE ramrod. CID %d",
 				    cid);
 			rss_raw->clear_pending(rss_raw);
@@ -4397,5 +4404,5 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc)
 		case (EVENT_RING_OPCODE_CLASSIFICATION_RULES | BNX2X_STATE_DIAG):
 		case (EVENT_RING_OPCODE_CLASSIFICATION_RULES | BNX2X_STATE_CLOSING_WAITING_HALT):
-			PMD_DRV_LOG(DEBUG,
+			PMD_DRV_LOG(DEBUG, sc,
 				    "got (un)set mac ramrod");
 			bnx2x_handle_classification_eqe(sc, elem);
@@ -4405,5 +4412,5 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc)
 		case (EVENT_RING_OPCODE_MULTICAST_RULES | BNX2X_STATE_DIAG):
 		case (EVENT_RING_OPCODE_MULTICAST_RULES | BNX2X_STATE_CLOSING_WAITING_HALT):
-			PMD_DRV_LOG(DEBUG,
+			PMD_DRV_LOG(DEBUG, sc,
 				    "got mcast ramrod");
 			bnx2x_handle_mcast_eqe(sc);
@@ -4413,5 +4420,5 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc)
 		case (EVENT_RING_OPCODE_FILTERS_RULES | BNX2X_STATE_DIAG):
 		case (EVENT_RING_OPCODE_FILTERS_RULES | BNX2X_STATE_CLOSING_WAITING_HALT):
-			PMD_DRV_LOG(DEBUG,
+			PMD_DRV_LOG(DEBUG, sc,
 				    "got rx_mode ramrod");
 			bnx2x_handle_rx_mode_eqe(sc);
@@ -4420,5 +4427,5 @@ static void bnx2x_eq_int(struct bnx2x_softc *sc)
 		default:
 			/* unknown event log error and continue */
-			PMD_DRV_LOG(INFO, "Unknown EQ event %d, sc->state 0x%x",
+			PMD_DRV_LOG(INFO, sc, "Unknown EQ event %d, sc->state 0x%x",
 				    elem->message.opcode, sc->state);
 		}
@@ -4446,10 +4453,14 @@ static int bnx2x_handle_sp_tq(struct bnx2x_softc *sc)
 	int rc = 0;
 
+	PMD_DRV_LOG(DEBUG, sc, "---> SP TASK <---");
+
 	/* what work needs to be performed? */
 	status = bnx2x_update_dsb_idx(sc);
 
+	PMD_DRV_LOG(DEBUG, sc, "dsb status 0x%04x", status);
+
 	/* HW attentions */
 	if (status & BNX2X_DEF_SB_ATT_IDX) {
-		PMD_DRV_LOG(DEBUG, "---> ATTN INTR <---");
+		PMD_DRV_LOG(DEBUG, sc, "---> ATTN INTR <---");
 		bnx2x_attn_int(sc);
 		status &= ~BNX2X_DEF_SB_ATT_IDX;
@@ -4460,5 +4471,5 @@ static int bnx2x_handle_sp_tq(struct bnx2x_softc *sc)
 	if (status & BNX2X_DEF_SB_IDX) {
 /* handle EQ completions */
-		PMD_DEBUG_PERIODIC_LOG(DEBUG, "---> EQ INTR <---");
+		PMD_DRV_LOG(DEBUG, sc, "---> EQ INTR <---");
 		bnx2x_eq_int(sc);
 		bnx2x_ack_sb(sc, sc->igu_dsb_id, USTORM_ID,
@@ -4469,5 +4480,5 @@ static int bnx2x_handle_sp_tq(struct bnx2x_softc *sc)
 	/* if status is non zero then something went wrong */
 	if (unlikely(status)) {
-		PMD_DRV_LOG(INFO,
+		PMD_DRV_LOG(INFO, sc,
 			    "Got an unknown SP interrupt! (0x%04x)", status);
 	}
@@ -4485,5 +4496,6 @@ static void bnx2x_handle_fp_tq(struct bnx2x_fastpath *fp, int scan_fp)
 	uint8_t more_rx = FALSE;
 
-	PMD_DRV_LOG(DEBUG, "---> FP TASK QUEUE (%d) <--", fp->index);
+	PMD_DEBUG_PERIODIC_LOG(DEBUG, sc,
+			       "---> FP TASK QUEUE (%d) <--", fp->index);
 
 	/* update the fastpath index */
@@ -4535,5 +4547,5 @@ int bnx2x_intr_legacy(struct bnx2x_softc *sc, int scan_fp)
 	}
 
-	PMD_DEBUG_PERIODIC_LOG(DEBUG, "Interrupt status 0x%04x", status);
+	PMD_DEBUG_PERIODIC_LOG(DEBUG, sc, "Interrupt status 0x%04x", status);
 	//bnx2x_dump_status_block(sc);
 
@@ -4553,5 +4565,5 @@ int bnx2x_intr_legacy(struct bnx2x_softc *sc, int scan_fp)
 
 	if (unlikely(status)) {
-		PMD_DRV_LOG(WARNING,
+		PMD_DRV_LOG(WARNING, sc,
 			    "Unexpected fastpath status (0x%08x)!", status);
 	}
@@ -4589,5 +4601,5 @@ static void bnx2x_init_func_obj(struct bnx2x_softc *sc)
 	sc->dmae_ready = 0;
 
-	PMD_INIT_FUNC_TRACE();
+	PMD_INIT_FUNC_TRACE(sc);
 
 	ecore_init_func_obj(sc,
@@ -4605,5 +4617,5 @@ static int bnx2x_init_hw(struct bnx2x_softc *sc, uint32_t load_code)
 	int rc;
 
-	PMD_INIT_FUNC_TRACE();
+	PMD_INIT_FUNC_TRACE(sc);
 
 	/* prepare the parameters for function state transitions */
@@ -5194,5 +5206,5 @@ static void bnx2x_init_internal(struct bnx2x_softc *sc, uint32_t load_code)
 
 	default:
-		PMD_DRV_LOG(NOTICE, "Unknown load_code (0x%x) from MCP",
+		PMD_DRV_LOG(NOTICE, sc, "Unknown load_code (0x%x) from MCP",
 			    load_code);
 		break;
@@ -5285,5 +5297,5 @@ bnx2x_extract_max_cfg(__rte_unused struct bnx2x_softc *sc, uint32_t mf_cfg)
 
 	if (!max_cfg) {
-		PMD_DRV_LOG(DEBUG,
+		PMD_DRV_LOG(DEBUG, sc,
 			    "Max BW configured to 0 - using 100 instead");
 		max_cfg = 100;
@@ -5549,5 +5561,5 @@ static void bnx2x_igu_int_enable(struct bnx2x_softc *sc)
 	val |= IGU_PF_CONF_FUNC_EN;
 
-	PMD_DRV_LOG(DEBUG, "write 0x%x to IGU mode %s",
+	PMD_DRV_LOG(DEBUG, sc, "write 0x%x to IGU mode %s",
 		    val, ((msix) ? "MSI-X" : ((msi) ? "MSI" : "INTx")));
 
@@ -5597,5 +5609,5 @@ static void bnx2x_hc_int_disable(struct bnx2x_softc *sc)
 	REG_WR(sc, addr, val);
 	if (REG_RD(sc, addr) != val) {
-		PMD_DRV_LOG(ERR, "proper val not read from HC IGU!");
+		PMD_DRV_LOG(ERR, sc, "proper val not read from HC IGU!");
 	}
 }
@@ -5608,5 +5620,5 @@ static void bnx2x_igu_int_disable(struct bnx2x_softc *sc)
 		 IGU_PF_CONF_INT_LINE_EN | IGU_PF_CONF_ATTN_BIT_EN);
 
-	PMD_DRV_LOG(DEBUG, "write %x to IGU", val);
+	PMD_DRV_LOG(DEBUG, sc, "write %x to IGU", val);
 
 	/* flush all outstanding writes */
@@ -5615,5 +5627,5 @@ static void bnx2x_igu_int_disable(struct bnx2x_softc *sc)
 	REG_WR(sc, IGU_REG_PF_CONFIGURATION, val);
 	if (REG_RD(sc, IGU_REG_PF_CONFIGURATION) != val) {
-		PMD_DRV_LOG(ERR, "proper val not read from IGU!");
+		PMD_DRV_LOG(ERR, sc, "proper val not read from IGU!");
 	}
 }
@@ -5632,5 +5644,5 @@ static void bnx2x_nic_init(struct bnx2x_softc *sc, int load_code)
 	int i;
 
-	PMD_INIT_FUNC_TRACE();
+	PMD_INIT_FUNC_TRACE(sc);
 
 	for (i = 0; i < sc->num_queues; i++) {
@@ -5762,5 +5774,5 @@ static int bnx2x_set_power_state(struct bnx2x_softc *sc, uint8_t state)
 	/* If there is no power capability, silently succeed */
 	if (!(sc->devinfo.pcie_cap_flags & BNX2X_PM_CAPABLE_FLAG)) {
-		PMD_DRV_LOG(WARNING, "No power capability");
+		PMD_DRV_LOG(WARNING, sc, "No power capability");
 		return 0;
 	}
@@ -5807,5 +5819,5 @@ static int bnx2x_set_power_state(struct bnx2x_softc *sc, uint8_t state)
 
 	default:
-		PMD_DRV_LOG(NOTICE, "Can't support PCI power state = %d",
+		PMD_DRV_LOG(NOTICE, sc, "Can't support PCI power state = %d",
 			    state);
 		return -1;
@@ -5825,5 +5837,5 @@ static uint8_t bnx2x_trylock_hw_lock(struct bnx2x_softc *sc, uint32_t resource)
 	/* Validating that the resource is within range */
 	if (resource > HW_LOCK_MAX_RESOURCE_VALUE) {
-		PMD_DRV_LOG(INFO,
+		PMD_DRV_LOG(INFO, sc,
 			    "resource(0x%x) > HW_LOCK_MAX_RESOURCE_VALUE(0x%x)",
 			    resource, HW_LOCK_MAX_RESOURCE_VALUE);
@@ -5845,5 +5857,5 @@ static uint8_t bnx2x_trylock_hw_lock(struct bnx2x_softc *sc, uint32_t resource)
 	}
 
-	PMD_DRV_LOG(NOTICE, "Failed to get a resource lock 0x%x", resource);
+	PMD_DRV_LOG(NOTICE, sc, "Failed to get a resource lock 0x%x", resource);
 
 	return FALSE;
@@ -5938,5 +5950,5 @@ static int bnx2x_er_poll_igu_vq(struct bnx2x_softc *sc)
 
 	if (cnt <= 0) {
-		PMD_DRV_LOG(NOTICE, "Still pending IGU requests bits=0x%08x!",
+		PMD_DRV_LOG(NOTICE, sc, "Still pending IGU requests bits=0x%08x!",
 			    pend_bits);
 		return -1;
@@ -6019,5 +6031,5 @@ static int bnx2x_init_shmem(struct bnx2x_softc *sc)
 	} while (cnt++ < (MCP_TIMEOUT / MCP_ONE_TIMEOUT));
 
-	PMD_DRV_LOG(NOTICE, "BAD MCP validity signature");
+	PMD_DRV_LOG(NOTICE, sc, "BAD MCP validity signature");
 
 	return -1;
@@ -6174,5 +6186,5 @@ static int bnx2x_process_kill(struct bnx2x_softc *sc, uint8_t global)
 
 	if (cnt <= 0) {
-		PMD_DRV_LOG(NOTICE,
+		PMD_DRV_LOG(NOTICE, sc,
 			    "ERROR: Tetris buffer didn't get empty or there "
 			    "are still outstanding read requests after 1s! "
@@ -6247,5 +6259,5 @@ static int bnx2x_leader_reset(struct bnx2x_softc *sc)
 					   DRV_MSG_CODE_LOAD_REQ_WITH_LFA);
 		if (!load_code) {
-			PMD_DRV_LOG(NOTICE, "MCP response failure, aborting");
+			PMD_DRV_LOG(NOTICE, sc, "MCP response failure, aborting");
 			rc = -1;
 			goto exit_leader_reset;
@@ -6254,5 +6266,5 @@ static int bnx2x_leader_reset(struct bnx2x_softc *sc)
 		if ((load_code != FW_MSG_CODE_DRV_LOAD_COMMON_CHIP) &&
 		    (load_code != FW_MSG_CODE_DRV_LOAD_COMMON)) {
-			PMD_DRV_LOG(NOTICE,
+			PMD_DRV_LOG(NOTICE, sc,
 				    "MCP unexpected response, aborting");
 			rc = -1;
@@ -6262,5 +6274,5 @@ static int bnx2x_leader_reset(struct bnx2x_softc *sc)
 		load_code = bnx2x_fw_command(sc, DRV_MSG_CODE_LOAD_DONE, 0);
 		if (!load_code) {
-			PMD_DRV_LOG(NOTICE, "MCP response failure, aborting");
+			PMD_DRV_LOG(NOTICE, sc, "MCP response failure, aborting");
 			rc = -1;
 			goto exit_leader_reset2;
@@ -6270,5 +6282,5 @@ static int bnx2x_leader_reset(struct bnx2x_softc *sc)
 	/* try to recover after the failure */
 	if (bnx2x_process_kill(sc, global)) {
-		PMD_DRV_LOG(NOTICE, "Something bad occurred on engine %d!",
+		PMD_DRV_LOG(NOTICE, sc, "Something bad occurred on engine %d!",
 			    SC_PATH(sc));
 		rc = -1;
@@ -6429,10 +6441,10 @@ bnx2x_pf_rx_q_prep(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp,
 	if (sc->dropless_fc &&
 	    pause->bd_th_hi + FW_PREFETCH_CNT > sc->rx_ring_size) {
-		PMD_DRV_LOG(WARNING, "rx bd ring threshold limit");
+		PMD_DRV_LOG(WARNING, sc, "rx bd ring threshold limit");
 	}
 
 	if (sc->dropless_fc &&
 	    pause->rcq_th_hi + FW_PREFETCH_CNT > USABLE_RCQ_ENTRIES(rxq)) {
-		PMD_DRV_LOG(WARNING, "rcq ring threshold limit");
+		PMD_DRV_LOG(WARNING, sc, "rcq ring threshold limit");
 	}
 
@@ -6505,5 +6517,5 @@ bnx2x_setup_queue(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp, uint8_t lea
 	int rc;
 
-	PMD_DRV_LOG(DEBUG, "setting up queue %d", fp->index);
+	PMD_DRV_LOG(DEBUG, sc, "setting up queue %d", fp->index);
 
 	bnx2x_ack_sb(sc, fp->igu_sb_id, USTORM_ID, 0, IGU_INT_ENABLE, 0);
@@ -6523,9 +6535,9 @@ bnx2x_setup_queue(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp, uint8_t lea
 	rc = ecore_queue_state_change(sc, &q_params);
 	if (rc) {
-		PMD_DRV_LOG(NOTICE, "Queue(%d) INIT failed", fp->index);
+		PMD_DRV_LOG(NOTICE, sc, "Queue(%d) INIT failed", fp->index);
 		return rc;
 	}
 
-	PMD_DRV_LOG(DEBUG, "init complete");
+	PMD_DRV_LOG(DEBUG, sc, "init complete");
 
 	/* now move the Queue to the SETUP state */
@@ -6551,5 +6563,5 @@ bnx2x_setup_queue(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp, uint8_t lea
 	rc = ecore_queue_state_change(sc, &q_params);
 	if (rc) {
-		PMD_DRV_LOG(NOTICE, "Queue(%d) SETUP failed", fp->index);
+		PMD_DRV_LOG(NOTICE, sc, "Queue(%d) SETUP failed", fp->index);
 		return rc;
 	}
@@ -6679,9 +6691,9 @@ bnx2x_set_mac_one(struct bnx2x_softc *sc, uint8_t * mac,
 
 	if (rc == ECORE_EXISTS) {
-		PMD_DRV_LOG(INFO, "Failed to schedule ADD operations (EEXIST)");
+		PMD_DRV_LOG(INFO, sc, "Failed to schedule ADD operations (EEXIST)");
 /* do not treat adding same MAC as error */
 		rc = 0;
 	} else if (rc < 0) {
-		PMD_DRV_LOG(ERR,
+		PMD_DRV_LOG(ERR, sc,
 			    "%s MAC failed (%d)", (set ? "Set" : "Delete"), rc);
 	}
@@ -6694,5 +6706,5 @@ static int bnx2x_set_eth_mac(struct bnx2x_softc *sc, uint8_t set)
 	unsigned long ramrod_flags = 0;
 
-	PMD_DRV_LOG(DEBUG, "Adding Ethernet MAC");
+	PMD_DRV_LOG(DEBUG, sc, "Adding Ethernet MAC");
 
 	bnx2x_set_bit(RAMROD_COMP_WAIT, &ramrod_flags);
@@ -6878,5 +6890,5 @@ static void bnx2x_link_report(struct bnx2x_softc *sc)
 	if (bnx2x_test_bit(BNX2X_LINK_REPORT_LINK_DOWN,
 			 &cur_data.link_report_flags)) {
-		PMD_DRV_LOG(INFO, "NIC Link is Down");
+		PMD_DRV_LOG(INFO, sc, "NIC Link is Down");
 	} else {
 		__rte_unused const char *duplex;
@@ -6918,5 +6930,5 @@ static void bnx2x_link_report(struct bnx2x_softc *sc)
 		}
 
-		PMD_DRV_LOG(INFO,
+		PMD_DRV_LOG(INFO, sc,
 			    "NIC Link is Up, %d Mbps %s duplex, Flow control: %s",
 			    cur_data.line_speed, duplex, flow);
@@ -7059,5 +7071,5 @@ void bnx2x_periodic_callout(struct bnx2x_softc *sc)
 	if ((sc->state != BNX2X_STATE_OPEN) ||
 	    (atomic_load_acq_long(&sc->periodic_flags) == PERIODIC_STOP)) {
-		PMD_DRV_LOG(WARNING, "periodic callout exit (state=0x%x)",
+		PMD_DRV_LOG(INFO, sc, "periodic callout exit (state=0x%x)",
 			    sc->state);
 		return;
@@ -7096,5 +7108,5 @@ void bnx2x_periodic_callout(struct bnx2x_softc *sc)
 		    (drv_pulse != ((mcp_pulse + 1) & MCP_PULSE_SEQ_MASK))) {
 			/* someone lost a heartbeat... */
-			PMD_DRV_LOG(ERR,
+			PMD_DRV_LOG(ERR, sc,
 				    "drv_pulse (0x%x) != mcp_pulse (0x%x)",
 				    drv_pulse, mcp_pulse);
@@ -7112,5 +7124,5 @@ int bnx2x_nic_load(struct bnx2x_softc *sc)
 	int i, rc = 0;
 
-	PMD_INIT_FUNC_TRACE();
+	PMD_INIT_FUNC_TRACE(sc);
 
 	sc->state = BNX2X_STATE_OPENING_WAITING_LOAD;
@@ -7166,5 +7178,5 @@ int bnx2x_nic_load(struct bnx2x_softc *sc)
 			}
 		} else {
-			PMD_DRV_LOG(INFO, "Device has no MCP!");
+			PMD_DRV_LOG(INFO, sc, "Device has no MCP!");
 			load_code = bnx2x_nic_load_no_mcp(sc);
 		}
@@ -7178,5 +7190,5 @@ int bnx2x_nic_load(struct bnx2x_softc *sc)
 /* Initialize HW */
 		if (bnx2x_init_hw(sc, load_code) != 0) {
-			PMD_DRV_LOG(NOTICE, "HW init failed");
+			PMD_DRV_LOG(NOTICE, sc, "HW init failed");
 			bnx2x_fw_command(sc, DRV_MSG_CODE_LOAD_DONE, 0);
 			sc->state = BNX2X_STATE_CLOSED;
@@ -7198,5 +7210,5 @@ int bnx2x_nic_load(struct bnx2x_softc *sc)
 		rc = bnx2x_func_start(sc);
 		if (rc) {
-			PMD_DRV_LOG(NOTICE, "Function start failed!");
+			PMD_DRV_LOG(NOTICE, sc, "Function start failed!");
 			bnx2x_fw_command(sc, DRV_MSG_CODE_LOAD_DONE, 0);
 			sc->state = BNX2X_STATE_ERROR;
@@ -7209,5 +7221,5 @@ int bnx2x_nic_load(struct bnx2x_softc *sc)
 			    bnx2x_fw_command(sc, DRV_MSG_CODE_LOAD_DONE, 0);
 			if (!load_code) {
-				PMD_DRV_LOG(NOTICE,
+				PMD_DRV_LOG(NOTICE, sc,
 					    "MCP response failure, aborting");
 				sc->state = BNX2X_STATE_ERROR;
@@ -7220,5 +7232,5 @@ int bnx2x_nic_load(struct bnx2x_softc *sc)
 	rc = bnx2x_setup_leading(sc);
 	if (rc) {
-		PMD_DRV_LOG(NOTICE, "Setup leading failed!");
+		PMD_DRV_LOG(NOTICE, sc, "Setup leading failed!");
 		sc->state = BNX2X_STATE_ERROR;
 		goto bnx2x_nic_load_error3;
@@ -7232,5 +7244,5 @@ int bnx2x_nic_load(struct bnx2x_softc *sc)
 
 		if (rc) {
-			PMD_DRV_LOG(NOTICE, "Queue(%d) setup failed", i);
+			PMD_DRV_LOG(NOTICE, sc, "Queue(%d) setup failed", i);
 			sc->state = BNX2X_STATE_ERROR;
 			goto bnx2x_nic_load_error3;
@@ -7240,5 +7252,5 @@ int bnx2x_nic_load(struct bnx2x_softc *sc)
 	rc = bnx2x_init_rss_pf(sc);
 	if (rc) {
-		PMD_DRV_LOG(NOTICE, "PF RSS init failed");
+		PMD_DRV_LOG(NOTICE, sc, "PF RSS init failed");
 		sc->state = BNX2X_STATE_ERROR;
 		goto bnx2x_nic_load_error3;
@@ -7256,5 +7268,5 @@ int bnx2x_nic_load(struct bnx2x_softc *sc)
 
 	if (rc) {
-		PMD_DRV_LOG(NOTICE, "Setting Ethernet MAC failed");
+		PMD_DRV_LOG(NOTICE, sc, "Setting Ethernet MAC failed");
 		sc->state = BNX2X_STATE_ERROR;
 		goto bnx2x_nic_load_error3;
@@ -7308,5 +7320,5 @@ int bnx2x_nic_load(struct bnx2x_softc *sc)
 	/* wait for all pending SP commands to complete */
 	if (IS_PF(sc) && !bnx2x_wait_sp_comp(sc, ~0x0UL)) {
-		PMD_DRV_LOG(NOTICE, "Timeout waiting for all SPs to complete!");
+		PMD_DRV_LOG(NOTICE, sc, "Timeout waiting for all SPs to complete!");
 		bnx2x_periodic_stop(sc);
 		bnx2x_nic_unload(sc, UNLOAD_CLOSE, FALSE);
@@ -7314,5 +7326,5 @@ int bnx2x_nic_load(struct bnx2x_softc *sc)
 	}
 
-	PMD_DRV_LOG(DEBUG, "NIC successfully loaded");
+	PMD_DRV_LOG(DEBUG, sc, "NIC successfully loaded");
 
 	return 0;
@@ -7363,5 +7375,5 @@ int bnx2x_init(struct bnx2x_softc *sc)
 	/* Check if the driver is still running and bail out if it is. */
 	if (sc->state != BNX2X_STATE_CLOSED) {
-		PMD_DRV_LOG(DEBUG, "Init called while driver is running!");
+		PMD_DRV_LOG(DEBUG, sc, "Init called while driver is running!");
 		rc = 0;
 		goto bnx2x_init_done;
@@ -7401,5 +7413,5 @@ int bnx2x_init(struct bnx2x_softc *sc)
 				    && bnx2x_trylock_leader_lock(sc)
 				    && !bnx2x_leader_reset(sc)) {
-					PMD_DRV_LOG(INFO,
+					PMD_DRV_LOG(INFO, sc,
 						    "Recovered during init");
 					break;
@@ -7411,5 +7423,5 @@ int bnx2x_init(struct bnx2x_softc *sc)
 				sc->recovery_state = BNX2X_RECOVERY_FAILED;
 
-				PMD_DRV_LOG(NOTICE,
+				PMD_DRV_LOG(NOTICE, sc,
 					    "Recovery flow hasn't properly "
 					    "completed yet, try again later. "
@@ -7430,5 +7442,5 @@ bnx2x_init_done:
 
 	if (rc) {
-		PMD_DRV_LOG(NOTICE, "Initialization failed, "
+		PMD_DRV_LOG(NOTICE, sc, "Initialization failed, "
 			    "stack notified driver is NOT running!");
 	}
@@ -7462,5 +7474,5 @@ static void bnx2x_get_function_num(struct bnx2x_softc *sc)
 	}
 
-	PMD_DRV_LOG(DEBUG,
+	PMD_DRV_LOG(DEBUG, sc,
 		    "Relative function %d, Absolute function %d, Path %d",
 		    sc->pfunc_rel, sc->pfunc_abs, sc->path_id);
@@ -7499,5 +7511,5 @@ static uint32_t bnx2x_pcie_capability_read(struct bnx2x_softc *sc, int reg)
 	caps = pci_find_cap(sc, PCIY_EXPRESS, BNX2X_PCI_CAP);
 	if (NULL != caps) {
-		PMD_DRV_LOG(DEBUG, "Found PCIe capability: "
+		PMD_DRV_LOG(DEBUG, sc, "Found PCIe capability: "
 			    "id=0x%04X type=0x%04X addr=0x%08X",
 			    caps->id, caps->type, caps->addr);
@@ -7506,5 +7518,5 @@ static uint32_t bnx2x_pcie_capability_read(struct bnx2x_softc *sc, int reg)
 	}
 
-	PMD_DRV_LOG(WARNING, "PCIe capability NOT FOUND!!!");
+	PMD_DRV_LOG(WARNING, sc, "PCIe capability NOT FOUND!!!");
 
 	return 0;
@@ -7524,5 +7536,5 @@ static uint8_t bnx2x_is_pcie_pending(struct bnx2x_softc *sc)
 static void bnx2x_probe_pci_caps(struct bnx2x_softc *sc)
 {
-	PMD_INIT_FUNC_TRACE();
+	PMD_INIT_FUNC_TRACE(sc);
 
 	struct bnx2x_pci_cap *caps;
@@ -7533,5 +7545,5 @@ static void bnx2x_probe_pci_caps(struct bnx2x_softc *sc)
 	caps = pci_find_cap(sc, PCIY_PMG, BNX2X_PCI_CAP);
 	if (NULL != caps) {
-		PMD_DRV_LOG(DEBUG, "Found PM capability: "
+		PMD_DRV_LOG(DEBUG, sc, "Found PM capability: "
 			    "id=0x%04X type=0x%04X addr=0x%08X",
 			    caps->id, caps->type, caps->addr);
@@ -7547,5 +7559,5 @@ static void bnx2x_probe_pci_caps(struct bnx2x_softc *sc)
 	    ((link_status & PCIM_LINK_STA_WIDTH) >> 4);
 
-	PMD_DRV_LOG(DEBUG, "PCIe link speed=%d width=%d",
+	PMD_DRV_LOG(DEBUG, sc, "PCIe link speed=%d width=%d",
 		    sc->devinfo.pcie_link_speed, sc->devinfo.pcie_link_width);
 
@@ -7555,5 +7567,5 @@ static void bnx2x_probe_pci_caps(struct bnx2x_softc *sc)
 	caps = pci_find_cap(sc, PCIY_MSI, BNX2X_PCI_CAP);
 	if (NULL != caps) {
-		PMD_DRV_LOG(DEBUG, "Found MSI capability at 0x%04x", reg);
+		PMD_DRV_LOG(DEBUG, sc, "Found MSI capability at 0x%04x", reg);
 
 		sc->devinfo.pcie_cap_flags |= BNX2X_MSI_CAPABLE_FLAG;
@@ -7564,5 +7576,5 @@ static void bnx2x_probe_pci_caps(struct bnx2x_softc *sc)
 	caps = pci_find_cap(sc, PCIY_MSIX, BNX2X_PCI_CAP);
 	if (NULL != caps) {
-		PMD_DRV_LOG(DEBUG, "Found MSI-X capability at 0x%04x", reg);
+		PMD_DRV_LOG(DEBUG, sc, "Found MSI-X capability at 0x%04x", reg);
 
 		sc->devinfo.pcie_cap_flags |= BNX2X_MSIX_CAPABLE_FLAG;
@@ -7584,5 +7596,5 @@ static int bnx2x_get_shmem_mf_cfg_info_sd(struct bnx2x_softc *sc)
 
 	if (!VALID_OVLAN(mf_info->ext_id)) {
-		PMD_DRV_LOG(NOTICE, "Invalid VLAN (%d)", mf_info->ext_id);
+		PMD_DRV_LOG(NOTICE, sc, "Invalid VLAN (%d)", mf_info->ext_id);
 		return 1;
 	}
@@ -7708,5 +7720,5 @@ static int bnx2x_check_valid_mf_cfg(struct bnx2x_softc *sc)
 
 	if (mf_info->mf_config[SC_VN(sc)] & FUNC_MF_CFG_FUNC_HIDE) {
-		PMD_DRV_LOG(NOTICE,
+		PMD_DRV_LOG(NOTICE, sc,
 			    "Enumerated function %d is marked as hidden",
 			    SC_PORT(sc));
@@ -7715,5 +7727,5 @@ static int bnx2x_check_valid_mf_cfg(struct bnx2x_softc *sc)
 
 	if ((mf_info->vnics_per_port > 1) && !mf_info->multi_vnics_mode) {
-		PMD_DRV_LOG(NOTICE, "vnics_per_port=%d multi_vnics_mode=%d",
+		PMD_DRV_LOG(NOTICE, sc, "vnics_per_port=%d multi_vnics_mode=%d",
 			    mf_info->vnics_per_port, mf_info->multi_vnics_mode);
 		return 1;
@@ -7723,5 +7735,5 @@ static int bnx2x_check_valid_mf_cfg(struct bnx2x_softc *sc)
 /* vnic id > 0 must have valid ovlan in switch-dependent mode */
 		if ((SC_VN(sc) > 0) && !VALID_OVLAN(OVLAN(sc))) {
-			PMD_DRV_LOG(NOTICE, "mf_mode=SD vnic_id=%d ovlan=%d",
+			PMD_DRV_LOG(NOTICE, sc, "mf_mode=SD vnic_id=%d ovlan=%d",
 				    SC_VN(sc), OVLAN(sc));
 			return 1;
@@ -7729,5 +7741,5 @@ static int bnx2x_check_valid_mf_cfg(struct bnx2x_softc *sc)
 
 		if (!VALID_OVLAN(OVLAN(sc)) && mf_info->multi_vnics_mode) {
-			PMD_DRV_LOG(NOTICE,
+			PMD_DRV_LOG(NOTICE, sc,
 				    "mf_mode=SD multi_vnics_mode=%d ovlan=%d",
 				    mf_info->multi_vnics_mode, OVLAN(sc));
@@ -7748,5 +7760,5 @@ static int bnx2x_check_valid_mf_cfg(struct bnx2x_softc *sc)
 			     || ((!mf_info->multi_vnics_mode)
 				 && VALID_OVLAN(ovlan1)))) {
-				PMD_DRV_LOG(NOTICE,
+				PMD_DRV_LOG(NOTICE, sc,
 					    "mf_mode=SD function %d MF config "
 					    "mismatch, multi_vnics_mode=%d ovlan=%d",
@@ -7772,5 +7784,5 @@ static int bnx2x_check_valid_mf_cfg(struct bnx2x_softc *sc)
 				    && VALID_OVLAN(ovlan2)
 				    && (ovlan1 == ovlan2)) {
-					PMD_DRV_LOG(NOTICE,
+					PMD_DRV_LOG(NOTICE, sc,
 						    "mf_mode=SD functions %d and %d "
 						    "have the same ovlan (%d)",
@@ -7802,5 +7814,5 @@ static int bnx2x_get_mf_cfg_info(struct bnx2x_softc *sc)
 
 	if (sc->devinfo.mf_cfg_base == SHMEM_MF_CFG_ADDR_NONE) {
-		PMD_DRV_LOG(NOTICE, "Invalid mf_cfg_base!");
+		PMD_DRV_LOG(NOTICE, sc, "Invalid mf_cfg_base!");
 		return 1;
 	}
@@ -7820,5 +7832,5 @@ static int bnx2x_get_mf_cfg_info(struct bnx2x_softc *sc)
 			mf_info->mf_mode = MULTI_FUNCTION_SI;
 		} else {
-			PMD_DRV_LOG(NOTICE,
+			PMD_DRV_LOG(NOTICE, sc,
 				    "Invalid config for Switch Independent mode");
 		}
@@ -7836,5 +7848,5 @@ static int bnx2x_get_mf_cfg_info(struct bnx2x_softc *sc)
 			mf_info->mf_mode = MULTI_FUNCTION_SD;
 		} else {
-			PMD_DRV_LOG(NOTICE,
+			PMD_DRV_LOG(NOTICE, sc,
 				    "Invalid config for Switch Dependent mode");
 		}
@@ -7860,5 +7872,5 @@ static int bnx2x_get_mf_cfg_info(struct bnx2x_softc *sc)
 			mf_info->mf_mode = MULTI_FUNCTION_AFEX;
 		} else {
-			PMD_DRV_LOG(NOTICE, "Invalid config for AFEX mode");
+			PMD_DRV_LOG(NOTICE, sc, "Invalid config for AFEX mode");
 		}
 
@@ -7867,5 +7879,5 @@ static int bnx2x_get_mf_cfg_info(struct bnx2x_softc *sc)
 	default:
 
-		PMD_DRV_LOG(NOTICE, "Unknown MF mode (0x%08x)",
+		PMD_DRV_LOG(NOTICE, sc, "Unknown MF mode (0x%08x)",
 			    (val & SHARED_FEAT_CFG_FORCE_SF_MODE_MASK));
 
@@ -7899,5 +7911,5 @@ static int bnx2x_get_mf_cfg_info(struct bnx2x_softc *sc)
 /* invalid MF config */
 		if (SC_VN(sc) >= 1) {
-			PMD_DRV_LOG(NOTICE, "VNIC ID >= 1 in SF mode");
+			PMD_DRV_LOG(NOTICE, sc, "VNIC ID >= 1 in SF mode");
 			return 1;
 		}
@@ -7928,5 +7940,5 @@ static int bnx2x_get_mf_cfg_info(struct bnx2x_softc *sc)
 	default:
 
-		PMD_DRV_LOG(NOTICE, "Get MF config failed (mf_mode=0x%08x)",
+		PMD_DRV_LOG(NOTICE, sc, "Get MF config failed (mf_mode=0x%08x)",
 			    mf_info->mf_mode);
 		return 1;
@@ -7956,5 +7968,5 @@ static int bnx2x_get_shmem_info(struct bnx2x_softc *sc)
 	uint32_t mac_hi, mac_lo, val;
 
-	PMD_INIT_FUNC_TRACE();
+	PMD_INIT_FUNC_TRACE(sc);
 
 	port = SC_PORT(sc);
@@ -8030,5 +8042,5 @@ static int bnx2x_get_shmem_info(struct bnx2x_softc *sc)
 	if ((mac_lo == 0) && (mac_hi == 0)) {
 		*sc->mac_addr_str = 0;
-		PMD_DRV_LOG(NOTICE, "No Ethernet address programmed!");
+		PMD_DRV_LOG(NOTICE, sc, "No Ethernet address programmed!");
 	} else {
 		sc->link_params.mac_addr[0] = (uint8_t) (mac_hi >> 8);
@@ -8046,5 +8058,6 @@ static int bnx2x_get_shmem_info(struct bnx2x_softc *sc)
 			 sc->link_params.mac_addr[4],
 			 sc->link_params.mac_addr[5]);
-		PMD_DRV_LOG(DEBUG, "Ethernet address: %s", sc->mac_addr_str);
+		PMD_DRV_LOG(DEBUG, sc,
+			    "Ethernet address: %s", sc->mac_addr_str);
 	}
 
@@ -8061,22 +8074,22 @@ static void bnx2x_media_detect(struct bnx2x_softc *sc)
 	case ELINK_ETH_PHY_KR:
 	case ELINK_ETH_PHY_CX4:
-		PMD_DRV_LOG(INFO, "Found 10GBase-CX4 media.");
+		PMD_DRV_LOG(INFO, sc, "Found 10GBase-CX4 media.");
 		sc->media = IFM_10G_CX4;
 		break;
 	case ELINK_ETH_PHY_DA_TWINAX:
-		PMD_DRV_LOG(INFO, "Found 10Gb Twinax media.");
+		PMD_DRV_LOG(INFO, sc, "Found 10Gb Twinax media.");
 		sc->media = IFM_10G_TWINAX;
 		break;
 	case ELINK_ETH_PHY_BASE_T:
-		PMD_DRV_LOG(INFO, "Found 10GBase-T media.");
+		PMD_DRV_LOG(INFO, sc, "Found 10GBase-T media.");
 		sc->media = IFM_10G_T;
 		break;
 	case ELINK_ETH_PHY_NOT_PRESENT:
-		PMD_DRV_LOG(INFO, "Media not present.");
+		PMD_DRV_LOG(INFO, sc, "Media not present.");
 		sc->media = 0;
 		break;
 	case ELINK_ETH_PHY_UNSPECIFIED:
 	default:
-		PMD_DRV_LOG(INFO, "Unknown media!");
+		PMD_DRV_LOG(INFO, sc, "Unknown media!");
 		sc->media = 0;
 		break;
@@ -8141,5 +8154,5 @@ static int bnx2x_get_igu_cam_info(struct bnx2x_softc *sc)
 
 	if (igu_sb_cnt == 0) {
-		PMD_DRV_LOG(ERR, "CAM configuration error");
+		PMD_DRV_LOG(ERR, sc, "CAM configuration error");
 		return -1;
 	}
@@ -8178,5 +8191,5 @@ static int bnx2x_get_device_info(struct bnx2x_softc *sc)
 	}
 
-	PMD_DRV_LOG(DEBUG,
+	PMD_DRV_LOG(DEBUG, sc,
 		    "chip_id=0x%08x (num=0x%04x rev=0x%01x metal=0x%02x bond=0x%01x)",
 		    sc->devinfo.chip_id,
@@ -8189,5 +8202,5 @@ static int bnx2x_get_device_info(struct bnx2x_softc *sc)
 	if ((sc->devinfo.chip_id & 0x1) || (CHIP_IS_E1H(sc) && (val == 0x55))) {
 		sc->flags |= BNX2X_ONE_PORT_FLAG;
-		PMD_DRV_LOG(DEBUG, "single port device");
+		PMD_DRV_LOG(DEBUG, sc, "single port device");
 	}
 
@@ -8213,5 +8226,5 @@ static int bnx2x_get_device_info(struct bnx2x_softc *sc)
 		    (val) ? CHIP_4_PORT_MODE : CHIP_2_PORT_MODE;
 
-		PMD_DRV_LOG(DEBUG, "Port mode = %s", (val) ? "4" : "2");
+		PMD_DRV_LOG(DEBUG, sc, "Port mode = %s", (val) ? "4" : "2");
 	}
 
@@ -8228,5 +8241,5 @@ static int bnx2x_get_device_info(struct bnx2x_softc *sc)
 	if (!sc->devinfo.shmem_base) {
 /* this should ONLY prevent upcoming shmem reads */
-		PMD_DRV_LOG(INFO, "MCP not active");
+		PMD_DRV_LOG(INFO, sc, "MCP not active");
 		sc->flags |= BNX2X_NO_MCP_FLAG;
 		return 0;
@@ -8237,5 +8250,5 @@ static int bnx2x_get_device_info(struct bnx2x_softc *sc)
 	if ((val & (SHR_MEM_VALIDITY_DEV_INFO | SHR_MEM_VALIDITY_MB)) !=
 	    (SHR_MEM_VALIDITY_DEV_INFO | SHR_MEM_VALIDITY_MB)) {
-		PMD_DRV_LOG(NOTICE, "Invalid SHMEM validity signature: 0x%08x",
+		PMD_DRV_LOG(NOTICE, sc, "Invalid SHMEM validity signature: 0x%08x",
 			    val);
 		return 0;
@@ -8250,5 +8263,5 @@ static int bnx2x_get_device_info(struct bnx2x_softc *sc)
 		 ((sc->devinfo.bc_ver >> 16) & 0xff),
 		 ((sc->devinfo.bc_ver >> 8) & 0xff));
-	PMD_DRV_LOG(INFO, "Bootcode version: %s", sc->devinfo.bc_ver_str);
+	PMD_DRV_LOG(INFO, sc, "Bootcode version: %s", sc->devinfo.bc_ver_str);
 
 	/* get the bootcode shmem address */
@@ -8305,5 +8318,5 @@ static int bnx2x_get_device_info(struct bnx2x_softc *sc)
 
 			if (REG_RD(sc, IGU_REG_RESET_MEMORIES)) {
-				PMD_DRV_LOG(NOTICE,
+				PMD_DRV_LOG(NOTICE, sc,
 					    "FORCING IGU Normal Mode failed!!!");
 				bnx2x_release_hw_lock(sc, HW_LOCK_RESOURCE_RESET);
@@ -8313,8 +8326,8 @@ static int bnx2x_get_device_info(struct bnx2x_softc *sc)
 
 		if (val & IGU_BLOCK_CONFIGURATION_REG_BACKWARD_COMP_EN) {
-			PMD_DRV_LOG(DEBUG, "IGU Backward Compatible Mode");
+			PMD_DRV_LOG(DEBUG, sc, "IGU Backward Compatible Mode");
 			sc->devinfo.int_block |= INT_BLOCK_MODE_BW_COMP;
 		} else {
-			PMD_DRV_LOG(DEBUG, "IGU Normal Mode");
+			PMD_DRV_LOG(DEBUG, sc, "IGU Normal Mode");
 		}
 
@@ -8390,5 +8403,5 @@ bnx2x_link_settings_supported(struct bnx2x_softc *sc, uint32_t switch_cfg)
 
 	if (!(sc->port.supported[0] || sc->port.supported[1])) {
-		PMD_DRV_LOG(ERR,
+		PMD_DRV_LOG(ERR, sc,
 			    "Invalid phy config in NVRAM (PHY1=0x%08x PHY2=0x%08x)",
 			    SHMEM_RD(sc,
@@ -8416,5 +8429,5 @@ bnx2x_link_settings_supported(struct bnx2x_softc *sc, uint32_t switch_cfg)
 			break;
 		default:
-			PMD_DRV_LOG(ERR,
+			PMD_DRV_LOG(ERR, sc,
 				    "Invalid switch config in"
 				    "link_config=0x%08x",
@@ -8424,5 +8437,5 @@ bnx2x_link_settings_supported(struct bnx2x_softc *sc, uint32_t switch_cfg)
 	}
 
-	PMD_DRV_LOG(INFO, "PHY addr 0x%08x", sc->port.phy_addr);
+	PMD_DRV_LOG(INFO, sc, "PHY addr 0x%08x", sc->port.phy_addr);
 
 	/* mask what we support according to speed_cap_mask per configuration */
@@ -8477,5 +8490,5 @@ bnx2x_link_settings_supported(struct bnx2x_softc *sc, uint32_t switch_cfg)
 	}
 
-	PMD_DRV_LOG(INFO, "PHY supported 0=0x%08x 1=0x%08x",
+	PMD_DRV_LOG(INFO, sc, "PHY supported 0=0x%08x 1=0x%08x",
 		    sc->port.supported[0], sc->port.supported[1]);
 }
@@ -8536,5 +8549,5 @@ static void bnx2x_link_settings_requested(struct bnx2x_softc *sc)
 				    (ADVERTISED_10baseT_Full | ADVERTISED_TP);
 			} else {
-				PMD_DRV_LOG(ERR,
+				PMD_DRV_LOG(ERR, sc,
 					    "Invalid NVRAM config link_config=0x%08x "
 					    "speed_cap_mask=0x%08x",
@@ -8556,5 +8569,5 @@ static void bnx2x_link_settings_requested(struct bnx2x_softc *sc)
 				    (ADVERTISED_10baseT_Half | ADVERTISED_TP);
 			} else {
-				PMD_DRV_LOG(ERR,
+				PMD_DRV_LOG(ERR, sc,
 					    "Invalid NVRAM config link_config=0x%08x "
 					    "speed_cap_mask=0x%08x",
@@ -8575,5 +8588,5 @@ static void bnx2x_link_settings_requested(struct bnx2x_softc *sc)
 				    (ADVERTISED_100baseT_Full | ADVERTISED_TP);
 			} else {
-				PMD_DRV_LOG(ERR,
+				PMD_DRV_LOG(ERR, sc,
 					    "Invalid NVRAM config link_config=0x%08x "
 					    "speed_cap_mask=0x%08x",
@@ -8595,5 +8608,5 @@ static void bnx2x_link_settings_requested(struct bnx2x_softc *sc)
 				    (ADVERTISED_100baseT_Half | ADVERTISED_TP);
 			} else {
-				PMD_DRV_LOG(ERR,
+				PMD_DRV_LOG(ERR, sc,
 					    "Invalid NVRAM config link_config=0x%08x "
 					    "speed_cap_mask=0x%08x",
@@ -8613,5 +8626,5 @@ static void bnx2x_link_settings_requested(struct bnx2x_softc *sc)
 				    (ADVERTISED_1000baseT_Full | ADVERTISED_TP);
 			} else {
-				PMD_DRV_LOG(ERR,
+				PMD_DRV_LOG(ERR, sc,
 					    "Invalid NVRAM config link_config=0x%08x "
 					    "speed_cap_mask=0x%08x",
@@ -8631,5 +8644,5 @@ static void bnx2x_link_settings_requested(struct bnx2x_softc *sc)
 				    (ADVERTISED_2500baseX_Full | ADVERTISED_TP);
 			} else {
-				PMD_DRV_LOG(ERR,
+				PMD_DRV_LOG(ERR, sc,
 					    "Invalid NVRAM config link_config=0x%08x "
 					    "speed_cap_mask=0x%08x",
@@ -8650,5 +8663,5 @@ static void bnx2x_link_settings_requested(struct bnx2x_softc *sc)
 				     ADVERTISED_FIBRE);
 			} else {
-				PMD_DRV_LOG(ERR,
+				PMD_DRV_LOG(ERR, sc,
 					    "Invalid NVRAM config link_config=0x%08x "
 					    "speed_cap_mask=0x%08x",
@@ -8665,5 +8678,5 @@ static void bnx2x_link_settings_requested(struct bnx2x_softc *sc)
 
 		default:
-			PMD_DRV_LOG(ERR,
+			PMD_DRV_LOG(ERR, sc,
 				    "Invalid NVRAM config link_config=0x%08x "
 				    "speed_cap_mask=0x%08x", link_config,
@@ -8696,5 +8709,5 @@ static void bnx2x_get_phy_info(struct bnx2x_softc *sc)
 	uint32_t eee_mode;
 
-	PMD_INIT_FUNC_TRACE();
+	PMD_INIT_FUNC_TRACE(sc);
 
 	/* shmem data already read in bnx2x_get_shmem_info() */
@@ -8856,5 +8869,5 @@ int bnx2x_alloc_hsi_mem(struct bnx2x_softc *sc)
 		if (bnx2x_dma_alloc(sc, sizeof(union bnx2x_host_hc_status_block),
 				  &fp->sb_dma, buf, RTE_CACHE_LINE_SIZE) != 0) {
-			PMD_DRV_LOG(NOTICE, "Failed to alloc %s", buf);
+			PMD_DRV_LOG(NOTICE, sc, "Failed to alloc %s", buf);
 			return -1;
 		} else {
@@ -8946,5 +8959,5 @@ static int bnx2x_prev_mcp_done(struct bnx2x_softc *sc)
 				     DRV_MSG_CODE_UNLOAD_SKIP_LINK_RESET);
 	if (!rc) {
-		PMD_DRV_LOG(NOTICE, "MCP response failure, aborting");
+		PMD_DRV_LOG(NOTICE, sc, "MCP response failure, aborting");
 		return -1;
 	}
@@ -8978,10 +8991,10 @@ static uint8_t bnx2x_prev_is_path_marked(struct bnx2x_softc *sc)
 	if (tmp) {
 		if (tmp->aer) {
-			PMD_DRV_LOG(DEBUG,
+			PMD_DRV_LOG(DEBUG, sc,
 				    "Path %d/%d/%d was marked by AER",
 				    sc->pcie_bus, sc->pcie_device, SC_PATH(sc));
 		} else {
 			rc = TRUE;
-			PMD_DRV_LOG(DEBUG,
+			PMD_DRV_LOG(DEBUG, sc,
 				    "Path %d/%d/%d was already cleaned from previous drivers",
 				    sc->pcie_bus, sc->pcie_device, SC_PATH(sc));
@@ -9004,9 +9017,9 @@ static int bnx2x_prev_mark_path(struct bnx2x_softc *sc, uint8_t after_undi)
 	if (tmp) {
 		if (!tmp->aer) {
-			PMD_DRV_LOG(DEBUG,
+			PMD_DRV_LOG(DEBUG, sc,
 				    "Re-marking AER in path %d/%d/%d",
 				    sc->pcie_bus, sc->pcie_device, SC_PATH(sc));
 		} else {
-			PMD_DRV_LOG(DEBUG,
+			PMD_DRV_LOG(DEBUG, sc,
 				    "Removing AER indication from path %d/%d/%d",
 				    sc->pcie_bus, sc->pcie_device, SC_PATH(sc));
@@ -9024,5 +9037,5 @@ static int bnx2x_prev_mark_path(struct bnx2x_softc *sc, uint8_t after_undi)
 			 RTE_CACHE_LINE_SIZE);
 	if (!tmp) {
-		PMD_DRV_LOG(NOTICE, "Failed to allocate 'bnx2x_prev_list_node'");
+		PMD_DRV_LOG(NOTICE, sc, "Failed to allocate 'bnx2x_prev_list_node'");
 		return -1;
 	}
@@ -9049,5 +9062,5 @@ static int bnx2x_do_flr(struct bnx2x_softc *sc)
 	/* only E2 and onwards support FLR */
 	if (CHIP_IS_E1x(sc)) {
-		PMD_DRV_LOG(WARNING, "FLR not supported in E1H");
+		PMD_DRV_LOG(WARNING, sc, "FLR not supported in E1H");
 		return -1;
 	}
@@ -9055,5 +9068,5 @@ static int bnx2x_do_flr(struct bnx2x_softc *sc)
 	/* only bootcode REQ_BC_VER_4_INITIATE_FLR and onwards support flr */
 	if (sc->devinfo.bc_ver < REQ_BC_VER_4_INITIATE_FLR) {
-		PMD_DRV_LOG(WARNING,
+		PMD_DRV_LOG(WARNING, sc,
 			    "FLR not supported by BC_VER: 0x%08x",
 			    sc->devinfo.bc_ver);
@@ -9072,5 +9085,5 @@ static int bnx2x_do_flr(struct bnx2x_softc *sc)
 	}
 
-	PMD_DRV_LOG(NOTICE, "PCIE transaction is not cleared, "
+	PMD_DRV_LOG(NOTICE, sc, "PCIE transaction is not cleared, "
 		    "proceeding with reset anyway");
 
@@ -9220,5 +9233,5 @@ static int bnx2x_prev_unload_common(struct bnx2x_softc *sc)
 			tmp_reg = REG_RD(sc, DORQ_REG_NORM_CID_OFST);
 			if (tmp_reg == 0x7) {
-				PMD_DRV_LOG(DEBUG, "UNDI previously loaded");
+				PMD_DRV_LOG(DEBUG, sc, "UNDI previously loaded");
 				prev_undi = TRUE;
 				/* clear the UNDI indication */
@@ -9239,5 +9252,5 @@ static int bnx2x_prev_unload_common(struct bnx2x_softc *sc)
 			}
 
-			PMD_DRV_LOG(DEBUG, "BRB still has 0x%08x", tmp_reg);
+			PMD_DRV_LOG(DEBUG, sc, "BRB still has 0x%08x", tmp_reg);
 
 			/* reset timer as long as BRB actually gets emptied */
@@ -9257,5 +9270,5 @@ static int bnx2x_prev_unload_common(struct bnx2x_softc *sc)
 
 		if (!timer_count) {
-			PMD_DRV_LOG(NOTICE, "Failed to empty BRB");
+			PMD_DRV_LOG(NOTICE, sc, "Failed to empty BRB");
 		}
 	}
@@ -9312,5 +9325,5 @@ static int bnx2x_prev_unload_uncommon(struct bnx2x_softc *sc)
 	}
 
-	PMD_DRV_LOG(INFO, "Could not FLR");
+	PMD_DRV_LOG(INFO, sc, "Could not FLR");
 
 	/* Close the MCP request, return failure */
@@ -9359,5 +9372,5 @@ static int bnx2x_prev_unload(struct bnx2x_softc *sc)
 		fw = bnx2x_fw_command(sc, DRV_MSG_CODE_UNLOAD_REQ_WOL_DIS, 0);
 		if (!fw) {
-			PMD_DRV_LOG(NOTICE, "MCP response failure, aborting");
+			PMD_DRV_LOG(NOTICE, sc, "MCP response failure, aborting");
 			rc = -1;
 			break;
@@ -9379,5 +9392,5 @@ static int bnx2x_prev_unload(struct bnx2x_softc *sc)
 
 	if (!time_counter || rc) {
-		PMD_DRV_LOG(NOTICE, "Failed to unload previous driver!");
+		PMD_DRV_LOG(NOTICE, sc, "Failed to unload previous driver!");
 		rc = -1;
 	}
@@ -9396,5 +9409,5 @@ bnx2x_dcbx_set_state(struct bnx2x_softc *sc, uint8_t dcb_on, uint32_t dcbx_enabl
 		sc->dcbx_enabled = BNX2X_DCBX_ENABLED_INVALID;
 	}
-	PMD_DRV_LOG(DEBUG,
+	PMD_DRV_LOG(DEBUG, sc,
 		    "DCB state [%s:%s]",
 		    dcb_on ? "ON" : "OFF",
@@ -9429,5 +9442,5 @@ static void bnx2x_init_multi_cos(struct bnx2x_softc *sc)
 			sc->prio_to_cos[pri] = cos;
 		} else {
-			PMD_DRV_LOG(WARNING,
+			PMD_DRV_LOG(WARNING, sc,
 				    "Invalid COS %d for priority %d "
 				    "(max COS is %d), setting to 0", cos, pri,
@@ -9450,5 +9463,5 @@ static int bnx2x_pci_get_caps(struct bnx2x_softc *sc)
 					 RTE_CACHE_LINE_SIZE);
 	if (!cap) {
-		PMD_DRV_LOG(NOTICE, "Failed to allocate memory");
+		PMD_DRV_LOG(NOTICE, sc, "Failed to allocate memory");
 		return -ENOMEM;
 	}
@@ -9461,5 +9474,5 @@ static int bnx2x_pci_get_caps(struct bnx2x_softc *sc)
 	if (!(status & PCIM_STATUS_CAPPRESENT)) {
 #endif
-		PMD_DRV_LOG(NOTICE, "PCIe capability reading failed");
+		PMD_DRV_LOG(NOTICE, sc, "PCIe capability reading failed");
 		return -1;
 	}
@@ -9481,5 +9494,5 @@ static int bnx2x_pci_get_caps(struct bnx2x_softc *sc)
 					RTE_CACHE_LINE_SIZE);
 		if (!cap->next) {
-			PMD_DRV_LOG(NOTICE, "Failed to allocate memory");
+			PMD_DRV_LOG(NOTICE, sc, "Failed to allocate memory");
 			return -ENOMEM;
 		}
@@ -9517,10 +9530,10 @@ void bnx2x_load_firmware(struct bnx2x_softc *sc)
 	f = open(fwname, O_RDONLY);
 	if (f < 0) {
-		PMD_DRV_LOG(NOTICE, "Can't open firmware file");
+		PMD_DRV_LOG(NOTICE, sc, "Can't open firmware file");
 		return;
 	}
 
 	if (fstat(f, &st) < 0) {
-		PMD_DRV_LOG(NOTICE, "Can't stat firmware file");
+		PMD_DRV_LOG(NOTICE, sc, "Can't stat firmware file");
 		close(f);
 		return;
@@ -9529,5 +9542,5 @@ void bnx2x_load_firmware(struct bnx2x_softc *sc)
 	sc->firmware = rte_zmalloc("bnx2x_fw", st.st_size, RTE_CACHE_LINE_SIZE);
 	if (!sc->firmware) {
-		PMD_DRV_LOG(NOTICE, "Can't allocate memory for firmware");
+		PMD_DRV_LOG(NOTICE, sc, "Can't allocate memory for firmware");
 		close(f);
 		return;
@@ -9535,5 +9548,5 @@ void bnx2x_load_firmware(struct bnx2x_softc *sc)
 
 	if (read(f, sc->firmware, st.st_size) != st.st_size) {
-		PMD_DRV_LOG(NOTICE, "Can't read firmware data");
+		PMD_DRV_LOG(NOTICE, sc, "Can't read firmware data");
 		close(f);
 		return;
@@ -9543,8 +9556,9 @@ void bnx2x_load_firmware(struct bnx2x_softc *sc)
 	sc->fw_len = st.st_size;
 	if (sc->fw_len < FW_HEADER_LEN) {
-		PMD_DRV_LOG(NOTICE, "Invalid fw size: %" PRIu64, sc->fw_len);
+		PMD_DRV_LOG(NOTICE, sc,
+			    "Invalid fw size: %" PRIu64, sc->fw_len);
 		return;
 	}
-	PMD_DRV_LOG(DEBUG, "fw_len = %" PRIu64, sc->fw_len);
+	PMD_DRV_LOG(DEBUG, sc, "fw_len = %" PRIu64, sc->fw_len);
 }
 
@@ -9613,9 +9627,9 @@ int bnx2x_attach(struct bnx2x_softc *sc)
 	int rc;
 
-	PMD_DRV_LOG(DEBUG, "Starting attach...");
+	PMD_DRV_LOG(DEBUG, sc, "Starting attach...");
 
 	rc = bnx2x_pci_get_caps(sc);
 	if (rc) {
-		PMD_DRV_LOG(NOTICE, "PCIe caps reading was failed");
+		PMD_DRV_LOG(NOTICE, sc, "PCIe caps reading was failed");
 		return rc;
 	}
@@ -9656,5 +9670,5 @@ int bnx2x_attach(struct bnx2x_softc *sc)
 		/* get device info and set params */
 		if (bnx2x_get_device_info(sc) != 0) {
-			PMD_DRV_LOG(NOTICE, "getting device info");
+			PMD_DRV_LOG(NOTICE, sc, "getting device info");
 			return -ENXIO;
 		}
@@ -9755,5 +9769,5 @@ bnx2x_igu_clear_sb_gen(struct bnx2x_softc *sc, uint8_t func, uint8_t idu_sb_id,
 	mb();
 
-	PMD_DRV_LOG(DEBUG, "write 0x%08x to IGU(via GRC) addr 0x%x",
+	PMD_DRV_LOG(DEBUG, sc, "write 0x%08x to IGU(via GRC) addr 0x%x",
 		    ctl, igu_addr_ctl);
 	REG_WR(sc, igu_addr_ctl, ctl);
@@ -9767,5 +9781,5 @@ bnx2x_igu_clear_sb_gen(struct bnx2x_softc *sc, uint8_t func, uint8_t idu_sb_id,
 
 	if (!(REG_RD(sc, igu_addr_ack) & sb_bit)) {
-		PMD_DRV_LOG(DEBUG,
+		PMD_DRV_LOG(DEBUG, sc,
 			    "Unable to finish IGU cleanup: "
 			    "idu_sb_id %d offset %d bit %d (cnt %d)",
@@ -9787,5 +9801,5 @@ static void bnx2x_reset_common(struct bnx2x_softc *sc)
 	uint32_t val = 0x1400;
 
-	PMD_INIT_FUNC_TRACE();
+	PMD_INIT_FUNC_TRACE(sc);
 
 	/* reset_common */
@@ -9996,5 +10010,6 @@ static int bnx2x_init_hw_common(struct bnx2x_softc *sc)
 	uint32_t val;
 
-	PMD_DRV_LOG(DEBUG, "starting common init for func %d", SC_ABS_FUNC(sc));
+	PMD_DRV_LOG(DEBUG, sc,
+		    "starting common init for func %d", SC_ABS_FUNC(sc));
 
 	/*
@@ -10079,10 +10094,10 @@ static int bnx2x_init_hw_common(struct bnx2x_softc *sc)
 	val = REG_RD(sc, PXP2_REG_RQ_CFG_DONE);
 	if (val != 1) {
-		PMD_DRV_LOG(NOTICE, "PXP2 CFG failed");
+		PMD_DRV_LOG(NOTICE, sc, "PXP2 CFG failed");
 		return -1;
 	}
 	val = REG_RD(sc, PXP2_REG_RD_INIT_DONE);
 	if (val != 1) {
-		PMD_DRV_LOG(NOTICE, "PXP2 RD_INIT failed");
+		PMD_DRV_LOG(NOTICE, sc, "PXP2 RD_INIT failed");
 		return -1;
 	}
@@ -10206,5 +10221,5 @@ static int bnx2x_init_hw_common(struct bnx2x_softc *sc)
 
 		if (val != 1) {
-			PMD_DRV_LOG(NOTICE, "ATC_INIT failed");
+			PMD_DRV_LOG(NOTICE, sc, "ATC_INIT failed");
 			return -1;
 		}
@@ -10344,5 +10359,5 @@ static int bnx2x_init_hw_common(struct bnx2x_softc *sc)
 	if (sizeof(union cdu_context) != 1024) {
 /* we currently assume that a context is 1024 bytes */
-		PMD_DRV_LOG(NOTICE,
+		PMD_DRV_LOG(NOTICE, sc,
 			    "please adjust the size of cdu_context(%ld)",
 			    (long)sizeof(union cdu_context));
@@ -10406,15 +10421,15 @@ static int bnx2x_init_hw_common(struct bnx2x_softc *sc)
 	val = reg_poll(sc, CFC_REG_LL_INIT_DONE, 1, 100, 10);
 	if (val != 1) {
-		PMD_DRV_LOG(NOTICE, "CFC LL_INIT failed");
+		PMD_DRV_LOG(NOTICE, sc, "CFC LL_INIT failed");
 		return -1;
 	}
 	val = reg_poll(sc, CFC_REG_AC_INIT_DONE, 1, 100, 10);
 	if (val != 1) {
-		PMD_DRV_LOG(NOTICE, "CFC AC_INIT failed");
+		PMD_DRV_LOG(NOTICE, sc, "CFC AC_INIT failed");
 		return -1;
 	}
 	val = reg_poll(sc, CFC_REG_CAM_INIT_DONE, 1, 100, 10);
 	if (val != 1) {
-		PMD_DRV_LOG(NOTICE, "CFC CAM_INIT failed");
+		PMD_DRV_LOG(NOTICE, sc, "CFC CAM_INIT failed");
 		return -1;
 	}
@@ -10469,5 +10484,5 @@ static int bnx2x_init_hw_port(struct bnx2x_softc *sc)
 	uint32_t val;
 
-	PMD_DRV_LOG(DEBUG, "starting port init for port %d", port);
+	PMD_DRV_LOG(DEBUG, sc, "starting port init for port %d", port);
 
 	REG_WR(sc, NIG_REG_MASK_INTERRUPT_PORT0 + port * 4, 0);
@@ -10696,5 +10711,5 @@ bnx2x_flr_clnup_poll_hw_counter(struct bnx2x_softc *sc, uint32_t reg,
 
 	if (val != 0) {
-		PMD_DRV_LOG(NOTICE, "%s usage count=%d", msg, val);
+		PMD_DRV_LOG(NOTICE, sc, "%s usage count=%d", msg, val);
 		return -1;
 	}
@@ -10788,5 +10803,5 @@ bnx2x_send_final_clnup(struct bnx2x_softc *sc, uint8_t clnup_func,
 
 	if (REG_RD(sc, comp_addr)) {
-		PMD_DRV_LOG(NOTICE,
+		PMD_DRV_LOG(NOTICE, sc,
 			    "Cleanup complete was not 0 before sending");
 		return -1;
@@ -10801,6 +10816,6 @@ bnx2x_send_final_clnup(struct bnx2x_softc *sc, uint8_t clnup_func,
 
 	if (bnx2x_flr_clnup_reg_poll(sc, comp_addr, 1, poll_cnt) != 1) {
-		PMD_DRV_LOG(NOTICE, "FW final cleanup did not succeed");
-		PMD_DRV_LOG(DEBUG, "At timeout completion address contained %x",
+		PMD_DRV_LOG(NOTICE, sc, "FW final cleanup did not succeed");
+		PMD_DRV_LOG(DEBUG, sc, "At timeout completion address contained %x",
 			    (REG_RD(sc, comp_addr)));
 		rte_panic("FLR cleanup failed");
@@ -10918,26 +10933,28 @@ static void bnx2x_hw_enable_status(struct bnx2x_softc *sc)
 
 	val = REG_RD(sc, CFC_REG_WEAK_ENABLE_PF);
-	PMD_DRV_LOG(DEBUG, "CFC_REG_WEAK_ENABLE_PF is 0x%x", val);
+	PMD_DRV_LOG(DEBUG, sc, "CFC_REG_WEAK_ENABLE_PF is 0x%x", val);
 
 	val = REG_RD(sc, PBF_REG_DISABLE_PF);
-	PMD_DRV_LOG(DEBUG, "PBF_REG_DISABLE_PF is 0x%x", val);
+	PMD_DRV_LOG(DEBUG, sc, "PBF_REG_DISABLE_PF is 0x%x", val);
 
 	val = REG_RD(sc, IGU_REG_PCI_PF_MSI_EN);
-	PMD_DRV_LOG(DEBUG, "IGU_REG_PCI_PF_MSI_EN is 0x%x", val);
+	PMD_DRV_LOG(DEBUG, sc, "IGU_REG_PCI_PF_MSI_EN is 0x%x", val);
 
 	val = REG_RD(sc, IGU_REG_PCI_PF_MSIX_EN);
-	PMD_DRV_LOG(DEBUG, "IGU_REG_PCI_PF_MSIX_EN is 0x%x", val);
+	PMD_DRV_LOG(DEBUG, sc, "IGU_REG_PCI_PF_MSIX_EN is 0x%x", val);
 
 	val = REG_RD(sc, IGU_REG_PCI_PF_MSIX_FUNC_MASK);
-	PMD_DRV_LOG(DEBUG, "IGU_REG_PCI_PF_MSIX_FUNC_MASK is 0x%x", val);
+	PMD_DRV_LOG(DEBUG, sc, "IGU_REG_PCI_PF_MSIX_FUNC_MASK is 0x%x", val);
 
 	val = REG_RD(sc, PGLUE_B_REG_SHADOW_BME_PF_7_0_CLR);
-	PMD_DRV_LOG(DEBUG, "PGLUE_B_REG_SHADOW_BME_PF_7_0_CLR is 0x%x", val);
+	PMD_DRV_LOG(DEBUG, sc,
+		    "PGLUE_B_REG_SHADOW_BME_PF_7_0_CLR is 0x%x", val);
 
 	val = REG_RD(sc, PGLUE_B_REG_FLR_REQUEST_PF_7_0_CLR);
-	PMD_DRV_LOG(DEBUG, "PGLUE_B_REG_FLR_REQUEST_PF_7_0_CLR is 0x%x", val);
+	PMD_DRV_LOG(DEBUG, sc,
+		    "PGLUE_B_REG_FLR_REQUEST_PF_7_0_CLR is 0x%x", val);
 
 	val = REG_RD(sc, PGLUE_B_REG_INTERNAL_PFID_ENABLE_MASTER);
-	PMD_DRV_LOG(DEBUG, "PGLUE_B_REG_INTERNAL_PFID_ENABLE_MASTER is 0x%x",
+	PMD_DRV_LOG(DEBUG, sc, "PGLUE_B_REG_INTERNAL_PFID_ENABLE_MASTER is 0x%x",
 		    val);
 }
@@ -10983,5 +11000,5 @@ static int bnx2x_pf_flr_clnup(struct bnx2x_softc *sc)
 	/* Verify no pending pci transactions */
 	if (bnx2x_is_pcie_pending(sc)) {
-		PMD_DRV_LOG(NOTICE, "PCIE Transactions still pending");
+		PMD_DRV_LOG(NOTICE, sc, "PCIE Transactions still pending");
 	}
 
@@ -11010,5 +11027,5 @@ static int bnx2x_init_hw_func(struct bnx2x_softc *sc)
 	uint32_t i;
 
-	PMD_DRV_LOG(DEBUG, "starting func init for func %d", func);
+	PMD_DRV_LOG(DEBUG, sc, "starting func init for func %d", func);
 
 	/* FLR cleanup */
@@ -11016,5 +11033,5 @@ static int bnx2x_init_hw_func(struct bnx2x_softc *sc)
 		rc = bnx2x_pf_flr_clnup(sc);
 		if (rc) {
-			PMD_DRV_LOG(NOTICE, "FLR cleanup failed!");
+			PMD_DRV_LOG(NOTICE, sc, "FLR cleanup failed!");
 			return rc;
 		}
@@ -11263,5 +11280,5 @@ static int bnx2x_init_hw_func(struct bnx2x_softc *sc)
 		val = REG_RD(sc, main_mem_prty_clr);
 		if (val) {
-			PMD_DRV_LOG(DEBUG,
+			PMD_DRV_LOG(DEBUG, sc,
 				    "Parity errors in HC block during function init (0x%x)!",
 				    val);
@@ -11301,5 +11318,5 @@ static void bnx2x_link_reset(struct bnx2x_softc *sc)
 	} else {
 		if (!CHIP_REV_IS_SLOW(sc)) {
-			PMD_DRV_LOG(WARNING,
+			PMD_DRV_LOG(WARNING, sc,
 				    "Bootcode is missing - cannot reset link");
 		}
@@ -11331,5 +11348,5 @@ static void bnx2x_reset_port(struct bnx2x_softc *sc)
 	val = REG_RD(sc, BRB1_REG_PORT_NUM_OCC_BLOCKS_0 + port * 4);
 	if (val) {
-		PMD_DRV_LOG(DEBUG,
+		PMD_DRV_LOG(DEBUG, sc,
 			    "BRB1 is not empty, %d blocks are occupied", val);
 	}
@@ -11525,8 +11542,8 @@ static int ecore_gunzip(struct bnx2x_softc *sc, const uint8_t * zbuf, int len)
 	int data_begin = cut_gzip_prefix(zbuf, len);
 
-	PMD_DRV_LOG(DEBUG, "ecore_gunzip %d", len);
+	PMD_DRV_LOG(DEBUG, sc, "ecore_gunzip %d", len);
 
 	if (data_begin <= 0) {
-		PMD_DRV_LOG(NOTICE, "bad gzip prefix");
+		PMD_DRV_LOG(NOTICE, sc, "bad gzip prefix");
 		return -1;
 	}
@@ -11540,5 +11557,5 @@ static int ecore_gunzip(struct bnx2x_softc *sc, const uint8_t * zbuf, int len)
 	ret = inflateInit2(&zlib_stream, -MAX_WBITS);
 	if (ret != Z_OK) {
-		PMD_DRV_LOG(NOTICE, "zlib inflateInit2 error");
+		PMD_DRV_LOG(NOTICE, sc, "zlib inflateInit2 error");
 		return ret;
 	}
@@ -11546,5 +11563,5 @@ static int ecore_gunzip(struct bnx2x_softc *sc, const uint8_t * zbuf, int len)
 	ret = inflate(&zlib_stream, Z_FINISH);
 	if ((ret != Z_STREAM_END) && (ret != Z_OK)) {
-		PMD_DRV_LOG(NOTICE, "zlib inflate error: %d %s", ret,
+		PMD_DRV_LOG(NOTICE, sc, "zlib inflate error: %d %s", ret,
 			    zlib_stream.msg);
 	}
@@ -11552,5 +11569,5 @@ static int ecore_gunzip(struct bnx2x_softc *sc, const uint8_t * zbuf, int len)
 	sc->gz_outlen = zlib_stream.total_out;
 	if (sc->gz_outlen & 0x3) {
-		PMD_DRV_LOG(NOTICE, "firmware is not aligned. gz_outlen == %d",
+		PMD_DRV_LOG(NOTICE, sc, "firmware is not aligned. gz_outlen == %d",
 			    sc->gz_outlen);
 	}
@@ -11671,5 +11688,5 @@ void bnx2x_print_adapter_info(struct bnx2x_softc *sc)
 	__rte_unused uint32_t ext_phy_type;
 
-	PMD_INIT_FUNC_TRACE();
+	PMD_INIT_FUNC_TRACE(sc);
 	if (sc->link_vars.phy_flags & PHY_XGXS_FLAG)
 		ext_phy_type = ELINK_XGXS_EXT_PHY_TYPE(REG_RD(sc,
@@ -11690,32 +11707,33 @@ void bnx2x_print_adapter_info(struct bnx2x_softc *sc)
 									 [0].external_phy_config)));
 
-	PMD_INIT_LOG(DEBUG, "\n\n===================================\n");
+	PMD_DRV_LOG(INFO, sc, "\n\n===================================\n");
 	/* Hardware chip info. */
-	PMD_INIT_LOG(DEBUG, "%12s : %#08x", "ASIC", sc->devinfo.chip_id);
-	PMD_INIT_LOG(DEBUG, "%12s : %c%d", "Rev", (CHIP_REV(sc) >> 12) + 'A',
+	PMD_DRV_LOG(INFO, sc, "%12s : %#08x", "ASIC", sc->devinfo.chip_id);
+	PMD_DRV_LOG(INFO, sc, "%12s : %c%d", "Rev", (CHIP_REV(sc) >> 12) + 'A',
 		     (CHIP_METAL(sc) >> 4));
 
 	/* Bus info. */
-	PMD_INIT_LOG(DEBUG, "%12s : %d, ", "Bus PCIe", sc->devinfo.pcie_link_width);
+	PMD_DRV_LOG(INFO, sc,
+		    "%12s : %d, ", "Bus PCIe", sc->devinfo.pcie_link_width);
 	switch (sc->devinfo.pcie_link_speed) {
 	case 1:
-		PMD_INIT_LOG(DEBUG, "%23s", "2.5 Gbps");
+		PMD_DRV_LOG(INFO, sc, "%23s", "2.5 Gbps");
 		break;
 	case 2:
-		PMD_INIT_LOG(DEBUG, "%21s", "5 Gbps");
+		PMD_DRV_LOG(INFO, sc, "%21s", "5 Gbps");
 		break;
 	case 4:
-		PMD_INIT_LOG(DEBUG, "%21s", "8 Gbps");
+		PMD_DRV_LOG(INFO, sc, "%21s", "8 Gbps");
 		break;
 	default:
-		PMD_INIT_LOG(DEBUG, "%33s", "Unknown link speed");
+		PMD_DRV_LOG(INFO, sc, "%33s", "Unknown link speed");
 	}
 
 	/* Device features. */
-	PMD_INIT_LOG(DEBUG, "%12s : ", "Flags");
+	PMD_DRV_LOG(INFO, sc, "%12s : ", "Flags");
 
 	/* Miscellaneous flags. */
 	if (sc->devinfo.pcie_cap_flags & BNX2X_MSI_CAPABLE_FLAG) {
-		PMD_INIT_LOG(DEBUG, "%18s", "MSI");
+		PMD_DRV_LOG(INFO, sc, "%18s", "MSI");
 		i++;
 	}
@@ -11723,20 +11741,21 @@ void bnx2x_print_adapter_info(struct bnx2x_softc *sc)
 	if (sc->devinfo.pcie_cap_flags & BNX2X_MSIX_CAPABLE_FLAG) {
 		if (i > 0)
-			PMD_INIT_LOG(DEBUG, "|");
-		PMD_INIT_LOG(DEBUG, "%20s", "MSI-X");
+			PMD_DRV_LOG(INFO, sc, "|");
+		PMD_DRV_LOG(INFO, sc, "%20s", "MSI-X");
 		i++;
 	}
 
 	if (IS_PF(sc)) {
-		PMD_INIT_LOG(DEBUG, "%12s : ", "Queues");
+		PMD_DRV_LOG(INFO, sc, "%12s : ", "Queues");
 		switch (sc->sp->rss_rdata.rss_mode) {
 		case ETH_RSS_MODE_DISABLED:
-			PMD_INIT_LOG(DEBUG, "%19s", "None");
+			PMD_DRV_LOG(INFO, sc, "%19s", "None");
 			break;
 		case ETH_RSS_MODE_REGULAR:
-			PMD_INIT_LOG(DEBUG, "%18s : %d", "RSS", sc->num_queues);
+			PMD_DRV_LOG(INFO, sc,
+				    "%18s : %d", "RSS", sc->num_queues);
 			break;
 		default:
-			PMD_INIT_LOG(DEBUG, "%22s", "Unknown");
+			PMD_DRV_LOG(INFO, sc, "%22s", "Unknown");
 			break;
 		}
@@ -11744,28 +11763,30 @@ void bnx2x_print_adapter_info(struct bnx2x_softc *sc)
 
 	/* RTE and Driver versions */
-	PMD_INIT_LOG(DEBUG, "%12s : %s", "DPDK",
-		     rte_version());
-	PMD_INIT_LOG(DEBUG, "%12s : %s", "Driver",
-		     bnx2x_pmd_version());
+	PMD_DRV_LOG(INFO, sc, "%12s : %s", "DPDK",
+			rte_version());
+	PMD_DRV_LOG(INFO, sc, "%12s : %s", "Driver",
+			bnx2x_pmd_version());
 
 	/* Firmware versions and device features. */
-	PMD_INIT_LOG(DEBUG, "%12s : %d.%d.%d",
+	PMD_DRV_LOG(INFO, sc, "%12s : %d.%d.%d",
 		     "Firmware",
 		     BNX2X_5710_FW_MAJOR_VERSION,
 		     BNX2X_5710_FW_MINOR_VERSION,
 		     BNX2X_5710_FW_REVISION_VERSION);
-	PMD_INIT_LOG(DEBUG, "%12s : %s",
+	PMD_DRV_LOG(INFO, sc, "%12s : %s",
 		     "Bootcode", sc->devinfo.bc_ver_str);
 
-	PMD_INIT_LOG(DEBUG, "\n\n===================================\n");
-	PMD_INIT_LOG(DEBUG, "%12s : %u", "Bnx2x Func", sc->pcie_func);
-	PMD_INIT_LOG(DEBUG, "%12s : %s", "Bnx2x Flags", get_bnx2x_flags(sc->flags));
-	PMD_INIT_LOG(DEBUG, "%12s : %s", "DMAE Is",
+	PMD_DRV_LOG(INFO, sc, "\n\n===================================\n");
+	PMD_DRV_LOG(INFO, sc, "%12s : %u", "Bnx2x Func", sc->pcie_func);
+	PMD_DRV_LOG(INFO, sc,
+		    "%12s : %s", "Bnx2x Flags", get_bnx2x_flags(sc->flags));
+	PMD_DRV_LOG(INFO, sc, "%12s : %s", "DMAE Is",
 		     (sc->dmae_ready ? "Ready" : "Not Ready"));
-	PMD_INIT_LOG(DEBUG, "%12s : %s", "OVLAN", (OVLAN(sc) ? "YES" : "NO"));
-	PMD_INIT_LOG(DEBUG, "%12s : %s", "MF", (IS_MF(sc) ? "YES" : "NO"));
-	PMD_INIT_LOG(DEBUG, "%12s : %u", "MTU", sc->mtu);
-	PMD_INIT_LOG(DEBUG, "%12s : %s", "PHY Type", get_ext_phy_type(ext_phy_type));
-	PMD_INIT_LOG(DEBUG, "%12s : %x:%x:%x:%x:%x:%x", "MAC Addr",
+	PMD_DRV_LOG(INFO, sc, "%12s : %s", "OVLAN", (OVLAN(sc) ? "YES" : "NO"));
+	PMD_DRV_LOG(INFO, sc, "%12s : %s", "MF", (IS_MF(sc) ? "YES" : "NO"));
+	PMD_DRV_LOG(INFO, sc, "%12s : %u", "MTU", sc->mtu);
+	PMD_DRV_LOG(INFO, sc,
+		    "%12s : %s", "PHY Type", get_ext_phy_type(ext_phy_type));
+	PMD_DRV_LOG(INFO, sc, "%12s : %x:%x:%x:%x:%x:%x", "MAC Addr",
 			sc->link_params.mac_addr[0],
 			sc->link_params.mac_addr[1],
@@ -11774,12 +11795,13 @@ void bnx2x_print_adapter_info(struct bnx2x_softc *sc)
 			sc->link_params.mac_addr[4],
 			sc->link_params.mac_addr[5]);
-	PMD_INIT_LOG(DEBUG, "%12s : %s", "RX Mode", get_rx_mode(sc->rx_mode));
-	PMD_INIT_LOG(DEBUG, "%12s : %s", "State", get_state(sc->state));
+	PMD_DRV_LOG(INFO, sc, "%12s : %s", "RX Mode", get_rx_mode(sc->rx_mode));
+	PMD_DRV_LOG(INFO, sc, "%12s : %s", "State", get_state(sc->state));
 	if (sc->recovery_state)
-		PMD_INIT_LOG(DEBUG, "%12s : %s", "Recovery",
+		PMD_DRV_LOG(INFO, sc, "%12s : %s", "Recovery",
 			     get_recovery_state(sc->recovery_state));
-	PMD_INIT_LOG(DEBUG, "%12s : CQ = %lx,  EQ = %lx", "SPQ Left",
+	PMD_DRV_LOG(INFO, sc, "%12s : CQ = %lx,  EQ = %lx", "SPQ Left",
 		     sc->cq_spq_left, sc->eq_spq_left);
-	PMD_INIT_LOG(DEBUG, "%12s : %x", "Switch", sc->link_params.switch_cfg);
-	PMD_INIT_LOG(DEBUG, "\n\n===================================\n");
+	PMD_DRV_LOG(INFO, sc,
+		    "%12s : %x", "Switch", sc->link_params.switch_cfg);
+	PMD_DRV_LOG(INFO, sc, "\n\n===================================\n");
 }
diff --git a/drivers/net/bnx2x/bnx2x.h b/drivers/net/bnx2x/bnx2x.h
index 0f6024fba..2d545f514 100644
--- a/drivers/net/bnx2x/bnx2x.h
+++ b/drivers/net/bnx2x/bnx2x.h
@@ -804,4 +804,8 @@ struct bnx2x_mf_info {
 /* Device information data structure. */
 struct bnx2x_devinfo {
+#if 1
+#define NAME_SIZE 128
+	char name[NAME_SIZE];
+#endif
 	/* PCIe info */
 	uint16_t vendor_id;
@@ -1419,5 +1423,5 @@ static inline void
 bnx2x_reg_write8(struct bnx2x_softc *sc, size_t offset, uint8_t val)
 {
-	PMD_DEBUG_PERIODIC_LOG(DEBUG, "offset=0x%08lx val=0x%02x",
+	PMD_DEBUG_PERIODIC_LOG(DEBUG, sc, "offset=0x%08lx val=0x%02x",
 			       (unsigned long)offset, val);
 	rte_write8(val, ((uint8_t *)sc->bar[BAR0].base_addr + offset));
@@ -1429,8 +1433,8 @@ bnx2x_reg_write16(struct bnx2x_softc *sc, size_t offset, uint16_t val)
 #ifdef RTE_LIBRTE_BNX2X_DEBUG_PERIODIC
 	if ((offset % 2) != 0)
-		PMD_DRV_LOG(NOTICE, "Unaligned 16-bit write to 0x%08lx",
+		PMD_DRV_LOG(NOTICE, sc, "Unaligned 16-bit write to 0x%08lx",
 			    (unsigned long)offset);
 #endif
-	PMD_DEBUG_PERIODIC_LOG(DEBUG, "offset=0x%08lx val=0x%04x",
+	PMD_DEBUG_PERIODIC_LOG(DEBUG, sc, "offset=0x%08lx val=0x%04x",
 			       (unsigned long)offset, val);
 	rte_write16(val, ((uint8_t *)sc->bar[BAR0].base_addr + offset));
@@ -1443,9 +1447,9 @@ bnx2x_reg_write32(struct bnx2x_softc *sc, size_t offset, uint32_t val)
 #ifdef RTE_LIBRTE_BNX2X_DEBUG_PERIODIC
 	if ((offset % 4) != 0)
-		PMD_DRV_LOG(NOTICE, "Unaligned 32-bit write to 0x%08lx",
+		PMD_DRV_LOG(NOTICE, sc, "Unaligned 32-bit write to 0x%08lx",
 			    (unsigned long)offset);
 #endif
 
-	PMD_DEBUG_PERIODIC_LOG(DEBUG, "offset=0x%08lx val=0x%08x",
+	PMD_DEBUG_PERIODIC_LOG(DEBUG, sc, "offset=0x%08lx val=0x%08x",
 			       (unsigned long)offset, val);
 	rte_write32(val, ((uint8_t *)sc->bar[BAR0].base_addr + offset));
@@ -1458,5 +1462,5 @@ bnx2x_reg_read8(struct bnx2x_softc *sc, size_t offset)
 
 	val = rte_read8((uint8_t *)sc->bar[BAR0].base_addr + offset);
-	PMD_DEBUG_PERIODIC_LOG(DEBUG, "offset=0x%08lx val=0x%02x",
+	PMD_DEBUG_PERIODIC_LOG(DEBUG, sc, "offset=0x%08lx val=0x%02x",
 			       (unsigned long)offset, val);
 
@@ -1471,10 +1475,10 @@ bnx2x_reg_read16(struct bnx2x_softc *sc, size_t offset)
 #ifdef RTE_LIBRTE_BNX2X_DEBUG_PERIODIC
 	if ((offset % 2) != 0)
-		PMD_DRV_LOG(NOTICE, "Unaligned 16-bit read from 0x%08lx",
+		PMD_DRV_LOG(NOTICE, sc, "Unaligned 16-bit read from 0x%08lx",
 			    (unsigned long)offset);
 #endif
 
 	val = rte_read16(((uint8_t *)sc->bar[BAR0].base_addr + offset));
-	PMD_DEBUG_PERIODIC_LOG(DEBUG, "offset=0x%08lx val=0x%08x",
+	PMD_DEBUG_PERIODIC_LOG(DEBUG, sc, "offset=0x%08lx val=0x%08x",
 			       (unsigned long)offset, val);
 
@@ -1489,10 +1493,10 @@ bnx2x_reg_read32(struct bnx2x_softc *sc, size_t offset)
 #ifdef RTE_LIBRTE_BNX2X_DEBUG_PERIODIC
 	if ((offset % 4) != 0)
-		PMD_DRV_LOG(NOTICE, "Unaligned 32-bit read from 0x%08lx",
+		PMD_DRV_LOG(NOTICE, sc, "Unaligned 32-bit read from 0x%08lx",
 			    (unsigned long)offset);
 #endif
 
 	val = rte_read32(((uint8_t *)sc->bar[BAR0].base_addr + offset));
-	PMD_DEBUG_PERIODIC_LOG(DEBUG, "offset=0x%08lx val=0x%08x",
+	PMD_DEBUG_PERIODIC_LOG(DEBUG, sc, "offset=0x%08lx val=0x%08x",
 			       (unsigned long)offset, val);
 
@@ -1971,5 +1975,5 @@ bnx2x_set_rx_mode(struct bnx2x_softc *sc)
 		}
 	} else {
-		PMD_DRV_LOG(NOTICE, "Card is not ready to change mode");
+		PMD_DRV_LOG(NOTICE, sc, "Card is not ready to change mode");
 	}
 }
@@ -1979,5 +1983,5 @@ static inline int pci_read(struct bnx2x_softc *sc, size_t addr,
 {
 	if (rte_pci_read_config(sc->pci_dev, val, size, addr) <= 0) {
-		PMD_DRV_LOG(ERR, "Can't read from PCI config space");
+		PMD_DRV_LOG(ERR, sc, "Can't read from PCI config space");
 		return ENXIO;
 	}
@@ -1992,5 +1996,5 @@ static inline int pci_write_word(struct bnx2x_softc *sc, size_t addr, off_t val)
 	if (rte_pci_write_config(sc->pci_dev, &val16,
 				     sizeof(val16), addr) <= 0) {
-		PMD_DRV_LOG(ERR, "Can't write to PCI config space");
+		PMD_DRV_LOG(ERR, sc, "Can't write to PCI config space");
 		return ENXIO;
 	}
@@ -2004,5 +2008,5 @@ static inline int pci_write_long(struct bnx2x_softc *sc, size_t addr, off_t val)
 	if (rte_pci_write_config(sc->pci_dev, &val32,
 				     sizeof(val32), addr) <= 0) {
-		PMD_DRV_LOG(ERR, "Can't write to PCI config space");
+		PMD_DRV_LOG(ERR, sc, "Can't write to PCI config space");
 		return ENXIO;
 	}
diff --git a/drivers/net/bnx2x/bnx2x_ethdev.c b/drivers/net/bnx2x/bnx2x_ethdev.c
index 575271a84..ae2e60a06 100644
--- a/drivers/net/bnx2x/bnx2x_ethdev.c
+++ b/drivers/net/bnx2x/bnx2x_ethdev.c
@@ -86,5 +86,5 @@ bnx2x_link_update(struct rte_eth_dev *dev)
 	struct rte_eth_link link;
 
-	PMD_INIT_FUNC_TRACE();
+	PMD_INIT_FUNC_TRACE(sc);
 
 	bnx2x_link_status_update(sc);
@@ -130,5 +130,5 @@ bnx2x_interrupt_handler(void *param)
 	struct bnx2x_softc *sc = dev->data->dev_private;
 
-	PMD_DEBUG_PERIODIC_LOG(INFO, "Interrupt handled");
+	PMD_DEBUG_PERIODIC_LOG(INFO, sc, "Interrupt handled");
 
 	bnx2x_interrupt_action(dev);
@@ -148,6 +148,6 @@ static void bnx2x_periodic_start(void *param)
 					bnx2x_periodic_start, (void *)dev);
 		if (ret) {
-			PMD_DRV_LOG(ERR, "Unable to start periodic"
-					 " timer rc %d", ret);
+			PMD_DRV_LOG(ERR, sc, "Unable to start periodic"
+					     " timer rc %d", ret);
 			assert(false && "Unable to start periodic timer");
 		}
@@ -177,5 +177,5 @@ bnx2x_dev_configure(struct rte_eth_dev *dev)
 	int mp_ncpus = sysconf(_SC_NPROCESSORS_CONF);
 
-	PMD_INIT_FUNC_TRACE();
+	PMD_INIT_FUNC_TRACE(sc);
 
 	if (rxmode->offloads & DEV_RX_OFFLOAD_JUMBO_FRAME)
@@ -183,5 +183,5 @@ bnx2x_dev_configure(struct rte_eth_dev *dev)
 
 	if (dev->data->nb_tx_queues > dev->data->nb_rx_queues) {
-		PMD_DRV_LOG(ERR, "The number of TX queues is greater than number of RX queues");
+		PMD_DRV_LOG(ERR, sc, "The number of TX queues is greater than number of RX queues");
 		return -EINVAL;
 	}
@@ -189,14 +189,14 @@ bnx2x_dev_configure(struct rte_eth_dev *dev)
 	sc->num_queues = MAX(dev->data->nb_rx_queues, dev->data->nb_tx_queues);
 	if (sc->num_queues > mp_ncpus) {
-		PMD_DRV_LOG(ERR, "The number of queues is more than number of CPUs");
+		PMD_DRV_LOG(ERR, sc, "The number of queues is more than number of CPUs");
 		return -EINVAL;
 	}
 
-	PMD_DRV_LOG(DEBUG, "num_queues=%d, mtu=%d",
+	PMD_DRV_LOG(DEBUG, sc, "num_queues=%d, mtu=%d",
 		       sc->num_queues, sc->mtu);
 
 	/* allocate ilt */
 	if (bnx2x_alloc_ilt_mem(sc) != 0) {
-		PMD_DRV_LOG(ERR, "bnx2x_alloc_ilt_mem was failed");
+		PMD_DRV_LOG(ERR, sc, "bnx2x_alloc_ilt_mem was failed");
 		return -ENXIO;
 	}
@@ -204,5 +204,5 @@ bnx2x_dev_configure(struct rte_eth_dev *dev)
 	/* allocate the host hardware/software hsi structures */
 	if (bnx2x_alloc_hsi_mem(sc) != 0) {
-		PMD_DRV_LOG(ERR, "bnx2x_alloc_hsi_mem was failed");
+		PMD_DRV_LOG(ERR, sc, "bnx2x_alloc_hsi_mem was failed");
 		bnx2x_free_ilt_mem(sc);
 		return -ENXIO;
@@ -218,5 +218,5 @@ bnx2x_dev_start(struct rte_eth_dev *dev)
 	int ret = 0;
 
-	PMD_INIT_FUNC_TRACE();
+	PMD_INIT_FUNC_TRACE(sc);
 
 	/* start the periodic callout */
@@ -226,5 +226,5 @@ bnx2x_dev_start(struct rte_eth_dev *dev)
 	ret = bnx2x_init(sc);
 	if (ret) {
-		PMD_DRV_LOG(DEBUG, "bnx2x_init failed (%d)", ret);
+		PMD_DRV_LOG(DEBUG, sc, "bnx2x_init failed (%d)", ret);
 		return -1;
 	}
@@ -235,10 +235,10 @@ bnx2x_dev_start(struct rte_eth_dev *dev)
 
 		if (rte_intr_enable(&sc->pci_dev->intr_handle))
-			PMD_DRV_LOG(ERR, "rte_intr_enable failed");
+			PMD_DRV_LOG(ERR, sc, "rte_intr_enable failed");
 	}
 
 	ret = bnx2x_dev_rx_init(dev);
 	if (ret != 0) {
-		PMD_DRV_LOG(DEBUG, "bnx2x_dev_rx_init returned error code");
+		PMD_DRV_LOG(DEBUG, sc, "bnx2x_dev_rx_init returned error code");
 		return -3;
 	}
@@ -256,5 +256,5 @@ bnx2x_dev_stop(struct rte_eth_dev *dev)
 	int ret = 0;
 
-	PMD_INIT_FUNC_TRACE();
+	PMD_INIT_FUNC_TRACE(sc);
 
 	if (IS_PF(sc)) {
@@ -269,5 +269,5 @@ bnx2x_dev_stop(struct rte_eth_dev *dev)
 	ret = bnx2x_nic_unload(sc, UNLOAD_NORMAL, FALSE);
 	if (ret) {
-		PMD_DRV_LOG(DEBUG, "bnx2x_nic_unload failed (%d)", ret);
+		PMD_DRV_LOG(DEBUG, sc, "bnx2x_nic_unload failed (%d)", ret);
 		return;
 	}
@@ -281,5 +281,5 @@ bnx2x_dev_close(struct rte_eth_dev *dev)
 	struct bnx2x_softc *sc = dev->data->dev_private;
 
-	PMD_INIT_FUNC_TRACE();
+	PMD_INIT_FUNC_TRACE(sc);
 
 	if (IS_VF(sc))
@@ -301,5 +301,5 @@ bnx2x_promisc_enable(struct rte_eth_dev *dev)
 	struct bnx2x_softc *sc = dev->data->dev_private;
 
-	PMD_INIT_FUNC_TRACE();
+	PMD_INIT_FUNC_TRACE(sc);
 	sc->rx_mode = BNX2X_RX_MODE_PROMISC;
 	if (rte_eth_allmulticast_get(dev->data->port_id) == 1)
@@ -313,5 +313,5 @@ bnx2x_promisc_disable(struct rte_eth_dev *dev)
 	struct bnx2x_softc *sc = dev->data->dev_private;
 
-	PMD_INIT_FUNC_TRACE();
+	PMD_INIT_FUNC_TRACE(sc);
 	sc->rx_mode = BNX2X_RX_MODE_NORMAL;
 	if (rte_eth_allmulticast_get(dev->data->port_id) == 1)
@@ -325,5 +325,5 @@ bnx2x_dev_allmulticast_enable(struct rte_eth_dev *dev)
 	struct bnx2x_softc *sc = dev->data->dev_private;
 
-	PMD_INIT_FUNC_TRACE();
+	PMD_INIT_FUNC_TRACE(sc);
 	sc->rx_mode = BNX2X_RX_MODE_ALLMULTI;
 	if (rte_eth_promiscuous_get(dev->data->port_id) == 1)
@@ -337,5 +337,5 @@ bnx2x_dev_allmulticast_disable(struct rte_eth_dev *dev)
 	struct bnx2x_softc *sc = dev->data->dev_private;
 
-	PMD_INIT_FUNC_TRACE();
+	PMD_INIT_FUNC_TRACE(sc);
 	sc->rx_mode = BNX2X_RX_MODE_NORMAL;
 	if (rte_eth_promiscuous_get(dev->data->port_id) == 1)
@@ -347,5 +347,7 @@ static int
 bnx2x_dev_link_update(struct rte_eth_dev *dev, __rte_unused int wait_to_complete)
 {
-	PMD_INIT_FUNC_TRACE();
+	struct bnx2x_softc *sc = dev->data->dev_private;
+
+	PMD_INIT_FUNC_TRACE(sc);
 
 	return bnx2x_link_update(dev);
@@ -362,5 +364,5 @@ bnx2xvf_dev_link_update(struct rte_eth_dev *dev, __rte_unused int wait_to_comple
 	bnx2x_check_bull(sc);
 	if (sc->old_bulletin.valid_bitmap & (1 << CHANNEL_DOWN)) {
-		PMD_DRV_LOG(ERR, "PF indicated channel is down."
+		PMD_DRV_LOG(ERR, sc, "PF indicated channel is down."
 				"VF device is no longer operational");
 		dev->data->dev_link.link_status = ETH_LINK_DOWN;
@@ -378,5 +380,5 @@ bnx2x_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats)
 	uint64_t brb_truncates;
 
-	PMD_INIT_FUNC_TRACE();
+	PMD_INIT_FUNC_TRACE(sc);
 
 	bnx2x_stats_handle(sc, STATS_EVENT_UPDATE);
@@ -569,20 +571,25 @@ bnx2x_common_dev_init(struct rte_eth_dev *eth_dev, int is_vf)
 	int ret = 0;
 	struct rte_pci_device *pci_dev;
+	struct rte_pci_addr pci_addr;
 	struct bnx2x_softc *sc;
 
-	PMD_INIT_FUNC_TRACE();
+	/* Extract key data structures */
+	sc = eth_dev->data->dev_private;
+	pci_dev = RTE_DEV_TO_PCI(eth_dev->device);
+	pci_addr = pci_dev->addr;
+
+	snprintf(sc->devinfo.name, NAME_SIZE, PCI_SHORT_PRI_FMT ":dpdk-port-%u",
+		 pci_addr.bus, pci_addr.devid, pci_addr.function,
+		 eth_dev->data->port_id);
+
+	PMD_INIT_FUNC_TRACE(sc);
 
 	eth_dev->dev_ops = is_vf ? &bnx2xvf_eth_dev_ops : &bnx2x_eth_dev_ops;
-	pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);
 
 	rte_eth_copy_pci_info(eth_dev, pci_dev);
 
-	sc = eth_dev->data->dev_private;
 	sc->pcie_bus    = pci_dev->addr.bus;
 	sc->pcie_device = pci_dev->addr.devid;
 
-	if (is_vf)
-		sc->flags = BNX2X_IS_VF_FLAG;
-
 	sc->devinfo.vendor_id    = pci_dev->id.vendor_id;
 	sc->devinfo.device_id    = pci_dev->id.device_id;
@@ -590,4 +597,7 @@ bnx2x_common_dev_init(struct rte_eth_dev *eth_dev, int is_vf)
 	sc->devinfo.subdevice_id = pci_dev->id.subsystem_device_id;
 
+	if (is_vf)
+		sc->flags = BNX2X_IS_VF_FLAG;
+
 	sc->pcie_func = pci_dev->addr.function;
 	sc->bar[BAR0].base_addr = (void *)pci_dev->mem_resource[0].addr;
@@ -617,5 +627,5 @@ bnx2x_common_dev_init(struct rte_eth_dev *eth_dev, int is_vf)
 	ret = bnx2x_attach(sc);
 	if (ret) {
-		PMD_DRV_LOG(ERR, "bnx2x_attach failed (%d)", ret);
+		PMD_DRV_LOG(ERR, sc, "bnx2x_attach failed (%d)", ret);
 		return ret;
 	}
@@ -626,6 +636,6 @@ bnx2x_common_dev_init(struct rte_eth_dev *eth_dev, int is_vf)
 					bnx2x_periodic_start, (void *)eth_dev);
 		if (ret) {
-			PMD_DRV_LOG(ERR, "Unable to start periodic"
-					  " timer rc %d", ret);
+			PMD_DRV_LOG(ERR, sc, "Unable to start periodic"
+					     " timer rc %d", ret);
 			return -EINVAL;
 		}
@@ -634,11 +644,11 @@ bnx2x_common_dev_init(struct rte_eth_dev *eth_dev, int is_vf)
 	eth_dev->data->mac_addrs = (struct ether_addr *)sc->link_params.mac_addr;
 
-	PMD_DRV_LOG(INFO, "pcie_bus=%d, pcie_device=%d",
+	PMD_DRV_LOG(INFO, sc, "pcie_bus=%d, pcie_device=%d",
 			sc->pcie_bus, sc->pcie_device);
-	PMD_DRV_LOG(INFO, "bar0.addr=%p, bar1.addr=%p",
+	PMD_DRV_LOG(INFO, sc, "bar0.addr=%p, bar1.addr=%p",
 			sc->bar[BAR0].base_addr, sc->bar[BAR1].base_addr);
-	PMD_DRV_LOG(INFO, "port=%d, path=%d, vnic=%d, func=%d",
+	PMD_DRV_LOG(INFO, sc, "port=%d, path=%d, vnic=%d, func=%d",
 			PORT_ID(sc), PATH_ID(sc), VNIC_ID(sc), FUNC_ID(sc));
-	PMD_DRV_LOG(INFO, "portID=%d vendorID=0x%x deviceID=0x%x",
+	PMD_DRV_LOG(INFO, sc, "portID=%d vendorID=0x%x deviceID=0x%x",
 			eth_dev->data->port_id, pci_dev->id.vendor_id, pci_dev->id.device_id);
 
@@ -680,5 +690,6 @@ static int
 eth_bnx2x_dev_init(struct rte_eth_dev *eth_dev)
 {
-	PMD_INIT_FUNC_TRACE();
+	struct bnx2x_softc *sc = eth_dev->data->dev_private;
+	PMD_INIT_FUNC_TRACE(sc);
 	return bnx2x_common_dev_init(eth_dev, 0);
 }
@@ -687,5 +698,6 @@ static int
 eth_bnx2xvf_dev_init(struct rte_eth_dev *eth_dev)
 {
-	PMD_INIT_FUNC_TRACE();
+	struct bnx2x_softc *sc = eth_dev->data->dev_private;
+	PMD_INIT_FUNC_TRACE(sc);
 	return bnx2x_common_dev_init(eth_dev, 1);
 }
diff --git a/drivers/net/bnx2x/bnx2x_logs.h b/drivers/net/bnx2x/bnx2x_logs.h
index 9e232a9b8..753bccdf4 100644
--- a/drivers/net/bnx2x/bnx2x_logs.h
+++ b/drivers/net/bnx2x/bnx2x_logs.h
@@ -10,9 +10,9 @@
 
 extern int bnx2x_logtype_init;
-#define PMD_INIT_LOG(level, fmt, args...) \
-	rte_log(RTE_LOG_ ## level, bnx2x_logtype_init, \
-		"%s(): " fmt "\n", __func__, ##args)
+#define PMD_INIT_LOG(level, sc, fmt, args...) \
+	RTE_LOG(level, PMD, \
+	"[bnx2x_pmd: %s] %s() " fmt "\n", (sc)->devinfo.name, __func__, ##args)
 
-#define PMD_INIT_FUNC_TRACE() PMD_INIT_LOG(DEBUG, " >>")
+#define PMD_INIT_FUNC_TRACE(sc) PMD_INIT_LOG(DEBUG, sc, " >>")
 
 #ifdef RTE_LIBRTE_BNX2X_DEBUG_RX
@@ -38,16 +38,17 @@ extern int bnx2x_logtype_init;
 
 extern int bnx2x_logtype_driver;
-#define PMD_DRV_LOG_RAW(level, fmt, args...) \
-	rte_log(RTE_LOG_ ## level, bnx2x_logtype_driver, \
-		"%s(): " fmt, __func__, ## args)
+#define PMD_DRV_LOG_RAW(level, sc, fmt, args...) \
+	RTE_LOG(level, PMD, "[%s:%d(%s)] " fmt,	__func__, __LINE__, \
+		(sc)->devinfo.name ? (sc)->devinfo.name : "", ## args)
 
-#define PMD_DRV_LOG(level, fmt, args...) \
-	PMD_DRV_LOG_RAW(level, fmt "\n", ## args)
+#define PMD_DRV_LOG(level, sc, fmt, args...) \
+	PMD_DRV_LOG_RAW(level, sc, fmt "\n", ## args)
 
 #ifdef RTE_LIBRTE_BNX2X_DEBUG_PERIODIC
-#define PMD_DEBUG_PERIODIC_LOG(level, fmt, args...) \
-	RTE_LOG(level, PMD, "%s(): " fmt "\n", __func__, ## args)
+#define PMD_DEBUG_PERIODIC_LOG(level, sc, fmt, args...) \
+	RTE_LOG(level, PMD, "%s(%s): " fmt "\n", __func__, \
+		(sc)->devinfo.name ? (sc)->devinfo.name : "", ## args)
 #else
-#define PMD_DEBUG_PERIODIC_LOG(level, fmt, args...) do { } while(0)
+#define PMD_DEBUG_PERIODIC_LOG(level, sc, fmt, args...) do { } while (0)
 #endif
 
diff --git a/drivers/net/bnx2x/bnx2x_rxtx.c b/drivers/net/bnx2x/bnx2x_rxtx.c
index d9a4127d9..589735ecd 100644
--- a/drivers/net/bnx2x/bnx2x_rxtx.c
+++ b/drivers/net/bnx2x/bnx2x_rxtx.c
@@ -77,5 +77,5 @@ bnx2x_dev_rx_queue_setup(struct rte_eth_dev *dev,
 				 RTE_CACHE_LINE_SIZE, socket_id);
 	if (NULL == rxq) {
-		PMD_INIT_LOG(ERR, "rte_zmalloc for rxq failed!");
+		PMD_DRV_LOG(ERR, sc, "rte_zmalloc for rxq failed!");
 		return -ENOMEM;
 	}
@@ -93,5 +93,5 @@ bnx2x_dev_rx_queue_setup(struct rte_eth_dev *dev,
 	rxq->nb_cq_pages = RCQ_BD_PAGES(rxq);
 
-	PMD_INIT_LOG(DEBUG, "fp[%02d] req_bd=%u, usable_bd=%lu, "
+	PMD_DRV_LOG(DEBUG, sc, "fp[%02d] req_bd=%u, usable_bd=%lu, "
 		       "total_bd=%lu, rx_pages=%u, cq_pages=%u",
 		       queue_idx, nb_desc, (unsigned long)USABLE_RX_BD(rxq),
@@ -276,5 +276,5 @@ bnx2x_dev_tx_queue_setup(struct rte_eth_dev *dev,
 				  txq->nb_tx_desc - BDS_PER_TX_PKT);
 
-	PMD_INIT_LOG(DEBUG, "fp[%02d] req_bd=%u, thresh=%u, usable_bd=%lu, "
+	PMD_DRV_LOG(DEBUG, sc, "fp[%02d] req_bd=%u, thresh=%u, usable_bd=%lu, "
 		     "total_bd=%lu, tx_pages=%u",
 		     queue_idx, nb_desc, txq->tx_free_thresh,
@@ -302,5 +302,5 @@ bnx2x_dev_tx_queue_setup(struct rte_eth_dev *dev,
 	}
 
-	/* PMD_DRV_LOG(DEBUG, "sw_ring=%p hw_ring=%p dma_addr=0x%"PRIx64,
+	/* PMD_DRV_LOG(DEBUG, sc, "sw_ring=%p hw_ring=%p dma_addr=0x%"PRIx64,
 	   txq->sw_ring, txq->tx_ring, txq->tx_ring_phys_addr); */
 
@@ -311,5 +311,7 @@ bnx2x_dev_tx_queue_setup(struct rte_eth_dev *dev,
 		tx_n_bd->addr_hi = rte_cpu_to_le_32(U64_HI(busaddr));
 		tx_n_bd->addr_lo = rte_cpu_to_le_32(U64_LO(busaddr));
-		/* PMD_DRV_LOG(DEBUG, "link tx page %lu", (TOTAL_TX_BD_PER_PAGE * i - 1)); */
+		/* PMD_DRV_LOG(DEBUG, sc, "link tx page %lu",
+		 *          (TOTAL_TX_BD_PER_PAGE * i - 1));
+		 */
 	}
 
@@ -462,7 +464,8 @@ void
 bnx2x_dev_clear_queues(struct rte_eth_dev *dev)
 {
+	struct bnx2x_softc *sc = dev->data->dev_private;
 	uint8_t i;
 
-	PMD_INIT_FUNC_TRACE();
+	PMD_INIT_FUNC_TRACE(sc);
 
 	for (i = 0; i < dev->data->nb_tx_queues; i++) {
diff --git a/drivers/net/bnx2x/bnx2x_stats.c b/drivers/net/bnx2x/bnx2x_stats.c
index edc86ccc2..1cd972591 100644
--- a/drivers/net/bnx2x/bnx2x_stats.c
+++ b/drivers/net/bnx2x/bnx2x_stats.c
@@ -83,5 +83,5 @@ bnx2x_storm_stats_post(struct bnx2x_softc *sc)
 			htole16(sc->stats_counter++);
 
-		PMD_DEBUG_PERIODIC_LOG(DEBUG,
+		PMD_DEBUG_PERIODIC_LOG(DEBUG, sc,
 				"sending statistics ramrod %d",
 				le16toh(sc->fw_stats_req->hdr.drv_stats_counter));
@@ -155,5 +155,5 @@ bnx2x_stats_comp(struct bnx2x_softc *sc)
 	while (*stats_comp != DMAE_COMP_VAL) {
 		if (!cnt) {
-			PMD_DRV_LOG(ERR, "Timeout waiting for stats finished");
+			PMD_DRV_LOG(ERR, sc, "Timeout waiting for stats finished");
 			break;
 		}
@@ -190,5 +190,5 @@ bnx2x_stats_pmf_update(struct bnx2x_softc *sc)
 	/* sanity */
 	if (!sc->port.pmf || !sc->port.port_stx) {
-		PMD_DRV_LOG(ERR, "BUG!");
+		PMD_DRV_LOG(ERR, sc, "BUG!");
 		return;
 	}
@@ -240,5 +240,5 @@ bnx2x_port_stats_init(struct bnx2x_softc *sc)
     /* sanity */
     if (!sc->link_vars.link_up || !sc->port.pmf) {
-	PMD_DRV_LOG(ERR, "BUG!");
+	PMD_DRV_LOG(ERR, sc, "BUG!");
 	return;
     }
@@ -464,5 +464,5 @@ bnx2x_func_stats_init(struct bnx2x_softc *sc)
     /* sanity */
     if (!sc->func_stx) {
-	PMD_DRV_LOG(ERR, "BUG!");
+	PMD_DRV_LOG(ERR, sc, "BUG!");
 	return;
     }
@@ -798,10 +798,10 @@ bnx2x_hw_stats_update(struct bnx2x_softc *sc)
 
     case ELINK_MAC_TYPE_NONE: /* unreached */
-	PMD_DRV_LOG(DEBUG,
+	PMD_DRV_LOG(DEBUG, sc,
 	      "stats updated by DMAE but no MAC active");
 	return -1;
 
     default: /* unreached */
-	PMD_DRV_LOG(ERR, "stats update failed, unknown MAC type");
+	PMD_DRV_LOG(ERR, sc, "stats update failed, unknown MAC type");
     }
 
@@ -838,5 +838,5 @@ bnx2x_hw_stats_update(struct bnx2x_softc *sc)
 	if (nig_timer_max != estats->nig_timer_max) {
 	    estats->nig_timer_max = nig_timer_max;
-	    PMD_DRV_LOG(ERR, "invalid NIG timer max (%u)",
+	    PMD_DRV_LOG(ERR, sc, "invalid NIG timer max (%u)",
 		  estats->nig_timer_max);
 	}
@@ -860,5 +860,5 @@ bnx2x_storm_stats_validate_counters(struct bnx2x_softc *sc)
     /* are storm stats valid? */
     if (le16toh(counters->xstats_counter) != cur_stats_counter) {
-	PMD_DRV_LOG(DEBUG,
+	PMD_DRV_LOG(DEBUG, sc,
 	      "stats not updated by xstorm, "
 	      "counter 0x%x != stats_counter 0x%x",
@@ -868,5 +868,5 @@ bnx2x_storm_stats_validate_counters(struct bnx2x_softc *sc)
 
     if (le16toh(counters->ustats_counter) != cur_stats_counter) {
-	PMD_DRV_LOG(DEBUG,
+	PMD_DRV_LOG(DEBUG, sc,
 	      "stats not updated by ustorm, "
 	      "counter 0x%x != stats_counter 0x%x",
@@ -876,5 +876,5 @@ bnx2x_storm_stats_validate_counters(struct bnx2x_softc *sc)
 
     if (le16toh(counters->cstats_counter) != cur_stats_counter) {
-	PMD_DRV_LOG(DEBUG,
+	PMD_DRV_LOG(DEBUG, sc,
 	      "stats not updated by cstorm, "
 	      "counter 0x%x != stats_counter 0x%x",
@@ -884,5 +884,5 @@ bnx2x_storm_stats_validate_counters(struct bnx2x_softc *sc)
 
     if (le16toh(counters->tstats_counter) != cur_stats_counter) {
-	PMD_DRV_LOG(DEBUG,
+	PMD_DRV_LOG(DEBUG, sc,
 	      "stats not updated by tstorm, "
 	      "counter 0x%x != stats_counter 0x%x",
@@ -930,10 +930,11 @@ bnx2x_storm_stats_update(struct bnx2x_softc *sc)
 		uint32_t diff;
 
-		/* PMD_DRV_LOG(DEBUG,
+		/* PMD_DRV_LOG(DEBUG, sc,
 				"queue[%d]: ucast_sent 0x%x bcast_sent 0x%x mcast_sent 0x%x",
 				i, xclient->ucast_pkts_sent, xclient->bcast_pkts_sent,
 				xclient->mcast_pkts_sent);
 
-		PMD_DRV_LOG(DEBUG, "---------------"); */
+		PMD_DRV_LOG(DEBUG, sc, "---------------");
+		 */
 
 		UPDATE_QSTAT(tclient->rcv_bcast_bytes,
@@ -1289,5 +1290,5 @@ void bnx2x_stats_handle(struct bnx2x_softc *sc, enum bnx2x_stats_event event)
 
 	if (event != STATS_EVENT_UPDATE) {
-		PMD_DRV_LOG(DEBUG,
+		PMD_DRV_LOG(DEBUG, sc,
 				"state %d -> event %d -> state %d",
 				state, event, sc->stats_state);
@@ -1303,5 +1304,5 @@ bnx2x_port_stats_base_init(struct bnx2x_softc *sc)
     /* sanity */
     if (!sc->port.pmf || !sc->port.port_stx) {
-	PMD_DRV_LOG(ERR, "BUG!");
+	PMD_DRV_LOG(ERR, sc, "BUG!");
 	return;
     }
@@ -1475,5 +1476,5 @@ bnx2x_stats_init(struct bnx2x_softc *sc)
 	}
 
-	PMD_DRV_LOG(DEBUG, "port_stx 0x%x func_stx 0x%x",
+	PMD_DRV_LOG(DEBUG, sc, "port_stx 0x%x func_stx 0x%x",
 			sc->port.port_stx, sc->func_stx);
 
diff --git a/drivers/net/bnx2x/bnx2x_vfpf.c b/drivers/net/bnx2x/bnx2x_vfpf.c
index 50099d46b..048bf126f 100644
--- a/drivers/net/bnx2x/bnx2x_vfpf.c
+++ b/drivers/net/bnx2x/bnx2x_vfpf.c
@@ -38,10 +38,10 @@ bnx2x_check_bull(struct bnx2x_softc *sc)
 				break;
 
-			PMD_DRV_LOG(ERR, "bad crc on bulletin board. contained %x computed %x",
+			PMD_DRV_LOG(ERR, sc, "bad crc on bulletin board. contained %x computed %x",
 					bull->crc, bnx2x_vf_crc(bull));
 			++tries;
 		}
 		if (tries == BNX2X_VF_BULLETIN_TRIES) {
-			PMD_DRV_LOG(ERR, "pf to vf bulletin board crc was wrong %d consecutive times. Aborting",
+			PMD_DRV_LOG(ERR, sc, "pf to vf bulletin board crc was wrong %d consecutive times. Aborting",
 					tries);
 			return FALSE;
@@ -83,5 +83,5 @@ bnx2x_vf_prep(struct bnx2x_softc *sc, struct vf_first_tlv *first_tlv,
 	rte_spinlock_lock(&sc->vf2pf_lock);
 
-	PMD_DRV_LOG(DEBUG, "Preparing %d tlv for sending", type);
+	PMD_DRV_LOG(DEBUG, sc, "Preparing %d tlv for sending", type);
 
 	memset(mbox, 0, sizeof(struct bnx2x_vf_mbx_msg));
@@ -98,5 +98,5 @@ bnx2x_vf_finalize(struct bnx2x_softc *sc,
 		  __rte_unused struct vf_first_tlv *first_tlv)
 {
-	PMD_DRV_LOG(DEBUG, "done sending [%d] tlv over vf pf channel",
+	PMD_DRV_LOG(DEBUG, sc, "done sending [%d] tlv over vf pf channel",
 		    first_tlv->tl.type);
 
@@ -117,5 +117,5 @@ bnx2x_do_req4pf(struct bnx2x_softc *sc, rte_iova_t phys_addr)
 
 	if (*status) {
-		PMD_DRV_LOG(ERR, "status should be zero before message"
+		PMD_DRV_LOG(ERR, sc, "status should be zero before message"
 				 " to pf was sent");
 		return -EINVAL;
@@ -124,5 +124,5 @@ bnx2x_do_req4pf(struct bnx2x_softc *sc, rte_iova_t phys_addr)
 	bnx2x_check_bull(sc);
 	if (sc->old_bulletin.valid_bitmap & (1 << CHANNEL_DOWN)) {
-		PMD_DRV_LOG(ERR, "channel is down. Aborting message sending");
+		PMD_DRV_LOG(ERR, sc, "channel is down. Aborting message sending");
 		return -EINVAL;
 	}
@@ -144,9 +144,9 @@ bnx2x_do_req4pf(struct bnx2x_softc *sc, rte_iova_t phys_addr)
 
 	if (!*status) {
-		PMD_DRV_LOG(ERR, "Response from PF timed out");
+		PMD_DRV_LOG(ERR, sc, "Response from PF timed out");
 		return -EAGAIN;
 	}
 
-	PMD_DRV_LOG(DEBUG, "Response from PF was received");
+	PMD_DRV_LOG(DEBUG, sc, "Response from PF was received");
 	return 0;
 }
@@ -196,5 +196,5 @@ int bnx2x_loop_obtain_resources(struct bnx2x_softc *sc)
 
 	do {
-		PMD_DRV_LOG(DEBUG, "trying to get resources");
+		PMD_DRV_LOG(DEBUG, sc, "trying to get resources");
 
 		rc = bnx2x_do_req4pf(sc, sc->vf2pf_mbox_mapping.paddr);
@@ -208,9 +208,9 @@ int bnx2x_loop_obtain_resources(struct bnx2x_softc *sc)
 		/* check PF to request acceptance */
 		if (sc_resp->status == BNX2X_VF_STATUS_SUCCESS) {
-			PMD_DRV_LOG(DEBUG, "resources obtained successfully");
+			PMD_DRV_LOG(DEBUG, sc, "resources obtained successfully");
 			res_obtained = true;
 		} else if (sc_resp->status == BNX2X_VF_STATUS_NO_RESOURCES &&
 			   tries < BNX2X_VF_OBTAIN_MAX_TRIES) {
-			PMD_DRV_LOG(DEBUG,
+			PMD_DRV_LOG(DEBUG, sc,
 			   "PF cannot allocate requested amount of resources");
 
@@ -228,5 +228,5 @@ int bnx2x_loop_obtain_resources(struct bnx2x_softc *sc)
 			memset(&sc->vf2pf_mbox->resp, 0, sizeof(union resp_tlvs));
 		} else {
-			PMD_DRV_LOG(ERR, "Failed to get the requested "
+			PMD_DRV_LOG(ERR, sc, "Failed to get the requested "
 					 "amount of resources: %d.",
 					 sc_resp->status);
@@ -297,5 +297,5 @@ int bnx2x_vf_get_resources(struct bnx2x_softc *sc, uint8_t tx_count, uint8_t rx_
 	sc->flags |= BNX2X_NO_WOL_FLAG | BNX2X_NO_ISCSI_OOO_FLAG | BNX2X_NO_ISCSI_FLAG | BNX2X_NO_FCOE_FLAG;
 
-	PMD_DRV_LOG(DEBUG, "status block count = %d, base status block = %x",
+	PMD_DRV_LOG(DEBUG, sc, "status block count = %d, base status block = %x",
 		sc->igu_sb_cnt, sc->igu_base_sb);
 	strncpy(sc->fw_ver, sc_resp.fw_ver, sizeof(sc->fw_ver));
@@ -334,5 +334,5 @@ bnx2x_vf_close(struct bnx2x_softc *sc)
 		rc = bnx2x_do_req4pf(sc, sc->vf2pf_mbox_mapping.paddr);
 		if (rc || reply->status != BNX2X_VF_STATUS_SUCCESS)
-			PMD_DRV_LOG(ERR, "Failed to release VF");
+			PMD_DRV_LOG(ERR, sc, "Failed to release VF");
 
 		bnx2x_vf_finalize(sc, &query->first_tlv);
@@ -368,10 +368,10 @@ bnx2x_vf_init(struct bnx2x_softc *sc)
 		goto out;
 	if (reply->status != BNX2X_VF_STATUS_SUCCESS) {
-		PMD_DRV_LOG(ERR, "Failed to init VF");
+		PMD_DRV_LOG(ERR, sc, "Failed to init VF");
 		rc = -EINVAL;
 		goto out;
 	}
 
-	PMD_DRV_LOG(DEBUG, "VF was initialized");
+	PMD_DRV_LOG(DEBUG, sc, "VF was initialized");
 out:
 	bnx2x_vf_finalize(sc, &query->first_tlv);
@@ -404,5 +404,5 @@ bnx2x_vf_unload(struct bnx2x_softc *sc)
 			rc = bnx2x_do_req4pf(sc, sc->vf2pf_mbox_mapping.paddr);
 			if (rc || reply->status != BNX2X_VF_STATUS_SUCCESS)
-				PMD_DRV_LOG(ERR,
+				PMD_DRV_LOG(ERR, sc,
 					    "Bad reply for vf_q %d teardown", i);
 
@@ -424,5 +424,5 @@ bnx2x_vf_unload(struct bnx2x_softc *sc)
 		rc = bnx2x_do_req4pf(sc, sc->vf2pf_mbox_mapping.paddr);
 		if (rc || reply->status != BNX2X_VF_STATUS_SUCCESS)
-			PMD_DRV_LOG(ERR,
+			PMD_DRV_LOG(ERR, sc,
 				    "Bad reply from PF for close message");
 
@@ -451,5 +451,5 @@ bnx2x_vf_rx_q_prep(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp,
 	rxq = sc->rx_queues[fp->index];
 	if (!rxq) {
-		PMD_DRV_LOG(ERR, "RX queue %d is NULL", fp->index);
+		PMD_DRV_LOG(ERR, sc, "RX queue %d is NULL", fp->index);
 		return;
 	}
@@ -475,5 +475,5 @@ bnx2x_vf_tx_q_prep(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp,
 	txq = sc->tx_queues[fp->index];
 	if (!txq) {
-		PMD_DRV_LOG(ERR, "TX queue %d is NULL", fp->index);
+		PMD_DRV_LOG(ERR, sc, "TX queue %d is NULL", fp->index);
 		return;
 	}
@@ -512,5 +512,5 @@ bnx2x_vf_setup_queue(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp, int lead
 		goto out;
 	if (reply->status != BNX2X_VF_STATUS_SUCCESS) {
-		PMD_DRV_LOG(ERR, "Failed to setup VF queue[%d]",
+		PMD_DRV_LOG(ERR, sc, "Failed to setup VF queue[%d]",
 				 fp->index);
 		rc = -EINVAL;
@@ -567,5 +567,5 @@ bnx2x_vf_set_mac(struct bnx2x_softc *sc, int set)
 
 	if (BNX2X_VF_STATUS_SUCCESS != reply->status) {
-		PMD_DRV_LOG(ERR, "Bad reply from PF for SET MAC message: %d",
+		PMD_DRV_LOG(ERR, sc, "Bad reply from PF for SET MAC message: %d",
 				reply->status);
 		rc = -EINVAL;
@@ -609,5 +609,5 @@ bnx2x_vf_config_rss(struct bnx2x_softc *sc,
 
 	if (reply->status != BNX2X_VF_STATUS_SUCCESS) {
-		PMD_DRV_LOG(ERR, "Failed to configure RSS");
+		PMD_DRV_LOG(ERR, sc, "Failed to configure RSS");
 		rc = -EINVAL;
 	}
@@ -653,5 +653,5 @@ bnx2x_vf_set_rx_mode(struct bnx2x_softc *sc)
 		break;
 	default:
-		PMD_DRV_LOG(ERR, "BAD rx mode (%d)", sc->rx_mode);
+		PMD_DRV_LOG(ERR, sc, "BAD rx mode (%d)", sc->rx_mode);
 		rc = -EINVAL;
 		goto out;
@@ -667,5 +667,5 @@ bnx2x_vf_set_rx_mode(struct bnx2x_softc *sc)
 
 	if (reply->status != BNX2X_VF_STATUS_SUCCESS) {
-		PMD_DRV_LOG(ERR, "Failed to set RX mode");
+		PMD_DRV_LOG(ERR, sc, "Failed to set RX mode");
 		rc = -EINVAL;
 	}
diff --git a/drivers/net/bnx2x/ecore_init.h b/drivers/net/bnx2x/ecore_init.h
index f2de07e5b..97dfe69b5 100644
--- a/drivers/net/bnx2x/ecore_init.h
+++ b/drivers/net/bnx2x/ecore_init.h
@@ -742,5 +742,5 @@ static inline void ecore_disable_blocks_parity(struct bnx2x_softc *sc)
 			REG_WR(sc, ecore_blocks_parity_data[i].mask_addr,
 			       dis_mask);
-			ECORE_MSG("Setting parity mask "
+			ECORE_MSG(sc, "Setting parity mask "
 						 "for %s to\t\t0x%x",
 				    ecore_blocks_parity_data[i].name, dis_mask);
@@ -777,5 +777,5 @@ static inline void ecore_clear_blocks_parity(struct bnx2x_softc *sc)
 					 sts_clr_addr);
 			if (reg_val & reg_mask)
-				ECORE_MSG("Parity errors in %s: 0x%x",
+				ECORE_MSG(sc, "Parity errors in %s: 0x%x",
 					   ecore_blocks_parity_data[i].name,
 					   reg_val & reg_mask);
@@ -786,5 +786,5 @@ static inline void ecore_clear_blocks_parity(struct bnx2x_softc *sc)
 	reg_val = REG_RD(sc, MISC_REG_AEU_AFTER_INVERT_4_MCP);
 	if (reg_val & mcp_aeu_bits)
-		ECORE_MSG("Parity error in MCP: 0x%x",
+		ECORE_MSG(sc, "Parity error in MCP: 0x%x",
 			   reg_val & mcp_aeu_bits);
 
diff --git a/drivers/net/bnx2x/ecore_init_ops.h b/drivers/net/bnx2x/ecore_init_ops.h
index 2b003afb0..733ad1aa8 100644
--- a/drivers/net/bnx2x/ecore_init_ops.h
+++ b/drivers/net/bnx2x/ecore_init_ops.h
@@ -425,18 +425,18 @@ static void ecore_init_pxp_arb(struct bnx2x_softc *sc, int r_order,
 
 	if (r_order > MAX_RD_ORD) {
-		ECORE_MSG("read order of %d  order adjusted to %d",
+		ECORE_MSG(sc, "read order of %d  order adjusted to %d",
 			   r_order, MAX_RD_ORD);
 		r_order = MAX_RD_ORD;
 	}
 	if (w_order > MAX_WR_ORD) {
-		ECORE_MSG("write order of %d  order adjusted to %d",
+		ECORE_MSG(sc, "write order of %d  order adjusted to %d",
 			   w_order, MAX_WR_ORD);
 		w_order = MAX_WR_ORD;
 	}
 	if (CHIP_REV_IS_FPGA(sc)) {
-		ECORE_MSG("write order adjusted to 1 for FPGA");
+		ECORE_MSG(sc, "write order adjusted to 1 for FPGA");
 		w_order = 0;
 	}
-	ECORE_MSG("read order %d  write order %d", r_order, w_order);
+	ECORE_MSG(sc, "read order %d  write order %d", r_order, w_order);
 
 	for (i = 0; i < NUM_RD_Q-1; i++) {
diff --git a/drivers/net/bnx2x/ecore_sp.c b/drivers/net/bnx2x/ecore_sp.c
index 0c8685c62..ab730abea 100644
--- a/drivers/net/bnx2x/ecore_sp.c
+++ b/drivers/net/bnx2x/ecore_sp.c
@@ -54,5 +54,5 @@ ecore_exe_queue_init(struct bnx2x_softc *sc __rte_unused,
 	o->get = get;
 
-	ECORE_MSG("Setup the execution queue with the chunk length of %d",
+	ECORE_MSG(sc, "Setup the execution queue with the chunk length of %d",
 		  exe_len);
 }
@@ -61,5 +61,5 @@ static void ecore_exe_queue_free_elem(struct bnx2x_softc *sc __rte_unused,
 				      struct ecore_exeq_elem *elem)
 {
-	ECORE_MSG("Deleting an exe_queue element");
+	ECORE_MSG(sc, "Deleting an exe_queue element");
 	ECORE_FREE(sc, elem, sizeof(*elem));
 }
@@ -107,5 +107,5 @@ static int ecore_exe_queue_add(struct bnx2x_softc *sc,
 		rc = o->validate(sc, o->owner, elem);
 		if (rc) {
-			ECORE_MSG("Preamble failed: %d", rc);
+			ECORE_MSG(sc, "Preamble failed: %d", rc);
 			goto free_and_exit;
 		}
@@ -177,6 +177,6 @@ static int ecore_exe_queue_step(struct bnx2x_softc *sc,
 	if (!ECORE_LIST_IS_EMPTY(&o->pending_comp)) {
 		if (ECORE_TEST_BIT(RAMROD_DRV_CLR_ONLY, ramrod_flags)) {
-			ECORE_MSG
-			    ("RAMROD_DRV_CLR_ONLY requested: resetting a pending_comp list");
+			ECORE_MSG(sc,
+				  "RAMROD_DRV_CLR_ONLY requested: resetting a pending_comp list");
 			__ecore_exe_queue_reset_pending(sc, o);
 		} else {
@@ -241,5 +241,5 @@ static struct ecore_exeq_elem *ecore_exe_queue_alloc_elem(struct
 							  __rte_unused)
 {
-	ECORE_MSG("Allocating a new exe_queue element");
+	ECORE_MSG(sc, "Allocating a new exe_queue element");
 	return ECORE_ZALLOC(sizeof(struct ecore_exeq_elem), GFP_ATOMIC, sc);
 }
@@ -291,5 +291,5 @@ static int ecore_state_wait(struct bnx2x_softc *sc, int state,
 		cnt *= 20;
 
-	ECORE_MSG("waiting for state to become %d", state);
+	ECORE_MSG(sc, "waiting for state to become %d", state);
 
 	ECORE_MIGHT_SLEEP();
@@ -298,5 +298,5 @@ static int ecore_state_wait(struct bnx2x_softc *sc, int state,
 		if (!ECORE_TEST_BIT(state, pstate)) {
 #ifdef ECORE_STOP_ON_ERROR
-			ECORE_MSG("exit  (cnt %d)", 5000 - cnt);
+			ECORE_MSG(sc, "exit  (cnt %d)", 5000 - cnt);
 #endif
 			return ECORE_SUCCESS;
@@ -310,5 +310,5 @@ static int ecore_state_wait(struct bnx2x_softc *sc, int state,
 
 	/* timeout! */
-	PMD_DRV_LOG(ERR, "timeout waiting for state %d", state);
+	PMD_DRV_LOG(ERR, sc, "timeout waiting for state %d", state);
 #ifdef ECORE_STOP_ON_ERROR
 	ecore_panic();
@@ -371,9 +371,9 @@ static int __ecore_vlan_mac_h_write_trylock(struct bnx2x_softc *sc __rte_unused,
 {
 	if (o->head_reader) {
-		ECORE_MSG("vlan_mac_lock writer - There are readers; Busy");
+		ECORE_MSG(sc, "vlan_mac_lock writer - There are readers; Busy");
 		return ECORE_BUSY;
 	}
 
-	ECORE_MSG("vlan_mac_lock writer - Taken");
+	ECORE_MSG(sc, "vlan_mac_lock writer - Taken");
 	return ECORE_SUCCESS;
 }
@@ -395,5 +395,5 @@ static void __ecore_vlan_mac_h_exec_pending(struct bnx2x_softc *sc,
 	unsigned long ramrod_flags = o->saved_ramrod_flags;
 
-	ECORE_MSG("vlan_mac_lock execute pending command with ramrod flags %lu",
+	ECORE_MSG(sc, "vlan_mac_lock execute pending command with ramrod flags %lu",
 		  ramrod_flags);
 	o->head_exe_request = FALSE;
@@ -401,5 +401,5 @@ static void __ecore_vlan_mac_h_exec_pending(struct bnx2x_softc *sc,
 	rc = ecore_exe_queue_step(sc, &o->exe_queue, &ramrod_flags);
 	if (rc != ECORE_SUCCESS) {
-		PMD_DRV_LOG(ERR,
+		PMD_DRV_LOG(ERR, sc,
 			    "execution of pending commands failed with rc %d",
 			    rc);
@@ -426,5 +426,5 @@ static void __ecore_vlan_mac_h_pend(struct bnx2x_softc *sc __rte_unused,
 	o->head_exe_request = TRUE;
 	o->saved_ramrod_flags = ramrod_flags;
-	ECORE_MSG("Placing pending execution with ramrod flags %lu",
+	ECORE_MSG(sc, "Placing pending execution with ramrod flags %lu",
 		  ramrod_flags);
 }
@@ -447,6 +447,6 @@ static void __ecore_vlan_mac_h_write_unlock(struct bnx2x_softc *sc,
 	 */
 	while (o->head_exe_request) {
-		ECORE_MSG
-		    ("vlan_mac_lock - writer release encountered a pending request");
+		ECORE_MSG(sc,
+			  "vlan_mac_lock - writer release encountered a pending request");
 		__ecore_vlan_mac_h_exec_pending(sc, o);
 	}
@@ -484,5 +484,6 @@ static int __ecore_vlan_mac_h_read_lock(struct bnx2x_softc *sc __rte_unused,
 	/* If we got here, we're holding lock --> no WRITER exists */
 	o->head_reader++;
-	ECORE_MSG("vlan_mac_lock - locked reader - number %d", o->head_reader);
+	ECORE_MSG(sc,
+		  "vlan_mac_lock - locked reader - number %d", o->head_reader);
 
 	return ECORE_SUCCESS;
@@ -523,5 +524,5 @@ static void __ecore_vlan_mac_h_read_unlock(struct bnx2x_softc *sc,
 {
 	if (!o->head_reader) {
-		PMD_DRV_LOG(ERR,
+		PMD_DRV_LOG(ERR, sc,
 			    "Need to release vlan mac reader lock, but lock isn't taken");
 #ifdef ECORE_STOP_ON_ERROR
@@ -530,5 +531,5 @@ static void __ecore_vlan_mac_h_read_unlock(struct bnx2x_softc *sc,
 	} else {
 		o->head_reader--;
-		PMD_DRV_LOG(INFO,
+		PMD_DRV_LOG(INFO, sc,
 			    "vlan_mac_lock - decreased readers to %d",
 			    o->head_reader);
@@ -539,5 +540,5 @@ static void __ecore_vlan_mac_h_read_unlock(struct bnx2x_softc *sc,
 	 */
 	if (!o->head_reader && o->head_exe_request) {
-		PMD_DRV_LOG(INFO,
+		PMD_DRV_LOG(INFO, sc,
 			    "vlan_mac_lock - reader release encountered a pending request");
 
@@ -582,8 +583,8 @@ static int ecore_get_n_elements(struct bnx2x_softc *sc,
 	int counter = 0, read_lock;
 
-	ECORE_MSG("get_n_elements - taking vlan_mac_lock (reader)");
+	ECORE_MSG(sc, "get_n_elements - taking vlan_mac_lock (reader)");
 	read_lock = ecore_vlan_mac_h_read_lock(sc, o);
 	if (read_lock != ECORE_SUCCESS)
-		PMD_DRV_LOG(ERR,
+		PMD_DRV_LOG(ERR, sc,
 			    "get_n_elements failed to get vlan mac reader lock; Access without lock");
 
@@ -594,6 +595,6 @@ static int ecore_get_n_elements(struct bnx2x_softc *sc,
 			ECORE_MEMCPY(next, &pos->u, size);
 			counter++;
-			ECORE_MSG
-			    ("copied element number %d to address %p element was:",
+			    ECORE_MSG
+			    (sc, "copied element number %d to address %p element was:",
 			     counter, next);
 			next += stride + size;
@@ -602,5 +603,5 @@ static int ecore_get_n_elements(struct bnx2x_softc *sc,
 
 	if (read_lock == ECORE_SUCCESS) {
-		ECORE_MSG("get_n_elements - releasing vlan_mac_lock (reader)");
+		ECORE_MSG(sc, "get_n_elements - releasing vlan_mac_lock (reader)");
 		ecore_vlan_mac_h_read_unlock(sc, o);
 	}
@@ -616,5 +617,5 @@ static int ecore_check_mac_add(struct bnx2x_softc *sc __rte_unused,
 	struct ecore_vlan_mac_registry_elem *pos;
 
-	ECORE_MSG("Checking MAC %02x:%02x:%02x:%02x:%02x:%02x for ADD command",
+	ECORE_MSG(sc, "Checking MAC %02x:%02x:%02x:%02x:%02x:%02x for ADD command",
 		  data->mac.mac[0], data->mac.mac[1], data->mac.mac[2],
 		  data->mac.mac[3], data->mac.mac[4], data->mac.mac[5]);
@@ -645,5 +646,5 @@ static struct ecore_vlan_mac_registry_elem *ecore_check_mac_del(struct bnx2x_sof
 	struct ecore_vlan_mac_registry_elem *pos;
 
-	ECORE_MSG("Checking MAC %02x:%02x:%02x:%02x:%02x:%02x for DEL command",
+	ECORE_MSG(sc, "Checking MAC %02x:%02x:%02x:%02x:%02x:%02x for DEL command",
 		  data->mac.mac[0], data->mac.mac[1], data->mac.mac[2],
 		  data->mac.mac[3], data->mac.mac[4], data->mac.mac[5]);
@@ -723,5 +724,5 @@ static void ecore_set_mac_in_nig(struct bnx2x_softc *sc,
 		return;
 
-	ECORE_MSG("Going to %s LLH configuration at entry %d",
+	ECORE_MSG(sc, "Going to %s LLH configuration at entry %d",
 		  (add ? "ADD" : "DELETE"), index);
 
@@ -839,5 +840,5 @@ static void ecore_set_one_mac_e2(struct bnx2x_softc *sc,
 				      &rule_entry->mac.header);
 
-	ECORE_MSG("About to %s MAC %02x:%02x:%02x:%02x:%02x:%02x for Queue %d",
+	ECORE_MSG(sc, "About to %s MAC %02x:%02x:%02x:%02x:%02x:%02x for Queue %d",
 		  (add ? "add" : "delete"), mac[0], mac[1], mac[2], mac[3],
 		  mac[4], mac[5], raw->cl_id);
@@ -944,5 +945,5 @@ static void ecore_vlan_mac_set_rdata_e1x(struct bnx2x_softc *sc
 					 cfg_entry);
 
-	ECORE_MSG("%s MAC %02x:%02x:%02x:%02x:%02x:%02x CLID %d CAM offset %d",
+	ECORE_MSG(sc, "%s MAC %02x:%02x:%02x:%02x:%02x:%02x CLID %d CAM offset %d",
 		  (add ? "setting" : "clearing"),
 		  mac[0], mac[1], mac[2], mac[3], mac[4], mac[5],
@@ -1089,6 +1090,6 @@ static int ecore_validate_vlan_mac_add(struct bnx2x_softc *sc,
 	rc = o->check_add(sc, o, &elem->cmd_data.vlan_mac.u);
 	if (rc) {
-		ECORE_MSG
-		    ("ADD command is not allowed considering current registry state.");
+		ECORE_MSG(sc,
+			  "ADD command is not allowed considering current registry state.");
 		return rc;
 	}
@@ -1098,5 +1099,5 @@ static int ecore_validate_vlan_mac_add(struct bnx2x_softc *sc,
 	 */
 	if (exeq->get(exeq, elem)) {
-		ECORE_MSG("There is a pending ADD command already");
+		ECORE_MSG(sc, "There is a pending ADD command already");
 		return ECORE_EXISTS;
 	}
@@ -1137,6 +1138,6 @@ static int ecore_validate_vlan_mac_del(struct bnx2x_softc *sc,
 	pos = o->check_del(sc, o, &elem->cmd_data.vlan_mac.u);
 	if (!pos) {
-		ECORE_MSG
-		    ("DEL command is not allowed considering current registry state");
+		ECORE_MSG(sc,
+			  "DEL command is not allowed considering current registry state");
 		return ECORE_EXISTS;
 	}
@@ -1150,5 +1151,5 @@ static int ecore_validate_vlan_mac_del(struct bnx2x_softc *sc,
 	query_elem.cmd_data.vlan_mac.cmd = ECORE_VLAN_MAC_MOVE;
 	if (exeq->get(exeq, &query_elem)) {
-		PMD_DRV_LOG(ERR, "There is a pending MOVE command already");
+		PMD_DRV_LOG(ERR, sc, "There is a pending MOVE command already");
 		return ECORE_INVAL;
 	}
@@ -1156,5 +1157,5 @@ static int ecore_validate_vlan_mac_del(struct bnx2x_softc *sc,
 	/* Check for DEL commands */
 	if (exeq->get(exeq, elem)) {
-		ECORE_MSG("There is a pending DEL command already");
+		ECORE_MSG(sc, "There is a pending DEL command already");
 		return ECORE_EXISTS;
 	}
@@ -1164,5 +1165,5 @@ static int ecore_validate_vlan_mac_del(struct bnx2x_softc *sc,
 			     &elem->cmd_data.vlan_mac.vlan_mac_flags) ||
 	      o->put_credit(o))) {
-		PMD_DRV_LOG(ERR, "Failed to return a credit");
+		PMD_DRV_LOG(ERR, sc, "Failed to return a credit");
 		return ECORE_INVAL;
 	}
@@ -1197,6 +1198,6 @@ static int ecore_validate_vlan_mac_move(struct bnx2x_softc *sc,
 	 */
 	if (!src_o->check_move(sc, src_o, dest_o, &elem->cmd_data.vlan_mac.u)) {
-		ECORE_MSG
-		    ("MOVE command is not allowed considering current registry state");
+		ECORE_MSG(sc,
+			  "MOVE command is not allowed considering current registry state");
 		return ECORE_INVAL;
 	}
@@ -1211,5 +1212,5 @@ static int ecore_validate_vlan_mac_move(struct bnx2x_softc *sc,
 	query_elem.cmd_data.vlan_mac.cmd = ECORE_VLAN_MAC_DEL;
 	if (src_exeq->get(src_exeq, &query_elem)) {
-		PMD_DRV_LOG(ERR,
+		PMD_DRV_LOG(ERR, sc,
 			    "There is a pending DEL command on the source queue already");
 		return ECORE_INVAL;
@@ -1218,5 +1219,5 @@ static int ecore_validate_vlan_mac_move(struct bnx2x_softc *sc,
 	/* Check MOVE on source */
 	if (src_exeq->get(src_exeq, elem)) {
-		ECORE_MSG("There is a pending MOVE command already");
+		ECORE_MSG(sc, "There is a pending MOVE command already");
 		return ECORE_EXISTS;
 	}
@@ -1225,5 +1226,5 @@ static int ecore_validate_vlan_mac_move(struct bnx2x_softc *sc,
 	query_elem.cmd_data.vlan_mac.cmd = ECORE_VLAN_MAC_ADD;
 	if (dest_exeq->get(dest_exeq, &query_elem)) {
-		PMD_DRV_LOG(ERR,
+		PMD_DRV_LOG(ERR, sc,
 			    "There is a pending ADD command on the destination queue already");
 		return ECORE_INVAL;
@@ -1330,5 +1331,5 @@ static int __ecore_vlan_mac_execute_step(struct bnx2x_softc *sc,
 	ECORE_SPIN_LOCK_BH(&o->exe_queue.lock);
 
-	ECORE_MSG("vlan_mac_execute_step - trying to take writer lock");
+	ECORE_MSG(sc, "vlan_mac_execute_step - trying to take writer lock");
 	rc = __ecore_vlan_mac_h_write_trylock(sc, o);
 
@@ -1427,9 +1428,9 @@ static int ecore_optimize_vlan_mac(struct bnx2x_softc *sc,
 			if ((query.cmd_data.vlan_mac.cmd ==
 			     ECORE_VLAN_MAC_ADD) && !o->put_credit(o)) {
-				PMD_DRV_LOG(ERR,
+				PMD_DRV_LOG(ERR, sc,
 					    "Failed to return the credit for the optimized ADD command");
 				return ECORE_INVAL;
 			} else if (!o->get_credit(o)) {	/* VLAN_MAC_DEL */
-				PMD_DRV_LOG(ERR,
+				PMD_DRV_LOG(ERR, sc,
 					    "Failed to recover the credit from the optimized DEL command");
 				return ECORE_INVAL;
@@ -1437,5 +1438,5 @@ static int ecore_optimize_vlan_mac(struct bnx2x_softc *sc,
 		}
 
-		ECORE_MSG("Optimizing %s command",
+		ECORE_MSG(sc, "Optimizing %s command",
 			  (elem->cmd_data.vlan_mac.cmd == ECORE_VLAN_MAC_ADD) ?
 			  "ADD" : "DEL");
@@ -1487,5 +1488,5 @@ static int ecore_vlan_mac_get_registry_elem(struct bnx2x_softc *sc,
 		}
 
-		ECORE_MSG("Got cam offset %d", reg_elem->cam_offset);
+		ECORE_MSG(sc, "Got cam offset %d", reg_elem->cam_offset);
 
 		/* Set a VLAN-MAC data */
@@ -1696,6 +1697,6 @@ int ecore_config_vlan_mac(struct bnx2x_softc *sc,
 
 	if (ECORE_TEST_BIT(RAMROD_DRV_CLR_ONLY, ramrod_flags)) {
-		ECORE_MSG
-		    ("RAMROD_DRV_CLR_ONLY requested: clearing a pending bit.");
+		ECORE_MSG(sc,
+			  "RAMROD_DRV_CLR_ONLY requested: clearing a pending bit.");
 		raw->clear_pending(raw);
 	}
@@ -1776,5 +1777,5 @@ static int ecore_vlan_mac_del_all(struct bnx2x_softc *sc,
 			rc = exeq->remove(sc, exeq->owner, exeq_pos);
 			if (rc) {
-				PMD_DRV_LOG(ERR, "Failed to remove command");
+				PMD_DRV_LOG(ERR, sc, "Failed to remove command");
 				ECORE_SPIN_UNLOCK_BH(&exeq->lock);
 				return rc;
@@ -1801,5 +1802,5 @@ static int ecore_vlan_mac_del_all(struct bnx2x_softc *sc,
 	ECORE_CLEAR_BIT_NA(RAMROD_CONT, &p.ramrod_flags);
 
-	ECORE_MSG("vlan_mac_del_all -- taking vlan_mac_lock (reader)");
+	ECORE_MSG(sc, "vlan_mac_del_all -- taking vlan_mac_lock (reader)");
 	read_lock = ecore_vlan_mac_h_read_lock(sc, o);
 	if (read_lock != ECORE_SUCCESS)
@@ -1813,5 +1814,5 @@ static int ecore_vlan_mac_del_all(struct bnx2x_softc *sc,
 			rc = ecore_config_vlan_mac(sc, &p);
 			if (rc < 0) {
-				PMD_DRV_LOG(ERR,
+				PMD_DRV_LOG(ERR, sc,
 					    "Failed to add a new DEL command");
 				ecore_vlan_mac_h_read_unlock(sc, o);
@@ -1821,5 +1822,5 @@ static int ecore_vlan_mac_del_all(struct bnx2x_softc *sc,
 	}
 
-	ECORE_MSG("vlan_mac_del_all -- releasing vlan_mac_lock (reader)");
+	ECORE_MSG(sc, "vlan_mac_del_all -- releasing vlan_mac_lock (reader)");
 	ecore_vlan_mac_h_read_unlock(sc, o);
 
@@ -2008,5 +2009,5 @@ static int ecore_set_rx_mode_e1x(struct bnx2x_softc *sc,
 	    mac_filters->unmatched_unicast & ~mask;
 
-	ECORE_MSG("drop_ucast 0x%xdrop_mcast 0x%x accp_ucast 0x%x"
+	ECORE_MSG(sc, "drop_ucast 0x%xdrop_mcast 0x%x accp_ucast 0x%x"
 		  "accp_mcast 0x%xaccp_bcast 0x%x",
 		  mac_filters->ucast_drop_all, mac_filters->mcast_drop_all,
@@ -2154,6 +2155,6 @@ static int ecore_set_rx_mode_e2(struct bnx2x_softc *sc,
 	ecore_rx_mode_set_rdata_hdr_e2(p->cid, &data->header, rule_idx);
 
-	ECORE_MSG
-	    ("About to configure %d rules, rx_accept_flags 0x%lx, tx_accept_flags 0x%lx",
+	    ECORE_MSG
+	    (sc, "About to configure %d rules, rx_accept_flags 0x%lx, tx_accept_flags 0x%lx",
 	     data->header.rule_cnt, p->rx_accept_flags, p->tx_accept_flags);
 
@@ -2208,5 +2209,5 @@ int ecore_config_rx_mode(struct bnx2x_softc *sc,
 		}
 	} else {
-		ECORE_MSG("ERROR: config_rx_mode is NULL");
+		ECORE_MSG(sc, "ERROR: config_rx_mode is NULL");
 		return -1;
 	}
@@ -2289,5 +2290,5 @@ static int ecore_mcast_enqueue_cmd(struct bnx2x_softc *sc __rte_unused,
 		return ECORE_NOMEM;
 
-	ECORE_MSG("About to enqueue a new %d command. macs_list_len=%d",
+	ECORE_MSG(sc, "About to enqueue a new %d command. macs_list_len=%d",
 		  cmd, macs_list_len);
 
@@ -2325,5 +2326,5 @@ static int ecore_mcast_enqueue_cmd(struct bnx2x_softc *sc __rte_unused,
 	default:
 		ECORE_FREE(sc, new_cmd, total_sz);
-		PMD_DRV_LOG(ERR, "Unknown command: %d", cmd);
+		PMD_DRV_LOG(ERR, sc, "Unknown command: %d", cmd);
 		return ECORE_INVAL;
 	}
@@ -2437,9 +2438,9 @@ static void ecore_mcast_set_one_rule_e2(struct bnx2x_softc *sc __rte_unused,
 
 	default:
-		PMD_DRV_LOG(ERR, "Unknown command: %d", cmd);
+		PMD_DRV_LOG(ERR, sc, "Unknown command: %d", cmd);
 		return;
 	}
 
-	ECORE_MSG("%s bin %d",
+	ECORE_MSG(sc, "%s bin %d",
 		  ((rx_tx_add_flag & ETH_MULTICAST_RULES_CMD_IS_ADD) ?
 		   "Setting" : "Clearing"), bin);
@@ -2476,5 +2477,5 @@ static int ecore_mcast_handle_restore_cmd_e2(struct bnx2x_softc *sc,
 		cnt++;
 
-		ECORE_MSG("About to configure a bin %d", cur_bin);
+		ECORE_MSG(sc, "About to configure a bin %d", cur_bin);
 
 		/* Break if we reached the maximum number
@@ -2508,6 +2509,6 @@ static void ecore_mcast_hdl_pending_add_e2(struct bnx2x_softc *sc,
 		cnt++;
 
-		ECORE_MSG
-		    ("About to configure %02x:%02x:%02x:%02x:%02x:%02x mcast MAC",
+		    ECORE_MSG
+		    (sc, "About to configure %02x:%02x:%02x:%02x:%02x:%02x mcast MAC",
 		     pmac_pos->mac[0], pmac_pos->mac[1], pmac_pos->mac[2],
 		     pmac_pos->mac[3], pmac_pos->mac[4], pmac_pos->mac[5]);
@@ -2544,5 +2545,5 @@ static void ecore_mcast_hdl_pending_del_e2(struct bnx2x_softc *sc,
 		cmd_pos->data.macs_num--;
 
-		ECORE_MSG("Deleting MAC. %d left,cnt is %d",
+		ECORE_MSG(sc, "Deleting MAC. %d left,cnt is %d",
 			  cmd_pos->data.macs_num, cnt);
 
@@ -2603,5 +2604,6 @@ static int ecore_mcast_handle_pending_cmds_e2(struct bnx2x_softc *sc, struct
 
 		default:
-			PMD_DRV_LOG(ERR, "Unknown command: %d", cmd_pos->type);
+			PMD_DRV_LOG(ERR, sc,
+				    "Unknown command: %d", cmd_pos->type);
 			return ECORE_INVAL;
 		}
@@ -2640,6 +2642,6 @@ static void ecore_mcast_hdl_add(struct bnx2x_softc *sc,
 		cnt++;
 
-		ECORE_MSG
-		    ("About to configure %02x:%02x:%02x:%02x:%02x:%02x mcast MAC",
+		    ECORE_MSG
+		    (sc, "About to configure %02x:%02x:%02x:%02x:%02x:%02x mcast MAC",
 		     mlist_pos->mac[0], mlist_pos->mac[1], mlist_pos->mac[2],
 		     mlist_pos->mac[3], mlist_pos->mac[4], mlist_pos->mac[5]);
@@ -2661,5 +2663,6 @@ static void ecore_mcast_hdl_del(struct bnx2x_softc *sc,
 		cnt++;
 
-		ECORE_MSG("Deleting MAC. %d left", p->mcast_list_len - i - 1);
+		ECORE_MSG(sc,
+			  "Deleting MAC. %d left", p->mcast_list_len - i - 1);
 	}
 
@@ -2687,5 +2690,5 @@ static int ecore_mcast_handle_current_cmd(struct bnx2x_softc *sc, struct
 	int cnt = start_cnt;
 
-	ECORE_MSG("p->mcast_list_len=%d", p->mcast_list_len);
+	ECORE_MSG(sc, "p->mcast_list_len=%d", p->mcast_list_len);
 
 	switch (cmd) {
@@ -2703,5 +2706,5 @@ static int ecore_mcast_handle_current_cmd(struct bnx2x_softc *sc, struct
 
 	default:
-		PMD_DRV_LOG(ERR, "Unknown command: %d", cmd);
+		PMD_DRV_LOG(ERR, sc, "Unknown command: %d", cmd);
 		return ECORE_INVAL;
 	}
@@ -2748,5 +2751,5 @@ static int ecore_mcast_validate_e2(__rte_unused struct bnx2x_softc *sc,
 
 	default:
-		PMD_DRV_LOG(ERR, "Unknown command: %d", cmd);
+		PMD_DRV_LOG(ERR, sc, "Unknown command: %d", cmd);
 		return ECORE_INVAL;
 	}
@@ -2934,6 +2937,6 @@ static void ecore_mcast_hdl_add_e1h(struct bnx2x_softc *sc __rte_unused,
 		ECORE_57711_SET_MC_FILTER(mc_filter, bit);
 
-		ECORE_MSG
-		    ("About to configure %02x:%02x:%02x:%02x:%02x:%02x mcast MAC, bin %d",
+		    ECORE_MSG
+		    (sc, "About to configure %02x:%02x:%02x:%02x:%02x:%02x mcast MAC, bin %d",
 		     mlist_pos->mac[0], mlist_pos->mac[1], mlist_pos->mac[2],
 		     mlist_pos->mac[3], mlist_pos->mac[4], mlist_pos->mac[5],
@@ -2955,5 +2958,5 @@ static void ecore_mcast_hdl_restore_e1h(struct bnx2x_softc *sc
 	     bit >= 0; bit = ecore_mcast_get_next_bin(o, bit + 1)) {
 		ECORE_57711_SET_MC_FILTER(mc_filter, bit);
-		ECORE_MSG("About to set bin %d", bit);
+		ECORE_MSG(sc, "About to set bin %d", bit);
 	}
 }
@@ -2986,5 +2989,5 @@ static int ecore_mcast_setup_e1h(struct bnx2x_softc *sc,
 
 		case ECORE_MCAST_CMD_DEL:
-			ECORE_MSG("Invalidating multicast MACs configuration");
+			ECORE_MSG(sc, "Invalidating multicast MACs configuration");
 
 			/* clear the registry */
@@ -2998,5 +3001,5 @@ static int ecore_mcast_setup_e1h(struct bnx2x_softc *sc,
 
 		default:
-			PMD_DRV_LOG(ERR, "Unknown command: %d", cmd);
+			PMD_DRV_LOG(ERR, sc, "Unknown command: %d", cmd);
 			return ECORE_INVAL;
 		}
@@ -3049,6 +3052,6 @@ int ecore_config_mcast(struct bnx2x_softc *sc,
 		return ECORE_SUCCESS;
 
-	ECORE_MSG
-	    ("o->total_pending_num=%d p->mcast_list_len=%d o->max_cmd_len=%d",
+	    ECORE_MSG
+	    (sc, "o->total_pending_num=%d p->mcast_list_len=%d o->max_cmd_len=%d",
 	     o->total_pending_num, p->mcast_list_len, o->max_cmd_len);
 
@@ -3479,5 +3482,5 @@ static int ecore_setup_rss(struct bnx2x_softc *sc,
 	ECORE_MEMSET(data, 0, sizeof(*data));
 
-	ECORE_MSG("Configuring RSS");
+	ECORE_MSG(sc, "Configuring RSS");
 
 	/* Set an echo field */
@@ -3493,5 +3496,5 @@ static int ecore_setup_rss(struct bnx2x_softc *sc,
 	data->rss_mode = rss_mode;
 
-	ECORE_MSG("rss_mode=%d", rss_mode);
+	ECORE_MSG(sc, "rss_mode=%d", rss_mode);
 
 	/* RSS capabilities */
@@ -3533,5 +3536,5 @@ static int ecore_setup_rss(struct bnx2x_softc *sc,
 	data->rss_engine_id = o->engine_id;
 
-	ECORE_MSG("rss_engine_id=%d", data->rss_engine_id);
+	ECORE_MSG(sc, "rss_engine_id=%d", data->rss_engine_id);
 
 	/* Indirection table */
@@ -3628,5 +3631,5 @@ int ecore_queue_state_change(struct bnx2x_softc *sc,
 	rc = o->check_transition(sc, o, params);
 	if (rc) {
-		PMD_DRV_LOG(ERR, "check transition returned an error. rc %d",
+		PMD_DRV_LOG(ERR, sc, "check transition returned an error. rc %d",
 			    rc);
 		return ECORE_INVAL;
@@ -3634,7 +3637,7 @@ int ecore_queue_state_change(struct bnx2x_softc *sc,
 
 	/* Set "pending" bit */
-	ECORE_MSG("pending bit was=%lx", o->pending);
+	ECORE_MSG(sc, "pending bit was=%lx", o->pending);
 	pending_bit = o->set_pending(o, params);
-	ECORE_MSG("pending bit now=%lx", o->pending);
+	ECORE_MSG(sc, "pending bit now=%lx", o->pending);
 
 	/* Don't send a command if only driver cleanup was requested */
@@ -3703,5 +3706,5 @@ static int ecore_queue_comp_cmd(struct bnx2x_softc *sc __rte_unused,
 
 	if (!ECORE_TEST_AND_CLEAR_BIT(cmd, &cur_pending)) {
-		PMD_DRV_LOG(ERR,
+		PMD_DRV_LOG(ERR, sc,
 			    "Bad MC reply %d for queue %d in state %d pending 0x%lx, next_state %d",
 			    cmd, o->cids[ECORE_PRIMARY_CID_INDEX], o->state,
@@ -3714,13 +3717,13 @@ static int ecore_queue_comp_cmd(struct bnx2x_softc *sc __rte_unused,
 		 * primary connection supports COS 0
 		 */
-		PMD_DRV_LOG(ERR,
+		PMD_DRV_LOG(ERR, sc,
 			    "illegal value for next tx_only: %d. max cos was %d",
 			    o->next_tx_only, o->max_cos);
 
-	ECORE_MSG("Completing command %d for queue %d, setting state to %d",
+	ECORE_MSG(sc, "Completing command %d for queue %d, setting state to %d",
 		  cmd, o->cids[ECORE_PRIMARY_CID_INDEX], o->next_state);
 
 	if (o->next_tx_only)	/* print num tx-only if any exist */
-		ECORE_MSG("primary cid %d: num tx-only cons %d",
+		ECORE_MSG(sc, "primary cid %d: num tx-only cons %d",
 			  o->cids[ECORE_PRIMARY_CID_INDEX], o->next_tx_only);
 
@@ -3783,5 +3786,5 @@ static void ecore_q_fill_init_general_data(struct bnx2x_softc *sc __rte_unused,
 	    LLFC_TRAFFIC_TYPE_FCOE : LLFC_TRAFFIC_TYPE_NW;
 
-	ECORE_MSG("flags: active %d, cos %d, stats en %d",
+	ECORE_MSG(sc, "flags: active %d, cos %d, stats en %d",
 		  gen_data->activate_flg, gen_data->cos,
 		  gen_data->statistics_en_flg);
@@ -3924,5 +3927,5 @@ static void ecore_q_fill_setup_tx_only(struct bnx2x_softc *sc, struct ecore_queu
 				  &data->tx, &cmd_params->params.tx_only.flags);
 
-	ECORE_MSG("cid %d, tx bd page lo %x hi %x",
+	ECORE_MSG(sc, "cid %d, tx bd page lo %x hi %x",
 		  cmd_params->q_obj->cids[0],
 		  data->tx.tx_bd_page_base.lo, data->tx.tx_bd_page_base.hi);
@@ -3974,7 +3977,7 @@ static int ecore_q_init(struct bnx2x_softc *sc,
 	/* Set CDU context validation values */
 	for (cos = 0; cos < o->max_cos; cos++) {
-		ECORE_MSG("setting context validation. cid %d, cos %d",
+		ECORE_MSG(sc, "setting context validation. cid %d, cos %d",
 			  o->cids[cos], cos);
-		ECORE_MSG("context pointer %p", init->cxts[cos]);
+		ECORE_MSG(sc, "context pointer %p", init->cxts[cos]);
 		ECORE_SET_CTX_VALIDATION(sc, init->cxts[cos], o->cids[cos]);
 	}
@@ -4060,13 +4063,13 @@ static int ecore_q_send_setup_tx_only(struct bnx2x_softc *sc, struct ecore_queue
 	if (ECORE_TEST_BIT(ECORE_Q_TYPE_FWD, &o->type))
 		ramrod = RAMROD_CMD_ID_ETH_FORWARD_SETUP;
-	ECORE_MSG("sending forward tx-only ramrod");
+	ECORE_MSG(sc, "sending forward tx-only ramrod");
 
 	if (cid_index >= o->max_cos) {
-		PMD_DRV_LOG(ERR, "queue[%d]: cid_index (%d) is out of range",
+		PMD_DRV_LOG(ERR, sc, "queue[%d]: cid_index (%d) is out of range",
 			    o->cl_id, cid_index);
 		return ECORE_INVAL;
 	}
 
-	ECORE_MSG("parameters received: cos: %d sp-id: %d",
+	ECORE_MSG(sc, "parameters received: cos: %d sp-id: %d",
 		  tx_only_params->gen_params.cos,
 		  tx_only_params->gen_params.spcl_id);
@@ -4078,6 +4081,6 @@ static int ecore_q_send_setup_tx_only(struct bnx2x_softc *sc, struct ecore_queue
 	ecore_q_fill_setup_tx_only(sc, params, rdata);
 
-	ECORE_MSG
-	    ("sending tx-only ramrod: cid %d, client-id %d, sp-client id %d, cos %d",
+	    ECORE_MSG
+	    (sc, "sending tx-only ramrod: cid %d, client-id %d, sp-client id %d, cos %d",
 	     o->cids[cid_index], rdata->general.client_id,
 	     rdata->general.sp_client_id, rdata->general.cos);
@@ -4174,5 +4177,5 @@ static int ecore_q_send_update(struct bnx2x_softc *sc,
 
 	if (cid_index >= o->max_cos) {
-		PMD_DRV_LOG(ERR, "queue[%d]: cid_index (%d) is out of range",
+		PMD_DRV_LOG(ERR, sc, "queue[%d]: cid_index (%d) is out of range",
 			    o->cl_id, cid_index);
 		return ECORE_INVAL;
@@ -4268,5 +4271,5 @@ static int ecore_q_send_cfc_del(struct bnx2x_softc *sc,
 
 	if (cid_idx >= o->max_cos) {
-		PMD_DRV_LOG(ERR, "queue[%d]: cid_index (%d) is out of range",
+		PMD_DRV_LOG(ERR, sc, "queue[%d]: cid_index (%d) is out of range",
 			    o->cl_id, cid_idx);
 		return ECORE_INVAL;
@@ -4284,5 +4287,5 @@ static int ecore_q_send_terminate(struct bnx2x_softc *sc, struct ecore_queue_sta
 
 	if (cid_index >= o->max_cos) {
-		PMD_DRV_LOG(ERR, "queue[%d]: cid_index (%d) is out of range",
+		PMD_DRV_LOG(ERR, sc, "queue[%d]: cid_index (%d) is out of range",
 			    o->cl_id, cid_index);
 		return ECORE_INVAL;
@@ -4328,5 +4331,5 @@ static int ecore_queue_send_cmd_cmn(struct bnx2x_softc *sc, struct ecore_queue_s
 		return ecore_q_send_empty(sc, params);
 	default:
-		PMD_DRV_LOG(ERR, "Unknown command: %d", params->cmd);
+		PMD_DRV_LOG(ERR, sc, "Unknown command: %d", params->cmd);
 		return ECORE_INVAL;
 	}
@@ -4351,5 +4354,5 @@ static int ecore_queue_send_cmd_e1x(struct bnx2x_softc *sc,
 		return ecore_queue_send_cmd_cmn(sc, params);
 	default:
-		PMD_DRV_LOG(ERR, "Unknown command: %d", params->cmd);
+		PMD_DRV_LOG(ERR, sc, "Unknown command: %d", params->cmd);
 		return ECORE_INVAL;
 	}
@@ -4374,5 +4377,5 @@ static int ecore_queue_send_cmd_e2(struct bnx2x_softc *sc,
 		return ecore_queue_send_cmd_cmn(sc, params);
 	default:
-		PMD_DRV_LOG(ERR, "Unknown command: %d", params->cmd);
+		PMD_DRV_LOG(ERR, sc, "Unknown command: %d", params->cmd);
 		return ECORE_INVAL;
 	}
@@ -4417,5 +4420,5 @@ static int ecore_queue_chk_transition(struct bnx2x_softc *sc __rte_unused,
 	 */
 	if (o->pending) {
-		PMD_DRV_LOG(ERR, "Blocking transition since pending was %lx",
+		PMD_DRV_LOG(ERR, sc, "Blocking transition since pending was %lx",
 			    o->pending);
 		return ECORE_BUSY;
@@ -4544,10 +4547,10 @@ static int ecore_queue_chk_transition(struct bnx2x_softc *sc __rte_unused,
 		break;
 	default:
-		PMD_DRV_LOG(ERR, "Illegal state: %d", state);
+		PMD_DRV_LOG(ERR, sc, "Illegal state: %d", state);
 	}
 
 	/* Transition is assured */
 	if (next_state != ECORE_Q_STATE_MAX) {
-		ECORE_MSG("Good state transition: %d(%d)->%d",
+		ECORE_MSG(sc, "Good state transition: %d(%d)->%d",
 			  state, cmd, next_state);
 		o->next_state = next_state;
@@ -4556,5 +4559,5 @@ static int ecore_queue_chk_transition(struct bnx2x_softc *sc __rte_unused,
 	}
 
-	ECORE_MSG("Bad state transition request: %d %d", state, cmd);
+	ECORE_MSG(sc, "Bad state transition request: %d %d", state, cmd);
 
 	return ECORE_INVAL;
@@ -4607,10 +4610,10 @@ static int ecore_queue_chk_fwd_transition(struct bnx2x_softc *sc __rte_unused,
 		break;
 	default:
-		PMD_DRV_LOG(ERR, "Illegal state: %d", state);
+		PMD_DRV_LOG(ERR, sc, "Illegal state: %d", state);
 	}
 
 	/* Transition is assured */
 	if (next_state != ECORE_Q_STATE_MAX) {
-		ECORE_MSG("Good state transition: %d(%d)->%d",
+		ECORE_MSG(sc, "Good state transition: %d(%d)->%d",
 			  state, cmd, next_state);
 		o->next_state = next_state;
@@ -4618,5 +4621,5 @@ static int ecore_queue_chk_fwd_transition(struct bnx2x_softc *sc __rte_unused,
 	}
 
-	ECORE_MSG("Bad state transition request: %d %d", state, cmd);
+	ECORE_MSG(sc, "Bad state transition request: %d %d", state, cmd);
 	return ECORE_INVAL;
 }
@@ -4698,5 +4701,5 @@ ecore_func_state_change_comp(struct bnx2x_softc *sc __rte_unused,
 
 	if (!ECORE_TEST_AND_CLEAR_BIT(cmd, &cur_pending)) {
-		PMD_DRV_LOG(ERR,
+		PMD_DRV_LOG(ERR, sc,
 			    "Bad MC reply %d for func %d in state %d pending 0x%lx, next_state %d",
 			    cmd, ECORE_FUNC_ID(sc), o->state, cur_pending,
@@ -4705,5 +4708,5 @@ ecore_func_state_change_comp(struct bnx2x_softc *sc __rte_unused,
 	}
 
-	ECORE_MSG("Completing command %d for func %d, setting state to %d",
+	ECORE_MSG(sc, "Completing command %d for func %d, setting state to %d",
 		  cmd, ECORE_FUNC_ID(sc), o->next_state);
 
@@ -4828,10 +4831,10 @@ static int ecore_func_chk_transition(struct bnx2x_softc *sc __rte_unused,
 		break;
 	default:
-		PMD_DRV_LOG(ERR, "Unknown state: %d", state);
+		PMD_DRV_LOG(ERR, sc, "Unknown state: %d", state);
 	}
 
 	/* Transition is assured */
 	if (next_state != ECORE_F_STATE_MAX) {
-		ECORE_MSG("Good function state transition: %d(%d)->%d",
+		ECORE_MSG(sc, "Good function state transition: %d(%d)->%d",
 			  state, cmd, next_state);
 		o->next_state = next_state;
@@ -4839,5 +4842,6 @@ static int ecore_func_chk_transition(struct bnx2x_softc *sc __rte_unused,
 	}
 
-	ECORE_MSG("Bad function state transition request: %d %d", state, cmd);
+	ECORE_MSG(sc,
+		  "Bad function state transition request: %d %d", state, cmd);
 
 	return ECORE_INVAL;
@@ -4929,5 +4933,5 @@ static int ecore_func_hw_init(struct bnx2x_softc *sc,
 	int rc = 0;
 
-	ECORE_MSG("function %d  load_code %x",
+	ECORE_MSG(sc, "function %d  load_code %x",
 		  ECORE_ABS_FUNC_ID(sc), load_code);
 
@@ -4935,5 +4939,5 @@ static int ecore_func_hw_init(struct bnx2x_softc *sc,
 	rc = drv->init_fw(sc);
 	if (rc) {
-		PMD_DRV_LOG(ERR, "Error loading firmware");
+		PMD_DRV_LOG(ERR, sc, "Error loading firmware");
 		goto init_err;
 	}
@@ -4966,5 +4970,5 @@ static int ecore_func_hw_init(struct bnx2x_softc *sc,
 		break;
 	default:
-		PMD_DRV_LOG(ERR, "Unknown load_code (0x%x) from MCP",
+		PMD_DRV_LOG(ERR, sc, "Unknown load_code (0x%x) from MCP",
 			    load_code);
 		rc = ECORE_INVAL;
@@ -5042,5 +5046,5 @@ static int ecore_func_hw_reset(struct bnx2x_softc *sc,
 	const struct ecore_func_sp_drv_ops *drv = o->drv;
 
-	ECORE_MSG("function %d  reset_phase %x", ECORE_ABS_FUNC_ID(sc),
+	ECORE_MSG(sc, "function %d  reset_phase %x", ECORE_ABS_FUNC_ID(sc),
 		  reset_phase);
 
@@ -5056,5 +5060,5 @@ static int ecore_func_hw_reset(struct bnx2x_softc *sc,
 		break;
 	default:
-		PMD_DRV_LOG(ERR, "Unknown reset_phase (0x%x) from MCP",
+		PMD_DRV_LOG(ERR, sc, "Unknown reset_phase (0x%x) from MCP",
 			    reset_phase);
 		break;
@@ -5147,5 +5151,5 @@ static int ecore_func_send_afex_update(struct bnx2x_softc *sc, struct ecore_func
 	 *  (inside ecore_sp_post()).
 	 */
-	ECORE_MSG("afex: sending func_update vif_id 0x%x dvlan 0x%x prio 0x%x",
+	ECORE_MSG(sc, "afex: sending func_update vif_id 0x%x dvlan 0x%x prio 0x%x",
 		  rdata->vif_id,
 		  rdata->afex_default_vlan, rdata->allowed_priorities);
@@ -5185,6 +5189,6 @@ inline int ecore_func_send_afex_viflists(struct bnx2x_softc *sc,
 	 */
 
-	ECORE_MSG
-	    ("afex: ramrod lists, cmd 0x%x index 0x%x func_bit_map 0x%x func_to_clr 0x%x",
+	    ECORE_MSG
+	    (sc, "afex: ramrod lists, cmd 0x%x index 0x%x func_bit_map 0x%x func_to_clr 0x%x",
 	     rdata->afex_vif_list_command, rdata->vif_list_index,
 	     rdata->func_bit_map, rdata->func_to_clear);
@@ -5257,5 +5261,5 @@ static int ecore_func_send_cmd(struct bnx2x_softc *sc,
 		return ecore_func_send_switch_update(sc, params);
 	default:
-		PMD_DRV_LOG(ERR, "Unknown command: %d", params->cmd);
+		PMD_DRV_LOG(ERR, sc, "Unknown command: %d", params->cmd);
 		return ECORE_INVAL;
 	}
@@ -5318,5 +5322,5 @@ int ecore_func_state_change(struct bnx2x_softc *sc,
 		if (rc == ECORE_BUSY) {
 			ECORE_MUTEX_UNLOCK(&o->one_pending_mutex);
-			PMD_DRV_LOG(ERR,
+			PMD_DRV_LOG(ERR, sc,
 				    "timeout waiting for previous ramrod completion");
 			return rc;
diff --git a/drivers/net/bnx2x/ecore_sp.h b/drivers/net/bnx2x/ecore_sp.h
index 6b65a4967..f295bf5af 100644
--- a/drivers/net/bnx2x/ecore_sp.h
+++ b/drivers/net/bnx2x/ecore_sp.h
@@ -216,6 +216,6 @@ ECORE_CRC32_LE(uint32_t seed, uint8_t *mac, uint32_t len)
 
 
-#define ECORE_MSG(m, ...) \
-	PMD_DRV_LOG(DEBUG, m, ##__VA_ARGS__)
+#define ECORE_MSG(sc, m, ...) \
+	PMD_DRV_LOG(DEBUG, sc, m, ##__VA_ARGS__)
 
 typedef struct _ecore_list_entry_t
diff --git a/drivers/net/bnx2x/elink.c b/drivers/net/bnx2x/elink.c
index b63fd23e5..1f94476c5 100644
--- a/drivers/net/bnx2x/elink.c
+++ b/drivers/net/bnx2x/elink.c
@@ -943,5 +943,5 @@ static int elink_check_lfa(struct elink_params *params)
 	 */
 	if (additional_config & NO_LFA_DUE_TO_DCC_MASK) {
-		PMD_DRV_LOG(DEBUG, "No LFA due to DCC flap after clp exit");
+		PMD_DRV_LOG(DEBUG, sc, "No LFA due to DCC flap after clp exit");
 		REG_WR(sc, params->lfa_base +
 		       offsetof(struct shmem_lfa, additional_config),
@@ -984,5 +984,5 @@ static int elink_check_lfa(struct elink_params *params)
 	req_val = params->req_duplex[0] | (params->req_duplex[1] << 16);
 	if ((saved_val & lfa_mask) != (req_val & lfa_mask)) {
-		PMD_DRV_LOG(INFO, "Duplex mismatch %x vs. %x",
+		PMD_DRV_LOG(INFO, sc, "Duplex mismatch %x vs. %x",
 			    (saved_val & lfa_mask), (req_val & lfa_mask));
 		return LFA_DUPLEX_MISMATCH;
@@ -993,5 +993,5 @@ static int elink_check_lfa(struct elink_params *params)
 	req_val = params->req_flow_ctrl[0] | (params->req_flow_ctrl[1] << 16);
 	if ((saved_val & lfa_mask) != (req_val & lfa_mask)) {
-		PMD_DRV_LOG(DEBUG, "Flow control mismatch %x vs. %x",
+		PMD_DRV_LOG(DEBUG, sc, "Flow control mismatch %x vs. %x",
 			    (saved_val & lfa_mask), (req_val & lfa_mask));
 		return LFA_FLOW_CTRL_MISMATCH;
@@ -1002,5 +1002,5 @@ static int elink_check_lfa(struct elink_params *params)
 	req_val = params->req_line_speed[0] | (params->req_line_speed[1] << 16);
 	if ((saved_val & lfa_mask) != (req_val & lfa_mask)) {
-		PMD_DRV_LOG(DEBUG, "Link speed mismatch %x vs. %x",
+		PMD_DRV_LOG(DEBUG, sc, "Link speed mismatch %x vs. %x",
 			    (saved_val & lfa_mask), (req_val & lfa_mask));
 		return LFA_LINK_SPEED_MISMATCH;
@@ -1013,5 +1013,5 @@ static int elink_check_lfa(struct elink_params *params)
 
 		if (cur_speed_cap_mask != params->speed_cap_mask[cfg_idx]) {
-			PMD_DRV_LOG(DEBUG, "Speed Cap mismatch %x vs. %x",
+			PMD_DRV_LOG(DEBUG, sc, "Speed Cap mismatch %x vs. %x",
 				    cur_speed_cap_mask,
 				    params->speed_cap_mask[cfg_idx]);
@@ -1026,5 +1026,5 @@ static int elink_check_lfa(struct elink_params *params)
 
 	if ((uint16_t) cur_req_fc_auto_adv != params->req_fc_auto_adv) {
-		PMD_DRV_LOG(DEBUG, "Flow Ctrl AN mismatch %x vs. %x",
+		PMD_DRV_LOG(DEBUG, sc, "Flow Ctrl AN mismatch %x vs. %x",
 			    cur_req_fc_auto_adv, params->req_fc_auto_adv);
 		return LFA_FLOW_CTRL_MISMATCH;
@@ -1039,5 +1039,6 @@ static int elink_check_lfa(struct elink_params *params)
 	    ((eee_status & SHMEM_EEE_REQUESTED_BIT) ^
 	     (params->eee_mode & ELINK_EEE_MODE_ADV_LPI))) {
-		PMD_DRV_LOG(DEBUG, "EEE mismatch %x vs. %x", params->eee_mode,
+		PMD_DRV_LOG(DEBUG, sc,
+			    "EEE mismatch %x vs. %x", params->eee_mode,
 			    eee_status);
 		return LFA_EEE_MISMATCH;
@@ -1058,5 +1059,5 @@ static void elink_get_epio(struct bnx2x_softc *sc, uint32_t epio_pin,
 	/* Sanity check */
 	if (epio_pin > 31) {
-		PMD_DRV_LOG(DEBUG, "Invalid EPIO pin %d to get", epio_pin);
+		PMD_DRV_LOG(DEBUG, sc, "Invalid EPIO pin %d to get", epio_pin);
 		return;
 	}
@@ -1076,8 +1077,8 @@ static void elink_set_epio(struct bnx2x_softc *sc, uint32_t epio_pin, uint32_t e
 	/* Sanity check */
 	if (epio_pin > 31) {
-		PMD_DRV_LOG(DEBUG, "Invalid EPIO pin %d to set", epio_pin);
+		PMD_DRV_LOG(DEBUG, sc, "Invalid EPIO pin %d to set", epio_pin);
 		return;
 	}
-	PMD_DRV_LOG(DEBUG, "Setting EPIO pin %d to %d", epio_pin, en);
+	PMD_DRV_LOG(DEBUG, sc, "Setting EPIO pin %d to %d", epio_pin, en);
 	epio_mask = 1 << epio_pin;
 	/* Set this EPIO to output */
@@ -1210,5 +1211,5 @@ static void elink_set_mdio_clk(struct bnx2x_softc *sc, uint32_t emac_base)
 	new_mode |= (EMAC_MDIO_MODE_CLAUSE_45);
 
-	PMD_DRV_LOG(DEBUG, "Changing emac_mode from 0x%x to 0x%x",
+	PMD_DRV_LOG(DEBUG, sc, "Changing emac_mode from 0x%x to 0x%x",
 		    cur_mode, new_mode);
 	REG_WR(sc, emac_base + EMAC_REG_EMAC_MDIO_MODE, new_mode);
@@ -1263,7 +1264,7 @@ static void elink_emac_init(struct elink_params *params)
 	do {
 		val = REG_RD(sc, emac_base + EMAC_REG_EMAC_MODE);
-		PMD_DRV_LOG(DEBUG, "EMAC reset reg is %u", val);
+		PMD_DRV_LOG(DEBUG, sc, "EMAC reset reg is %u", val);
 		if (!timeout) {
-			PMD_DRV_LOG(DEBUG, "EMAC timeout!");
+			PMD_DRV_LOG(DEBUG, sc, "EMAC timeout!");
 			return;
 		}
@@ -1328,5 +1329,5 @@ static void elink_umac_enable(struct elink_params *params,
 	       (MISC_REGISTERS_RESET_REG_2_UMAC0 << params->port));
 
-	PMD_DRV_LOG(DEBUG, "enabling UMAC");
+	PMD_DRV_LOG(DEBUG, sc, "enabling UMAC");
 
 	/* This register opens the gate for the UMAC despite its name */
@@ -1351,5 +1352,5 @@ static void elink_umac_enable(struct elink_params *params,
 		break;
 	default:
-		PMD_DRV_LOG(DEBUG, "Invalid speed for UMAC %d",
+		PMD_DRV_LOG(DEBUG, sc, "Invalid speed for UMAC %d",
 			    vars->line_speed);
 		break;
@@ -1369,5 +1370,5 @@ static void elink_umac_enable(struct elink_params *params,
 	/* Configure UMAC for EEE */
 	if (vars->eee_status & SHMEM_EEE_ADV_STATUS_MASK) {
-		PMD_DRV_LOG(DEBUG, "configured UMAC for EEE");
+		PMD_DRV_LOG(DEBUG, sc, "configured UMAC for EEE");
 		REG_WR(sc, umac_base + UMAC_REG_UMAC_EEE_CTRL,
 		       UMAC_UMAC_EEE_CTRL_REG_EEE_EN);
@@ -1427,5 +1428,5 @@ static void elink_xmac_init(struct elink_params *params, uint32_t max_speed)
 	    (REG_RD(sc, MISC_REG_RESET_REG_2) &
 	     MISC_REGISTERS_RESET_REG_2_XMAC)) {
-		PMD_DRV_LOG(DEBUG, "XMAC already out of reset in 4-port mode");
+		PMD_DRV_LOG(DEBUG, sc, "XMAC already out of reset in 4-port mode");
 		return;
 	}
@@ -1439,5 +1440,5 @@ static void elink_xmac_init(struct elink_params *params, uint32_t max_speed)
 	       MISC_REGISTERS_RESET_REG_2_XMAC);
 	if (is_port4mode) {
-		PMD_DRV_LOG(DEBUG, "Init XMAC to 2 ports x 10G per path");
+		PMD_DRV_LOG(DEBUG, sc, "Init XMAC to 2 ports x 10G per path");
 
 		/* Set the number of ports on the system side to up to 2 */
@@ -1450,10 +1451,10 @@ static void elink_xmac_init(struct elink_params *params, uint32_t max_speed)
 		REG_WR(sc, MISC_REG_XMAC_CORE_PORT_MODE, 0);
 		if (max_speed == ELINK_SPEED_10000) {
-			PMD_DRV_LOG(DEBUG,
+			PMD_DRV_LOG(DEBUG, sc,
 				    "Init XMAC to 10G x 1 port per path");
 			/* Set the number of ports on the Warp Core to 10G */
 			REG_WR(sc, MISC_REG_XMAC_PHY_PORT_MODE, 3);
 		} else {
-			PMD_DRV_LOG(DEBUG,
+			PMD_DRV_LOG(DEBUG, sc,
 				    "Init XMAC to 20G x 2 ports per path");
 			/* Set the number of ports on the Warp Core to 20G */
@@ -1488,5 +1489,5 @@ static void elink_set_xmac_rxtx(struct elink_params *params, uint8_t en)
 		REG_WR(sc, xmac_base + XMAC_REG_PFC_CTRL_HI,
 		       (pfc_ctrl | (1 << 1)));
-		PMD_DRV_LOG(DEBUG, "Disable XMAC on port %x", port);
+		PMD_DRV_LOG(DEBUG, sc, "Disable XMAC on port %x", port);
 		val = REG_RD(sc, xmac_base + XMAC_REG_CTRL);
 		if (en)
@@ -1503,5 +1504,5 @@ static elink_status_t elink_xmac_enable(struct elink_params *params,
 	uint32_t val, xmac_base;
 	struct bnx2x_softc *sc = params->sc;
-	PMD_DRV_LOG(DEBUG, "enabling XMAC");
+	PMD_DRV_LOG(DEBUG, sc, "enabling XMAC");
 
 	xmac_base = (params->port) ? GRCBASE_XMAC1 : GRCBASE_XMAC0;
@@ -1540,5 +1541,5 @@ static elink_status_t elink_xmac_enable(struct elink_params *params,
 
 	if (vars->eee_status & SHMEM_EEE_ADV_STATUS_MASK) {
-		PMD_DRV_LOG(DEBUG, "Setting XMAC for EEE");
+		PMD_DRV_LOG(DEBUG, sc, "Setting XMAC for EEE");
 		REG_WR(sc, xmac_base + XMAC_REG_EEE_TIMERS_HI, 0x1380008);
 		REG_WR(sc, xmac_base + XMAC_REG_EEE_CTRL, 0x1);
@@ -1576,5 +1577,5 @@ static elink_status_t elink_emac_enable(struct elink_params *params,
 	uint32_t val;
 
-	PMD_DRV_LOG(DEBUG, "enabling EMAC");
+	PMD_DRV_LOG(DEBUG, sc, "enabling EMAC");
 
 	/* Disable BMAC */
@@ -1590,5 +1591,5 @@ static elink_status_t elink_emac_enable(struct elink_params *params,
 				     PORT_HW_CFG_LANE_SWAP_CFG_MASTER_SHIFT);
 
-		PMD_DRV_LOG(DEBUG, "XGXS");
+		PMD_DRV_LOG(DEBUG, sc, "XGXS");
 		/* select the master lanes (out of 0-3) */
 		REG_WR(sc, NIG_REG_XGXS_LANE_SEL_P0 + port * 4, ser_lane);
@@ -1597,5 +1598,5 @@ static elink_status_t elink_emac_enable(struct elink_params *params,
 
 	} else {		/* SerDes */
-		PMD_DRV_LOG(DEBUG, "SerDes");
+		PMD_DRV_LOG(DEBUG, sc, "SerDes");
 		/* select SerDes */
 		REG_WR(sc, NIG_REG_XGXS_SERDES0_MODE_SEL + port * 4, 0);
@@ -1643,5 +1644,5 @@ static elink_status_t elink_emac_enable(struct elink_params *params,
 	elink_cb_reg_write(sc, emac_base + EMAC_REG_RX_PFC_MODE, 0);
 	if (params->feature_config_flags & ELINK_FEATURE_CONFIG_PFC_ENABLED) {
-		PMD_DRV_LOG(DEBUG, "PFC is enabled");
+		PMD_DRV_LOG(DEBUG, sc, "PFC is enabled");
 		/* Enable PFC again */
 		elink_cb_reg_write(sc, emac_base + EMAC_REG_RX_PFC_MODE,
@@ -1763,5 +1764,5 @@ static void elink_update_pfc_bmac2(struct elink_params *params,
 
 	if (params->feature_config_flags & ELINK_FEATURE_CONFIG_PFC_ENABLED) {
-		PMD_DRV_LOG(DEBUG, "PFC is enabled");
+		PMD_DRV_LOG(DEBUG, sc, "PFC is enabled");
 		/* Enable PFC RX & TX & STATS and set 8 COS  */
 		wb_data[0] = 0x0;
@@ -1777,5 +1778,5 @@ static void elink_update_pfc_bmac2(struct elink_params *params,
 		wb_data[0] &= ~(1 << 2);
 	} else {
-		PMD_DRV_LOG(DEBUG, "PFC is disabled");
+		PMD_DRV_LOG(DEBUG, sc, "PFC is disabled");
 		/* Disable PFC RX & TX & STATS and set 8 COS */
 		wb_data[0] = 0x8;
@@ -1803,5 +1804,5 @@ static void elink_update_pfc_bmac2(struct elink_params *params,
 	if (is_lb) {
 		val |= 0x4;	/* Local loopback */
-		PMD_DRV_LOG(DEBUG, "enable bmac loopback");
+		PMD_DRV_LOG(DEBUG, sc, "enable bmac loopback");
 	}
 	/* When PFC enabled, Pass pause frames towards the NIG. */
@@ -1897,5 +1898,5 @@ static void elink_update_pfc_nig(struct elink_params *params,
 	int set_pfc = params->feature_config_flags &
 	    ELINK_FEATURE_CONFIG_PFC_ENABLED;
-	PMD_DRV_LOG(DEBUG, "updating pfc nig parameters");
+	PMD_DRV_LOG(DEBUG, sc, "updating pfc nig parameters");
 
 	/* When NIG_LLH0_XCM_MASK_REG_LLHX_XCM_MASK_BCN bit is set
@@ -2009,5 +2010,5 @@ elink_status_t elink_update_pfc(struct elink_params *params,
 		return elink_status;
 
-	PMD_DRV_LOG(DEBUG, "About to update PFC in BMAC");
+	PMD_DRV_LOG(DEBUG, sc, "About to update PFC in BMAC");
 
 	if (CHIP_IS_E3(sc)) {
@@ -2019,5 +2020,5 @@ elink_status_t elink_update_pfc(struct elink_params *params,
 		     (MISC_REGISTERS_RESET_REG_2_RST_BMAC0 << params->port))
 		    == 0) {
-			PMD_DRV_LOG(DEBUG, "About to update PFC in EMAC");
+			PMD_DRV_LOG(DEBUG, sc, "About to update PFC in EMAC");
 			elink_emac_enable(params, vars, 0);
 			return elink_status;
@@ -2048,5 +2049,5 @@ static elink_status_t elink_bmac1_enable(struct elink_params *params,
 	uint32_t val;
 
-	PMD_DRV_LOG(DEBUG, "Enabling BigMAC1");
+	PMD_DRV_LOG(DEBUG, sc, "Enabling BigMAC1");
 
 	/* XGXS control */
@@ -2067,5 +2068,5 @@ static elink_status_t elink_bmac1_enable(struct elink_params *params,
 	if (is_lb) {
 		val |= 0x4;
-		PMD_DRV_LOG(DEBUG, "enable bmac loopback");
+		PMD_DRV_LOG(DEBUG, sc, "enable bmac loopback");
 	}
 	wb_data[0] = val;
@@ -2108,5 +2109,5 @@ static elink_status_t elink_bmac2_enable(struct elink_params *params,
 	uint32_t wb_data[2];
 
-	PMD_DRV_LOG(DEBUG, "Enabling BigMAC2");
+	PMD_DRV_LOG(DEBUG, sc, "Enabling BigMAC2");
 
 	wb_data[0] = 0;
@@ -2246,5 +2247,5 @@ static elink_status_t elink_pbf_update(struct elink_params *params,
 	init_crd = REG_RD(sc, PBF_REG_P0_INIT_CRD + port * 4);
 	crd = REG_RD(sc, PBF_REG_P0_CREDIT + port * 8);
-	PMD_DRV_LOG(DEBUG, "init_crd 0x%x  crd 0x%x", init_crd, crd);
+	PMD_DRV_LOG(DEBUG, sc, "init_crd 0x%x  crd 0x%x", init_crd, crd);
 
 	while ((init_crd != crd) && count) {
@@ -2255,5 +2256,5 @@ static elink_status_t elink_pbf_update(struct elink_params *params,
 	crd = REG_RD(sc, PBF_REG_P0_CREDIT + port * 8);
 	if (init_crd != crd) {
-		PMD_DRV_LOG(DEBUG, "BUG! init_crd 0x%x != crd 0x%x",
+		PMD_DRV_LOG(DEBUG, sc, "BUG! init_crd 0x%x != crd 0x%x",
 			    init_crd, crd);
 		return ELINK_STATUS_ERROR;
@@ -2282,5 +2283,5 @@ static elink_status_t elink_pbf_update(struct elink_params *params,
 			break;
 		default:
-			PMD_DRV_LOG(DEBUG, "Invalid line_speed 0x%x",
+			PMD_DRV_LOG(DEBUG, sc, "Invalid line_speed 0x%x",
 				    line_speed);
 			return ELINK_STATUS_ERROR;
@@ -2288,5 +2289,5 @@ static elink_status_t elink_pbf_update(struct elink_params *params,
 	}
 	REG_WR(sc, PBF_REG_P0_INIT_CRD + port * 4, init_crd);
-	PMD_DRV_LOG(DEBUG, "PBF updated to speed %d credit %d",
+	PMD_DRV_LOG(DEBUG, sc, "PBF updated to speed %d credit %d",
 		    line_speed, init_crd);
 
@@ -2378,5 +2379,5 @@ static elink_status_t elink_cl22_write(struct bnx2x_softc *sc,
 	}
 	if (tmp & EMAC_MDIO_COMM_START_BUSY) {
-		PMD_DRV_LOG(DEBUG, "write phy register failed");
+		PMD_DRV_LOG(DEBUG, sc, "write phy register failed");
 		rc = ELINK_STATUS_TIMEOUT;
 	}
@@ -2414,5 +2415,5 @@ static elink_status_t elink_cl22_read(struct bnx2x_softc *sc,
 	}
 	if (val & EMAC_MDIO_COMM_START_BUSY) {
-		PMD_DRV_LOG(DEBUG, "read phy register failed");
+		PMD_DRV_LOG(DEBUG, sc, "read phy register failed");
 
 		*ret_val = 0;
@@ -2455,5 +2456,5 @@ static elink_status_t elink_cl45_read(struct bnx2x_softc *sc,
 	}
 	if (val & EMAC_MDIO_COMM_START_BUSY) {
-		PMD_DRV_LOG(DEBUG, "read phy register failed");
+		PMD_DRV_LOG(DEBUG, sc, "read phy register failed");
 		elink_cb_event_log(sc, ELINK_LOG_ID_MDIO_ACCESS_TIMEOUT);	// "MDC/MDIO access timeout"
 
@@ -2479,5 +2480,5 @@ static elink_status_t elink_cl45_read(struct bnx2x_softc *sc,
 		}
 		if (val & EMAC_MDIO_COMM_START_BUSY) {
-			PMD_DRV_LOG(DEBUG, "read phy register failed");
+			PMD_DRV_LOG(DEBUG, sc, "read phy register failed");
 			elink_cb_event_log(sc, ELINK_LOG_ID_MDIO_ACCESS_TIMEOUT);	// "MDC/MDIO access timeout"
 
@@ -2531,5 +2532,5 @@ static elink_status_t elink_cl45_write(struct bnx2x_softc *sc,
 	}
 	if (tmp & EMAC_MDIO_COMM_START_BUSY) {
-		PMD_DRV_LOG(DEBUG, "write phy register failed");
+		PMD_DRV_LOG(DEBUG, sc, "write phy register failed");
 		elink_cb_event_log(sc, ELINK_LOG_ID_MDIO_ACCESS_TIMEOUT);	// "MDC/MDIO access timeout"
 
@@ -2553,5 +2554,5 @@ static elink_status_t elink_cl45_write(struct bnx2x_softc *sc,
 		}
 		if (tmp & EMAC_MDIO_COMM_START_BUSY) {
-			PMD_DRV_LOG(DEBUG, "write phy register failed");
+			PMD_DRV_LOG(DEBUG, sc, "write phy register failed");
 			elink_cb_event_log(sc, ELINK_LOG_ID_MDIO_ACCESS_TIMEOUT);	// "MDC/MDIO access timeout"
 
@@ -2676,5 +2677,5 @@ static elink_status_t elink_eee_set_timers(struct elink_params *params,
 		   (params->eee_mode & ELINK_EEE_MODE_OVERRIDE_NVRAM) &&
 		   (params->eee_mode & ELINK_EEE_MODE_OUTPUT_TIME)) {
-		PMD_DRV_LOG(DEBUG, "Error: Tx LPI is enabled with timer 0");
+		PMD_DRV_LOG(DEBUG, sc, "Error: Tx LPI is enabled with timer 0");
 		return ELINK_STATUS_ERROR;
 	}
@@ -2743,9 +2744,9 @@ static elink_status_t elink_eee_advertise(struct elink_phy *phy,
 
 	if (modes & SHMEM_EEE_10G_ADV) {
-		PMD_DRV_LOG(DEBUG, "Advertise 10GBase-T EEE");
+		PMD_DRV_LOG(DEBUG, sc, "Advertise 10GBase-T EEE");
 		val |= 0x8;
 	}
 	if (modes & SHMEM_EEE_1G_ADV) {
-		PMD_DRV_LOG(DEBUG, "Advertise 1GBase-T EEE");
+		PMD_DRV_LOG(DEBUG, sc, "Advertise 1GBase-T EEE");
 		val |= 0x4;
 	}
@@ -2787,5 +2788,5 @@ static void elink_eee_an_resolve(struct elink_phy *phy,
 			if (vars->line_speed == ELINK_SPEED_100)
 				neg = 1;
-			PMD_DRV_LOG(DEBUG, "EEE negotiated - 100M");
+			PMD_DRV_LOG(DEBUG, sc, "EEE negotiated - 100M");
 		}
 	}
@@ -2795,5 +2796,5 @@ static void elink_eee_an_resolve(struct elink_phy *phy,
 			if (vars->line_speed == ELINK_SPEED_1000)
 				neg = 1;
-			PMD_DRV_LOG(DEBUG, "EEE negotiated - 1G");
+			PMD_DRV_LOG(DEBUG, sc, "EEE negotiated - 1G");
 		}
 	}
@@ -2803,5 +2804,5 @@ static void elink_eee_an_resolve(struct elink_phy *phy,
 			if (vars->line_speed == ELINK_SPEED_10000)
 				neg = 1;
-			PMD_DRV_LOG(DEBUG, "EEE negotiated - 10G");
+			PMD_DRV_LOG(DEBUG, sc, "EEE negotiated - 10G");
 		}
 	}
@@ -2811,5 +2812,5 @@ static void elink_eee_an_resolve(struct elink_phy *phy,
 
 	if (neg) {
-		PMD_DRV_LOG(DEBUG, "EEE is active");
+		PMD_DRV_LOG(DEBUG, sc, "EEE is active");
 		vars->eee_status |= SHMEM_EEE_ACTIVE_BIT;
 	}
@@ -2841,5 +2842,5 @@ static void elink_bsc_module_sel(struct elink_params *params)
 	i2c_val[I2C_BSC0] = (sfp_ctrl & PORT_HW_CFG_E3_I2C_MUX0_MASK) > 0;
 	i2c_val[I2C_BSC1] = (sfp_ctrl & PORT_HW_CFG_E3_I2C_MUX1_MASK) > 0;
-	PMD_DRV_LOG(DEBUG, "Setting BSC switch");
+	PMD_DRV_LOG(DEBUG, sc, "Setting BSC switch");
 	for (idx = 0; idx < I2C_SWITCH_WIDTH; idx++)
 		elink_set_cfg_pin(sc, i2c_pins[idx], i2c_val[idx]);
@@ -2857,5 +2858,5 @@ static elink_status_t elink_bsc_read(struct elink_params *params,
 
 	if (xfer_cnt > 16) {
-		PMD_DRV_LOG(DEBUG, "invalid xfer_cnt %d. Max is 16 bytes",
+		PMD_DRV_LOG(DEBUG, sc, "invalid xfer_cnt %d. Max is 16 bytes",
 			    xfer_cnt);
 		return ELINK_STATUS_ERROR;
@@ -2889,5 +2890,5 @@ static elink_status_t elink_bsc_read(struct elink_params *params,
 		val = REG_RD(sc, MCP_REG_MCPR_IMC_COMMAND);
 		if (i++ > 1000) {
-			PMD_DRV_LOG(DEBUG, "wr 0 byte timed out after %d try",
+			PMD_DRV_LOG(DEBUG, sc, "wr 0 byte timed out after %d try",
 				    i);
 			rc = ELINK_STATUS_TIMEOUT;
@@ -2913,5 +2914,6 @@ static elink_status_t elink_bsc_read(struct elink_params *params,
 		val = REG_RD(sc, MCP_REG_MCPR_IMC_COMMAND);
 		if (i++ > 1000) {
-			PMD_DRV_LOG(DEBUG, "rd op timed out after %d try", i);
+			PMD_DRV_LOG(DEBUG, sc,
+				    "rd op timed out after %d try", i);
 			rc = ELINK_STATUS_TIMEOUT;
 			break;
@@ -3058,5 +3060,5 @@ static void elink_serdes_deassert(struct bnx2x_softc *sc, uint8_t port)
 	uint32_t val;
 
-	PMD_DRV_LOG(DEBUG, "elink_serdes_deassert");
+	PMD_DRV_LOG(DEBUG, sc, "elink_serdes_deassert");
 
 	val = ELINK_SERDES_RESET_BITS << (port * 16);
@@ -3093,5 +3095,5 @@ static void elink_xgxs_deassert(struct elink_params *params)
 	uint8_t port;
 	uint32_t val;
-	PMD_DRV_LOG(DEBUG, "elink_xgxs_deassert");
+	PMD_DRV_LOG(DEBUG, sc, "elink_xgxs_deassert");
 	port = params->port;
 
@@ -3144,5 +3146,5 @@ static void elink_calc_ieee_aneg_adv(struct elink_phy *phy,
 		break;
 	}
-	PMD_DRV_LOG(DEBUG, "ieee_fc = 0x%x", *ieee_fc);
+	PMD_DRV_LOG(DEBUG, params->sc, "ieee_fc = 0x%x", *ieee_fc);
 }
 
@@ -3178,5 +3180,5 @@ static void set_phy_vars(struct elink_params *params, struct elink_vars *vars)
 			vars->link_status |= LINK_STATUS_AUTO_NEGOTIATE_ENABLED;
 
-		PMD_DRV_LOG(DEBUG, "req_flow_ctrl %x, req_line_speed %x,"
+		PMD_DRV_LOG(DEBUG, params->sc, "req_flow_ctrl %x, req_line_speed %x,"
 			    " speed_cap_mask %x",
 			    params->phy[actual_phy_idx].req_flow_ctrl,
@@ -3209,5 +3211,5 @@ static void elink_ext_phy_set_pause(struct elink_params *params,
 		val |= MDIO_AN_REG_ADV_PAUSE_PAUSE;
 	}
-	PMD_DRV_LOG(DEBUG, "Ext phy AN advertize 0x%x", val);
+	PMD_DRV_LOG(DEBUG, sc, "Ext phy AN advertize 0x%x", val);
 	elink_cl45_write(sc, phy, MDIO_AN_DEVAD, MDIO_AN_REG_ADV_PAUSE, val);
 }
@@ -3288,5 +3290,5 @@ static void elink_ext_phy_update_adv_fc(struct elink_phy *phy,
 	pause_result = (ld_pause & MDIO_AN_REG_ADV_PAUSE_MASK) >> 8;
 	pause_result |= (lp_pause & MDIO_AN_REG_ADV_PAUSE_MASK) >> 10;
-	PMD_DRV_LOG(DEBUG, "Ext PHY pause result 0x%x", pause_result);
+	PMD_DRV_LOG(DEBUG, sc, "Ext PHY pause result 0x%x", pause_result);
 	elink_pause_resolve(vars, pause_result);
 
@@ -3357,5 +3359,5 @@ static void elink_warpcore_enable_AN_KR2(struct elink_phy *phy,
 		{MDIO_WC_DEVAD, MDIO_WC_REG_ETA_CL73_LD_UD_CODE, 0x0620}
 	};
-	PMD_DRV_LOG(DEBUG, "Enabling 20G-KR2");
+	PMD_DRV_LOG(DEBUG, sc, "Enabling 20G-KR2");
 
 	elink_cl45_read_or_write(sc, phy, MDIO_WC_DEVAD,
@@ -3394,5 +3396,5 @@ static void elink_disable_kr2(struct elink_params *params,
 		{MDIO_WC_DEVAD, MDIO_WC_REG_ETA_CL73_LD_UD_CODE, 0x0000}
 	};
-	PMD_DRV_LOG(DEBUG, "Disabling 20G-KR2");
+	PMD_DRV_LOG(DEBUG, sc, "Disabling 20G-KR2");
 
 	for (i = 0; i < ARRAY_SIZE(reg_set); i++)
@@ -3410,5 +3412,5 @@ static void elink_warpcore_set_lpi_passthrough(struct elink_phy *phy,
 	struct bnx2x_softc *sc = params->sc;
 
-	PMD_DRV_LOG(DEBUG, "Configure WC for LPI pass through");
+	PMD_DRV_LOG(DEBUG, sc, "Configure WC for LPI pass through");
 	elink_cl45_write(sc, phy, MDIO_WC_DEVAD,
 			 MDIO_WC_REG_EEE_COMBO_CONTROL0, 0x7c);
@@ -3448,5 +3450,5 @@ static void elink_warpcore_enable_AN_KR(struct elink_phy *phy,
 		{MDIO_WC_DEVAD, MDIO_WC_REG_CL72_USERB0_CL72_TX_FIR_TAP, 0},
 	};
-	PMD_DRV_LOG(DEBUG, "Enable Auto Negotiation for KR");
+	PMD_DRV_LOG(DEBUG, sc, "Enable Auto Negotiation for KR");
 	/* Set to default registers that may be overridden by 10G force */
 	for (i = 0; i < ARRAY_SIZE(reg_set); i++)
@@ -3470,5 +3472,5 @@ static void elink_warpcore_enable_AN_KR(struct elink_phy *phy,
 		/* Enable CL37 1G Parallel Detect */
 		elink_cl45_read_or_write(sc, phy, MDIO_WC_DEVAD, addr, 0x1);
-		PMD_DRV_LOG(DEBUG, "Advertize 1G");
+		PMD_DRV_LOG(DEBUG, sc, "Advertize 1G");
 	}
 	if (((vars->line_speed == ELINK_SPEED_AUTO_NEG) &&
@@ -3484,5 +3486,5 @@ static void elink_warpcore_enable_AN_KR(struct elink_phy *phy,
 				 MDIO_WC_REG_PAR_DET_10G_CTRL, 1);
 		elink_set_aer_mmd(params, phy);
-		PMD_DRV_LOG(DEBUG, "Advertize 10G");
+		PMD_DRV_LOG(DEBUG, sc, "Advertize 10G");
 	}
 
@@ -3521,5 +3523,5 @@ static void elink_warpcore_enable_AN_KR(struct elink_phy *phy,
 					 MDIO_WC_REG_DIGITAL6_MP5_NEXTPAGECTRL,
 					 1);
-		PMD_DRV_LOG(DEBUG, "Enable CL37 BAM on KR");
+		PMD_DRV_LOG(DEBUG, sc, "Enable CL37 BAM on KR");
 	}
 
@@ -3858,5 +3860,5 @@ static void elink_warpcore_set_sgmii_speed(struct elink_phy *phy,
 					 MDIO_WC_REG_COMBO_IEEE0_MIICTRL,
 					 0x1000);
-		PMD_DRV_LOG(DEBUG, "set SGMII AUTONEG");
+		PMD_DRV_LOG(DEBUG, sc, "set SGMII AUTONEG");
 	} else {
 		elink_cl45_read(sc, phy, MDIO_WC_DEVAD,
@@ -3873,5 +3875,5 @@ static void elink_warpcore_set_sgmii_speed(struct elink_phy *phy,
 			break;
 		default:
-			PMD_DRV_LOG(DEBUG,
+			PMD_DRV_LOG(DEBUG, sc,
 				    "Speed not supported: 0x%x",
 				    phy->req_line_speed);
@@ -3885,9 +3887,9 @@ static void elink_warpcore_set_sgmii_speed(struct elink_phy *phy,
 				 MDIO_WC_REG_COMBO_IEEE0_MIICTRL, val16);
 
-		PMD_DRV_LOG(DEBUG, "set SGMII force speed %d",
+		PMD_DRV_LOG(DEBUG, sc, "set SGMII force speed %d",
 			    phy->req_line_speed);
 		elink_cl45_read(sc, phy, MDIO_WC_DEVAD,
 				MDIO_WC_REG_COMBO_IEEE0_MIICTRL, &val16);
-		PMD_DRV_LOG(DEBUG, "  (readback) %x", val16);
+		PMD_DRV_LOG(DEBUG, sc, "  (readback) %x", val16);
 	}
 
@@ -4000,5 +4002,5 @@ static elink_status_t elink_get_mod_abs_int_cfg(struct bnx2x_softc *sc,
 		if ((cfg_pin < PIN_CFG_GPIO0_P0) ||
 		    (cfg_pin > PIN_CFG_GPIO3_P1)) {
-			PMD_DRV_LOG(DEBUG,
+			PMD_DRV_LOG(DEBUG, sc,
 				    "No cfg pin %x for module detect indication",
 				    cfg_pin);
@@ -4092,5 +4094,5 @@ static void elink_warpcore_config_runtime(struct elink_phy *phy,
 
 				vars->rx_tx_asic_rst--;
-				PMD_DRV_LOG(DEBUG, "0x%x retry left",
+				PMD_DRV_LOG(DEBUG, sc, "0x%x retry left",
 					    vars->rx_tx_asic_rst);
 			}
@@ -4114,8 +4116,8 @@ static void elink_warpcore_config_sfi(struct elink_phy *phy,
 	     ELINK_SPEED_10000) &&
 	    (phy->media_type != ELINK_ETH_PHY_SFP_1G_FIBER)) {
-		PMD_DRV_LOG(DEBUG, "Setting 10G SFI");
+		PMD_DRV_LOG(DEBUG, params->sc, "Setting 10G SFI");
 		elink_warpcore_set_10G_XFI(phy, params, 0);
 	} else {
-		PMD_DRV_LOG(DEBUG, "Setting 1G Fiber");
+		PMD_DRV_LOG(DEBUG, params->sc, "Setting 1G Fiber");
 		elink_warpcore_set_sgmii_speed(phy, params, 1, 0);
 	}
@@ -4134,5 +4136,5 @@ static void elink_sfp_e3_set_transmitter(struct elink_params *params,
 	    PORT_HW_CFG_E3_TX_LASER_MASK;
 	/* Set the !tx_en since this pin is DISABLE_TX_LASER */
-	PMD_DRV_LOG(DEBUG, "Setting WC TX to %d", tx_en);
+	PMD_DRV_LOG(DEBUG, sc, "Setting WC TX to %d", tx_en);
 
 	/* For 20G, the expected pin to be used is 3 pins after the current */
@@ -4155,5 +4157,5 @@ static uint8_t elink_warpcore_config_init(struct elink_phy *phy,
 					 default_cfg)) &
 			 PORT_HW_CFG_NET_SERDES_IF_MASK);
-	PMD_DRV_LOG(DEBUG,
+	PMD_DRV_LOG(DEBUG, sc,
 		    "Begin Warpcore init, link_speed %d, "
 		    "serdes_net_if = 0x%x", vars->line_speed, serdes_net_if);
@@ -4166,5 +4168,5 @@ static uint8_t elink_warpcore_config_init(struct elink_phy *phy,
 	      (phy->req_line_speed == ELINK_SPEED_10)))) {
 		vars->phy_flags |= PHY_SGMII_FLAG;
-		PMD_DRV_LOG(DEBUG, "Setting SGMII mode");
+		PMD_DRV_LOG(DEBUG, sc, "Setting SGMII mode");
 		elink_warpcore_clear_regs(phy, params, lane);
 		elink_warpcore_set_sgmii_speed(phy, params, 0, 1);
@@ -4176,5 +4178,5 @@ static uint8_t elink_warpcore_config_init(struct elink_phy *phy,
 				elink_warpcore_enable_AN_KR(phy, params, vars);
 			else {
-				PMD_DRV_LOG(DEBUG, "Setting KR 10G-Force");
+				PMD_DRV_LOG(DEBUG, sc, "Setting KR 10G-Force");
 				elink_warpcore_set_10G_KR(phy, params);
 			}
@@ -4184,12 +4186,12 @@ static uint8_t elink_warpcore_config_init(struct elink_phy *phy,
 			elink_warpcore_clear_regs(phy, params, lane);
 			if (vars->line_speed == ELINK_SPEED_10000) {
-				PMD_DRV_LOG(DEBUG, "Setting 10G XFI");
+				PMD_DRV_LOG(DEBUG, sc, "Setting 10G XFI");
 				elink_warpcore_set_10G_XFI(phy, params, 1);
 			} else {
 				if (ELINK_SINGLE_MEDIA_DIRECT(params)) {
-					PMD_DRV_LOG(DEBUG, "1G Fiber");
+					PMD_DRV_LOG(DEBUG, sc, "1G Fiber");
 					fiber_mode = 1;
 				} else {
-					PMD_DRV_LOG(DEBUG, "10/100/1G SGMII");
+					PMD_DRV_LOG(DEBUG, sc, "10/100/1G SGMII");
 					fiber_mode = 0;
 				}
@@ -4220,8 +4222,8 @@ static uint8_t elink_warpcore_config_init(struct elink_phy *phy,
 		case PORT_HW_CFG_NET_SERDES_IF_DXGXS:
 			if (vars->line_speed != ELINK_SPEED_20000) {
-				PMD_DRV_LOG(DEBUG, "Speed not supported yet");
+				PMD_DRV_LOG(DEBUG, sc, "Speed not supported yet");
 				return 0;
 			}
-			PMD_DRV_LOG(DEBUG, "Setting 20G DXGXS");
+			PMD_DRV_LOG(DEBUG, sc, "Setting 20G DXGXS");
 			elink_warpcore_set_20G_DXGXS(sc, phy, lane);
 			/* Issue Module detection */
@@ -4233,10 +4235,10 @@ static uint8_t elink_warpcore_config_init(struct elink_phy *phy,
 				elink_warpcore_enable_AN_KR(phy, params, vars);
 			} else {
-				PMD_DRV_LOG(DEBUG, "Setting KR 20G-Force");
+				PMD_DRV_LOG(DEBUG, sc, "Setting KR 20G-Force");
 				elink_warpcore_set_20G_force_KR2(phy, params);
 			}
 			break;
 		default:
-			PMD_DRV_LOG(DEBUG,
+			PMD_DRV_LOG(DEBUG, sc,
 				    "Unsupported Serdes Net Interface 0x%x",
 				    serdes_net_if);
@@ -4247,5 +4249,5 @@ static uint8_t elink_warpcore_config_init(struct elink_phy *phy,
 	/* Take lane out of reset after configuration is finished */
 	elink_warpcore_reset_lane(sc, phy, 0);
-	PMD_DRV_LOG(DEBUG, "Exit config init");
+	PMD_DRV_LOG(DEBUG, sc, "Exit config init");
 
 	return 0;
@@ -4312,5 +4314,5 @@ static void elink_set_warpcore_loopback(struct elink_phy *phy,
 	uint16_t val16;
 	uint32_t lane;
-	PMD_DRV_LOG(DEBUG, "Setting Warpcore loopback type %x, speed %d",
+	PMD_DRV_LOG(DEBUG, sc, "Setting Warpcore loopback type %x, speed %d",
 		    params->loopback_mode, phy->req_line_speed);
 
@@ -4357,5 +4359,5 @@ static void elink_sync_link(struct elink_params *params,
 	vars->link_up = (vars->link_status & LINK_STATUS_LINK_UP);
 	if (vars->link_up) {
-		PMD_DRV_LOG(DEBUG, "phy link up");
+		PMD_DRV_LOG(DEBUG, sc, "phy link up");
 
 		vars->phy_link_up = 1;
@@ -4435,5 +4437,5 @@ static void elink_sync_link(struct elink_params *params,
 		}
 	} else {		/* Link down */
-		PMD_DRV_LOG(DEBUG, "phy link down");
+		PMD_DRV_LOG(DEBUG, sc, "phy link down");
 
 		vars->phy_link_up = 0;
@@ -4492,5 +4494,5 @@ void elink_link_status_update(struct elink_params *params,
 	    (media_types & PORT_HW_CFG_MEDIA_TYPE_PHY2_MASK) >>
 	    PORT_HW_CFG_MEDIA_TYPE_PHY2_SHIFT;
-	PMD_DRV_LOG(DEBUG, "media_types = 0x%x", media_types);
+	PMD_DRV_LOG(DEBUG, sc, "media_types = 0x%x", media_types);
 
 	/* Sync AEU offset */
@@ -4513,7 +4515,7 @@ void elink_link_status_update(struct elink_params *params,
 						 link_attr_sync[params->port]);
 
-	PMD_DRV_LOG(DEBUG, "link_status 0x%x  phy_link_up %x int_mask 0x%x",
+	PMD_DRV_LOG(DEBUG, sc, "link_status 0x%x  phy_link_up %x int_mask 0x%x",
 		    vars->link_status, vars->phy_link_up, vars->aeu_int_mask);
-	PMD_DRV_LOG(DEBUG, "line_speed %x  duplex %x  flow_ctrl 0x%x",
+	PMD_DRV_LOG(DEBUG, sc, "line_speed %x  duplex %x  flow_ctrl 0x%x",
 		    vars->line_speed, vars->duplex, vars->flow_ctrl);
 }
@@ -4576,5 +4578,5 @@ static elink_status_t elink_reset_unicore(struct elink_params *params,
 	// " Port %d",
 
-	PMD_DRV_LOG(DEBUG, "BUG! XGXS is still in reset!");
+	PMD_DRV_LOG(DEBUG, sc, "BUG! XGXS is still in reset!");
 	return ELINK_STATUS_ERROR;
 
@@ -4635,5 +4637,5 @@ static void elink_set_parallel_detection(struct elink_phy *phy,
 	else
 		control2 &= ~MDIO_SERDES_DIGITAL_A_1000X_CONTROL2_PRL_DT_EN;
-	PMD_DRV_LOG(DEBUG, "phy->speed_cap_mask = 0x%x, control2 = 0x%x",
+	PMD_DRV_LOG(DEBUG, sc, "phy->speed_cap_mask = 0x%x, control2 = 0x%x",
 		    phy->speed_cap_mask, control2);
 	CL22_WR_OVER_CL45(sc, phy,
@@ -4643,5 +4645,5 @@ static void elink_set_parallel_detection(struct elink_phy *phy,
 	if ((phy->type == PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT) &&
 	    (phy->speed_cap_mask & PORT_HW_CFG_SPEED_CAPABILITY_D0_10G)) {
-		PMD_DRV_LOG(DEBUG, "XGXS");
+		PMD_DRV_LOG(DEBUG, sc, "XGXS");
 
 		CL22_WR_OVER_CL45(sc, phy,
@@ -4796,5 +4798,5 @@ static void elink_program_serdes(struct elink_phy *phy,
 			  MDIO_SERDES_DIGITAL_MISC1, &reg_val);
 	/* Clearing the speed value before setting the right speed */
-	PMD_DRV_LOG(DEBUG, "MDIO_REG_BANK_SERDES_DIGITAL = 0x%x", reg_val);
+	PMD_DRV_LOG(DEBUG, sc, "MDIO_REG_BANK_SERDES_DIGITAL = 0x%x", reg_val);
 
 	reg_val &= ~(MDIO_SERDES_DIGITAL_MISC1_FORCE_SPEED_MASK |
@@ -4864,5 +4866,5 @@ static void elink_restart_autoneg(struct elink_phy *phy,
 	uint16_t mii_control;
 
-	PMD_DRV_LOG(DEBUG, "elink_restart_autoneg");
+	PMD_DRV_LOG(DEBUG, sc, "elink_restart_autoneg");
 	/* Enable and restart BAM/CL37 aneg */
 
@@ -4884,5 +4886,5 @@ static void elink_restart_autoneg(struct elink_phy *phy,
 				  MDIO_REG_BANK_COMBO_IEEE0,
 				  MDIO_COMBO_IEEE0_MII_CONTROL, &mii_control);
-		PMD_DRV_LOG(DEBUG,
+		PMD_DRV_LOG(DEBUG, sc,
 			    "elink_restart_autoneg mii_control before = 0x%x",
 			    mii_control);
@@ -4943,5 +4945,5 @@ static void elink_initialize_sgmii_process(struct elink_phy *phy,
 		default:
 			/* Invalid speed for SGMII */
-			PMD_DRV_LOG(DEBUG, "Invalid line_speed 0x%x",
+			PMD_DRV_LOG(DEBUG, sc, "Invalid line_speed 0x%x",
 				    vars->line_speed);
 			break;
@@ -4978,5 +4980,5 @@ static elink_status_t elink_direct_parallel_detect_used(struct elink_phy *phy,
 			  MDIO_SERDES_DIGITAL_A_1000X_STATUS2, &status2_1000x);
 	if (status2_1000x & MDIO_SERDES_DIGITAL_A_1000X_STATUS2_AN_DISABLED) {
-		PMD_DRV_LOG(DEBUG, "1G parallel detect link on port %d",
+		PMD_DRV_LOG(DEBUG, sc, "1G parallel detect link on port %d",
 			    params->port);
 		return ELINK_STATUS_ERROR;
@@ -4988,5 +4990,5 @@ static elink_status_t elink_direct_parallel_detect_used(struct elink_phy *phy,
 
 	if (pd_10g & MDIO_10G_PARALLEL_DETECT_PAR_DET_10G_STATUS_PD_LINK) {
-		PMD_DRV_LOG(DEBUG, "10G parallel detect link on port %d",
+		PMD_DRV_LOG(DEBUG, sc, "10G parallel detect link on port %d",
 			    params->port);
 		return ELINK_STATUS_ERROR;
@@ -5019,5 +5021,5 @@ static void elink_update_adv_fc(struct elink_phy *phy,
 		pause_result |= (lp_pause &
 				 MDIO_CL73_IEEEB1_AN_LP_ADV1_PAUSE_MASK) >> 10;
-		PMD_DRV_LOG(DEBUG, "pause_result CL73 0x%x", pause_result);
+		PMD_DRV_LOG(DEBUG, sc, "pause_result CL73 0x%x", pause_result);
 	} else {
 		CL22_RD_OVER_CL45(sc, phy,
@@ -5032,5 +5034,5 @@ static void elink_update_adv_fc(struct elink_phy *phy,
 		pause_result |= (lp_pause &
 				 MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_MASK) >> 7;
-		PMD_DRV_LOG(DEBUG, "pause_result CL37 0x%x", pause_result);
+		PMD_DRV_LOG(DEBUG, sc, "pause_result CL37 0x%x", pause_result);
 	}
 	elink_pause_resolve(vars, pause_result);
@@ -5061,5 +5063,5 @@ static void elink_flow_ctrl_resolve(struct elink_phy *phy,
 		elink_update_adv_fc(phy, params, vars, gp_status);
 	}
-	PMD_DRV_LOG(DEBUG, "flow_ctrl 0x%x", vars->flow_ctrl);
+	PMD_DRV_LOG(DEBUG, params->sc, "flow_ctrl 0x%x", vars->flow_ctrl);
 }
 
@@ -5069,5 +5071,5 @@ static void elink_check_fallback_to_cl37(struct elink_phy *phy,
 	struct bnx2x_softc *sc = params->sc;
 	uint16_t rx_status, ustat_val, cl37_fsm_received;
-	PMD_DRV_LOG(DEBUG, "elink_check_fallback_to_cl37");
+	PMD_DRV_LOG(DEBUG, sc, "elink_check_fallback_to_cl37");
 	/* Step 1: Make sure signal is detected */
 	CL22_RD_OVER_CL45(sc, phy,
@@ -5075,5 +5077,5 @@ static void elink_check_fallback_to_cl37(struct elink_phy *phy,
 	if ((rx_status & MDIO_RX0_RX_STATUS_SIGDET) !=
 	    (MDIO_RX0_RX_STATUS_SIGDET)) {
-		PMD_DRV_LOG(DEBUG, "Signal is not detected. Restoring CL73."
+		PMD_DRV_LOG(DEBUG, sc, "Signal is not detected. Restoring CL73."
 			    "rx_status(0x80b0) = 0x%x", rx_status);
 		CL22_WR_OVER_CL45(sc, phy,
@@ -5092,5 +5094,5 @@ static void elink_check_fallback_to_cl37(struct elink_phy *phy,
 	    (MDIO_CL73_USERB0_CL73_USTAT1_LINK_STATUS_CHECK |
 	     MDIO_CL73_USERB0_CL73_USTAT1_AN_GOOD_CHECK_BAM37)) {
-		PMD_DRV_LOG(DEBUG, "CL73 state-machine is not stable. "
+		PMD_DRV_LOG(DEBUG, sc, "CL73 state-machine is not stable. "
 			    "ustat_val(0x8371) = 0x%x", ustat_val);
 		return;
@@ -5107,5 +5109,5 @@ static void elink_check_fallback_to_cl37(struct elink_phy *phy,
 	    (MDIO_REMOTE_PHY_MISC_RX_STATUS_CL37_FSM_RECEIVED_OVER1G_MSG |
 	     MDIO_REMOTE_PHY_MISC_RX_STATUS_CL37_FSM_RECEIVED_BRCM_OUI_MSG)) {
-		PMD_DRV_LOG(DEBUG, "No CL37 FSM were received. "
+		PMD_DRV_LOG(DEBUG, sc, "No CL37 FSM were received. "
 			    "misc_rx_status(0x8330) = 0x%x", cl37_fsm_received);
 		return;
@@ -5123,5 +5125,5 @@ static void elink_check_fallback_to_cl37(struct elink_phy *phy,
 	/* Restart CL37 autoneg */
 	elink_restart_autoneg(phy, params, 0);
-	PMD_DRV_LOG(DEBUG, "Disabling CL73, and restarting CL37 autoneg");
+	PMD_DRV_LOG(DEBUG, sc, "Disabling CL73, and restarting CL37 autoneg");
 }
 
@@ -5147,5 +5149,5 @@ static elink_status_t elink_get_link_speed_duplex(struct elink_phy *phy,
 		vars->link_status |= LINK_STATUS_AUTO_NEGOTIATE_ENABLED;
 	if (is_link_up) {
-		PMD_DRV_LOG(DEBUG, "phy link up");
+		PMD_DRV_LOG(DEBUG, params->sc, "phy link up");
 
 		vars->phy_link_up = 1;
@@ -5188,5 +5190,5 @@ static elink_status_t elink_get_link_speed_duplex(struct elink_phy *phy,
 		case ELINK_GP_STATUS_5G:
 		case ELINK_GP_STATUS_6G:
-			PMD_DRV_LOG(DEBUG,
+			PMD_DRV_LOG(DEBUG, params->sc,
 				    "link speed unsupported  gp_status 0x%x",
 				    speed_mask);
@@ -5208,5 +5210,5 @@ static elink_status_t elink_get_link_speed_duplex(struct elink_phy *phy,
 			break;
 		default:
-			PMD_DRV_LOG(DEBUG,
+			PMD_DRV_LOG(DEBUG, params->sc,
 				    "link speed unsupported gp_status 0x%x",
 				    speed_mask);
@@ -5214,5 +5216,5 @@ static elink_status_t elink_get_link_speed_duplex(struct elink_phy *phy,
 		}
 	} else {		/* link_down */
-		PMD_DRV_LOG(DEBUG, "phy link down");
+		PMD_DRV_LOG(DEBUG, params->sc, "phy link down");
 
 		vars->phy_link_up = 0;
@@ -5222,5 +5224,5 @@ static elink_status_t elink_get_link_speed_duplex(struct elink_phy *phy,
 		vars->mac_type = ELINK_MAC_TYPE_NONE;
 	}
-	PMD_DRV_LOG(DEBUG, " phy_link_up %x line_speed %d",
+	PMD_DRV_LOG(DEBUG, params->sc, " phy_link_up %x line_speed %d",
 		    vars->phy_link_up, vars->line_speed);
 	return ELINK_STATUS_OK;
@@ -5245,5 +5247,5 @@ static uint8_t elink_link_settings_status(struct elink_phy *phy,
 		link_up = 1;
 	speed_mask = gp_status & ELINK_GP_STATUS_SPEED_MASK;
-	PMD_DRV_LOG(DEBUG, "gp_status 0x%x, is_link_up %d, speed_mask 0x%x",
+	PMD_DRV_LOG(DEBUG, sc, "gp_status 0x%x, is_link_up %d, speed_mask 0x%x",
 		    gp_status, link_up, speed_mask);
 	rc = elink_get_link_speed_duplex(phy, params, vars, link_up, speed_mask,
@@ -5295,5 +5297,5 @@ static uint8_t elink_link_settings_status(struct elink_phy *phy,
 	}
 
-	PMD_DRV_LOG(DEBUG, "duplex %x  flow_ctrl 0x%x link_status 0x%x",
+	PMD_DRV_LOG(DEBUG, sc, "duplex %x  flow_ctrl 0x%x link_status 0x%x",
 		    vars->duplex, vars->flow_ctrl, vars->link_status);
 	return rc;
@@ -5321,5 +5323,5 @@ static uint8_t elink_warpcore_read_status(struct elink_phy *phy,
 		elink_cl45_read(sc, phy, MDIO_WC_DEVAD, 1, &temp_link_up);
 		elink_cl45_read(sc, phy, MDIO_WC_DEVAD, 1, &link_up);
-		PMD_DRV_LOG(DEBUG, "PCS RX link status = 0x%x-->0x%x",
+		PMD_DRV_LOG(DEBUG, sc, "PCS RX link status = 0x%x-->0x%x",
 			    temp_link_up, link_up);
 		link_up &= (1 << 2);
@@ -5329,5 +5331,5 @@ static uint8_t elink_warpcore_read_status(struct elink_phy *phy,
 		elink_cl45_read(sc, phy, MDIO_WC_DEVAD,
 				MDIO_WC_REG_GP2_STATUS_GP_2_1, &gp_status1);
-		PMD_DRV_LOG(DEBUG, "0x81d1 = 0x%x", gp_status1);
+		PMD_DRV_LOG(DEBUG, sc, "0x81d1 = 0x%x", gp_status1);
 		/* Check for either KR, 1G, or AN up. */
 		link_up = ((gp_status1 >> 8) |
@@ -5399,5 +5401,5 @@ static uint8_t elink_warpcore_read_status(struct elink_phy *phy,
 				MDIO_WC_REG_GP2_STATUS_GP_2_3, &gp_speed);
 	}
-	PMD_DRV_LOG(DEBUG, "lane %d gp_speed 0x%x", lane, gp_speed);
+	PMD_DRV_LOG(DEBUG, sc, "lane %d gp_speed 0x%x", lane, gp_speed);
 
 	if ((lane & 1) == 0)
@@ -5415,5 +5417,5 @@ static uint8_t elink_warpcore_read_status(struct elink_phy *phy,
 		vars->rx_tx_asic_rst = MAX_KR_LINK_RETRY;
 
-	PMD_DRV_LOG(DEBUG, "duplex %x  flow_ctrl 0x%x link_status 0x%x",
+	PMD_DRV_LOG(DEBUG, sc, "duplex %x  flow_ctrl 0x%x link_status 0x%x",
 		    vars->duplex, vars->flow_ctrl, vars->link_status);
 	return rc;
@@ -5462,5 +5464,5 @@ static elink_status_t elink_emac_program(struct elink_params *params,
 	uint16_t mode = 0;
 
-	PMD_DRV_LOG(DEBUG, "setting link speed & duplex");
+	PMD_DRV_LOG(DEBUG, sc, "setting link speed & duplex");
 	elink_bits_dis(sc, GRCBASE_EMAC0 + port * 0x400 +
 		       EMAC_REG_EMAC_MODE,
@@ -5486,5 +5488,6 @@ static elink_status_t elink_emac_program(struct elink_params *params,
 	default:
 		/* 10G not valid for EMAC */
-		PMD_DRV_LOG(DEBUG, "Invalid line_speed 0x%x", vars->line_speed);
+		PMD_DRV_LOG(DEBUG, sc,
+			    "Invalid line_speed 0x%x", vars->line_speed);
 		return ELINK_STATUS_ERROR;
 	}
@@ -5538,5 +5541,5 @@ static uint8_t elink_xgxs_config_init(struct elink_phy *phy,
 		    (ELINK_SINGLE_MEDIA_DIRECT(params) &&
 		     params->loopback_mode == ELINK_LOOPBACK_EXT)) {
-			PMD_DRV_LOG(DEBUG, "not SGMII, no AN");
+			PMD_DRV_LOG(DEBUG, params->sc, "not SGMII, no AN");
 
 			/* Disable autoneg */
@@ -5547,5 +5550,5 @@ static uint8_t elink_xgxs_config_init(struct elink_phy *phy,
 
 		} else {	/* AN_mode */
-			PMD_DRV_LOG(DEBUG, "not SGMII, AN");
+			PMD_DRV_LOG(DEBUG, params->sc, "not SGMII, AN");
 
 			/* AN enabled */
@@ -5564,5 +5567,5 @@ static uint8_t elink_xgxs_config_init(struct elink_phy *phy,
 
 	} else {		/* SGMII mode */
-		PMD_DRV_LOG(DEBUG, "SGMII");
+		PMD_DRV_LOG(DEBUG, params->sc, "SGMII");
 
 		elink_initialize_sgmii_process(phy, params, vars);
@@ -5633,5 +5636,5 @@ static uint16_t elink_wait_reset_complete(struct bnx2x_softc *sc,
 	// " Port %d",
 
-	PMD_DRV_LOG(DEBUG, "control reg 0x%x (after %d ms)", ctrl, cnt);
+	PMD_DRV_LOG(DEBUG, sc, "control reg 0x%x (after %d ms)", ctrl, cnt);
 	return cnt;
 }
@@ -5651,33 +5654,33 @@ static void elink_link_int_enable(struct elink_params *params)
 		mask = (ELINK_NIG_MASK_XGXS0_LINK10G |
 			ELINK_NIG_MASK_XGXS0_LINK_STATUS);
-		PMD_DRV_LOG(DEBUG, "enabled XGXS interrupt");
+		PMD_DRV_LOG(DEBUG, sc, "enabled XGXS interrupt");
 		if (!(ELINK_SINGLE_MEDIA_DIRECT(params)) &&
 		    params->phy[ELINK_INT_PHY].type !=
 		    PORT_HW_CFG_XGXS_EXT_PHY_TYPE_FAILURE) {
 			mask |= ELINK_NIG_MASK_MI_INT;
-			PMD_DRV_LOG(DEBUG, "enabled external phy int");
+			PMD_DRV_LOG(DEBUG, sc, "enabled external phy int");
 		}
 
 	} else {		/* SerDes */
 		mask = ELINK_NIG_MASK_SERDES0_LINK_STATUS;
-		PMD_DRV_LOG(DEBUG, "enabled SerDes interrupt");
+		PMD_DRV_LOG(DEBUG, sc, "enabled SerDes interrupt");
 		if (!(ELINK_SINGLE_MEDIA_DIRECT(params)) &&
 		    params->phy[ELINK_INT_PHY].type !=
 		    PORT_HW_CFG_SERDES_EXT_PHY_TYPE_NOT_CONN) {
 			mask |= ELINK_NIG_MASK_MI_INT;
-			PMD_DRV_LOG(DEBUG, "enabled external phy int");
+			PMD_DRV_LOG(DEBUG, sc, "enabled external phy int");
 		}
 	}
 	elink_bits_en(sc, NIG_REG_MASK_INTERRUPT_PORT0 + port * 4, mask);
 
-	PMD_DRV_LOG(DEBUG, "port %x, is_xgxs %x, int_status 0x%x", port,
+	PMD_DRV_LOG(DEBUG, sc, "port %x, is_xgxs %x, int_status 0x%x", port,
 		    (params->switch_cfg == ELINK_SWITCH_CFG_10G),
 		    REG_RD(sc, NIG_REG_STATUS_INTERRUPT_PORT0 + port * 4));
-	PMD_DRV_LOG(DEBUG, " int_mask 0x%x, MI_INT %x, SERDES_LINK %x",
+	PMD_DRV_LOG(DEBUG, sc, " int_mask 0x%x, MI_INT %x, SERDES_LINK %x",
 		    REG_RD(sc, NIG_REG_MASK_INTERRUPT_PORT0 + port * 4),
 		    REG_RD(sc, NIG_REG_EMAC0_STATUS_MISC_MI_INT + port * 0x18),
 		    REG_RD(sc,
 			   NIG_REG_SERDES0_STATUS_LINK_STATUS + port * 0x3c));
-	PMD_DRV_LOG(DEBUG, " 10G %x, XGXS_LINK %x",
+	PMD_DRV_LOG(DEBUG, sc, " 10G %x, XGXS_LINK %x",
 		    REG_RD(sc, NIG_REG_XGXS0_STATUS_LINK10G + port * 0x68),
 		    REG_RD(sc, NIG_REG_XGXS0_STATUS_LINK_STATUS + port * 0x68));
@@ -5695,5 +5698,5 @@ static void elink_rearm_latch_signal(struct bnx2x_softc *sc, uint8_t port,
 	/* Read Latched signals */
 	latch_status = REG_RD(sc, NIG_REG_LATCH_STATUS_0 + port * 8);
-	PMD_DRV_LOG(DEBUG, "latch_status = 0x%x", latch_status);
+	PMD_DRV_LOG(DEBUG, sc, "latch_status = 0x%x", latch_status);
 	/* Handle only those with latched-signal=up. */
 	if (exp_mi_int)
@@ -5747,5 +5750,5 @@ static void elink_link_int_ack(struct elink_params *params,
 				mask = ELINK_NIG_STATUS_SERDES0_LINK_STATUS;
 		}
-		PMD_DRV_LOG(DEBUG, "Ack link up interrupt with mask 0x%x",
+		PMD_DRV_LOG(DEBUG, sc, "Ack link up interrupt with mask 0x%x",
 			    mask);
 		elink_bits_en(sc,
@@ -5810,5 +5813,5 @@ static void elink_set_xgxs_loopback(struct elink_phy *phy,
 		uint32_t md_devad = 0;
 
-		PMD_DRV_LOG(DEBUG, "XGXS 10G loopback enable");
+		PMD_DRV_LOG(DEBUG, sc, "XGXS 10G loopback enable");
 
 		if (!CHIP_IS_E3(sc)) {
@@ -5842,5 +5845,5 @@ static void elink_set_xgxs_loopback(struct elink_phy *phy,
 	} else {
 		uint16_t mii_ctrl;
-		PMD_DRV_LOG(DEBUG, "XGXS 1G loopback enable");
+		PMD_DRV_LOG(DEBUG, sc, "XGXS 1G loopback enable");
 		elink_cl45_read(sc, phy, 5,
 				(MDIO_REG_BANK_COMBO_IEEE0 +
@@ -5866,6 +5869,7 @@ elink_status_t elink_set_led(struct elink_params *params,
 	uint32_t emac_base = port ? GRCBASE_EMAC1 : GRCBASE_EMAC0;
 	struct bnx2x_softc *sc = params->sc;
-	PMD_DRV_LOG(DEBUG, "elink_set_led: port %x, mode %d", port, mode);
-	PMD_DRV_LOG(DEBUG, "speed 0x%x, hw_led_mode 0x%x", speed, hw_led_mode);
+	PMD_DRV_LOG(DEBUG, sc, "elink_set_led: port %x, mode %d", port, mode);
+	PMD_DRV_LOG(DEBUG, sc,
+		    "speed 0x%x, hw_led_mode 0x%x", speed, hw_led_mode);
 	/* In case */
 	for (phy_idx = ELINK_EXT_PHY1; phy_idx < ELINK_MAX_PHYS; phy_idx++) {
@@ -5987,5 +5991,6 @@ elink_status_t elink_set_led(struct elink_params *params,
 	default:
 		rc = ELINK_STATUS_ERROR;
-		PMD_DRV_LOG(DEBUG, "elink_set_led: Invalid led mode %d", mode);
+		PMD_DRV_LOG(DEBUG, sc,
+			    "elink_set_led: Invalid led mode %d", mode);
 		break;
 	}
@@ -6054,5 +6059,5 @@ static elink_status_t elink_link_initialize(struct elink_params *params,
 			    (elink_phy_selection(params) ==
 			     PORT_HW_CFG_PHY_SELECTION_FIRST_PHY)) {
-				PMD_DRV_LOG(DEBUG,
+				PMD_DRV_LOG(DEBUG, sc,
 					    "Not initializing second phy");
 				continue;
@@ -6095,5 +6100,5 @@ static void elink_common_ext_link_reset(__rte_unused struct elink_phy *phy,
 	elink_cb_gpio_write(sc, MISC_REGISTERS_GPIO_2,
 			    MISC_REGISTERS_GPIO_OUTPUT_LOW, gpio_port);
-	PMD_DRV_LOG(DEBUG, "reset external PHY");
+	PMD_DRV_LOG(DEBUG, sc, "reset external PHY");
 }
 
@@ -6104,5 +6109,5 @@ static elink_status_t elink_update_link_down(struct elink_params *params,
 	uint8_t port = params->port;
 
-	PMD_DRV_LOG(DEBUG, "Port %x: Link is down", port);
+	PMD_DRV_LOG(DEBUG, sc, "Port %x: Link is down", port);
 	elink_set_led(params, vars, ELINK_LED_MODE_OFF, 0);
 	vars->phy_flags &= ~PHY_PHYSICAL_LINK_FLAG;
@@ -6165,5 +6170,5 @@ static elink_status_t elink_update_link_up(struct elink_params *params,
 			if (elink_xmac_enable(params, vars, 0) ==
 			    ELINK_STATUS_NO_LINK) {
-				PMD_DRV_LOG(DEBUG, "Found errors on XMAC");
+				PMD_DRV_LOG(DEBUG, sc, "Found errors on XMAC");
 				vars->link_up = 0;
 				vars->phy_flags |= PHY_HALF_OPEN_CONN_FLAG;
@@ -6177,5 +6182,5 @@ static elink_status_t elink_update_link_up(struct elink_params *params,
 		if ((vars->eee_status & SHMEM_EEE_ACTIVE_BIT) &&
 		    (vars->eee_status & SHMEM_EEE_LPI_REQUESTED_BIT)) {
-			PMD_DRV_LOG(DEBUG, "Enabling LPI assertion");
+			PMD_DRV_LOG(DEBUG, sc, "Enabling LPI assertion");
 			REG_WR(sc, MISC_REG_CPMU_LP_FW_ENABLE_P0 +
 			       (params->port << 2), 1);
@@ -6189,5 +6194,5 @@ static elink_status_t elink_update_link_up(struct elink_params *params,
 			if (elink_bmac_enable(params, vars, 0, 1) ==
 			    ELINK_STATUS_NO_LINK) {
-				PMD_DRV_LOG(DEBUG, "Found errors on BMAC");
+				PMD_DRV_LOG(DEBUG, sc, "Found errors on BMAC");
 				vars->link_up = 0;
 				vars->phy_flags |= PHY_HALF_OPEN_CONN_FLAG;
@@ -6274,5 +6279,5 @@ elink_status_t elink_link_update(struct elink_params * params,
 		elink_set_aer_mmd(params, &params->phy[ELINK_INT_PHY]);
 
-	PMD_DRV_LOG(DEBUG, "port %x, XGXS?%x, int_status 0x%x",
+	PMD_DRV_LOG(DEBUG, sc, "port %x, XGXS?%x, int_status 0x%x",
 		    port, (vars->phy_flags & PHY_XGXS_FLAG),
 		    REG_RD(sc, NIG_REG_STATUS_INTERRUPT_PORT0 + port * 4));
@@ -6280,5 +6285,5 @@ elink_status_t elink_link_update(struct elink_params * params,
 	is_mi_int = (uint8_t) (REG_RD(sc, NIG_REG_EMAC0_STATUS_MISC_MI_INT +
 				      port * 0x18) > 0);
-	PMD_DRV_LOG(DEBUG, "int_mask 0x%x MI_INT %x, SERDES_LINK %x",
+	PMD_DRV_LOG(DEBUG, sc, "int_mask 0x%x MI_INT %x, SERDES_LINK %x",
 		    REG_RD(sc, NIG_REG_MASK_INTERRUPT_PORT0 + port * 4),
 		    is_mi_int,
@@ -6286,5 +6291,5 @@ elink_status_t elink_link_update(struct elink_params * params,
 			   NIG_REG_SERDES0_STATUS_LINK_STATUS + port * 0x3c));
 
-	PMD_DRV_LOG(DEBUG, " 10G %x, XGXS_LINK %x",
+	PMD_DRV_LOG(DEBUG, sc, " 10G %x, XGXS_LINK %x",
 		    REG_RD(sc, NIG_REG_XGXS0_STATUS_LINK10G + port * 0x68),
 		    REG_RD(sc, NIG_REG_XGXS0_STATUS_LINK_STATUS + port * 0x68));
@@ -6310,8 +6315,8 @@ elink_status_t elink_link_update(struct elink_params * params,
 					       &phy_vars[phy_index]);
 		if (cur_link_up) {
-			PMD_DRV_LOG(DEBUG, "phy in index %d link is up",
+			PMD_DRV_LOG(DEBUG, sc, "phy in index %d link is up",
 				    phy_index);
 		} else {
-			PMD_DRV_LOG(DEBUG, "phy in index %d link is down",
+			PMD_DRV_LOG(DEBUG, sc, "phy in index %d link is down",
 				    phy_index);
 			continue;
@@ -6346,5 +6351,5 @@ elink_status_t elink_link_update(struct elink_params * params,
 				 * - DEFAULT should be overridden during initialization
 				 */
-				PMD_DRV_LOG(DEBUG, "Invalid link indication"
+				PMD_DRV_LOG(DEBUG, sc, "Invalid link indication"
 					    "mpc=0x%x. DISABLING LINK !!!",
 					    params->multi_phy_config);
@@ -6384,5 +6389,5 @@ elink_status_t elink_link_update(struct elink_params * params,
 		if (active_external_phy == ELINK_EXT_PHY1) {
 			if (params->phy[ELINK_EXT_PHY2].phy_specific_func) {
-				PMD_DRV_LOG(DEBUG, "Disabling TX on EXT_PHY2");
+				PMD_DRV_LOG(DEBUG, sc, "Disabling TX on EXT_PHY2");
 				params->phy[ELINK_EXT_PHY2].
 				    phy_specific_func(&params->
@@ -6402,5 +6407,5 @@ elink_status_t elink_link_update(struct elink_params * params,
 		vars->eee_status = phy_vars[active_external_phy].eee_status;
 
-		PMD_DRV_LOG(DEBUG, "Active external phy selected: %x",
+		PMD_DRV_LOG(DEBUG, sc, "Active external phy selected: %x",
 			    active_external_phy);
 	}
@@ -6416,5 +6421,5 @@ elink_status_t elink_link_update(struct elink_params * params,
 		}
 	}
-	PMD_DRV_LOG(DEBUG, "vars->flow_ctrl = 0x%x, vars->link_status = 0x%x,"
+	PMD_DRV_LOG(DEBUG, sc, "vars->flow_ctrl = 0x%x, vars->link_status = 0x%x,"
 		    " ext_phy_line_speed = %d", vars->flow_ctrl,
 		    vars->link_status, ext_phy_line_speed);
@@ -6427,5 +6432,5 @@ elink_status_t elink_link_update(struct elink_params * params,
 		if (!(ELINK_SINGLE_MEDIA_DIRECT(params)) && ext_phy_link_up &&
 		    (ext_phy_line_speed != vars->line_speed)) {
-			PMD_DRV_LOG(DEBUG, "Internal link speed %d is"
+			PMD_DRV_LOG(DEBUG, sc, "Internal link speed %d is"
 				    " different than the external"
 				    " link speed %d", vars->line_speed,
@@ -6453,5 +6458,5 @@ elink_status_t elink_link_update(struct elink_params * params,
 	 */
 	if (!(ELINK_SINGLE_MEDIA_DIRECT(params))) {
-		PMD_DRV_LOG(DEBUG, "ext_phy_link_up = %d, int_link_up = %d,"
+		PMD_DRV_LOG(DEBUG, sc, "ext_phy_link_up = %d, int_link_up = %d,"
 			    " init_preceding = %d", ext_phy_link_up,
 			    vars->phy_link_up,
@@ -6518,5 +6523,5 @@ static void elink_save_spirom_version(struct bnx2x_softc *sc,
 				      uint32_t spirom_ver, uint32_t ver_addr)
 {
-	PMD_DRV_LOG(DEBUG, "FW version 0x%x:0x%x for port %d",
+	PMD_DRV_LOG(DEBUG, sc, "FW version 0x%x:0x%x for port %d",
 		    (uint16_t) (spirom_ver >> 16), (uint16_t) spirom_ver, port);
 
@@ -6584,5 +6589,5 @@ static void elink_8073_resolve_fc(struct elink_phy *phy,
 
 		elink_pause_resolve(vars, pause_result);
-		PMD_DRV_LOG(DEBUG, "Ext PHY CL37 pause result 0x%x",
+		PMD_DRV_LOG(DEBUG, sc, "Ext PHY CL37 pause result 0x%x",
 			    pause_result);
 	}
@@ -6628,5 +6633,5 @@ static elink_status_t elink_8073_8727_external_rom_boot(struct bnx2x_softc *sc,
 		count++;
 		if (count > 300) {
-			PMD_DRV_LOG(DEBUG,
+			PMD_DRV_LOG(DEBUG, sc,
 				    "elink_8073_8727_external_rom_boot port %x:"
 				    "Download failed. fw version = 0x%x",
@@ -6653,5 +6658,5 @@ static elink_status_t elink_8073_8727_external_rom_boot(struct bnx2x_softc *sc,
 	elink_save_bnx2x_spirom_ver(sc, phy, port);
 
-	PMD_DRV_LOG(DEBUG,
+	PMD_DRV_LOG(DEBUG, sc,
 		    "elink_8073_8727_external_rom_boot port %x:"
 		    "Download complete. fw version = 0x%x", port, fw_ver1);
@@ -6714,8 +6719,8 @@ static elink_status_t elink_8073_xaui_wa(struct bnx2x_softc *sc,
 		 */
 		if (!(val & (1 << 14)) || !(val & (1 << 13))) {
-			PMD_DRV_LOG(DEBUG, "XAUI work-around not required");
+			PMD_DRV_LOG(DEBUG, sc, "XAUI work-around not required");
 			return ELINK_STATUS_OK;
 		} else if (!(val & (1 << 15))) {
-			PMD_DRV_LOG(DEBUG, "bit 15 went off");
+			PMD_DRV_LOG(DEBUG, sc, "bit 15 went off");
 			/* If bit 15 is 0, then poll Dev1, Reg $C841 until it's
 			 * MSB (bit15) goes to 1 (indicating that the XAUI
@@ -6729,5 +6734,5 @@ static elink_status_t elink_8073_xaui_wa(struct bnx2x_softc *sc,
 						&val);
 				if (val & (1 << 15)) {
-					PMD_DRV_LOG(DEBUG,
+					PMD_DRV_LOG(DEBUG, sc,
 						    "XAUI workaround has completed");
 					return ELINK_STATUS_OK;
@@ -6739,5 +6744,5 @@ static elink_status_t elink_8073_xaui_wa(struct bnx2x_softc *sc,
 		DELAY(1000 * 3);
 	}
-	PMD_DRV_LOG(DEBUG, "Warning: XAUI work-around timeout !!!");
+	PMD_DRV_LOG(DEBUG, sc, "Warning: XAUI work-around timeout !!!");
 	return ELINK_STATUS_ERROR;
 }
@@ -6781,5 +6786,5 @@ static void elink_8073_set_pause_cl37(struct elink_params *params,
 		cl37_val |= MDIO_COMBO_IEEE0_AUTO_NEG_ADV_PAUSE_BOTH;
 	}
-	PMD_DRV_LOG(DEBUG, "Ext phy AN advertize cl37 0x%x", cl37_val);
+	PMD_DRV_LOG(DEBUG, sc, "Ext phy AN advertize cl37 0x%x", cl37_val);
 
 	elink_cl45_write(sc, phy,
@@ -6812,5 +6817,5 @@ static uint8_t elink_8073_config_init(struct elink_phy *phy,
 	uint16_t val = 0, tmp1;
 	uint8_t gpio_port;
-	PMD_DRV_LOG(DEBUG, "Init 8073");
+	PMD_DRV_LOG(DEBUG, sc, "Init 8073");
 
 	if (CHIP_IS_E2(sc))
@@ -6833,10 +6838,10 @@ static uint8_t elink_8073_config_init(struct elink_phy *phy,
 	elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_RXSTAT, &tmp1);
 
-	PMD_DRV_LOG(DEBUG, "Before rom RX_ALARM(port1): 0x%x", tmp1);
+	PMD_DRV_LOG(DEBUG, sc, "Before rom RX_ALARM(port1): 0x%x", tmp1);
 
 	/* Swap polarity if required - Must be done only in non-1G mode */
 	if (params->lane_config & PORT_HW_CFG_SWAP_PHY_POLARITY_ENABLED) {
 		/* Configure the 8073 to swap _P and _N of the KR lines */
-		PMD_DRV_LOG(DEBUG, "Swapping polarity for the 8073");
+		PMD_DRV_LOG(DEBUG, sc, "Swapping polarity for the 8073");
 		/* 10G Rx/Tx and 1G Tx signal polarity swap */
 		elink_cl45_read(sc, phy,
@@ -6860,9 +6865,9 @@ static uint8_t elink_8073_config_init(struct elink_phy *phy,
 		elink_cl45_write(sc, phy,
 				 MDIO_AN_DEVAD, MDIO_AN_REG_8073_BAM, val | 1);
-		PMD_DRV_LOG(DEBUG, "Enable CL37 BAM on KR");
+		PMD_DRV_LOG(DEBUG, sc, "Enable CL37 BAM on KR");
 	}
 	if (params->loopback_mode == ELINK_LOOPBACK_EXT) {
 		elink_807x_force_10G(sc, phy);
-		PMD_DRV_LOG(DEBUG, "Forced speed 10G on 807X");
+		PMD_DRV_LOG(DEBUG, sc, "Forced speed 10G on 807X");
 		return ELINK_STATUS_OK;
 	} else {
@@ -6890,5 +6895,5 @@ static uint8_t elink_8073_config_init(struct elink_phy *phy,
 		     PORT_HW_CFG_SPEED_CAPABILITY_D0_2_5G))
 			val |= (1 << 5);
-		PMD_DRV_LOG(DEBUG, "807x autoneg val = 0x%x", val);
+		PMD_DRV_LOG(DEBUG, sc, "807x autoneg val = 0x%x", val);
 	}
 
@@ -6904,5 +6909,5 @@ static uint8_t elink_8073_config_init(struct elink_phy *phy,
 				MDIO_PMA_DEVAD, MDIO_PMA_REG_8073_CHIP_REV,
 				&phy_ver);
-		PMD_DRV_LOG(DEBUG, "Add 2.5G");
+		PMD_DRV_LOG(DEBUG, sc, "Add 2.5G");
 		if (phy_ver > 0)
 			tmp1 |= 1;
@@ -6910,5 +6915,5 @@ static uint8_t elink_8073_config_init(struct elink_phy *phy,
 			tmp1 &= 0xfffe;
 	} else {
-		PMD_DRV_LOG(DEBUG, "Disable 2.5G");
+		PMD_DRV_LOG(DEBUG, sc, "Disable 2.5G");
 		tmp1 &= 0xfffe;
 	}
@@ -6944,5 +6949,5 @@ static uint8_t elink_8073_config_init(struct elink_phy *phy,
 	DELAY(1000 * 500);
 	elink_cl45_write(sc, phy, MDIO_AN_DEVAD, MDIO_AN_REG_CTRL, 0x1200);
-	PMD_DRV_LOG(DEBUG, "807x Autoneg Restart: Advertise 1G=%x, 10G=%x",
+	PMD_DRV_LOG(DEBUG, sc, "807x Autoneg Restart: Advertise 1G=%x, 10G=%x",
 		    ((val & (1 << 5)) > 0), ((val & (1 << 7)) > 0));
 	return ELINK_STATUS_OK;
@@ -6961,10 +6966,10 @@ static uint8_t elink_8073_read_status(struct elink_phy *phy,
 	elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_STAT, &val1);
 
-	PMD_DRV_LOG(DEBUG, "8703 LASI status 0x%x", val1);
+	PMD_DRV_LOG(DEBUG, sc, "8703 LASI status 0x%x", val1);
 
 	/* Clear the interrupt LASI status register */
 	elink_cl45_read(sc, phy, MDIO_PCS_DEVAD, MDIO_PCS_REG_STATUS, &val2);
 	elink_cl45_read(sc, phy, MDIO_PCS_DEVAD, MDIO_PCS_REG_STATUS, &val1);
-	PMD_DRV_LOG(DEBUG, "807x PCS status 0x%x->0x%x", val2, val1);
+	PMD_DRV_LOG(DEBUG, sc, "807x PCS status 0x%x->0x%x", val2, val1);
 	/* Clear MSG-OUT */
 	elink_cl45_read(sc, phy,
@@ -6974,14 +6979,14 @@ static uint8_t elink_8073_read_status(struct elink_phy *phy,
 	elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_RXSTAT, &val2);
 
-	PMD_DRV_LOG(DEBUG, "KR 0x9003 0x%x", val2);
+	PMD_DRV_LOG(DEBUG, sc, "KR 0x9003 0x%x", val2);
 
 	/* Check the link status */
 	elink_cl45_read(sc, phy, MDIO_PCS_DEVAD, MDIO_PCS_REG_STATUS, &val2);
-	PMD_DRV_LOG(DEBUG, "KR PCS status 0x%x", val2);
+	PMD_DRV_LOG(DEBUG, sc, "KR PCS status 0x%x", val2);
 
 	elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_STATUS, &val2);
 	elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_STATUS, &val1);
 	link_up = ((val1 & 4) == 4);
-	PMD_DRV_LOG(DEBUG, "PMA_REG_STATUS=0x%x", val1);
+	PMD_DRV_LOG(DEBUG, sc, "PMA_REG_STATUS=0x%x", val1);
 
 	if (link_up && ((phy->req_line_speed != ELINK_SPEED_10000))) {
@@ -6997,5 +7002,5 @@ static uint8_t elink_8073_read_status(struct elink_phy *phy,
 	elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_STATUS, &val2);
 	elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_STATUS, &val1);
-	PMD_DRV_LOG(DEBUG, "KR PMA status 0x%x->0x%x,"
+	PMD_DRV_LOG(DEBUG, sc, "KR PMA status 0x%x->0x%x,"
 		    "an_link_status=0x%x", val2, val1, an1000_status);
 
@@ -7023,19 +7028,19 @@ static uint8_t elink_8073_read_status(struct elink_phy *phy,
 		link_up = 1;
 		vars->line_speed = ELINK_SPEED_10000;
-		PMD_DRV_LOG(DEBUG, "port %x: External link up in 10G",
+		PMD_DRV_LOG(DEBUG, sc, "port %x: External link up in 10G",
 			    params->port);
 	} else if ((link_status & (1 << 1)) && (!(link_status & (1 << 14)))) {
 		link_up = 1;
 		vars->line_speed = ELINK_SPEED_2500;
-		PMD_DRV_LOG(DEBUG, "port %x: External link up in 2.5G",
+		PMD_DRV_LOG(DEBUG, sc, "port %x: External link up in 2.5G",
 			    params->port);
 	} else if ((link_status & (1 << 0)) && (!(link_status & (1 << 13)))) {
 		link_up = 1;
 		vars->line_speed = ELINK_SPEED_1000;
-		PMD_DRV_LOG(DEBUG, "port %x: External link up in 1G",
+		PMD_DRV_LOG(DEBUG, sc, "port %x: External link up in 1G",
 			    params->port);
 	} else {
 		link_up = 0;
-		PMD_DRV_LOG(DEBUG, "port %x: External link is down",
+		PMD_DRV_LOG(DEBUG, sc, "port %x: External link is down",
 			    params->port);
 	}
@@ -7052,5 +7057,5 @@ static uint8_t elink_8073_read_status(struct elink_phy *phy,
 			 */
 			if (vars->line_speed == ELINK_SPEED_1000) {
-				PMD_DRV_LOG(DEBUG, "Swapping 1G polarity for"
+				PMD_DRV_LOG(DEBUG, sc, "Swapping 1G polarity for"
 					    "the 8073");
 				val1 |= (1 << 3);
@@ -7091,5 +7096,5 @@ static void elink_8073_link_reset(__rte_unused struct elink_phy *phy,
 	else
 		gpio_port = params->port;
-	PMD_DRV_LOG(DEBUG, "Setting 8073 port %d into low power mode",
+	PMD_DRV_LOG(DEBUG, sc, "Setting 8073 port %d into low power mode",
 		    gpio_port);
 	elink_cb_gpio_write(sc, MISC_REGISTERS_GPIO_2,
@@ -7106,5 +7111,5 @@ static uint8_t elink_8705_config_init(struct elink_phy *phy,
 {
 	struct bnx2x_softc *sc = params->sc;
-	PMD_DRV_LOG(DEBUG, "init 8705");
+	PMD_DRV_LOG(DEBUG, sc, "init 8705");
 	/* Restore normal power mode */
 	elink_cb_gpio_write(sc, MISC_REGISTERS_GPIO_2,
@@ -7134,12 +7139,12 @@ static uint8_t elink_8705_read_status(struct elink_phy *phy,
 	uint16_t val1, rx_sd;
 	struct bnx2x_softc *sc = params->sc;
-	PMD_DRV_LOG(DEBUG, "read status 8705");
+	PMD_DRV_LOG(DEBUG, sc, "read status 8705");
 	elink_cl45_read(sc, phy,
 			MDIO_WIS_DEVAD, MDIO_WIS_REG_LASI_STATUS, &val1);
-	PMD_DRV_LOG(DEBUG, "8705 LASI status 0x%x", val1);
+	PMD_DRV_LOG(DEBUG, sc, "8705 LASI status 0x%x", val1);
 
 	elink_cl45_read(sc, phy,
 			MDIO_WIS_DEVAD, MDIO_WIS_REG_LASI_STATUS, &val1);
-	PMD_DRV_LOG(DEBUG, "8705 LASI status 0x%x", val1);
+	PMD_DRV_LOG(DEBUG, sc, "8705 LASI status 0x%x", val1);
 
 	elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_RX_SD, &rx_sd);
@@ -7148,5 +7153,5 @@ static uint8_t elink_8705_read_status(struct elink_phy *phy,
 	elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, 0xc809, &val1);
 
-	PMD_DRV_LOG(DEBUG, "8705 1.c809 val=0x%x", val1);
+	PMD_DRV_LOG(DEBUG, sc, "8705 1.c809 val=0x%x", val1);
 	link_up = ((rx_sd & 0x1) && (val1 & (1 << 9))
 		   && ((val1 & (1 << 8)) == 0));
@@ -7172,11 +7177,11 @@ static void elink_set_disable_pmd_transmit(struct elink_params *params,
 		if (params->feature_config_flags &
 		    ELINK_FEATURE_CONFIG_BC_SUPPORTS_SFP_TX_DISABLED) {
-			PMD_DRV_LOG(DEBUG, "Disabling PMD transmitter");
+			PMD_DRV_LOG(DEBUG, sc, "Disabling PMD transmitter");
 		} else {
-			PMD_DRV_LOG(DEBUG, "NOT disabling PMD transmitter");
+			PMD_DRV_LOG(DEBUG, sc, "NOT disabling PMD transmitter");
 			return;
 		}
 	} else {
-		PMD_DRV_LOG(DEBUG, "Enabling PMD transmitter");
+		PMD_DRV_LOG(DEBUG, sc, "Enabling PMD transmitter");
 	}
 	elink_cl45_write(sc, phy,
@@ -7212,5 +7217,5 @@ static void elink_sfp_e1e2_set_transmitter(struct elink_params *params,
 				     dev_info.port_hw_config[port].sfp_ctrl)) &
 	    PORT_HW_CFG_TX_LASER_MASK;
-	PMD_DRV_LOG(DEBUG, "Setting transmitter tx_en=%x for port %x "
+	PMD_DRV_LOG(DEBUG, sc, "Setting transmitter tx_en=%x for port %x "
 		    "mode = %x", tx_en, port, tx_en_mode);
 	switch (tx_en_mode) {
@@ -7248,5 +7253,6 @@ static void elink_sfp_e1e2_set_transmitter(struct elink_params *params,
 		}
 	default:
-		PMD_DRV_LOG(DEBUG, "Invalid TX_LASER_MDIO 0x%x", tx_en_mode);
+		PMD_DRV_LOG(DEBUG, sc,
+			    "Invalid TX_LASER_MDIO 0x%x", tx_en_mode);
 		break;
 	}
@@ -7257,5 +7263,5 @@ static void elink_sfp_set_transmitter(struct elink_params *params,
 {
 	struct bnx2x_softc *sc = params->sc;
-	PMD_DRV_LOG(DEBUG, "Setting SFP+ transmitter to %d", tx_en);
+	PMD_DRV_LOG(DEBUG, sc, "Setting SFP+ transmitter to %d", tx_en);
 	if (CHIP_IS_E3(sc))
 		elink_sfp_e3_set_transmitter(params, phy, tx_en);
@@ -7278,5 +7284,5 @@ static elink_status_t elink_8726_read_sfp_module_eeprom(struct elink_phy *phy,
 	uint16_t i;
 	if (byte_cnt > ELINK_SFP_EEPROM_PAGE_SIZE) {
-		PMD_DRV_LOG(DEBUG, "Reading from eeprom is limited to 0xf");
+		PMD_DRV_LOG(DEBUG, sc, "Reading from eeprom is limited to 0xf");
 		return ELINK_STATUS_ERROR;
 	}
@@ -7309,5 +7315,5 @@ static elink_status_t elink_8726_read_sfp_module_eeprom(struct elink_phy *phy,
 	if ((val & MDIO_PMA_REG_SFP_TWO_WIRE_CTRL_STATUS_MASK) !=
 	    MDIO_PMA_REG_SFP_TWO_WIRE_STATUS_COMPLETE) {
-		PMD_DRV_LOG(DEBUG,
+		PMD_DRV_LOG(DEBUG, sc,
 			    "Got bad status 0x%x when reading from SFP+ EEPROM",
 			    (val & MDIO_PMA_REG_SFP_TWO_WIRE_CTRL_STATUS_MASK));
@@ -7350,5 +7356,5 @@ static void elink_warpcore_power_module(struct elink_params *params,
 	if (pin_cfg == PIN_CFG_NA)
 		return;
-	PMD_DRV_LOG(DEBUG, "Setting SFP+ module power to %d using pin cfg %d",
+	PMD_DRV_LOG(DEBUG, sc, "Setting SFP+ module power to %d using pin cfg %d",
 		    power, pin_cfg);
 	/* Low ==> corresponding SFP+ module is powered
@@ -7375,5 +7381,5 @@ static elink_status_t elink_warpcore_read_sfp_module_eeprom(__rte_unused struct
 
 	if (byte_cnt > ELINK_SFP_EEPROM_PAGE_SIZE) {
-		PMD_DRV_LOG(DEBUG,
+		PMD_DRV_LOG(DEBUG, sc,
 			    "Reading from eeprom is limited to 16 bytes");
 		return ELINK_STATUS_ERROR;
@@ -7417,5 +7423,5 @@ static elink_status_t elink_8727_read_sfp_module_eeprom(struct elink_phy *phy,
 
 	if (byte_cnt > ELINK_SFP_EEPROM_PAGE_SIZE) {
-		PMD_DRV_LOG(DEBUG, "Reading from eeprom is limited to 0xf");
+		PMD_DRV_LOG(DEBUG, sc, "Reading from eeprom is limited to 0xf");
 		return ELINK_STATUS_ERROR;
 	}
@@ -7471,5 +7477,5 @@ static elink_status_t elink_8727_read_sfp_module_eeprom(struct elink_phy *phy,
 	if ((val & MDIO_PMA_REG_SFP_TWO_WIRE_CTRL_STATUS_MASK) !=
 	    MDIO_PMA_REG_SFP_TWO_WIRE_STATUS_COMPLETE) {
-		PMD_DRV_LOG(DEBUG,
+		PMD_DRV_LOG(DEBUG, sc,
 			    "Got bad status 0x%x when reading from SFP+ EEPROM",
 			    (val & MDIO_PMA_REG_SFP_TWO_WIRE_CTRL_STATUS_MASK));
@@ -7512,5 +7518,6 @@ static elink_status_t elink_read_sfp_module_eeprom(struct elink_phy *phy,
 
 	if ((dev_addr != 0xa0) && (dev_addr != 0xa2)) {
-		PMD_DRV_LOG(DEBUG, "invalid dev_addr 0x%x", dev_addr);
+		PMD_DRV_LOG(DEBUG, params->sc,
+			    "invalid dev_addr 0x%x", dev_addr);
 		return ELINK_STATUS_ERROR;
 	}
@@ -7558,5 +7565,5 @@ static elink_status_t elink_get_edc_mode(struct elink_phy *phy,
 					 ELINK_SFP_EEPROM_CON_TYPE_ADDR,
 					 2, (uint8_t *) val) != 0) {
-		PMD_DRV_LOG(DEBUG, "Failed to read from SFP+ module EEPROM");
+		PMD_DRV_LOG(DEBUG, sc, "Failed to read from SFP+ module EEPROM");
 		return ELINK_STATUS_ERROR;
 	}
@@ -7577,5 +7584,5 @@ static elink_status_t elink_get_edc_mode(struct elink_phy *phy,
 							 &copper_module_type) !=
 			    0) {
-				PMD_DRV_LOG(DEBUG,
+				PMD_DRV_LOG(DEBUG, sc,
 					    "Failed to read copper-cable-type"
 					    " from SFP+ EEPROM");
@@ -7585,5 +7592,5 @@ static elink_status_t elink_get_edc_mode(struct elink_phy *phy,
 			if (copper_module_type &
 			    ELINK_SFP_EEPROM_FC_TX_TECH_BITMASK_COPPER_ACTIVE) {
-				PMD_DRV_LOG(DEBUG,
+				PMD_DRV_LOG(DEBUG, sc,
 					    "Active Copper cable detected");
 				if (phy->type ==
@@ -7595,9 +7602,9 @@ static elink_status_t elink_get_edc_mode(struct elink_phy *phy,
 				   ELINK_SFP_EEPROM_FC_TX_TECH_BITMASK_COPPER_PASSIVE)
 			{
-				PMD_DRV_LOG(DEBUG,
+				PMD_DRV_LOG(DEBUG, sc,
 					    "Passive Copper cable detected");
 				*edc_mode = ELINK_EDC_MODE_PASSIVE_DAC;
 			} else {
-				PMD_DRV_LOG(DEBUG,
+				PMD_DRV_LOG(DEBUG, sc,
 					    "Unknown copper-cable-type 0x%x !!!",
 					    copper_module_type);
@@ -7612,5 +7619,5 @@ static elink_status_t elink_get_edc_mode(struct elink_phy *phy,
 			       ELINK_SFP_EEPROM_COMP_CODE_LR_MASK |
 			       ELINK_SFP_EEPROM_COMP_CODE_LRM_MASK)) == 0) {
-			PMD_DRV_LOG(DEBUG, "1G SFP module detected");
+			PMD_DRV_LOG(DEBUG, sc, "1G SFP module detected");
 			gport = params->port;
 			phy->media_type = ELINK_ETH_PHY_SFP_1G_FIBER;
@@ -7628,5 +7635,5 @@ static elink_status_t elink_get_edc_mode(struct elink_phy *phy,
 		} else {
 			int idx, cfg_idx = 0;
-			PMD_DRV_LOG(DEBUG, "10G Optic module detected");
+			PMD_DRV_LOG(DEBUG, sc, "10G Optic module detected");
 			for (idx = ELINK_INT_PHY; idx < ELINK_MAX_PHYS; idx++) {
 				if (params->phy[idx].type == phy->type) {
@@ -7640,5 +7647,5 @@ static elink_status_t elink_get_edc_mode(struct elink_phy *phy,
 		break;
 	default:
-		PMD_DRV_LOG(DEBUG, "Unable to determine module type 0x%x !!!",
+		PMD_DRV_LOG(DEBUG, sc, "Unable to determine module type 0x%x !!!",
 			    val[0]);
 		return ELINK_STATUS_ERROR;
@@ -7670,5 +7677,5 @@ static elink_status_t elink_get_edc_mode(struct elink_phy *phy,
 						 ELINK_SFP_EEPROM_OPTIONS_SIZE,
 						 options) != 0) {
-			PMD_DRV_LOG(DEBUG,
+			PMD_DRV_LOG(DEBUG, sc,
 				    "Failed to read Option field from module EEPROM");
 			return ELINK_STATUS_ERROR;
@@ -7679,5 +7686,5 @@ static elink_status_t elink_get_edc_mode(struct elink_phy *phy,
 			*edc_mode = ELINK_EDC_MODE_LIMITING;
 	}
-	PMD_DRV_LOG(DEBUG, "EDC mode is set to 0x%x", *edc_mode);
+	PMD_DRV_LOG(DEBUG, sc, "EDC mode is set to 0x%x", *edc_mode);
 	return ELINK_STATUS_OK;
 }
@@ -7701,5 +7708,5 @@ static elink_status_t elink_verify_sfp_module(struct elink_phy *phy,
 	if ((val & PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_MASK) ==
 	    PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_NO_ENFORCEMENT) {
-		PMD_DRV_LOG(DEBUG, "NOT enforcing module verification");
+		PMD_DRV_LOG(DEBUG, sc, "NOT enforcing module verification");
 		return ELINK_STATUS_OK;
 	}
@@ -7713,5 +7720,5 @@ static elink_status_t elink_verify_sfp_module(struct elink_phy *phy,
 		/* Use first phy request only in case of non-dual media */
 		if (ELINK_DUAL_MEDIA(params)) {
-			PMD_DRV_LOG(DEBUG,
+			PMD_DRV_LOG(DEBUG, sc,
 				    "FW does not support OPT MDL verification");
 			return ELINK_STATUS_ERROR;
@@ -7720,5 +7727,5 @@ static elink_status_t elink_verify_sfp_module(struct elink_phy *phy,
 	} else {
 		/* No support in OPT MDL detection */
-		PMD_DRV_LOG(DEBUG, "FW does not support OPT MDL verification");
+		PMD_DRV_LOG(DEBUG, sc, "FW does not support OPT MDL verification");
 		return ELINK_STATUS_ERROR;
 	}
@@ -7727,5 +7734,5 @@ static elink_status_t elink_verify_sfp_module(struct elink_phy *phy,
 	fw_resp = elink_cb_fw_command(sc, cmd, fw_cmd_param);
 	if (fw_resp == FW_MSG_CODE_VRFY_OPT_MDL_SUCCESS) {
-		PMD_DRV_LOG(DEBUG, "Approved module");
+		PMD_DRV_LOG(DEBUG, sc, "Approved module");
 		return ELINK_STATUS_OK;
 	}
@@ -7783,5 +7790,5 @@ static elink_status_t elink_wait_for_sfp_module_initialized(struct elink_phy
 							  1, 1, &val);
 		if (rc == 0) {
-			PMD_DRV_LOG(DEBUG,
+			PMD_DRV_LOG(DEBUG, params->sc,
 				    "SFP+ module initialization took %d ms",
 				    timeout * 5);
@@ -7834,8 +7841,9 @@ static elink_status_t elink_8726_set_limiting_mode(struct bnx2x_softc *sc,
 			MDIO_PMA_DEVAD,
 			MDIO_PMA_REG_ROM_VER2, &cur_limiting_mode);
-	PMD_DRV_LOG(DEBUG, "Current Limiting mode is 0x%x", cur_limiting_mode);
+	PMD_DRV_LOG(DEBUG, sc,
+		    "Current Limiting mode is 0x%x", cur_limiting_mode);
 
 	if (edc_mode == ELINK_EDC_MODE_LIMITING) {
-		PMD_DRV_LOG(DEBUG, "Setting LIMITING MODE");
+		PMD_DRV_LOG(DEBUG, sc, "Setting LIMITING MODE");
 		elink_cl45_write(sc, phy,
 				 MDIO_PMA_DEVAD,
@@ -7844,5 +7852,5 @@ static elink_status_t elink_8726_set_limiting_mode(struct bnx2x_softc *sc,
 	} else {		/* LRM mode ( default ) */
 
-		PMD_DRV_LOG(DEBUG, "Setting LRM MODE");
+		PMD_DRV_LOG(DEBUG, sc, "Setting LRM MODE");
 
 		/* Changing to LRM mode takes quite few seconds. So do it only
@@ -7934,5 +7942,5 @@ static void elink_8727_specific_func(struct elink_phy *phy,
 		break;
 	default:
-		PMD_DRV_LOG(DEBUG, "Function 0x%x not supported by 8727",
+		PMD_DRV_LOG(DEBUG, sc, "Function 0x%x not supported by 8727",
 			    action);
 		return;
@@ -7962,5 +7970,5 @@ static void elink_set_e1e2_module_fault_led(struct elink_params *params,
 			uint16_t gpio_pin = fault_led_gpio -
 			    PORT_HW_CFG_FAULT_MODULE_LED_GPIO0;
-			PMD_DRV_LOG(DEBUG, "Set fault module-detected led "
+			PMD_DRV_LOG(DEBUG, sc, "Set fault module-detected led "
 				    "pin %x port %x mode %x",
 				    gpio_pin, gpio_port, gpio_mode);
@@ -7969,5 +7977,5 @@ static void elink_set_e1e2_module_fault_led(struct elink_params *params,
 		break;
 	default:
-		PMD_DRV_LOG(DEBUG, "Error: Invalid fault led mode 0x%x",
+		PMD_DRV_LOG(DEBUG, sc, "Error: Invalid fault led mode 0x%x",
 			    fault_led_gpio);
 	}
@@ -7985,5 +7993,5 @@ static void elink_set_e3_module_fault_led(struct elink_params *params,
 		   PORT_HW_CFG_E3_FAULT_MDL_LED_MASK) >>
 	    PORT_HW_CFG_E3_FAULT_MDL_LED_SHIFT;
-	PMD_DRV_LOG(DEBUG, "Setting Fault LED to %d using pin cfg %d",
+	PMD_DRV_LOG(DEBUG, sc, "Setting Fault LED to %d using pin cfg %d",
 		    gpio_mode, pin_cfg);
 	elink_set_cfg_pin(sc, pin_cfg, gpio_mode);
@@ -7994,5 +8002,6 @@ static void elink_set_sfp_module_fault_led(struct elink_params *params,
 {
 	struct bnx2x_softc *sc = params->sc;
-	PMD_DRV_LOG(DEBUG, "Setting SFP+ module fault LED to %d", gpio_mode);
+	PMD_DRV_LOG(DEBUG, sc,
+		    "Setting SFP+ module fault LED to %d", gpio_mode);
 	if (CHIP_IS_E3(sc)) {
 		/* Low ==> if SFP+ module is supported otherwise
@@ -8021,5 +8030,5 @@ static void elink_power_sfp_module(struct elink_params *params,
 				   struct elink_phy *phy, uint8_t power)
 {
-	PMD_DRV_LOG(DEBUG, "Setting SFP+ power to %x", power);
+	PMD_DRV_LOG(DEBUG, params->sc, "Setting SFP+ power to %x", power);
 
 	switch (phy->type) {
@@ -8107,14 +8116,14 @@ static elink_status_t elink_sfp_module_detection(struct elink_phy *phy,
 	/* Enabled transmitter by default */
 	elink_sfp_set_transmitter(params, phy, 1);
-	PMD_DRV_LOG(DEBUG, "SFP+ module plugged in/out detected on port %d",
+	PMD_DRV_LOG(DEBUG, sc, "SFP+ module plugged in/out detected on port %d",
 		    params->port);
 	/* Power up module */
 	elink_power_sfp_module(params, phy, 1);
 	if (elink_get_edc_mode(phy, params, &edc_mode) != 0) {
-		PMD_DRV_LOG(DEBUG, "Failed to get valid module type");
+		PMD_DRV_LOG(DEBUG, sc, "Failed to get valid module type");
 		return ELINK_STATUS_ERROR;
 	} else if (elink_verify_sfp_module(phy, params) != 0) {
 		/* Check SFP+ module compatibility */
-		PMD_DRV_LOG(DEBUG, "Module verification failed!!");
+		PMD_DRV_LOG(DEBUG, sc, "Module verification failed!!");
 		rc = ELINK_STATUS_ERROR;
 		/* Turn on fault module-detected led */
@@ -8125,5 +8134,5 @@ static elink_status_t elink_sfp_module_detection(struct elink_phy *phy,
 		if ((val & PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_MASK) ==
 		    PORT_FEAT_CFG_OPT_MDL_ENFRCMNT_POWER_DOWN) {
-			PMD_DRV_LOG(DEBUG, "Shutdown SFP+ module!!");
+			PMD_DRV_LOG(DEBUG, sc, "Shutdown SFP+ module!!");
 			elink_power_sfp_module(params, phy, 0);
 			return rc;
@@ -8166,5 +8175,5 @@ void elink_handle_module_detect_int(struct elink_params *params)
 				      params->port, &gpio_num, &gpio_port) ==
 	    ELINK_STATUS_ERROR) {
-		PMD_DRV_LOG(DEBUG, "Failed to get MOD_ABS interrupt config");
+		PMD_DRV_LOG(DEBUG, sc, "Failed to get MOD_ABS interrupt config");
 		return;
 	}
@@ -8206,5 +8215,5 @@ void elink_handle_module_detect_int(struct elink_params *params)
 			}
 		} else {
-			PMD_DRV_LOG(DEBUG, "SFP+ module is not initialized");
+			PMD_DRV_LOG(DEBUG, sc, "SFP+ module is not initialized");
 		}
 	} else {
@@ -8251,5 +8260,5 @@ static uint8_t elink_8706_8726_read_status(struct elink_phy *phy,
 	uint16_t val1, val2, rx_sd, pcs_status;
 	struct bnx2x_softc *sc = params->sc;
-	PMD_DRV_LOG(DEBUG, "XGXS 8706/8726");
+	PMD_DRV_LOG(DEBUG, sc, "XGXS 8706/8726");
 	/* Clear RX Alarm */
 	elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_RXSTAT, &val2);
@@ -8261,5 +8270,6 @@ static uint8_t elink_8706_8726_read_status(struct elink_phy *phy,
 	elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_STAT, &val1);
 	elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_STAT, &val2);
-	PMD_DRV_LOG(DEBUG, "8706/8726 LASI status 0x%x--> 0x%x", val1, val2);
+	PMD_DRV_LOG(DEBUG, sc,
+		    "8706/8726 LASI status 0x%x--> 0x%x", val1, val2);
 
 	elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_RX_SD, &rx_sd);
@@ -8269,5 +8279,5 @@ static uint8_t elink_8706_8726_read_status(struct elink_phy *phy,
 	elink_cl45_read(sc, phy, MDIO_AN_DEVAD, MDIO_AN_REG_LINK_STATUS, &val2);
 
-	PMD_DRV_LOG(DEBUG, "8706/8726 rx_sd 0x%x pcs_status 0x%x 1Gbps"
+	PMD_DRV_LOG(DEBUG, sc, "8706/8726 rx_sd 0x%x pcs_status 0x%x 1Gbps"
 		    " link_status 0x%x", rx_sd, pcs_status, val2);
 	/* Link is up if both bit 0 of pmd_rx_sd and bit 0 of pcs_status
@@ -8323,5 +8333,5 @@ static uint8_t elink_8706_config_init(struct elink_phy *phy,
 		DELAY(1000 * 10);
 	}
-	PMD_DRV_LOG(DEBUG, "XGXS 8706 is initialized after %d ms", cnt);
+	PMD_DRV_LOG(DEBUG, sc, "XGXS 8706 is initialized after %d ms", cnt);
 	if ((params->feature_config_flags &
 	     ELINK_FEATURE_CONFIG_OVERRIDE_PREEMPHASIS_ENABLED)) {
@@ -8337,5 +8347,5 @@ static uint8_t elink_8706_config_init(struct elink_phy *phy,
 			/* Set control bits according to configuration */
 			val |= (phy->rx_preemphasis[i] & 0x7);
-			PMD_DRV_LOG(DEBUG, "Setting RX Equalizer to BNX2X8706"
+			PMD_DRV_LOG(DEBUG, sc, "Setting RX Equalizer to BNX2X8706"
 				    " reg 0x%x <-- val 0x%x", reg, val);
 			elink_cl45_write(sc, phy, MDIO_XS_DEVAD, reg, val);
@@ -8344,5 +8354,5 @@ static uint8_t elink_8706_config_init(struct elink_phy *phy,
 	/* Force speed */
 	if (phy->req_line_speed == ELINK_SPEED_10000) {
-		PMD_DRV_LOG(DEBUG, "XGXS 8706 force 10Gbps");
+		PMD_DRV_LOG(DEBUG, sc, "XGXS 8706 force 10Gbps");
 
 		elink_cl45_write(sc, phy,
@@ -8358,5 +8368,5 @@ static uint8_t elink_8706_config_init(struct elink_phy *phy,
 
 		/* Allow CL37 through CL73 */
-		PMD_DRV_LOG(DEBUG, "XGXS 8706 AutoNeg");
+		PMD_DRV_LOG(DEBUG, sc, "XGXS 8706 AutoNeg");
 		elink_cl45_write(sc, phy,
 				 MDIO_AN_DEVAD, MDIO_AN_REG_CL37_CL73, 0x040c);
@@ -8393,5 +8403,5 @@ static uint8_t elink_8706_config_init(struct elink_phy *phy,
 
 	if (tx_en_mode == PORT_HW_CFG_TX_LASER_GPIO0) {
-		PMD_DRV_LOG(DEBUG, "Enabling TXONOFF_PWRDN_DIS");
+		PMD_DRV_LOG(DEBUG, sc, "Enabling TXONOFF_PWRDN_DIS");
 		elink_cl45_read(sc, phy,
 				MDIO_PMA_DEVAD, MDIO_PMA_REG_DIGITAL_CTRL,
@@ -8420,5 +8430,5 @@ static void elink_8726_config_loopback(struct elink_phy *phy,
 {
 	struct bnx2x_softc *sc = params->sc;
-	PMD_DRV_LOG(DEBUG, "PMA/PMD ext_phy_loopback: 8726");
+	PMD_DRV_LOG(DEBUG, sc, "PMA/PMD ext_phy_loopback: 8726");
 	elink_cl45_write(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_CTRL, 0x0001);
 }
@@ -8472,5 +8482,5 @@ static uint8_t elink_8726_read_status(struct elink_phy *phy,
 				&val1);
 		if (val1 & (1 << 15)) {
-			PMD_DRV_LOG(DEBUG, "Tx is disabled");
+			PMD_DRV_LOG(DEBUG, sc, "Tx is disabled");
 			link_up = 0;
 			vars->line_speed = 0;
@@ -8485,5 +8495,5 @@ static uint8_t elink_8726_config_init(struct elink_phy *phy,
 {
 	struct bnx2x_softc *sc = params->sc;
-	PMD_DRV_LOG(DEBUG, "Initializing BNX2X8726");
+	PMD_DRV_LOG(DEBUG, sc, "Initializing BNX2X8726");
 
 	elink_cl45_write(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_CTRL, 1 << 15);
@@ -8500,5 +8510,5 @@ static uint8_t elink_8726_config_init(struct elink_phy *phy,
 
 	if (phy->req_line_speed == ELINK_SPEED_1000) {
-		PMD_DRV_LOG(DEBUG, "Setting 1G force");
+		PMD_DRV_LOG(DEBUG, sc, "Setting 1G force");
 		elink_cl45_write(sc, phy,
 				 MDIO_PMA_DEVAD, MDIO_PMA_REG_CTRL, 0x40);
@@ -8515,5 +8525,5 @@ static uint8_t elink_8726_config_init(struct elink_phy *phy,
 		     PORT_HW_CFG_SPEED_CAPABILITY_D0_10G) !=
 		    PORT_HW_CFG_SPEED_CAPABILITY_D0_10G)) {
-		PMD_DRV_LOG(DEBUG, "Setting 1G clause37");
+		PMD_DRV_LOG(DEBUG, sc, "Setting 1G clause37");
 		/* Set Flow control */
 		elink_ext_phy_set_pause(params, phy, vars);
@@ -8543,5 +8553,5 @@ static uint8_t elink_8726_config_init(struct elink_phy *phy,
 	if ((params->feature_config_flags &
 	     ELINK_FEATURE_CONFIG_OVERRIDE_PREEMPHASIS_ENABLED)) {
-		PMD_DRV_LOG(DEBUG,
+		PMD_DRV_LOG(DEBUG, sc,
 			    "Setting TX_CTRL1 0x%x, TX_CTRL2 0x%x",
 			    phy->tx_preemphasis[0], phy->tx_preemphasis[1]);
@@ -8565,5 +8575,5 @@ static void elink_8726_link_reset(struct elink_phy *phy,
 {
 	struct bnx2x_softc *sc = params->sc;
-	PMD_DRV_LOG(DEBUG, "elink_8726_link_reset port %d", params->port);
+	PMD_DRV_LOG(DEBUG, sc, "elink_8726_link_reset port %d", params->port);
 	/* Set serial boot control for external load */
 	elink_cl45_write(sc, phy,
@@ -8638,5 +8648,5 @@ static void elink_8727_config_speed(struct elink_phy *phy,
 	if ((phy->req_line_speed == ELINK_SPEED_1000) ||
 	    (phy->media_type == ELINK_ETH_PHY_SFP_1G_FIBER)) {
-		PMD_DRV_LOG(DEBUG, "Setting 1G force");
+		PMD_DRV_LOG(DEBUG, sc, "Setting 1G force");
 		elink_cl45_write(sc, phy,
 				 MDIO_PMA_DEVAD, MDIO_PMA_REG_CTRL, 0x40);
@@ -8645,5 +8655,5 @@ static void elink_8727_config_speed(struct elink_phy *phy,
 		elink_cl45_read(sc, phy,
 				MDIO_PMA_DEVAD, MDIO_PMA_REG_10G_CTRL2, &tmp1);
-		PMD_DRV_LOG(DEBUG, "1.7 = 0x%x", tmp1);
+		PMD_DRV_LOG(DEBUG, sc, "1.7 = 0x%x", tmp1);
 		/* Power down the XAUI until link is up in case of dual-media
 		 * and 1G
@@ -8665,5 +8675,5 @@ static void elink_8727_config_speed(struct elink_phy *phy,
 		    PORT_HW_CFG_SPEED_CAPABILITY_D0_10G)) {
 
-		PMD_DRV_LOG(DEBUG, "Setting 1G clause37");
+		PMD_DRV_LOG(DEBUG, sc, "Setting 1G clause37");
 		elink_cl45_write(sc, phy,
 				 MDIO_AN_DEVAD, MDIO_AN_REG_8727_MISC_CTRL, 0);
@@ -8699,5 +8709,5 @@ static uint8_t elink_8727_config_init(struct elink_phy *phy,
 	elink_wait_reset_complete(sc, phy, params);
 
-	PMD_DRV_LOG(DEBUG, "Initializing BNX2X8727");
+	PMD_DRV_LOG(DEBUG, sc, "Initializing BNX2X8727");
 
 	elink_8727_specific_func(phy, params, ELINK_PHY_INIT);
@@ -8732,5 +8742,5 @@ static uint8_t elink_8727_config_init(struct elink_phy *phy,
 	if ((params->feature_config_flags &
 	     ELINK_FEATURE_CONFIG_OVERRIDE_PREEMPHASIS_ENABLED)) {
-		PMD_DRV_LOG(DEBUG, "Setting TX_CTRL1 0x%x, TX_CTRL2 0x%x",
+		PMD_DRV_LOG(DEBUG, sc, "Setting TX_CTRL1 0x%x, TX_CTRL2 0x%x",
 			    phy->tx_preemphasis[0], phy->tx_preemphasis[1]);
 		elink_cl45_write(sc, phy,
@@ -8754,5 +8764,5 @@ static uint8_t elink_8727_config_init(struct elink_phy *phy,
 	if (tx_en_mode == PORT_HW_CFG_TX_LASER_GPIO0) {
 
-		PMD_DRV_LOG(DEBUG, "Enabling TXONOFF_PWRDN_DIS");
+		PMD_DRV_LOG(DEBUG, sc, "Enabling TXONOFF_PWRDN_DIS");
 		elink_cl45_read(sc, phy,
 				MDIO_PMA_DEVAD, MDIO_PMA_REG_8727_OPT_CFG_REG,
@@ -8786,5 +8796,5 @@ static void elink_8727_handle_mod_abs(struct elink_phy *phy,
 
 		/* Module is absent */
-		PMD_DRV_LOG(DEBUG, "MOD_ABS indication show module is absent");
+		PMD_DRV_LOG(DEBUG, sc, "MOD_ABS indication show module is absent");
 		phy->media_type = ELINK_ETH_PHY_NOT_PRESENT;
 		/* 1. Set mod_abs to detect next module
@@ -8811,5 +8821,5 @@ static void elink_8727_handle_mod_abs(struct elink_phy *phy,
 	} else {
 		/* Module is present */
-		PMD_DRV_LOG(DEBUG, "MOD_ABS indication show module is present");
+		PMD_DRV_LOG(DEBUG, sc, "MOD_ABS indication show module is present");
 		/* First disable transmitter, and if the module is ok, the
 		 * module_detection will enable it
@@ -8842,5 +8852,5 @@ static void elink_8727_handle_mod_abs(struct elink_phy *phy,
 			elink_sfp_module_detection(phy, params);
 		} else {
-			PMD_DRV_LOG(DEBUG, "SFP+ module is not initialized");
+			PMD_DRV_LOG(DEBUG, sc, "SFP+ module is not initialized");
 		}
 
@@ -8849,5 +8859,5 @@ static void elink_8727_handle_mod_abs(struct elink_phy *phy,
 	}
 
-	PMD_DRV_LOG(DEBUG, "8727 RX_ALARM_STATUS 0x%x", rx_alarm_status);
+	PMD_DRV_LOG(DEBUG, sc, "8727 RX_ALARM_STATUS 0x%x", rx_alarm_status);
 	/* No need to check link status in case of module plugged in/out */
 }
@@ -8872,5 +8882,5 @@ static uint8_t elink_8727_read_status(struct elink_phy *phy,
 			MDIO_PMA_DEVAD, MDIO_PMA_LASI_RXSTAT, &rx_alarm_status);
 	vars->line_speed = 0;
-	PMD_DRV_LOG(DEBUG, "8727 RX_ALARM_STATUS  0x%x", rx_alarm_status);
+	PMD_DRV_LOG(DEBUG, sc, "8727 RX_ALARM_STATUS  0x%x", rx_alarm_status);
 
 	elink_sfp_mask_fault(sc, phy, MDIO_PMA_LASI_TXSTAT,
@@ -8879,5 +8889,5 @@ static uint8_t elink_8727_read_status(struct elink_phy *phy,
 	elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_STAT, &val1);
 
-	PMD_DRV_LOG(DEBUG, "8727 LASI status 0x%x", val1);
+	PMD_DRV_LOG(DEBUG, sc, "8727 LASI status 0x%x", val1);
 
 	/* Clear MSG-OUT */
@@ -8897,5 +8907,5 @@ static uint8_t elink_8727_read_status(struct elink_phy *phy,
 			if (!CHIP_IS_E1x(sc))
 				oc_port = SC_PATH(sc) + (params->port << 1);
-			PMD_DRV_LOG(DEBUG,
+			PMD_DRV_LOG(DEBUG, sc,
 				    "8727 Power fault has been detected on port %d",
 				    oc_port);
@@ -8940,8 +8950,8 @@ static uint8_t elink_8727_read_status(struct elink_phy *phy,
 
 	if (!(phy->flags & ELINK_FLAGS_SFP_NOT_APPROVED)) {
-		PMD_DRV_LOG(DEBUG, "Enabling 8727 TX laser");
+		PMD_DRV_LOG(DEBUG, sc, "Enabling 8727 TX laser");
 		elink_sfp_set_transmitter(params, phy, 1);
 	} else {
-		PMD_DRV_LOG(DEBUG, "Tx is disabled");
+		PMD_DRV_LOG(DEBUG, sc, "Tx is disabled");
 		return 0;
 	}
@@ -8957,14 +8967,14 @@ static uint8_t elink_8727_read_status(struct elink_phy *phy,
 		link_up = 1;
 		vars->line_speed = ELINK_SPEED_10000;
-		PMD_DRV_LOG(DEBUG, "port %x: External link up in 10G",
+		PMD_DRV_LOG(DEBUG, sc, "port %x: External link up in 10G",
 			    params->port);
 	} else if ((link_status & (1 << 0)) && (!(link_status & (1 << 13)))) {
 		link_up = 1;
 		vars->line_speed = ELINK_SPEED_1000;
-		PMD_DRV_LOG(DEBUG, "port %x: External link up in 1G",
+		PMD_DRV_LOG(DEBUG, sc, "port %x: External link up in 1G",
 			    params->port);
 	} else {
 		link_up = 0;
-		PMD_DRV_LOG(DEBUG, "port %x: External link is down",
+		PMD_DRV_LOG(DEBUG, sc, "port %x: External link is down",
 			    params->port);
 	}
@@ -8986,5 +8996,5 @@ static uint8_t elink_8727_read_status(struct elink_phy *phy,
 		elink_ext_phy_resolve_fc(phy, params, vars);
 		vars->duplex = DUPLEX_FULL;
-		PMD_DRV_LOG(DEBUG, "duplex = 0x%x", vars->duplex);
+		PMD_DRV_LOG(DEBUG, sc, "duplex = 0x%x", vars->duplex);
 	}
 
@@ -9058,5 +9068,5 @@ static void elink_save_848xx_spirom_version(struct elink_phy *phy,
 		}
 		if (cnt == 100) {
-			PMD_DRV_LOG(DEBUG, "Unable to read 848xx "
+			PMD_DRV_LOG(DEBUG, sc, "Unable to read 848xx "
 				    "phy fw version(1)");
 			elink_save_spirom_version(sc, port, 0, phy->ver_addr);
@@ -9075,5 +9085,5 @@ static void elink_save_848xx_spirom_version(struct elink_phy *phy,
 		}
 		if (cnt == 100) {
-			PMD_DRV_LOG(DEBUG, "Unable to read 848xx phy fw "
+			PMD_DRV_LOG(DEBUG, sc, "Unable to read 848xx phy fw "
 				    "version(2)");
 			elink_save_spirom_version(sc, port, 0, phy->ver_addr);
@@ -9188,5 +9198,5 @@ static elink_status_t elink_848xx_cmn_config_init(struct elink_phy *phy,
 		if (phy->req_duplex == DUPLEX_FULL)
 			an_1000_val |= (1 << 9);
-		PMD_DRV_LOG(DEBUG, "Advertising 1G");
+		PMD_DRV_LOG(DEBUG, sc, "Advertising 1G");
 	} else
 		an_1000_val &= ~((1 << 8) | (1 << 9));
@@ -9204,5 +9214,5 @@ static elink_status_t elink_848xx_cmn_config_init(struct elink_phy *phy,
 			autoneg_val |= (1 << 9 | 1 << 12);
 			an_10_100_val |= (1 << 8);
-			PMD_DRV_LOG(DEBUG, "Advertising 100M-FD");
+			PMD_DRV_LOG(DEBUG, sc, "Advertising 100M-FD");
 		}
 
@@ -9213,5 +9223,5 @@ static elink_status_t elink_848xx_cmn_config_init(struct elink_phy *phy,
 			autoneg_val |= (1 << 9 | 1 << 12);
 			an_10_100_val |= (1 << 7);
-			PMD_DRV_LOG(DEBUG, "Advertising 100M-HD");
+			PMD_DRV_LOG(DEBUG, sc, "Advertising 100M-HD");
 		}
 
@@ -9221,5 +9231,5 @@ static elink_status_t elink_848xx_cmn_config_init(struct elink_phy *phy,
 			an_10_100_val |= (1 << 6);
 			autoneg_val |= (1 << 9 | 1 << 12);
-			PMD_DRV_LOG(DEBUG, "Advertising 10M-FD");
+			PMD_DRV_LOG(DEBUG, sc, "Advertising 10M-FD");
 		}
 
@@ -9229,5 +9239,5 @@ static elink_status_t elink_848xx_cmn_config_init(struct elink_phy *phy,
 			an_10_100_val |= (1 << 5);
 			autoneg_val |= (1 << 9 | 1 << 12);
-			PMD_DRV_LOG(DEBUG, "Advertising 10M-HD");
+			PMD_DRV_LOG(DEBUG, sc, "Advertising 10M-HD");
 		}
 	}
@@ -9244,5 +9254,5 @@ static elink_status_t elink_848xx_cmn_config_init(struct elink_phy *phy,
 		/* The PHY needs this set even for forced link. */
 		an_10_100_val |= (1 << 8) | (1 << 7);
-		PMD_DRV_LOG(DEBUG, "Setting 100M force");
+		PMD_DRV_LOG(DEBUG, sc, "Setting 100M force");
 	}
 	if ((phy->req_line_speed == ELINK_SPEED_10) &&
@@ -9253,5 +9263,5 @@ static elink_status_t elink_848xx_cmn_config_init(struct elink_phy *phy,
 				 MDIO_AN_DEVAD, MDIO_AN_REG_8481_AUX_CTRL,
 				 (1 << 15 | 1 << 9 | 7 << 0));
-		PMD_DRV_LOG(DEBUG, "Setting 10M force");
+		PMD_DRV_LOG(DEBUG, sc, "Setting 10M force");
 	}
 
@@ -9277,5 +9287,5 @@ static elink_status_t elink_848xx_cmn_config_init(struct elink_phy *phy,
 	      PORT_HW_CFG_SPEED_CAPABILITY_D0_10G)) ||
 	    (phy->req_line_speed == ELINK_SPEED_10000)) {
-		PMD_DRV_LOG(DEBUG, "Advertising 10G");
+		PMD_DRV_LOG(DEBUG, sc, "Advertising 10G");
 		/* Restart autoneg for 10G */
 
@@ -9333,5 +9343,5 @@ static elink_status_t elink_84833_cmd_hdlr(struct elink_phy *phy,
 	}
 	if (idx >= PHY84833_CMDHDLR_WAIT) {
-		PMD_DRV_LOG(DEBUG, "FW cmd: FW not ready.");
+		PMD_DRV_LOG(DEBUG, sc, "FW cmd: FW not ready.");
 		return ELINK_STATUS_ERROR;
 	}
@@ -9355,5 +9365,5 @@ static elink_status_t elink_84833_cmd_hdlr(struct elink_phy *phy,
 	if ((idx >= PHY84833_CMDHDLR_WAIT) ||
 	    (val == PHY84833_STATUS_CMD_COMPLETE_ERROR)) {
-		PMD_DRV_LOG(DEBUG, "FW cmd failed.");
+		PMD_DRV_LOG(DEBUG, sc, "FW cmd failed.");
 		return ELINK_STATUS_ERROR;
 	}
@@ -9397,5 +9407,5 @@ static elink_status_t elink_84833_pair_swap_cfg(struct elink_phy *phy,
 				      PHY84833_CMDHDLR_MAX_ARGS);
 	if (status == ELINK_STATUS_OK) {
-		PMD_DRV_LOG(DEBUG, "Pairswap OK, val=0x%x", data[1]);
+		PMD_DRV_LOG(DEBUG, sc, "Pairswap OK, val=0x%x", data[1]);
 	}
 
@@ -9473,5 +9483,6 @@ static void elink_84833_hw_reset_phy(struct elink_phy *phy,
 				 MISC_REGISTERS_GPIO_OUTPUT_LOW);
 	DELAY(10);
-	PMD_DRV_LOG(DEBUG, "84833 hw reset on pin values 0x%x", reset_gpios);
+	PMD_DRV_LOG(DEBUG, sc,
+		    "84833 hw reset on pin values 0x%x", reset_gpios);
 }
 
@@ -9483,5 +9494,5 @@ static elink_status_t elink_8483x_disable_eee(struct elink_phy *phy,
 	uint16_t cmd_args = 0;
 
-	PMD_DRV_LOG(DEBUG, "Don't Advertise 10GBase-T EEE");
+	PMD_DRV_LOG(DEBUG, params->sc, "Don't Advertise 10GBase-T EEE");
 
 	/* Prevent Phy from working in EEE and advertising it */
@@ -9489,5 +9500,5 @@ static elink_status_t elink_8483x_disable_eee(struct elink_phy *phy,
 				  PHY84833_CMD_SET_EEE_MODE, &cmd_args, 1);
 	if (rc != ELINK_STATUS_OK) {
-		PMD_DRV_LOG(DEBUG, "EEE disable failed.");
+		PMD_DRV_LOG(DEBUG, params->sc, "EEE disable failed.");
 		return rc;
 	}
@@ -9506,5 +9517,5 @@ static elink_status_t elink_8483x_enable_eee(struct elink_phy *phy,
 				  PHY84833_CMD_SET_EEE_MODE, &cmd_args, 1);
 	if (rc != ELINK_STATUS_OK) {
-		PMD_DRV_LOG(DEBUG, "EEE enable failed.");
+		PMD_DRV_LOG(DEBUG, params->sc, "EEE enable failed.");
 		return rc;
 	}
@@ -9599,5 +9610,5 @@ static uint8_t elink_848x3_config_init(struct elink_phy *phy,
 	elink_cl45_write(sc, phy, MDIO_CTL_DEVAD,
 			 MDIO_CTL_REG_84823_MEDIA, val);
-	PMD_DRV_LOG(DEBUG, "Multi_phy config = 0x%x, Media control = 0x%x",
+	PMD_DRV_LOG(DEBUG, sc, "Multi_phy config = 0x%x, Media control = 0x%x",
 		    params->multi_phy_config, val);
 
@@ -9615,5 +9626,5 @@ static uint8_t elink_848x3_config_init(struct elink_phy *phy,
 					  PHY84833_CMDHDLR_MAX_ARGS);
 		if (rc != ELINK_STATUS_OK) {
-			PMD_DRV_LOG(DEBUG, "Cfg AutogrEEEn failed.");
+			PMD_DRV_LOG(DEBUG, sc, "Cfg AutogrEEEn failed.");
 		}
 	}
@@ -9652,5 +9663,5 @@ static uint8_t elink_848x3_config_init(struct elink_phy *phy,
 		rc = elink_eee_initial_config(params, vars, SHMEM_EEE_10G_ADV);
 		if (rc != ELINK_STATUS_OK) {
-			PMD_DRV_LOG(DEBUG, "Failed to configure EEE timers");
+			PMD_DRV_LOG(DEBUG, sc, "Failed to configure EEE timers");
 			elink_8483x_disable_eee(phy, params, vars);
 			return rc;
@@ -9665,5 +9676,5 @@ static uint8_t elink_848x3_config_init(struct elink_phy *phy,
 			rc = elink_8483x_disable_eee(phy, params, vars);
 		if (rc != ELINK_STATUS_OK) {
-			PMD_DRV_LOG(DEBUG, "Failed to set EEE advertisement");
+			PMD_DRV_LOG(DEBUG, sc, "Failed to set EEE advertisement");
 			return rc;
 		}
@@ -9697,5 +9708,5 @@ static uint8_t elink_848xx_read_status(struct elink_phy *phy,
 	elink_cl45_read(sc, phy,
 			MDIO_PMA_DEVAD, MDIO_PMA_REG_8481_PMD_SIGNAL, &val2);
-	PMD_DRV_LOG(DEBUG, "BNX2X848xx: PMD_SIGNAL 1.a811 = 0x%x", val2);
+	PMD_DRV_LOG(DEBUG, sc, "BNX2X848xx: PMD_SIGNAL 1.a811 = 0x%x", val2);
 
 	/* Check link 10G */
@@ -9719,5 +9730,6 @@ static uint8_t elink_848xx_read_status(struct elink_phy *phy,
 				&legacy_status);
 
-		PMD_DRV_LOG(DEBUG, "Legacy speed status = 0x%x", legacy_status);
+		PMD_DRV_LOG(DEBUG, sc,
+			    "Legacy speed status = 0x%x", legacy_status);
 		link_up = ((legacy_status & (1 << 11)) == (1 << 11));
 		legacy_speed = (legacy_status & (3 << 9));
@@ -9749,5 +9761,5 @@ static uint8_t elink_848xx_read_status(struct elink_phy *phy,
 				vars->duplex = DUPLEX_HALF;
 
-			PMD_DRV_LOG(DEBUG,
+			PMD_DRV_LOG(DEBUG, sc,
 				    "Link is up in %dMbps, is_duplex_full= %d",
 				    vars->line_speed,
@@ -9771,5 +9783,5 @@ static uint8_t elink_848xx_read_status(struct elink_phy *phy,
 	}
 	if (link_up) {
-		PMD_DRV_LOG(DEBUG, "BNX2X848x3: link speed is %d",
+		PMD_DRV_LOG(DEBUG, sc, "BNX2X848x3: link speed is %d",
 			    vars->line_speed);
 		elink_ext_phy_resolve_fc(phy, params, vars);
@@ -9888,5 +9900,5 @@ static void elink_848xx_set_link_led(struct elink_phy *phy,
 	case ELINK_LED_MODE_OFF:
 
-		PMD_DRV_LOG(DEBUG, "Port 0x%x: LED MODE OFF", port);
+		PMD_DRV_LOG(DEBUG, sc, "Port 0x%x: LED MODE OFF", port);
 
 		if ((params->hw_led_mode << SHARED_HW_CFG_LED_MODE_SHIFT) ==
@@ -9918,5 +9930,6 @@ static void elink_848xx_set_link_led(struct elink_phy *phy,
 	case ELINK_LED_MODE_FRONT_PANEL_OFF:
 
-		PMD_DRV_LOG(DEBUG, "Port 0x%x: LED MODE FRONT PANEL OFF", port);
+		PMD_DRV_LOG(DEBUG, sc,
+			    "Port 0x%x: LED MODE FRONT PANEL OFF", port);
 
 		if ((params->hw_led_mode << SHARED_HW_CFG_LED_MODE_SHIFT) ==
@@ -9968,5 +9981,5 @@ static void elink_848xx_set_link_led(struct elink_phy *phy,
 	case ELINK_LED_MODE_ON:
 
-		PMD_DRV_LOG(DEBUG, "Port 0x%x: LED MODE ON", port);
+		PMD_DRV_LOG(DEBUG, sc, "Port 0x%x: LED MODE ON", port);
 
 		if ((params->hw_led_mode << SHARED_HW_CFG_LED_MODE_SHIFT) ==
@@ -10028,5 +10041,5 @@ static void elink_848xx_set_link_led(struct elink_phy *phy,
 	case ELINK_LED_MODE_OPER:
 
-		PMD_DRV_LOG(DEBUG, "Port 0x%x: LED MODE OPER", port);
+		PMD_DRV_LOG(DEBUG, sc, "Port 0x%x: LED MODE OPER", port);
 
 		if ((params->hw_led_mode << SHARED_HW_CFG_LED_MODE_SHIFT) ==
@@ -10043,5 +10056,5 @@ static void elink_848xx_set_link_led(struct elink_phy *phy,
 			      MDIO_PMA_REG_8481_LINK_SIGNAL_LED4_ENABLE_SHIFT))
 			{
-				PMD_DRV_LOG(DEBUG, "Setting LINK_SIGNAL");
+				PMD_DRV_LOG(DEBUG, sc, "Setting LINK_SIGNAL");
 				elink_cl45_write(sc, phy,
 						 MDIO_PMA_DEVAD,
@@ -10156,5 +10169,5 @@ static uint8_t elink_54618se_config_init(struct elink_phy *phy,
 	uint32_t cfg_pin;
 
-	PMD_DRV_LOG(DEBUG, "54618SE cfg init");
+	PMD_DRV_LOG(DEBUG, sc, "54618SE cfg init");
 	DELAY(1000 * 1);
 
@@ -10229,5 +10242,5 @@ static uint8_t elink_54618se_config_init(struct elink_phy *phy,
 		if (phy->req_duplex == DUPLEX_FULL)
 			an_1000_val |= (1 << 9);
-		PMD_DRV_LOG(DEBUG, "Advertising 1G");
+		PMD_DRV_LOG(DEBUG, sc, "Advertising 1G");
 	} else
 		an_1000_val &= ~((1 << 8) | (1 << 9));
@@ -10242,5 +10255,5 @@ static uint8_t elink_54618se_config_init(struct elink_phy *phy,
 			an_10_100_val |= (1 << 5);
 			autoneg_val |= (1 << 9 | 1 << 12);
-			PMD_DRV_LOG(DEBUG, "Advertising 10M-HD");
+			PMD_DRV_LOG(DEBUG, sc, "Advertising 10M-HD");
 		}
 		if (phy->speed_cap_mask &
@@ -10248,5 +10261,5 @@ static uint8_t elink_54618se_config_init(struct elink_phy *phy,
 			an_10_100_val |= (1 << 6);
 			autoneg_val |= (1 << 9 | 1 << 12);
-			PMD_DRV_LOG(DEBUG, "Advertising 10M-FD");
+			PMD_DRV_LOG(DEBUG, sc, "Advertising 10M-FD");
 		}
 		if (phy->speed_cap_mask &
@@ -10254,5 +10267,5 @@ static uint8_t elink_54618se_config_init(struct elink_phy *phy,
 			an_10_100_val |= (1 << 7);
 			autoneg_val |= (1 << 9 | 1 << 12);
-			PMD_DRV_LOG(DEBUG, "Advertising 100M-HD");
+			PMD_DRV_LOG(DEBUG, sc, "Advertising 100M-HD");
 		}
 		if (phy->speed_cap_mask &
@@ -10260,5 +10273,5 @@ static uint8_t elink_54618se_config_init(struct elink_phy *phy,
 			an_10_100_val |= (1 << 8);
 			autoneg_val |= (1 << 9 | 1 << 12);
-			PMD_DRV_LOG(DEBUG, "Advertising 100M-FD");
+			PMD_DRV_LOG(DEBUG, sc, "Advertising 100M-FD");
 		}
 	}
@@ -10269,10 +10282,10 @@ static uint8_t elink_54618se_config_init(struct elink_phy *phy,
 		/* Enabled AUTO-MDIX when autoneg is disabled */
 		elink_cl22_write(sc, phy, 0x18, (1 << 15 | 1 << 9 | 7 << 0));
-		PMD_DRV_LOG(DEBUG, "Setting 100M force");
+		PMD_DRV_LOG(DEBUG, sc, "Setting 100M force");
 	}
 	if (phy->req_line_speed == ELINK_SPEED_10) {
 		/* Enabled AUTO-MDIX when autoneg is disabled */
 		elink_cl22_write(sc, phy, 0x18, (1 << 15 | 1 << 9 | 7 << 0));
-		PMD_DRV_LOG(DEBUG, "Setting 10M force");
+		PMD_DRV_LOG(DEBUG, sc, "Setting 10M force");
 	}
 
@@ -10289,5 +10302,5 @@ static uint8_t elink_54618se_config_init(struct elink_phy *phy,
 		rc = elink_eee_initial_config(params, vars, SHMEM_EEE_1G_ADV);
 		if (rc != ELINK_STATUS_OK) {
-			PMD_DRV_LOG(DEBUG, "Failed to configure EEE timers");
+			PMD_DRV_LOG(DEBUG, sc, "Failed to configure EEE timers");
 			elink_eee_disable(phy, params, vars);
 		} else if ((params->eee_mode & ELINK_EEE_MODE_ADV_LPI) &&
@@ -10303,5 +10316,5 @@ static uint8_t elink_54618se_config_init(struct elink_phy *phy,
 					    SHMEM_EEE_1G_ADV);
 		} else {
-			PMD_DRV_LOG(DEBUG, "Don't Advertise 1GBase-T EEE");
+			PMD_DRV_LOG(DEBUG, sc, "Don't Advertise 1GBase-T EEE");
 			elink_eee_disable(phy, params, vars);
 		}
@@ -10315,8 +10328,8 @@ static uint8_t elink_54618se_config_init(struct elink_phy *phy,
 			    ELINK_FEATURE_CONFIG_AUTOGREEEN_ENABLED) {
 				temp = 6;
-				PMD_DRV_LOG(DEBUG, "Enabling Auto-GrEEEn");
+				PMD_DRV_LOG(DEBUG, sc, "Enabling Auto-GrEEEn");
 			} else {
 				temp = 0;
-				PMD_DRV_LOG(DEBUG, "Don't Adv. EEE");
+				PMD_DRV_LOG(DEBUG, sc, "Don't Adv. EEE");
 			}
 			elink_cl45_write(sc, phy, MDIO_AN_DEVAD,
@@ -10346,5 +10359,5 @@ static void elink_5461x_set_link_led(struct elink_phy *phy,
 	temp &= 0xff00;
 
-	PMD_DRV_LOG(DEBUG, "54618x set link led (mode=%x)", mode);
+	PMD_DRV_LOG(DEBUG, sc, "54618x set link led (mode=%x)", mode);
 	switch (mode) {
 	case ELINK_LED_MODE_FRONT_PANEL_OFF:
@@ -10404,5 +10417,5 @@ static uint8_t elink_54618se_read_status(struct elink_phy *phy,
 	/* Get speed operation status */
 	elink_cl22_read(sc, phy, MDIO_REG_GPHY_AUX_STATUS, &legacy_status);
-	PMD_DRV_LOG(DEBUG, "54618SE read_status: 0x%x", legacy_status);
+	PMD_DRV_LOG(DEBUG, sc, "54618SE read_status: 0x%x", legacy_status);
 
 	/* Read status to clear the PHY interrupt. */
@@ -10436,5 +10449,5 @@ static uint8_t elink_54618se_read_status(struct elink_phy *phy,
 			vars->line_speed = 0;
 
-		PMD_DRV_LOG(DEBUG,
+		PMD_DRV_LOG(DEBUG, sc,
 			    "Link is up in %dMbps, is_duplex_full= %d",
 			    vars->line_speed, (vars->duplex == DUPLEX_FULL));
@@ -10450,5 +10463,5 @@ static uint8_t elink_54618se_read_status(struct elink_phy *phy,
 			    LINK_STATUS_PARALLEL_DETECTION_USED;
 
-		PMD_DRV_LOG(DEBUG, "BNX2X54618SE: link speed is %d",
+		PMD_DRV_LOG(DEBUG, sc, "BNX2X54618SE: link speed is %d",
 			    vars->line_speed);
 
@@ -10498,5 +10511,5 @@ static void elink_54618se_config_loopback(struct elink_phy *phy,
 	uint32_t umac_base = params->port ? GRCBASE_UMAC1 : GRCBASE_UMAC0;
 
-	PMD_DRV_LOG(DEBUG, "2PMA/PMD ext_phy_loopback: 54618se");
+	PMD_DRV_LOG(DEBUG, sc, "2PMA/PMD ext_phy_loopback: 54618se");
 
 	/* Enable master/slave manual mmode and set to master */
@@ -10549,5 +10562,5 @@ static uint8_t elink_7101_config_init(struct elink_phy *phy,
 	uint16_t fw_ver1, fw_ver2, val;
 	struct bnx2x_softc *sc = params->sc;
-	PMD_DRV_LOG(DEBUG, "Setting the SFX7101 LASI indication");
+	PMD_DRV_LOG(DEBUG, sc, "Setting the SFX7101 LASI indication");
 
 	/* Restore normal power mode */
@@ -10559,5 +10572,5 @@ static uint8_t elink_7101_config_init(struct elink_phy *phy,
 
 	elink_cl45_write(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_CTRL, 0x1);
-	PMD_DRV_LOG(DEBUG, "Setting the SFX7101 LED to blink on traffic");
+	PMD_DRV_LOG(DEBUG, sc, "Setting the SFX7101 LED to blink on traffic");
 	elink_cl45_write(sc, phy,
 			 MDIO_PMA_DEVAD, MDIO_PMA_REG_7107_LED_CNTL, (1 << 3));
@@ -10590,8 +10603,8 @@ static uint8_t elink_7101_read_status(struct elink_phy *phy,
 	elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_STAT, &val2);
 	elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_LASI_STAT, &val1);
-	PMD_DRV_LOG(DEBUG, "10G-base-T LASI status 0x%x->0x%x", val2, val1);
+	PMD_DRV_LOG(DEBUG, sc, "10G-base-T LASI status 0x%x->0x%x", val2, val1);
 	elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_STATUS, &val2);
 	elink_cl45_read(sc, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_STATUS, &val1);
-	PMD_DRV_LOG(DEBUG, "10G-base-T PMA status 0x%x->0x%x", val2, val1);
+	PMD_DRV_LOG(DEBUG, sc, "10G-base-T PMA status 0x%x->0x%x", val2, val1);
 	link_up = ((val1 & 4) == 4);
 	/* If link is up print the AN outcome of the SFX7101 PHY */
@@ -10602,5 +10615,5 @@ static uint8_t elink_7101_read_status(struct elink_phy *phy,
 		vars->line_speed = ELINK_SPEED_10000;
 		vars->duplex = DUPLEX_FULL;
-		PMD_DRV_LOG(DEBUG, "SFX7101 AN status 0x%x->Master=%x",
+		PMD_DRV_LOG(DEBUG, sc, "SFX7101 AN status 0x%x->Master=%x",
 			    val2, (val2 & (1 << 14)));
 		elink_ext_phy_10G_an_resolve(sc, phy, vars);
@@ -11209,5 +11222,5 @@ static uint32_t elink_get_ext_phy_config(struct bnx2x_softc *sc,
 		break;
 	default:
-		PMD_DRV_LOG(DEBUG, "Invalid phy_index %d", phy_index);
+		PMD_DRV_LOG(DEBUG, sc, "Invalid phy_index %d", phy_index);
 		return ELINK_STATUS_ERROR;
 	}
@@ -11232,5 +11245,5 @@ static elink_status_t elink_populate_int_phy(struct bnx2x_softc *sc,
 	    ((REG_RD(sc, MISC_REG_CHIP_REV) & 0xf) << 12);
 
-	PMD_DRV_LOG(DEBUG, ":chip_id = 0x%x", chip_id);
+	PMD_DRV_LOG(DEBUG, sc, ":chip_id = 0x%x", chip_id);
 	if (USES_WARPCORE(sc)) {
 		uint32_t serdes_net_if;
@@ -11309,5 +11322,5 @@ static elink_status_t elink_populate_int_phy(struct bnx2x_softc *sc,
 			break;
 		default:
-			PMD_DRV_LOG(DEBUG, "Unknown WC interface type 0x%x",
+			PMD_DRV_LOG(DEBUG, sc, "Unknown WC interface type 0x%x",
 				    serdes_net_if);
 			break;
@@ -11337,5 +11350,5 @@ static elink_status_t elink_populate_int_phy(struct bnx2x_softc *sc,
 			break;
 		default:
-			PMD_DRV_LOG(DEBUG, "Invalid switch_cfg");
+			PMD_DRV_LOG(DEBUG, sc, "Invalid switch_cfg");
 			return ELINK_STATUS_ERROR;
 		}
@@ -11350,5 +11363,5 @@ static elink_status_t elink_populate_int_phy(struct bnx2x_softc *sc,
 		phy->def_md_devad = ELINK_DEFAULT_PHY_DEV_ADDR;
 
-	PMD_DRV_LOG(DEBUG, "Internal phy port=%d, addr=0x%x, mdio_ctl=0x%x",
+	PMD_DRV_LOG(DEBUG, sc, "Internal phy port=%d, addr=0x%x, mdio_ctl=0x%x",
 		    port, phy->addr, phy->mdio_ctrl);
 
@@ -11477,7 +11490,7 @@ static elink_status_t elink_populate_ext_phy(struct bnx2x_softc *sc,
 	}
 
-	PMD_DRV_LOG(DEBUG, "phy_type 0x%x port %d found in index %d",
+	PMD_DRV_LOG(DEBUG, sc, "phy_type 0x%x port %d found in index %d",
 		    phy_type, port, phy_index);
-	PMD_DRV_LOG(DEBUG, "             addr=0x%x, mdio_ctl=0x%x",
+	PMD_DRV_LOG(DEBUG, sc, "             addr=0x%x, mdio_ctl=0x%x",
 		    phy->addr, phy->mdio_ctrl);
 	return ELINK_STATUS_OK;
@@ -11528,5 +11541,5 @@ static void elink_phy_def_cfg(struct elink_params *params,
 	}
 
-	PMD_DRV_LOG(DEBUG,
+	PMD_DRV_LOG(DEBUG, sc,
 		    "Default config phy idx %x cfg 0x%x speed_cap_mask 0x%x",
 		    phy_index, link_config, phy->speed_cap_mask);
@@ -11619,5 +11632,5 @@ elink_status_t elink_phy_probe(struct elink_params * params)
 	struct elink_phy *phy;
 	params->num_phys = 0;
-	PMD_DRV_LOG(DEBUG, "Begin phy probe");
+	PMD_DRV_LOG(DEBUG, sc, "Begin phy probe");
 
 	phy_config_swapped = params->multi_phy_config &
@@ -11632,5 +11645,5 @@ elink_status_t elink_phy_probe(struct elink_params * params)
 				actual_phy_idx = ELINK_EXT_PHY1;
 		}
-		PMD_DRV_LOG(DEBUG, "phy_config_swapped %x, phy_index %x,"
+		PMD_DRV_LOG(DEBUG, sc, "phy_config_swapped %x, phy_index %x,"
 			    " actual_phy_idx %x", phy_config_swapped,
 			    phy_index, actual_phy_idx);
@@ -11640,5 +11653,5 @@ elink_status_t elink_phy_probe(struct elink_params * params)
 				       phy) != ELINK_STATUS_OK) {
 			params->num_phys = 0;
-			PMD_DRV_LOG(DEBUG, "phy probe failed in phy index %d",
+			PMD_DRV_LOG(DEBUG, sc, "phy probe failed in phy index %d",
 				    phy_index);
 			for (phy_index = ELINK_INT_PHY;
@@ -11681,5 +11694,6 @@ elink_status_t elink_phy_probe(struct elink_params * params)
 	}
 
-	PMD_DRV_LOG(DEBUG, "End phy probe. #phys found %x", params->num_phys);
+	PMD_DRV_LOG(DEBUG, sc,
+		    "End phy probe. #phys found %x", params->num_phys);
 	return ELINK_STATUS_OK;
 }
@@ -11851,5 +11865,5 @@ static elink_status_t elink_avoid_link_flap(struct elink_params *params,
 		struct elink_phy *phy = &params->phy[phy_idx];
 		if (phy->phy_specific_func) {
-			PMD_DRV_LOG(DEBUG, "Calling PHY specific func");
+			PMD_DRV_LOG(DEBUG, sc, "Calling PHY specific func");
 			phy->phy_specific_func(phy, params, ELINK_PHY_INIT);
 		}
@@ -11971,10 +11985,11 @@ elink_status_t elink_phy_init(struct elink_params *params,
 	int lfa_status;
 	struct bnx2x_softc *sc = params->sc;
-	PMD_DRV_LOG(DEBUG, "Phy Initialization started");
-	PMD_DRV_LOG(DEBUG, "(1) req_speed %d, req_flowctrl %d",
+	PMD_DRV_LOG(DEBUG, sc, "Phy Initialization started");
+	PMD_DRV_LOG(DEBUG, sc, "(1) req_speed %d, req_flowctrl %d",
 		    params->req_line_speed[0], params->req_flow_ctrl[0]);
-	PMD_DRV_LOG(DEBUG, "(2) req_speed %d, req_flowctrl %d",
+	PMD_DRV_LOG(DEBUG, sc, "(2) req_speed %d, req_flowctrl %d",
 		    params->req_line_speed[1], params->req_flow_ctrl[1]);
-	PMD_DRV_LOG(DEBUG, "req_adv_flow_ctrl 0x%x", params->req_fc_auto_adv);
+	PMD_DRV_LOG(DEBUG, sc,
+		    "req_adv_flow_ctrl 0x%x", params->req_fc_auto_adv);
 	vars->link_status = 0;
 	vars->phy_link_up = 0;
@@ -11993,9 +12008,11 @@ elink_status_t elink_phy_init(struct elink_params *params,
 
 	if (lfa_status == 0) {
-		PMD_DRV_LOG(DEBUG, "Link Flap Avoidance in progress");
+		PMD_DRV_LOG(DEBUG, sc,
+			    "Link Flap Avoidance in progress");
 		return elink_avoid_link_flap(params, vars);
 	}
 
-	PMD_DRV_LOG(DEBUG, "Cannot avoid link flap lfa_sta=0x%x", lfa_status);
+	PMD_DRV_LOG(DEBUG, sc,
+		    "Cannot avoid link flap lfa_sta=0x%x", lfa_status);
 	elink_cannot_avoid_link_flap(params, vars, lfa_status);
 
@@ -12013,10 +12030,10 @@ elink_status_t elink_phy_init(struct elink_params *params,
 
 	if ((params->num_phys == 0) && !CHIP_REV_IS_SLOW(sc)) {
-		PMD_DRV_LOG(DEBUG, "No phy found for initialization !!");
+		PMD_DRV_LOG(DEBUG, sc, "No phy found for initialization !!");
 		return ELINK_STATUS_ERROR;
 	}
 	set_phy_vars(params, vars);
 
-	PMD_DRV_LOG(DEBUG, "Num of phys on board: %d", params->num_phys);
+	PMD_DRV_LOG(DEBUG, sc, "Num of phys on board: %d", params->num_phys);
 
 	switch (params->loopback_mode) {
@@ -12061,5 +12078,5 @@ static elink_status_t elink_link_reset(struct elink_params *params,
 	struct bnx2x_softc *sc = params->sc;
 	uint8_t phy_index, port = params->port, clear_latch_ind = 0;
-	PMD_DRV_LOG(DEBUG, "Resetting the link of port %d", port);
+	PMD_DRV_LOG(DEBUG, sc, "Resetting the link of port %d", port);
 	/* Disable attentions */
 	vars->link_status = 0;
@@ -12239,5 +12256,5 @@ static elink_status_t elink_8073_common_init_phy(struct bnx2x_softc *sc,
 				       port_of_path, &phy[port]) !=
 		    ELINK_STATUS_OK) {
-			PMD_DRV_LOG(DEBUG, "populate_phy failed");
+			PMD_DRV_LOG(DEBUG, sc, "populate_phy failed");
 			return ELINK_STATUS_ERROR;
 		}
@@ -12279,5 +12296,5 @@ static elink_status_t elink_8073_common_init_phy(struct bnx2x_softc *sc,
 			port_of_path = 0;
 
-		PMD_DRV_LOG(DEBUG, "Loading spirom for phy address 0x%x",
+		PMD_DRV_LOG(DEBUG, sc, "Loading spirom for phy address 0x%x",
 			    phy_blk[port]->addr);
 		if (elink_8073_8727_external_rom_boot(sc, phy_blk[port],
@@ -12363,5 +12380,5 @@ static elink_status_t elink_8726_common_init_phy(struct bnx2x_softc *sc,
 		if (elink_populate_phy(sc, phy_index, shmem_base, shmem2_base,
 				       port, &phy) != ELINK_STATUS_OK) {
-			PMD_DRV_LOG(DEBUG, "populate phy failed");
+			PMD_DRV_LOG(DEBUG, sc, "populate phy failed");
 			return ELINK_STATUS_ERROR;
 		}
@@ -12483,5 +12500,5 @@ static elink_status_t elink_8727_common_init_phy(struct bnx2x_softc *sc,
 				       port_of_path, &phy[port]) !=
 		    ELINK_STATUS_OK) {
-			PMD_DRV_LOG(DEBUG, "populate phy failed");
+			PMD_DRV_LOG(DEBUG, sc, "populate phy failed");
 			return ELINK_STATUS_ERROR;
 		}
@@ -12514,5 +12531,5 @@ static elink_status_t elink_8727_common_init_phy(struct bnx2x_softc *sc,
 		else
 			port_of_path = 0;
-		PMD_DRV_LOG(DEBUG, "Loading spirom for phy address 0x%x",
+		PMD_DRV_LOG(DEBUG, sc, "Loading spirom for phy address 0x%x",
 			    phy_blk[port]->addr);
 		if (elink_8073_8727_external_rom_boot(sc, phy_blk[port],
@@ -12541,5 +12558,6 @@ static elink_status_t elink_84833_common_init_phy(struct bnx2x_softc *sc,
 	elink_cb_gpio_mult_write(sc, reset_gpios,
 				 MISC_REGISTERS_GPIO_OUTPUT_HIGH);
-	PMD_DRV_LOG(DEBUG, "84833 reset pulse on pin values 0x%x", reset_gpios);
+	PMD_DRV_LOG(DEBUG, sc,
+		    "84833 reset pulse on pin values 0x%x", reset_gpios);
 	return ELINK_STATUS_OK;
 }
@@ -12589,5 +12607,5 @@ static elink_status_t elink_ext_phy_common_init(struct bnx2x_softc *sc,
 		break;
 	default:
-		PMD_DRV_LOG(DEBUG,
+		PMD_DRV_LOG(DEBUG, sc,
 			    "ext_phy 0x%x common init not required",
 			    ext_phy_type);
@@ -12615,5 +12633,5 @@ elink_status_t elink_common_init_phy(struct bnx2x_softc * sc,
 	elink_set_mdio_clk(sc, GRCBASE_EMAC0);
 	elink_set_mdio_clk(sc, GRCBASE_EMAC1);
-	PMD_DRV_LOG(DEBUG, "Begin common phy init");
+	PMD_DRV_LOG(DEBUG, sc, "Begin common phy init");
 	if (CHIP_IS_E3(sc)) {
 		/* Enable EPIO */
@@ -12626,5 +12644,5 @@ elink_status_t elink_common_init_phy(struct bnx2x_softc * sc,
 				  port_mb[PORT_0].ext_phy_fw_version));
 	if (phy_ver) {
-		PMD_DRV_LOG(DEBUG, "Not doing common init; phy ver is 0x%x",
+		PMD_DRV_LOG(DEBUG, sc, "Not doing common init; phy ver is 0x%x",
 			    phy_ver);
 		return ELINK_STATUS_OK;
@@ -12698,13 +12716,13 @@ static uint8_t elink_analyze_link_error(struct elink_params *params,
 	switch (phy_flag) {
 	case PHY_HALF_OPEN_CONN_FLAG:
-		PMD_DRV_LOG(DEBUG, "Analyze Remote Fault");
+		PMD_DRV_LOG(DEBUG, sc, "Analyze Remote Fault");
 		break;
 	case PHY_SFP_TX_FAULT_FLAG:
-		PMD_DRV_LOG(DEBUG, "Analyze TX Fault");
+		PMD_DRV_LOG(DEBUG, sc, "Analyze TX Fault");
 		break;
 	default:
-		PMD_DRV_LOG(DEBUG, "Analyze UNKNOWN");
+		PMD_DRV_LOG(DEBUG, sc, "Analyze UNKNOWN");
 	}
-	PMD_DRV_LOG(DEBUG, "Link changed:[%x %x]->%x", vars->link_up,
+	PMD_DRV_LOG(DEBUG, sc, "Link changed:[%x %x]->%x", vars->link_up,
 		    old_status, status);
 
@@ -12832,5 +12850,5 @@ static void elink_sfp_tx_fault_detection(struct elink_phy *phy,
 
 	if (elink_get_cfg_pin(sc, cfg_pin, &value)) {
-		PMD_DRV_LOG(DEBUG, "Failed to read pin 0x%02x", cfg_pin);
+		PMD_DRV_LOG(DEBUG, sc, "Failed to read pin 0x%02x", cfg_pin);
 		return;
 	}
@@ -12854,5 +12872,5 @@ static void elink_sfp_tx_fault_detection(struct elink_phy *phy,
 		/* If module is unapproved, led should be on regardless */
 		if (!(phy->flags & ELINK_FLAGS_SFP_NOT_APPROVED)) {
-			PMD_DRV_LOG(DEBUG, "Change TX_Fault LED: ->%x",
+			PMD_DRV_LOG(DEBUG, sc, "Change TX_Fault LED: ->%x",
 				    led_mode);
 			elink_set_e3_module_fault_led(params, led_mode);
@@ -12864,5 +12882,5 @@ static void elink_kr2_recovery(struct elink_params *params,
 			       struct elink_vars *vars, struct elink_phy *phy)
 {
-	PMD_DRV_LOG(DEBUG, "KR2 recovery");
+	PMD_DRV_LOG(DEBUG, params->sc, "KR2 recovery");
 
 	elink_warpcore_enable_AN_KR2(phy, params, vars);
@@ -12891,5 +12909,5 @@ static void elink_check_kr2_wa(struct elink_params *params,
 		if (!(vars->link_attr_sync & LINK_ATTR_SYNC_KR2_ENABLE)) {
 			elink_kr2_recovery(params, vars, phy);
-			PMD_DRV_LOG(DEBUG, "No sigdet");
+			PMD_DRV_LOG(DEBUG, sc, "No sigdet");
 		}
 		return;
@@ -12909,5 +12927,5 @@ static void elink_check_kr2_wa(struct elink_params *params,
 		if (!(vars->link_attr_sync & LINK_ATTR_SYNC_KR2_ENABLE)) {
 			elink_kr2_recovery(params, vars, phy);
-			PMD_DRV_LOG(DEBUG, "No BP");
+			PMD_DRV_LOG(DEBUG, sc, "No BP");
 		}
 		return;
@@ -12925,5 +12943,5 @@ static void elink_check_kr2_wa(struct elink_params *params,
 	if (!(vars->link_attr_sync & LINK_ATTR_SYNC_KR2_ENABLE)) {
 		if (!not_kr2_device) {
-			PMD_DRV_LOG(DEBUG, "BP=0x%x, NP=0x%x", base_page,
+			PMD_DRV_LOG(DEBUG, sc, "BP=0x%x, NP=0x%x", base_page,
 				    next_page);
 			elink_kr2_recovery(params, vars, phy);
@@ -12934,5 +12952,6 @@ static void elink_check_kr2_wa(struct elink_params *params,
 	if (not_kr2_device) {
 		/* Disable KR2 on both lanes */
-		PMD_DRV_LOG(DEBUG, "BP=0x%x, NP=0x%x", base_page, next_page);
+		PMD_DRV_LOG(DEBUG, sc,
+			    "BP=0x%x, NP=0x%x", base_page, next_page);
 		elink_disable_kr2(params, vars, phy);
 		/* Restart AN on leading lane */
@@ -12951,5 +12970,5 @@ void elink_period_func(struct elink_params *params, struct elink_vars *vars)
 			if (elink_check_half_open_conn(params, vars, 1) !=
 			    ELINK_STATUS_OK) {
-				PMD_DRV_LOG(DEBUG, "Fault detection failed");
+				PMD_DRV_LOG(DEBUG, sc, "Fault detection failed");
 			}
 			break;
@@ -12997,5 +13016,5 @@ uint8_t elink_fan_failure_det_req(struct bnx2x_softc *sc,
 				       port, &phy)
 		    != ELINK_STATUS_OK) {
-			PMD_DRV_LOG(DEBUG, "populate phy failed");
+			PMD_DRV_LOG(DEBUG, sc, "populate phy failed");
 			return 0;
 		}
@@ -13047,5 +13066,5 @@ void elink_init_mod_abs_int(struct bnx2x_softc *sc, struct elink_vars *vars,
 					       shmem2_base, port, &phy)
 			    != ELINK_STATUS_OK) {
-				PMD_DRV_LOG(DEBUG, "populate phy failed");
+				PMD_DRV_LOG(DEBUG, sc, "populate phy failed");
 				return;
 			}
@@ -13077,5 +13096,5 @@ void elink_init_mod_abs_int(struct bnx2x_softc *sc, struct elink_vars *vars,
 	REG_WR(sc, sync_offset, vars->aeu_int_mask);
 
-	PMD_DRV_LOG(DEBUG, "Setting MOD_ABS (GPIO%d_P%d) AEU to 0x%x",
+	PMD_DRV_LOG(DEBUG, sc, "Setting MOD_ABS (GPIO%d_P%d) AEU to 0x%x",
 		    gpio_num, gpio_port, vars->aeu_int_mask);
 
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.682924121 +0000
+++ 0028-net-bnx2x-fix-logging-to-include-device-name.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,12 +1,13 @@
-From ba7eeb035a5f442414f9dca6c12a9105a16576aa Mon Sep 17 00:00:00 2001
+From e5497977a7de057ac6404145d9304c3651e69933 Mon Sep 17 00:00:00 2001
 From: Rasesh Mody <rasesh.mody@cavium.com>
 Date: Sat, 29 Sep 2018 05:42:29 +0000
 Subject: [PATCH] net/bnx2x: fix logging to include device name
 
+[ upstream commit ba7eeb035a5f442414f9dca6c12a9105a16576aa ]
+
 Fix PMD logging scheme to include device name in the messages printed.
 
 Fixes: 540a211084a7 ("bnx2x: driver core")
-Cc: stable@dpdk.org
 
 Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
 ---

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

* [dpdk-stable] patch 'net/bnx2x: fix to disable further interrupts' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (26 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnx2x: fix logging to include device name' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnx2x: fix call to link handling periodic function' " Kevin Traynor
                   ` (44 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Rasesh Mody; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 2cd6a93207efa9f6142d722415abfb6b737da523 Mon Sep 17 00:00:00 2001
From: Rasesh Mody <rasesh.mody@cavium.com>
Date: Sat, 29 Sep 2018 05:42:39 +0000
Subject: [PATCH] net/bnx2x: fix to disable further interrupts

[ upstream commit 29822ca5cce2613e6de5b0972fc340e856f201c5 ]

Fix to disable further fastpath/slowpath interrupts. These will be
enabled again by their respective handlers

Fixes: 540a211084a7 ("bnx2x: driver core")

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

diff --git a/drivers/net/bnx2x/bnx2x.c b/drivers/net/bnx2x/bnx2x.c
index 93f8586b5..0225bea9a 100644
--- a/drivers/net/bnx2x/bnx2x.c
+++ b/drivers/net/bnx2x/bnx2x.c
@@ -4554,4 +4554,7 @@ int bnx2x_intr_legacy(struct bnx2x_softc *sc, int scan_fp)
 		mask = (0x2 << (fp->index + CNIC_SUPPORT(sc)));
 		if (status & mask) {
+		/* acknowledge and disable further fastpath interrupts */
+			bnx2x_ack_sb(sc, fp->igu_sb_id, USTORM_ID,
+				     0, IGU_INT_DISABLE, 0);
 			bnx2x_handle_fp_tq(fp, scan_fp);
 			status &= ~mask;
@@ -4560,4 +4563,7 @@ int bnx2x_intr_legacy(struct bnx2x_softc *sc, int scan_fp)
 
 	if (unlikely(status & 0x1)) {
+		/* acknowledge and disable further slowpath interrupts */
+		bnx2x_ack_sb(sc, sc->igu_dsb_id, USTORM_ID,
+			     0, IGU_INT_DISABLE, 0);
 		rc = bnx2x_handle_sp_tq(sc);
 		status &= ~0x1;
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.742059661 +0000
+++ 0029-net-bnx2x-fix-to-disable-further-interrupts.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,13 +1,14 @@
-From 29822ca5cce2613e6de5b0972fc340e856f201c5 Mon Sep 17 00:00:00 2001
+From 2cd6a93207efa9f6142d722415abfb6b737da523 Mon Sep 17 00:00:00 2001
 From: Rasesh Mody <rasesh.mody@cavium.com>
 Date: Sat, 29 Sep 2018 05:42:39 +0000
 Subject: [PATCH] net/bnx2x: fix to disable further interrupts
 
+[ upstream commit 29822ca5cce2613e6de5b0972fc340e856f201c5 ]
+
 Fix to disable further fastpath/slowpath interrupts. These will be
 enabled again by their respective handlers
 
 Fixes: 540a211084a7 ("bnx2x: driver core")
-Cc: stable@dpdk.org
 
 Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
 ---

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

* [dpdk-stable] patch 'net/bnx2x: fix call to link handling periodic function' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (27 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnx2x: fix to disable further interrupts' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnx2x: fix to add PHY lock' " Kevin Traynor
                   ` (43 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Rasesh Mody; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 655b9c874a432c723ccd22f7239f5f2e8dd2cac2 Mon Sep 17 00:00:00 2001
From: Rasesh Mody <rasesh.mody@cavium.com>
Date: Sat, 29 Sep 2018 05:42:40 +0000
Subject: [PATCH] net/bnx2x: fix call to link handling periodic function

[ upstream commit 0f6ebeee2402441b20e45ea27f0ff2a4fc2c165f ]

If link handling periodic function is allowed to be called in interrupt
context, the periodic function can get called too frequently and exhaust
the retry credits to check link status.

This change makes sure link handling periodic function is not called in
interrupt context.

Fixes: 540a211084a7 ("bnx2x: driver core")

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

diff --git a/drivers/net/bnx2x/bnx2x_ethdev.c b/drivers/net/bnx2x/bnx2x_ethdev.c
index ae2e60a06..0057843b5 100644
--- a/drivers/net/bnx2x/bnx2x_ethdev.c
+++ b/drivers/net/bnx2x/bnx2x_ethdev.c
@@ -132,5 +132,7 @@ bnx2x_interrupt_handler(void *param)
 	PMD_DEBUG_PERIODIC_LOG(INFO, sc, "Interrupt handled");
 
+	atomic_store_rel_long(&sc->periodic_flags, PERIODIC_STOP);
 	bnx2x_interrupt_action(dev);
+	atomic_store_rel_long(&sc->periodic_flags, PERIODIC_GO);
 	rte_intr_enable(&sc->pci_dev->intr_handle);
 }
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.775981117 +0000
+++ 0030-net-bnx2x-fix-call-to-link-handling-periodic-functio.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,8 +1,10 @@
-From 0f6ebeee2402441b20e45ea27f0ff2a4fc2c165f Mon Sep 17 00:00:00 2001
+From 655b9c874a432c723ccd22f7239f5f2e8dd2cac2 Mon Sep 17 00:00:00 2001
 From: Rasesh Mody <rasesh.mody@cavium.com>
 Date: Sat, 29 Sep 2018 05:42:40 +0000
 Subject: [PATCH] net/bnx2x: fix call to link handling periodic function
 
+[ upstream commit 0f6ebeee2402441b20e45ea27f0ff2a4fc2c165f ]
+
 If link handling periodic function is allowed to be called in interrupt
 context, the periodic function can get called too frequently and exhaust
 the retry credits to check link status.
@@ -11,7 +13,6 @@
 interrupt context.
 
 Fixes: 540a211084a7 ("bnx2x: driver core")
-Cc: stable@dpdk.org
 
 Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
 ---

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

* [dpdk-stable] patch 'net/bnx2x: fix to add PHY lock' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (28 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnx2x: fix call to link handling periodic function' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/enic: fix flow API memory leak' " Kevin Traynor
                   ` (42 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Rasesh Mody; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 0844b13ca42515d9c03ac665b9d4463329255872 Mon Sep 17 00:00:00 2001
From: Rasesh Mody <rasesh.mody@cavium.com>
Date: Sat, 29 Sep 2018 05:42:41 +0000
Subject: [PATCH] net/bnx2x: fix to add PHY lock

[ upstream commit a9b58b15ed5186fae34fe20faf74be339632bebc ]

This patch adds phy_lock, acquire/release the lock when performing
PHY transactions. Without this fix driver can run into synchronization
issues with management FW when modifying PHY settings.

Fixes: 540a211084a7 ("bnx2x: driver core")

Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
---
 drivers/net/bnx2x/bnx2x.c     | 59 ++++++++++++++++++++++++++++++-----
 drivers/net/bnx2x/bnx2x.h     |  7 +++++
 drivers/net/bnx2x/ecore_reg.h |  1 +
 3 files changed, 60 insertions(+), 7 deletions(-)

diff --git a/drivers/net/bnx2x/bnx2x.c b/drivers/net/bnx2x/bnx2x.c
index 0225bea9a..279759366 100644
--- a/drivers/net/bnx2x/bnx2x.c
+++ b/drivers/net/bnx2x/bnx2x.c
@@ -113,4 +113,5 @@ static void bnx2x_update_rx_prod(struct bnx2x_softc *sc,
 				 struct bnx2x_fastpath *fp,
 				 uint16_t rx_bd_prod, uint16_t rx_cq_prod);
+static void bnx2x_link_report_locked(struct bnx2x_softc *sc);
 static void bnx2x_link_report(struct bnx2x_softc *sc);
 void bnx2x_link_status_update(struct bnx2x_softc *sc);
@@ -199,5 +200,6 @@ static int bnx2x_acquire_hw_lock(struct bnx2x_softc *sc, uint32_t resource)
 	int cnt;
 
-	PMD_INIT_FUNC_TRACE(sc);
+	if (resource)
+		PMD_INIT_FUNC_TRACE(sc);
 
 	/* validate the resource is within range */
@@ -235,5 +237,6 @@ static int bnx2x_acquire_hw_lock(struct bnx2x_softc *sc, uint32_t resource)
 	}
 
-	PMD_DRV_LOG(NOTICE, sc, "Resource lock timeout!");
+	PMD_DRV_LOG(NOTICE, sc, "Resource 0x%x resource_bit 0x%x lock timeout!",
+		    resource, resource_bit);
 	return -1;
 }
@@ -246,11 +249,12 @@ static int bnx2x_release_hw_lock(struct bnx2x_softc *sc, uint32_t resource)
 	uint32_t hw_lock_control_reg;
 
-	PMD_INIT_FUNC_TRACE(sc);
+	if (resource)
+		PMD_INIT_FUNC_TRACE(sc);
 
 	/* validate the resource is within range */
 	if (resource > HW_LOCK_MAX_RESOURCE_VALUE) {
 		PMD_DRV_LOG(NOTICE, sc,
-			    "resource 0x%x > HW_LOCK_MAX_RESOURCE_VALUE",
-			    resource);
+			    "(resource 0x%x > HW_LOCK_MAX_RESOURCE_VALUE)"
+			    " resource_bit 0x%x", resource, resource_bit);
 		return -1;
 	}
@@ -276,4 +280,16 @@ static int bnx2x_release_hw_lock(struct bnx2x_softc *sc, uint32_t resource)
 }
 
+static void bnx2x_acquire_phy_lock(struct bnx2x_softc *sc)
+{
+	BNX2X_PHY_LOCK(sc);
+	bnx2x_acquire_hw_lock(sc, HW_LOCK_RESOURCE_MDIO);
+}
+
+static void bnx2x_release_phy_lock(struct bnx2x_softc *sc)
+{
+	bnx2x_release_hw_lock(sc, HW_LOCK_RESOURCE_MDIO);
+	BNX2X_PHY_UNLOCK(sc);
+}
+
 /* copy command into DMAE command memory and set DMAE command Go */
 void bnx2x_post_dmae(struct bnx2x_softc *sc, struct dmae_command *dmae, int idx)
@@ -2904,5 +2920,5 @@ static void bnx2x_link_attn(struct bnx2x_softc *sc)
 	}
 
-	bnx2x_link_report(sc);
+	bnx2x_link_report_locked(sc);
 
 	if (IS_MF(sc)) {
@@ -2943,4 +2959,5 @@ static void bnx2x_attn_int_asserted(struct bnx2x_softc *sc, uint32_t asserted)
 		if (asserted & ATTN_NIG_FOR_FUNC) {
 
+			bnx2x_acquire_phy_lock(sc);
 			/* save nig interrupt mask */
 			nig_mask = REG_RD(sc, nig_int_mask_addr);
@@ -3040,4 +3057,5 @@ static void bnx2x_attn_int_asserted(struct bnx2x_softc *sc, uint32_t asserted)
 		REG_WR(sc, nig_int_mask_addr, nig_mask);
 
+		bnx2x_release_phy_lock(sc);
 	}
 }
@@ -3839,6 +3857,8 @@ static void bnx2x_attn_int_deasserted3(struct bnx2x_softc *sc, uint32_t attn)
 			    ELINK_PERIODIC_FLAGS_LINK_EVENT) {
 				/* sync with link */
+				bnx2x_acquire_phy_lock(sc);
 				sc->link_vars.periodic_flags &=
 				    ~ELINK_PERIODIC_FLAGS_LINK_EVENT;
+				bnx2x_release_phy_lock(sc);
 				if (IS_MF(sc)) {
 					bnx2x_link_sync_notify(sc);
@@ -4030,5 +4050,7 @@ static void bnx2x_attn_int_deasserted0(struct bnx2x_softc *sc, uint32_t attn)
 
 	if ((attn & sc->link_vars.aeu_int_mask) && sc->port.pmf) {
+		bnx2x_acquire_phy_lock(sc);
 		elink_handle_module_detect_int(&sc->link_params);
+		bnx2x_release_phy_lock(sc);
 	}
 
@@ -6868,5 +6890,5 @@ bnx2x_fill_report_data(struct bnx2x_softc *sc, struct bnx2x_link_report_data *da
 
 /* report link status to OS, should be called under phy_lock */
-static void bnx2x_link_report(struct bnx2x_softc *sc)
+static void bnx2x_link_report_locked(struct bnx2x_softc *sc)
 {
 	struct bnx2x_link_report_data cur_data;
@@ -6889,6 +6911,11 @@ static void bnx2x_link_report(struct bnx2x_softc *sc)
 	}
 
+	PMD_DRV_LOG(INFO, sc, "Change in link status : cur_data = %lx, last_reported_link = %lx\n",
+		    cur_data.link_report_flags,
+		    sc->last_reported_link.link_report_flags);
+
 	sc->link_cnt++;
 
+	PMD_DRV_LOG(INFO, sc, "link status change count = %x\n", sc->link_cnt);
 	/* report new link params and remember the state for the next time */
 	rte_memcpy(&sc->last_reported_link, &cur_data, sizeof(cur_data));
@@ -6942,4 +6969,12 @@ static void bnx2x_link_report(struct bnx2x_softc *sc)
 }
 
+static void
+bnx2x_link_report(struct bnx2x_softc *sc)
+{
+	bnx2x_acquire_phy_lock(sc);
+	bnx2x_link_report_locked(sc);
+	bnx2x_release_phy_lock(sc);
+}
+
 void bnx2x_link_status_update(struct bnx2x_softc *sc)
 {
@@ -7020,4 +7055,6 @@ static int bnx2x_initial_phy_init(struct bnx2x_softc *sc, int load_mode)
 	bnx2x_set_requested_fc(sc);
 
+	bnx2x_acquire_phy_lock(sc);
+
 	if (load_mode == LOAD_DIAG) {
 		lp->loopback_mode = ELINK_LOOPBACK_XGXS;
@@ -7039,4 +7076,6 @@ static int bnx2x_initial_phy_init(struct bnx2x_softc *sc, int load_mode)
 	rc = elink_phy_init(&sc->link_params, &sc->link_vars);
 
+	bnx2x_release_phy_lock(sc);
+
 	bnx2x_calc_fc_adv(sc);
 
@@ -7089,5 +7128,7 @@ void bnx2x_periodic_callout(struct bnx2x_softc *sc)
 		mb();
 		if (sc->port.pmf) {
+			bnx2x_acquire_phy_lock(sc);
 			elink_period_func(&sc->link_params, &sc->link_vars);
+			bnx2x_release_phy_lock(sc);
 		}
 	}
@@ -9841,6 +9882,8 @@ static void bnx2x_common_init_phy(struct bnx2x_softc *sc)
 	}
 
+	bnx2x_acquire_phy_lock(sc);
 	elink_common_init_phy(sc, shmem_base, shmem2_base,
 			      sc->devinfo.chip_id, 0);
+	bnx2x_release_phy_lock(sc);
 }
 
@@ -11321,5 +11364,7 @@ static void bnx2x_link_reset(struct bnx2x_softc *sc)
 {
 	if (!BNX2X_NOMCP(sc)) {
+		bnx2x_acquire_phy_lock(sc);
 		elink_lfa_reset(&sc->link_params, &sc->link_vars);
+		bnx2x_release_phy_lock(sc);
 	} else {
 		if (!CHIP_REV_IS_SLOW(sc)) {
diff --git a/drivers/net/bnx2x/bnx2x.h b/drivers/net/bnx2x/bnx2x.h
index 2d545f514..a51fd79d4 100644
--- a/drivers/net/bnx2x/bnx2x.h
+++ b/drivers/net/bnx2x/bnx2x.h
@@ -726,4 +726,11 @@ struct bnx2x_port {
     uint32_t    phy_addr;
 
+	/* Used to synchronize phy accesses. */
+	rte_spinlock_t	phy_mtx;
+	char		phy_mtx_name[32];
+
+#define BNX2X_PHY_LOCK(sc)          rte_spinlock_lock(&sc->port.phy_mtx)
+#define BNX2X_PHY_UNLOCK(sc)        rte_spinlock_unlock(&sc->port.phy_mtx)
+
     /*
      * MCP scratchpad address for port specific statistics.
diff --git a/drivers/net/bnx2x/ecore_reg.h b/drivers/net/bnx2x/ecore_reg.h
index ae8a93bb4..d69e857bf 100644
--- a/drivers/net/bnx2x/ecore_reg.h
+++ b/drivers/net/bnx2x/ecore_reg.h
@@ -1968,4 +1968,5 @@
 #define HW_LOCK_RESOURCE_DRV_FLAGS		 10
 #define HW_LOCK_RESOURCE_GPIO			 1
+#define HW_LOCK_RESOURCE_MDIO			 0
 #define HW_LOCK_RESOURCE_NVRAM			 12
 #define HW_LOCK_RESOURCE_PORT0_ATT_MASK		 3
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.799930978 +0000
+++ 0031-net-bnx2x-fix-to-add-PHY-lock.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,14 +1,15 @@
-From a9b58b15ed5186fae34fe20faf74be339632bebc Mon Sep 17 00:00:00 2001
+From 0844b13ca42515d9c03ac665b9d4463329255872 Mon Sep 17 00:00:00 2001
 From: Rasesh Mody <rasesh.mody@cavium.com>
 Date: Sat, 29 Sep 2018 05:42:41 +0000
 Subject: [PATCH] net/bnx2x: fix to add PHY lock
 
+[ upstream commit a9b58b15ed5186fae34fe20faf74be339632bebc ]
+
 This patch adds phy_lock, acquire/release the lock when performing
 PHY transactions. Without this fix driver can run into synchronization
 issues with management FW when modifying PHY settings.
 
 Fixes: 540a211084a7 ("bnx2x: driver core")
-Cc: stable@dpdk.org
 
 Signed-off-by: Rasesh Mody <rasesh.mody@cavium.com>
 ---
@@ -184,7 +185,7 @@
  	} else {
  		if (!CHIP_REV_IS_SLOW(sc)) {
 diff --git a/drivers/net/bnx2x/bnx2x.h b/drivers/net/bnx2x/bnx2x.h
-index 1cc5a6b42..74780725b 100644
+index 2d545f514..a51fd79d4 100644
 --- a/drivers/net/bnx2x/bnx2x.h
 +++ b/drivers/net/bnx2x/bnx2x.h
 @@ -726,4 +726,11 @@ struct bnx2x_port {

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

* [dpdk-stable] patch 'net/enic: fix flow API memory leak' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (29 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnx2x: fix to add PHY lock' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnxt: get rid of ff pools and use VNIC info array' " Kevin Traynor
                   ` (41 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: John Daley; +Cc: Hyong Youb Kim, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From ce7c316194a4264a8abab5fc2193921710e87e7c Mon Sep 17 00:00:00 2001
From: John Daley <johndale@cisco.com>
Date: Thu, 27 Sep 2018 20:08:36 -0700
Subject: [PATCH] net/enic: fix flow API memory leak

[ upstream commit 85b0ccec381d217ad6fb1698317b863a31fdd8af ]

rte_flow structures were not being freed when destroyed or flushed.

Fixes: 6ced137607d0 ("net/enic: flow API for NICs with advanced filters enabled")

Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
Signed-off-by: John Daley <johndale@cisco.com>
---
 drivers/net/enic/enic_flow.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/enic/enic_flow.c b/drivers/net/enic/enic_flow.c
index 0cf04aefd..9b612f1d5 100644
--- a/drivers/net/enic/enic_flow.c
+++ b/drivers/net/enic/enic_flow.c
@@ -1533,4 +1533,5 @@ enic_flow_destroy(struct rte_eth_dev *dev, struct rte_flow *flow,
 	LIST_REMOVE(flow, next);
 	rte_spinlock_unlock(&enic->flows_lock);
+	rte_free(flow);
 	return 0;
 }
@@ -1556,4 +1557,5 @@ enic_flow_flush(struct rte_eth_dev *dev, struct rte_flow_error *error)
 		enic_flow_del_filter(enic, flow->enic_filter_id, error);
 		LIST_REMOVE(flow, next);
+		rte_free(flow);
 	}
 	rte_spinlock_unlock(&enic->flows_lock);
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.836726191 +0000
+++ 0032-net-enic-fix-flow-API-memory-leak.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,12 +1,13 @@
-From 85b0ccec381d217ad6fb1698317b863a31fdd8af Mon Sep 17 00:00:00 2001
+From ce7c316194a4264a8abab5fc2193921710e87e7c Mon Sep 17 00:00:00 2001
 From: John Daley <johndale@cisco.com>
 Date: Thu, 27 Sep 2018 20:08:36 -0700
 Subject: [PATCH] net/enic: fix flow API memory leak
 
+[ upstream commit 85b0ccec381d217ad6fb1698317b863a31fdd8af ]
+
 rte_flow structures were not being freed when destroyed or flushed.
 
 Fixes: 6ced137607d0 ("net/enic: flow API for NICs with advanced filters enabled")
-Cc: stable@dpdk.org
 
 Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
 Signed-off-by: John Daley <johndale@cisco.com>

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

* [dpdk-stable] patch 'net/bnxt: get rid of ff pools and use VNIC info array' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (30 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/enic: fix flow API memory leak' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnxt: fix uninitialized pointer access in Tx' " Kevin Traynor
                   ` (40 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Somnath Kotur; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 2a54128817ee35bf68851d98ca5863ba76932c66 Mon Sep 17 00:00:00 2001
From: Somnath Kotur <somnath.kotur@broadcom.com>
Date: Fri, 28 Sep 2018 18:59:52 -0700
Subject: [PATCH] net/bnxt: get rid of ff pools and use VNIC info array

[ upstream commit 51fafb89a9a07df6aca943ce19cd1f8654bfdd31 ]

There was no direct association between the rxq's VNIC and the
vnic_info[].
Explicitly associate the two in bnxt_mq_rx_configure().

Fixes: 0a256e4a548b ("net/bnxt: fix Rx ring count limitation")

Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
---
 drivers/net/bnxt/bnxt.h        |   4 -
 drivers/net/bnxt/bnxt_ethdev.c | 262 ++++++++++++++++-----------------
 drivers/net/bnxt/bnxt_filter.c |  26 ++--
 drivers/net/bnxt/bnxt_flow.c   |  12 +-
 drivers/net/bnxt/bnxt_rxq.c    |  19 +--
 drivers/net/bnxt/bnxt_vnic.c   |  43 +-----
 6 files changed, 165 insertions(+), 201 deletions(-)

diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h
index db5c4eb0d..8aae0426a 100644
--- a/drivers/net/bnxt/bnxt.h
+++ b/drivers/net/bnxt/bnxt.h
@@ -286,8 +286,4 @@ struct bnxt {
 	STAILQ_HEAD(, bnxt_filter_info)	free_filter_list;
 
-	/* VNIC pointer for flow filter (VMDq) pools */
-#define MAX_FF_POOLS	256
-	STAILQ_HEAD(, bnxt_vnic_info)	ff_pool[MAX_FF_POOLS];
-
 	struct bnxt_irq         *irq_tbl;
 
diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index cc7e4391c..c681f4500 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -264,4 +264,7 @@ static int bnxt_init_chip(struct bnxt *bp)
 		memset(vnic->fw_grp_ids, -1, size);
 
+		PMD_DRV_LOG(DEBUG, "vnic[%d] = %p vnic->fw_grp_ids = %p\n",
+			    i, vnic, vnic->fw_grp_ids);
+
 		rc = bnxt_hwrm_vnic_alloc(bp, vnic);
 		if (rc) {
@@ -300,4 +303,8 @@ static int bnxt_init_chip(struct bnxt *bp)
 			rxq = bp->eth_dev->data->rx_queues[j];
 
+			PMD_DRV_LOG(DEBUG,
+				    "rxq[%d]->vnic=%p vnic->fw_grp_ids=%p\n",
+				    j, rxq->vnic, rxq->vnic->fw_grp_ids);
+
 			if (rxq->rx_deferred_start)
 				rxq->vnic->fw_grp_ids[j] = INVALID_HW_RING_ID;
@@ -695,5 +702,4 @@ static void bnxt_dev_close_op(struct rte_eth_dev *eth_dev)
 		bnxt_dev_stop_op(eth_dev);
 
-	bnxt_free_mem(bp);
 	if (eth_dev->data->mac_addrs != NULL) {
 		rte_free(eth_dev->data->mac_addrs);
@@ -715,5 +721,4 @@ static void bnxt_mac_addr_remove_op(struct rte_eth_dev *eth_dev,
 	struct bnxt_vnic_info *vnic;
 	struct bnxt_filter_info *filter, *temp_filter;
-	uint32_t pool = RTE_MIN(MAX_FF_POOLS, ETH_64_POOLS);
 	uint32_t i;
 
@@ -722,25 +727,22 @@ static void bnxt_mac_addr_remove_op(struct rte_eth_dev *eth_dev,
 	 * remove the corresponding MAC addr filter
 	 */
-	for (i = 0; i < pool; i++) {
+	for (i = 0; i < bp->nr_vnics; i++) {
 		if (!(pool_mask & (1ULL << i)))
 			continue;
 
-		STAILQ_FOREACH(vnic, &bp->ff_pool[i], next) {
-			filter = STAILQ_FIRST(&vnic->filter);
-			while (filter) {
-				temp_filter = STAILQ_NEXT(filter, next);
-				if (filter->mac_index == index) {
-					STAILQ_REMOVE(&vnic->filter, filter,
-						      bnxt_filter_info, next);
-					bnxt_hwrm_clear_l2_filter(bp, filter);
-					filter->mac_index = INVALID_MAC_INDEX;
-					memset(&filter->l2_addr, 0,
-					       ETHER_ADDR_LEN);
-					STAILQ_INSERT_TAIL(
-							&bp->free_filter_list,
-							filter, next);
-				}
-				filter = temp_filter;
+		vnic = &bp->vnic_info[i];
+		filter = STAILQ_FIRST(&vnic->filter);
+		while (filter) {
+			temp_filter = STAILQ_NEXT(filter, next);
+			if (filter->mac_index == index) {
+				STAILQ_REMOVE(&vnic->filter, filter,
+						bnxt_filter_info, next);
+				bnxt_hwrm_clear_l2_filter(bp, filter);
+				filter->mac_index = INVALID_MAC_INDEX;
+				memset(&filter->l2_addr, 0, ETHER_ADDR_LEN);
+				STAILQ_INSERT_TAIL(&bp->free_filter_list,
+						   filter, next);
 			}
+			filter = temp_filter;
 		}
 	}
@@ -752,5 +754,5 @@ static int bnxt_mac_addr_add_op(struct rte_eth_dev *eth_dev,
 {
 	struct bnxt *bp = (struct bnxt *)eth_dev->data->dev_private;
-	struct bnxt_vnic_info *vnic = STAILQ_FIRST(&bp->ff_pool[pool]);
+	struct bnxt_vnic_info *vnic = &bp->vnic_info[pool];
 	struct bnxt_filter_info *filter;
 
@@ -899,10 +901,8 @@ static int bnxt_reta_update_op(struct rte_eth_dev *eth_dev,
 	}
 	/* Update the RSS VNIC(s) */
-	for (i = 0; i < MAX_FF_POOLS; i++) {
-		STAILQ_FOREACH(vnic, &bp->ff_pool[i], next) {
-			memcpy(vnic->rss_table, reta_conf, reta_size);
-
-			bnxt_hwrm_vnic_rss_cfg(bp, vnic);
-		}
+	for (i = 0; i < bp->max_vnics; i++) {
+		vnic = &bp->vnic_info[i];
+		memcpy(vnic->rss_table, reta_conf, reta_size);
+		bnxt_hwrm_vnic_rss_cfg(bp, vnic);
 	}
 	return 0;
@@ -948,5 +948,5 @@ static int bnxt_rss_hash_update_op(struct rte_eth_dev *eth_dev,
 	struct bnxt_vnic_info *vnic;
 	uint16_t hash_type = 0;
-	int i;
+	unsigned int i;
 
 	/*
@@ -979,19 +979,18 @@ static int bnxt_rss_hash_update_op(struct rte_eth_dev *eth_dev,
 
 	/* Update the RSS VNIC(s) */
-	for (i = 0; i < MAX_FF_POOLS; i++) {
-		STAILQ_FOREACH(vnic, &bp->ff_pool[i], next) {
-			vnic->hash_type = hash_type;
+	for (i = 0; i < bp->nr_vnics; i++) {
+		vnic = &bp->vnic_info[i];
+		vnic->hash_type = hash_type;
 
-			/*
-			 * Use the supplied key if the key length is
-			 * acceptable and the rss_key is not NULL
-			 */
-			if (rss_conf->rss_key &&
-			    rss_conf->rss_key_len <= HW_HASH_KEY_SIZE)
-				memcpy(vnic->rss_hash_key, rss_conf->rss_key,
-				       rss_conf->rss_key_len);
+		/*
+		 * Use the supplied key if the key length is
+		 * acceptable and the rss_key is not NULL
+		 */
+		if (rss_conf->rss_key &&
+		    rss_conf->rss_key_len <= HW_HASH_KEY_SIZE)
+			memcpy(vnic->rss_hash_key, rss_conf->rss_key,
+			       rss_conf->rss_key_len);
 
-			bnxt_hwrm_vnic_rss_cfg(bp, vnic);
-		}
+		bnxt_hwrm_vnic_rss_cfg(bp, vnic);
 	}
 	return 0;
@@ -1270,51 +1269,49 @@ static int bnxt_del_vlan_filter(struct bnxt *bp, uint16_t vlan_id)
 		 *      VLAN filter doesn't exist, just skip and continue
 		 */
-		STAILQ_FOREACH(vnic, &bp->ff_pool[i], next) {
-			filter = STAILQ_FIRST(&vnic->filter);
-			while (filter) {
-				temp_filter = STAILQ_NEXT(filter, next);
+		vnic = &bp->vnic_info[i];
+		filter = STAILQ_FIRST(&vnic->filter);
+		while (filter) {
+			temp_filter = STAILQ_NEXT(filter, next);
 
-				if (filter->enables & chk &&
-				    filter->l2_ovlan == vlan_id) {
-					/* Must delete the filter */
-					STAILQ_REMOVE(&vnic->filter, filter,
-						      bnxt_filter_info, next);
-					bnxt_hwrm_clear_l2_filter(bp, filter);
-					STAILQ_INSERT_TAIL(
-							&bp->free_filter_list,
-							filter, next);
+			if (filter->enables & chk &&
+			    filter->l2_ovlan == vlan_id) {
+				/* Must delete the filter */
+				STAILQ_REMOVE(&vnic->filter, filter,
+					      bnxt_filter_info, next);
+				bnxt_hwrm_clear_l2_filter(bp, filter);
+				STAILQ_INSERT_TAIL(&bp->free_filter_list,
+						   filter, next);
 
-					/*
-					 * Need to examine to see if the MAC
-					 * filter already existed or not before
-					 * allocating a new one
-					 */
+				/*
+				 * Need to examine to see if the MAC
+				 * filter already existed or not before
+				 * allocating a new one
+				 */
 
-					new_filter = bnxt_alloc_filter(bp);
-					if (!new_filter) {
-						PMD_DRV_LOG(ERR,
+				new_filter = bnxt_alloc_filter(bp);
+				if (!new_filter) {
+					PMD_DRV_LOG(ERR,
 							"MAC/VLAN filter alloc failed\n");
-						rc = -ENOMEM;
-						goto exit;
-					}
-					STAILQ_INSERT_TAIL(&vnic->filter,
-							   new_filter, next);
-					/* Inherit MAC from previous filter */
-					new_filter->mac_index =
-							filter->mac_index;
-					memcpy(new_filter->l2_addr,
-					       filter->l2_addr, ETHER_ADDR_LEN);
-					/* MAC only filter */
-					rc = bnxt_hwrm_set_l2_filter(bp,
-							vnic->fw_vnic_id,
-							new_filter);
-					if (rc)
-						goto exit;
-					PMD_DRV_LOG(INFO,
-						"Del Vlan filter for %d\n",
-						vlan_id);
+					rc = -ENOMEM;
+					goto exit;
 				}
-				filter = temp_filter;
+				STAILQ_INSERT_TAIL(&vnic->filter,
+						new_filter, next);
+				/* Inherit MAC from previous filter */
+				new_filter->mac_index =
+					filter->mac_index;
+				memcpy(new_filter->l2_addr, filter->l2_addr,
+				       ETHER_ADDR_LEN);
+				/* MAC only filter */
+				rc = bnxt_hwrm_set_l2_filter(bp,
+							     vnic->fw_vnic_id,
+							     new_filter);
+				if (rc)
+					goto exit;
+				PMD_DRV_LOG(INFO,
+					    "Del Vlan filter for %d\n",
+					    vlan_id);
 			}
+			filter = temp_filter;
 		}
 	}
@@ -1346,49 +1343,46 @@ static int bnxt_add_vlan_filter(struct bnxt *bp, uint16_t vlan_id)
 		 *    Add a new MAC+VLAN filter
 		 */
-		STAILQ_FOREACH(vnic, &bp->ff_pool[i], next) {
-			filter = STAILQ_FIRST(&vnic->filter);
-			while (filter) {
-				temp_filter = STAILQ_NEXT(filter, next);
+		vnic = &bp->vnic_info[i];
+		filter = STAILQ_FIRST(&vnic->filter);
+		while (filter) {
+			temp_filter = STAILQ_NEXT(filter, next);
 
-				if (filter->enables & chk) {
-					if (filter->l2_ovlan == vlan_id)
-						goto cont;
-				} else {
-					/* Must delete the MAC filter */
-					STAILQ_REMOVE(&vnic->filter, filter,
-						      bnxt_filter_info, next);
-					bnxt_hwrm_clear_l2_filter(bp, filter);
-					filter->l2_ovlan = 0;
-					STAILQ_INSERT_TAIL(
-							&bp->free_filter_list,
-							filter, next);
-				}
-				new_filter = bnxt_alloc_filter(bp);
-				if (!new_filter) {
-					PMD_DRV_LOG(ERR,
+			if (filter->enables & chk) {
+				if (filter->l2_ivlan == vlan_id)
+					goto cont;
+			} else {
+				/* Must delete the MAC filter */
+				STAILQ_REMOVE(&vnic->filter, filter,
+						bnxt_filter_info, next);
+				bnxt_hwrm_clear_l2_filter(bp, filter);
+				filter->l2_ovlan = 0;
+				STAILQ_INSERT_TAIL(&bp->free_filter_list,
+						   filter, next);
+			}
+			new_filter = bnxt_alloc_filter(bp);
+			if (!new_filter) {
+				PMD_DRV_LOG(ERR,
 						"MAC/VLAN filter alloc failed\n");
-					rc = -ENOMEM;
-					goto exit;
-				}
-				STAILQ_INSERT_TAIL(&vnic->filter, new_filter,
-						   next);
-				/* Inherit MAC from the previous filter */
-				new_filter->mac_index = filter->mac_index;
-				memcpy(new_filter->l2_addr, filter->l2_addr,
-				       ETHER_ADDR_LEN);
-				/* MAC + VLAN ID filter */
-				new_filter->l2_ivlan = vlan_id;
-				new_filter->l2_ivlan_mask = 0xF000;
-				new_filter->enables |= en;
-				rc = bnxt_hwrm_set_l2_filter(bp,
-							     vnic->fw_vnic_id,
-							     new_filter);
-				if (rc)
-					goto exit;
-				PMD_DRV_LOG(INFO,
-					"Added Vlan filter for %d\n", vlan_id);
+				rc = -ENOMEM;
+				goto exit;
+			}
+			STAILQ_INSERT_TAIL(&vnic->filter, new_filter, next);
+			/* Inherit MAC from the previous filter */
+			new_filter->mac_index = filter->mac_index;
+			memcpy(new_filter->l2_addr, filter->l2_addr,
+			       ETHER_ADDR_LEN);
+			/* MAC + VLAN ID filter */
+			new_filter->l2_ivlan = vlan_id;
+			new_filter->l2_ivlan_mask = 0xF000;
+			new_filter->enables |= en;
+			rc = bnxt_hwrm_set_l2_filter(bp,
+					vnic->fw_vnic_id,
+					new_filter);
+			if (rc)
+				goto exit;
+			PMD_DRV_LOG(INFO,
+				    "Added Vlan filter for %d\n", vlan_id);
 cont:
-				filter = temp_filter;
-			}
+			filter = temp_filter;
 		}
 	}
@@ -1398,5 +1392,5 @@ exit:
 
 static int bnxt_vlan_filter_set_op(struct rte_eth_dev *eth_dev,
-				   uint16_t vlan_id, int on)
+		uint16_t vlan_id, int on)
 {
 	struct bnxt *bp = (struct bnxt *)eth_dev->data->dev_private;
@@ -1806,6 +1800,6 @@ bnxt_match_and_validate_ether_filter(struct bnxt *bp,
 	}
 
-	vnic0 = STAILQ_FIRST(&bp->ff_pool[0]);
-	vnic = STAILQ_FIRST(&bp->ff_pool[efilter->queue]);
+	vnic0 = &bp->vnic_info[0];
+	vnic = &bp->vnic_info[efilter->queue];
 	if (vnic == NULL) {
 		PMD_DRV_LOG(ERR, "Invalid queue %d\n", efilter->queue);
@@ -1865,6 +1859,6 @@ bnxt_ethertype_filter(struct rte_eth_dev *dev,
 	}
 
-	vnic0 = STAILQ_FIRST(&bp->ff_pool[0]);
-	vnic = STAILQ_FIRST(&bp->ff_pool[efilter->queue]);
+	vnic0 = &bp->vnic_info[0];
+	vnic = &bp->vnic_info[efilter->queue];
 
 	switch (filter_op) {
@@ -2082,6 +2076,6 @@ bnxt_cfg_ntuple_filter(struct bnxt *bp,
 		goto free_filter;
 
-	vnic = STAILQ_FIRST(&bp->ff_pool[nfilter->queue]);
-	vnic0 = STAILQ_FIRST(&bp->ff_pool[0]);
+	vnic = &bp->vnic_info[nfilter->queue];
+	vnic0 = &bp->vnic_info[0];
 	filter1 = STAILQ_FIRST(&vnic0->filter);
 	if (filter1 == NULL) {
@@ -2376,6 +2370,6 @@ bnxt_parse_fdir_filter(struct bnxt *bp,
 	}
 
-	vnic0 = STAILQ_FIRST(&bp->ff_pool[0]);
-	vnic = STAILQ_FIRST(&bp->ff_pool[fdir->action.rx_queue]);
+	vnic0 = &bp->vnic_info[0];
+	vnic = &bp->vnic_info[fdir->action.rx_queue];
 	if (vnic == NULL) {
 		PMD_DRV_LOG(ERR, "Invalid queue %d\n", fdir->action.rx_queue);
@@ -2498,7 +2492,7 @@ bnxt_fdir_filter(struct rte_eth_dev *dev,
 
 		if (fdir->action.behavior == RTE_ETH_FDIR_REJECT)
-			vnic = STAILQ_FIRST(&bp->ff_pool[0]);
+			vnic = &bp->vnic_info[0];
 		else
-			vnic = STAILQ_FIRST(&bp->ff_pool[fdir->action.rx_queue]);
+			vnic = &bp->vnic_info[fdir->action.rx_queue];
 
 		match = bnxt_match_fdir(bp, filter, &mvnic);
diff --git a/drivers/net/bnxt/bnxt_filter.c b/drivers/net/bnxt/bnxt_filter.c
index 1038941e8..f43fe0db0 100644
--- a/drivers/net/bnxt/bnxt_filter.c
+++ b/drivers/net/bnxt/bnxt_filter.c
@@ -81,19 +81,19 @@ void bnxt_free_all_filters(struct bnxt *bp)
 	struct bnxt_vnic_info *vnic;
 	struct bnxt_filter_info *filter, *temp_filter;
-	int i;
+	unsigned int i;
 
-	for (i = 0; i < MAX_FF_POOLS; i++) {
-		STAILQ_FOREACH(vnic, &bp->ff_pool[i], next) {
-			filter = STAILQ_FIRST(&vnic->filter);
-			while (filter) {
-				temp_filter = STAILQ_NEXT(filter, next);
-				STAILQ_REMOVE(&vnic->filter, filter,
-					      bnxt_filter_info, next);
-				STAILQ_INSERT_TAIL(&bp->free_filter_list,
-						   filter, next);
-				filter = temp_filter;
-			}
-			STAILQ_INIT(&vnic->filter);
+//	for (i = 0; i < MAX_FF_POOLS; i++) {
+	for (i = 0; i < bp->nr_vnics; i++) {
+		vnic = &bp->vnic_info[i];
+		filter = STAILQ_FIRST(&vnic->filter);
+		while (filter) {
+			temp_filter = STAILQ_NEXT(filter, next);
+			STAILQ_REMOVE(&vnic->filter, filter,
+					bnxt_filter_info, next);
+			STAILQ_INSERT_TAIL(&bp->free_filter_list,
+					filter, next);
+			filter = temp_filter;
 		}
+		STAILQ_INIT(&vnic->filter);
 	}
 
diff --git a/drivers/net/bnxt/bnxt_flow.c b/drivers/net/bnxt/bnxt_flow.c
index ac7656741..1afe67407 100644
--- a/drivers/net/bnxt/bnxt_flow.c
+++ b/drivers/net/bnxt/bnxt_flow.c
@@ -679,5 +679,5 @@ bnxt_get_l2_filter(struct bnxt *bp, struct bnxt_filter_info *nf,
 	int rc;
 
-	vnic0 = STAILQ_FIRST(&bp->ff_pool[0]);
+	vnic0 = &bp->vnic_info[0];
 	f0 = STAILQ_FIRST(&vnic0->filter);
 
@@ -764,6 +764,6 @@ bnxt_validate_and_parse_flow(struct rte_eth_dev *dev,
 		PMD_DRV_LOG(DEBUG, "Queue index %d\n", act_q->index);
 
-		vnic0 = STAILQ_FIRST(&bp->ff_pool[0]);
-		vnic = STAILQ_FIRST(&bp->ff_pool[act_q->index]);
+		vnic0 = &bp->vnic_info[0];
+		vnic =  &bp->vnic_info[act_q->index];
 		if (vnic == NULL) {
 			rte_flow_error_set(error,
@@ -787,5 +787,5 @@ bnxt_validate_and_parse_flow(struct rte_eth_dev *dev,
 		break;
 	case RTE_FLOW_ACTION_TYPE_DROP:
-		vnic0 = STAILQ_FIRST(&bp->ff_pool[0]);
+		vnic0 = &bp->vnic_info[0];
 		filter1 = bnxt_get_l2_filter(bp, filter, vnic0);
 		if (filter1 == NULL) {
@@ -803,5 +803,5 @@ bnxt_validate_and_parse_flow(struct rte_eth_dev *dev,
 		break;
 	case RTE_FLOW_ACTION_TYPE_COUNT:
-		vnic0 = STAILQ_FIRST(&bp->ff_pool[0]);
+		vnic0 = &bp->vnic_info[0];
 		filter1 = bnxt_get_l2_filter(bp, filter, vnic0);
 		if (filter1 == NULL) {
@@ -855,5 +855,5 @@ bnxt_validate_and_parse_flow(struct rte_eth_dev *dev,
 		filter->enables |= NTUPLE_FLTR_ALLOC_INPUT_EN_MIRROR_VNIC_ID;
 
-		vnic0 = STAILQ_FIRST(&bp->ff_pool[0]);
+		vnic0 = &bp->vnic_info[0];
 		filter1 = bnxt_get_l2_filter(bp, filter, vnic0);
 		if (filter1 == NULL) {
diff --git a/drivers/net/bnxt/bnxt_rxq.c b/drivers/net/bnxt/bnxt_rxq.c
index 832fc9ecc..5f2806aef 100644
--- a/drivers/net/bnxt/bnxt_rxq.c
+++ b/drivers/net/bnxt/bnxt_rxq.c
@@ -44,5 +44,5 @@ int bnxt_mq_rx_configure(struct bnxt *bp)
 	/* Single queue mode */
 	if (bp->rx_cp_nr_rings < 2) {
-		vnic = bnxt_alloc_vnic(bp);
+		vnic = &bp->vnic_info[0];
 		if (!vnic) {
 			PMD_DRV_LOG(ERR, "VNIC alloc failed\n");
@@ -51,5 +51,4 @@ int bnxt_mq_rx_configure(struct bnxt *bp)
 		}
 		vnic->flags |= BNXT_VNIC_INFO_BCAST;
-		STAILQ_INSERT_TAIL(&bp->ff_pool[0], vnic, next);
 		bp->nr_vnics++;
 
@@ -58,5 +57,4 @@ int bnxt_mq_rx_configure(struct bnxt *bp)
 
 		vnic->func_default = true;
-		vnic->ff_pool_idx = 0;
 		vnic->start_grp_id = 0;
 		vnic->end_grp_id = vnic->start_grp_id;
@@ -86,4 +84,7 @@ int bnxt_mq_rx_configure(struct bnxt *bp)
 					    RTE_MIN(bp->max_rsscos_ctx,
 						    ETH_64_POOLS)));
+			PMD_DRV_LOG(DEBUG,
+				    "pools = %u max_pools = %u\n",
+				    pools, max_pools);
 			if (pools > max_pools)
 				pools = max_pools;
@@ -99,11 +100,11 @@ int bnxt_mq_rx_configure(struct bnxt *bp)
 		}
 	}
-
 	nb_q_per_grp = bp->rx_cp_nr_rings / pools;
+	PMD_DRV_LOG(ERR, "pools = %u nb_q_per_grp = %u\n", pools, nb_q_per_grp);
 	start_grp_id = 0;
 	end_grp_id = nb_q_per_grp;
 
 	for (i = 0; i < pools; i++) {
-		vnic = bnxt_alloc_vnic(bp);
+		vnic = &bp->vnic_info[i];
 		if (!vnic) {
 			PMD_DRV_LOG(ERR, "VNIC alloc failed\n");
@@ -112,5 +113,4 @@ int bnxt_mq_rx_configure(struct bnxt *bp)
 		}
 		vnic->flags |= BNXT_VNIC_INFO_BCAST;
-		STAILQ_INSERT_TAIL(&bp->ff_pool[i], vnic, next);
 		bp->nr_vnics++;
 
@@ -118,4 +118,7 @@ int bnxt_mq_rx_configure(struct bnxt *bp)
 			rxq = bp->eth_dev->data->rx_queues[ring_idx];
 			rxq->vnic = vnic;
+			PMD_DRV_LOG(DEBUG,
+				    "rxq[%d] = %p vnic[%d] = %p\n",
+				    ring_idx, rxq, i, vnic);
 		}
 		if (i == 0) {
@@ -126,5 +129,4 @@ int bnxt_mq_rx_configure(struct bnxt *bp)
 			vnic->func_default = true;
 		}
-		vnic->ff_pool_idx = i;
 		vnic->start_grp_id = start_grp_id;
 		vnic->end_grp_id = end_grp_id;
@@ -177,5 +179,5 @@ out:
 
 		for (i = 0; i < bp->nr_vnics; i++) {
-			STAILQ_FOREACH(vnic, &bp->ff_pool[i], next) {
+			vnic = &bp->vnic_info[i];
 			vnic->hash_type = hash_type;
 
@@ -188,5 +190,4 @@ out:
 				memcpy(vnic->rss_hash_key,
 				       rss->rss_key, rss->rss_key_len);
-			}
 		}
 	}
diff --git a/drivers/net/bnxt/bnxt_vnic.c b/drivers/net/bnxt/bnxt_vnic.c
index c0577cd76..aebfb1f1c 100644
--- a/drivers/net/bnxt/bnxt_vnic.c
+++ b/drivers/net/bnxt/bnxt_vnic.c
@@ -58,27 +58,4 @@ void bnxt_init_vnics(struct bnxt *bp)
 		STAILQ_INSERT_TAIL(&bp->free_vnic_list, vnic, next);
 	}
-	for (i = 0; i < MAX_FF_POOLS; i++)
-		STAILQ_INIT(&bp->ff_pool[i]);
-}
-
-int bnxt_free_vnic(struct bnxt *bp, struct bnxt_vnic_info *vnic,
-			  int pool)
-{
-	struct bnxt_vnic_info *temp;
-
-	temp = STAILQ_FIRST(&bp->ff_pool[pool]);
-	while (temp) {
-		if (temp == vnic) {
-			STAILQ_REMOVE(&bp->ff_pool[pool], vnic,
-				      bnxt_vnic_info, next);
-			vnic->fw_vnic_id = (uint16_t)HWRM_NA_SIGNATURE;
-			STAILQ_INSERT_TAIL(&bp->free_vnic_list, vnic,
-					   next);
-			return 0;
-		}
-		temp = STAILQ_NEXT(temp, next);
-	}
-	PMD_DRV_LOG(ERR, "VNIC %p is not found in pool[%d]\n", vnic, pool);
-	return -EINVAL;
 }
 
@@ -99,16 +76,10 @@ struct bnxt_vnic_info *bnxt_alloc_vnic(struct bnxt *bp)
 void bnxt_free_all_vnics(struct bnxt *bp)
 {
-	struct bnxt_vnic_info *temp, *next;
-	int i;
+	struct bnxt_vnic_info *temp;
+	unsigned int i;
 
-	for (i = 0; i < MAX_FF_POOLS; i++) {
-		temp = STAILQ_FIRST(&bp->ff_pool[i]);
-		while (temp) {
-			next = STAILQ_NEXT(temp, next);
-			STAILQ_REMOVE(&bp->ff_pool[i], temp, bnxt_vnic_info,
-				      next);
-			STAILQ_INSERT_TAIL(&bp->free_vnic_list, temp, next);
-			temp = next;
-		}
+	for (i = 0; i < bp->nr_vnics; i++) {
+		temp = &bp->vnic_info[i];
+		STAILQ_INSERT_TAIL(&bp->free_vnic_list, temp, next);
 	}
 }
@@ -117,6 +88,8 @@ void bnxt_free_vnic_attributes(struct bnxt *bp)
 {
 	struct bnxt_vnic_info *vnic;
+	unsigned int i;
 
-	STAILQ_FOREACH(vnic, &bp->free_vnic_list, next) {
+	for (i = 0; i < bp->max_vnics; i++) {
+		vnic = &bp->vnic_info[i];
 		if (vnic->rss_table) {
 			/* 'Unreserve' the rss_table */
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.861360538 +0000
+++ 0033-net-bnxt-get-rid-of-ff-pools-and-use-VNIC-info-array.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,14 +1,15 @@
-From 51fafb89a9a07df6aca943ce19cd1f8654bfdd31 Mon Sep 17 00:00:00 2001
+From 2a54128817ee35bf68851d98ca5863ba76932c66 Mon Sep 17 00:00:00 2001
 From: Somnath Kotur <somnath.kotur@broadcom.com>
 Date: Fri, 28 Sep 2018 18:59:52 -0700
 Subject: [PATCH] net/bnxt: get rid of ff pools and use VNIC info array
 
+[ upstream commit 51fafb89a9a07df6aca943ce19cd1f8654bfdd31 ]
+
 There was no direct association between the rxq's VNIC and the
 vnic_info[].
 Explicitly associate the two in bnxt_mq_rx_configure().
 
 Fixes: 0a256e4a548b ("net/bnxt: fix Rx ring count limitation")
-Cc: stable@dpdk.org
 
 Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
 ---
@@ -34,10 +35,10 @@
  	struct bnxt_irq         *irq_tbl;
  
 diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
-index 70c761581..28e2be7e8 100644
+index cc7e4391c..c681f4500 100644
 --- a/drivers/net/bnxt/bnxt_ethdev.c
 +++ b/drivers/net/bnxt/bnxt_ethdev.c
-@@ -263,4 +263,7 @@ static int bnxt_init_chip(struct bnxt *bp)
+@@ -264,4 +264,7 @@ static int bnxt_init_chip(struct bnxt *bp)
  		memset(vnic->fw_grp_ids, -1, size);
  
 +		PMD_DRV_LOG(DEBUG, "vnic[%d] = %p vnic->fw_grp_ids = %p\n",
@@ -45,7 +46,7 @@
 +
  		rc = bnxt_hwrm_vnic_alloc(bp, vnic);
  		if (rc) {
-@@ -299,4 +302,8 @@ static int bnxt_init_chip(struct bnxt *bp)
+@@ -300,4 +303,8 @@ static int bnxt_init_chip(struct bnxt *bp)
  			rxq = bp->eth_dev->data->rx_queues[j];
  
 +			PMD_DRV_LOG(DEBUG,
@@ -54,19 +55,19 @@
 +
  			if (rxq->rx_deferred_start)
  				rxq->vnic->fw_grp_ids[j] = INVALID_HW_RING_ID;
-@@ -694,5 +701,4 @@ static void bnxt_dev_close_op(struct rte_eth_dev *eth_dev)
+@@ -695,5 +702,4 @@ static void bnxt_dev_close_op(struct rte_eth_dev *eth_dev)
  		bnxt_dev_stop_op(eth_dev);
  
 -	bnxt_free_mem(bp);
  	if (eth_dev->data->mac_addrs != NULL) {
  		rte_free(eth_dev->data->mac_addrs);
-@@ -714,5 +720,4 @@ static void bnxt_mac_addr_remove_op(struct rte_eth_dev *eth_dev,
+@@ -715,5 +721,4 @@ static void bnxt_mac_addr_remove_op(struct rte_eth_dev *eth_dev,
  	struct bnxt_vnic_info *vnic;
  	struct bnxt_filter_info *filter, *temp_filter;
 -	uint32_t pool = RTE_MIN(MAX_FF_POOLS, ETH_64_POOLS);
  	uint32_t i;
  
-@@ -721,25 +726,22 @@ static void bnxt_mac_addr_remove_op(struct rte_eth_dev *eth_dev,
+@@ -722,25 +727,22 @@ static void bnxt_mac_addr_remove_op(struct rte_eth_dev *eth_dev,
  	 * remove the corresponding MAC addr filter
  	 */
 -	for (i = 0; i < pool; i++) {
@@ -106,14 +107,14 @@
 +			filter = temp_filter;
  		}
  	}
-@@ -751,5 +753,5 @@ static int bnxt_mac_addr_add_op(struct rte_eth_dev *eth_dev,
+@@ -752,5 +754,5 @@ static int bnxt_mac_addr_add_op(struct rte_eth_dev *eth_dev,
  {
  	struct bnxt *bp = (struct bnxt *)eth_dev->data->dev_private;
 -	struct bnxt_vnic_info *vnic = STAILQ_FIRST(&bp->ff_pool[pool]);
 +	struct bnxt_vnic_info *vnic = &bp->vnic_info[pool];
  	struct bnxt_filter_info *filter;
  
-@@ -898,10 +900,8 @@ static int bnxt_reta_update_op(struct rte_eth_dev *eth_dev,
+@@ -899,10 +901,8 @@ static int bnxt_reta_update_op(struct rte_eth_dev *eth_dev,
  	}
  	/* Update the RSS VNIC(s) */
 -	for (i = 0; i < MAX_FF_POOLS; i++) {
@@ -128,14 +129,14 @@
 +		bnxt_hwrm_vnic_rss_cfg(bp, vnic);
  	}
  	return 0;
-@@ -947,5 +947,5 @@ static int bnxt_rss_hash_update_op(struct rte_eth_dev *eth_dev,
+@@ -948,5 +948,5 @@ static int bnxt_rss_hash_update_op(struct rte_eth_dev *eth_dev,
  	struct bnxt_vnic_info *vnic;
  	uint16_t hash_type = 0;
 -	int i;
 +	unsigned int i;
  
  	/*
-@@ -978,19 +978,18 @@ static int bnxt_rss_hash_update_op(struct rte_eth_dev *eth_dev,
+@@ -979,19 +979,18 @@ static int bnxt_rss_hash_update_op(struct rte_eth_dev *eth_dev,
  
  	/* Update the RSS VNIC(s) */
 -	for (i = 0; i < MAX_FF_POOLS; i++) {
@@ -167,7 +168,7 @@
 +		bnxt_hwrm_vnic_rss_cfg(bp, vnic);
  	}
  	return 0;
-@@ -1269,51 +1268,49 @@ static int bnxt_del_vlan_filter(struct bnxt *bp, uint16_t vlan_id)
+@@ -1270,51 +1269,49 @@ static int bnxt_del_vlan_filter(struct bnxt *bp, uint16_t vlan_id)
  		 *      VLAN filter doesn't exist, just skip and continue
  		 */
 -		STAILQ_FOREACH(vnic, &bp->ff_pool[i], next) {
@@ -258,7 +259,7 @@
 +			filter = temp_filter;
  		}
  	}
-@@ -1345,49 +1342,46 @@ static int bnxt_add_vlan_filter(struct bnxt *bp, uint16_t vlan_id)
+@@ -1346,49 +1343,46 @@ static int bnxt_add_vlan_filter(struct bnxt *bp, uint16_t vlan_id)
  		 *    Add a new MAC+VLAN filter
  		 */
 -		STAILQ_FOREACH(vnic, &bp->ff_pool[i], next) {
@@ -347,14 +348,14 @@
 +			filter = temp_filter;
  		}
  	}
-@@ -1397,5 +1391,5 @@ exit:
+@@ -1398,5 +1392,5 @@ exit:
  
  static int bnxt_vlan_filter_set_op(struct rte_eth_dev *eth_dev,
 -				   uint16_t vlan_id, int on)
 +		uint16_t vlan_id, int on)
  {
  	struct bnxt *bp = (struct bnxt *)eth_dev->data->dev_private;
-@@ -1805,6 +1799,6 @@ bnxt_match_and_validate_ether_filter(struct bnxt *bp,
+@@ -1806,6 +1800,6 @@ bnxt_match_and_validate_ether_filter(struct bnxt *bp,
  	}
  
 -	vnic0 = STAILQ_FIRST(&bp->ff_pool[0]);
@@ -363,7 +364,7 @@
 +	vnic = &bp->vnic_info[efilter->queue];
  	if (vnic == NULL) {
  		PMD_DRV_LOG(ERR, "Invalid queue %d\n", efilter->queue);
-@@ -1864,6 +1858,6 @@ bnxt_ethertype_filter(struct rte_eth_dev *dev,
+@@ -1865,6 +1859,6 @@ bnxt_ethertype_filter(struct rte_eth_dev *dev,
  	}
  
 -	vnic0 = STAILQ_FIRST(&bp->ff_pool[0]);
@@ -372,7 +373,7 @@
 +	vnic = &bp->vnic_info[efilter->queue];
  
  	switch (filter_op) {
-@@ -2081,6 +2075,6 @@ bnxt_cfg_ntuple_filter(struct bnxt *bp,
+@@ -2082,6 +2076,6 @@ bnxt_cfg_ntuple_filter(struct bnxt *bp,
  		goto free_filter;
  
 -	vnic = STAILQ_FIRST(&bp->ff_pool[nfilter->queue]);
@@ -381,7 +382,7 @@
 +	vnic0 = &bp->vnic_info[0];
  	filter1 = STAILQ_FIRST(&vnic0->filter);
  	if (filter1 == NULL) {
-@@ -2375,6 +2369,6 @@ bnxt_parse_fdir_filter(struct bnxt *bp,
+@@ -2376,6 +2370,6 @@ bnxt_parse_fdir_filter(struct bnxt *bp,
  	}
  
 -	vnic0 = STAILQ_FIRST(&bp->ff_pool[0]);
@@ -390,7 +391,7 @@
 +	vnic = &bp->vnic_info[fdir->action.rx_queue];
  	if (vnic == NULL) {
  		PMD_DRV_LOG(ERR, "Invalid queue %d\n", fdir->action.rx_queue);
-@@ -2497,7 +2491,7 @@ bnxt_fdir_filter(struct rte_eth_dev *dev,
+@@ -2498,7 +2492,7 @@ bnxt_fdir_filter(struct rte_eth_dev *dev,
  
  		if (fdir->action.behavior == RTE_ETH_FDIR_REJECT)
 -			vnic = STAILQ_FIRST(&bp->ff_pool[0]);
@@ -479,7 +480,7 @@
  		filter1 = bnxt_get_l2_filter(bp, filter, vnic0);
  		if (filter1 == NULL) {
 diff --git a/drivers/net/bnxt/bnxt_rxq.c b/drivers/net/bnxt/bnxt_rxq.c
-index 6d99137a9..5345d3938 100644
+index 832fc9ecc..5f2806aef 100644
 --- a/drivers/net/bnxt/bnxt_rxq.c
 +++ b/drivers/net/bnxt/bnxt_rxq.c
 @@ -44,5 +44,5 @@ int bnxt_mq_rx_configure(struct bnxt *bp)

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

* [dpdk-stable] patch 'net/bnxt: fix uninitialized pointer access in Tx' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (31 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnxt: get rid of ff pools and use VNIC info array' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnxt: fix MTU setting' " Kevin Traynor
                   ` (39 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Somnath Kotur; +Cc: Ajit Khaparde, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 4f7600064faebb6ac09a8b6d1ca1e6a731be83d2 Mon Sep 17 00:00:00 2001
From: Somnath Kotur <somnath.kotur@broadcom.com>
Date: Fri, 28 Sep 2018 18:59:53 -0700
Subject: [PATCH] net/bnxt: fix uninitialized pointer access in Tx

[ upstream commit 63d086a52f0120523f3a33878d3ca0072b2de879 ]

bnxt_start_xmit() was attempting to access an uninitialized ptr - txbd1
which would lead to segmentation fault.
Fix to initialize ptr to NULL and check for the same before access.

Fixes: f10258e39ec2 ("net/bnxt: fix HW Tx checksum offload check")

Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_txr.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_txr.c b/drivers/net/bnxt/bnxt_txr.c
index 67bb35e06..39be7bdfa 100644
--- a/drivers/net/bnxt/bnxt_txr.c
+++ b/drivers/net/bnxt/bnxt_txr.c
@@ -121,5 +121,5 @@ static uint16_t bnxt_start_xmit(struct rte_mbuf *tx_pkt,
 	struct bnxt_tx_ring_info *txr = txq->tx_ring;
 	struct tx_bd_long *txbd;
-	struct tx_bd_long_hi *txbd1;
+	struct tx_bd_long_hi *txbd1 = NULL;
 	uint32_t vlan_tag_flags, cfa_action;
 	bool long_bd = false;
@@ -296,5 +296,6 @@ static uint16_t bnxt_start_xmit(struct rte_mbuf *tx_pkt,
 
 	txbd->flags_type |= TX_BD_LONG_FLAGS_PACKET_END;
-	txbd1->lflags = rte_cpu_to_le_32(txbd1->lflags);
+	if (txbd1)
+		txbd1->lflags = rte_cpu_to_le_32(txbd1->lflags);
 
 	txr->tx_prod = RING_NEXT(txr->tx_ring_struct, txr->tx_prod);
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.889828591 +0000
+++ 0034-net-bnxt-fix-uninitialized-pointer-access-in-Tx.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,14 +1,15 @@
-From 63d086a52f0120523f3a33878d3ca0072b2de879 Mon Sep 17 00:00:00 2001
+From 4f7600064faebb6ac09a8b6d1ca1e6a731be83d2 Mon Sep 17 00:00:00 2001
 From: Somnath Kotur <somnath.kotur@broadcom.com>
 Date: Fri, 28 Sep 2018 18:59:53 -0700
 Subject: [PATCH] net/bnxt: fix uninitialized pointer access in Tx
 
+[ upstream commit 63d086a52f0120523f3a33878d3ca0072b2de879 ]
+
 bnxt_start_xmit() was attempting to access an uninitialized ptr - txbd1
 which would lead to segmentation fault.
 Fix to initialize ptr to NULL and check for the same before access.
 
 Fixes: f10258e39ec2 ("net/bnxt: fix HW Tx checksum offload check")
-Cc: stable@dpdk.org
 
 Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
 Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>

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

* [dpdk-stable] patch 'net/bnxt: fix MTU setting' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (32 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnxt: fix uninitialized pointer access in Tx' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnxt: fix registration of VF async event completion ring' " Kevin Traynor
                   ` (38 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Ajit Khaparde; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From fc789f040204499ff499f12ea23e6f9ed700afec Mon Sep 17 00:00:00 2001
From: Ajit Khaparde <ajit.khaparde@broadcom.com>
Date: Fri, 28 Sep 2018 18:59:54 -0700
Subject: [PATCH] net/bnxt: fix MTU setting

[ upstream commit 80ad678ae715c8bee2f7a396431d3703df245f5a ]

The HW can support maximum frame length of 9600 bytes.
And we are currently capping the max frame size to 9500 bytes.

Fixes: daef48efe5e5 ("net/bnxt: support set MTU")

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt.h        |  2 +-
 drivers/net/bnxt/bnxt_ethdev.c | 10 +++-------
 2 files changed, 4 insertions(+), 8 deletions(-)

diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h
index 8aae0426a..c580ec22b 100644
--- a/drivers/net/bnxt/bnxt.h
+++ b/drivers/net/bnxt/bnxt.h
@@ -21,5 +21,5 @@
 #include "bnxt_cpr.h"
 
-#define BNXT_MAX_MTU		9500
+#define BNXT_MAX_MTU		9574
 #define VLAN_TAG_SIZE		4
 #define BNXT_VF_RSV_NUM_RSS_CTX	1
diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index c681f4500..da9607701 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -453,5 +453,5 @@ static void bnxt_dev_info_get_op(struct rte_eth_dev *eth_dev,
 	dev_info->min_rx_bufsize = 1;
 	dev_info->max_rx_pktlen = BNXT_MAX_MTU + ETHER_HDR_LEN + ETHER_CRC_LEN
-				  + VLAN_TAG_SIZE;
+				  + VLAN_TAG_SIZE * 2;
 
 	dev_info->rx_offload_capa = BNXT_DEV_RX_OFFLOAD_SUPPORT;
@@ -1566,19 +1566,15 @@ static int bnxt_mtu_set_op(struct rte_eth_dev *eth_dev, uint16_t new_mtu)
 	struct bnxt *bp = eth_dev->data->dev_private;
 	struct rte_eth_dev_info dev_info;
-	uint32_t max_dev_mtu;
 	uint32_t rc = 0;
 	uint32_t i;
 
 	bnxt_dev_info_get_op(eth_dev, &dev_info);
-	max_dev_mtu = dev_info.max_rx_pktlen -
-		      ETHER_HDR_LEN - ETHER_CRC_LEN - VLAN_TAG_SIZE * 2;
 
-	if (new_mtu < ETHER_MIN_MTU || new_mtu > max_dev_mtu) {
+	if (new_mtu < ETHER_MIN_MTU || new_mtu > BNXT_MAX_MTU) {
 		PMD_DRV_LOG(ERR, "MTU requested must be within (%d, %d)\n",
-			ETHER_MIN_MTU, max_dev_mtu);
+			ETHER_MIN_MTU, BNXT_MAX_MTU);
 		return -EINVAL;
 	}
 
-
 	if (new_mtu > ETHER_MTU) {
 		bp->flags |= BNXT_FLAG_JUMBO;
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.912855667 +0000
+++ 0035-net-bnxt-fix-MTU-setting.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,13 +1,14 @@
-From 80ad678ae715c8bee2f7a396431d3703df245f5a Mon Sep 17 00:00:00 2001
+From fc789f040204499ff499f12ea23e6f9ed700afec Mon Sep 17 00:00:00 2001
 From: Ajit Khaparde <ajit.khaparde@broadcom.com>
 Date: Fri, 28 Sep 2018 18:59:54 -0700
 Subject: [PATCH] net/bnxt: fix MTU setting
 
+[ upstream commit 80ad678ae715c8bee2f7a396431d3703df245f5a ]
+
 The HW can support maximum frame length of 9600 bytes.
 And we are currently capping the max frame size to 9500 bytes.
 
 Fixes: daef48efe5e5 ("net/bnxt: support set MTU")
-Cc: stable@dpdk.org
 
 Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
 ---
@@ -27,17 +28,17 @@
  #define VLAN_TAG_SIZE		4
  #define BNXT_VF_RSV_NUM_RSS_CTX	1
 diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
-index 28e2be7e8..8c156e263 100644
+index c681f4500..da9607701 100644
 --- a/drivers/net/bnxt/bnxt_ethdev.c
 +++ b/drivers/net/bnxt/bnxt_ethdev.c
-@@ -452,5 +452,5 @@ static void bnxt_dev_info_get_op(struct rte_eth_dev *eth_dev,
+@@ -453,5 +453,5 @@ static void bnxt_dev_info_get_op(struct rte_eth_dev *eth_dev,
  	dev_info->min_rx_bufsize = 1;
  	dev_info->max_rx_pktlen = BNXT_MAX_MTU + ETHER_HDR_LEN + ETHER_CRC_LEN
 -				  + VLAN_TAG_SIZE;
 +				  + VLAN_TAG_SIZE * 2;
  
  	dev_info->rx_offload_capa = BNXT_DEV_RX_OFFLOAD_SUPPORT;
-@@ -1565,19 +1565,15 @@ static int bnxt_mtu_set_op(struct rte_eth_dev *eth_dev, uint16_t new_mtu)
+@@ -1566,19 +1566,15 @@ static int bnxt_mtu_set_op(struct rte_eth_dev *eth_dev, uint16_t new_mtu)
  	struct bnxt *bp = eth_dev->data->dev_private;
  	struct rte_eth_dev_info dev_info;
 -	uint32_t max_dev_mtu;

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

* [dpdk-stable] patch 'net/bnxt: fix registration of VF async event completion ring' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (33 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnxt: fix MTU setting' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnxt: set MAC filtering as outer for non tunnel frames' " Kevin Traynor
                   ` (37 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Yongping Zhang; +Cc: Ajit Khaparde, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 709339869dbe19f5950b20e85c9688ad96a48f60 Mon Sep 17 00:00:00 2001
From: Yongping Zhang <yongping.zhang@broadcom.com>
Date: Fri, 28 Sep 2018 19:00:01 -0700
Subject: [PATCH] net/bnxt: fix registration of VF async event completion ring

[ upstream commit 5f267bae3ee6da6ee158276055255b6ef5287caf ]

While registering vf's event completion ring to FW, use the wrong
macro, FW doesn't set up the event completion ring successfully,
VF can't receive any async event.

Fixes: 4535cad39515 ("net/bnxt: handle VF/PF initialization appropriately")

Signed-off-by: Yongping Zhang <yongping.zhang@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_hwrm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index c682488ae..627f78805 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -2981,5 +2981,5 @@ int bnxt_hwrm_vf_func_cfg_def_cp(struct bnxt *bp)
 
 	req.enables = rte_cpu_to_le_32(
-			HWRM_FUNC_CFG_INPUT_ENABLES_ASYNC_EVENT_CR);
+			HWRM_FUNC_VF_CFG_INPUT_ENABLES_ASYNC_EVENT_CR);
 	req.async_event_cr = rte_cpu_to_le_16(
 			bp->def_cp_ring->cp_ring_struct->fw_ring_id);
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.939672043 +0000
+++ 0036-net-bnxt-fix-registration-of-VF-async-event-completi.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,14 +1,15 @@
-From 5f267bae3ee6da6ee158276055255b6ef5287caf Mon Sep 17 00:00:00 2001
+From 709339869dbe19f5950b20e85c9688ad96a48f60 Mon Sep 17 00:00:00 2001
 From: Yongping Zhang <yongping.zhang@broadcom.com>
 Date: Fri, 28 Sep 2018 19:00:01 -0700
 Subject: [PATCH] net/bnxt: fix registration of VF async event completion ring
 
+[ upstream commit 5f267bae3ee6da6ee158276055255b6ef5287caf ]
+
 While registering vf's event completion ring to FW, use the wrong
 macro, FW doesn't set up the event completion ring successfully,
 VF can't receive any async event.
 
 Fixes: 4535cad39515 ("net/bnxt: handle VF/PF initialization appropriately")
-Cc: stable@dpdk.org
 
 Signed-off-by: Yongping Zhang <yongping.zhang@broadcom.com>
 Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
@@ -17,10 +18,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
-index 62da254b9..51fe3a4c2 100644
+index c682488ae..627f78805 100644
 --- a/drivers/net/bnxt/bnxt_hwrm.c
 +++ b/drivers/net/bnxt/bnxt_hwrm.c
-@@ -3002,5 +3002,5 @@ int bnxt_hwrm_vf_func_cfg_def_cp(struct bnxt *bp)
+@@ -2981,5 +2981,5 @@ int bnxt_hwrm_vf_func_cfg_def_cp(struct bnxt *bp)
  
  	req.enables = rte_cpu_to_le_32(
 -			HWRM_FUNC_CFG_INPUT_ENABLES_ASYNC_EVENT_CR);

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

* [dpdk-stable] patch 'net/bnxt: set MAC filtering as outer for non tunnel frames' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (34 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnxt: fix registration of VF async event completion ring' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnxt: set a VNIC as default only once' " Kevin Traynor
                   ` (36 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Ajit Khaparde; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 46110b845406c2d74a2a8eeef815963c85128efd Mon Sep 17 00:00:00 2001
From: Ajit Khaparde <ajit.khaparde@broadcom.com>
Date: Fri, 28 Sep 2018 19:00:02 -0700
Subject: [PATCH] net/bnxt: set MAC filtering as outer for non tunnel frames

[ upstream commit 50d3c51baecc5906cd72de549cc99b5c283aee96 ]

We need to set HWRM_CFA_L2_FILTER_ALLOC_INPUT_FLAGS_OUTERMOST bit in
L2_FILTER_ALLOC for filtering non-tunnel packets based on outermost MAC.

Fixes: f92735db1e4c ("net/bnxt: add L2 filter alloc/init/free")

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_hwrm.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index 627f78805..41d8b93c3 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -379,4 +379,6 @@ int bnxt_hwrm_set_l2_filter(struct bnxt *bp,
 
 	req.flags = rte_cpu_to_le_32(filter->flags);
+	req.flags |=
+	rte_cpu_to_le_32(HWRM_CFA_L2_FILTER_ALLOC_INPUT_FLAGS_OUTERMOST);
 
 	enables = filter->enables |
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.965918224 +0000
+++ 0037-net-bnxt-set-MAC-filtering-as-outer-for-non-tunnel-f.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,13 +1,14 @@
-From 50d3c51baecc5906cd72de549cc99b5c283aee96 Mon Sep 17 00:00:00 2001
+From 46110b845406c2d74a2a8eeef815963c85128efd Mon Sep 17 00:00:00 2001
 From: Ajit Khaparde <ajit.khaparde@broadcom.com>
 Date: Fri, 28 Sep 2018 19:00:02 -0700
 Subject: [PATCH] net/bnxt: set MAC filtering as outer for non tunnel frames
 
+[ upstream commit 50d3c51baecc5906cd72de549cc99b5c283aee96 ]
+
 We need to set HWRM_CFA_L2_FILTER_ALLOC_INPUT_FLAGS_OUTERMOST bit in
 L2_FILTER_ALLOC for filtering non-tunnel packets based on outermost MAC.
 
 Fixes: f92735db1e4c ("net/bnxt: add L2 filter alloc/init/free")
-Cc: stable@dpdk.org
 
 Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
 ---
@@ -15,10 +16,10 @@
  1 file changed, 2 insertions(+)
 
 diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
-index 51fe3a4c2..b605659ed 100644
+index 627f78805..41d8b93c3 100644
 --- a/drivers/net/bnxt/bnxt_hwrm.c
 +++ b/drivers/net/bnxt/bnxt_hwrm.c
-@@ -384,4 +384,6 @@ int bnxt_hwrm_set_l2_filter(struct bnxt *bp,
+@@ -379,4 +379,6 @@ int bnxt_hwrm_set_l2_filter(struct bnxt *bp,
  
  	req.flags = rte_cpu_to_le_32(filter->flags);
 +	req.flags |=

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

* [dpdk-stable] patch 'net/bnxt: set a VNIC as default only once' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (35 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnxt: set MAC filtering as outer for non tunnel frames' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnxt: set VLAN strip mode before default VNIC cfg' " Kevin Traynor
                   ` (35 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Ajit Khaparde; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 3cb7778df73f9d486659a5c4a6b0d09147a13fcd Mon Sep 17 00:00:00 2001
From: Ajit Khaparde <ajit.khaparde@broadcom.com>
Date: Fri, 28 Sep 2018 19:00:03 -0700
Subject: [PATCH] net/bnxt: set a VNIC as default only once

[ upstream commit 5bf10cdb67db5ee7308cc752b51f0f12dcdcb0e8 ]

If a vnic is configured as default and the setting has not changed,
there is no need to issue this setting again to the FW.

Fixes: db678d5c2b54 ("net/bnxt: add HWRM VNIC configure")

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt.h      | 1 +
 drivers/net/bnxt/bnxt_hwrm.c | 9 ++++++++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h
index c580ec22b..84b7cbd3d 100644
--- a/drivers/net/bnxt/bnxt.h
+++ b/drivers/net/bnxt/bnxt.h
@@ -251,4 +251,5 @@ struct bnxt {
 #define BNXT_FLAG_PTP_SUPPORTED	(1 << 6)
 #define BNXT_FLAG_MULTI_HOST    (1 << 7)
+#define BNXT_FLAG_DFLT_VNIC_SET	(1 << 12)
 #define BNXT_FLAG_NEW_RM	(1 << 30)
 #define BNXT_FLAG_INIT_DONE	(1 << 31)
diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index 41d8b93c3..05217ccdb 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -1448,7 +1448,10 @@ int bnxt_hwrm_vnic_cfg(struct bnxt *bp, struct bnxt_vnic_info *vnic)
 	req.lb_rule = rte_cpu_to_le_16(vnic->lb_rule);
 	req.mru = rte_cpu_to_le_16(vnic->mru);
-	if (vnic->func_default)
+	/* Configure default VNIC only once. */
+	if (vnic->func_default && !(bp->flags & BNXT_FLAG_DFLT_VNIC_SET)) {
 		req.flags |=
 		    rte_cpu_to_le_32(HWRM_VNIC_CFG_INPUT_FLAGS_DEFAULT);
+		bp->flags |= BNXT_FLAG_DFLT_VNIC_SET;
+	}
 	if (vnic->vlan_strip)
 		req.flags |=
@@ -1588,4 +1591,8 @@ int bnxt_hwrm_vnic_free(struct bnxt *bp, struct bnxt_vnic_info *vnic)
 
 	vnic->fw_vnic_id = INVALID_HW_RING_ID;
+	/* Configure default VNIC again if necessary. */
+	if (vnic->func_default && (bp->flags & BNXT_FLAG_DFLT_VNIC_SET))
+		bp->flags &= ~BNXT_FLAG_DFLT_VNIC_SET;
+
 	return rc;
 }
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:31.992730184 +0000
+++ 0038-net-bnxt-set-a-VNIC-as-default-only-once.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,13 +1,14 @@
-From 5bf10cdb67db5ee7308cc752b51f0f12dcdcb0e8 Mon Sep 17 00:00:00 2001
+From 3cb7778df73f9d486659a5c4a6b0d09147a13fcd Mon Sep 17 00:00:00 2001
 From: Ajit Khaparde <ajit.khaparde@broadcom.com>
 Date: Fri, 28 Sep 2018 19:00:03 -0700
 Subject: [PATCH] net/bnxt: set a VNIC as default only once
 
+[ upstream commit 5bf10cdb67db5ee7308cc752b51f0f12dcdcb0e8 ]
+
 If a vnic is configured as default and the setting has not changed,
 there is no need to issue this setting again to the FW.
 
 Fixes: db678d5c2b54 ("net/bnxt: add HWRM VNIC configure")
-Cc: stable@dpdk.org
 
 Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
 ---
@@ -16,20 +17,20 @@
  2 files changed, 9 insertions(+), 1 deletion(-)
 
 diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h
-index 75b7215ce..f75b0ad3c 100644
+index c580ec22b..84b7cbd3d 100644
 --- a/drivers/net/bnxt/bnxt.h
 +++ b/drivers/net/bnxt/bnxt.h
-@@ -262,4 +262,5 @@ struct bnxt {
- #define BNXT_FLAG_KONG_MB_EN	(1 << 10)
- #define BNXT_FLAG_TRUSTED_VF_EN	(1 << 11)
+@@ -251,4 +251,5 @@ struct bnxt {
+ #define BNXT_FLAG_PTP_SUPPORTED	(1 << 6)
+ #define BNXT_FLAG_MULTI_HOST    (1 << 7)
 +#define BNXT_FLAG_DFLT_VNIC_SET	(1 << 12)
  #define BNXT_FLAG_NEW_RM	(1 << 30)
  #define BNXT_FLAG_INIT_DONE	(1 << 31)
 diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
-index b605659ed..38698e214 100644
+index 41d8b93c3..05217ccdb 100644
 --- a/drivers/net/bnxt/bnxt_hwrm.c
 +++ b/drivers/net/bnxt/bnxt_hwrm.c
-@@ -1461,7 +1461,10 @@ int bnxt_hwrm_vnic_cfg(struct bnxt *bp, struct bnxt_vnic_info *vnic)
+@@ -1448,7 +1448,10 @@ int bnxt_hwrm_vnic_cfg(struct bnxt *bp, struct bnxt_vnic_info *vnic)
  	req.lb_rule = rte_cpu_to_le_16(vnic->lb_rule);
  	req.mru = rte_cpu_to_le_16(vnic->mru);
 -	if (vnic->func_default)
@@ -41,7 +42,7 @@
 +	}
  	if (vnic->vlan_strip)
  		req.flags |=
-@@ -1601,4 +1604,8 @@ int bnxt_hwrm_vnic_free(struct bnxt *bp, struct bnxt_vnic_info *vnic)
+@@ -1588,4 +1591,8 @@ int bnxt_hwrm_vnic_free(struct bnxt *bp, struct bnxt_vnic_info *vnic)
  
  	vnic->fw_vnic_id = INVALID_HW_RING_ID;
 +	/* Configure default VNIC again if necessary. */

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

* [dpdk-stable] patch 'net/bnxt: set VLAN strip mode before default VNIC cfg' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (36 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnxt: set a VNIC as default only once' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnxt: remove excess log messages' " Kevin Traynor
                   ` (34 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Bei Sun; +Cc: Ajit Khaparde, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From f5ae798d3b5411a623f6321d8ddd148f5e992271 Mon Sep 17 00:00:00 2001
From: Bei Sun <bei.sun@broadcom.com>
Date: Fri, 28 Sep 2018 19:00:04 -0700
Subject: [PATCH] net/bnxt: set VLAN strip mode before default VNIC cfg

[ upstream commit 3153ec8bd1eedbc6d34671b0e2b51bf97896caa3 ]

Firmware sets pf pair in default VNIC cfg. If the VLAN strip
setting is not available at this time, it will not be
configured correctly in the CFA.
Set the desired VLAN strip mode before default VNIC configuration.

Fixes: 7fe5668d2ea3 ("net/bnxt: support VLAN filter and strip")

Signed-off-by: Bei Sun <bei.sun@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_ethdev.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index da9607701..91123edef 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -204,5 +204,7 @@ static int bnxt_init_chip(struct bnxt *bp)
 	struct rte_eth_link new;
 	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(bp->eth_dev);
+	struct rte_eth_conf *dev_conf = &bp->eth_dev->data->dev_conf;
 	struct rte_intr_handle *intr_handle = &pci_dev->intr_handle;
+	uint64_t rx_offloads = dev_conf->rxmode.offloads;
 	uint32_t intr_vector = 0;
 	uint32_t queue_id, base = BNXT_MISC_VEC_ID;
@@ -285,4 +287,14 @@ static int bnxt_init_chip(struct bnxt *bp)
 		}
 
+		/*
+		 * Firmware sets pf pair in default vnic cfg. If the VLAN strip
+		 * setting is not available at this time, it will not be
+		 * configured correctly in the CFA.
+		 */
+		if (rx_offloads & DEV_RX_OFFLOAD_VLAN_STRIP)
+			vnic->vlan_strip = true;
+		else
+			vnic->vlan_strip = false;
+
 		rc = bnxt_hwrm_vnic_cfg(bp, vnic);
 		if (rc) {
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.021374486 +0000
+++ 0039-net-bnxt-set-VLAN-strip-mode-before-default-VNIC-cfg.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,15 +1,16 @@
-From 3153ec8bd1eedbc6d34671b0e2b51bf97896caa3 Mon Sep 17 00:00:00 2001
+From f5ae798d3b5411a623f6321d8ddd148f5e992271 Mon Sep 17 00:00:00 2001
 From: Bei Sun <bei.sun@broadcom.com>
 Date: Fri, 28 Sep 2018 19:00:04 -0700
 Subject: [PATCH] net/bnxt: set VLAN strip mode before default VNIC cfg
 
+[ upstream commit 3153ec8bd1eedbc6d34671b0e2b51bf97896caa3 ]
+
 Firmware sets pf pair in default VNIC cfg. If the VLAN strip
 setting is not available at this time, it will not be
 configured correctly in the CFA.
 Set the desired VLAN strip mode before default VNIC configuration.
 
 Fixes: 7fe5668d2ea3 ("net/bnxt: support VLAN filter and strip")
-Cc: stable@dpdk.org
 
 Signed-off-by: Bei Sun <bei.sun@broadcom.com>
 Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
@@ -18,10 +19,10 @@
  1 file changed, 12 insertions(+)
 
 diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
-index 0bc8c5004..88e026c7d 100644
+index da9607701..91123edef 100644
 --- a/drivers/net/bnxt/bnxt_ethdev.c
 +++ b/drivers/net/bnxt/bnxt_ethdev.c
-@@ -203,5 +203,7 @@ static int bnxt_init_chip(struct bnxt *bp)
+@@ -204,5 +204,7 @@ static int bnxt_init_chip(struct bnxt *bp)
  	struct rte_eth_link new;
  	struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(bp->eth_dev);
 +	struct rte_eth_conf *dev_conf = &bp->eth_dev->data->dev_conf;
@@ -29,7 +30,7 @@
 +	uint64_t rx_offloads = dev_conf->rxmode.offloads;
  	uint32_t intr_vector = 0;
  	uint32_t queue_id, base = BNXT_MISC_VEC_ID;
-@@ -284,4 +286,14 @@ static int bnxt_init_chip(struct bnxt *bp)
+@@ -285,4 +287,14 @@ static int bnxt_init_chip(struct bnxt *bp)
  		}
  
 +		/*

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

* [dpdk-stable] patch 'net/bnxt: remove excess log messages' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (37 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnxt: set VLAN strip mode before default VNIC cfg' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnxt: reduce polling interval for valid bit' " Kevin Traynor
                   ` (33 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Ajit Khaparde; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From e7a4eaeaa21af8d0631eb3d2627ff0cb79dd1dcd Mon Sep 17 00:00:00 2001
From: Ajit Khaparde <ajit.khaparde@broadcom.com>
Date: Fri, 28 Sep 2018 19:00:05 -0700
Subject: [PATCH] net/bnxt: remove excess log messages

[ upstream commit 6f93b2aa2da8a1b0d1c5149e88b6428ac00296a5 ]

When the firmware version and the driver HWRM version do not match,
we are logging some messages. These messages unnecessarily clutter
the logs and can add to the noise. We are logging the HWRM version
and the firmware version anyway. The difference in version numbers
can be gleaned from that. Removing the remaining log messages.

Fixes: 804e746c7b73 ("net/bnxt: add hardware resource manager init code")

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_hwrm.c | 20 --------------------
 1 file changed, 20 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index 05217ccdb..982d2c2bb 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -785,5 +785,4 @@ int bnxt_hwrm_ver_get(struct bnxt *bp)
 	struct hwrm_ver_get_input req = {.req_type = 0 };
 	struct hwrm_ver_get_output *resp = bp->hwrm_cmd_resp_addr;
-	uint32_t my_version;
 	uint32_t fw_version;
 	uint16_t max_resp_len;
@@ -813,8 +812,4 @@ int bnxt_hwrm_ver_get(struct bnxt *bp)
 		HWRM_VERSION_MAJOR, HWRM_VERSION_MINOR, HWRM_VERSION_UPDATE);
 
-	my_version = HWRM_VERSION_MAJOR << 16;
-	my_version |= HWRM_VERSION_MINOR << 8;
-	my_version |= HWRM_VERSION_UPDATE;
-
 	fw_version = resp->hwrm_intf_maj_8b << 16;
 	fw_version |= resp->hwrm_intf_min_8b << 8;
@@ -828,19 +823,4 @@ int bnxt_hwrm_ver_get(struct bnxt *bp)
 	}
 
-	if (my_version != fw_version) {
-		PMD_DRV_LOG(INFO, "BNXT Driver/HWRM API mismatch.\n");
-		if (my_version < fw_version) {
-			PMD_DRV_LOG(INFO,
-				"Firmware API version is newer than driver.\n");
-			PMD_DRV_LOG(INFO,
-				"The driver may be missing features.\n");
-		} else {
-			PMD_DRV_LOG(INFO,
-				"Firmware API version is older than driver.\n");
-			PMD_DRV_LOG(INFO,
-				"Not all driver features may be functional.\n");
-		}
-	}
-
 	if (bp->max_req_len > resp->max_req_win_len) {
 		PMD_DRV_LOG(ERR, "Unsupported request length\n");
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.048668057 +0000
+++ 0040-net-bnxt-remove-excess-log-messages.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,8 +1,10 @@
-From 6f93b2aa2da8a1b0d1c5149e88b6428ac00296a5 Mon Sep 17 00:00:00 2001
+From e7a4eaeaa21af8d0631eb3d2627ff0cb79dd1dcd Mon Sep 17 00:00:00 2001
 From: Ajit Khaparde <ajit.khaparde@broadcom.com>
 Date: Fri, 28 Sep 2018 19:00:05 -0700
 Subject: [PATCH] net/bnxt: remove excess log messages
 
+[ upstream commit 6f93b2aa2da8a1b0d1c5149e88b6428ac00296a5 ]
+
 When the firmware version and the driver HWRM version do not match,
 we are logging some messages. These messages unnecessarily clutter
 the logs and can add to the noise. We are logging the HWRM version
@@ -10,7 +12,6 @@
 can be gleaned from that. Removing the remaining log messages.
 
 Fixes: 804e746c7b73 ("net/bnxt: add hardware resource manager init code")
-Cc: stable@dpdk.org
 
 Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
 ---
@@ -18,16 +19,16 @@
  1 file changed, 20 deletions(-)
 
 diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
-index 38698e214..76e443ec1 100644
+index 05217ccdb..982d2c2bb 100644
 --- a/drivers/net/bnxt/bnxt_hwrm.c
 +++ b/drivers/net/bnxt/bnxt_hwrm.c
-@@ -790,5 +790,4 @@ int bnxt_hwrm_ver_get(struct bnxt *bp)
+@@ -785,5 +785,4 @@ int bnxt_hwrm_ver_get(struct bnxt *bp)
  	struct hwrm_ver_get_input req = {.req_type = 0 };
  	struct hwrm_ver_get_output *resp = bp->hwrm_cmd_resp_addr;
 -	uint32_t my_version;
  	uint32_t fw_version;
  	uint16_t max_resp_len;
-@@ -818,8 +817,4 @@ int bnxt_hwrm_ver_get(struct bnxt *bp)
+@@ -813,8 +812,4 @@ int bnxt_hwrm_ver_get(struct bnxt *bp)
  		HWRM_VERSION_MAJOR, HWRM_VERSION_MINOR, HWRM_VERSION_UPDATE);
  
 -	my_version = HWRM_VERSION_MAJOR << 16;
@@ -36,7 +37,7 @@
 -
  	fw_version = resp->hwrm_intf_maj_8b << 16;
  	fw_version |= resp->hwrm_intf_min_8b << 8;
-@@ -833,19 +828,4 @@ int bnxt_hwrm_ver_get(struct bnxt *bp)
+@@ -828,19 +823,4 @@ int bnxt_hwrm_ver_get(struct bnxt *bp)
  	}
  
 -	if (my_version != fw_version) {

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

* [dpdk-stable] patch 'net/bnxt: reduce polling interval for valid bit' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (38 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnxt: remove excess log messages' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'app/testpmd: check Rx VLAN offload flag to print VLAN TCI' " Kevin Traynor
                   ` (32 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Xiaoxin Peng; +Cc: Ajit Khaparde, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From b4f2f620c2a74a4d40b55267934377d566681c02 Mon Sep 17 00:00:00 2001
From: Xiaoxin Peng <xiaoxin.peng@broadcom.com>
Date: Fri, 28 Sep 2018 19:00:06 -0700
Subject: [PATCH] net/bnxt: reduce polling interval for valid bit

[ upstream commit a830900063768646a70e5aef1c23ba2530fbc323 ]

Change polling interval for valid bit in bnxt_hwrm_send_message
Poll every 1us instead of 600us.

Fixes: 804e746c7b73 ("net/bnxt: add hardware resource manager init code")

Signed-off-by: Xiaoxin Peng <xiaoxin.peng@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_hwrm.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index 982d2c2bb..80d0ebbb0 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -27,5 +27,5 @@
 #include <rte_io.h>
 
-#define HWRM_CMD_TIMEOUT		10000
+#define HWRM_CMD_TIMEOUT		6000000
 #define HWRM_SPEC_CODE_1_8_3		0x10803
 #define HWRM_VERSION_1_9_1		0x10901
@@ -132,5 +132,5 @@ static int bnxt_hwrm_send_message(struct bnxt *bp, void *msg,
 				break;
 		}
-		rte_delay_us(600);
+		rte_delay_us(1);
 	}
 
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.074350298 +0000
+++ 0041-net-bnxt-reduce-polling-interval-for-valid-bit.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,13 +1,14 @@
-From a830900063768646a70e5aef1c23ba2530fbc323 Mon Sep 17 00:00:00 2001
+From b4f2f620c2a74a4d40b55267934377d566681c02 Mon Sep 17 00:00:00 2001
 From: Xiaoxin Peng <xiaoxin.peng@broadcom.com>
 Date: Fri, 28 Sep 2018 19:00:06 -0700
 Subject: [PATCH] net/bnxt: reduce polling interval for valid bit
 
+[ upstream commit a830900063768646a70e5aef1c23ba2530fbc323 ]
+
 Change polling interval for valid bit in bnxt_hwrm_send_message
 Poll every 1us instead of 600us.
 
 Fixes: 804e746c7b73 ("net/bnxt: add hardware resource manager init code")
-Cc: stable@dpdk.org
 
 Signed-off-by: Xiaoxin Peng <xiaoxin.peng@broadcom.com>
 Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
@@ -16,7 +17,7 @@
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
-index 76e443ec1..999976054 100644
+index 982d2c2bb..80d0ebbb0 100644
 --- a/drivers/net/bnxt/bnxt_hwrm.c
 +++ b/drivers/net/bnxt/bnxt_hwrm.c
 @@ -27,5 +27,5 @@
@@ -26,7 +27,7 @@
 +#define HWRM_CMD_TIMEOUT		6000000
  #define HWRM_SPEC_CODE_1_8_3		0x10803
  #define HWRM_VERSION_1_9_1		0x10901
-@@ -136,5 +136,5 @@ static int bnxt_hwrm_send_message(struct bnxt *bp, void *msg,
+@@ -132,5 +132,5 @@ static int bnxt_hwrm_send_message(struct bnxt *bp, void *msg,
  				break;
  		}
 -		rte_delay_us(600);

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

* [dpdk-stable] patch 'app/testpmd: check Rx VLAN offload flag to print VLAN TCI' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (39 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnxt: reduce polling interval for valid bit' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'app/testpmd: fix csum parse-tunnel command invocation' " Kevin Traynor
                   ` (31 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Hyong Youb Kim; +Cc: John Daley, Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From bc5b6dbe026a755af03a5455d16c95168ce7b9c6 Mon Sep 17 00:00:00 2001
From: Hyong Youb Kim <hyonkim@cisco.com>
Date: Tue, 25 Sep 2018 20:06:17 -0700
Subject: [PATCH] app/testpmd: check Rx VLAN offload flag to print VLAN TCI

[ upstream commit 597177163b851ae365f5c0113c448fae83370f99 ]

Since the following commit, PKT_RX_VLAN indicates the presence of
mbuf's vlan_tci, not PKT_RX_VLAN_STRIPPED.

Fixes: 380a7aab1ae2 ("mbuf: rename deprecated VLAN flags")

Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
Reviewed-by: John Daley <johndale@cisco.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 app/test-pmd/rxonly.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/app/test-pmd/rxonly.c b/app/test-pmd/rxonly.c
index a93d80612..e8d226624 100644
--- a/app/test-pmd/rxonly.c
+++ b/app/test-pmd/rxonly.c
@@ -131,5 +131,5 @@ pkt_burst_receive(struct fwd_stream *fs)
 		if (ol_flags & PKT_RX_TIMESTAMP)
 			printf(" - timestamp %"PRIu64" ", mb->timestamp);
-		if (ol_flags & PKT_RX_VLAN_STRIPPED)
+		if (ol_flags & PKT_RX_VLAN)
 			printf(" - VLAN tci=0x%x", mb->vlan_tci);
 		if (ol_flags & PKT_RX_QINQ_STRIPPED)
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.099453858 +0000
+++ 0042-app-testpmd-check-Rx-VLAN-offload-flag-to-print-VLAN.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,13 +1,14 @@
-From 597177163b851ae365f5c0113c448fae83370f99 Mon Sep 17 00:00:00 2001
+From bc5b6dbe026a755af03a5455d16c95168ce7b9c6 Mon Sep 17 00:00:00 2001
 From: Hyong Youb Kim <hyonkim@cisco.com>
 Date: Tue, 25 Sep 2018 20:06:17 -0700
 Subject: [PATCH] app/testpmd: check Rx VLAN offload flag to print VLAN TCI
 
+[ upstream commit 597177163b851ae365f5c0113c448fae83370f99 ]
+
 Since the following commit, PKT_RX_VLAN indicates the presence of
 mbuf's vlan_tci, not PKT_RX_VLAN_STRIPPED.
 
 Fixes: 380a7aab1ae2 ("mbuf: rename deprecated VLAN flags")
-Cc: stable@dpdk.org
 
 Signed-off-by: Hyong Youb Kim <hyonkim@cisco.com>
 Reviewed-by: John Daley <johndale@cisco.com>

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

* [dpdk-stable] patch 'app/testpmd: fix csum parse-tunnel command invocation' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (40 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'app/testpmd: check Rx VLAN offload flag to print VLAN TCI' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'doc: fix typos in the flow API guide' " Kevin Traynor
                   ` (30 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Jerin Jacob; +Cc: Bernard Iremonger, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 765b7d02e51a47fd25fd9de2e3522d25f7a20e55 Mon Sep 17 00:00:00 2001
From: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Date: Tue, 2 Oct 2018 19:05:47 +0530
Subject: [PATCH] app/testpmd: fix csum parse-tunnel command invocation

[ upstream commit 5b48cd159536b70a943ae8246c2f717183818b19 ]

Based on the documentation and help print, the sub command
for csum suppose to be "parse-tunnel" instead of "parse_tunnel".

Fixes: 64fc36064dc3 ("app/testpmd: add csum parse-tunnel command")

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 app/test-pmd/cmdline.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 589121d69..7a6fe5d33 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -4280,5 +4280,5 @@ cmdline_parse_token_string_t cmd_csum_tunnel_csum =
 cmdline_parse_token_string_t cmd_csum_tunnel_parse =
 	TOKEN_STRING_INITIALIZER(struct cmd_csum_tunnel_result,
-				parse, "parse_tunnel");
+				parse, "parse-tunnel");
 cmdline_parse_token_string_t cmd_csum_tunnel_onoff =
 	TOKEN_STRING_INITIALIZER(struct cmd_csum_tunnel_result,
@@ -4291,5 +4291,5 @@ cmdline_parse_inst_t cmd_csum_tunnel = {
 	.f = cmd_csum_tunnel_parsed,
 	.data = NULL,
-	.help_str = "csum parse_tunnel on|off <port_id>: "
+	.help_str = "csum parse-tunnel on|off <port_id>: "
 		"Enable/Disable parsing of tunnels for csum engine",
 	.tokens = {
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.122614288 +0000
+++ 0043-app-testpmd-fix-csum-parse-tunnel-command-invocation.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,13 +1,14 @@
-From 5b48cd159536b70a943ae8246c2f717183818b19 Mon Sep 17 00:00:00 2001
+From 765b7d02e51a47fd25fd9de2e3522d25f7a20e55 Mon Sep 17 00:00:00 2001
 From: Jerin Jacob <jerin.jacob@caviumnetworks.com>
 Date: Tue, 2 Oct 2018 19:05:47 +0530
 Subject: [PATCH] app/testpmd: fix csum parse-tunnel command invocation
 
+[ upstream commit 5b48cd159536b70a943ae8246c2f717183818b19 ]
+
 Based on the documentation and help print, the sub command
 for csum suppose to be "parse-tunnel" instead of "parse_tunnel".
 
 Fixes: 64fc36064dc3 ("app/testpmd: add csum parse-tunnel command")
-Cc: stable@dpdk.org
 
 Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
 Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
@@ -16,17 +17,17 @@
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
-index 0c5399dc4..3376a665c 100644
+index 589121d69..7a6fe5d33 100644
 --- a/app/test-pmd/cmdline.c
 +++ b/app/test-pmd/cmdline.c
-@@ -4368,5 +4368,5 @@ cmdline_parse_token_string_t cmd_csum_tunnel_csum =
+@@ -4280,5 +4280,5 @@ cmdline_parse_token_string_t cmd_csum_tunnel_csum =
  cmdline_parse_token_string_t cmd_csum_tunnel_parse =
  	TOKEN_STRING_INITIALIZER(struct cmd_csum_tunnel_result,
 -				parse, "parse_tunnel");
 +				parse, "parse-tunnel");
  cmdline_parse_token_string_t cmd_csum_tunnel_onoff =
  	TOKEN_STRING_INITIALIZER(struct cmd_csum_tunnel_result,
-@@ -4379,5 +4379,5 @@ cmdline_parse_inst_t cmd_csum_tunnel = {
+@@ -4291,5 +4291,5 @@ cmdline_parse_inst_t cmd_csum_tunnel = {
  	.f = cmd_csum_tunnel_parsed,
  	.data = NULL,
 -	.help_str = "csum parse_tunnel on|off <port_id>: "

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

* [dpdk-stable] patch 'doc: fix typos in the flow API guide' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (41 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'app/testpmd: fix csum parse-tunnel command invocation' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/sfc: receive prepared packets even in Rx exception case' " Kevin Traynor
                   ` (29 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Ilya Maximets; +Cc: Ferruh Yigit, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 7ad7ad437afcf613e7a272414a49bf7c1f1d2c43 Mon Sep 17 00:00:00 2001
From: Ilya Maximets <i.maximets@samsung.com>
Date: Wed, 26 Sep 2018 17:37:46 +0300
Subject: [PATCH] doc: fix typos in the flow API guide

[ upstream commit 293a649c639aa2b5fe15a9e180eb0b3fb566ff46 ]

Fixes: 3e0ceb9f17ff ("doc: add basic howto for flow API")

Signed-off-by: Ilya Maximets <i.maximets@samsung.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 doc/guides/howto/rte_flow.rst | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/doc/guides/howto/rte_flow.rst b/doc/guides/howto/rte_flow.rst
index c71152161..6a8534d98 100644
--- a/doc/guides/howto/rte_flow.rst
+++ b/doc/guides/howto/rte_flow.rst
@@ -36,5 +36,5 @@ Code
   struct rte_flow_item pattern[MAX_PATTERN_IN_FLOW];
   struct rte_flow_action actions[MAX_ACTIONS_IN_FLOW];
-  struct rte_flow_item_etc eth;
+  struct rte_flow_item_eth eth;
   struct rte_flow_item_vlan vlan;
   struct rte_flow_item_ipv4 ipv4;
@@ -56,5 +56,5 @@ Code
 
   /* end the pattern array */
-  pattern[3].type = RTE_FLOW_ITEM)TYPE_END;
+  pattern[3].type = RTE_FLOW_ITEM_TYPE_END;
 
   /* create the drop action */
@@ -131,5 +131,5 @@ Code
   struct rte_flow_item pattern[MAX_PATTERN_IN_FLOW];
   struct rte_flow_action actions[MAX_ACTIONS_IN_FLOW];
-  struct rte_flow_item_etc eth;
+  struct rte_flow_item_eth eth;
   struct rte_flow_item_vlan vlan;
   struct rte_flow_item_ipv4 ipv4;
@@ -154,5 +154,5 @@ Code
 
   /* end the pattern array */
-  pattern[3].type = RTE_FLOW_ITEM)TYPE_END;
+  pattern[3].type = RTE_FLOW_ITEM_TYPE_END;
 
   /* create the drop action */
@@ -231,5 +231,5 @@ Code
   struct rte_flow_item pattern[MAX_PATTERN_IN_FLOW];
   struct rte_flow_action actions[MAX_ACTIONS_IN_FLOW];
-  struct rte_flow_item_etc eth;
+  struct rte_flow_item_eth eth;
   struct rte_flow_item_vlan vlan;
   struct rte_flow_action_queue queue = { .index = 3 };
@@ -247,5 +247,5 @@ Code
 
   /* end the pattern array */
-  pattern[2].type = RTE_FLOW_ITEM)TYPE_END;
+  pattern[2].type = RTE_FLOW_ITEM_TYPE_END;
 
   /* create the queue action */
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.162315422 +0000
+++ 0044-doc-fix-typos-in-the-flow-API-guide.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,10 +1,11 @@
-From 293a649c639aa2b5fe15a9e180eb0b3fb566ff46 Mon Sep 17 00:00:00 2001
+From 7ad7ad437afcf613e7a272414a49bf7c1f1d2c43 Mon Sep 17 00:00:00 2001
 From: Ilya Maximets <i.maximets@samsung.com>
 Date: Wed, 26 Sep 2018 17:37:46 +0300
 Subject: [PATCH] doc: fix typos in the flow API guide
 
+[ upstream commit 293a649c639aa2b5fe15a9e180eb0b3fb566ff46 ]
+
 Fixes: 3e0ceb9f17ff ("doc: add basic howto for flow API")
-Cc: stable@dpdk.org
 
 Signed-off-by: Ilya Maximets <i.maximets@samsung.com>
 Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>

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

* [dpdk-stable] patch 'net/sfc: receive prepared packets even in Rx exception case' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (42 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'doc: fix typos in the flow API guide' " Kevin Traynor
@ 2018-11-21 16:47 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'mbuf: fix Tx offload mask' " Kevin Traynor
                   ` (28 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:47 UTC (permalink / raw)
  To: Andrew Rybchenko; +Cc: Ivan Malov, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 5cb2b0a29cc3efeff3057c617cd36e52680d149e Mon Sep 17 00:00:00 2001
From: Andrew Rybchenko <arybchenko@solarflare.com>
Date: Wed, 3 Oct 2018 10:03:48 +0100
Subject: [PATCH] net/sfc: receive prepared packets even in Rx exception case

[ upstream commit f609ee3f2a32806689e0f1d9d841c97e0409bf55 ]

Make sure that number of prepared packets, completed and added
Rx ring pointers are reset to zeros on queue purge at stop.

Fixes: 638bddc99faa ("net/sfc: implement EF10 native Rx datapath")

Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>
---
 drivers/net/sfc/sfc_ef10_rx.c | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/drivers/net/sfc/sfc_ef10_rx.c b/drivers/net/sfc/sfc_ef10_rx.c
index 6a5052b93..5c0152d01 100644
--- a/drivers/net/sfc/sfc_ef10_rx.c
+++ b/drivers/net/sfc/sfc_ef10_rx.c
@@ -360,9 +360,9 @@ sfc_ef10_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts)
 	efx_qword_t rx_ev;
 
+	n_rx_pkts = sfc_ef10_rx_prepared(rxq, rx_pkts, nb_pkts);
+
 	if (unlikely(rxq->flags &
 		     (SFC_EF10_RXQ_NOT_RUNNING | SFC_EF10_RXQ_EXCEPTION)))
-		return 0;
-
-	n_rx_pkts = sfc_ef10_rx_prepared(rxq, rx_pkts, nb_pkts);
+		goto done;
 
 	evq_old_read_ptr = rxq->evq_read_ptr;
@@ -384,4 +384,5 @@ sfc_ef10_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts)
 	sfc_ef10_rx_qrefill(rxq);
 
+done:
 	return n_rx_pkts;
 }
@@ -595,6 +596,7 @@ sfc_ef10_rx_qstart(struct sfc_dp_rxq *dp_rxq, unsigned int evq_read_ptr)
 	struct sfc_ef10_rxq *rxq = sfc_ef10_rxq_by_dp_rxq(dp_rxq);
 
-	rxq->prepared = 0;
-	rxq->completed = rxq->added = 0;
+	SFC_ASSERT(rxq->prepared == 0);
+	SFC_ASSERT(rxq->completed == 0);
+	SFC_ASSERT(rxq->added == 0);
 
 	sfc_ef10_rx_qrefill(rxq);
@@ -643,4 +645,6 @@ sfc_ef10_rx_qpurge(struct sfc_dp_rxq *dp_rxq)
 	struct sfc_ef10_rx_sw_desc *rxd;
 
+	rxq->prepared = 0;
+
 	for (i = rxq->completed; i != rxq->added; ++i) {
 		rxd = &rxq->sw_ring[i & rxq->ptr_mask];
@@ -649,4 +653,6 @@ sfc_ef10_rx_qpurge(struct sfc_dp_rxq *dp_rxq)
 	}
 
+	rxq->completed = rxq->added = 0;
+
 	rxq->flags &= ~SFC_EF10_RXQ_STARTED;
 }
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.185490153 +0000
+++ 0045-net-sfc-receive-prepared-packets-even-in-Rx-exceptio.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,13 +1,14 @@
-From f609ee3f2a32806689e0f1d9d841c97e0409bf55 Mon Sep 17 00:00:00 2001
+From 5cb2b0a29cc3efeff3057c617cd36e52680d149e Mon Sep 17 00:00:00 2001
 From: Andrew Rybchenko <arybchenko@solarflare.com>
 Date: Wed, 3 Oct 2018 10:03:48 +0100
 Subject: [PATCH] net/sfc: receive prepared packets even in Rx exception case
 
+[ upstream commit f609ee3f2a32806689e0f1d9d841c97e0409bf55 ]
+
 Make sure that number of prepared packets, completed and added
 Rx ring pointers are reset to zeros on queue purge at stop.
 
 Fixes: 638bddc99faa ("net/sfc: implement EF10 native Rx datapath")
-Cc: stable@dpdk.org
 
 Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
 Reviewed-by: Ivan Malov <ivan.malov@oktetlabs.ru>

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

* [dpdk-stable] patch 'mbuf: fix Tx offload mask' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (43 preceding siblings ...)
  2018-11-21 16:47 ` [dpdk-stable] patch 'net/sfc: receive prepared packets even in Rx exception case' " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/mlx5: fix representor port link status' " Kevin Traynor
                   ` (27 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Jerin Jacob; +Cc: Ferruh Yigit, Jiayu Hu, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 5a1f5c88e12224bf9ae9596bfcf147db454feb61 Mon Sep 17 00:00:00 2001
From: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Date: Tue, 2 Oct 2018 16:21:42 +0530
Subject: [PATCH] mbuf: fix Tx offload mask

[ upstream commit 1037ed842c378e15db85f1b2451c21d2b46a8698 ]

Fixes missing PKT_TX_UDP_SEG, PKT_TX_OUTER_IPV6,PKT_TX_OUTER_IPV4,
PKT_TX_IPV6 and  PKT_TX_IPV4 values in PKT_TX_OFFLOAD_MASK.

Also sort them in bit wise order to recognize missing items later.

Fixes: 6d18505efaa6 ("vhost: support UDP Fragmentation Offload")
Fixes: 1c3b7c33e977 ("mbuf: add Tx offloading flags for tunnels")
Fixes: 711ba9e23e68 ("mbuf: remove aliasing of Tx offloading flags with Rx ones")

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Jiayu Hu <jiayu.hu@intel.com>
---
 lib/librte_mbuf/rte_mbuf.h | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h
index 9ce5d76d7..04617b473 100644
--- a/lib/librte_mbuf/rte_mbuf.h
+++ b/lib/librte_mbuf/rte_mbuf.h
@@ -335,14 +335,19 @@ extern "C" {
  */
 #define PKT_TX_OFFLOAD_MASK (    \
+		PKT_TX_OUTER_IPV6 |	 \
+		PKT_TX_OUTER_IPV4 |	 \
+		PKT_TX_OUTER_IP_CKSUM |  \
+		PKT_TX_VLAN_PKT |        \
+		PKT_TX_IPV6 |		 \
+		PKT_TX_IPV4 |		 \
 		PKT_TX_IP_CKSUM |        \
 		PKT_TX_L4_MASK |         \
-		PKT_TX_OUTER_IP_CKSUM |  \
-		PKT_TX_TCP_SEG |         \
 		PKT_TX_IEEE1588_TMST |	 \
+		PKT_TX_TCP_SEG |         \
 		PKT_TX_QINQ_PKT |        \
-		PKT_TX_VLAN_PKT |        \
 		PKT_TX_TUNNEL_MASK |	 \
 		PKT_TX_MACSEC |		 \
-		PKT_TX_SEC_OFFLOAD)
+		PKT_TX_SEC_OFFLOAD |	\
+		PKT_TX_UDP_SEG)
 
 /**
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.208667572 +0000
+++ 0046-mbuf-fix-Tx-offload-mask.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,8 +1,10 @@
-From 1037ed842c378e15db85f1b2451c21d2b46a8698 Mon Sep 17 00:00:00 2001
+From 5a1f5c88e12224bf9ae9596bfcf147db454feb61 Mon Sep 17 00:00:00 2001
 From: Jerin Jacob <jerin.jacob@caviumnetworks.com>
 Date: Tue, 2 Oct 2018 16:21:42 +0530
 Subject: [PATCH] mbuf: fix Tx offload mask
 
+[ upstream commit 1037ed842c378e15db85f1b2451c21d2b46a8698 ]
+
 Fixes missing PKT_TX_UDP_SEG, PKT_TX_OUTER_IPV6,PKT_TX_OUTER_IPV4,
 PKT_TX_IPV6 and  PKT_TX_IPV4 values in PKT_TX_OFFLOAD_MASK.
 
@@ -11,7 +13,6 @@
 Fixes: 6d18505efaa6 ("vhost: support UDP Fragmentation Offload")
 Fixes: 1c3b7c33e977 ("mbuf: add Tx offloading flags for tunnels")
 Fixes: 711ba9e23e68 ("mbuf: remove aliasing of Tx offloading flags with Rx ones")
-Cc: stable@dpdk.org
 
 Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
 Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
@@ -21,7 +22,7 @@
  1 file changed, 9 insertions(+), 4 deletions(-)
 
 diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h
-index a09377a60..eb11779e7 100644
+index 9ce5d76d7..04617b473 100644
 --- a/lib/librte_mbuf/rte_mbuf.h
 +++ b/lib/librte_mbuf/rte_mbuf.h
 @@ -335,14 +335,19 @@ extern "C" {

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

* [dpdk-stable] patch 'net/mlx5: fix representor port link status' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (44 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'mbuf: fix Tx offload mask' " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/mlx5: fix representor port xstats' " Kevin Traynor
                   ` (26 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Xueming Li; +Cc: Yongseok Koh, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From f907ba8117135f3c6d058c9ba27afd3f6f1a7120 Mon Sep 17 00:00:00 2001
From: Xueming Li <xuemingl@mellanox.com>
Date: Wed, 19 Sep 2018 16:27:37 +0800
Subject: [PATCH] net/mlx5: fix representor port link status

[ upstream commit 7bc47fb839cba55a6e0c86b5f2b746ff7dcbc514 ]

Current code uses PF links status for representor port, not the
representor interface itself.
This caused wrong representor port link status when toggling
interface up or down.

Fixes: 2b7302638898 ("net/mlx5: probe all port representors")

Signed-off-by: Xueming Li <xuemingl@mellanox.com>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
---
 drivers/net/mlx5/mlx5_ethdev.c | 36 +++++++++++++++++++++-------------
 1 file changed, 22 insertions(+), 14 deletions(-)

diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c
index 34c5b95ee..5515fdbae 100644
--- a/drivers/net/mlx5/mlx5_ethdev.c
+++ b/drivers/net/mlx5/mlx5_ethdev.c
@@ -628,5 +628,5 @@ mlx5_link_update_unlocked_gset(struct rte_eth_dev *dev,
 	int ret;
 
-	ret = mlx5_ifreq(dev, SIOCGIFFLAGS, &ifr, 1);
+	ret = mlx5_ifreq(dev, SIOCGIFFLAGS, &ifr, 0);
 	if (ret) {
 		DRV_LOG(WARNING, "port %u ioctl(SIOCGIFFLAGS) failed: %s",
@@ -634,8 +634,11 @@ mlx5_link_update_unlocked_gset(struct rte_eth_dev *dev,
 		return ret;
 	}
-	memset(&dev_link, 0, sizeof(dev_link));
-	dev_link.link_status = ((ifr.ifr_flags & IFF_UP) &&
-				(ifr.ifr_flags & IFF_RUNNING));
-	ifr.ifr_data = (void *)&edata;
+	dev_link = (struct rte_eth_link) {
+		.link_status = ((ifr.ifr_flags & IFF_UP) &&
+				(ifr.ifr_flags & IFF_RUNNING)),
+	};
+	ifr = (struct ifreq) {
+		.ifr_data = (void *)&edata,
+	};
 	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr, 1);
 	if (ret) {
@@ -667,6 +670,7 @@ mlx5_link_update_unlocked_gset(struct rte_eth_dev *dev,
 	dev_link.link_autoneg = !(dev->data->dev_conf.link_speeds &
 			ETH_LINK_SPEED_FIXED);
-	if ((dev_link.link_speed && !dev_link.link_status) ||
-	    (!dev_link.link_speed && dev_link.link_status)) {
+	if (!priv->representor &&
+	    ((dev_link.link_speed && !dev_link.link_status) ||
+	     (!dev_link.link_speed && dev_link.link_status))) {
 		rte_errno = EAGAIN;
 		return -rte_errno;
@@ -699,5 +703,5 @@ mlx5_link_update_unlocked_gs(struct rte_eth_dev *dev,
 	int ret;
 
-	ret = mlx5_ifreq(dev, SIOCGIFFLAGS, &ifr, 1);
+	ret = mlx5_ifreq(dev, SIOCGIFFLAGS, &ifr, 0);
 	if (ret) {
 		DRV_LOG(WARNING, "port %u ioctl(SIOCGIFFLAGS) failed: %s",
@@ -705,8 +709,11 @@ mlx5_link_update_unlocked_gs(struct rte_eth_dev *dev,
 		return ret;
 	}
-	memset(&dev_link, 0, sizeof(dev_link));
-	dev_link.link_status = ((ifr.ifr_flags & IFF_UP) &&
-				(ifr.ifr_flags & IFF_RUNNING));
-	ifr.ifr_data = (void *)&gcmd;
+	dev_link = (struct rte_eth_link) {
+		.link_status = ((ifr.ifr_flags & IFF_UP) &&
+				(ifr.ifr_flags & IFF_RUNNING)),
+	};
+	ifr = (struct ifreq) {
+		.ifr_data = (void *)&gcmd,
+	};
 	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr, 1);
 	if (ret) {
@@ -776,6 +783,7 @@ mlx5_link_update_unlocked_gs(struct rte_eth_dev *dev,
 	dev_link.link_autoneg = !(dev->data->dev_conf.link_speeds &
 				  ETH_LINK_SPEED_FIXED);
-	if ((dev_link.link_speed && !dev_link.link_status) ||
-	    (!dev_link.link_speed && dev_link.link_status)) {
+	if (!priv->representor &&
+	    ((dev_link.link_speed && !dev_link.link_status) ||
+	     (!dev_link.link_speed && dev_link.link_status))) {
 		rte_errno = EAGAIN;
 		return -rte_errno;
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.231965647 +0000
+++ 0047-net-mlx5-fix-representor-port-link-status.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,15 +1,16 @@
-From 7bc47fb839cba55a6e0c86b5f2b746ff7dcbc514 Mon Sep 17 00:00:00 2001
+From f907ba8117135f3c6d058c9ba27afd3f6f1a7120 Mon Sep 17 00:00:00 2001
 From: Xueming Li <xuemingl@mellanox.com>
 Date: Wed, 19 Sep 2018 16:27:37 +0800
 Subject: [PATCH] net/mlx5: fix representor port link status
 
+[ upstream commit 7bc47fb839cba55a6e0c86b5f2b746ff7dcbc514 ]
+
 Current code uses PF links status for representor port, not the
 representor interface itself.
 This caused wrong representor port link status when toggling
 interface up or down.
 
 Fixes: 2b7302638898 ("net/mlx5: probe all port representors")
-Cc: stable@dpdk.org
 
 Signed-off-by: Xueming Li <xuemingl@mellanox.com>
 Acked-by: Yongseok Koh <yskoh@mellanox.com>

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

* [dpdk-stable] patch 'net/mlx5: fix representor port xstats' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (45 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/mlx5: fix representor port link status' " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/mlx4: support externally allocated static memory' " Kevin Traynor
                   ` (25 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Xueming Li; +Cc: Yongseok Koh, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From ae34e239b0290a4b504550124f7debdc7116181b Mon Sep 17 00:00:00 2001
From: Xueming Li <xuemingl@mellanox.com>
Date: Wed, 19 Sep 2018 15:55:26 +0800
Subject: [PATCH] net/mlx5: fix representor port xstats

[ upstream commit 45b83b9b0434db1f190f7fa7d30e6fed75793ae6 ]

This patch fixes the issue that representor port shows xstats of PF.

Fixes: 2b7302638898 ("net/mlx5: probe all port representors")

Signed-off-by: Xueming Li <xuemingl@mellanox.com>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
---
 drivers/net/mlx5/mlx5_stats.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/drivers/net/mlx5/mlx5_stats.c b/drivers/net/mlx5/mlx5_stats.c
index 91f3d474a..ed5b51bb2 100644
--- a/drivers/net/mlx5/mlx5_stats.c
+++ b/drivers/net/mlx5/mlx5_stats.c
@@ -147,5 +147,5 @@ mlx5_read_dev_counters(struct rte_eth_dev *dev, uint64_t *stats)
 	et_stats->n_stats = xstats_ctrl->stats_n;
 	ifr.ifr_data = (caddr_t)et_stats;
-	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr, 1);
+	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr, 0);
 	if (ret) {
 		DRV_LOG(WARNING,
@@ -195,5 +195,5 @@ mlx5_ethtool_get_stats_n(struct rte_eth_dev *dev) {
 	drvinfo.cmd = ETHTOOL_GDRVINFO;
 	ifr.ifr_data = (caddr_t)&drvinfo;
-	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr, 1);
+	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr, 0);
 	if (ret) {
 		DRV_LOG(WARNING, "port %u unable to query number of statistics",
@@ -230,5 +230,4 @@ mlx5_xstats_init(struct rte_eth_dev *dev)
 	}
 	dev_stats_n = ret;
-	xstats_ctrl->stats_n = dev_stats_n;
 	/* Allocate memory to grab stat names and values. */
 	str_sz = dev_stats_n * ETH_GSTRING_LEN;
@@ -245,5 +244,5 @@ mlx5_xstats_init(struct rte_eth_dev *dev)
 	strings->len = dev_stats_n;
 	ifr.ifr_data = (caddr_t)strings;
-	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr, 1);
+	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr, 0);
 	if (ret) {
 		DRV_LOG(WARNING, "port %u unable to get statistic names",
@@ -276,4 +275,5 @@ mlx5_xstats_init(struct rte_eth_dev *dev)
 		}
 	}
+	xstats_ctrl->stats_n = dev_stats_n;
 	/* Copy to base at first time. */
 	assert(xstats_n <= MLX5_MAX_XSTATS);
@@ -308,4 +308,6 @@ mlx5_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *stats,
 	uint64_t counters[n];
 
+	if (!priv->xstats_ctrl.stats_n)
+		return 0;
 	if (n >= xstats_n && stats) {
 		struct mlx5_xstats_ctrl *xstats_ctrl = &priv->xstats_ctrl;
@@ -481,6 +483,9 @@ mlx5_xstats_get_names(struct rte_eth_dev *dev __rte_unused,
 		      struct rte_eth_xstat_name *xstats_names, unsigned int n)
 {
+	struct priv *priv = dev->data->dev_private;
 	unsigned int i;
 
+	if (!priv->xstats_ctrl.stats_n)
+		return 0;
 	if (n >= xstats_n && xstats_names) {
 		for (i = 0; i != xstats_n; ++i) {
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.255862179 +0000
+++ 0048-net-mlx5-fix-representor-port-xstats.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,12 +1,13 @@
-From 45b83b9b0434db1f190f7fa7d30e6fed75793ae6 Mon Sep 17 00:00:00 2001
+From ae34e239b0290a4b504550124f7debdc7116181b Mon Sep 17 00:00:00 2001
 From: Xueming Li <xuemingl@mellanox.com>
 Date: Wed, 19 Sep 2018 15:55:26 +0800
 Subject: [PATCH] net/mlx5: fix representor port xstats
 
+[ upstream commit 45b83b9b0434db1f190f7fa7d30e6fed75793ae6 ]
+
 This patch fixes the issue that representor port shows xstats of PF.
 
 Fixes: 2b7302638898 ("net/mlx5: probe all port representors")
-Cc: stable@dpdk.org
 
 Signed-off-by: Xueming Li <xuemingl@mellanox.com>
 Acked-by: Yongseok Koh <yskoh@mellanox.com>

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

* [dpdk-stable] patch 'net/mlx4: support externally allocated static memory' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (46 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/mlx5: fix representor port xstats' " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/mlx5: " Kevin Traynor
                   ` (24 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Yongseok Koh; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 95f04411e1af6649ff40d7bbd3ee37a5a34832a6 Mon Sep 17 00:00:00 2001
From: Yongseok Koh <yskoh@mellanox.com>
Date: Mon, 24 Sep 2018 18:36:45 +0000
Subject: [PATCH] net/mlx4: support externally allocated static memory

[ upstream commit 31912d9924039c3a4f58e1bb00f380e5b4c7bd81 ]

When MLX PMD registers memory for DMA, it accesses the global memseg list
of DPDK to maximize the range of registration so that LKey search can be
more efficient. Granularity of MR registration is per page.

Externally allocated memory shouldn't be used for DMA because it can't be
searched in the memseg list and free event can't be tracked by DPDK. If it
is used, the following error will occur:

	net_mlx5: port 0 unable to find virtually contiguous chunk for
	address (0x5600017587c0). rte_memseg_contig_walk() failed.

There's a pending patchset [1] which enables externally allocated memory.
Once it is merged, users can register their own memory out of EAL then that
will resolve this issue.

Meanwhile, if the external memory is static (allocated on startup and never
freed), such memory can also be registered by little tweak in the code.

[1] http://patches.dpdk.org/project/dpdk/list/?series=1415

This patch is not a bug fix but needs to be included in stable versions.

Fixes: 9797bfcce1c9 ("net/mlx4: add new memory region support")

Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
---
 drivers/net/mlx4/mlx4_mr.c   | 149 +++++++++++++++++++++++++++++++++++
 drivers/net/mlx4/mlx4_rxtx.h |  35 +++++++-
 2 files changed, 183 insertions(+), 1 deletion(-)

diff --git a/drivers/net/mlx4/mlx4_mr.c b/drivers/net/mlx4/mlx4_mr.c
index d23d3c613..bee858643 100644
--- a/drivers/net/mlx4/mlx4_mr.c
+++ b/drivers/net/mlx4/mlx4_mr.c
@@ -290,4 +290,21 @@ mr_find_next_chunk(struct mlx4_mr *mr, struct mlx4_mr_cache *entry,
 	uint32_t idx = 0;
 
+	/* MR for external memory doesn't have memseg list. */
+	if (mr->msl == NULL) {
+		struct ibv_mr *ibv_mr = mr->ibv_mr;
+
+		assert(mr->ms_bmp_n == 1);
+		assert(mr->ms_n == 1);
+		assert(base_idx == 0);
+		/*
+		 * Can't search it from memseg list but get it directly from
+		 * verbs MR as there's only one chunk.
+		 */
+		entry->start = (uintptr_t)ibv_mr->addr;
+		entry->end = (uintptr_t)ibv_mr->addr + mr->ibv_mr->length;
+		entry->lkey = rte_cpu_to_be_32(mr->ibv_mr->lkey);
+		/* Returning 1 ends iteration. */
+		return 1;
+	}
 	for (idx = base_idx; idx < mr->ms_bmp_n; ++idx) {
 		if (rte_bitmap_get(mr->ms_bmp, idx)) {
@@ -810,4 +827,5 @@ mlx4_mr_mem_event_free_cb(struct rte_eth_dev *dev, const void *addr, size_t len)
 		if (mr == NULL)
 			continue;
+		assert(mr->msl); /* Can't be external memory. */
 		ms = rte_mem_virt2memseg((void *)start, msl);
 		assert(ms != NULL);
@@ -1056,4 +1074,131 @@ mlx4_mr_flush_local_cache(struct mlx4_mr_ctrl *mr_ctrl)
 }
 
+/**
+ * Called during rte_mempool_mem_iter() by mlx4_mr_update_ext_mp().
+ *
+ * Externally allocated chunk is registered and a MR is created for the chunk.
+ * The MR object is added to the global list. If memseg list of a MR object
+ * (mr->msl) is null, the MR object can be regarded as externally allocated
+ * memory.
+ *
+ * Once external memory is registered, it should be static. If the memory is
+ * freed and the virtual address range has different physical memory mapped
+ * again, it may cause crash on device due to the wrong translation entry. PMD
+ * can't track the free event of the external memory for now.
+ */
+static void
+mlx4_mr_update_ext_mp_cb(struct rte_mempool *mp, void *opaque,
+			 struct rte_mempool_memhdr *memhdr,
+			 unsigned mem_idx __rte_unused)
+{
+	struct mr_update_mp_data *data = opaque;
+	struct rte_eth_dev *dev = data->dev;
+	struct priv *priv = dev->data->dev_private;
+	struct mlx4_mr_ctrl *mr_ctrl = data->mr_ctrl;
+	struct mlx4_mr *mr = NULL;
+	uintptr_t addr = (uintptr_t)memhdr->addr;
+	size_t len = memhdr->len;
+	struct mlx4_mr_cache entry;
+	uint32_t lkey;
+
+	/* If already registered, it should return. */
+	rte_rwlock_read_lock(&priv->mr.rwlock);
+	lkey = mr_lookup_dev(dev, &entry, addr);
+	rte_rwlock_read_unlock(&priv->mr.rwlock);
+	if (lkey != UINT32_MAX)
+		return;
+	mr = rte_zmalloc_socket(NULL,
+				RTE_ALIGN_CEIL(sizeof(*mr),
+					       RTE_CACHE_LINE_SIZE),
+				RTE_CACHE_LINE_SIZE, mp->socket_id);
+	if (mr == NULL) {
+		WARN("port %u unable to allocate memory for a new MR of"
+		     " mempool (%s).",
+		     dev->data->port_id, mp->name);
+		data->ret = -1;
+		return;
+	}
+	DEBUG("port %u register MR for chunk #%d of mempool (%s)",
+	      dev->data->port_id, mem_idx, mp->name);
+	mr->ibv_mr = mlx4_glue->reg_mr(priv->pd, (void *)addr, len,
+				       IBV_ACCESS_LOCAL_WRITE);
+	if (mr->ibv_mr == NULL) {
+		WARN("port %u fail to create a verbs MR for address (%p)",
+		     dev->data->port_id, (void *)addr);
+		rte_free(mr);
+		data->ret = -1;
+		return;
+	}
+	mr->msl = NULL; /* Mark it is external memory. */
+	mr->ms_bmp = NULL;
+	mr->ms_n = 1;
+	mr->ms_bmp_n = 1;
+	rte_rwlock_write_lock(&priv->mr.rwlock);
+	LIST_INSERT_HEAD(&priv->mr.mr_list, mr, mr);
+	DEBUG("port %u MR CREATED (%p) for external memory %p:\n"
+	      "  [0x%" PRIxPTR ", 0x%" PRIxPTR "),"
+	      " lkey=0x%x base_idx=%u ms_n=%u, ms_bmp_n=%u",
+	      dev->data->port_id, (void *)mr, (void *)addr,
+	      addr, addr + len, rte_cpu_to_be_32(mr->ibv_mr->lkey),
+	      mr->ms_base_idx, mr->ms_n, mr->ms_bmp_n);
+	/* Insert to the global cache table. */
+	mr_insert_dev_cache(dev, mr);
+	rte_rwlock_write_unlock(&priv->mr.rwlock);
+	/* Insert to the local cache table */
+	mlx4_mr_addr2mr_bh(dev, mr_ctrl, addr);
+}
+
+/**
+ * Register MR for entire memory chunks in a Mempool having externally allocated
+ * memory and fill in local cache.
+ *
+ * @param dev
+ *   Pointer to Ethernet device.
+ * @param mr_ctrl
+ *   Pointer to per-queue MR control structure.
+ * @param mp
+ *   Pointer to registering Mempool.
+ *
+ * @return
+ *   0 on success, -1 on failure.
+ */
+static uint32_t
+mlx4_mr_update_ext_mp(struct rte_eth_dev *dev, struct mlx4_mr_ctrl *mr_ctrl,
+		      struct rte_mempool *mp)
+{
+	struct mr_update_mp_data data = {
+		.dev = dev,
+		.mr_ctrl = mr_ctrl,
+		.ret = 0,
+	};
+
+	rte_mempool_mem_iter(mp, mlx4_mr_update_ext_mp_cb, &data);
+	return data.ret;
+}
+
+/**
+ * Register MR entire memory chunks in a Mempool having externally allocated
+ * memory and search LKey of the address to return.
+ *
+ * @param dev
+ *   Pointer to Ethernet device.
+ * @param addr
+ *   Search key.
+ * @param mp
+ *   Pointer to registering Mempool where addr belongs.
+ *
+ * @return
+ *   LKey for address on success, UINT32_MAX on failure.
+ */
+uint32_t
+mlx4_tx_update_ext_mp(struct txq *txq, uintptr_t addr, struct rte_mempool *mp)
+{
+	struct mlx4_mr_ctrl *mr_ctrl = &txq->mr_ctrl;
+	struct priv *priv = txq->priv;
+
+	mlx4_mr_update_ext_mp(priv->dev, mr_ctrl, mp);
+	return mlx4_tx_addr2mr_bh(txq, addr);
+}
+
 /* Called during rte_mempool_mem_iter() by mlx4_mr_update_mp(). */
 static void
@@ -1099,4 +1244,8 @@ mlx4_mr_update_mp(struct rte_eth_dev *dev, struct mlx4_mr_ctrl *mr_ctrl,
 
 	rte_mempool_mem_iter(mp, mlx4_mr_update_mp_cb, &data);
+	if (data.ret < 0 && rte_errno == ENXIO) {
+		/* Mempool may have externally allocated memory. */
+		return mlx4_mr_update_ext_mp(dev, mr_ctrl, mp);
+	}
 	return data.ret;
 }
diff --git a/drivers/net/mlx4/mlx4_rxtx.h b/drivers/net/mlx4/mlx4_rxtx.h
index ffa8abfca..1be060cda 100644
--- a/drivers/net/mlx4/mlx4_rxtx.h
+++ b/drivers/net/mlx4/mlx4_rxtx.h
@@ -164,4 +164,24 @@ void mlx4_mr_flush_local_cache(struct mlx4_mr_ctrl *mr_ctrl);
 uint32_t mlx4_rx_addr2mr_bh(struct rxq *rxq, uintptr_t addr);
 uint32_t mlx4_tx_addr2mr_bh(struct txq *txq, uintptr_t addr);
+uint32_t mlx4_tx_update_ext_mp(struct txq *txq, uintptr_t addr,
+			       struct rte_mempool *mp);
+
+/**
+ * Get Memory Pool (MP) from mbuf. If mbuf is indirect, the pool from which the
+ * cloned mbuf is allocated is returned instead.
+ *
+ * @param buf
+ *   Pointer to mbuf.
+ *
+ * @return
+ *   Memory pool where data is located for given mbuf.
+ */
+static struct rte_mempool *
+mlx4_mb2mp(struct rte_mbuf *buf)
+{
+	if (unlikely(RTE_MBUF_INDIRECT(buf)))
+		return rte_mbuf_from_indirect(buf)->pool;
+	return buf->pool;
+}
 
 /**
@@ -223,5 +243,18 @@ mlx4_tx_addr2mr(struct txq *txq, uintptr_t addr)
 }
 
-#define mlx4_tx_mb2mr(rxq, mb) mlx4_tx_addr2mr(rxq, (uintptr_t)((mb)->buf_addr))
+static __rte_always_inline uint32_t
+mlx4_tx_mb2mr(struct txq *txq, struct rte_mbuf *mb)
+{
+	uintptr_t addr = (uintptr_t)mb->buf_addr;
+	uint32_t lkey = mlx4_tx_addr2mr(txq, addr);
+
+	if (likely(lkey != UINT32_MAX))
+		return lkey;
+	if (rte_errno == ENXIO) {
+		/* Mempool may have externally allocated memory. */
+		lkey = mlx4_tx_update_ext_mp(txq, addr, mlx4_mb2mp(mb));
+	}
+	return lkey;
+}
 
 #endif /* MLX4_RXTX_H_ */
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.279722373 +0000
+++ 0049-net-mlx4-support-externally-allocated-static-memory.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,8 +1,10 @@
-From 31912d9924039c3a4f58e1bb00f380e5b4c7bd81 Mon Sep 17 00:00:00 2001
+From 95f04411e1af6649ff40d7bbd3ee37a5a34832a6 Mon Sep 17 00:00:00 2001
 From: Yongseok Koh <yskoh@mellanox.com>
 Date: Mon, 24 Sep 2018 18:36:45 +0000
 Subject: [PATCH] net/mlx4: support externally allocated static memory
 
+[ upstream commit 31912d9924039c3a4f58e1bb00f380e5b4c7bd81 ]
+
 When MLX PMD registers memory for DMA, it accesses the global memseg list
 of DPDK to maximize the range of registration so that LKey search can be
 more efficient. Granularity of MR registration is per page.
@@ -26,7 +28,6 @@
 This patch is not a bug fix but needs to be included in stable versions.
 
 Fixes: 9797bfcce1c9 ("net/mlx4: add new memory region support")
-Cc: stable@dpdk.org
 
 Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
 ---

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

* [dpdk-stable] patch 'net/mlx5: support externally allocated static memory' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (47 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/mlx4: support externally allocated static memory' " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'app/testpmd: fix displaying RSS hash functions' " Kevin Traynor
                   ` (23 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Yongseok Koh; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 5fd25749784b55eb28292a185c0d8419c23e5c2a Mon Sep 17 00:00:00 2001
From: Yongseok Koh <yskoh@mellanox.com>
Date: Mon, 24 Sep 2018 18:36:47 +0000
Subject: [PATCH] net/mlx5: support externally allocated static memory

[ upstream commit 7e43a32ee06054e7af9de6b9830b61b783df063b ]

When MLX PMD registers memory for DMA, it accesses the global memseg list
of DPDK to maximize the range of registration so that LKey search can be
more efficient. Granularity of MR registration is per page.

Externally allocated memory shouldn't be used for DMA because it can't be
searched in the memseg list and free event can't be tracked by DPDK. If it
is used, the following error will occur:

	net_mlx5: port 0 unable to find virtually contiguous chunk for
	address (0x5600017587c0). rte_memseg_contig_walk() failed.

There's a pending patchset [1] which enables externally allocated memory.
Once it is merged, users can register their own memory out of EAL then that
will resolve this issue.

Meanwhile, if the external memory is static (allocated on startup and never
freed), such memory can also be registered by little tweak in the code.

[1] http://patches.dpdk.org/project/dpdk/list/?series=1415

This patch is not a bug fix but needs to be included in stable versions.

Fixes: 974f1e7ef146 ("net/mlx5: add new memory region support")

Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
---
 drivers/net/mlx5/mlx5_mr.c   | 155 +++++++++++++++++++++++++++++++++++
 drivers/net/mlx5/mlx5_rxtx.h |  35 +++++++-
 2 files changed, 189 insertions(+), 1 deletion(-)

diff --git a/drivers/net/mlx5/mlx5_mr.c b/drivers/net/mlx5/mlx5_mr.c
index 1d1bcb5fe..f4b15d3f6 100644
--- a/drivers/net/mlx5/mlx5_mr.c
+++ b/drivers/net/mlx5/mlx5_mr.c
@@ -278,4 +278,21 @@ mr_find_next_chunk(struct mlx5_mr *mr, struct mlx5_mr_cache *entry,
 	uint32_t idx = 0;
 
+	/* MR for external memory doesn't have memseg list. */
+	if (mr->msl == NULL) {
+		struct ibv_mr *ibv_mr = mr->ibv_mr;
+
+		assert(mr->ms_bmp_n == 1);
+		assert(mr->ms_n == 1);
+		assert(base_idx == 0);
+		/*
+		 * Can't search it from memseg list but get it directly from
+		 * verbs MR as there's only one chunk.
+		 */
+		entry->start = (uintptr_t)ibv_mr->addr;
+		entry->end = (uintptr_t)ibv_mr->addr + mr->ibv_mr->length;
+		entry->lkey = rte_cpu_to_be_32(mr->ibv_mr->lkey);
+		/* Returning 1 ends iteration. */
+		return 1;
+	}
 	for (idx = base_idx; idx < mr->ms_bmp_n; ++idx) {
 		if (rte_bitmap_get(mr->ms_bmp, idx)) {
@@ -812,4 +829,5 @@ mlx5_mr_mem_event_free_cb(struct rte_eth_dev *dev, const void *addr, size_t len)
 		if (mr == NULL)
 			continue;
+		assert(mr->msl); /* Can't be external memory. */
 		ms = rte_mem_virt2memseg((void *)start, msl);
 		assert(ms != NULL);
@@ -1062,4 +1080,137 @@ mlx5_mr_flush_local_cache(struct mlx5_mr_ctrl *mr_ctrl)
 }
 
+/**
+ * Called during rte_mempool_mem_iter() by mlx5_mr_update_ext_mp().
+ *
+ * Externally allocated chunk is registered and a MR is created for the chunk.
+ * The MR object is added to the global list. If memseg list of a MR object
+ * (mr->msl) is null, the MR object can be regarded as externally allocated
+ * memory.
+ *
+ * Once external memory is registered, it should be static. If the memory is
+ * freed and the virtual address range has different physical memory mapped
+ * again, it may cause crash on device due to the wrong translation entry. PMD
+ * can't track the free event of the external memory for now.
+ */
+static void
+mlx5_mr_update_ext_mp_cb(struct rte_mempool *mp, void *opaque,
+			 struct rte_mempool_memhdr *memhdr,
+			 unsigned mem_idx __rte_unused)
+{
+	struct mr_update_mp_data *data = opaque;
+	struct rte_eth_dev *dev = data->dev;
+	struct priv *priv = dev->data->dev_private;
+	struct mlx5_mr_ctrl *mr_ctrl = data->mr_ctrl;
+	struct mlx5_mr *mr = NULL;
+	uintptr_t addr = (uintptr_t)memhdr->addr;
+	size_t len = memhdr->len;
+	struct mlx5_mr_cache entry;
+	uint32_t lkey;
+
+	/* If already registered, it should return. */
+	rte_rwlock_read_lock(&priv->mr.rwlock);
+	lkey = mr_lookup_dev(dev, &entry, addr);
+	rte_rwlock_read_unlock(&priv->mr.rwlock);
+	if (lkey != UINT32_MAX)
+		return;
+	mr = rte_zmalloc_socket(NULL,
+				RTE_ALIGN_CEIL(sizeof(*mr),
+					       RTE_CACHE_LINE_SIZE),
+				RTE_CACHE_LINE_SIZE, mp->socket_id);
+	if (mr == NULL) {
+		DRV_LOG(WARNING,
+			"port %u unable to allocate memory for a new MR of"
+			" mempool (%s).",
+			dev->data->port_id, mp->name);
+		data->ret = -1;
+		return;
+	}
+	DRV_LOG(DEBUG, "port %u register MR for chunk #%d of mempool (%s)",
+		dev->data->port_id, mem_idx, mp->name);
+	mr->ibv_mr = mlx5_glue->reg_mr(priv->pd, (void *)addr, len,
+				       IBV_ACCESS_LOCAL_WRITE);
+	if (mr->ibv_mr == NULL) {
+		DRV_LOG(WARNING,
+			"port %u fail to create a verbs MR for address (%p)",
+			dev->data->port_id, (void *)addr);
+		rte_free(mr);
+		data->ret = -1;
+		return;
+	}
+	mr->msl = NULL; /* Mark it is external memory. */
+	mr->ms_bmp = NULL;
+	mr->ms_n = 1;
+	mr->ms_bmp_n = 1;
+	rte_rwlock_write_lock(&priv->mr.rwlock);
+	LIST_INSERT_HEAD(&priv->mr.mr_list, mr, mr);
+	DRV_LOG(DEBUG,
+		"port %u MR CREATED (%p) for external memory %p:\n"
+		"  [0x%" PRIxPTR ", 0x%" PRIxPTR "),"
+		" lkey=0x%x base_idx=%u ms_n=%u, ms_bmp_n=%u",
+		dev->data->port_id, (void *)mr, (void *)addr,
+		addr, addr + len, rte_cpu_to_be_32(mr->ibv_mr->lkey),
+		mr->ms_base_idx, mr->ms_n, mr->ms_bmp_n);
+	/* Insert to the global cache table. */
+	mr_insert_dev_cache(dev, mr);
+	rte_rwlock_write_unlock(&priv->mr.rwlock);
+	/* Insert to the local cache table */
+	mlx5_mr_addr2mr_bh(dev, mr_ctrl, addr);
+}
+
+/**
+ * Register MR for entire memory chunks in a Mempool having externally allocated
+ * memory and fill in local cache.
+ *
+ * @param dev
+ *   Pointer to Ethernet device.
+ * @param mr_ctrl
+ *   Pointer to per-queue MR control structure.
+ * @param mp
+ *   Pointer to registering Mempool.
+ *
+ * @return
+ *   0 on success, -1 on failure.
+ */
+static uint32_t
+mlx5_mr_update_ext_mp(struct rte_eth_dev *dev, struct mlx5_mr_ctrl *mr_ctrl,
+		      struct rte_mempool *mp)
+{
+	struct mr_update_mp_data data = {
+		.dev = dev,
+		.mr_ctrl = mr_ctrl,
+		.ret = 0,
+	};
+
+	rte_mempool_mem_iter(mp, mlx5_mr_update_ext_mp_cb, &data);
+	return data.ret;
+}
+
+/**
+ * Register MR entire memory chunks in a Mempool having externally allocated
+ * memory and search LKey of the address to return.
+ *
+ * @param dev
+ *   Pointer to Ethernet device.
+ * @param addr
+ *   Search key.
+ * @param mp
+ *   Pointer to registering Mempool where addr belongs.
+ *
+ * @return
+ *   LKey for address on success, UINT32_MAX on failure.
+ */
+uint32_t
+mlx5_tx_update_ext_mp(struct mlx5_txq_data *txq, uintptr_t addr,
+		      struct rte_mempool *mp)
+{
+	struct mlx5_txq_ctrl *txq_ctrl =
+		container_of(txq, struct mlx5_txq_ctrl, txq);
+	struct mlx5_mr_ctrl *mr_ctrl = &txq->mr_ctrl;
+	struct priv *priv = txq_ctrl->priv;
+
+	mlx5_mr_update_ext_mp(ETH_DEV(priv), mr_ctrl, mp);
+	return mlx5_tx_addr2mr_bh(txq, addr);
+}
+
 /* Called during rte_mempool_mem_iter() by mlx5_mr_update_mp(). */
 static void
@@ -1105,4 +1256,8 @@ mlx5_mr_update_mp(struct rte_eth_dev *dev, struct mlx5_mr_ctrl *mr_ctrl,
 
 	rte_mempool_mem_iter(mp, mlx5_mr_update_mp_cb, &data);
+	if (data.ret < 0 && rte_errno == ENXIO) {
+		/* Mempool may have externally allocated memory. */
+		return mlx5_mr_update_ext_mp(dev, mr_ctrl, mp);
+	}
 	return data.ret;
 }
diff --git a/drivers/net/mlx5/mlx5_rxtx.h b/drivers/net/mlx5/mlx5_rxtx.h
index d225b9c27..1db468c3b 100644
--- a/drivers/net/mlx5/mlx5_rxtx.h
+++ b/drivers/net/mlx5/mlx5_rxtx.h
@@ -364,4 +364,6 @@ void mlx5_mr_flush_local_cache(struct mlx5_mr_ctrl *mr_ctrl);
 uint32_t mlx5_rx_addr2mr_bh(struct mlx5_rxq_data *rxq, uintptr_t addr);
 uint32_t mlx5_tx_addr2mr_bh(struct mlx5_txq_data *txq, uintptr_t addr);
+uint32_t mlx5_tx_update_ext_mp(struct mlx5_txq_data *txq, uintptr_t addr,
+			       struct rte_mempool *mp);
 
 /**
@@ -607,4 +609,22 @@ mlx5_tx_complete(struct mlx5_txq_data *txq)
 }
 
+/**
+ * Get Memory Pool (MP) from mbuf. If mbuf is indirect, the pool from which the
+ * cloned mbuf is allocated is returned instead.
+ *
+ * @param buf
+ *   Pointer to mbuf.
+ *
+ * @return
+ *   Memory pool where data is located for given mbuf.
+ */
+static struct rte_mempool *
+mlx5_mb2mp(struct rte_mbuf *buf)
+{
+	if (unlikely(RTE_MBUF_INDIRECT(buf)))
+		return rte_mbuf_from_indirect(buf)->pool;
+	return buf->pool;
+}
+
 /**
  * Query LKey from a packet buffer for Rx. No need to flush local caches for Rx
@@ -665,5 +685,18 @@ mlx5_tx_addr2mr(struct mlx5_txq_data *txq, uintptr_t addr)
 }
 
-#define mlx5_tx_mb2mr(rxq, mb) mlx5_tx_addr2mr(rxq, (uintptr_t)((mb)->buf_addr))
+static __rte_always_inline uint32_t
+mlx5_tx_mb2mr(struct mlx5_txq_data *txq, struct rte_mbuf *mb)
+{
+	uintptr_t addr = (uintptr_t)mb->buf_addr;
+	uint32_t lkey = mlx5_tx_addr2mr(txq, addr);
+
+	if (likely(lkey != UINT32_MAX))
+		return lkey;
+	if (rte_errno == ENXIO) {
+		/* Mempool may have externally allocated memory. */
+		lkey = mlx5_tx_update_ext_mp(txq, addr, mlx5_mb2mp(mb));
+	}
+	return lkey;
+}
 
 /**
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.303857959 +0000
+++ 0050-net-mlx5-support-externally-allocated-static-memory.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,8 +1,10 @@
-From 7e43a32ee06054e7af9de6b9830b61b783df063b Mon Sep 17 00:00:00 2001
+From 5fd25749784b55eb28292a185c0d8419c23e5c2a Mon Sep 17 00:00:00 2001
 From: Yongseok Koh <yskoh@mellanox.com>
 Date: Mon, 24 Sep 2018 18:36:47 +0000
 Subject: [PATCH] net/mlx5: support externally allocated static memory
 
+[ upstream commit 7e43a32ee06054e7af9de6b9830b61b783df063b ]
+
 When MLX PMD registers memory for DMA, it accesses the global memseg list
 of DPDK to maximize the range of registration so that LKey search can be
 more efficient. Granularity of MR registration is per page.
@@ -26,7 +28,6 @@
 This patch is not a bug fix but needs to be included in stable versions.
 
 Fixes: 974f1e7ef146 ("net/mlx5: add new memory region support")
-Cc: stable@dpdk.org
 
 Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
 ---

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

* [dpdk-stable] patch 'app/testpmd: fix displaying RSS hash functions' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (48 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/mlx5: " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'doc: clarify L3 Tx checksum prerequisite' " Kevin Traynor
                   ` (22 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: Bernard Iremonger, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 3cdd5423a6745cb3f5b69d6c4c237cd005798b8a Mon Sep 17 00:00:00 2001
From: Ferruh Yigit <ferruh.yigit@intel.com>
Date: Thu, 4 Oct 2018 20:24:44 +0100
Subject: [PATCH] app/testpmd: fix displaying RSS hash functions

[ upstream commit 5b4557ec8d16859215fafe9e24d3fb7722f43b8a ]

Command shouldn't ask RSS hash functions as argument to get supported
RSS hash function, those values will be overwritten by PMD anyway.

To display configured RSS hash functions
"show port (port_id) rss-hash"

To display configured RSS hash functions and hash key
"show port (port_id) rss-hash key"

Fixes: 8205e241b2b0 ("app/testpmd: add missing type to RSS hash commands")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 app/test-pmd/cmdline.c                      | 28 ++++-----------------
 app/test-pmd/config.c                       | 11 ++------
 app/test-pmd/testpmd.h                      |  3 +--
 doc/guides/testpmd_app_ug/testpmd_funcs.rst |  2 +-
 4 files changed, 9 insertions(+), 35 deletions(-)

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 7a6fe5d33..4645c7840 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -176,9 +176,6 @@ static void cmd_help_long_parsed(void *parsed_result,
 			" hardware supported reta size\n\n"
 
-			"show port rss-hash ipv4|ipv4-frag|ipv4-tcp|ipv4-udp|"
-			"ipv4-sctp|ipv4-other|ipv6|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|"
-			"ipv6-other|l2-payload|ipv6-ex|ipv6-tcp-ex|ipv6-udp-ex [key]\n"
-			"    Display the RSS hash functions and RSS hash key"
-			" of port X\n\n"
+			"show port (port_id) rss-hash [key]\n"
+			"    Display the RSS hash functions and RSS hash key of port\n\n"
 
 			"clear port (info|stats|xstats|fdir|stat_qmap) (port_id|all)\n"
@@ -2817,6 +2814,5 @@ static void cmd_showport_rss_hash_parsed(void *parsed_result,
 	struct cmd_showport_rss_hash *res = parsed_result;
 
-	port_rss_hash_conf_show(res->port_id, res->rss_type,
-				show_rss_key != NULL);
+	port_rss_hash_conf_show(res->port_id, show_rss_key != NULL);
 }
 
@@ -2830,10 +2826,4 @@ cmdline_parse_token_string_t cmd_showport_rss_hash_rss_hash =
 	TOKEN_STRING_INITIALIZER(struct cmd_showport_rss_hash, rss_hash,
 				 "rss-hash");
-cmdline_parse_token_string_t cmd_showport_rss_hash_rss_hash_info =
-	TOKEN_STRING_INITIALIZER(struct cmd_showport_rss_hash, rss_type,
-				 "ipv4#ipv4-frag#ipv4-tcp#ipv4-udp#ipv4-sctp#"
-				 "ipv4-other#ipv6#ipv6-frag#ipv6-tcp#ipv6-udp#"
-				 "ipv6-sctp#ipv6-other#l2-payload#ipv6-ex#"
-				 "ipv6-tcp-ex#ipv6-udp-ex");
 cmdline_parse_token_string_t cmd_showport_rss_hash_rss_key =
 	TOKEN_STRING_INITIALIZER(struct cmd_showport_rss_hash, key, "key");
@@ -2842,8 +2832,5 @@ cmdline_parse_inst_t cmd_showport_rss_hash = {
 	.f = cmd_showport_rss_hash_parsed,
 	.data = NULL,
-	.help_str = "show port <port_id> rss-hash "
-		"ipv4|ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp|ipv4-other|"
-		"ipv6|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other|"
-		"l2-payload|ipv6-ex|ipv6-tcp-ex|ipv6-udp-ex",
+	.help_str = "show port <port_id> rss-hash",
 	.tokens = {
 		(void *)&cmd_showport_rss_hash_show,
@@ -2851,5 +2838,4 @@ cmdline_parse_inst_t cmd_showport_rss_hash = {
 		(void *)&cmd_showport_rss_hash_port_id,
 		(void *)&cmd_showport_rss_hash_rss_hash,
-		(void *)&cmd_showport_rss_hash_rss_hash_info,
 		NULL,
 	},
@@ -2859,8 +2845,5 @@ cmdline_parse_inst_t cmd_showport_rss_hash_key = {
 	.f = cmd_showport_rss_hash_parsed,
 	.data = (void *)1,
-	.help_str = "show port <port_id> rss-hash "
-		"ipv4|ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp|ipv4-other|"
-		"ipv6|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other|"
-		"l2-payload|ipv6-ex|ipv6-tcp-ex|ipv6-udp-ex key",
+	.help_str = "show port <port_id> rss-hash key",
 	.tokens = {
 		(void *)&cmd_showport_rss_hash_show,
@@ -2868,5 +2851,4 @@ cmdline_parse_inst_t cmd_showport_rss_hash_key = {
 		(void *)&cmd_showport_rss_hash_port_id,
 		(void *)&cmd_showport_rss_hash_rss_hash,
-		(void *)&cmd_showport_rss_hash_rss_hash_info,
 		(void *)&cmd_showport_rss_hash_rss_key,
 		NULL,
diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index 21d5e4ae4..a08a4a5d9 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -1929,7 +1929,7 @@ port_rss_reta_info(portid_t port_id,
  */
 void
-port_rss_hash_conf_show(portid_t port_id, char rss_info[], int show_rss_key)
+port_rss_hash_conf_show(portid_t port_id, int show_rss_key)
 {
-	struct rte_eth_rss_conf rss_conf;
+	struct rte_eth_rss_conf rss_conf = {0};
 	uint8_t rss_key[RSS_HASH_KEY_LENGTH];
 	uint64_t rss_hf;
@@ -1942,5 +1942,4 @@ port_rss_hash_conf_show(portid_t port_id, char rss_info[], int show_rss_key)
 		return;
 
-	memset(&dev_info, 0, sizeof(dev_info));
 	rte_eth_dev_info_get(port_id, &dev_info);
 	if (dev_info.hash_key_size > 0 &&
@@ -1952,10 +1951,4 @@ port_rss_hash_conf_show(portid_t port_id, char rss_info[], int show_rss_key)
 	}
 
-	rss_conf.rss_hf = 0;
-	for (i = 0; rss_type_table[i].str; i++) {
-		if (!strcmp(rss_info, rss_type_table[i].str))
-			rss_conf.rss_hf = rss_type_table[i].rss_type;
-	}
-
 	/* Get RSS hash key if asked to display it */
 	rss_conf.rss_key = (show_rss_key) ? rss_key : NULL;
diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h
index a1f661472..150b9ae2c 100644
--- a/app/test-pmd/testpmd.h
+++ b/app/test-pmd/testpmd.h
@@ -709,6 +709,5 @@ int set_vf_rate_limit(portid_t port_id, uint16_t vf, uint16_t rate,
 				uint64_t q_msk);
 
-void port_rss_hash_conf_show(portid_t port_id, char rss_info[],
-			     int show_rss_key);
+void port_rss_hash_conf_show(portid_t port_id, int show_rss_key);
 void port_rss_hash_key_update(portid_t port_id, char rss_type[],
 			      uint8_t *hash_key, uint hash_key_len);
diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
index dde205a2b..c3e4005d6 100644
--- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
+++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
@@ -232,5 +232,5 @@ show port rss-hash
 Display the RSS hash functions and RSS hash key of a port::
 
-   testpmd> show port (port_id) rss-hash ipv4|ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp|ipv4-other|ipv6|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other|l2-payload|ipv6-ex|ipv6-tcp-ex|ipv6-udp-ex [key]
+   testpmd> show port (port_id) rss-hash [key]
 
 clear port
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.328862016 +0000
+++ 0051-app-testpmd-fix-displaying-RSS-hash-functions.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,8 +1,10 @@
-From 5b4557ec8d16859215fafe9e24d3fb7722f43b8a Mon Sep 17 00:00:00 2001
+From 3cdd5423a6745cb3f5b69d6c4c237cd005798b8a Mon Sep 17 00:00:00 2001
 From: Ferruh Yigit <ferruh.yigit@intel.com>
 Date: Thu, 4 Oct 2018 20:24:44 +0100
 Subject: [PATCH] app/testpmd: fix displaying RSS hash functions
 
+[ upstream commit 5b4557ec8d16859215fafe9e24d3fb7722f43b8a ]
+
 Command shouldn't ask RSS hash functions as argument to get supported
 RSS hash function, those values will be overwritten by PMD anyway.
 
@@ -13,7 +15,6 @@
 "show port (port_id) rss-hash key"
 
 Fixes: 8205e241b2b0 ("app/testpmd: add missing type to RSS hash commands")
-Cc: stable@dpdk.org
 
 Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
 Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
@@ -25,7 +26,7 @@
  4 files changed, 9 insertions(+), 35 deletions(-)
 
 diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
-index 3376a665c..6a769bb82 100644
+index 7a6fe5d33..4645c7840 100644
 --- a/app/test-pmd/cmdline.c
 +++ b/app/test-pmd/cmdline.c
 @@ -176,9 +176,6 @@ static void cmd_help_long_parsed(void *parsed_result,
@@ -40,7 +41,7 @@
 +			"    Display the RSS hash functions and RSS hash key of port\n\n"
  
  			"clear port (info|stats|xstats|fdir|stat_qmap) (port_id|all)\n"
-@@ -2905,6 +2902,5 @@ static void cmd_showport_rss_hash_parsed(void *parsed_result,
+@@ -2817,6 +2814,5 @@ static void cmd_showport_rss_hash_parsed(void *parsed_result,
  	struct cmd_showport_rss_hash *res = parsed_result;
  
 -	port_rss_hash_conf_show(res->port_id, res->rss_type,
@@ -48,7 +49,7 @@
 +	port_rss_hash_conf_show(res->port_id, show_rss_key != NULL);
  }
  
-@@ -2918,10 +2914,4 @@ cmdline_parse_token_string_t cmd_showport_rss_hash_rss_hash =
+@@ -2830,10 +2826,4 @@ cmdline_parse_token_string_t cmd_showport_rss_hash_rss_hash =
  	TOKEN_STRING_INITIALIZER(struct cmd_showport_rss_hash, rss_hash,
  				 "rss-hash");
 -cmdline_parse_token_string_t cmd_showport_rss_hash_rss_hash_info =
@@ -59,7 +60,7 @@
 -				 "ipv6-tcp-ex#ipv6-udp-ex");
  cmdline_parse_token_string_t cmd_showport_rss_hash_rss_key =
  	TOKEN_STRING_INITIALIZER(struct cmd_showport_rss_hash, key, "key");
-@@ -2930,8 +2920,5 @@ cmdline_parse_inst_t cmd_showport_rss_hash = {
+@@ -2842,8 +2832,5 @@ cmdline_parse_inst_t cmd_showport_rss_hash = {
  	.f = cmd_showport_rss_hash_parsed,
  	.data = NULL,
 -	.help_str = "show port <port_id> rss-hash "
@@ -69,13 +70,13 @@
 +	.help_str = "show port <port_id> rss-hash",
  	.tokens = {
  		(void *)&cmd_showport_rss_hash_show,
-@@ -2939,5 +2926,4 @@ cmdline_parse_inst_t cmd_showport_rss_hash = {
+@@ -2851,5 +2838,4 @@ cmdline_parse_inst_t cmd_showport_rss_hash = {
  		(void *)&cmd_showport_rss_hash_port_id,
  		(void *)&cmd_showport_rss_hash_rss_hash,
 -		(void *)&cmd_showport_rss_hash_rss_hash_info,
  		NULL,
  	},
-@@ -2947,8 +2933,5 @@ cmdline_parse_inst_t cmd_showport_rss_hash_key = {
+@@ -2859,8 +2845,5 @@ cmdline_parse_inst_t cmd_showport_rss_hash_key = {
  	.f = cmd_showport_rss_hash_parsed,
  	.data = (void *)1,
 -	.help_str = "show port <port_id> rss-hash "
@@ -85,17 +86,17 @@
 +	.help_str = "show port <port_id> rss-hash key",
  	.tokens = {
  		(void *)&cmd_showport_rss_hash_show,
-@@ -2956,5 +2939,4 @@ cmdline_parse_inst_t cmd_showport_rss_hash_key = {
+@@ -2868,5 +2851,4 @@ cmdline_parse_inst_t cmd_showport_rss_hash_key = {
  		(void *)&cmd_showport_rss_hash_port_id,
  		(void *)&cmd_showport_rss_hash_rss_hash,
 -		(void *)&cmd_showport_rss_hash_rss_hash_info,
  		(void *)&cmd_showport_rss_hash_rss_key,
  		NULL,
 diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
-index 057457a81..5bd14bce0 100644
+index 21d5e4ae4..a08a4a5d9 100644
 --- a/app/test-pmd/config.c
 +++ b/app/test-pmd/config.c
-@@ -1680,7 +1680,7 @@ port_rss_reta_info(portid_t port_id,
+@@ -1929,7 +1929,7 @@ port_rss_reta_info(portid_t port_id,
   */
  void
 -port_rss_hash_conf_show(portid_t port_id, char rss_info[], int show_rss_key)
@@ -105,13 +106,13 @@
 +	struct rte_eth_rss_conf rss_conf = {0};
  	uint8_t rss_key[RSS_HASH_KEY_LENGTH];
  	uint64_t rss_hf;
-@@ -1693,5 +1693,4 @@ port_rss_hash_conf_show(portid_t port_id, char rss_info[], int show_rss_key)
+@@ -1942,5 +1942,4 @@ port_rss_hash_conf_show(portid_t port_id, char rss_info[], int show_rss_key)
  		return;
  
 -	memset(&dev_info, 0, sizeof(dev_info));
  	rte_eth_dev_info_get(port_id, &dev_info);
  	if (dev_info.hash_key_size > 0 &&
-@@ -1703,10 +1702,4 @@ port_rss_hash_conf_show(portid_t port_id, char rss_info[], int show_rss_key)
+@@ -1952,10 +1951,4 @@ port_rss_hash_conf_show(portid_t port_id, char rss_info[], int show_rss_key)
  	}
  
 -	rss_conf.rss_hf = 0;
@@ -123,10 +124,10 @@
  	/* Get RSS hash key if asked to display it */
  	rss_conf.rss_key = (show_rss_key) ? rss_key : NULL;
 diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h
-index ae6a5bd4e..3cd4bbb3e 100644
+index a1f661472..150b9ae2c 100644
 --- a/app/test-pmd/testpmd.h
 +++ b/app/test-pmd/testpmd.h
-@@ -717,6 +717,5 @@ int set_vf_rate_limit(portid_t port_id, uint16_t vf, uint16_t rate,
+@@ -709,6 +709,5 @@ int set_vf_rate_limit(portid_t port_id, uint16_t vf, uint16_t rate,
  				uint64_t q_msk);
  
 -void port_rss_hash_conf_show(portid_t port_id, char rss_info[],
@@ -135,7 +136,7 @@
  void port_rss_hash_key_update(portid_t port_id, char rss_type[],
  			      uint8_t *hash_key, uint hash_key_len);
 diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
-index 3a73000a6..9ef2aca9b 100644
+index dde205a2b..c3e4005d6 100644
 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
 +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
 @@ -232,5 +232,5 @@ show port rss-hash

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

* [dpdk-stable] patch 'doc: clarify L3 Tx checksum prerequisite' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (49 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'app/testpmd: fix displaying RSS hash functions' " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'doc: clarify L4 " Kevin Traynor
                   ` (21 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Jerin Jacob; +Cc: Andrew Rybchenko, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From af0f055376f9ae057504a92e378b5f07cb899b88 Mon Sep 17 00:00:00 2001
From: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Date: Fri, 5 Oct 2018 10:16:04 +0530
Subject: [PATCH] doc: clarify L3 Tx checksum prerequisite

[ upstream commit 9713e32914a23780aac00fd5b6435aa72e87b377 ]

Based on PKT_TX_IP_CKSUM definition the user needs
to fill l2_len and l3_len mbuf fields before issuing
HW Tx checksum request.

Fixes: dad1ec72a377 ("doc: document NIC features")

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
---
 doc/guides/nics/features.rst | 1 +
 1 file changed, 1 insertion(+)

diff --git a/doc/guides/nics/features.rst b/doc/guides/nics/features.rst
index cddc877d4..7cc8ba2d9 100644
--- a/doc/guides/nics/features.rst
+++ b/doc/guides/nics/features.rst
@@ -562,4 +562,5 @@ Supports L3 checksum offload.
 * **[uses]     mbuf**: ``mbuf.ol_flags:PKT_TX_IP_CKSUM``,
   ``mbuf.ol_flags:PKT_TX_IPV4`` | ``PKT_TX_IPV6``.
+* **[uses]     mbuf**: ``mbuf.l2_len``, ``mbuf.l3_len``.
 * **[provides] mbuf**: ``mbuf.ol_flags:PKT_RX_IP_CKSUM_UNKNOWN`` |
   ``PKT_RX_IP_CKSUM_BAD`` | ``PKT_RX_IP_CKSUM_GOOD`` |
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.375414161 +0000
+++ 0052-doc-clarify-L3-Tx-checksum-prerequisite.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,14 +1,15 @@
-From 9713e32914a23780aac00fd5b6435aa72e87b377 Mon Sep 17 00:00:00 2001
+From af0f055376f9ae057504a92e378b5f07cb899b88 Mon Sep 17 00:00:00 2001
 From: Jerin Jacob <jerin.jacob@caviumnetworks.com>
 Date: Fri, 5 Oct 2018 10:16:04 +0530
 Subject: [PATCH] doc: clarify L3 Tx checksum prerequisite
 
+[ upstream commit 9713e32914a23780aac00fd5b6435aa72e87b377 ]
+
 Based on PKT_TX_IP_CKSUM definition the user needs
 to fill l2_len and l3_len mbuf fields before issuing
 HW Tx checksum request.
 
 Fixes: dad1ec72a377 ("doc: document NIC features")
-Cc: stable@dpdk.org
 
 Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
 Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
@@ -17,10 +18,10 @@
  1 file changed, 1 insertion(+)
 
 diff --git a/doc/guides/nics/features.rst b/doc/guides/nics/features.rst
-index 4a946251a..a21146676 100644
+index cddc877d4..7cc8ba2d9 100644
 --- a/doc/guides/nics/features.rst
 +++ b/doc/guides/nics/features.rst
-@@ -564,4 +564,5 @@ Supports L3 checksum offload.
+@@ -562,4 +562,5 @@ Supports L3 checksum offload.
  * **[uses]     mbuf**: ``mbuf.ol_flags:PKT_TX_IP_CKSUM``,
    ``mbuf.ol_flags:PKT_TX_IPV4`` | ``PKT_TX_IPV6``.
 +* **[uses]     mbuf**: ``mbuf.l2_len``, ``mbuf.l3_len``.

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

* [dpdk-stable] patch 'doc: clarify L4 Tx checksum prerequisite' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (50 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'doc: clarify L3 Tx checksum prerequisite' " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/failsafe: use prefix for function' " Kevin Traynor
                   ` (20 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Jerin Jacob; +Cc: Andrew Rybchenko, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From e24029db907393ba39575401c68ea281ad79fa16 Mon Sep 17 00:00:00 2001
From: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Date: Fri, 5 Oct 2018 10:16:05 +0530
Subject: [PATCH] doc: clarify L4 Tx checksum prerequisite

[ upstream commit 425f09300ea20ee95730b0c9cb1f95d0dc588541 ]

Based on PKT_TX_[TCP|UDP|SCTP]_CKSUM definition the user needs
to fill l2_len and l3_len mbuf fields before issuing HW Tx
checksum request.

Fixes: dad1ec72a377 ("doc: document NIC features")

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
---
 doc/guides/nics/features.rst | 1 +
 1 file changed, 1 insertion(+)

diff --git a/doc/guides/nics/features.rst b/doc/guides/nics/features.rst
index 7cc8ba2d9..a3b64c68c 100644
--- a/doc/guides/nics/features.rst
+++ b/doc/guides/nics/features.rst
@@ -582,4 +582,5 @@ Supports L4 checksum offload.
   ``mbuf.ol_flags:PKT_TX_L4_NO_CKSUM`` | ``PKT_TX_TCP_CKSUM`` |
   ``PKT_TX_SCTP_CKSUM`` | ``PKT_TX_UDP_CKSUM``.
+* **[uses]     mbuf**: ``mbuf.l2_len``, ``mbuf.l3_len``.
 * **[provides] mbuf**: ``mbuf.ol_flags:PKT_RX_L4_CKSUM_UNKNOWN`` |
   ``PKT_RX_L4_CKSUM_BAD`` | ``PKT_RX_L4_CKSUM_GOOD`` |
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.401730918 +0000
+++ 0053-doc-clarify-L4-Tx-checksum-prerequisite.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,14 +1,15 @@
-From 425f09300ea20ee95730b0c9cb1f95d0dc588541 Mon Sep 17 00:00:00 2001
+From e24029db907393ba39575401c68ea281ad79fa16 Mon Sep 17 00:00:00 2001
 From: Jerin Jacob <jerin.jacob@caviumnetworks.com>
 Date: Fri, 5 Oct 2018 10:16:05 +0530
 Subject: [PATCH] doc: clarify L4 Tx checksum prerequisite
 
+[ upstream commit 425f09300ea20ee95730b0c9cb1f95d0dc588541 ]
+
 Based on PKT_TX_[TCP|UDP|SCTP]_CKSUM definition the user needs
 to fill l2_len and l3_len mbuf fields before issuing HW Tx
 checksum request.
 
 Fixes: dad1ec72a377 ("doc: document NIC features")
-Cc: stable@dpdk.org
 
 Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
 Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
@@ -17,10 +18,10 @@
  1 file changed, 1 insertion(+)
 
 diff --git a/doc/guides/nics/features.rst b/doc/guides/nics/features.rst
-index a21146676..6c37e79fd 100644
+index 7cc8ba2d9..a3b64c68c 100644
 --- a/doc/guides/nics/features.rst
 +++ b/doc/guides/nics/features.rst
-@@ -584,4 +584,5 @@ Supports L4 checksum offload.
+@@ -582,4 +582,5 @@ Supports L4 checksum offload.
    ``mbuf.ol_flags:PKT_TX_L4_NO_CKSUM`` | ``PKT_TX_TCP_CKSUM`` |
    ``PKT_TX_SCTP_CKSUM`` | ``PKT_TX_UDP_CKSUM``.
 +* **[uses]     mbuf**: ``mbuf.l2_len``, ``mbuf.l3_len``.

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

* [dpdk-stable] patch 'net/failsafe: use prefix for function' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (51 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'doc: clarify L4 " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/mlx5: fix errno values for flow engine' " Kevin Traynor
                   ` (19 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Gaetan Rivet, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From c6b7a0f2f12169bdc205c612aa6473822a69f6c3 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@networkplumber.org>
Date: Mon, 8 Oct 2018 15:31:40 -0700
Subject: [PATCH] net/failsafe: use prefix for function

[ upstream commit 86123c2dfb94416b4fb17e07bf31d32172308623 ]

All other visible functions in failsafe driver have 'failsafe_'
prefix.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Gaetan Rivet <gaetan.rivet@6wind.com>
---
 drivers/net/failsafe/failsafe_ether.c   | 2 +-
 drivers/net/failsafe/failsafe_private.h | 4 ++--
 drivers/net/failsafe/failsafe_rxtx.c    | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/net/failsafe/failsafe_ether.c b/drivers/net/failsafe/failsafe_ether.c
index 5b5cb3b49..5f6fbf876 100644
--- a/drivers/net/failsafe/failsafe_ether.c
+++ b/drivers/net/failsafe/failsafe_ether.c
@@ -467,5 +467,5 @@ failsafe_eth_rmv_event_callback(uint16_t port_id __rte_unused,
 	fs_switch_dev(sdev->fs_dev, sdev);
 	/* Use safe bursts in any case. */
-	set_burst_fn(sdev->fs_dev, 1);
+	failsafe_set_burst_fn(sdev->fs_dev, 1);
 	/*
 	 * Async removal, the sub-PMD will try to unregister
diff --git a/drivers/net/failsafe/failsafe_private.h b/drivers/net/failsafe/failsafe_private.h
index 886af8616..b740b36ec 100644
--- a/drivers/net/failsafe/failsafe_private.h
+++ b/drivers/net/failsafe/failsafe_private.h
@@ -189,5 +189,5 @@ int failsafe_hotplug_alarm_cancel(struct rte_eth_dev *dev);
 /* RX / TX */
 
-void set_burst_fn(struct rte_eth_dev *dev, int force_safe);
+void failsafe_set_burst_fn(struct rte_eth_dev *dev, int force_safe);
 
 uint16_t failsafe_rx_burst(void *rxq,
@@ -469,5 +469,5 @@ fs_switch_dev(struct rte_eth_dev *dev,
 		return;
 	}
-	set_burst_fn(dev, 0);
+	failsafe_set_burst_fn(dev, 0);
 	rte_wmb();
 }
diff --git a/drivers/net/failsafe/failsafe_rxtx.c b/drivers/net/failsafe/failsafe_rxtx.c
index 7bd0f963e..034f47b87 100644
--- a/drivers/net/failsafe/failsafe_rxtx.c
+++ b/drivers/net/failsafe/failsafe_rxtx.c
@@ -30,5 +30,5 @@ fs_tx_unsafe(struct sub_device *sdev)
 
 void
-set_burst_fn(struct rte_eth_dev *dev, int force_safe)
+failsafe_set_burst_fn(struct rte_eth_dev *dev, int force_safe)
 {
 	struct sub_device *sdev;
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.424201292 +0000
+++ 0054-net-failsafe-use-prefix-for-function.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,8 +1,10 @@
-From 86123c2dfb94416b4fb17e07bf31d32172308623 Mon Sep 17 00:00:00 2001
+From c6b7a0f2f12169bdc205c612aa6473822a69f6c3 Mon Sep 17 00:00:00 2001
 From: Stephen Hemminger <stephen@networkplumber.org>
 Date: Mon, 8 Oct 2018 15:31:40 -0700
 Subject: [PATCH] net/failsafe: use prefix for function
 
+[ upstream commit 86123c2dfb94416b4fb17e07bf31d32172308623 ]
+
 All other visible functions in failsafe driver have 'failsafe_'
 prefix.
 
@@ -15,10 +17,10 @@
  3 files changed, 4 insertions(+), 4 deletions(-)
 
 diff --git a/drivers/net/failsafe/failsafe_ether.c b/drivers/net/failsafe/failsafe_ether.c
-index 884b86882..178316521 100644
+index 5b5cb3b49..5f6fbf876 100644
 --- a/drivers/net/failsafe/failsafe_ether.c
 +++ b/drivers/net/failsafe/failsafe_ether.c
-@@ -571,5 +571,5 @@ failsafe_eth_rmv_event_callback(uint16_t port_id __rte_unused,
+@@ -467,5 +467,5 @@ failsafe_eth_rmv_event_callback(uint16_t port_id __rte_unused,
  	fs_switch_dev(sdev->fs_dev, sdev);
  	/* Use safe bursts in any case. */
 -	set_burst_fn(sdev->fs_dev, 1);
@@ -26,17 +28,17 @@
  	/*
  	 * Async removal, the sub-PMD will try to unregister
 diff --git a/drivers/net/failsafe/failsafe_private.h b/drivers/net/failsafe/failsafe_private.h
-index b9d4608ab..442e6199f 100644
+index 886af8616..b740b36ec 100644
 --- a/drivers/net/failsafe/failsafe_private.h
 +++ b/drivers/net/failsafe/failsafe_private.h
-@@ -194,5 +194,5 @@ int failsafe_hotplug_alarm_cancel(struct rte_eth_dev *dev);
+@@ -189,5 +189,5 @@ int failsafe_hotplug_alarm_cancel(struct rte_eth_dev *dev);
  /* RX / TX */
  
 -void set_burst_fn(struct rte_eth_dev *dev, int force_safe);
 +void failsafe_set_burst_fn(struct rte_eth_dev *dev, int force_safe);
  
  uint16_t failsafe_rx_burst(void *rxq,
-@@ -474,5 +474,5 @@ fs_switch_dev(struct rte_eth_dev *dev,
+@@ -469,5 +469,5 @@ fs_switch_dev(struct rte_eth_dev *dev,
  		return;
  	}
 -	set_burst_fn(dev, 0);

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

* [dpdk-stable] patch 'net/mlx5: fix errno values for flow engine' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (52 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/failsafe: use prefix for function' " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'doc: add VFIO in ENA guide' " Kevin Traynor
                   ` (18 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Yongseok Koh; +Cc: Ori Kam, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 1d79caa2d1fc150f4edb5f8e128b6de50416d815 Mon Sep 17 00:00:00 2001
From: Yongseok Koh <yskoh@mellanox.com>
Date: Mon, 8 Oct 2018 18:02:19 +0000
Subject: [PATCH] net/mlx5: fix errno values for flow engine

[ upstream commit c10f5d643b28a3bff1156ae54d5ebcfda15f34d9 ]

Fixes: af689f1f04c2 ("net/mlx5: support flow Ethernet item along with drop action")
Fixes: 919d53ad78d2 ("net/mlx5: fix count query when flow has not counter")

Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
Acked-by: Ori Kam <orika@mellanox.com>
---
 drivers/net/mlx5/mlx5_flow.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index 3f548a9a4..4f21215df 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -688,8 +688,8 @@ mlx5_flow_item_acceptable(const struct rte_flow_item *item,
 		ret = memcmp(spec, last, size);
 		if (ret != 0)
-			return rte_flow_error_set(error, ENOTSUP,
+			return rte_flow_error_set(error, EINVAL,
 						  RTE_FLOW_ERROR_TYPE_ITEM,
 						  item,
-						  "range is not supported");
+						  "range is not valid");
 	}
 	return 0;
@@ -3406,5 +3406,5 @@ mlx5_flow_query_count(struct rte_flow *flow __rte_unused,
 		return 0;
 	}
-	return rte_flow_error_set(error, ENOTSUP,
+	return rte_flow_error_set(error, EINVAL,
 				  RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
 				  NULL,
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.447706520 +0000
+++ 0055-net-mlx5-fix-errno-values-for-flow-engine.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,11 +1,12 @@
-From c10f5d643b28a3bff1156ae54d5ebcfda15f34d9 Mon Sep 17 00:00:00 2001
+From 1d79caa2d1fc150f4edb5f8e128b6de50416d815 Mon Sep 17 00:00:00 2001
 From: Yongseok Koh <yskoh@mellanox.com>
 Date: Mon, 8 Oct 2018 18:02:19 +0000
 Subject: [PATCH] net/mlx5: fix errno values for flow engine
 
+[ upstream commit c10f5d643b28a3bff1156ae54d5ebcfda15f34d9 ]
+
 Fixes: af689f1f04c2 ("net/mlx5: support flow Ethernet item along with drop action")
 Fixes: 919d53ad78d2 ("net/mlx5: fix count query when flow has not counter")
-Cc: stable@dpdk.org
 
 Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
 Acked-by: Ori Kam <orika@mellanox.com>
@@ -14,10 +15,10 @@
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
-index 078b07619..ed60c40f9 100644
+index 3f548a9a4..4f21215df 100644
 --- a/drivers/net/mlx5/mlx5_flow.c
 +++ b/drivers/net/mlx5/mlx5_flow.c
-@@ -453,8 +453,8 @@ mlx5_flow_item_acceptable(const struct rte_flow_item *item,
+@@ -688,8 +688,8 @@ mlx5_flow_item_acceptable(const struct rte_flow_item *item,
  		ret = memcmp(spec, last, size);
  		if (ret != 0)
 -			return rte_flow_error_set(error, ENOTSUP,
@@ -28,7 +29,7 @@
 +						  "range is not valid");
  	}
  	return 0;
-@@ -2337,5 +2337,5 @@ mlx5_flow_query_count(struct rte_flow *flow __rte_unused,
+@@ -3406,5 +3406,5 @@ mlx5_flow_query_count(struct rte_flow *flow __rte_unused,
  		return 0;
  	}
 -	return rte_flow_error_set(error, ENOTSUP,

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

* [dpdk-stable] patch 'doc: add VFIO in ENA guide' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (53 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/mlx5: fix errno values for flow engine' " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'drivers/net: fix log type string' " Kevin Traynor
                   ` (17 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Rafal Kozik; +Cc: Zorik Machulsky, Michal Krawczyk, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 1bbf0fd6b9d9433a8972eb1733a652acb3b62579 Mon Sep 17 00:00:00 2001
From: Rafal Kozik <rk@semihalf.com>
Date: Wed, 10 Oct 2018 14:08:15 +0200
Subject: [PATCH] doc: add VFIO in ENA guide

[ upstream commit 4d0155db76da10b4e549b5b8814962748bcf2192 ]

Add instruction how to bind ENA to VFIO-PCI driver.

Fixes: cf8a122c296a ("ena: introduce documentation")

Signed-off-by: Zorik Machulsky <zorik@amazon.com>
Signed-off-by: Rafal Kozik <rk@semihalf.com>
Acked-by: Michal Krawczyk <mk@semihalf.com>
---
 doc/guides/nics/ena.rst          | 15 ++++++++++++---
 doc/guides/nics/features/ena.ini |  1 +
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/doc/guides/nics/ena.rst b/doc/guides/nics/ena.rst
index d19912e9b..695960d4c 100644
--- a/doc/guides/nics/ena.rst
+++ b/doc/guides/nics/ena.rst
@@ -188,9 +188,18 @@ Prerequisites
 
 #. Prepare the system as recommended by DPDK suite.  This includes environment
-   variables, hugepages configuration, tool-chains and configuration
+   variables, hugepages configuration, tool-chains and configuration.
 
-#. Insert igb_uio kernel module using the command 'modprobe igb_uio'
+#. ENA PMD can operate with ``vfio-pci`` or ``igb_uio`` driver.
 
-#. Bind the intended ENA device to igb_uio module
+#. Insert ``vfio-pci`` or ``igb_uio`` kernel module using the command
+   ``modprobe vfio-pci`` or ``modprobe igb_uio`` respectively.
+
+#. For ``vfio-pci`` users only:
+   Please make sure that ``IOMMU`` is enabled in your system,
+   or use ``vfio`` driver in ``noiommu`` mode::
+
+     echo 1 > /sys/module/vfio/parameters/enable_unsafe_noiommu_mode
+
+#. Bind the intended ENA device to ``vfio-pci`` or ``igb_uio`` module.
 
 
diff --git a/doc/guides/nics/features/ena.ini b/doc/guides/nics/features/ena.ini
index 691c1e3d3..aa6f05a71 100644
--- a/doc/guides/nics/features/ena.ini
+++ b/doc/guides/nics/features/ena.ini
@@ -24,4 +24,5 @@ Basic stats          = Y
 Extended stats       = Y
 Linux UIO            = Y
+Linux VFIO           = Y
 x86-32               = Y
 x86-64               = Y
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.473275188 +0000
+++ 0056-doc-add-VFIO-in-ENA-guide.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,12 +1,13 @@
-From 4d0155db76da10b4e549b5b8814962748bcf2192 Mon Sep 17 00:00:00 2001
+From 1bbf0fd6b9d9433a8972eb1733a652acb3b62579 Mon Sep 17 00:00:00 2001
 From: Rafal Kozik <rk@semihalf.com>
 Date: Wed, 10 Oct 2018 14:08:15 +0200
 Subject: [PATCH] doc: add VFIO in ENA guide
 
+[ upstream commit 4d0155db76da10b4e549b5b8814962748bcf2192 ]
+
 Add instruction how to bind ENA to VFIO-PCI driver.
 
 Fixes: cf8a122c296a ("ena: introduce documentation")
-Cc: stable@dpdk.org
 
 Signed-off-by: Zorik Machulsky <zorik@amazon.com>
 Signed-off-by: Rafal Kozik <rk@semihalf.com>

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

* [dpdk-stable] patch 'drivers/net: fix log type string' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (54 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'doc: add VFIO in ENA guide' " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'app/testpmd: fix printf format in event callback' " Kevin Traynor
                   ` (16 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: Stephen Hemminger, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From c2852e95efbad035e5792aa12944b0552fcafcdb Mon Sep 17 00:00:00 2001
From: Ferruh Yigit <ferruh.yigit@intel.com>
Date: Tue, 9 Oct 2018 18:38:37 +0100
Subject: [PATCH] drivers/net: fix log type string

[ upstream commit 9631253ffaa11386ba9d27387bb485b6edc107e6 ]

Syntax for log type string is "pmd.<subsystem>.<driver>[.<pmd_local>]"

Fixes: 3e92fd4e4ec0 ("net/bnxt: use dynamic log type")
Fixes: d7f4562ab10a ("net/bonding: convert to dynamic logging")
Fixes: 6086ab3bb3d2 ("net/vdev_netvsc: introduce Hyper-V platform driver")
Fixes: 7db274b9ada2 ("doc: describe dynamic logging format")
Fixes: a10a988a0ba6 ("net/dpaa2: support dynamic logging")

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
---
 doc/guides/contributing/coding_style.rst | 4 ++--
 doc/guides/nics/dpaa2.rst                | 2 +-
 drivers/net/bnxt/bnxt_ethdev.c           | 2 +-
 drivers/net/bonding/rte_eth_bond_pmd.c   | 2 +-
 drivers/net/vdev_netvsc/vdev_netvsc.c    | 2 +-
 5 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/doc/guides/contributing/coding_style.rst b/doc/guides/contributing/coding_style.rst
index b1bf0d15c..19445c113 100644
--- a/doc/guides/contributing/coding_style.rst
+++ b/doc/guides/contributing/coding_style.rst
@@ -742,6 +742,6 @@ A specialization looks like this:
 
 A real world example is the i40e poll mode driver which exposes two
-specializations, one for initialization ``pmd.i40e.init`` and the other for
-the remaining driver logs ``pmd.i40e.driver``.
+specializations, one for initialization ``pmd.net.i40e.init`` and the other for
+the remaining driver logs ``pmd.net.i40e.driver``.
 
 Note that specializations have no formatting rules, but please follow
diff --git a/doc/guides/nics/dpaa2.rst b/doc/guides/nics/dpaa2.rst
index 66c03e103..e2f385d42 100644
--- a/doc/guides/nics/dpaa2.rst
+++ b/doc/guides/nics/dpaa2.rst
@@ -559,5 +559,5 @@ which are lower than logging ``level``.
     <dpdk app> <EAL args> --log-level=pmd.net.dpaa2:<level> -- ...
 
-Using ``pmd.dpaa2`` as log matching criteria, all PMD logs can be enabled
+Using ``pmd.net.dpaa2`` as log matching criteria, all PMD logs can be enabled
 which are lower than logging ``level``.
 
diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index 91123edef..d2d619584 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -3545,5 +3545,5 @@ bool is_bnxt_supported(struct rte_eth_dev *dev)
 RTE_INIT(bnxt_init_log)
 {
-	bnxt_logtype_driver = rte_log_register("pmd.bnxt.driver");
+	bnxt_logtype_driver = rte_log_register("pmd.net.bnxt.driver");
 	if (bnxt_logtype_driver >= 0)
 		rte_log_set_level(bnxt_logtype_driver, RTE_LOG_INFO);
diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
index 5c2890f5f..0afc31bd6 100644
--- a/drivers/net/bonding/rte_eth_bond_pmd.c
+++ b/drivers/net/bonding/rte_eth_bond_pmd.c
@@ -3581,5 +3581,5 @@ int bond_logtype;
 RTE_INIT(bond_init_log)
 {
-	bond_logtype = rte_log_register("pmd.net.bon");
+	bond_logtype = rte_log_register("pmd.net.bond");
 	if (bond_logtype >= 0)
 		rte_log_set_level(bond_logtype, RTE_LOG_NOTICE);
diff --git a/drivers/net/vdev_netvsc/vdev_netvsc.c b/drivers/net/vdev_netvsc/vdev_netvsc.c
index 48717f2f0..16303ef5e 100644
--- a/drivers/net/vdev_netvsc/vdev_netvsc.c
+++ b/drivers/net/vdev_netvsc/vdev_netvsc.c
@@ -790,5 +790,5 @@ RTE_PMD_REGISTER_PARAM_STRING(net_vdev_netvsc,
 RTE_INIT(vdev_netvsc_init_log)
 {
-	vdev_netvsc_logtype = rte_log_register("pmd.vdev_netvsc");
+	vdev_netvsc_logtype = rte_log_register("pmd.net.vdev_netvsc");
 	if (vdev_netvsc_logtype >= 0)
 		rte_log_set_level(vdev_netvsc_logtype, RTE_LOG_NOTICE);
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.496580609 +0000
+++ 0057-drivers-net-fix-log-type-string.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,8 +1,10 @@
-From 9631253ffaa11386ba9d27387bb485b6edc107e6 Mon Sep 17 00:00:00 2001
+From c2852e95efbad035e5792aa12944b0552fcafcdb Mon Sep 17 00:00:00 2001
 From: Ferruh Yigit <ferruh.yigit@intel.com>
 Date: Tue, 9 Oct 2018 18:38:37 +0100
 Subject: [PATCH] drivers/net: fix log type string
 
+[ upstream commit 9631253ffaa11386ba9d27387bb485b6edc107e6 ]
+
 Syntax for log type string is "pmd.<subsystem>.<driver>[.<pmd_local>]"
 
 Fixes: 3e92fd4e4ec0 ("net/bnxt: use dynamic log type")
@@ -10,7 +12,6 @@
 Fixes: 6086ab3bb3d2 ("net/vdev_netvsc: introduce Hyper-V platform driver")
 Fixes: 7db274b9ada2 ("doc: describe dynamic logging format")
 Fixes: a10a988a0ba6 ("net/dpaa2: support dynamic logging")
-Cc: stable@dpdk.org
 
 Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
 Acked-by: Stephen Hemminger <stephen@networkplumber.org>
@@ -47,10 +48,10 @@
  which are lower than logging ``level``.
  
 diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
-index 88e026c7d..858e65d00 100644
+index 91123edef..d2d619584 100644
 --- a/drivers/net/bnxt/bnxt_ethdev.c
 +++ b/drivers/net/bnxt/bnxt_ethdev.c
-@@ -3570,5 +3570,5 @@ bool is_bnxt_supported(struct rte_eth_dev *dev)
+@@ -3545,5 +3545,5 @@ bool is_bnxt_supported(struct rte_eth_dev *dev)
  RTE_INIT(bnxt_init_log)
  {
 -	bnxt_logtype_driver = rte_log_register("pmd.bnxt.driver");
@@ -58,10 +59,10 @@
  	if (bnxt_logtype_driver >= 0)
  		rte_log_set_level(bnxt_logtype_driver, RTE_LOG_INFO);
 diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
-index 1d6245aa5..31c83a286 100644
+index 5c2890f5f..0afc31bd6 100644
 --- a/drivers/net/bonding/rte_eth_bond_pmd.c
 +++ b/drivers/net/bonding/rte_eth_bond_pmd.c
-@@ -3599,5 +3599,5 @@ int bond_logtype;
+@@ -3581,5 +3581,5 @@ int bond_logtype;
  RTE_INIT(bond_init_log)
  {
 -	bond_logtype = rte_log_register("pmd.net.bon");

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

* [dpdk-stable] patch 'app/testpmd: fix printf format in event callback' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (55 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'drivers/net: fix log type string' " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'app/testpmd: fix duplicate exit' " Kevin Traynor
                   ` (15 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Herakliusz Lipiec; +Cc: Bernard Iremonger, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From a6508da87d3bd83221b725f473c5af932da653b1 Mon Sep 17 00:00:00 2001
From: Herakliusz Lipiec <herakliusz.lipiec@intel.com>
Date: Tue, 25 Sep 2018 12:23:00 +0100
Subject: [PATCH] app/testpmd: fix printf format in event callback

[ upstream commit f431e0104df89aa9f53b20448530baec18f3d39a ]

change PRIu8 -> PRIu16 for port_id in eth_event_callback
(portid_t is uint16_t)

Fixes: 76ad4a2d82d4 ("app/testpmd: add generic event handler")

Signed-off-by: Herakliusz Lipiec <herakliusz.lipiec@intel.com>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 app/test-pmd/testpmd.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index a56af2b5c..51de403de 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -2221,9 +2221,9 @@ eth_event_callback(portid_t port_id, enum rte_eth_event_type type, void *param,
 
 	if (type >= RTE_ETH_EVENT_MAX) {
-		fprintf(stderr, "\nPort %" PRIu8 ": %s called upon invalid event %d\n",
+		fprintf(stderr, "\nPort %" PRIu16 ": %s called upon invalid event %d\n",
 			port_id, __func__, type);
 		fflush(stderr);
 	} else if (event_print_mask & (UINT32_C(1) << type)) {
-		printf("\nPort %" PRIu8 ": %s event\n", port_id,
+		printf("\nPort %" PRIu16 ": %s event\n", port_id,
 			event_desc[type]);
 		fflush(stdout);
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.530583341 +0000
+++ 0058-app-testpmd-fix-printf-format-in-event-callback.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,13 +1,14 @@
-From f431e0104df89aa9f53b20448530baec18f3d39a Mon Sep 17 00:00:00 2001
+From a6508da87d3bd83221b725f473c5af932da653b1 Mon Sep 17 00:00:00 2001
 From: Herakliusz Lipiec <herakliusz.lipiec@intel.com>
 Date: Tue, 25 Sep 2018 12:23:00 +0100
 Subject: [PATCH] app/testpmd: fix printf format in event callback
 
+[ upstream commit f431e0104df89aa9f53b20448530baec18f3d39a ]
+
 change PRIu8 -> PRIu16 for port_id in eth_event_callback
 (portid_t is uint16_t)
 
 Fixes: 76ad4a2d82d4 ("app/testpmd: add generic event handler")
-Cc: stable@dpdk.org
 
 Signed-off-by: Herakliusz Lipiec <herakliusz.lipiec@intel.com>
 Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
@@ -16,10 +17,10 @@
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
-index 5e0b245f8..8a50ddeef 100644
+index a56af2b5c..51de403de 100644
 --- a/app/test-pmd/testpmd.c
 +++ b/app/test-pmd/testpmd.c
-@@ -2507,9 +2507,9 @@ eth_event_callback(portid_t port_id, enum rte_eth_event_type type, void *param,
+@@ -2221,9 +2221,9 @@ eth_event_callback(portid_t port_id, enum rte_eth_event_type type, void *param,
  
  	if (type >= RTE_ETH_EVENT_MAX) {
 -		fprintf(stderr, "\nPort %" PRIu8 ": %s called upon invalid event %d\n",

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

* [dpdk-stable] patch 'app/testpmd: fix duplicate exit' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (56 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'app/testpmd: fix printf format in event callback' " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/mlx5: support missing counter in extended statistics' " Kevin Traynor
                   ` (14 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Brian Archbold; +Cc: Bernard Iremonger, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 2fe9b7d8ecb68a7640d01ba850bdc928b07ce153 Mon Sep 17 00:00:00 2001
From: Brian Archbold <brian.archbold@intel.com>
Date: Wed, 22 Aug 2018 07:05:06 +0100
Subject: [PATCH] app/testpmd: fix duplicate exit

[ upstream commit 27c7031e0b49abbaf13ea4c4a809a07b9282422d ]

In interactive mode, when the "quit" command is issued, pmd_test_exit()
is being called twice, once through the "quit" command and the other
after termination of prompt.

Remove duplicated exit routine by removing call from "quit" command.

Steps to reproduce:
- Run testpmd in interactive mode.
- type "quit".

Fixes: af75078fece3 ("first public release")

Signed-off-by: Brian Archbold <brian.archbold@intel.com>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 app/test-pmd/cmdline.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 4645c7840..69c8e0499 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -7556,5 +7556,4 @@ static void cmd_quit_parsed(__attribute__((unused)) void *parsed_result,
 			    __attribute__((unused)) void *data)
 {
-	pmd_test_exit();
 	cmdline_quit(cl);
 }
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.555701548 +0000
+++ 0059-app-testpmd-fix-duplicate-exit.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,8 +1,10 @@
-From 27c7031e0b49abbaf13ea4c4a809a07b9282422d Mon Sep 17 00:00:00 2001
+From 2fe9b7d8ecb68a7640d01ba850bdc928b07ce153 Mon Sep 17 00:00:00 2001
 From: Brian Archbold <brian.archbold@intel.com>
 Date: Wed, 22 Aug 2018 07:05:06 +0100
 Subject: [PATCH] app/testpmd: fix duplicate exit
 
+[ upstream commit 27c7031e0b49abbaf13ea4c4a809a07b9282422d ]
+
 In interactive mode, when the "quit" command is issued, pmd_test_exit()
 is being called twice, once through the "quit" command and the other
 after termination of prompt.
@@ -14,7 +16,6 @@
 - type "quit".
 
 Fixes: af75078fece3 ("first public release")
-Cc: stable@dpdk.org
 
 Signed-off-by: Brian Archbold <brian.archbold@intel.com>
 Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
@@ -23,10 +24,10 @@
  1 file changed, 1 deletion(-)
 
 diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
-index 1b40e3fa8..dd5616d35 100644
+index 4645c7840..69c8e0499 100644
 --- a/app/test-pmd/cmdline.c
 +++ b/app/test-pmd/cmdline.c
-@@ -7671,5 +7671,4 @@ static void cmd_quit_parsed(__attribute__((unused)) void *parsed_result,
+@@ -7556,5 +7556,4 @@ static void cmd_quit_parsed(__attribute__((unused)) void *parsed_result,
  			    __attribute__((unused)) void *data)
  {
 -	pmd_test_exit();

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

* [dpdk-stable] patch 'net/mlx5: support missing counter in extended statistics' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (57 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'app/testpmd: fix duplicate exit' " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/mlx5: add representor specific " Kevin Traynor
                   ` (13 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Shahaf Shuler; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 866f2720a1735d213f08108fc8092fa13d7154bc Mon Sep 17 00:00:00 2001
From: Shahaf Shuler <shahafs@mellanox.com>
Date: Mon, 17 Sep 2018 12:46:34 +0300
Subject: [PATCH] net/mlx5: support missing counter in extended statistics

[ upstream commit 1a611fdaf6ec3d860d7b0f39cdd8b754ef51ebc3 ]

The current code would fail if one of the counters DPDK counters was not
found on the device counters.

As representors and PF port has different counters the both cannot work
together.

Addressing this issue by making the counter init more flexible to
contain all the counter found and skipping the error.

Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
---
 drivers/net/mlx5/mlx5.h       | 11 ++++++
 drivers/net/mlx5/mlx5_stats.c | 67 +++++++++++++++--------------------
 2 files changed, 40 insertions(+), 38 deletions(-)

diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h
index 35a196e76..b4ba147ab 100644
--- a/drivers/net/mlx5/mlx5.h
+++ b/drivers/net/mlx5/mlx5.h
@@ -72,10 +72,21 @@ struct mlx5_shared_data {
 extern struct mlx5_shared_data *mlx5_shared_data;
 
+struct mlx5_counter_ctrl {
+	/* Name of the counter. */
+	char dpdk_name[RTE_ETH_XSTATS_NAME_SIZE];
+	/* Name of the counter on the device table. */
+	char ctr_name[RTE_ETH_XSTATS_NAME_SIZE];
+	uint32_t ib:1; /**< Nonzero for IB counters. */
+};
+
 struct mlx5_xstats_ctrl {
 	/* Number of device stats. */
 	uint16_t stats_n;
+	/* Number of device stats identified by PMD. */
+	uint16_t  mlx5_stats_n;
 	/* Index in the device counters table. */
 	uint16_t dev_table_idx[MLX5_MAX_XSTATS];
 	uint64_t base[MLX5_MAX_XSTATS];
+	struct mlx5_counter_ctrl info[MLX5_MAX_XSTATS];
 };
 
diff --git a/drivers/net/mlx5/mlx5_stats.c b/drivers/net/mlx5/mlx5_stats.c
index ed5b51bb2..9b89b9bfd 100644
--- a/drivers/net/mlx5/mlx5_stats.c
+++ b/drivers/net/mlx5/mlx5_stats.c
@@ -18,12 +18,4 @@
 #include "mlx5_defs.h"
 
-struct mlx5_counter_ctrl {
-	/* Name of the counter. */
-	char dpdk_name[RTE_ETH_XSTATS_NAME_SIZE];
-	/* Name of the counter on the device table. */
-	char ctr_name[RTE_ETH_XSTATS_NAME_SIZE];
-	uint32_t ib:1; /**< Nonzero for IB counters. */
-};
-
 static const struct mlx5_counter_ctrl mlx5_counters_init[] = {
 	{
@@ -154,10 +146,10 @@ mlx5_read_dev_counters(struct rte_eth_dev *dev, uint64_t *stats)
 		return ret;
 	}
-	for (i = 0; i != xstats_n; ++i) {
-		if (mlx5_counters_init[i].ib) {
+	for (i = 0; i != xstats_ctrl->mlx5_stats_n; ++i) {
+		if (xstats_ctrl->info[i].ib) {
 			FILE *file;
 			MKSTR(path, "%s/ports/1/hw_counters/%s",
 			      priv->ibdev_path,
-			      mlx5_counters_init[i].ctr_name);
+			      xstats_ctrl->info[i].ctr_name);
 
 			file = fopen(path, "rb");
@@ -223,4 +215,6 @@ mlx5_xstats_init(struct rte_eth_dev *dev)
 	int ret;
 
+	/* So that it won't aggregate for each init. */
+	xstats_ctrl->mlx5_stats_n = 0;
 	ret = mlx5_ethtool_get_stats_n(dev);
 	if (ret < 0) {
@@ -250,6 +244,4 @@ mlx5_xstats_init(struct rte_eth_dev *dev)
 		goto free;
 	}
-	for (j = 0; j != xstats_n; ++j)
-		xstats_ctrl->dev_table_idx[j] = dev_stats_n;
 	for (i = 0; i != dev_stats_n; ++i) {
 		const char *curr_string = (const char *)
@@ -259,23 +251,23 @@ mlx5_xstats_init(struct rte_eth_dev *dev)
 			if (!strcmp(mlx5_counters_init[j].ctr_name,
 				    curr_string)) {
-				xstats_ctrl->dev_table_idx[j] = i;
+				unsigned int idx = xstats_ctrl->mlx5_stats_n++;
+
+				xstats_ctrl->dev_table_idx[idx] = i;
+				xstats_ctrl->info[idx] = mlx5_counters_init[j];
 				break;
 			}
 		}
 	}
-	for (j = 0; j != xstats_n; ++j) {
-		if (mlx5_counters_init[j].ib)
-			continue;
-		if (xstats_ctrl->dev_table_idx[j] >= dev_stats_n) {
-			DRV_LOG(WARNING,
-				"port %u counter \"%s\" is not recognized",
-				dev->data->port_id,
-				mlx5_counters_init[j].dpdk_name);
-			goto free;
+	/* Add IB counters. */
+	for (i = 0; i != xstats_n; ++i) {
+		if (mlx5_counters_init[i].ib) {
+			unsigned int idx = xstats_ctrl->mlx5_stats_n++;
+
+			xstats_ctrl->info[idx] = mlx5_counters_init[i];
 		}
 	}
+	assert(xstats_ctrl->mlx5_stats_n <= MLX5_MAX_XSTATS);
 	xstats_ctrl->stats_n = dev_stats_n;
 	/* Copy to base at first time. */
-	assert(xstats_n <= MLX5_MAX_XSTATS);
 	ret = mlx5_read_dev_counters(dev, xstats_ctrl->base);
 	if (ret)
@@ -307,9 +299,8 @@ mlx5_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *stats,
 	unsigned int i;
 	uint64_t counters[n];
+	struct mlx5_xstats_ctrl *xstats_ctrl = &priv->xstats_ctrl;
+	uint16_t mlx5_stats_n = xstats_ctrl->mlx5_stats_n;
 
-	if (!priv->xstats_ctrl.stats_n)
-		return 0;
-	if (n >= xstats_n && stats) {
-		struct mlx5_xstats_ctrl *xstats_ctrl = &priv->xstats_ctrl;
+	if (n >= mlx5_stats_n && stats) {
 		int stats_n;
 		int ret;
@@ -323,10 +314,10 @@ mlx5_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *stats,
 		if (ret)
 			return ret;
-		for (i = 0; i != xstats_n; ++i) {
+		for (i = 0; i != mlx5_stats_n; ++i) {
 			stats[i].id = i;
 			stats[i].value = (counters[i] - xstats_ctrl->base[i]);
 		}
 	}
-	return xstats_n;
+	return mlx5_stats_n;
 }
 
@@ -444,5 +435,5 @@ mlx5_xstats_reset(struct rte_eth_dev *dev)
 	int stats_n;
 	unsigned int i;
-	unsigned int n = xstats_n;
+	unsigned int n = xstats_ctrl->mlx5_stats_n;
 	uint64_t counters[n];
 	int ret;
@@ -483,17 +474,17 @@ mlx5_xstats_get_names(struct rte_eth_dev *dev __rte_unused,
 		      struct rte_eth_xstat_name *xstats_names, unsigned int n)
 {
-	struct priv *priv = dev->data->dev_private;
 	unsigned int i;
+	struct priv *priv = dev->data->dev_private;
+	struct mlx5_xstats_ctrl *xstats_ctrl = &priv->xstats_ctrl;
+	unsigned int mlx5_xstats_n = xstats_ctrl->mlx5_stats_n;
 
-	if (!priv->xstats_ctrl.stats_n)
-		return 0;
-	if (n >= xstats_n && xstats_names) {
-		for (i = 0; i != xstats_n; ++i) {
+	if (n >= mlx5_xstats_n && xstats_names) {
+		for (i = 0; i != mlx5_xstats_n; ++i) {
 			strncpy(xstats_names[i].name,
-				mlx5_counters_init[i].dpdk_name,
+				xstats_ctrl->info[i].dpdk_name,
 				RTE_ETH_XSTATS_NAME_SIZE);
 			xstats_names[i].name[RTE_ETH_XSTATS_NAME_SIZE - 1] = 0;
 		}
 	}
-	return xstats_n;
+	return mlx5_xstats_n;
 }
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.596694936 +0000
+++ 0060-net-mlx5-support-missing-counter-in-extended-statist.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,8 +1,10 @@
-From 1a611fdaf6ec3d860d7b0f39cdd8b754ef51ebc3 Mon Sep 17 00:00:00 2001
+From 866f2720a1735d213f08108fc8092fa13d7154bc Mon Sep 17 00:00:00 2001
 From: Shahaf Shuler <shahafs@mellanox.com>
 Date: Mon, 17 Sep 2018 12:46:34 +0300
 Subject: [PATCH] net/mlx5: support missing counter in extended statistics
 
+[ upstream commit 1a611fdaf6ec3d860d7b0f39cdd8b754ef51ebc3 ]
+
 The current code would fail if one of the counters DPDK counters was not
 found on the device counters.
 
@@ -12,8 +14,6 @@
 Addressing this issue by making the counter init more flexible to
 contain all the counter found and skipping the error.
 
-Cc: stable@dpdk.org
-
 Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
 ---
  drivers/net/mlx5/mlx5.h       | 11 ++++++
@@ -21,10 +21,10 @@
  2 files changed, 40 insertions(+), 38 deletions(-)
 
 diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h
-index 4122e546c..ab242980a 100644
+index 35a196e76..b4ba147ab 100644
 --- a/drivers/net/mlx5/mlx5.h
 +++ b/drivers/net/mlx5/mlx5.h
-@@ -73,10 +73,21 @@ struct mlx5_shared_data {
+@@ -72,10 +72,21 @@ struct mlx5_shared_data {
  extern struct mlx5_shared_data *mlx5_shared_data;
  
 +struct mlx5_counter_ctrl {

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

* [dpdk-stable] patch 'net/mlx5: add representor specific statistics' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (58 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/mlx5: support missing counter in extended statistics' " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/mlx5: always use representor ifindex for ioctl' " Kevin Traynor
                   ` (12 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Shahaf Shuler; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From e36017fa2ea95c21785e64fed6f33bacb729ee94 Mon Sep 17 00:00:00 2001
From: Shahaf Shuler <shahafs@mellanox.com>
Date: Sun, 7 Oct 2018 15:55:25 +0300
Subject: [PATCH] net/mlx5: add representor specific statistics

[ upstream commit d469f6a5eb47258bd0911bc75e14c312b83d0a41 ]

Representor ports has a different set of extended statistics (as those are
logical ports which cannot count all that the PF can).

Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
---
 drivers/net/mlx5/mlx5_stats.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/drivers/net/mlx5/mlx5_stats.c b/drivers/net/mlx5/mlx5_stats.c
index 9b89b9bfd..f24c73617 100644
--- a/drivers/net/mlx5/mlx5_stats.c
+++ b/drivers/net/mlx5/mlx5_stats.c
@@ -108,4 +108,21 @@ static const struct mlx5_counter_ctrl mlx5_counters_init[] = {
 		.ctr_name = "rx_bytes_phy",
 	},
+	/* Representor only */
+	{
+		.dpdk_name = "rx_packets",
+		.ctr_name = "vport_rx_packets",
+	},
+	{
+		.dpdk_name = "rx_bytes",
+		.ctr_name = "vport_rx_bytes",
+	},
+	{
+		.dpdk_name = "tx_packets",
+		.ctr_name = "vport_tx_packets",
+	},
+	{
+		.dpdk_name = "tx_bytes",
+		.ctr_name = "vport_tx_bytes",
+	},
 };
 
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.621318717 +0000
+++ 0061-net-mlx5-add-representor-specific-statistics.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,13 +1,13 @@
-From d469f6a5eb47258bd0911bc75e14c312b83d0a41 Mon Sep 17 00:00:00 2001
+From e36017fa2ea95c21785e64fed6f33bacb729ee94 Mon Sep 17 00:00:00 2001
 From: Shahaf Shuler <shahafs@mellanox.com>
 Date: Sun, 7 Oct 2018 15:55:25 +0300
 Subject: [PATCH] net/mlx5: add representor specific statistics
 
+[ upstream commit d469f6a5eb47258bd0911bc75e14c312b83d0a41 ]
+
 Representor ports has a different set of extended statistics (as those are
 logical ports which cannot count all that the PF can).
 
-Cc: stable@dpdk.org
-
 Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
 ---
  drivers/net/mlx5/mlx5_stats.c | 17 +++++++++++++++++

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

* [dpdk-stable] patch 'net/mlx5: always use representor ifindex for ioctl' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (59 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/mlx5: add representor specific " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/e1000: do not error out if Rx drop enable is set' " Kevin Traynor
                   ` (11 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Shahaf Shuler; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 086c64fbf3dfdc213df021771dbbf86950553355 Mon Sep 17 00:00:00 2001
From: Shahaf Shuler <shahafs@mellanox.com>
Date: Mon, 8 Oct 2018 09:28:17 +0300
Subject: [PATCH] net/mlx5: always use representor ifindex for ioctl

[ upstream commit 7dd7be29b4cac1f8a1e7f5456585ab64ee0ccd68 ]

In the current code, on some cases the representor ethdev is using the
PF interface to query some link status information or pause parameters.

It was done because in previous kernel versions there was no support
from the kernel for the representor info.

Using the PF i/f for such ioctl is error prone and not always working
because:
 * On some cases there is no PF at all, only representors (e.g Bluefield
   with host representors)
 * Query the up/down status from representor and link status from PF
   is in-consist
 * PF link is down doesn't necessarily means representor is down.
 * setting different pause configuration for the PF and the
   representors will result on undefined behaviour

Making the code cleaner and more robust by using only the representor
i/f for the ioctl. whatever the kernel will provide on this query will
be used. No need to do W.A. for kernel missing functionality.

Note:
 1. Setting pause parameters will obviously won't work on representors
 2. Old kernel will not report all the possible representor info

Fixes: 2b7302638898 ("net/mlx5: probe all port representors")

Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
---
 drivers/net/mlx5/mlx5.h        |  5 +----
 drivers/net/mlx5/mlx5_ethdev.c | 41 +++++++++++++---------------------
 drivers/net/mlx5/mlx5_mac.c    |  2 +-
 drivers/net/mlx5/mlx5_stats.c  |  6 ++---
 4 files changed, 21 insertions(+), 33 deletions(-)

diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h
index b4ba147ab..1c87ee35a 100644
--- a/drivers/net/mlx5/mlx5.h
+++ b/drivers/net/mlx5/mlx5.h
@@ -252,10 +252,7 @@ int mlx5_getenv_int(const char *);
 /* mlx5_ethdev.c */
 
-int mlx5_get_master_ifname(const struct rte_eth_dev *dev,
-			   char (*ifname)[IF_NAMESIZE]);
 int mlx5_get_ifname(const struct rte_eth_dev *dev, char (*ifname)[IF_NAMESIZE]);
 unsigned int mlx5_ifindex(const struct rte_eth_dev *dev);
-int mlx5_ifreq(const struct rte_eth_dev *dev, int req, struct ifreq *ifr,
-	       int master);
+int mlx5_ifreq(const struct rte_eth_dev *dev, int req, struct ifreq *ifr);
 int mlx5_get_mtu(struct rte_eth_dev *dev, uint16_t *mtu);
 int mlx5_set_flags(struct rte_eth_dev *dev, unsigned int keep,
diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c
index 5515fdbae..61eda537b 100644
--- a/drivers/net/mlx5/mlx5_ethdev.c
+++ b/drivers/net/mlx5/mlx5_ethdev.c
@@ -130,5 +130,5 @@ struct ethtool_link_settings {
  *   0 on success, a negative errno value otherwise and rte_errno is set.
  */
-int
+static int
 mlx5_get_master_ifname(const struct rte_eth_dev *dev,
 		       char (*ifname)[IF_NAMESIZE])
@@ -271,7 +271,4 @@ mlx5_ifindex(const struct rte_eth_dev *dev)
  * @param[out] ifr
  *   Interface request structure output buffer.
- * @param master
- *   When device is a port representor, perform request on master device
- *   instead.
  *
  * @return
@@ -279,6 +276,5 @@ mlx5_ifindex(const struct rte_eth_dev *dev)
  */
 int
-mlx5_ifreq(const struct rte_eth_dev *dev, int req, struct ifreq *ifr,
-	   int master)
+mlx5_ifreq(const struct rte_eth_dev *dev, int req, struct ifreq *ifr)
 {
 	int sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
@@ -289,8 +285,5 @@ mlx5_ifreq(const struct rte_eth_dev *dev, int req, struct ifreq *ifr,
 		return -rte_errno;
 	}
-	if (master)
-		ret = mlx5_get_master_ifname(dev, &ifr->ifr_name);
-	else
-		ret = mlx5_get_ifname(dev, &ifr->ifr_name);
+	ret = mlx5_get_ifname(dev, &ifr->ifr_name);
 	if (ret)
 		goto error;
@@ -322,5 +315,5 @@ mlx5_get_mtu(struct rte_eth_dev *dev, uint16_t *mtu)
 {
 	struct ifreq request;
-	int ret = mlx5_ifreq(dev, SIOCGIFMTU, &request, 0);
+	int ret = mlx5_ifreq(dev, SIOCGIFMTU, &request);
 
 	if (ret)
@@ -346,5 +339,5 @@ mlx5_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
 	struct ifreq request = { .ifr_mtu = mtu, };
 
-	return mlx5_ifreq(dev, SIOCSIFMTU, &request, 0);
+	return mlx5_ifreq(dev, SIOCSIFMTU, &request);
 }
 
@@ -366,5 +359,5 @@ mlx5_set_flags(struct rte_eth_dev *dev, unsigned int keep, unsigned int flags)
 {
 	struct ifreq request;
-	int ret = mlx5_ifreq(dev, SIOCGIFFLAGS, &request, 0);
+	int ret = mlx5_ifreq(dev, SIOCGIFFLAGS, &request);
 
 	if (ret)
@@ -372,5 +365,5 @@ mlx5_set_flags(struct rte_eth_dev *dev, unsigned int keep, unsigned int flags)
 	request.ifr_flags &= keep;
 	request.ifr_flags |= flags & ~keep;
-	return mlx5_ifreq(dev, SIOCSIFFLAGS, &request, 0);
+	return mlx5_ifreq(dev, SIOCSIFFLAGS, &request);
 }
 
@@ -628,5 +621,5 @@ mlx5_link_update_unlocked_gset(struct rte_eth_dev *dev,
 	int ret;
 
-	ret = mlx5_ifreq(dev, SIOCGIFFLAGS, &ifr, 0);
+	ret = mlx5_ifreq(dev, SIOCGIFFLAGS, &ifr);
 	if (ret) {
 		DRV_LOG(WARNING, "port %u ioctl(SIOCGIFFLAGS) failed: %s",
@@ -641,5 +634,5 @@ mlx5_link_update_unlocked_gset(struct rte_eth_dev *dev,
 		.ifr_data = (void *)&edata,
 	};
-	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr, 1);
+	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr);
 	if (ret) {
 		DRV_LOG(WARNING,
@@ -670,6 +663,5 @@ mlx5_link_update_unlocked_gset(struct rte_eth_dev *dev,
 	dev_link.link_autoneg = !(dev->data->dev_conf.link_speeds &
 			ETH_LINK_SPEED_FIXED);
-	if (!priv->representor &&
-	    ((dev_link.link_speed && !dev_link.link_status) ||
+	if (((dev_link.link_speed && !dev_link.link_status) ||
 	     (!dev_link.link_speed && dev_link.link_status))) {
 		rte_errno = EAGAIN;
@@ -703,5 +695,5 @@ mlx5_link_update_unlocked_gs(struct rte_eth_dev *dev,
 	int ret;
 
-	ret = mlx5_ifreq(dev, SIOCGIFFLAGS, &ifr, 0);
+	ret = mlx5_ifreq(dev, SIOCGIFFLAGS, &ifr);
 	if (ret) {
 		DRV_LOG(WARNING, "port %u ioctl(SIOCGIFFLAGS) failed: %s",
@@ -716,5 +708,5 @@ mlx5_link_update_unlocked_gs(struct rte_eth_dev *dev,
 		.ifr_data = (void *)&gcmd,
 	};
-	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr, 1);
+	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr);
 	if (ret) {
 		DRV_LOG(DEBUG,
@@ -733,5 +725,5 @@ mlx5_link_update_unlocked_gs(struct rte_eth_dev *dev,
 	*ecmd = gcmd;
 	ifr.ifr_data = (void *)ecmd;
-	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr, 1);
+	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr);
 	if (ret) {
 		DRV_LOG(DEBUG,
@@ -783,6 +775,5 @@ mlx5_link_update_unlocked_gs(struct rte_eth_dev *dev,
 	dev_link.link_autoneg = !(dev->data->dev_conf.link_speeds &
 				  ETH_LINK_SPEED_FIXED);
-	if (!priv->representor &&
-	    ((dev_link.link_speed && !dev_link.link_status) ||
+	if (((dev_link.link_speed && !dev_link.link_status) ||
 	     (!dev_link.link_speed && dev_link.link_status))) {
 		rte_errno = EAGAIN;
@@ -897,5 +888,5 @@ mlx5_dev_get_flow_ctrl(struct rte_eth_dev *dev, struct rte_eth_fc_conf *fc_conf)
 
 	ifr.ifr_data = (void *)&ethpause;
-	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr, 1);
+	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr);
 	if (ret) {
 		DRV_LOG(WARNING,
@@ -950,5 +941,5 @@ mlx5_dev_set_flow_ctrl(struct rte_eth_dev *dev, struct rte_eth_fc_conf *fc_conf)
 	else
 		ethpause.tx_pause = 0;
-	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr, 0);
+	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr);
 	if (ret) {
 		DRV_LOG(WARNING,
diff --git a/drivers/net/mlx5/mlx5_mac.c b/drivers/net/mlx5/mlx5_mac.c
index 12ee37f55..672a47619 100644
--- a/drivers/net/mlx5/mlx5_mac.c
+++ b/drivers/net/mlx5/mlx5_mac.c
@@ -50,5 +50,5 @@ mlx5_get_mac(struct rte_eth_dev *dev, uint8_t (*mac)[ETHER_ADDR_LEN])
 	int ret;
 
-	ret = mlx5_ifreq(dev, SIOCGIFHWADDR, &request, 0);
+	ret = mlx5_ifreq(dev, SIOCGIFHWADDR, &request);
 	if (ret)
 		return ret;
diff --git a/drivers/net/mlx5/mlx5_stats.c b/drivers/net/mlx5/mlx5_stats.c
index f24c73617..a14d1e491 100644
--- a/drivers/net/mlx5/mlx5_stats.c
+++ b/drivers/net/mlx5/mlx5_stats.c
@@ -156,5 +156,5 @@ mlx5_read_dev_counters(struct rte_eth_dev *dev, uint64_t *stats)
 	et_stats->n_stats = xstats_ctrl->stats_n;
 	ifr.ifr_data = (caddr_t)et_stats;
-	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr, 0);
+	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr);
 	if (ret) {
 		DRV_LOG(WARNING,
@@ -204,5 +204,5 @@ mlx5_ethtool_get_stats_n(struct rte_eth_dev *dev) {
 	drvinfo.cmd = ETHTOOL_GDRVINFO;
 	ifr.ifr_data = (caddr_t)&drvinfo;
-	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr, 0);
+	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr);
 	if (ret) {
 		DRV_LOG(WARNING, "port %u unable to query number of statistics",
@@ -255,5 +255,5 @@ mlx5_xstats_init(struct rte_eth_dev *dev)
 	strings->len = dev_stats_n;
 	ifr.ifr_data = (caddr_t)strings;
-	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr, 0);
+	ret = mlx5_ifreq(dev, SIOCETHTOOL, &ifr);
 	if (ret) {
 		DRV_LOG(WARNING, "port %u unable to get statistic names",
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.646171652 +0000
+++ 0062-net-mlx5-always-use-representor-ifindex-for-ioctl.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,8 +1,10 @@
-From 7dd7be29b4cac1f8a1e7f5456585ab64ee0ccd68 Mon Sep 17 00:00:00 2001
+From 086c64fbf3dfdc213df021771dbbf86950553355 Mon Sep 17 00:00:00 2001
 From: Shahaf Shuler <shahafs@mellanox.com>
 Date: Mon, 8 Oct 2018 09:28:17 +0300
 Subject: [PATCH] net/mlx5: always use representor ifindex for ioctl
 
+[ upstream commit 7dd7be29b4cac1f8a1e7f5456585ab64ee0ccd68 ]
+
 In the current code, on some cases the representor ethdev is using the
 PF interface to query some link status information or pause parameters.
 
@@ -28,7 +30,6 @@
  2. Old kernel will not report all the possible representor info
 
 Fixes: 2b7302638898 ("net/mlx5: probe all port representors")
-Cc: stable@dpdk.org
 
 Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
 ---
@@ -39,10 +40,10 @@
  4 files changed, 21 insertions(+), 33 deletions(-)
 
 diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h
-index ab242980a..2dec88aef 100644
+index b4ba147ab..1c87ee35a 100644
 --- a/drivers/net/mlx5/mlx5.h
 +++ b/drivers/net/mlx5/mlx5.h
-@@ -249,10 +249,7 @@ int mlx5_getenv_int(const char *);
+@@ -252,10 +252,7 @@ int mlx5_getenv_int(const char *);
  /* mlx5_ethdev.c */
  
 -int mlx5_get_master_ifname(const struct rte_eth_dev *dev,

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

* [dpdk-stable] patch 'net/e1000: do not error out if Rx drop enable is set' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (60 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/mlx5: always use representor ifindex for ioctl' " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/ifc: fix address translation function name' " Kevin Traynor
                   ` (10 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Luca Boccassi; +Cc: Wei Zhao, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 9107f800fbb8c31287f0070828f63f83331759bf Mon Sep 17 00:00:00 2001
From: Luca Boccassi <bluca@debian.org>
Date: Fri, 27 Jul 2018 18:26:07 +0100
Subject: [PATCH] net/e1000: do not error out if Rx drop enable is set

[ upstream commit d7812ffd83588c724d2f291f2030c9994f9d1113 ]

rx_drop_en is an optimization that does nothing on single-queue
devices like e1000. Do not force applications that do not care to
select per-devices optimizations flags by returning an error, just
log it and carry on.

Fixes: 805803445a02 ("e1000: support EM devices (also known as e1000/e1000e)")

Signed-off-by: Luca Boccassi <bluca@debian.org>
Acked-by: Wei Zhao <wei.zhao1@intel.com>
---
 drivers/net/e1000/em_rxtx.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/net/e1000/em_rxtx.c b/drivers/net/e1000/em_rxtx.c
index 5860e93d5..46bdf519c 100644
--- a/drivers/net/e1000/em_rxtx.c
+++ b/drivers/net/e1000/em_rxtx.c
@@ -1419,10 +1419,11 @@ eth_em_rx_queue_setup(struct rte_eth_dev *dev,
 
 	/*
-	 * EM devices don't support drop_en functionality
+	 * EM devices don't support drop_en functionality.
+	 * It's an optimization that does nothing on single-queue devices,
+	 * so just log the issue and carry on.
 	 */
 	if (rx_conf->rx_drop_en) {
-		PMD_INIT_LOG(ERR, "drop_en functionality not supported by "
+		PMD_INIT_LOG(NOTICE, "drop_en functionality not supported by "
 			     "device");
-		return -EINVAL;
 	}
 
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.671399779 +0000
+++ 0063-net-e1000-do-not-error-out-if-Rx-drop-enable-is-set.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,15 +1,16 @@
-From d7812ffd83588c724d2f291f2030c9994f9d1113 Mon Sep 17 00:00:00 2001
+From 9107f800fbb8c31287f0070828f63f83331759bf Mon Sep 17 00:00:00 2001
 From: Luca Boccassi <bluca@debian.org>
 Date: Fri, 27 Jul 2018 18:26:07 +0100
 Subject: [PATCH] net/e1000: do not error out if Rx drop enable is set
 
+[ upstream commit d7812ffd83588c724d2f291f2030c9994f9d1113 ]
+
 rx_drop_en is an optimization that does nothing on single-queue
 devices like e1000. Do not force applications that do not care to
 select per-devices optimizations flags by returning an error, just
 log it and carry on.
 
 Fixes: 805803445a02 ("e1000: support EM devices (also known as e1000/e1000e)")
-Cc: stable@dpdk.org
 
 Signed-off-by: Luca Boccassi <bluca@debian.org>
 Acked-by: Wei Zhao <wei.zhao1@intel.com>
@@ -18,10 +19,10 @@
  1 file changed, 4 insertions(+), 3 deletions(-)
 
 diff --git a/drivers/net/e1000/em_rxtx.c b/drivers/net/e1000/em_rxtx.c
-index 087e68304..a9cd76518 100644
+index 5860e93d5..46bdf519c 100644
 --- a/drivers/net/e1000/em_rxtx.c
 +++ b/drivers/net/e1000/em_rxtx.c
-@@ -1418,10 +1418,11 @@ eth_em_rx_queue_setup(struct rte_eth_dev *dev,
+@@ -1419,10 +1419,11 @@ eth_em_rx_queue_setup(struct rte_eth_dev *dev,
  
  	/*
 -	 * EM devices don't support drop_en functionality

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

* [dpdk-stable] patch 'net/ifc: fix address translation function name' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (61 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/e1000: do not error out if Rx drop enable is set' " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/sfc: do not skip RSS configuration step on reconfigure' " Kevin Traynor
                   ` (9 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Xiao Wang; +Cc: Xiaolong Ye, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 85caea0e16c6e040584cbdaf5799049f635d3c1c Mon Sep 17 00:00:00 2001
From: Xiao Wang <xiao.w.wang@intel.com>
Date: Tue, 25 Sep 2018 11:10:01 +0800
Subject: [PATCH] net/ifc: fix address translation function name

[ upstream commit 3e2923cffac1459a65f5584cc851d27b0ed0865c ]

The address translation from user virtual address to guest physical
address should not be named as qva_to_gpa.

Fixes: a3f8150eac6d ("net/ifcvf: add ifcvf vDPA driver")

Signed-off-by: Xiao Wang <xiao.w.wang@intel.com>
Acked-by: Xiaolong Ye <xiaolong.ye@intel.com>
---
 drivers/net/ifc/ifcvf_vdpa.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/net/ifc/ifcvf_vdpa.c b/drivers/net/ifc/ifcvf_vdpa.c
index b9d006814..a11a2ec0d 100644
--- a/drivers/net/ifc/ifcvf_vdpa.c
+++ b/drivers/net/ifc/ifcvf_vdpa.c
@@ -206,5 +206,5 @@ exit:
 
 static uint64_t
-qva_to_gpa(int vid, uint64_t qva)
+hva_to_gpa(int vid, uint64_t hva)
 {
 	struct rte_vhost_memory *mem = NULL;
@@ -219,7 +219,7 @@ qva_to_gpa(int vid, uint64_t qva)
 		reg = &mem->regions[i];
 
-		if (qva >= reg->host_user_addr &&
-				qva < reg->host_user_addr + reg->size) {
-			gpa = qva - reg->host_user_addr + reg->guest_phys_addr;
+		if (hva >= reg->host_user_addr &&
+				hva < reg->host_user_addr + reg->size) {
+			gpa = hva - reg->host_user_addr + reg->guest_phys_addr;
 			break;
 		}
@@ -247,5 +247,5 @@ vdpa_ifcvf_start(struct ifcvf_internal *internal)
 	for (i = 0; i < nr_vring; i++) {
 		rte_vhost_get_vhost_vring(vid, i, &vq);
-		gpa = qva_to_gpa(vid, (uint64_t)(uintptr_t)vq.desc);
+		gpa = hva_to_gpa(vid, (uint64_t)(uintptr_t)vq.desc);
 		if (gpa == 0) {
 			DRV_LOG(ERR, "Fail to get GPA for descriptor ring.");
@@ -254,5 +254,5 @@ vdpa_ifcvf_start(struct ifcvf_internal *internal)
 		hw->vring[i].desc = gpa;
 
-		gpa = qva_to_gpa(vid, (uint64_t)(uintptr_t)vq.avail);
+		gpa = hva_to_gpa(vid, (uint64_t)(uintptr_t)vq.avail);
 		if (gpa == 0) {
 			DRV_LOG(ERR, "Fail to get GPA for available ring.");
@@ -261,5 +261,5 @@ vdpa_ifcvf_start(struct ifcvf_internal *internal)
 		hw->vring[i].avail = gpa;
 
-		gpa = qva_to_gpa(vid, (uint64_t)(uintptr_t)vq.used);
+		gpa = hva_to_gpa(vid, (uint64_t)(uintptr_t)vq.used);
 		if (gpa == 0) {
 			DRV_LOG(ERR, "Fail to get GPA for used ring.");
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.695325295 +0000
+++ 0064-net-ifc-fix-address-translation-function-name.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,13 +1,14 @@
-From 3e2923cffac1459a65f5584cc851d27b0ed0865c Mon Sep 17 00:00:00 2001
+From 85caea0e16c6e040584cbdaf5799049f635d3c1c Mon Sep 17 00:00:00 2001
 From: Xiao Wang <xiao.w.wang@intel.com>
 Date: Tue, 25 Sep 2018 11:10:01 +0800
 Subject: [PATCH] net/ifc: fix address translation function name
 
+[ upstream commit 3e2923cffac1459a65f5584cc851d27b0ed0865c ]
+
 The address translation from user virtual address to guest physical
 address should not be named as qva_to_gpa.
 
 Fixes: a3f8150eac6d ("net/ifcvf: add ifcvf vDPA driver")
-Cc: stable@dpdk.org
 
 Signed-off-by: Xiao Wang <xiao.w.wang@intel.com>
 Acked-by: Xiaolong Ye <xiaolong.ye@intel.com>
@@ -16,17 +17,17 @@
  1 file changed, 7 insertions(+), 7 deletions(-)
 
 diff --git a/drivers/net/ifc/ifcvf_vdpa.c b/drivers/net/ifc/ifcvf_vdpa.c
-index 9d5594678..0d237ae40 100644
+index b9d006814..a11a2ec0d 100644
 --- a/drivers/net/ifc/ifcvf_vdpa.c
 +++ b/drivers/net/ifc/ifcvf_vdpa.c
-@@ -207,5 +207,5 @@ exit:
+@@ -206,5 +206,5 @@ exit:
  
  static uint64_t
 -qva_to_gpa(int vid, uint64_t qva)
 +hva_to_gpa(int vid, uint64_t hva)
  {
  	struct rte_vhost_memory *mem = NULL;
-@@ -220,7 +220,7 @@ qva_to_gpa(int vid, uint64_t qva)
+@@ -219,7 +219,7 @@ qva_to_gpa(int vid, uint64_t qva)
  		reg = &mem->regions[i];
  
 -		if (qva >= reg->host_user_addr &&
@@ -37,21 +38,21 @@
 +			gpa = hva - reg->host_user_addr + reg->guest_phys_addr;
  			break;
  		}
-@@ -248,5 +248,5 @@ vdpa_ifcvf_start(struct ifcvf_internal *internal)
+@@ -247,5 +247,5 @@ vdpa_ifcvf_start(struct ifcvf_internal *internal)
  	for (i = 0; i < nr_vring; i++) {
  		rte_vhost_get_vhost_vring(vid, i, &vq);
 -		gpa = qva_to_gpa(vid, (uint64_t)(uintptr_t)vq.desc);
 +		gpa = hva_to_gpa(vid, (uint64_t)(uintptr_t)vq.desc);
  		if (gpa == 0) {
  			DRV_LOG(ERR, "Fail to get GPA for descriptor ring.");
-@@ -255,5 +255,5 @@ vdpa_ifcvf_start(struct ifcvf_internal *internal)
+@@ -254,5 +254,5 @@ vdpa_ifcvf_start(struct ifcvf_internal *internal)
  		hw->vring[i].desc = gpa;
  
 -		gpa = qva_to_gpa(vid, (uint64_t)(uintptr_t)vq.avail);
 +		gpa = hva_to_gpa(vid, (uint64_t)(uintptr_t)vq.avail);
  		if (gpa == 0) {
  			DRV_LOG(ERR, "Fail to get GPA for available ring.");
-@@ -262,5 +262,5 @@ vdpa_ifcvf_start(struct ifcvf_internal *internal)
+@@ -261,5 +261,5 @@ vdpa_ifcvf_start(struct ifcvf_internal *internal)
  		hw->vring[i].avail = gpa;
  
 -		gpa = qva_to_gpa(vid, (uint64_t)(uintptr_t)vq.used);

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

* [dpdk-stable] patch 'net/sfc: do not skip RSS configuration step on reconfigure' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (62 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/ifc: fix address translation function name' " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/sfc: allow to query RSS key and HF in isolated mode' " Kevin Traynor
                   ` (8 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Ivan Malov; +Cc: Andrew Rybchenko, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 102a51be1eb07480c5629654bc7560ffebaeafc4 Mon Sep 17 00:00:00 2001
From: Ivan Malov <ivan.malov@oktetlabs.ru>
Date: Thu, 11 Oct 2018 15:49:30 +0100
Subject: [PATCH] net/sfc: do not skip RSS configuration step on reconfigure

[ upstream commit 5205c436a33e060d06f7f230e051b94be31d6d91 ]

Earlier a patch was made to support change of Rx queue
number. That patch added goto label in wrong place
because reconfiguration with the same number of queues
results in skipping not only queue init but also RSS
settings. If a user configures device with RSS multiqueue
mode and then wants to stop it and reconfigure without RSS,
this change will be ignored and RSS will continue working.

Move the label in the right place and rename it to describe it.

Fixes: 55a539003f1a ("net/sfc: support changing the number of receive queues")

Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
---
 drivers/net/sfc/sfc_rx.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/sfc/sfc_rx.c b/drivers/net/sfc/sfc_rx.c
index 311b8d9df..f92eacacb 100644
--- a/drivers/net/sfc/sfc_rx.c
+++ b/drivers/net/sfc/sfc_rx.c
@@ -1513,5 +1513,5 @@ sfc_rx_configure(struct sfc_adapter *sa)
 
 	if (nb_rx_queues == sa->rxq_count)
-		goto done;
+		goto configure_rss;
 
 	if (sa->rxq_info == NULL) {
@@ -1550,4 +1550,5 @@ sfc_rx_configure(struct sfc_adapter *sa)
 	}
 
+configure_rss:
 	rss->channels = (dev_conf->rxmode.mq_mode == ETH_MQ_RX_RSS) ?
 			 MIN(sa->rxq_count, EFX_MAXRSS) : 0;
@@ -1566,5 +1567,4 @@ sfc_rx_configure(struct sfc_adapter *sa)
 	}
 
-done:
 	return 0;
 
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.719325517 +0000
+++ 0065-net-sfc-do-not-skip-RSS-configuration-step-on-reconf.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,8 +1,10 @@
-From 5205c436a33e060d06f7f230e051b94be31d6d91 Mon Sep 17 00:00:00 2001
+From 102a51be1eb07480c5629654bc7560ffebaeafc4 Mon Sep 17 00:00:00 2001
 From: Ivan Malov <ivan.malov@oktetlabs.ru>
 Date: Thu, 11 Oct 2018 15:49:30 +0100
 Subject: [PATCH] net/sfc: do not skip RSS configuration step on reconfigure
 
+[ upstream commit 5205c436a33e060d06f7f230e051b94be31d6d91 ]
+
 Earlier a patch was made to support change of Rx queue
 number. That patch added goto label in wrong place
 because reconfiguration with the same number of queues
@@ -14,7 +16,6 @@
 Move the label in the right place and rename it to describe it.
 
 Fixes: 55a539003f1a ("net/sfc: support changing the number of receive queues")
-Cc: stable@dpdk.org
 
 Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
 Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
@@ -23,23 +24,23 @@
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/net/sfc/sfc_rx.c b/drivers/net/sfc/sfc_rx.c
-index 000cd0b20..553576485 100644
+index 311b8d9df..f92eacacb 100644
 --- a/drivers/net/sfc/sfc_rx.c
 +++ b/drivers/net/sfc/sfc_rx.c
-@@ -1505,5 +1505,5 @@ sfc_rx_configure(struct sfc_adapter *sa)
+@@ -1513,5 +1513,5 @@ sfc_rx_configure(struct sfc_adapter *sa)
  
  	if (nb_rx_queues == sa->rxq_count)
 -		goto done;
 +		goto configure_rss;
  
  	if (sa->rxq_info == NULL) {
-@@ -1542,4 +1542,5 @@ sfc_rx_configure(struct sfc_adapter *sa)
+@@ -1550,4 +1550,5 @@ sfc_rx_configure(struct sfc_adapter *sa)
  	}
  
 +configure_rss:
  	rss->channels = (dev_conf->rxmode.mq_mode == ETH_MQ_RX_RSS) ?
  			 MIN(sa->rxq_count, EFX_MAXRSS) : 0;
-@@ -1558,5 +1559,4 @@ sfc_rx_configure(struct sfc_adapter *sa)
+@@ -1566,5 +1567,4 @@ sfc_rx_configure(struct sfc_adapter *sa)
  	}
  
 -done:

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

* [dpdk-stable] patch 'net/sfc: allow to query RSS key and HF in isolated mode' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (63 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/sfc: do not skip RSS configuration step on reconfigure' " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/sfc: allow to query RSS key and HF when RSS is disabled' " Kevin Traynor
                   ` (7 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Ivan Malov; +Cc: Andrew Rybchenko, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From b3e7b1ebfe77749faec7ad63adc51331080eb177 Mon Sep 17 00:00:00 2001
From: Ivan Malov <ivan.malov@oktetlabs.ru>
Date: Thu, 11 Oct 2018 15:51:12 +0100
Subject: [PATCH] net/sfc: allow to query RSS key and HF in isolated mode

[ upstream commit 453e1d4baad9262391eaef15812ade9af1f15a3f ]

Isolated mode prevents global RSS from being enabled and configured.
However, an application may need to query default RSS key and hash
functions when a flow rule with RSS action is added which does not
contain custom RSS key or hash function choice. In this case
global RSS key and hash functions will be used to handle the rule,
and there should be some way for the application to query these
global default settings to clarify expectations on the traffic
distribution.

Fixes: 84a9b48128c1 ("net/sfc: support flow API isolated mode")

Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
---
 drivers/net/sfc/sfc_ethdev.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c
index b5ef47296..d38a3f4e8 100644
--- a/drivers/net/sfc/sfc_ethdev.c
+++ b/drivers/net/sfc/sfc_ethdev.c
@@ -1344,7 +1344,6 @@ sfc_dev_rss_hash_conf_get(struct rte_eth_dev *dev,
 	struct sfc_adapter *sa = dev->data->dev_private;
 	struct sfc_rss *rss = &sa->rss;
-	struct sfc_port *port = &sa->port;
 
-	if (rss->context_type != EFX_RX_SCALE_EXCLUSIVE || port->isolated)
+	if (rss->context_type != EFX_RX_SCALE_EXCLUSIVE)
 		return -ENOTSUP;
 
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.743526822 +0000
+++ 0066-net-sfc-allow-to-query-RSS-key-and-HF-in-isolated-mo.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,8 +1,10 @@
-From 453e1d4baad9262391eaef15812ade9af1f15a3f Mon Sep 17 00:00:00 2001
+From b3e7b1ebfe77749faec7ad63adc51331080eb177 Mon Sep 17 00:00:00 2001
 From: Ivan Malov <ivan.malov@oktetlabs.ru>
 Date: Thu, 11 Oct 2018 15:51:12 +0100
 Subject: [PATCH] net/sfc: allow to query RSS key and HF in isolated mode
 
+[ upstream commit 453e1d4baad9262391eaef15812ade9af1f15a3f ]
+
 Isolated mode prevents global RSS from being enabled and configured.
 However, an application may need to query default RSS key and hash
 functions when a flow rule with RSS action is added which does not
@@ -13,7 +15,6 @@
 distribution.
 
 Fixes: 84a9b48128c1 ("net/sfc: support flow API isolated mode")
-Cc: stable@dpdk.org
 
 Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
 Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
@@ -22,10 +23,10 @@
  1 file changed, 1 insertion(+), 2 deletions(-)
 
 diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c
-index 93bfecc4e..00f088013 100644
+index b5ef47296..d38a3f4e8 100644
 --- a/drivers/net/sfc/sfc_ethdev.c
 +++ b/drivers/net/sfc/sfc_ethdev.c
-@@ -1355,7 +1355,6 @@ sfc_dev_rss_hash_conf_get(struct rte_eth_dev *dev,
+@@ -1344,7 +1344,6 @@ sfc_dev_rss_hash_conf_get(struct rte_eth_dev *dev,
  	struct sfc_adapter *sa = dev->data->dev_private;
  	struct sfc_rss *rss = &sa->rss;
 -	struct sfc_port *port = &sa->port;

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

* [dpdk-stable] patch 'net/sfc: allow to query RSS key and HF when RSS is disabled' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (64 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/sfc: allow to query RSS key and HF in isolated mode' " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'eal: use correct data type for bitmap slab operations' " Kevin Traynor
                   ` (6 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Ivan Malov; +Cc: Andrew Rybchenko, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From fcd376d4082e9b0cd1d070029e0061e8f2844caa Mon Sep 17 00:00:00 2001
From: Ivan Malov <ivan.malov@oktetlabs.ru>
Date: Thu, 11 Oct 2018 15:51:13 +0100
Subject: [PATCH] net/sfc: allow to query RSS key and HF when RSS is disabled

[ upstream commit 662e382244fb29d8bf03113524a139541e10123f ]

If global RSS is not enabled in the multiqueue mode setting,
it will not be possible to change RSS configuration. However,
querying default RSS settings should be possible in any case since
it may be needed by RTE flow API users to find out what RSS settings
will be used by default for a flow rule with RSS action if custom
RSS key and hash function choice are not specified.

Fixes: 63ab5e0c8fda ("net/sfc: use zero RSS channels as disabled RSS indicator")

Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
---
 drivers/net/sfc/sfc_ethdev.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c
index d38a3f4e8..f972d2b82 100644
--- a/drivers/net/sfc/sfc_ethdev.c
+++ b/drivers/net/sfc/sfc_ethdev.c
@@ -1348,7 +1348,4 @@ sfc_dev_rss_hash_conf_get(struct rte_eth_dev *dev,
 		return -ENOTSUP;
 
-	if (rss->channels == 0)
-		return -EINVAL;
-
 	sfc_adapter_lock(sa);
 
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.767448721 +0000
+++ 0067-net-sfc-allow-to-query-RSS-key-and-HF-when-RSS-is-di.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,8 +1,10 @@
-From 662e382244fb29d8bf03113524a139541e10123f Mon Sep 17 00:00:00 2001
+From fcd376d4082e9b0cd1d070029e0061e8f2844caa Mon Sep 17 00:00:00 2001
 From: Ivan Malov <ivan.malov@oktetlabs.ru>
 Date: Thu, 11 Oct 2018 15:51:13 +0100
 Subject: [PATCH] net/sfc: allow to query RSS key and HF when RSS is disabled
 
+[ upstream commit 662e382244fb29d8bf03113524a139541e10123f ]
+
 If global RSS is not enabled in the multiqueue mode setting,
 it will not be possible to change RSS configuration. However,
 querying default RSS settings should be possible in any case since
@@ -11,7 +13,6 @@
 RSS key and hash function choice are not specified.
 
 Fixes: 63ab5e0c8fda ("net/sfc: use zero RSS channels as disabled RSS indicator")
-Cc: stable@dpdk.org
 
 Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
 Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
@@ -20,10 +21,10 @@
  1 file changed, 3 deletions(-)
 
 diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c
-index 00f088013..b2e17f26e 100644
+index d38a3f4e8..f972d2b82 100644
 --- a/drivers/net/sfc/sfc_ethdev.c
 +++ b/drivers/net/sfc/sfc_ethdev.c
-@@ -1359,7 +1359,4 @@ sfc_dev_rss_hash_conf_get(struct rte_eth_dev *dev,
+@@ -1348,7 +1348,4 @@ sfc_dev_rss_hash_conf_get(struct rte_eth_dev *dev,
  		return -ENOTSUP;
  
 -	if (rss->channels == 0)

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

* [dpdk-stable] patch 'eal: use correct data type for bitmap slab operations' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (65 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/sfc: allow to query RSS key and HF when RSS is disabled' " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'app/testpmd: fix metering and policing commands' " Kevin Traynor
                   ` (5 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Vivek Sharma; +Cc: Cristian Dumitrescu, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 2438f09b91ab25d5e95f64305501b10d669548e8 Mon Sep 17 00:00:00 2001
From: Vivek Sharma <vivek.sharma@caviumnetworks.com>
Date: Tue, 25 Sep 2018 09:53:06 +0000
Subject: [PATCH] eal: use correct data type for bitmap slab operations

[ upstream commit bed70e5deb1bc927c5adb375d15c1d32c6c137d8 ]

Currently, slab operations use unsigned long data type for 64-bit slab
related operations. On target 'i686-native-linuxapp-gcc', unsigned long
is 32-bit and thus, slab operations breaks on this target. Changing slab
operations to use unsigned long long for correct functioning on
all targets.

Fixes: de3cfa2c9823 ("sched: initial import")
Fixes: 693f715da45c ("remove extra parentheses in return statement")

Signed-off-by: Vivek Sharma <vivek.sharma@caviumnetworks.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
---
 lib/librte_eal/common/include/rte_bitmap.h | 14 +++++++-------
 test/test/test_bitmap.c                    | 18 ++++++++++++++++++
 2 files changed, 25 insertions(+), 7 deletions(-)

diff --git a/lib/librte_eal/common/include/rte_bitmap.h b/lib/librte_eal/common/include/rte_bitmap.h
index d9facc642..7a36ce73c 100644
--- a/lib/librte_eal/common/include/rte_bitmap.h
+++ b/lib/librte_eal/common/include/rte_bitmap.h
@@ -89,5 +89,5 @@ static inline uint64_t
 __rte_bitmap_mask1_get(struct rte_bitmap *bmp)
 {
-	return (~1lu) << bmp->offset1;
+	return (~1llu) << bmp->offset1;
 }
 
@@ -318,5 +318,5 @@ rte_bitmap_get(struct rte_bitmap *bmp, uint32_t pos)
 	offset2 = pos & RTE_BITMAP_SLAB_BIT_MASK;
 	slab2 = bmp->array2 + index2;
-	return (*slab2) & (1lu << offset2);
+	return (*slab2) & (1llu << offset2);
 }
 
@@ -343,6 +343,6 @@ rte_bitmap_set(struct rte_bitmap *bmp, uint32_t pos)
 	slab1 = bmp->array1 + index1;
 
-	*slab2 |= 1lu << offset2;
-	*slab1 |= 1lu << offset1;
+	*slab2 |= 1llu << offset2;
+	*slab1 |= 1llu << offset1;
 }
 
@@ -371,5 +371,5 @@ rte_bitmap_set_slab(struct rte_bitmap *bmp, uint32_t pos, uint64_t slab)
 
 	*slab2 |= slab;
-	*slab1 |= 1lu << offset1;
+	*slab1 |= 1llu << offset1;
 }
 
@@ -409,5 +409,5 @@ rte_bitmap_clear(struct rte_bitmap *bmp, uint32_t pos)
 
 	/* Return if array2 slab is not all-zeros */
-	*slab2 &= ~(1lu << offset2);
+	*slab2 &= ~(1llu << offset2);
 	if (*slab2){
 		return;
@@ -425,5 +425,5 @@ rte_bitmap_clear(struct rte_bitmap *bmp, uint32_t pos)
 	offset1 = (pos >> RTE_BITMAP_CL_BIT_SIZE_LOG2) & RTE_BITMAP_SLAB_BIT_MASK;
 	slab1 = bmp->array1 + index1;
-	*slab1 &= ~(1lu << offset1);
+	*slab1 &= ~(1llu << offset1);
 
 	return;
diff --git a/test/test/test_bitmap.c b/test/test/test_bitmap.c
index c3169e9d5..95c518488 100644
--- a/test/test/test_bitmap.c
+++ b/test/test/test_bitmap.c
@@ -102,4 +102,5 @@ static int
 test_bitmap_set_get_clear(struct rte_bitmap *bmp)
 {
+	uint64_t val;
 	int i;
 
@@ -125,4 +126,21 @@ test_bitmap_set_get_clear(struct rte_bitmap *bmp)
 	}
 
+	rte_bitmap_reset(bmp);
+
+	/* Alternate slab set test */
+	for (i = 0; i < MAX_BITS; i++) {
+		if (i % RTE_BITMAP_SLAB_BIT_SIZE)
+			rte_bitmap_set(bmp, i);
+	}
+
+	for (i = 0; i < MAX_BITS; i++) {
+		val = rte_bitmap_get(bmp, i);
+		if (((i % RTE_BITMAP_SLAB_BIT_SIZE) && !val) ||
+		    (!(i % RTE_BITMAP_SLAB_BIT_SIZE) && val)) {
+			printf("Failed to get set bit.\n");
+			return TEST_FAILED;
+		}
+	}
+
 	return TEST_SUCCESS;
 }
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.793333834 +0000
+++ 0068-eal-use-correct-data-type-for-bitmap-slab-operations.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,8 +1,10 @@
-From bed70e5deb1bc927c5adb375d15c1d32c6c137d8 Mon Sep 17 00:00:00 2001
+From 2438f09b91ab25d5e95f64305501b10d669548e8 Mon Sep 17 00:00:00 2001
 From: Vivek Sharma <vivek.sharma@caviumnetworks.com>
 Date: Tue, 25 Sep 2018 09:53:06 +0000
 Subject: [PATCH] eal: use correct data type for bitmap slab operations
 
+[ upstream commit bed70e5deb1bc927c5adb375d15c1d32c6c137d8 ]
+
 Currently, slab operations use unsigned long data type for 64-bit slab
 related operations. On target 'i686-native-linuxapp-gcc', unsigned long
 is 32-bit and thus, slab operations breaks on this target. Changing slab
@@ -11,7 +13,6 @@
 
 Fixes: de3cfa2c9823 ("sched: initial import")
 Fixes: 693f715da45c ("remove extra parentheses in return statement")
-Cc: stable@dpdk.org
 
 Signed-off-by: Vivek Sharma <vivek.sharma@caviumnetworks.com>
 Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>

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

* [dpdk-stable] patch 'app/testpmd: fix metering and policing commands' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (66 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'eal: use correct data type for bitmap slab operations' " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'examples/ip_pipeline: fix IPv6 endianness' " Kevin Traynor
                   ` (4 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Jasvinder Singh; +Cc: Bernard Iremonger, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 46addc5a71f0c79a6720b6132b60e62383b5a5ef Mon Sep 17 00:00:00 2001
From: Jasvinder Singh <jasvinder.singh@intel.com>
Date: Mon, 1 Oct 2018 11:46:04 +0100
Subject: [PATCH] app/testpmd: fix metering and policing commands

[ upstream commit a0f367eb06be643f30ab38cd62026513d656438d ]

Fixes bad arguments error for cli commands related to adding meter
profile for srtcm_rfc2697, trtcm_rfc2698 and trtcm_rfc4115.

error log:
testpmd> add port meter profile trtcm_rfc2698 2 0 3125000000
3125000000 2500000 2500000
Bad arguments

Fixes: 30ffb4e67ee3 ("app/testpmd: add commands traffic metering and policing")

Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 app/test-pmd/cmdline_mtr.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/app/test-pmd/cmdline_mtr.c b/app/test-pmd/cmdline_mtr.c
index f908fb352..32a47305f 100644
--- a/app/test-pmd/cmdline_mtr.c
+++ b/app/test-pmd/cmdline_mtr.c
@@ -415,7 +415,7 @@ cmdline_parse_inst_t cmd_add_port_meter_profile_srtcm = {
 		(void *)&cmd_add_port_meter_profile_srtcm_meter,
 		(void *)&cmd_add_port_meter_profile_srtcm_profile,
+		(void *)&cmd_add_port_meter_profile_srtcm_srtcm_rfc2697,
 		(void *)&cmd_add_port_meter_profile_srtcm_port_id,
 		(void *)&cmd_add_port_meter_profile_srtcm_profile_id,
-		(void *)&cmd_add_port_meter_profile_srtcm_srtcm_rfc2697,
 		(void *)&cmd_add_port_meter_profile_srtcm_cir,
 		(void *)&cmd_add_port_meter_profile_srtcm_cbs,
@@ -522,7 +522,7 @@ cmdline_parse_inst_t cmd_add_port_meter_profile_trtcm = {
 		(void *)&cmd_add_port_meter_profile_trtcm_meter,
 		(void *)&cmd_add_port_meter_profile_trtcm_profile,
+		(void *)&cmd_add_port_meter_profile_trtcm_trtcm_rfc2698,
 		(void *)&cmd_add_port_meter_profile_trtcm_port_id,
 		(void *)&cmd_add_port_meter_profile_trtcm_profile_id,
-		(void *)&cmd_add_port_meter_profile_trtcm_trtcm_rfc2698,
 		(void *)&cmd_add_port_meter_profile_trtcm_cir,
 		(void *)&cmd_add_port_meter_profile_trtcm_pir,
@@ -634,7 +634,7 @@ cmdline_parse_inst_t cmd_add_port_meter_profile_trtcm_rfc4115 = {
 		(void *)&cmd_add_port_meter_profile_trtcm_rfc4115_meter,
 		(void *)&cmd_add_port_meter_profile_trtcm_rfc4115_profile,
+		(void *)&cmd_add_port_meter_profile_trtcm_rfc4115_trtcm_rfc4115,
 		(void *)&cmd_add_port_meter_profile_trtcm_rfc4115_port_id,
 		(void *)&cmd_add_port_meter_profile_trtcm_rfc4115_profile_id,
-		(void *)&cmd_add_port_meter_profile_trtcm_rfc4115_trtcm_rfc4115,
 		(void *)&cmd_add_port_meter_profile_trtcm_rfc4115_cir,
 		(void *)&cmd_add_port_meter_profile_trtcm_rfc4115_eir,
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.816520466 +0000
+++ 0069-app-testpmd-fix-metering-and-policing-commands.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,8 +1,10 @@
-From a0f367eb06be643f30ab38cd62026513d656438d Mon Sep 17 00:00:00 2001
+From 46addc5a71f0c79a6720b6132b60e62383b5a5ef Mon Sep 17 00:00:00 2001
 From: Jasvinder Singh <jasvinder.singh@intel.com>
 Date: Mon, 1 Oct 2018 11:46:04 +0100
 Subject: [PATCH] app/testpmd: fix metering and policing commands
 
+[ upstream commit a0f367eb06be643f30ab38cd62026513d656438d ]
+
 Fixes bad arguments error for cli commands related to adding meter
 profile for srtcm_rfc2697, trtcm_rfc2698 and trtcm_rfc4115.
 
@@ -12,7 +14,6 @@
 Bad arguments
 
 Fixes: 30ffb4e67ee3 ("app/testpmd: add commands traffic metering and policing")
-Cc: stable@dpdk.org
 
 Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com>
 Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>

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

* [dpdk-stable] patch 'examples/ip_pipeline: fix IPv6 endianness' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (67 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'app/testpmd: fix metering and policing commands' " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/softnic: " Kevin Traynor
                   ` (3 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Reshma Pattan; +Cc: Cristian Dumitrescu, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From d4754ea87c1b542e355726955d3e3eb0b9f0952c Mon Sep 17 00:00:00 2001
From: Reshma Pattan <reshma.pattan@intel.com>
Date: Fri, 28 Sep 2018 17:18:55 +0100
Subject: [PATCH] examples/ip_pipeline: fix IPv6 endianness

[ upstream commit 223be676c3f32d8d8b1bb1d071bb0f151890e6c6 ]

Fix IPv6 endianness from big endian to CPU order.

Fixes: a3a95b7d58 ("examples/ip_pipeline: add table entry commands")

Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
---
 examples/ip_pipeline/thread.c | 40 +++++++++++++++++++++--------------
 1 file changed, 24 insertions(+), 16 deletions(-)

diff --git a/examples/ip_pipeline/thread.c b/examples/ip_pipeline/thread.c
index 7fc03332e..b00ea0653 100644
--- a/examples/ip_pipeline/thread.c
+++ b/examples/ip_pipeline/thread.c
@@ -2245,27 +2245,35 @@ match_convert(struct table_rule_match *mh,
 					mh->match.acl.proto_mask;
 
-				ml->acl_add.field_value[1].value.u32 = sa32[0];
+				ml->acl_add.field_value[1].value.u32 =
+					rte_be_to_cpu_32(sa32[0]);
 				ml->acl_add.field_value[1].mask_range.u32 =
 					sa32_depth[0];
-				ml->acl_add.field_value[2].value.u32 = sa32[1];
+				ml->acl_add.field_value[2].value.u32 =
+					rte_be_to_cpu_32(sa32[1]);
 				ml->acl_add.field_value[2].mask_range.u32 =
 					sa32_depth[1];
-				ml->acl_add.field_value[3].value.u32 = sa32[2];
+				ml->acl_add.field_value[3].value.u32 =
+					rte_be_to_cpu_32(sa32[2]);
 				ml->acl_add.field_value[3].mask_range.u32 =
 					sa32_depth[2];
-				ml->acl_add.field_value[4].value.u32 = sa32[3];
+				ml->acl_add.field_value[4].value.u32 =
+					rte_be_to_cpu_32(sa32[3]);
 				ml->acl_add.field_value[4].mask_range.u32 =
 					sa32_depth[3];
 
-				ml->acl_add.field_value[5].value.u32 = da32[0];
+				ml->acl_add.field_value[5].value.u32 =
+					rte_be_to_cpu_32(da32[0]);
 				ml->acl_add.field_value[5].mask_range.u32 =
 					da32_depth[0];
-				ml->acl_add.field_value[6].value.u32 = da32[1];
+				ml->acl_add.field_value[6].value.u32 =
+					rte_be_to_cpu_32(da32[1]);
 				ml->acl_add.field_value[6].mask_range.u32 =
 					da32_depth[1];
-				ml->acl_add.field_value[7].value.u32 = da32[2];
+				ml->acl_add.field_value[7].value.u32 =
+					rte_be_to_cpu_32(da32[2]);
 				ml->acl_add.field_value[7].mask_range.u32 =
 					da32_depth[2];
-				ml->acl_add.field_value[8].value.u32 = da32[3];
+				ml->acl_add.field_value[8].value.u32 =
+					rte_be_to_cpu_32(da32[3]);
 				ml->acl_add.field_value[8].mask_range.u32 =
 					da32_depth[3];
@@ -2309,34 +2317,34 @@ match_convert(struct table_rule_match *mh,
 
 				ml->acl_delete.field_value[1].value.u32 =
-					sa32[0];
+					rte_be_to_cpu_32(sa32[0]);
 				ml->acl_delete.field_value[1].mask_range.u32 =
 					sa32_depth[0];
 				ml->acl_delete.field_value[2].value.u32 =
-					sa32[1];
+					rte_be_to_cpu_32(sa32[1]);
 				ml->acl_delete.field_value[2].mask_range.u32 =
 					sa32_depth[1];
 				ml->acl_delete.field_value[3].value.u32 =
-					sa32[2];
+					rte_be_to_cpu_32(sa32[2]);
 				ml->acl_delete.field_value[3].mask_range.u32 =
 					sa32_depth[2];
 				ml->acl_delete.field_value[4].value.u32 =
-					sa32[3];
+					rte_be_to_cpu_32(sa32[3]);
 				ml->acl_delete.field_value[4].mask_range.u32 =
 					sa32_depth[3];
 
 				ml->acl_delete.field_value[5].value.u32 =
-					da32[0];
+					rte_be_to_cpu_32(da32[0]);
 				ml->acl_delete.field_value[5].mask_range.u32 =
 					da32_depth[0];
 				ml->acl_delete.field_value[6].value.u32 =
-					da32[1];
+					rte_be_to_cpu_32(da32[1]);
 				ml->acl_delete.field_value[6].mask_range.u32 =
 					da32_depth[1];
 				ml->acl_delete.field_value[7].value.u32 =
-					da32[2];
+					rte_be_to_cpu_32(da32[2]);
 				ml->acl_delete.field_value[7].mask_range.u32 =
 					da32_depth[2];
 				ml->acl_delete.field_value[8].value.u32 =
-					da32[3];
+					rte_be_to_cpu_32(da32[3]);
 				ml->acl_delete.field_value[8].mask_range.u32 =
 					da32_depth[3];
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.839510153 +0000
+++ 0070-examples-ip_pipeline-fix-IPv6-endianness.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,12 +1,13 @@
-From 223be676c3f32d8d8b1bb1d071bb0f151890e6c6 Mon Sep 17 00:00:00 2001
+From d4754ea87c1b542e355726955d3e3eb0b9f0952c Mon Sep 17 00:00:00 2001
 From: Reshma Pattan <reshma.pattan@intel.com>
 Date: Fri, 28 Sep 2018 17:18:55 +0100
 Subject: [PATCH] examples/ip_pipeline: fix IPv6 endianness
 
+[ upstream commit 223be676c3f32d8d8b1bb1d071bb0f151890e6c6 ]
+
 Fix IPv6 endianness from big endian to CPU order.
 
 Fixes: a3a95b7d58 ("examples/ip_pipeline: add table entry commands")
-Cc: stable@dpdk.org
 
 Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
 Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
@@ -15,7 +16,7 @@
  1 file changed, 24 insertions(+), 16 deletions(-)
 
 diff --git a/examples/ip_pipeline/thread.c b/examples/ip_pipeline/thread.c
-index ca741952a..3ec44c9a9 100644
+index 7fc03332e..b00ea0653 100644
 --- a/examples/ip_pipeline/thread.c
 +++ b/examples/ip_pipeline/thread.c
 @@ -2245,27 +2245,35 @@ match_convert(struct table_rule_match *mh,

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

* [dpdk-stable] patch 'net/softnic: fix IPv6 endianness' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (68 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'examples/ip_pipeline: fix IPv6 endianness' " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'bus/fslmc: fix physical addressing check' " Kevin Traynor
                   ` (2 subsequent siblings)
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Reshma Pattan; +Cc: Cristian Dumitrescu, dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 14a4ec3232447a48bd4cec06cffcc70111cda859 Mon Sep 17 00:00:00 2001
From: Reshma Pattan <reshma.pattan@intel.com>
Date: Fri, 28 Sep 2018 17:18:54 +0100
Subject: [PATCH] net/softnic: fix IPv6 endianness

[ upstream commit 13b8c6802d456b3acd9b5cf47abb60594f892e9b ]

Fix IPv6 endianness from big endian to CPU order.

Fixes: ee19326a4b ("net/softnic: add command for pipeline table entries")

Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
---
 drivers/net/softnic/rte_eth_softnic_thread.c | 40 ++++++++++++--------
 1 file changed, 24 insertions(+), 16 deletions(-)

diff --git a/drivers/net/softnic/rte_eth_softnic_thread.c b/drivers/net/softnic/rte_eth_softnic_thread.c
index 8a1509030..2be81900a 100644
--- a/drivers/net/softnic/rte_eth_softnic_thread.c
+++ b/drivers/net/softnic/rte_eth_softnic_thread.c
@@ -2203,27 +2203,35 @@ match_convert(struct softnic_table_rule_match *mh,
 					mh->match.acl.proto_mask;
 
-				ml->acl_add.field_value[1].value.u32 = sa32[0];
+				ml->acl_add.field_value[1].value.u32 =
+					rte_be_to_cpu_32(sa32[0]);
 				ml->acl_add.field_value[1].mask_range.u32 =
 					sa32_depth[0];
-				ml->acl_add.field_value[2].value.u32 = sa32[1];
+				ml->acl_add.field_value[2].value.u32 =
+					rte_be_to_cpu_32(sa32[1]);
 				ml->acl_add.field_value[2].mask_range.u32 =
 					sa32_depth[1];
-				ml->acl_add.field_value[3].value.u32 = sa32[2];
+				ml->acl_add.field_value[3].value.u32 =
+					rte_be_to_cpu_32(sa32[2]);
 				ml->acl_add.field_value[3].mask_range.u32 =
 					sa32_depth[2];
-				ml->acl_add.field_value[4].value.u32 = sa32[3];
+				ml->acl_add.field_value[4].value.u32 =
+					rte_be_to_cpu_32(sa32[3]);
 				ml->acl_add.field_value[4].mask_range.u32 =
 					sa32_depth[3];
 
-				ml->acl_add.field_value[5].value.u32 = da32[0];
+				ml->acl_add.field_value[5].value.u32 =
+					rte_be_to_cpu_32(da32[0]);
 				ml->acl_add.field_value[5].mask_range.u32 =
 					da32_depth[0];
-				ml->acl_add.field_value[6].value.u32 = da32[1];
+				ml->acl_add.field_value[6].value.u32 =
+					rte_be_to_cpu_32(da32[1]);
 				ml->acl_add.field_value[6].mask_range.u32 =
 					da32_depth[1];
-				ml->acl_add.field_value[7].value.u32 = da32[2];
+				ml->acl_add.field_value[7].value.u32 =
+					rte_be_to_cpu_32(da32[2]);
 				ml->acl_add.field_value[7].mask_range.u32 =
 					da32_depth[2];
-				ml->acl_add.field_value[8].value.u32 = da32[3];
+				ml->acl_add.field_value[8].value.u32 =
+					rte_be_to_cpu_32(da32[3]);
 				ml->acl_add.field_value[8].mask_range.u32 =
 					da32_depth[3];
@@ -2265,34 +2273,34 @@ match_convert(struct softnic_table_rule_match *mh,
 
 				ml->acl_delete.field_value[1].value.u32 =
-					sa32[0];
+					rte_be_to_cpu_32(sa32[0]);
 				ml->acl_delete.field_value[1].mask_range.u32 =
 					sa32_depth[0];
 				ml->acl_delete.field_value[2].value.u32 =
-					sa32[1];
+					rte_be_to_cpu_32(sa32[1]);
 				ml->acl_delete.field_value[2].mask_range.u32 =
 					sa32_depth[1];
 				ml->acl_delete.field_value[3].value.u32 =
-					sa32[2];
+					rte_be_to_cpu_32(sa32[2]);
 				ml->acl_delete.field_value[3].mask_range.u32 =
 					sa32_depth[2];
 				ml->acl_delete.field_value[4].value.u32 =
-					sa32[3];
+					rte_be_to_cpu_32(sa32[3]);
 				ml->acl_delete.field_value[4].mask_range.u32 =
 					sa32_depth[3];
 
 				ml->acl_delete.field_value[5].value.u32 =
-					da32[0];
+					rte_be_to_cpu_32(da32[0]);
 				ml->acl_delete.field_value[5].mask_range.u32 =
 					da32_depth[0];
 				ml->acl_delete.field_value[6].value.u32 =
-					da32[1];
+					rte_be_to_cpu_32(da32[1]);
 				ml->acl_delete.field_value[6].mask_range.u32 =
 					da32_depth[1];
 				ml->acl_delete.field_value[7].value.u32 =
-					da32[2];
+					rte_be_to_cpu_32(da32[2]);
 				ml->acl_delete.field_value[7].mask_range.u32 =
 					da32_depth[2];
 				ml->acl_delete.field_value[8].value.u32 =
-					da32[3];
+					rte_be_to_cpu_32(da32[3]);
 				ml->acl_delete.field_value[8].mask_range.u32 =
 					da32_depth[3];
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.865606447 +0000
+++ 0071-net-softnic-fix-IPv6-endianness.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,12 +1,13 @@
-From 13b8c6802d456b3acd9b5cf47abb60594f892e9b Mon Sep 17 00:00:00 2001
+From 14a4ec3232447a48bd4cec06cffcc70111cda859 Mon Sep 17 00:00:00 2001
 From: Reshma Pattan <reshma.pattan@intel.com>
 Date: Fri, 28 Sep 2018 17:18:54 +0100
 Subject: [PATCH] net/softnic: fix IPv6 endianness
 
+[ upstream commit 13b8c6802d456b3acd9b5cf47abb60594f892e9b ]
+
 Fix IPv6 endianness from big endian to CPU order.
 
 Fixes: ee19326a4b ("net/softnic: add command for pipeline table entries")
-Cc: stable@dpdk.org
 
 Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
 Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
@@ -15,10 +16,10 @@
  1 file changed, 24 insertions(+), 16 deletions(-)
 
 diff --git a/drivers/net/softnic/rte_eth_softnic_thread.c b/drivers/net/softnic/rte_eth_softnic_thread.c
-index 76217fcde..87b5592b0 100644
+index 8a1509030..2be81900a 100644
 --- a/drivers/net/softnic/rte_eth_softnic_thread.c
 +++ b/drivers/net/softnic/rte_eth_softnic_thread.c
-@@ -2241,27 +2241,35 @@ match_convert(struct softnic_table_rule_match *mh,
+@@ -2203,27 +2203,35 @@ match_convert(struct softnic_table_rule_match *mh,
  					mh->match.acl.proto_mask;
  
 -				ml->acl_add.field_value[1].value.u32 = sa32[0];
@@ -62,7 +63,7 @@
 +					rte_be_to_cpu_32(da32[3]);
  				ml->acl_add.field_value[8].mask_range.u32 =
  					da32_depth[3];
-@@ -2303,34 +2311,34 @@ match_convert(struct softnic_table_rule_match *mh,
+@@ -2265,34 +2273,34 @@ match_convert(struct softnic_table_rule_match *mh,
  
  				ml->acl_delete.field_value[1].value.u32 =
 -					sa32[0];

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

* [dpdk-stable] patch 'bus/fslmc: fix physical addressing check' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (69 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/softnic: " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/dpaa2: fix IOVA conversion for congestion memory' " Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/dpaa2: fix VLAN filter enablement' " Kevin Traynor
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Shreyansh Jain; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 8ea2dc8bf1946c33bd004ed7c1ca88e0ac9bcadc Mon Sep 17 00:00:00 2001
From: Shreyansh Jain <shreyansh.jain@nxp.com>
Date: Mon, 15 Oct 2018 17:31:52 +0530
Subject: [PATCH] bus/fslmc: fix physical addressing check

[ upstream commit 0947cfde25ad5b05a45b8edcd7e92299dd0ee581 ]

In case RTE_LIBRTE_DPAA2_USE_PHYS_IOVA is enabled, only supported
class is RTE_IOVA_PA.

Fixes: f7768afac101 ("bus/fslmc: support dynamic IOVA")

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

diff --git a/drivers/bus/fslmc/fslmc_bus.c b/drivers/bus/fslmc/fslmc_bus.c
index d2900edc5..923a76017 100644
--- a/drivers/bus/fslmc/fslmc_bus.c
+++ b/drivers/bus/fslmc/fslmc_bus.c
@@ -491,4 +491,8 @@ rte_dpaa2_get_iommu_class(void)
 		return RTE_IOVA_DC;
 
+#ifdef RTE_LIBRTE_DPAA2_USE_PHYS_IOVA
+	return RTE_IOVA_PA;
+#endif
+
 	/* check if all devices on the bus support Virtual addressing or not */
 	has_iova_va = fslmc_all_device_support_iova();
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.891809863 +0000
+++ 0072-bus-fslmc-fix-physical-addressing-check.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,13 +1,14 @@
-From 0947cfde25ad5b05a45b8edcd7e92299dd0ee581 Mon Sep 17 00:00:00 2001
+From 8ea2dc8bf1946c33bd004ed7c1ca88e0ac9bcadc Mon Sep 17 00:00:00 2001
 From: Shreyansh Jain <shreyansh.jain@nxp.com>
 Date: Mon, 15 Oct 2018 17:31:52 +0530
 Subject: [PATCH] bus/fslmc: fix physical addressing check
 
+[ upstream commit 0947cfde25ad5b05a45b8edcd7e92299dd0ee581 ]
+
 In case RTE_LIBRTE_DPAA2_USE_PHYS_IOVA is enabled, only supported
 class is RTE_IOVA_PA.
 
 Fixes: f7768afac101 ("bus/fslmc: support dynamic IOVA")
-Cc: stable@dpdk.org
 
 Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
 ---
@@ -15,10 +16,10 @@
  1 file changed, 4 insertions(+)
 
 diff --git a/drivers/bus/fslmc/fslmc_bus.c b/drivers/bus/fslmc/fslmc_bus.c
-index 960f55071..2bc9457bc 100644
+index d2900edc5..923a76017 100644
 --- a/drivers/bus/fslmc/fslmc_bus.c
 +++ b/drivers/bus/fslmc/fslmc_bus.c
-@@ -497,4 +497,8 @@ rte_dpaa2_get_iommu_class(void)
+@@ -491,4 +491,8 @@ rte_dpaa2_get_iommu_class(void)
  		return RTE_IOVA_DC;
  
 +#ifdef RTE_LIBRTE_DPAA2_USE_PHYS_IOVA

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

* [dpdk-stable] patch 'net/dpaa2: fix IOVA conversion for congestion memory' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (70 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'bus/fslmc: fix physical addressing check' " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/dpaa2: fix VLAN filter enablement' " Kevin Traynor
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Nipun Gupta; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From d47f987a3ad944c98079141879bf362f91cc180c Mon Sep 17 00:00:00 2001
From: Nipun Gupta <nipun.gupta@nxp.com>
Date: Fri, 12 Oct 2018 15:34:12 +0530
Subject: [PATCH] net/dpaa2: fix IOVA conversion for congestion memory

[ upstream commit 543dbfec6e85ede9943679cc9b6e99319111256e ]

The code was incorrectly using the Virtual mode, whent
the IOVA mode was set as Physical.

Fixes: 5ae1edff6895 ("dpaa2: prepare for 32-bit build")

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
---
 drivers/net/dpaa2/dpaa2_ethdev.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c
index c5047367a..6f6baba8e 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.c
+++ b/drivers/net/dpaa2/dpaa2_ethdev.c
@@ -570,5 +570,6 @@ dpaa2_dev_tx_queue_setup(struct rte_eth_dev *dev,
 		cong_notif_cfg.threshold_exit = CONG_EXIT_TX_THRESHOLD;
 		cong_notif_cfg.message_ctx = 0;
-		cong_notif_cfg.message_iova = (size_t)dpaa2_q->cscn;
+		cong_notif_cfg.message_iova =
+				(size_t)DPAA2_VADDR_TO_IOVA(dpaa2_q->cscn);
 		cong_notif_cfg.dest_cfg.dest_type = DPNI_DEST_NONE;
 		cong_notif_cfg.notification_mode =
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.913911515 +0000
+++ 0073-net-dpaa2-fix-IOVA-conversion-for-congestion-memory.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,13 +1,14 @@
-From 543dbfec6e85ede9943679cc9b6e99319111256e Mon Sep 17 00:00:00 2001
+From d47f987a3ad944c98079141879bf362f91cc180c Mon Sep 17 00:00:00 2001
 From: Nipun Gupta <nipun.gupta@nxp.com>
 Date: Fri, 12 Oct 2018 15:34:12 +0530
 Subject: [PATCH] net/dpaa2: fix IOVA conversion for congestion memory
 
+[ upstream commit 543dbfec6e85ede9943679cc9b6e99319111256e ]
+
 The code was incorrectly using the Virtual mode, whent
 the IOVA mode was set as Physical.
 
 Fixes: 5ae1edff6895 ("dpaa2: prepare for 32-bit build")
-Cc: stable@dpdk.org
 
 Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
 ---
@@ -15,10 +16,10 @@
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c
-index 880034fcf..9ae326023 100644
+index c5047367a..6f6baba8e 100644
 --- a/drivers/net/dpaa2/dpaa2_ethdev.c
 +++ b/drivers/net/dpaa2/dpaa2_ethdev.c
-@@ -569,5 +569,6 @@ dpaa2_dev_tx_queue_setup(struct rte_eth_dev *dev,
+@@ -570,5 +570,6 @@ dpaa2_dev_tx_queue_setup(struct rte_eth_dev *dev,
  		cong_notif_cfg.threshold_exit = CONG_EXIT_TX_THRESHOLD;
  		cong_notif_cfg.message_ctx = 0;
 -		cong_notif_cfg.message_iova = (size_t)dpaa2_q->cscn;

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

* [dpdk-stable] patch 'net/dpaa2: fix VLAN filter enablement' has been queued to stable release 18.08.1
  2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
                   ` (71 preceding siblings ...)
  2018-11-21 16:48 ` [dpdk-stable] patch 'net/dpaa2: fix IOVA conversion for congestion memory' " Kevin Traynor
@ 2018-11-21 16:48 ` Kevin Traynor
  72 siblings, 0 replies; 74+ messages in thread
From: Kevin Traynor @ 2018-11-21 16:48 UTC (permalink / raw)
  To: Hemant Agrawal; +Cc: dpdk stable

Hi,

FYI, your patch has been queued to stable release 18.08.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/27/18. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 9364a64813f7a93cd20daa8c0b589267abb26aec Mon Sep 17 00:00:00 2001
From: Hemant Agrawal <hemant.agrawal@nxp.com>
Date: Fri, 12 Oct 2018 15:34:13 +0530
Subject: [PATCH] net/dpaa2: fix VLAN filter enablement

[ upstream commit 24f3c9a6f874a8b961644d3bd9ad7d5c2bf04bca ]

Enable the VLAN filters only when requested in rx offload.

Fixes: 0ebce6129bc6 ("net/dpaa2: support new ethdev offload APIs")

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

diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c
index 6f6baba8e..09fa0571b 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.c
+++ b/drivers/net/dpaa2/dpaa2_ethdev.c
@@ -407,5 +407,6 @@ dpaa2_eth_dev_configure(struct rte_eth_dev *dev)
 	}
 
-	dpaa2_vlan_offload_set(dev, ETH_VLAN_FILTER_MASK);
+	if (rx_offloads & DEV_RX_OFFLOAD_VLAN_FILTER)
+		dpaa2_vlan_offload_set(dev, ETH_VLAN_FILTER_MASK);
 
 	/* update the current status */
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-21 16:44:32.938356946 +0000
+++ 0074-net-dpaa2-fix-VLAN-filter-enablement.patch	2018-11-21 16:44:30.000000000 +0000
@@ -1,12 +1,13 @@
-From 24f3c9a6f874a8b961644d3bd9ad7d5c2bf04bca Mon Sep 17 00:00:00 2001
+From 9364a64813f7a93cd20daa8c0b589267abb26aec Mon Sep 17 00:00:00 2001
 From: Hemant Agrawal <hemant.agrawal@nxp.com>
 Date: Fri, 12 Oct 2018 15:34:13 +0530
 Subject: [PATCH] net/dpaa2: fix VLAN filter enablement
 
+[ upstream commit 24f3c9a6f874a8b961644d3bd9ad7d5c2bf04bca ]
+
 Enable the VLAN filters only when requested in rx offload.
 
 Fixes: 0ebce6129bc6 ("net/dpaa2: support new ethdev offload APIs")
-Cc: stable@dpdk.org
 
 Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
 ---
@@ -14,10 +15,10 @@
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c
-index 9ae326023..bfe78c051 100644
+index 6f6baba8e..09fa0571b 100644
 --- a/drivers/net/dpaa2/dpaa2_ethdev.c
 +++ b/drivers/net/dpaa2/dpaa2_ethdev.c
-@@ -406,5 +406,6 @@ dpaa2_eth_dev_configure(struct rte_eth_dev *dev)
+@@ -407,5 +407,6 @@ dpaa2_eth_dev_configure(struct rte_eth_dev *dev)
  	}
  
 -	dpaa2_vlan_offload_set(dev, ETH_VLAN_FILTER_MASK);

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

end of thread, other threads:[~2018-11-21 16:51 UTC | newest]

Thread overview: 74+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-11-21 16:47 [dpdk-stable] patch 'doc: fix eventdev shared library version' has been queued to stable release 18.08.1 Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'event/dpaa2: fix mbuf assignment in atomic processing' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'eventdev: fix eth Rx adapter hotplug incompatibility' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'test/event: remove eth Rx adapter vdev workaround' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'event/sw: fix cq index check for unlink usecases' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'test/event: check burst mode capability' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'test/event: fix build for timer adapter' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'test/event: fix RSS config for eth Rx " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'app/eventdev: fix minor typos' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'test/event: fix eth Rx adapter test for skeleton PMD' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'test/event: fix Rx adapter intr " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'mem: fix undefined behavior in NUMA-aware mapping' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'mem: fix --huge-unlink option' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'igb_uio: fix refcount if open returns error' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/i40e: fix send admin queue command before init' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/i40e/base: fix partition id calculation for X722' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/i40e/base: improve the polling mechanism' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/i40e/base: read LLDP config area with correct endianness' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/i40e/base: properly clean resources' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/i40e/base: gracefully clean the " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/i40e/base: correct global reset timeout calculation' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/ixgbe: wait longer for link after fiber MAC setup' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/enic: do not use non-standard integer types' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/enic: set Rx VLAN offload flag for non-stripped packets' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/enic: explicitly disable overlay offload' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/failsafe: report actual device capabilities' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/nfp: fix RSS' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnx2x: fix logging to include device name' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnx2x: fix to disable further interrupts' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnx2x: fix call to link handling periodic function' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnx2x: fix to add PHY lock' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/enic: fix flow API memory leak' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnxt: get rid of ff pools and use VNIC info array' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnxt: fix uninitialized pointer access in Tx' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnxt: fix MTU setting' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnxt: fix registration of VF async event completion ring' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnxt: set MAC filtering as outer for non tunnel frames' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnxt: set a VNIC as default only once' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnxt: set VLAN strip mode before default VNIC cfg' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnxt: remove excess log messages' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/bnxt: reduce polling interval for valid bit' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'app/testpmd: check Rx VLAN offload flag to print VLAN TCI' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'app/testpmd: fix csum parse-tunnel command invocation' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'doc: fix typos in the flow API guide' " Kevin Traynor
2018-11-21 16:47 ` [dpdk-stable] patch 'net/sfc: receive prepared packets even in Rx exception case' " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'mbuf: fix Tx offload mask' " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'net/mlx5: fix representor port link status' " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'net/mlx5: fix representor port xstats' " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'net/mlx4: support externally allocated static memory' " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'net/mlx5: " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'app/testpmd: fix displaying RSS hash functions' " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'doc: clarify L3 Tx checksum prerequisite' " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'doc: clarify L4 " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'net/failsafe: use prefix for function' " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'net/mlx5: fix errno values for flow engine' " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'doc: add VFIO in ENA guide' " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'drivers/net: fix log type string' " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'app/testpmd: fix printf format in event callback' " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'app/testpmd: fix duplicate exit' " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'net/mlx5: support missing counter in extended statistics' " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'net/mlx5: add representor specific " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'net/mlx5: always use representor ifindex for ioctl' " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'net/e1000: do not error out if Rx drop enable is set' " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'net/ifc: fix address translation function name' " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'net/sfc: do not skip RSS configuration step on reconfigure' " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'net/sfc: allow to query RSS key and HF in isolated mode' " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'net/sfc: allow to query RSS key and HF when RSS is disabled' " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'eal: use correct data type for bitmap slab operations' " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'app/testpmd: fix metering and policing commands' " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'examples/ip_pipeline: fix IPv6 endianness' " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'net/softnic: " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'bus/fslmc: fix physical addressing check' " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'net/dpaa2: fix IOVA conversion for congestion memory' " Kevin Traynor
2018-11-21 16:48 ` [dpdk-stable] patch 'net/dpaa2: fix VLAN filter enablement' " Kevin Traynor

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).