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-all mailing list