commit-3ac72b7b63d5 breaks networking on iMX28

7 messages, 3 authors, 2016-10-21 · open the first message on its own page

commit-3ac72b7b63d5 breaks networking on iMX28

From: Henri Roosen <hidden>
Date: 2016-10-21 09:19:55

Hi,

Unfortunately commit-3ac72b7b63d5 "net: fec: align IP header in
hardware" breaks networking on an iMX28 system.

The commit seems valid for iMX6, where it is tested okay and solves the
unaligned accesses.

On iMX28 I still see unaligned accesses and networking is broken. Can
anyone confirm this?

Thanks,
Henri

________________________________

Ginzinger electronic systems GmbH
Gewerbegebiet Pirath 16
4952 Weng im Innkreis
www.ginzinger.com

Firmenbuchnummer: FN 364958d
Firmenbuchgericht: Ried im Innkreis
UID-Nr.: ATU66521089


________________________________

Kommende Events:

08.-11. November 2016: Besuchen Sie uns auf der electronica in München -> Halle B1 Stand 538
16. November 2016: Nachmittagsseminar mit unserem Partner Irlbacher zum Thema „Glas als innovatives Material für moderne HMI’s“
17. November 2016: Juristisches Seminar in Linz: Einsatz von Open Source-Software in der Industrie
06. Dezember 2016: Nachmittagsseminar mit unserem Partner sequality software engineering zum Thema Usability
quoted
Weitere Informationen zu diesen Veranstaltungen und Neuigkeiten aus der Elektronikbranche finden Sie auf www.ginzinger.com/techtalk

Re: commit-3ac72b7b63d5 breaks networking on iMX28

From: Fabio Estevam <festevam@gmail.com>
Date: 2016-10-21 10:55:38

Hi Henri,

2016-10-21 7:19 GMT-02:00 Henri Roosen [off-list ref]:
Hi,

Unfortunately commit-3ac72b7b63d5 "net: fec: align IP header in
hardware" breaks networking on an iMX28 system.

The commit seems valid for iMX6, where it is tested okay and solves the
unaligned accesses.

On iMX28 I still see unaligned accesses and networking is broken. Can
anyone confirm this?
Does this fix the problem?
diff --git a/drivers/net/ethernet/freescale/fec_main.c
b/drivers/net/ethernet/freescale/fec_main.c
index 4ce8179..d1cefe1 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -1430,14 +1430,15 @@ fec_enet_rx_queue(struct net_device *ndev, int
budget, u16 queue_id)
                skb_put(skb, pkt_len - 4);
                data = skb->data;

+               if (!is_copybreak && need_swap)
+                       swap_buffer(data, pkt_len);
+
+
 #if !defined(CONFIG_M5272)
                if (fep->quirks & FEC_QUIRK_HAS_RACC)
                        data = skb_pull_inline(skb, 2);
 #endif

-               if (!is_copybreak && need_swap)
-                       swap_buffer(data, pkt_len);
-
                /* Extract the enhanced buffer descriptor */
                ebdp = NULL;
                if (fep->bufdesc_ex)

Re: commit-3ac72b7b63d5 breaks networking on iMX28

From: Henri Roosen <hidden>
Date: 2016-10-21 11:09:44

Hi Fabio,

On 10/21/2016 12:55 PM, Fabio Estevam wrote:
Hi Henri,

2016-10-21 7:19 GMT-02:00 Henri Roosen [off-list ref]:
quoted
Hi,

Unfortunately commit-3ac72b7b63d5 "net: fec: align IP header in
hardware" breaks networking on an iMX28 system.

The commit seems valid for iMX6, where it is tested okay and solves the
unaligned accesses.

On iMX28 I still see unaligned accesses and networking is broken. Can
anyone confirm this?
Does this fix the problem?
Yes, this fixes the problem.
Note: only tested on iMX28.

Thanks,
Henri
quoted hunk
diff --git a/drivers/net/ethernet/freescale/fec_main.c
b/drivers/net/ethernet/freescale/fec_main.c
index 4ce8179..d1cefe1 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -1430,14 +1430,15 @@ fec_enet_rx_queue(struct net_device *ndev, int
budget, u16 queue_id)
                skb_put(skb, pkt_len - 4);
                data = skb->data;

+               if (!is_copybreak && need_swap)
+                       swap_buffer(data, pkt_len);
+
+
 #if !defined(CONFIG_M5272)
                if (fep->quirks & FEC_QUIRK_HAS_RACC)
                        data = skb_pull_inline(skb, 2);
 #endif

-               if (!is_copybreak && need_swap)
-                       swap_buffer(data, pkt_len);
-
                /* Extract the enhanced buffer descriptor */
                ebdp = NULL;
                if (fep->bufdesc_ex)
