Subject: Re: Problems with mvneta

From: Sven Müller <[email-masked]>
Date: Fri, 20 Oct 2017 00:25:24 +0200

Hi all.

First of all I'm not familiar with kernel programming at all, so please excuse me, if I don't understand everything at the first glance. 

I did as you told me, and moved the mvneta folder from 4.10.10 to 4.13.7: 

rm -rf linux-4.13.7-gentoo/drivers/net/ethernet/marvell
mv linux-4.10.10-gentoo/drivers/net/ethernet/marvell linux-4.13.7-gentoo/drivers/net/ethernet/marvell

This approach didn't compile. So I had to change a view lines: 

--- linux-4.10.10-gentoo/drivers/net/ethernet/marvell/mvneta.c	2017-04-17 01:55:25.126007316 +0200
+++ linux-4.13.7-gentoo/drivers/net/ethernet/marvell/mvneta.c	2017-10-19 22:27:02.685114689 +0200
@@ -28,6 +28,7 @@
 #include <linux/of_mdio.h>
 #include <linux/of_net.h>
 #include <linux/phy.h>
+#include <linux/phy_fixed.h>
 #include <linux/platform_device.h>
 #include <linux/skbuff.h>
 #include <net/hwbm.h>
@@ -652,7 +653,8 @@
 }
 
 /* Get System Network Statistics */
-static struct rtnl_link_stats64 *
+//static struct rtnl_link_stats64 *
+static void
 mvneta_get_stats64(struct net_device *dev,
 		   struct rtnl_link_stats64 *stats)
 {
@@ -687,7 +689,7 @@
 
 	stats->tx_dropped	= dev->stats.tx_dropped;
 
-	return stats;
+//	return stats;
 }
 
 /* Rx descriptors helper methods */

It compiles and runs fine. After a couple of hours and testing no issues were found. 

The changes with a lot of noise:
diff -ur linux-4.13.7-gentoo.orig/drivers/net/ethernet/marvell/ linux-4.13.7-gentoo/drivers/net/ethernet/marvell/
https://paste.pound-python.org/show/GoVNQqxqr2AK6abriwFH/

diff -ur linux-4.10.10-gentoo/drivers/net/ethernet/marvell/ linux-4.13.7-gentoo/drivers/net/ethernet/marvell/
https://paste.pound-python.org/show/LFkv81qeIGQTOvFDQfTZ/

Thanks a lot
Sven

Am Wed, 18 Oct 2017 22:55:57 +0200
schrieb Thomas Petazzoni <[email-masked]>:

> Hello,
> 
> I'm adding my colleagues Grégory Clement and Antoine Ténart in Cc, as
> well as Marcin Wojtas, who also worked on mvneta, and the netdev
> mailing list. I'm keeping your full message below so that others can
> read the context.
> 
> On Wed, 18 Oct 2017 22:34:25 +0200, Sven Müller wrote:
> 
> > I've found your email address in the kernel sources of the mvneta
> > driver. I didn't find a bug system on free-electrons.com. And on
> > kernel.org searching for mvneta wasn't really helpful.   
> 
> There is a bug tracker for the Linux kernel at
> https://bugzilla.kernel.org/. However, I indeed wouldn't be notified
> of bug reports against mvneta.
> 
> > Some people including me hacked the Zyxel NSA-326 some time ago.
> > The whole thread you can find here: 
> > 
> > https://forum.doozan.com/read.php?2,27108
> > 
> > Until kernel 4.10.10 everything worked great. I didn't test 4.11.
> > But any higher kernel version (tested 4.12., 4.13) causes network
> > problems with nfs. I described it here:
> > 
> > https://forum.doozan.com/read.php?2,27108,37699#msg-37699
> > 
> > Transfering files not with full speed but over a longer period of
> > time, e.g. playing music files over nfs or reading a lot of smaller
> > files causes the error: 
> > 
> > Sep 27 17:35:37 nas kernel: rpc-srv/tcp: nfsd: sent only 36488 when
> > sending 65644 bytes - shutting down socket
> > 
> > After that message the network is down. I have to reboot the device
> > in order to get any network connectivity again. And how I wrote:
> > 4.10.10 works perfectly. 4.12 produced a lot of this errors, 4.13
> > seems to be a little bit better. 
> > 
> > Unfortunately I didn't find a way to reproduce this problem
> > directly. It occurs after 5 minutes up to one hour of transferring
> > files via nfs. 
> > 
> > If you are interested in fixing this bug, I would like to support
> > you with providing you any information I can find on my system and
> > testing. 
> > 
> > My kernel config, which is working in 4.10.10 and producing the nfs
> > problem in 4.12 and 4.13: 
> > 
> > https://paste.pound-python.org/show/RCaG9J4yBy79K3NL5F1
> > 
> > and the device tree: 
> > 
> > https://paste.pound-python.org/show/UiLpMgUERuCddHOn6Vsp/  
> 
> There have been a few changes in the mvneta code between 4.10 and
> 4.12, but not many of them look potentially problematic.
> 
> f95936cca6a8410ebdaf164bc5d3ade9e1de5bdb net: mvneta: Adjust six
> checks for null pointers d441b688a1bce8e2e1b43d8090738c306dd09131
> net: mvneta: Use kmalloc_array() in mvneta_txq_init()
> 5d6312ed57a909c86bb9472b2bbc012539392e7d net: mvneta: Improve two
> size determinations in mvneta_init()
> 2911063011fc7adcb43c93e9c3e9dc7798f459f5 net: mvneta: Use
> devm_kmalloc_array() in mvneta_init()
> 82960fff09bc394e2a33d5369969410699c04861 net: mvneta: fix failed to
> suspend if WOL is enabled d6956ac87b5ff6841b09c273a70de86200d82019
> net: mvneta: set rx mode during resume if interface is running
> a38d20d791fdcd79ebccda15a8308a6d8ada6e1c net: mvneta: add RGMII_RXID
> and RGMII_TXID support 9768b45ceb0bc7bdee61837afad331dd6bf7977f net:
> mvneta: support suspend and resume
> 4581be42fce5e1d208cbeb8e78df3f1b4673eff7 net: mvneta: make
> mvneta_eth_tool_ops static 9303ab2b3402b60f6c39abfdbfa4ce00fce8bee4
> net: mvneta: fix build errors when linux/phy*.h is removed from
> net/dsa.h b60a00f9c5f14695991cb77dce7e926623269d88 net: mvneta:
> implement .set_wol and .get_wol
> 6ad20165d376fa07919a70e4f43dfae564601829 drivers: net: generalize
> napi_complete_done() a29b6235560a1ed10c8e1a73bfc616a66b802b90 net:
> mvneta: add BQL support 2a90f7e1d5d04e4f1060268e0b55a2c702bbd67a net:
> mvneta: add xmit_more support
> bc1f44709cf27fb2a5766cadafe7e2ad5e9cb221 net: make ndo_get_stats64 a
> void function
> 
> The only ones that really could have an impact are:
> 
> 6ad20165d376fa07919a70e4f43dfae564601829 drivers: net: generalize
> napi_complete_done() a29b6235560a1ed10c8e1a73bfc616a66b802b90 net:
> mvneta: add BQL support 2a90f7e1d5d04e4f1060268e0b55a2c702bbd67a net:
> mvneta: add xmit_more support
> 
> Could you try to take mvneta* from Linux 4.10, put that in Linux 4.12,
> and see if you can still produce the problem? I'd like to first make
> sure the problem really is inside mvneta, and not in some other place.
> 
> Thanks!
> 
> Thomas