>> >
>>
>> I am using 2.6.21 kernel and CONFIG_E1000_NAPI is defined. It's a
>> multi-core system.
>>
>> In e1000_intr the interface, over which packet is received, is queued
>> in poll_list (per cpu based).
>
> this is the key.
>
>> Later net_rx_action invokes dev->poll which invokes e1000_clean
>> function. e1000_clean invokes e1000_clean_rx_irq in turn. Although,
>> this function call is made on all cpu, rx_ring is common data
>> structure, but is not protected.
>>
>> Is rx_ring per cpu based or common to all cpus ?
>
> The OS guarantees that we will never have two poll events running
> simultaneously.
>

Thanks Jesse, this answers my question.
Having said this, can I conclude that on a muti-core or SMP system;
from a given interface at a time only one core/cpu will be processing
a packet and remaining waiting for netpoll lock (for the given
interface)?

If yes, this is under utilization of cores. How to overcome this?
I am facing a situation where one core usages goes 100% while rest remain idle.

------------------------------------------------------------------------------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises 
looking to deploy the next generation of Solaris that includes the latest 
innovations from Sun and the OpenSource community. Download a copy and 
enjoy capabilities such as Networking, Storage and Virtualization. 
Go to: http://p.sf.net/sfu/opensolaris-get
_______________________________________________
E1000-devel mailing list
E1000-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/e1000-devel

Reply via email to