Part Number: TDA4VM
Hi,
We are using fast-rtps in our application. Fast-rtps is a tool base on UDP broadcast. But the kernel will dump much error log when using fast-rtps.
We can use iperf3 to replicate this situation instead fast-rtps.
Keep TDA4 and a PC into a same network.
In TDA4, execute follow command as a iperf3 server.
iperf3 -s
In PC, execute follow cammand to send some udp package to server.(My TDA4 ip address is 172.16.0.254)
iperf3 -c 172.16.0.254 -u
Then the kernel will dump very much error log in UART console. I copy part of it here.
[ 56.311926] eth0: hw csum failure [ 56.315234] skb len=8220 headroom=78 headlen=1500 tailroom=0 [ 56.315234] mac=(64,14) net=(78,20) trans=98 [ 56.315234] shinfo(txflags=0 nr_frags=0 gso(size=0 type=0 segs=0)) [ 56.315234] csum(0x2a203a59 ip_summed=2 complete_sw=0 valid=0 level=0) [ 56.315234] hash(0x0 sw=0 l4=0) proto=0x0800 pkttype=0 iif=2 [ 56.343417] dev name=eth0 feat=0x0x0001008000004a09 [ 56.348283] skb linear: 00000000: 45 00 20 1c 5a 65 00 00 40 11 a7 21 ac 10 00 2c [ 56.355922] skb linear: 00000010: ac 10 00 fe a7 c8 14 51 20 08 14 0e 5f a3 4e 93 [ 56.363561] skb linear: 00000020: 00 09 70 5f 00 00 00 0d f0 ef 02 81 d0 c5 56 d7 [ 56.371199] skb linear: 00000030: bd b3 1a 96 f7 f2 ac 03 19 9b b8 f8 7d d5 14 bd [ 56.378846] skb linear: 00000040: 5b 1f f9 e1 9a 75 21 8a 64 23 0b 34 e8 61 0b a5 [ 56.386486] skb linear: 00000050: 14 26 3b 0b 18 e7 0e 31 82 c7 2a 00 9c 3e bd f7 [ 56.394125] skb linear: 00000060: 5e b6 d9 f8 2b fa 82 8f 1d 8d c3 05 ee cf aa 02 [ 56.401763] skb linear: 00000070: f5 e5 0d 0d cc 1c 3e 4e e3 68 4e 7f a7 0b 76 05 [ 56.409401] skb linear: 00000080: c1 4f fd ec 49 7f 7b 66 0c 3f 6b fa 0e 15 fc 03 [ 56.417039] skb linear: 00000090: fa 09 10 c6 25 4e 15 08 b7 63 87 5e 6f fe 63 30 [ 56.424678] skb linear: 000000a0: 4d 60 1d 97 df 98 fd eb d7 69 e5 e5 7e e1 e8 79 [ 56.432316] skb linear: 000000b0: ea f8 3f 10 47 54 18 fe b8 a0 5c 27 9e bf 57 eb [ 56.439954] skb linear: 000000c0: 1f 74 82 fe 0d 80 e9 e4 e9 ce ca 67 af b2 e0 99 [ 56.447593] skb linear: 000000d0: ab 20 a9 f2 74 c2 f0 2c 62 4c 53 00 0b ab eb 2a [ 56.455231] skb linear: 000000e0: 1f 6e 28 2c ee 11 11 d7 df db 3e 8e 8d 1f 27 38 [ 56.462869] skb linear: 000000f0: 3f d1 2a b3 93 1a e0 f5 66 33 f5 71 de e0 9b fe [ 56.470507] skb linear: 00000100: 4e c3 2a 3c d4 3b 13 b3 16 52 41 a4 71 69 dc b0 [ 56.478146] skb linear: 00000110: 3a 07 63 cd 21 43 c2 88 77 b7 f9 55 97 95 53 e6 [ 56.485784] skb linear: 00000120: 58 7e 22 2d b9 36 e0 d0 88 22 74 f9 8b 50 a9 c5 [ 56.493426] CPU: 0 PID: 9 Comm: ksoftirqd/0 Tainted: G O 5.4.40-g66cf445b76 #1 [ 56.501927] Hardware name: Texas Instruments K3 J721E SoC (DT) [ 56.507740] Call trace: [ 56.510179] dump_backtrace+0x0/0x140 [ 56.513826] show_stack+0x14/0x20 [ 56.517129] dump_stack+0xb4/0xf8 [ 56.520430] netdev_rx_csum_fault.part.0+0x44/0x54 [ 56.525204] netdev_rx_csum_fault+0x34/0x38 [ 56.529372] __skb_checksum_complete+0xf8/0x100 [ 56.533888] nf_ip_checksum+0x70/0x140 [ 56.537622] nf_checksum+0x40/0x50 [ 56.541022] nf_conntrack_udp_packet+0x20c/0x278 [nf_conntrack] [ 56.546930] nf_conntrack_in+0x190/0x7f8 [nf_conntrack] [ 56.552143] ipv4_conntrack_in+0x14/0x20 [nf_conntrack] [ 56.557351] nf_hook_slow+0x50/0xe8 [ 56.560825] ip_rcv+0xc0/0xf8 [ 56.563780] __netif_receive_skb_one_core+0x50/0x78 [ 56.568642] __netif_receive_skb+0x14/0x60 [ 56.572723] netif_receive_skb_internal+0x34/0xc0 [ 56.577410] napi_gro_receive+0x64/0xc8 [ 56.581232] am65_cpsw_nuss_rx_poll+0x194/0x368 [ 56.585746] net_rx_action+0x114/0x340 [ 56.589480] __do_softirq+0x120/0x23c [ 56.593127] run_ksoftirqd+0x3c/0x50 [ 56.596689] smpboot_thread_fn+0x1e4/0x2a8 [ 56.600769] kthread+0xf0/0x120 [ 56.603896] ret_from_fork+0x10/0x18
If using TCP instead UDP to test, it's normal.
iperf3 -c 172.16.0.254
Could you tell me how to solve this problem?
Regards