[PATCH 0/5] DPAA Ethernet fixes

STALE3087d

Revision v1 of 2 in this series.

10 messages, 3 authors, 2018-03-15 · open the first message on its own page

[PATCH 0/5] DPAA Ethernet fixes

From: Madalin Bucur <madalin.bucur@nxp.com>
Date: 2018-03-14 13:38:22

Hi,

This patch set is addressing several issues in the DPAA Ethernet
driver suite:

 - module unload crash caused by wrong reference to device being left
   in the cleanup code after the DSA related changes
 - scheduling wile atomic bug in QMan code revealed during dpaa_eth
   module unload
 - a couple of error counter fixes, a duplicated init in dpaa_eth.

Madalin

Camelia Groza (3):
  dpaa_eth: remove duplicate initialization
  dpaa_eth: increment the RX dropped counter when needed
  dpaa_eth: remove duplicate increment of the tx_errors counter

Madalin Bucur (2):
  soc/fsl/qbman: fix issue in qman_delete_cgr_safe()
  dpaa_eth: fix error in dpaa_remove()

 drivers/net/ethernet/freescale/dpaa/dpaa_eth.c |  8 ++++----
 drivers/soc/fsl/qbman/qman.c                   | 28 +++++---------------------
 2 files changed, 9 insertions(+), 27 deletions(-)

-- 
2.1.0

[PATCH 1/5] soc/fsl/qbman: fix issue in qman_delete_cgr_safe()

From: Madalin Bucur <madalin.bucur@nxp.com>
Date: 2018-03-14 13:38:32

The wait_for_completion() call in qman_delete_cgr_safe()
was triggering a scheduling while atomic bug, replacing the
kthread with a smp_call_function_single() call to fix it.

Signed-off-by: Madalin Bucur <madalin.bucur@nxp.com>
Signed-off-by: Roy Pledge <redacted>
---
 drivers/soc/fsl/qbman/qman.c | 28 +++++-----------------------
 1 file changed, 5 insertions(+), 23 deletions(-)
diff --git a/drivers/soc/fsl/qbman/qman.c b/drivers/soc/fsl/qbman/qman.c
index e4f5bb0..ba3cfa8 100644
--- a/drivers/soc/fsl/qbman/qman.c
+++ b/drivers/soc/fsl/qbman/qman.c
@@ -2443,39 +2443,21 @@ struct cgr_comp {
 	struct completion completion;
 };
 
-static int qman_delete_cgr_thread(void *p)
+static void qman_delete_cgr_smp_call(void *p)
 {
-	struct cgr_comp *cgr_comp = (struct cgr_comp *)p;
-	int ret;
-
-	ret = qman_delete_cgr(cgr_comp->cgr);
-	complete(&cgr_comp->completion);
-
-	return ret;
+	qman_delete_cgr((struct qman_cgr *)p);
 }
 
 void qman_delete_cgr_safe(struct qman_cgr *cgr)
 {
-	struct task_struct *thread;
-	struct cgr_comp cgr_comp;
-
 	preempt_disable();
 	if (qman_cgr_cpus[cgr->cgrid] != smp_processor_id()) {
-		init_completion(&cgr_comp.completion);
-		cgr_comp.cgr = cgr;
-		thread = kthread_create(qman_delete_cgr_thread, &cgr_comp,
-					"cgr_del");
-
-		if (IS_ERR(thread))
-			goto out;
-
-		kthread_bind(thread, qman_cgr_cpus[cgr->cgrid]);
-		wake_up_process(thread);
-		wait_for_completion(&cgr_comp.completion);
+		smp_call_function_single(qman_cgr_cpus[cgr->cgrid],
+					 qman_delete_cgr_smp_call, cgr, true);
 		preempt_enable();
 		return;
 	}
-out:
+
 	qman_delete_cgr(cgr);
 	preempt_enable();
 }
-- 
2.1.0

[PATCH 2/5] dpaa_eth: fix error in dpaa_remove()

From: Madalin Bucur <madalin.bucur@nxp.com>
Date: 2018-03-14 13:38:35

The recent changes that make the driver probing compatible with DSA
were not propagated in the dpa_remove() function, breaking the
module unload function. Using the proper device to address the issue.

Signed-off-by: Madalin Bucur <madalin.bucur@nxp.com>
---
 drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