________________________________

Ginzinger electronic systems GmbH
Gewerbegebiet Pirath 16
4952 Weng im Innkreis
www.ginzinger.com

Firmenbuchnummer: FN 364958d
Firmenbuchgericht: Ried im Innkreis
UID-Nr.: ATU66521089


________________________________

Kommende Events:

08.-11. November 2016: Besuchen Sie uns auf der electronica in München -> Halle B1 Stand 538
16. November 2016: Nachmittagsseminar mit unserem Partner Irlbacher zum Thema „Glas als innovatives Material für moderne HMI’s“
17. November 2016: Juristisches Seminar in Linz: Einsatz von Open Source-Software in der Industrie
06. Dezember 2016: Nachmittagsseminar mit unserem Partner sequality software engineering zum Thema Usability
quoted
Weitere Informationen zu diesen Veranstaltungen und Neuigkeiten aus der Elektronikbranche finden Sie auf www.ginzinger.com/techtalk

Re: commit-3ac72b7b63d5 breaks networking on iMX28

From: Eric Nelson <hidden>
Date: 2016-10-21 13:39:38

Hi Henri,

On 10/21/2016 02:19 AM, Henri Roosen wrote:
Hi,

Unfortunately commit-3ac72b7b63d5 "net: fec: align IP header in
hardware" breaks networking on an iMX28 system.

The commit seems valid for iMX6, where it is tested okay and solves the
unaligned accesses.

On iMX28 I still see unaligned accesses and networking is broken. Can
anyone confirm this?
Reading the i.MX28 reference manual, it appears that this SoC doesn't
have the RACC bit, and I missed removal of the FEC_QUIRK_HAS_RACC flag.

Can you try with this patch?
diff --git a/drivers/net/ethernet/freescale/fec_main.c
b/drivers/net/ethernet/freescale/fec_main.c
index 692ee24..db5eee9 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -96,7 +96,7 @@ static struct platform_device_id fec_devtype[] = {
}, {
.name = "imx28-fec",
.driver_data = FEC_QUIRK_ENET_MAC | FEC_QUIRK_SWAP_FRAME |
- FEC_QUIRK_SINGLE_MDIO | FEC_QUIRK_HAS_RACC,
+ FEC_QUIRK_SINGLE_MDIO,
}, {
.name = "imx6q-fec",
.driver_data = FEC_QUIRK_ENET_MAC | FEC_QUIRK_HAS_GBIT |

Please advise,


Eric

Re: commit-3ac72b7b63d5 breaks networking on iMX28

From: Fabio Estevam <festevam@gmail.com>
Date: 2016-10-21 13:43:51

Hi Eric,

On Fri, Oct 21, 2016 at 11:39 AM, Eric Nelson [off-list ref] wrote:
Reading the i.MX28 reference manual, it appears that this SoC doesn't
have the RACC bit, and I missed removal of the FEC_QUIRK_HAS_RACC flag.
On MX28 the register is called HW_ENET_MAC_IPACCRXCONF.

I sent a patch that fixes the issue.

Re: commit-3ac72b7b63d5 breaks networking on iMX28

From: Eric Nelson <hidden>
Date: 2016-10-21 13:46:49

Hi Henri,

On 10/21/2016 06:39 AM, Eric Nelson wrote:
Hi Henri,

On 10/21/2016 02:19 AM, Henri Roosen wrote:
quoted
Hi,

Unfortunately commit-3ac72b7b63d5 "net: fec: align IP header in
hardware" breaks networking on an iMX28 system.

The commit seems valid for iMX6, where it is tested okay and solves the
unaligned accesses.

On iMX28 I still see unaligned accesses and networking is broken. Can
anyone confirm this?
Reading the i.MX28 reference manual, it appears that this SoC doesn't
have the RACC bit, and I missed removal of the FEC_QUIRK_HAS_RACC flag.
Sorry. I was wrong.

The register (offset 0x1c4) is present, including the SHIFT16 bit, but
the register is named differently (HW_ENET_MAC_IPACCRXCONF).

Re: commit-3ac72b7b63d5 breaks networking on iMX28

From: Eric Nelson <hidden>
Date: 2016-10-21 13:48:38

Thanks Fabio.

On 10/21/2016 06:43 AM, Fabio Estevam wrote:
Hi Eric,

On Fri, Oct 21, 2016 at 11:39 AM, Eric Nelson [off-list ref] wrote:
quoted
Reading the i.MX28 reference manual, it appears that this SoC doesn't
have the RACC bit, and I missed removal of the FEC_QUIRK_HAS_RACC flag.
On MX28 the register is called HW_ENET_MAC_IPACCRXCONF.

I sent a patch that fixes the issue.
I saw that. Nice catch!
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help