On 1.6.2022. 11:21, Jan Klemkow wrote:
> I moved the switch to ifconfig(8) in the diff below.
>
> # ifconfig ix0 tso
> # ifconfig ix0 -tso
>
> I named it tso (TCP segment offloading), so I can reuse this switch
> also for the sending part. TSO is the combination of LRO and LSO.
>
> LRO: Large Receive Offloading
> LSO: Large Send Offloading
>
> RSC (Receive Side Coalescing) is an alternative term for LRO, which is
> used by the spec of ix(4) NICs.
>
>>> Tests with other ix(4) NICs are welcome and needed!
>> We'll try and kick it around at work in the next week or so.
Hi all,
I've put this diff in production on clean source from this morning and
got panic. I'm not 100% sure if it's because of TSO because in a last
monts i had all kinds of diffs on production boxes.
Now I will run spanshot maybe clean spanshot will panic :))
I've couldn't trigger panic with TSO diff in lab ..
panic:
bcbnfw1# panic: kernel diagnostic assertion "m->m_len >= ETHER_HDR_LEN"
failed: file "/sys/net/bpf.c", line 1489
Stopped at db_enter+0x10: popq %rbp
TID PID UID PRFLAGS PFLAGS CPU COMMAND
444766 59724 0 0x14000 0x200 1 softnet
db_enter() at db_enter+0x10
panic(ffffffff81f25898) at panic+0xbf
__assert(ffffffff81f99ec1,ffffffff81fd1b33,5d1,ffffffff81f465eb) at
__assert+0x25
bpf_mtap_ether(ffff800000489600,fffffd80610e0f00,1) at bpf_mtap_ether+0xef
ifiq_input(ffff80000048eb00,ffff800020b59b10) at ifiq_input+0xf3
ixgbe_rxeof(ffff80000048d3a0) at ixgbe_rxeof+0x32b
ixgbe_queue_intr(ffff80000048ab00) at ixgbe_queue_intr+0x3c
intr_handler(ffff800020b59c50,ffff80000045dd00) at intr_handler+0x6e
Xintr_ioapic_edge0_untramp() at Xintr_ioapic_edge0_untramp+0x18f
acpicpu_idle() at acpicpu_idle+0x203
sched_idle(ffff800020892ff0) at sched_idle+0x280
end trace frame: 0x0, count: 4
https://www.openbsd.org/ddb.html describes the minimum info required in
bug reports. Insufficient info makes it difficult to find and fix bugs.
ddb{2}>
ddb{2}> show reg
rdi 0
rsi 0x14
rbp 0xffff800020b59930
rbx 0xfffffd80610e0f00
rdx 0xc800000000000000
rcx 0x282
rax 0x68
r8 0x101010101010101
r9 0
r10 0xd410e1bbe041370a
r11 0xff1c7218c30edf0a
r12 0xffff800020893a60
r13 0xffff800020b59a90
r14 0
r15 0xffffffff81f25898 cmd0646_9_tim_udma+0x29032
rip 0xffffffff81813a30 db_enter+0x10
cs 0x8
rflags 0x286
rsp 0xffff800020b59930
ss 0x10
db_enter+0x10: popq %rbp
ddb{2}> ps
PID TID PPID UID S FLAGS WAIT COMMAND
58540 192000 34045 0 3 0x100083 ttyin ksh
34045 380261 43095 1000 3 0x10008b sigsusp ksh
43095 382180 79096 1000 3 0x98 kqread sshd
79096 410005 83400 0 3 0x82 kqread sshd
67346 388175 1 0 3 0x100083 ttyin ksh
1576 379710 1 0 3 0x100098 kqread cron
80308 475205 63710 720 3 0x1000090 kqread lldpd
63710 264590 1 0 3 0x80 netio lldpd
70690 148684 79519 95 3 0x1100092 kqread smtpd
96229 368855 79519 103 3 0x1100092 kqread smtpd
57602 230927 79519 95 3 0x1100092 kqread smtpd
27959 412218 79519 95 3 0x100092 kqread smtpd
68321 253958 79519 95 3 0x1100092 kqread smtpd
15048 386230 79519 95 3 0x1100092 kqread smtpd
79519 40897 1 0 3 0x100080 kqread smtpd
81998 89562 1 77 3 0x1100090 kqread dhcpd
30223 19018 1 0 3 0x100080 kqread snmpd
16185 104619 1 91 3 0x1000092 kqread snmpd
83400 393345 1 0 3 0x88 kqread sshd
59135 14654 1 0 3 0x100080 kqread ntpd
93144 455149 50136 83 3 0x100092 kqread ntpd
50136 231167 1 83 3 0x1100092 kqread ntpd
26285 193609 59081 74 3 0x1100092 bpf pflogd
59081 514111 1 0 3 0x80 netio pflogd
90237 222054 74741 73 3 0x1100090 kqread syslogd
74741 91812 1 0 3 0x100082 netio syslogd
50581 332657 0 0 3 0x14200 bored smr
11773 152326 0 0 3 0x14200 pgzero zerothread
45553 54153 0 0 3 0x14200 aiodoned aiodoned
31391 475879 0 0 3 0x14200 syncer update
44830 301726 0 0 3 0x14200 cleaner cleaner
62337 61034 0 0 3 0x14200 reaper reaper
97528 277547 0 0 3 0x14200 pgdaemon pagedaemon
8642 410255 0 0 3 0x14200 usbtsk usbtask
60253 392680 0 0 3 0x14200 usbatsk usbatsk
67488 412772 0 0 3 0x40014200 acpi0 acpi0
78574 213151 0 0 7 0x40014200 idle5
38532 257511 0 0 7 0x40014200 idle4
2995 160082 0 0 7 0x40014200 idle3
*61107 266595 0 0 7 0x40014200 idle2
61648 111464 0 0 3 0x40014200 idle1
73357 179412 0 0 3 0x14200 bored sensors
795 291032 0 0 3 0x14200 bored softnet
64195 36622 0 0 3 0x14200 bored softnet
18139 172154 0 0 2 0x14200 softnet
59724 444766 0 0 7 0x14200 softnet
65453 160263 0 0 3 0x14200 bored systqmp
60584 441650 0 0 3 0x14200 bored systq
32410 154196 0 0 3 0x40014200 bored softclock
34259 356840 0 0 7 0x40014200 idle0
1 235309 0 0 3 0x82 wait init
0 0 -1 0 3 0x10200 scheduler swapper
ddb{2}> ps /o
TID PID UID PRFLAGS PFLAGS CPU COMMAND
444766 59724 0 0x14000 0x200 1 softnet
ddb{2}> trace /t 0t444766
end trace frame: 0x0, count: -1
ddb{2}>
ddb{2}> mach ddbcpu 0
Stopped at x86_ipi_db+0x12: leave
x86_ipi_db(ffffffff822a0ff0) at x86_ipi_db+0x12
x86_ipi_handler() at x86_ipi_handler+0x80
Xresume_lapic_ipi() at Xresume_lapic_ipi+0x23
_kernel_lock() at _kernel_lock+0xa0
softintr_dispatch(0) at softintr_dispatch+0x49
Xsoftclock() at Xsoftclock+0x1f
acpicpu_idle() at acpicpu_idle+0x203
sched_idle(ffffffff822a0ff0) at sched_idle+0x280
end trace frame: 0x0, count: 7
ddb{0}> mach ddbcpu 1
Stopped at x86_ipi_db+0x12: leave
x86_ipi_db(ffff800020889ff0) at x86_ipi_db+0x12
x86_ipi_handler() at x86_ipi_handler+0x80
Xresume_lapic_ipi() at Xresume_lapic_ipi+0x23
_kernel_lock() at _kernel_lock+0xa0
ether_resolve(ffff800000bd5000,fffffd80713d6b00,ffff80000147e1d0,fffffd887d6b53
30,ffff800020b32ea8) at ether_resolve+0x1ad
ether_output(ffff800000bd5000,fffffd80713d6b00,ffff80000147e1d0,fffffd887d6b5330)
at ether_output+0x2c
ip_output(fffffd80713d6b00,0,ffff800020b33128,1,0,0,3b3b3b29baa99d66) at
ip_output+0xaec
ip_forward(fffffd80713d6b00,ffff800000bc0800,fffffd887d6b5330,0) at
ip_forward+0x2da
ip_input_if(ffff800020b33268,ffff800020b33274,4,0,ffff800000bc0800) at
ip_input_if+0x353
ipv4_input(ffff800000bc0800,fffffd80650c7500) at ipv4_input+0x39
ether_input(ffff800000bc0800,fffffd80650c7500) at ether_input+0x3ad
carp_input(ffff800000bd7800,fffffd80650c7500,5e00010d) at carp_input+0x196
ether_input(ffff800000bd7800,fffffd80650c7500) at ether_input+0x1d9
vlan_input(ffff800000ba1000,fffffd80650c7500,ffff800020b3349c) at
vlan_input+0x23d
end trace frame: 0xffff800020b334e0, count: 0
ddb{1}> mach ddbcpu 2
Stopped at db_enter+0x10: popq %rbp
db_enter() at db_enter+0x10
panic(ffffffff81f25898) at panic+0xbf
__assert(ffffffff81f99ec1,ffffffff81fd1b33,5d1,ffffffff81f465eb) at
__assert+0x25
bpf_mtap_ether(ffff800000489600,fffffd80610e0f00,1) at bpf_mtap_ether+0xef
ifiq_input(ffff80000048eb00,ffff800020b59b10) at ifiq_input+0xf3
ixgbe_rxeof(ffff80000048d3a0) at ixgbe_rxeof+0x32b
ixgbe_queue_intr(ffff80000048ab00) at ixgbe_queue_intr+0x3c
intr_handler(ffff800020b59c50,ffff80000045dd00) at intr_handler+0x6e
Xintr_ioapic_edge0_untramp() at Xintr_ioapic_edge0_untramp+0x18f
acpicpu_idle() at acpicpu_idle+0x203
sched_idle(ffff800020892ff0) at sched_idle+0x280
end trace frame: 0x0, count: 4
ddb{2}> mach ddbcpu 3
Stopped at x86_ipi_db+0x12: leave
x86_ipi_db(ffff80002089bff0) at x86_ipi_db+0x12
x86_ipi_handler() at x86_ipi_handler+0x80
Xresume_lapic_ipi() at Xresume_lapic_ipi+0x23
acpicpu_idle() at acpicpu_idle+0x203
sched_idle(ffff80002089bff0) at sched_idle+0x280
end trace frame: 0x0, count: 10
ddb{3}> mach ddbcpu 4
Stopped at x86_ipi_db+0x12: leave
x86_ipi_db(ffff8000208a4ff0) at x86_ipi_db+0x12
x86_ipi_handler() at x86_ipi_handler+0x80
Xresume_lapic_ipi() at Xresume_lapic_ipi+0x23
acpicpu_idle() at acpicpu_idle+0x203
sched_idle(ffff8000208a4ff0) at sched_idle+0x280
end trace frame: 0x0, count: 10
ddb{4}> mach ddbcpu 5
Stopped at x86_ipi_db+0x12: leave
x86_ipi_db(ffff8000208adff0) at x86_ipi_db+0x12
x86_ipi_handler() at x86_ipi_handler+0x80
Xresume_lapic_ipi() at Xresume_lapic_ipi+0x23
acpicpu_idle() at acpicpu_idle+0x203
sched_idle(ffff8000208adff0) at sched_idle+0x280
end trace frame: 0x0, count: 10
ddb{5}>