I think this behavior is pretty clear from reading the H7 reference
manual. The H7 Ethernet MAC supports only three maximum packet size,
standard (1518 or 1522 if tagged), 2K, and Jumbo (9018 or 9022 if
tagged). The Jumbo packet selection is controlled by settings in registers.
So while 590 is a valid minimum packet size, it is not valid for the H7
(and possibly other MACs). The packet size should be hard coded to 1518
or 1522 for that part (or 9018 or 9022 if Jumbo packet support is needed).
On 3/4/2021 2:46 PM, John Rippetoe wrote:
Hello All,
I've been playing around with networking on the STM32H7 and am seeing
hardfaults that appear to be related to NET_ETH_PKTSIZE. From the log
below, the driver would appear to be dropping packets that are too
large to fit into the default packet size of 590. By increasing the
packet size to the max (1518), the problem seems to disappear, but I
am a little confused why the driver is able to catch the fact that the
received packet was too large and drop it appropriately, but then
crash. After poking around the ethernet driver, I think I understand
the issue to be that because the MAC DMA does not know that the buffer
it is writing into has a size limit, it is overflowing the buffer and
writing into adjacent memory. Am I understanding this correctly?
My main concern here is that increasing NET_ETH_PKTSIZE to the limit
will only hide the issue for a time instead of solving it. A quick
google search does show that the maximum ethernet frame size is 1518
bytes though, so I am working under the assumption that maxing it out
in my config will account for all possible frame sizes and eliminate
this issue. I have no experience with low level networking protocols
and standards, so I thought it would be prudent to seek out additional
help to make sure I am on the right track.
Thanks in advance.
- John
stm32_receive: WARNING: DROPPED Too big: 684
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
stm32_receive: WARNING: DROPPED Too big: 1332
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
stm32_receive: WARNING: DROPPED Too big: 1264
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
stm32_receive: WARNING: DROPPED Too big: 684
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
stm32_receive: WARNING: DROPPED Too big: 1364
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
stm32_receive: WARNING: DROPPED Too big: 1264
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
stm32_receive: WARNING: DROPPED Too big: 1436
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
stm32_receive: WARNING: DROPPED Too big: 1300
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
ipv4_input: WARNING: Not destined for us; not forwardable... Dropping!
up_hardfault: PANIC!!! Hard fault: 40000000
up_assert: Assertion failed at file:armv7-m/up_hardfault.c line: 148
task: lpwork
up_registerdump: R0: 24012080 2401206e 0000024e 00000000 24012000
40029160 24011fc0 00008040
up_registerdump: R8: 40029134 24011f00 24011fe0 240120b8 00000001
38002f88 080a26a7 080a2538
up_registerdump: xPSR: 81000000 BASEPRI: 000000f0 CONTROL: 00000000
up_registerdump: EXC_RETURN: ffffffe9
up_dumpstate: sp: 24010bb0
up_dumpstate: IRQ stack:
up_dumpstate: base: 24010c00
up_dumpstate: size: 00000200
up_dumpstate: used: 00000140
up_stackdump: 24010ba0: 24010bb0 2400e830 0000064c 080a0fed 000000f0
00000000 240120b8 00000001
up_stackdump: 24010bc0: 38002f88 080a26a7 080a2538 0816625a 00000000
080a129f 080a1271 080f754f
up_stackdump: 24010be0: 000000f0 080a2935 000000f0 38002eb4 40029160
24011fc0 00008040 080a1b8f
up_dumpstate: sp: 38002f88
up_dumpstate: User stack:
up_dumpstate: base: 38003008
up_dumpstate: size: 0000064c
up_dumpstate: used: 000003e0
up_stackdump: 38002f80: 00000010 080a269b 24012050 24012000 00000000
24012010 2400b430 00000000
up_stackdump: 38002fa0: 000000f0 00000080 00000000 00000000 00005ec8
0809d2e7 ffffffff ffffffff
up_stackdump: 38002fc0: 00005ec8 00000001 00000010 00020000 39276cac
2400b430 00000000 00000000
up_stackdump: 38002fe0: 00000000 00000000 00000000 00000000 00000000
0809c501 0809c4f1 0809bed5
up_stackdump: 38003000: 00000000 00000000 deadbeef 38003014 00000000
6f77706c de006b72 7b93d153
up_taskdump: Idle Task: PID=0 Stack Used=0 of 0
up_taskdump: hpwork: PID=1 Stack Used=352 of 2028
up_taskdump: lpwork: PID=2 Stack Used=992 of 1612
up_taskdump: init: PID=3 Stack Used=1544 of 2980
CONFIDENTIALITY NOTICE: This communication may contain private,
confidential and privileged material for the sole use of the intended
recipient. If you are not the intended recipient, please delete this
e-mail and any attachments permanently.