index 159dc2d..128e0a4 100644
--- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
+++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
@@ -2871,7 +2871,7 @@ static int dpaa_remove(struct platform_device *pdev)
 	struct device *dev;
 	int err;
 
-	dev = &pdev->dev;
+	dev = pdev->dev.parent;
 	net_dev = dev_get_drvdata(dev);
 
 	priv = netdev_priv(net_dev);
-- 
2.1.0

[PATCH 4/5] dpaa_eth: increment the RX dropped counter when needed

From: Madalin Bucur <madalin.bucur@nxp.com>
Date: 2018-03-14 13:38:41

From: Camelia Groza <redacted>

Signed-off-by: Camelia Groza <redacted>
---
 drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
index 3e83d79..76b3c9e 100644
--- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
+++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
@@ -2321,8 +2321,10 @@ static enum qman_cb_dqrr_result rx_default_dqrr(struct qman_portal *portal,
 
 	skb_len = skb->len;
 
-	if (unlikely(netif_receive_skb(skb) == NET_RX_DROP))
+	if (unlikely(netif_receive_skb(skb) == NET_RX_DROP)) {
+		percpu_stats->rx_dropped++;
 		return qman_cb_dqrr_consume;
+	}
 
 	percpu_stats->rx_packets++;
 	percpu_stats->rx_bytes += skb_len;
-- 
2.1.0

[PATCH 5/5] dpaa_eth: remove duplicate increment of the tx_errors counter

From: Madalin Bucur <madalin.bucur@nxp.com>
Date: 2018-03-14 13:38:43

From: Camelia Groza <redacted>

The tx_errors counter is incremented by the dpaa_xmit caller.

Signed-off-by: Camelia Groza <redacted>
Signed-off-by: Madalin Bucur <madalin.bucur@nxp.com>
---
 drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 1 -
 1 file changed, 1 deletion(-)
diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
index 76b3c9e..fd43f98 100644
--- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
+++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
@@ -2021,7 +2021,6 @@ static inline int dpaa_xmit(struct dpaa_priv *priv,
 	}
 
 	if (unlikely(err < 0)) {
-		percpu_stats->tx_errors++;
 		percpu_stats->tx_fifo_errors++;
 		return err;
 	}
-- 
2.1.0

[PATCH 3/5] dpaa_eth: remove duplicate initialization

From: Madalin Bucur <madalin.bucur@nxp.com>
Date: 2018-03-14 13:39:30

From: Camelia Groza <redacted>

The fd_format has already been initialized at this point.

Signed-off-by: Camelia Groza <redacted>
---
 drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 1 -
 1 file changed, 1 deletion(-)
diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
index 128e0a4..3e83d79 100644
--- a/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
+++ b/drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
@@ -2289,7 +2289,6 @@ static enum qman_cb_dqrr_result rx_default_dqrr(struct qman_portal *portal,
 	vaddr = phys_to_virt(addr);
 	prefetch(vaddr + qm_fd_get_offset(fd));
 
-	fd_format = qm_fd_get_format(fd);
 	/* The only FD types that we may receive are contig and S/G */
 	WARN_ON((fd_format != qm_fd_contig) && (fd_format != qm_fd_sg));
 
-- 
2.1.0

Re: [PATCH 0/5] DPAA Ethernet fixes

From: David Miller <davem@davemloft.net>
Date: 2018-03-14 17:17:46

From: Madalin Bucur <madalin.bucur@nxp.com>
Date: Wed, 14 Mar 2018 08:37:27 -0500
This patch set is addressing several issues in the DPAA Ethernet
driver suite:

 - module unload crash caused by wrong reference to device being left
   in the cleanup code after the DSA related changes
 - scheduling wile atomic bug in QMan code revealed during dpaa_eth
   module unload
 - a couple of error counter fixes, a duplicated init in dpaa_eth.
Series applied, thank you.

Re: [PATCH 0/5] DPAA Ethernet fixes

From: Joakim Tjernlund <hidden>
Date: 2018-03-14 18:43:24

T24gV2VkLCAyMDE4LTAzLTE0IGF0IDA4OjM3IC0wNTAwLCBNYWRhbGluIEJ1Y3VyIHdyb3RlOg0K
PiBIaSwNCj4gDQo+IFRoaXMgcGF0Y2ggc2V0IGlzIGFkZHJlc3Npbmcgc2V2ZXJhbCBpc3N1ZXMg
aW4gdGhlIERQQUEgRXRoZXJuZXQNCj4gZHJpdmVyIHN1aXRlOg0KPiANCj4gIC0gbW9kdWxlIHVu
bG9hZCBjcmFzaCBjYXVzZWQgYnkgd3JvbmcgcmVmZXJlbmNlIHRvIGRldmljZSBiZWluZyBsZWZ0
DQo+ICAgIGluIHRoZSBjbGVhbnVwIGNvZGUgYWZ0ZXIgdGhlIERTQSByZWxhdGVkIGNoYW5nZXMN
Cj4gIC0gc2NoZWR1bGluZyB3aWxlIGF0b21pYyBidWcgaW4gUU1hbiBjb2RlIHJldmVhbGVkIGR1
cmluZyBkcGFhX2V0aA0KPiAgICBtb2R1bGUgdW5sb2FkDQo+ICAtIGEgY291cGxlIG9mIGVycm9y
IGNvdW50ZXIgZml4ZXMsIGEgZHVwbGljYXRlZCBpbml0IGluIGRwYWFfZXRoLg0KDQpobW0sIHNv
bWUgb2YgdGhlc2UoYWxsPykgYnVncyBhcmUgaW4gc3RhYmxlIHRvbywgQ0M6IHN0YWJsZSBwZXJo
YXBzPyANCg0KPiANCj4gTWFkYWxpbg0KPiANCj4gQ2FtZWxpYSBHcm96YSAoMyk6DQo+ICAgZHBh
YV9ldGg6IHJlbW92ZSBkdXBsaWNhdGUgaW5pdGlhbGl6YXRpb24NCj4gICBkcGFhX2V0aDogaW5j
cmVtZW50IHRoZSBSWCBkcm9wcGVkIGNvdW50ZXIgd2hlbiBuZWVkZWQNCj4gICBkcGFhX2V0aDog
cmVtb3ZlIGR1cGxpY2F0ZSBpbmNyZW1lbnQgb2YgdGhlIHR4X2Vycm9ycyBjb3VudGVyDQo+IA0K
PiBNYWRhbGluIEJ1Y3VyICgyKToNCj4gICBzb2MvZnNsL3FibWFuOiBmaXggaXNzdWUgaW4gcW1h
bl9kZWxldGVfY2dyX3NhZmUoKQ0KPiAgIGRwYWFfZXRoOiBmaXggZXJyb3IgaW4gZHBhYV9yZW1v
dmUoKQ0KPiANCj4gIGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRo
LmMgfCAgOCArKysrLS0tLQ0KPiAgZHJpdmVycy9zb2MvZnNsL3FibWFuL3FtYW4uYyAgICAgICAg
ICAgICAgICAgICB8IDI4ICsrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICAyIGZpbGVzIGNo
YW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMjcgZGVsZXRpb25zKC0pDQo+IA0KPiAtLQ0KPiAyLjEu
MA0KPiANCg==

RE: [PATCH 0/5] DPAA Ethernet fixes

From: Madalin-cristian Bucur <madalin.bucur@nxp.com>
Date: 2018-03-15 09:32:45

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBKb2FraW0gVGplcm5sdW5kIFtt
YWlsdG86Sm9ha2ltLlRqZXJubHVuZEBpbmZpbmVyYS5jb21dDQo+IFNlbnQ6IFdlZG5lc2RheSwg
TWFyY2ggMTQsIDIwMTggODo0MyBQTQ0KPiBUbzogZGF2ZW1AZGF2ZW1sb2Z0Lm5ldDsgTWFkYWxp
bi1jcmlzdGlhbiBCdWN1cg0KPiA8bWFkYWxpbi5idWN1ckBueHAuY29tPg0KPiANCj4gT24gV2Vk
LCAyMDE4LTAzLTE0IGF0IDA4OjM3IC0wNTAwLCBNYWRhbGluIEJ1Y3VyIHdyb3RlOg0KPiA+IEhp
LA0KPiA+DQo+ID4gVGhpcyBwYXRjaCBzZXQgaXMgYWRkcmVzc2luZyBzZXZlcmFsIGlzc3VlcyBp
biB0aGUgRFBBQSBFdGhlcm5ldA0KPiA+IGRyaXZlciBzdWl0ZToNCj4gPg0KPiA+ICAtIG1vZHVs
ZSB1bmxvYWQgY3Jhc2ggY2F1c2VkIGJ5IHdyb25nIHJlZmVyZW5jZSB0byBkZXZpY2UgYmVpbmcg
bGVmdA0KPiA+ICAgIGluIHRoZSBjbGVhbnVwIGNvZGUgYWZ0ZXIgdGhlIERTQSByZWxhdGVkIGNo
YW5nZXMNCj4gPiAgLSBzY2hlZHVsaW5nIHdpbGUgYXRvbWljIGJ1ZyBpbiBRTWFuIGNvZGUgcmV2
ZWFsZWQgZHVyaW5nIGRwYWFfZXRoDQo+ID4gICAgbW9kdWxlIHVubG9hZA0KPiA+ICAtIGEgY291
cGxlIG9mIGVycm9yIGNvdW50ZXIgZml4ZXMsIGEgZHVwbGljYXRlZCBpbml0IGluIGRwYWFfZXRo
Lg0KPiANCj4gaG1tLCBzb21lIG9mIHRoZXNlKGFsbD8pIGJ1Z3MgYXJlIGluIHN0YWJsZSB0b28s
IENDOiBzdGFibGUgcGVyaGFwcz8NCg0KSGkgSm9ja2UsDQoNCkkgZGlkIG5vdCBjaGVjayB0aGF0
LCB0aGV5IHNob3VsZCBiZSBhZGRlZC4NCg0KVGhhbmtzLA0KTWFkYWxpbg0KDQo+ID4NCj4gPiBN
YWRhbGluDQo+ID4NCj4gPiBDYW1lbGlhIEdyb3phICgzKToNCj4gPiAgIGRwYWFfZXRoOiByZW1v
dmUgZHVwbGljYXRlIGluaXRpYWxpemF0aW9uDQo+ID4gICBkcGFhX2V0aDogaW5jcmVtZW50IHRo
ZSBSWCBkcm9wcGVkIGNvdW50ZXIgd2hlbiBuZWVkZWQNCj4gPiAgIGRwYWFfZXRoOiByZW1vdmUg
ZHVwbGljYXRlIGluY3JlbWVudCBvZiB0aGUgdHhfZXJyb3JzIGNvdW50ZXINCj4gPg0KPiA+IE1h
ZGFsaW4gQnVjdXIgKDIpOg0KPiA+ICAgc29jL2ZzbC9xYm1hbjogZml4IGlzc3VlIGluIHFtYW5f
ZGVsZXRlX2Nncl9zYWZlKCkNCj4gPiAgIGRwYWFfZXRoOiBmaXggZXJyb3IgaW4gZHBhYV9yZW1v
dmUoKQ0KPiA+DQo+ID4gIGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFf
ZXRoLmMgfCAgOCArKysrLS0tLQ0KPiA+ICBkcml2ZXJzL3NvYy9mc2wvcWJtYW4vcW1hbi5jICAg
ICAgICAgICAgICAgICAgIHwgMjggKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiAgMiBm
aWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4g
LS0NCj4gPiAyLjEuMA0KPiA+DQo=

Re: [PATCH 0/5] DPAA Ethernet fixes

From: David Miller <davem@davemloft.net>
Date: 2018-03-15 15:15:10

From: Madalin-cristian Bucur <madalin.bucur@nxp.com>
Date: Thu, 15 Mar 2018 09:32:35 +0000
quoted
-----Original Message-----
From: Joakim Tjernlund [mailto:Joakim.Tjernlund@infinera.com]
Sent: Wednesday, March 14, 2018 8:43 PM
To: davem@davemloft.net; Madalin-cristian Bucur
[off-list ref]

On Wed, 2018-03-14 at 08:37 -0500, Madalin Bucur wrote:
quoted
Hi,

This patch set is addressing several issues in the DPAA Ethernet
driver suite:

 - module unload crash caused by wrong reference to device being left
   in the cleanup code after the DSA related changes
 - scheduling wile atomic bug in QMan code revealed during dpaa_eth
   module unload
 - a couple of error counter fixes, a duplicated init in dpaa_eth.
hmm, some of these(all?) bugs are in stable too, CC: stable perhaps?
Hi Jocke,

I did not check that, they should be added.
Networking patches are not queued to stable by CC:'ing stable.

Instead you just simply need to ask me explicitly for -stable submission
which I will do at the appropriate time after the fixes have been able
to cook in Linus's tree for a little while.

I've queued this series up for that purpose, thanks.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help