Date: Fri, 14 Oct 2005 11:00:16 +0000 (UTC) From: Gleb Smirnoff <glebius@FreeBSD.org> To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/dev/em if_em.c Message-ID: <200510141100.j9EB0HbQ040787@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200510141100.j9EB0HbQ040787>