Hi Avi, Thanks for your insights. Since the interrupts are level triggered, we need to unmask the interrupts ASAP to see if we are getting another interrupt. In my ISR, the interrupts are unmasked after processing the packets as shown below: if( status & PKT_RX ) { rtl8139_rx(&rtl8139_netif ); //receive the packet rtl8139_clear_irq(status); //unmask the interrupt } else { ...... Hence in this case when another receive interrupt arises when we are in the middle of receiving the packets that interrupt will not be caught as we did not unmask the interrupt. But in-turn if we unmask the interrupts immediately before receiving the packets as below, I am receiving all the interrupts properly. if( status & PKT_RX ) { rtl8139_clear_irq(status); //unmask the interrupt rtl8139_rx(&rtl8139_netif ); //receive the packet } else { ...... Also I would like to know whether the QEMU RTL8139 card calculates its own checksum for packets, so that I need not do these checks in my LWIP thread? Please let me know. Thanks, karthik -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html