IMX8MPEVK ENET_QOS imx-dwmac Half Duplex Crashes

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

IMX8MPEVK ENET_QOS imx-dwmac Half Duplex Crashes

Jump to solution
1,887 Views
marcelziswiler
Senior Contributor I

Using the latest LF5.15.5_1.0.0 on the IMX8MPEVK trying to use half-duplex e.g. 10baseT/Half or 100baseT/Half crashes the ENET_QOS imx-dwmac driver. Any other link modes including 10baseT/Full and 100baseT/Full seem to work fine. What could be the issue here?

As follows what I did:

root@imx8mpevk:~# ethtool -s eth1 advertise 0x01

And the crash which then happens:

[   38.954591] imx-dwmac 30bf0000.ethernet eth1: Link is Down
[   43.044068] imx-dwmac 30bf0000.ethernet eth1: Link is Up - 10Mbps/Half - flow control off
[   43.052307] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
[   48.535978] ------------[ cut here ]------------
[   48.540620] NETDEV WATCHDOG: eth1 (imx-dwmac): transmit queue 2 timed out
[   48.547501] WARNING: CPU: 2 PID: 182 at net/sched/sch_generic.c:477 dev_watchdog+0x314/0x320   
[   48.555953] Modules linked in: overlay fsl_jr_uio caam_jr caamkeyblob_desc caamhash_desc caamalg_desc crypto_engine rng_core authenc libdes crct10dif_ce dw_hdmi_cec snd_soc_fsl_easrc snd_soc_fsl_asrc snd_soc_fsl_micfil imx8_media_dev(C) snd_soc_fsl_aud2htx snd_soc_fsl_sai snd_soc_fsl_xcvr snd_soc_wm8960 flexcan caam can_dev secvio error snd_soc_fsl_asoc_card snd_soc_imx_card snd_soc_imx_audmux snd_soc_imx_hdmi imx_dsp_rproc fuse
[   48.594030] CPU: 2 PID: 182 Comm: jbd2/mmcblk1p2- Tainted: G         C        5.15.5-lts-next+gc1084c2773fc #1
[   48.604034] Hardware name: NXP i.MX8MPlus EVK board (DT)
[   48.609349] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[   48.616314] pc : dev_watchdog+0x314/0x320
[   48.620329] lr : dev_watchdog+0x314/0x320
[   48.624347] sp : ffff800011dfbd90
[   48.627659] x29: ffff800011dfbd90 x28: ffff0000c07ba940 x27: 0000000000000004
[   48.634810] x26: ffff0000c0f18480 x25: 0000000000000140 x24: 00000000ffffffff
[   48.641954] x23: 0000000000000002 x22: ffff0000c0f183dc x21: ffff800011be6000
[   48.649099] x20: ffff0000c0f18000 x19: 0000000000000002 x18: ffffffffffffffff
[   48.656242] x17: ffff800167a13000 x16: ffff800011dfc000 x15: ffff800091dfbaa7
[   48.663387] x14: 0000000000000000 x13: ffff800011c01e40 x12: 0000000000000645
[   48.670532] x11: 0000000000000217 x10: ffff800011c01e40 x9 : ffff800011c01e40
[   48.677677] x8 : 00000000ffffefff x7 : ffff800011c59e40 x6 : ffff800011c59e40
[   48.684820] x5 : 0000000000000000 x4 : ffff0001793da988 x3 : ffff0001793dd910
[   48.691968] x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff0000c021ee00
[   48.699113] Call trace:
[   48.701560]  dev_watchdog+0x314/0x320
[   48.705230]  call_timer_fn.constprop.0+0x24/0x80
[   48.709855]  __run_timers.part.0+0x1f8/0x230
[   48.714129]  run_timer_softirq+0x40/0x7c
[   48.718055]  _stext+0x12c/0x2a8
[   48.721201]  __irq_exit_rcu+0xe0/0x100
[   48.724957]  irq_exit+0x14/0x2c
[   48.728102]  handle_domain_irq+0x68/0x94
[   48.732030]  gic_handle_irq+0xbc/0x140
[   48.735782]  call_on_irq_stack+0x2c/0x60
[   48.739711]  do_interrupt_handler+0x54/0x60
[   48.743896]  el1_interrupt+0x30/0x80
[   48.747477]  el1h_64_irq_handler+0x1c/0x2c
[   48.751582]  el1h_64_irq+0x78/0x7c
[   48.754989]  dd_request_merge+0x64/0xe0
[   48.758830]  elv_merge+0xe4/0x124
[   48.762151]  blk_mq_sched_try_merge+0x40/0x1e0
[   48.766603]  dd_bio_merge+0x5c/0xac
[   48.770095]  __blk_mq_sched_bio_merge+0x40/0x170
[   48.774715]  blk_mq_submit_bio+0xbc/0x3ec
[   48.778734]  __submit_bio+0x1b4/0x1c0
[   48.782401]  submit_bio_noacct+0x1ec/0x244
[   48.786503]  submit_bio+0x38/0x120
[   48.789912]  submit_bh_wbc+0x15c/0x1dc
[   48.793663]  submit_bh+0x1c/0x30
[   48.796895]  journal_submit_commit_record.part.0.constprop.0+0x214/0x230
[   48.803605]  jbd2_journal_commit_transaction+0x1338/0x1980
[   48.809098]  kjournald2+0xc0/0x270
[   48.812505]  kthread+0x154/0x160
[   48.815741]  ret_from_fork+0x10/0x20
[   48.819320] ---[ end trace 52dd65c78c4a728c ]---
[   48.824006] imx-dwmac 30bf0000.ethernet eth1: Reset adapter.
[   48.833606] imx-dwmac 30bf0000.ethernet eth1: FPE workqueue stop
[   48.935738] imx-dwmac 30bf0000.ethernet eth1: PHY [stmmac-1:01] driver [RTL8211F Gigabit Ethernet] (irq=POLL)
[   48.945676] imx-dwmac 30bf0000.ethernet eth1: configuring for phy/rgmii-id link mode
[   49.071593] imx-dwmac 30bf0000.ethernet eth1: PHY [stmmac-1:01] driver [RTL8211F Gigabit Ethernet] (irq=POLL)
[   49.085871] imx-dwmac 30bf0000.ethernet eth1: Register MEM_TYPE_PAGE_POOL RxQ-0
[   49.093582] imx-dwmac 30bf0000.ethernet eth1: Register MEM_TYPE_PAGE_POOL RxQ-1
[   49.101261] imx-dwmac 30bf0000.ethernet eth1: Register MEM_TYPE_PAGE_POOL RxQ-2
[   49.108986] imx-dwmac 30bf0000.ethernet eth1: Register MEM_TYPE_PAGE_POOL RxQ-3
[   49.116672] imx-dwmac 30bf0000.ethernet eth1: Register MEM_TYPE_PAGE_POOL RxQ-4
[   49.131263] imx-dwmac 30bf0000.ethernet eth1: No Safety Features support found
[   49.138518] imx-dwmac 30bf0000.ethernet eth1: IEEE 1588-2008 Advanced Timestamp supported
[   49.147424] imx-dwmac 30bf0000.ethernet eth1: registered PTP clock
[   49.153752] imx-dwmac 30bf0000.ethernet eth1: FPE workqueue start
[   49.159876] imx-dwmac 30bf0000.ethernet eth1: configuring for phy/rgmii-id link mode
[   49.195623] 8021q: adding VLAN 0 to HW filter on device eth1

