>> > >> >> 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