mbox series

[RFC,net-next,v2,00/14] net: stmmac: Selftests

Message ID cover.1557848472.git.joabreu@synopsys.com
Headers show
Series net: stmmac: Selftests | expand

Message

Jose Abreu May 14, 2019, 3:45 p.m. UTC
[ Submitting with net-next closed for proper review and testing. ]

This introduces selftests support in stmmac driver. We add 9 basic sanity
checks and MAC loopback support for all cores within the driver. This way
more tests can easily be added in the future and can be run in virtually
any MAC/GMAC/QoS/XGMAC platform.

Having this we can find regressions and missing features in the driver
while at the same time we can check if the IP is correctly working.

We have been using this for some time now and I do have more tests to
submit in the feature. My experience is that although writing the tests
adds more development time, the gain results are obvious.

I let this feature optional within the driver under a Kconfig option.

Cc: Joao Pinto <jpinto@synopsys.com>
Cc: David S. Miller <davem@davemloft.net>
Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Cc: Alexandre Torgue <alexandre.torgue@st.com>
Cc: Corentin Labbe <clabbe.montjoie@gmail.com>
Cc: Andrew Lunn <andrew@lunn.ch>

Corentin Labbe (1):
  net: ethernet: stmmac: dwmac-sun8i: Enable control of loopback

Jose Abreu (13):
  net: stmmac: Add MAC loopback callback to HWIF
  net: stmmac: dwmac100: Add MAC loopback support
  net: stmmac: dwmac1000: Add MAC loopback support
  net: stmmac: dwmac4/5: Add MAC loopback support
  net: stmmac: dwxgmac2: Add MAC loopback support
  net: stmmac: Switch MMC functions to HWIF callbacks
  net: stmmac: dwmac1000: Also pass control frames while in promisc mode
  net: stmmac: dwmac4/5: Also pass control frames while in promisc mode
  net: stmmac: dwxgmac2: Also pass control frames while in promisc mode
  net: stmmac: Introduce selftests support
  net: stmmac: dwmac1000: Fix Hash Filter
  net: stmmac: dwmac1000: Clear unused address entries
  net: stmmac: dwmac4/5: Fix Hash Filter

 drivers/net/ethernet/stmicro/stmmac/Kconfig        |   9 +
 drivers/net/ethernet/stmicro/stmmac/Makefile       |   2 +
 drivers/net/ethernet/stmicro/stmmac/common.h       |   1 +
 drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c  |  13 +
 drivers/net/ethernet/stmicro/stmmac/dwmac1000.h    |   1 +
 .../net/ethernet/stmicro/stmmac/dwmac1000_core.c   |  22 +-
 .../net/ethernet/stmicro/stmmac/dwmac100_core.c    |  13 +
 drivers/net/ethernet/stmicro/stmmac/dwmac4.h       |   3 +
 drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c  |  19 +-
 drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h     |   2 +
 .../net/ethernet/stmicro/stmmac/dwxgmac2_core.c    |  15 +-
 drivers/net/ethernet/stmicro/stmmac/hwif.c         |   9 +
 drivers/net/ethernet/stmicro/stmmac/hwif.h         |  21 +
 drivers/net/ethernet/stmicro/stmmac/mmc.h          |   4 -
 drivers/net/ethernet/stmicro/stmmac/mmc_core.c     |  13 +-
 drivers/net/ethernet/stmicro/stmmac/stmmac.h       |  22 +
 .../net/ethernet/stmicro/stmmac/stmmac_ethtool.c   |   8 +-
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c  |   4 +-
 .../net/ethernet/stmicro/stmmac/stmmac_selftests.c | 846 +++++++++++++++++++++
 19 files changed, 1014 insertions(+), 13 deletions(-)
 create mode 100644 drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c

Comments

David Miller May 14, 2019, 6:09 p.m. UTC | #1
From: Jose Abreu <Jose.Abreu@synopsys.com>
Date: Tue, 14 May 2019 17:45:22 +0200

> [ Submitting with net-next closed for proper review and testing. ]
> 
> This introduces selftests support in stmmac driver. We add 9 basic sanity
> checks and MAC loopback support for all cores within the driver. This way
> more tests can easily be added in the future and can be run in virtually
> any MAC/GMAC/QoS/XGMAC platform.
> 
> Having this we can find regressions and missing features in the driver
> while at the same time we can check if the IP is correctly working.
> 
> We have been using this for some time now and I do have more tests to
> submit in the feature. My experience is that although writing the tests
> adds more development time, the gain results are obvious.
> 
> I let this feature optional within the driver under a Kconfig option.

