Index: if_em.c =================================================================== RCS file: /private/FreeBSD/src/sys/dev/em/if_em.c,v retrieving revision 1.61 diff -u -p -r1.61 if_em.c --- if_em.c 4 Feb 2005 18:36:04 -0000 1.61 +++ if_em.c 17 Feb 2005 14:59:56 -0000 @@ -2766,11 +2766,14 @@ em_process_receive_interrupts(struct ada u_int8_t eop = 0; u_int16_t len, desc_len, prev_len_adj; int i; + static int busy = 0; /* Pointer to the receive descriptor being examined. */ struct em_rx_desc *current_desc; mtx_assert(&adapter->mtx, MA_OWNED); + if (busy) + return; ifp = &adapter->interface_data.ac_if; i = adapter->next_rx_desc_to_check; @@ -2894,9 +2897,11 @@ em_process_receive_interrupts(struct ada adapter->fmp = NULL); if (adapter->fmp != NULL) { + busy = 1; EM_UNLOCK(adapter); (*ifp->if_input)(ifp, adapter->fmp); EM_LOCK(adapter); + busy = 0; } #endif adapter->fmp = NULL;