I also attached the full log file.

Thanks!

0 Kudos
Reply
1 Solution
1,763 Views
Zhiming_Liu
NXP TechSupport
NXP TechSupport

The half-duplex mode only support single queue.

Eqos ethernet support 5 queues in hardware, so in kernel 5.15.5, it enabled the 5 queues and configure the priority for each queue.

So please apply the attached patch to fix the issue.

 

View solution in original post

0 Kudos
Reply
3 Replies
1,798 Views
marcelziswiler
Senior Contributor I

I meanwhile learned, that half-duplex operation only works with a single transmit queue [1]. Could it be that such configuration differs between L5.10.72 and LF5.15.5_1.0.0?

[1] https://lore.kernel.org/all/36ba455aad3e57c0c1f75cce4ee0f3da69e139a1.camel@toradex.com/

0 Kudos
Reply
1,764 Views
Zhiming_Liu
NXP TechSupport
NXP TechSupport

The half-duplex mode only support single queue.

Eqos ethernet support 5 queues in hardware, so in kernel 5.15.5, it enabled the 5 queues and configure the priority for each queue.

So please apply the attached patch to fix the issue.

 

0 Kudos
Reply
1,826 Views
Zhiming_Liu
NXP TechSupport
NXP TechSupport

This issue can't reproduce in L5.10.72.I will report this issue.

Qmiller_0-1652166964152.png