Generally, this series looks fine to me.
Corentin Labbe May 15, 2019, 5:29 p.m. UTC | #2
On Tue, May 14, 2019 at 05:45:22PM +0200, Jose Abreu wrote:
> [ Submitting with net-next closed for proper review and testing. ]
> 
> This introduces selftests support in stmmac driver. We add 9 basic sanity
> checks and MAC loopback support for all cores within the driver. This way
> more tests can easily be added in the future and can be run in virtually
> any MAC/GMAC/QoS/XGMAC platform.
> 
> Having this we can find regressions and missing features in the driver
> while at the same time we can check if the IP is correctly working.
> 
> We have been using this for some time now and I do have more tests to
> submit in the feature. My experience is that although writing the tests
> adds more development time, the gain results are obvious.
> 
> I let this feature optional within the driver under a Kconfig option.
> 
> Cc: Joao Pinto <jpinto@synopsys.com>
> Cc: David S. Miller <davem@davemloft.net>
> Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
> Cc: Alexandre Torgue <alexandre.torgue@st.com>
> Cc: Corentin Labbe <clabbe.montjoie@gmail.com>
> Cc: Andrew Lunn <andrew@lunn.ch>
> 
> Corentin Labbe (1):
>   net: ethernet: stmmac: dwmac-sun8i: Enable control of loopback
> 
> Jose Abreu (13):
>   net: stmmac: Add MAC loopback callback to HWIF
>   net: stmmac: dwmac100: Add MAC loopback support
>   net: stmmac: dwmac1000: Add MAC loopback support
>   net: stmmac: dwmac4/5: Add MAC loopback support
>   net: stmmac: dwxgmac2: Add MAC loopback support
>   net: stmmac: Switch MMC functions to HWIF callbacks
>   net: stmmac: dwmac1000: Also pass control frames while in promisc mode
>   net: stmmac: dwmac4/5: Also pass control frames while in promisc mode
>   net: stmmac: dwxgmac2: Also pass control frames while in promisc mode
>   net: stmmac: Introduce selftests support
>   net: stmmac: dwmac1000: Fix Hash Filter
>   net: stmmac: dwmac1000: Clear unused address entries
>   net: stmmac: dwmac4/5: Fix Hash Filter
> 
>  drivers/net/ethernet/stmicro/stmmac/Kconfig        |   9 +
>  drivers/net/ethernet/stmicro/stmmac/Makefile       |   2 +
>  drivers/net/ethernet/stmicro/stmmac/common.h       |   1 +
>  drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c  |  13 +
>  drivers/net/ethernet/stmicro/stmmac/dwmac1000.h    |   1 +
>  .../net/ethernet/stmicro/stmmac/dwmac1000_core.c   |  22 +-
>  .../net/ethernet/stmicro/stmmac/dwmac100_core.c    |  13 +
>  drivers/net/ethernet/stmicro/stmmac/dwmac4.h       |   3 +
>  drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c  |  19 +-
>  drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h     |   2 +
>  .../net/ethernet/stmicro/stmmac/dwxgmac2_core.c    |  15 +-
>  drivers/net/ethernet/stmicro/stmmac/hwif.c         |   9 +
>  drivers/net/ethernet/stmicro/stmmac/hwif.h         |  21 +
>  drivers/net/ethernet/stmicro/stmmac/mmc.h          |   4 -
>  drivers/net/ethernet/stmicro/stmmac/mmc_core.c     |  13 +-
>  drivers/net/ethernet/stmicro/stmmac/stmmac.h       |  22 +
>  .../net/ethernet/stmicro/stmmac/stmmac_ethtool.c   |   8 +-
>  drivers/net/ethernet/stmicro/stmmac/stmmac_main.c  |   4 +-
>  .../net/ethernet/stmicro/stmmac/stmmac_selftests.c | 846 +++++++++++++++++++++
>  19 files changed, 1014 insertions(+), 13 deletions(-)
>  create mode 100644 drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
> 
> -- 
> 2.7.4
> 

Tested-by: Corentin LABBE <clabbe.montjoie@gmail.com>
Tested-on: sun7i-a20-cubieboard2
Tested-on: sun50i-a64-bananapi-m64
Tested-on: meson-gxl-s905x-libretech-cc

For information the output is:
On sun50i-a64-bananapi-m64
ethtool --test eth0 offline
The test result is PASS
The test extra info:
 1. MAC Loopback         	 0
 2. PHY Loopback         	 -95
 3. MMC Counters         	 -95
 4. EEE                  	 -95
 5. Hash Filter MC       	 0
 6. Perfect Filter UC    	 0
 7. MC Filter            	 0
 8. UC Filter            	 0
 9. Flow Control         	 -95
with onine I got
dwmac-sun8i 1c30000.ethernet eth0: Only offline tests are supported

on sun7i-a20-cubieboard2:
ethtool --test eth0 offline
The test result is PASS
The test extra info:
 1. MAC Loopback         	 0
 2. PHY Loopback         	 -95
 3. MMC Counters         	 -95
 4. EEE                  	 -95
 5. Hash Filter MC       	 0
 6. Perfect Filter UC    	 0
 7. MC Filter            	 0
 8. UC Filter            	 0
 9. Flow Control         	 -95
With online I got:
sun7i-dwmac 1c50000.ethernet eth0: Only offline tests are supported

on meson-gxl-s905x-libretech-cc:
ethtool --test eth0 offline
The test result is FAIL
The test extra info:
 1. MAC Loopback         	 0
 2. PHY Loopback         	 -95
 3. MMC Counters         	 -1
 4. EEE                  	 -95
 5. Hash Filter MC       	 0
 6. Perfect Filter UC    	 0
 7. MC Filter            	 0
 8. UC Filter            	 0
 9. Flow Control         	 -95
with onine I got
meson8b-dwmac c9410000.ethernet eth0: Only offline tests are supported

I will try to investigate the MMC failure. Does -1 (vs other -EXXXX) is the right error code to return from the driver ?
Jose Abreu May 16, 2019, 7:52 a.m. UTC | #3
From: Corentin Labbe <clabbe.montjoie@gmail.com>
Date: Wed, May 15, 2019 at 18:29:22

> I will try to investigate the MMC failure. Does -1 (vs other -EXXXX) is the right error code to return from the driver ?

Thank you for testing!

Yes, I will fix to return a valid error code.

As per MMC failure this can be due to your HW not having all MMC counters 
available. Can you please remove all if conditions in stmmac_test_mmc() 
and just leave the "mmc_tx_framecount_g" check ?

Thanks,
Jose Miguel Abreu