diff options
author | glebius <glebius@FreeBSD.org> | 2005-10-14 11:00:15 +0000 |
---|---|---|
committer | glebius <glebius@FreeBSD.org> | 2005-10-14 11:00:15 +0000 |
commit | 128747ab0bc149174ba589e08ed1040963a16ad4 (patch) | |
tree | d8875689e5cc44db21b5a1a58080b04edbd06857 /sys/i386/linux/linux_sysvec.c | |
parent | f88edf5964f8c2c110a224d702eb60d0d6f50979 (diff) | |
download | FreeBSD-src-128747ab0bc149174ba589e08ed1040963a16ad4.zip FreeBSD-src-128747ab0bc149174ba589e08ed1040963a16ad4.tar.gz |
From the PR:
The receive function em_process_receive_interrupts() unlocks the
adapter while ether_input() processes the packet, and then locks
it back. In the meantime, em_init() may be called, either from
em_watchdog() from softclock interrupt or from the ifconfig(8)
program. The em_init() resets the card, in particular it sets
adapter->next_rx_desc_to_check to 0 and resets hardware RX Head
and Tail descriptor pointers. The loop in
em_process_receive_interrupts() does not expect these things to
change, and a mess may result.
This fixes long wedges of em(4) interfaces receive part under high
load and IP fastforwarding enabled.
PR: kern/87418
Submitted by: Dmitrij Tejblum <tejblum yandex-team.ru>
Diffstat (limited to 'sys/i386/linux/linux_sysvec.c')
0 files changed, 0 insertions, 0 deletions