There are many design decisions in the driver that depend on NAPI.  If you 
disable it, the driver won't work, and even then you won't be guaranteed to get 
one interrupt for every tx or rx packet.  Sometimes you will be processing 
packets with interrupts disabled and another packet will arrive.

If you need an example of NAPI enable/disable, you may be able to look back 
either in the sourceforge e100 source code (I don't remember if we have 
non-NAPI there), but for sure there are NAPI defines in e1000 where you could 
compare the code differences for NAPI vs non-NAPI.

Jesse

-----Original Message-----
From: Vikram Narayanan [mailto:[email protected]] 
Sent: Tuesday, January 25, 2011 5:37 AM
To: [email protected]
Subject: Re: [E1000-devel] System freeze while loading e100 driver

Hi,
I managed to find the cause for the crash.
In function e100_up(), the last few lines of code says,

    napi_enable(&nic->napi);
    /* enable ints _after_ enabling poll, preventing a race between
     * disable ints+schedule */
    e100_enable_irq(nic);

In my implementation, I need to have interrupts for every Tx and Rx. So I
disabled the napi functionality. This caused a system freeze as the comment
in the above snippet creates a race condition.

I would like to have a work around for this race condition.
Can you please explain what is that race condition? What will happen if we
don't poll before enabling the irq?
Suggest me a method to solve this race condition.

Thanks
Vikram

On Tue, Jan 25, 2011 at 10:21 AM, Vikram Narayanan <[email protected]>wrote:

> Hi all,
>
> I am integrating the e100.c driver to one of my application specific
> network protocol stack which runs as a kernel module.
> The ethernet controller used is Intel 82562.
> Kernel version is 2.6.33.7
> When I insmod my kernel module, It will initialise the e100 driver too. My
> system freezed after inserting the module.
> By using printks I found that the freeze happens during the call to the
> function e100_enable_irq().
> The function has a iowrite
> iowrite8(irq_mask_none, &nic->csr->scb.cmd_hi);
> When I comment the above line, there is no system freeze. But the
> interrupts aren't enabled, which is obviously of no use to me :)
> I would like to know
> i) Why the system freezes when i enable the IRQ. My IRQ number for this
> ethernet controller in my system is 20.
> ii) How to solve this system freeze?
>
> I would be happy to provide more inputs if needed.
>
> --
> Be the change you want to see in the world
>
> Regards
> Vikram
>
> Support Freedom
> http://www.fsf.org/
>
> Donate to FSF
> https://my.fsf.org/donate
>

------------------------------------------------------------------------------
Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
Finally, a world-class log management solution at an even better price-free!
Download using promo code Free_Logger_4_Dev2Dev. Offer expires 
February 28th, so secure your free ArcSight Logger TODAY! 
http://p.sf.net/sfu/arcsight-sfd2d
_______________________________________________
E1000-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit 
http://communities.intel.com/community/wired

Reply via email to