Herbert, On Mon, 2006-19-06 at 23:42 +1000, Herbert Xu wrote: > Hi Jamal: > > On Mon, Jun 19, 2006 at 09:33:51AM -0400, jamal wrote: [..] > > Actually I discovered the problem only because the generic segmentation > offload stuff that I'm working on needs to deal with the situation where > a super-packet is partially transmitted. Requeueing causes all sorts of > nasty problems so I chose to keep it within the net_device structure. > > To do so requires qdisc_run to be serialised against each other. I then > found out that we want this anyway because otherwise the requeued packets > could be reordered. >
Ok, I am trying to visualize but having a hard time: Re-queueing is done at the front of the queue to maintain ordering whereas queueing is done at the front (i.e it is a FIFO). i,e even if p2 comes in and gets queued while p1 is being processed, requeueing of p1 will put it infront of p2. Your super-packet issue may be different though .. > > Also: what happens to the packet that comes in from either local or is > > being forwarded and finds the qdisc_is_running flag is set? I couldnt > > tell if the intent was to drop it or not. The answer for TCP is probably > > simpler than for packets being forwarded. > > The qdisc_is_running only prevents qdisc_run from occuring (because it's > already running), it does not impact on the queueing of the packet. > I will wait for your answer on the other part before responding to this. cheers, jamal - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html