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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to