diff options
author | David Gwynne <dlg@cvs.openbsd.org> | 2019-03-04 21:57:17 +0000 |
---|---|---|
committer | David Gwynne <dlg@cvs.openbsd.org> | 2019-03-04 21:57:17 +0000 |
commit | d932e2640e457a6e6cdb1ada8ce79edb53fc1844 (patch) | |
tree | 6b806ed168f008133968965ae1cf2191a67ff964 /sys/dev/isa/vga_isavar.h | |
parent | 2d2e21a682804d2d1624fc465a5b11736c05ac56 (diff) |
move back to ifiq_input counting packets instead of queue operations.
the backpressure seems to have kicked in too early, introducing a
lot of packet loss where there wasn't any before. secondly, counting
operations interacted extremely badly with pseudo-interfaces. for
example, if you have a physical interface that rxes 100 vlan
encapsulated packets, it will call ifiq_input once for all 100
packets. when the network stack is running vlan_input against thes
packets, vlan_input will take the packet and call ifiq_input against
each of them. because the stack is running packets on the parent
interface, it can't run the packets on the vlan interface, so you
end up with ifiq_input being called 100 times, and we dropped packets
after 16 calls to ifiq_input without a matching run of the stack.
chris cappuccio hit some weird stuff too.
discussed with claudio@
Diffstat (limited to 'sys/dev/isa/vga_isavar.h')
0 files changed, 0 insertions, 0 deletions