Re: No locking is needed ... why?

Date: Tue Oct 09 2001 - 08:30:05 EST

Kirill Ratkin wrote:

>Could somebody explain me this comment?:
> * Incoming packets are placed on per-cpu queues so
> * no locking is needed.
> */
>struct softnet_data
> int throttle;
> int cng_level;
> int avg_blog;
> struct sk_buff_head input_pkt_queue;
> struct net_device *output_queue;
> struct sk_buff *completion_queue;
>} __attribute__((__aligned__(SMP_CACHE_BYTES)));
>I didn't understand why packets are placed so and why
>locking isn't needed?

As I understand this, the only reason u lock is

1) In an SMP or multiprocessor system, you suspect somebody else is running
   simultaneously with you, this can lead to two or more processors executing
   the same code simultaneously, this may lead to races.(which u do not want).
2) In a Multiprocessor or uniprocesor, data is shared among user processes in the kernel
   between a user process in the kernel and an interrupt context
  (like an irq handler or a bottom half or a tasklet).

So if u have a situation where (2) does not hold and u have a multiprocessor system,
per CPU data need not be locked, since it is not visible/used by other processors.

Did I get it right?

>Do You Yahoo!?
>NEW from Yahoo! GeoCities - quick and easy web site hosting, just $8.95/month.
>To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>the body of a message to
>More majordomo info at
>Please read the FAQ at

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

This archive was generated by hypermail 2b29 : Mon Oct 15 2001 - 21:00:24 EST