[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <58F9FD64.80506@aoifes.com>
Date: Fri, 21 Apr 2017 14:39:00 +0200
From: Rafa Corvillo <rafael.corvillo@...fes.com>
To: netdev@...r.kernel.org
Subject: [ISSUE: sky2 - rx error] Link stops working under heavy traffic load
connected to a mv88e6176
We are working in an ARMv7 embedded system running kernel 4.9 (LEDE build).
It is an imx6 board with 2 ethernet interfaces. One of them is connected to
a Marvell switch.
The schema of the system is the following:
+-------------------+ eth0
| +--+
| | |
| Embedded system +--+
| |
| ARMv7 |
| | Marvell 88E8057(sky2) +-------------+
| +--+ +--+ +--+ eth1
| | +---------------------+ | | +------+
| +--+ CPU port +--+ mv88e6176 +--+
+------+--+---------+ | |
emulated| | | |
GPIO +--+ +--+ +--+ eth2
MDIO +-----------------------------------+ | | +------+
MDIO +--+ +--+
+-------------+
There is a bridge (br-lan) which includes eth0/eth1/eth2
If I connect the eth1/eth2, the link is up and I can do ping through it.
But, once
I start sending a heavy traffic load the link fails and the kernel sends the
following messages:
[ 48.557140] sky2 0000:04:00.0 marvell: rx error, status 0x5f20010
length 1518
[ 48.564964] sky2 0000:04:00.0 marvell: rx error, status 0x5f20010
length 1518
[ 48.572110] sky2 0000:04:00.0 marvell: rx error, status 0x5f20010
length 1518
[ 48.579263] sky2 0000:04:00.0 marvell: rx error, status 0x5f20010
length 1518
[ 48.586417] sky2 0000:04:00.0 marvell: rx error, status 0x5f20010
length 1518
[ 48.593573] sky2 0000:04:00.0 marvell: rx error, status 0x5f20010
length 1518
[ 48.600718] sky2 0000:04:00.0 marvell: rx error, status 0x5f20010
length 1518
[ 54.877567] net_ratelimit: 6 callbacks suppressed
[ 54.882293] sky2 0000:04:00.0 marvell: rx error, status 0x5f20010
length 1518
[ 61.413552] sky2 0000:04:00.0 marvell: rx error, status 0x5f20010
length 1518
I have a modified device-tree of imx6 which includes the mdio and dsa
nodes. This
device-tree works in a kernel 4.1.6, but I know that these parts of the
kernel have
a lot of changes. The changes included for mdio and dsa in the
device-tree are the
following (diff arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
arch/arm/boot/dts/imx6qdl-gw53xx-mdio.dtsi):
16a17,18
> can0 = &can1;
> ethernet0 = &fec;
21a24
> sky2 = ð1;
24a28,29
> usdhc2 = &usdhc3;
> mdio-gpio0 = &mdio0;
62a68,125
> mdio0: mdio {
> compatible = "virtual,mdio-gpio";
> #address-cells = <1>;
> #size-cells = <0>;
> /* MDC = gpio-17, MDIO = gpio-20 */
> gpios = <&gpio1 17 1
> &gpio1 20 0>;
> ethernet-phy@0 {
> compatible = "marvell,dsa";
> };
> };
>
> dsa {
> compatible = "marvell,dsa";
> #address-cells = <2>;
> #size-cells = <0>;
>
> interrupts = <10>;
> dsa,ethernet = <ð1>;
> dsa,mii-bus = <&mdio0>;
>
> switch@0 {
> #address-cells = <1>;
> #size-cells = <0>;
> reg = <0 0>; /* MDIO address 0, switch 0 in tree */
>
> port@0 {
> reg = <0>;
> label = "cpu";
> };
>
> port@1 {
> reg = <1>;
> label = "eth1";
> };
>
> port@2 {
> reg = <2>;
> label = "eth2";
> };
>
> port@3 {
> reg = <3>;
> label = "eth3";
> };
>
> port@4 {
> reg = <4>;
> label = "eth4";
> };
> };
> };
>
361a425,430
> &mdio0 {
> pinctrl-names = "default";
> pinctrl-0 = <&pinctrl_mdio>;
> status = "okay";
> };
>
363c432
< imx6qdl-gw53xx {
---
> imx6qdl-gw53xx-mdio {
448a518,524
> >;
> };
>
> pinctrl_mdio: mdiogrp {
> fsl,pins = <
> MX6QDL_PAD_SD1_DAT1__GPIO1_IO17 0x1b0b9
> MX6QDL_PAD_SD1_CLK__GPIO1_IO20 0x1b0b9
Do you know of any possible reason why this could be happening?
Thanks in advance.
Rafa
Powered by blists - more mailing lists