cvs commit: src/sys/dev/em if_em.c
Gleb Smirnoff
glebius at FreeBSD.org
Fri Oct 14 04:00:18 PDT 2005
glebius 2005-10-14 11:00:16 UTC
FreeBSD src repository
Modified files:
sys/dev/em if_em.c
Log:
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>
Revision Changes Path
1.77 +14 -14 src/sys/dev/em/if_em.c
More information about the cvs-src
mailing list