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!
Solved! Go to Solution.
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.
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/
This issue can't reproduce in L5.10.72.I will report this issue.