On Wed, 2007-08-08 at 16:05 +0200, Patrick McHardy wrote: > This is not completely avoidable of > course, but you can and should limit the damage by only pulling > out as much packets as the driver can take and have the driver > stop the queue afterwards.
This why the dev->xmit_win exists in my patches. The driver says how much space it has using this variable - and only those packets get pulled off; so there is no conflict with any scheduling algorithm be it work/non-work conserving. The ideal case is never to carry over anything in dev->blist. However, there is a challenge with GSO/TSO: if say the descriptors in the driver are less than the list of skbs, you are faced with the dilema of sending a fraction of the gso list first. My current approach is to transmit as much as the driver would allow. On the next opportunity to transmit, you do immediately send anything remaining first before you ask the qdisc for more packets. An alternative approach i had entertained was not to send anything from the skb list when hitting such a case, but it hasnt seem needed so far (havent seen any leftovers from my experiments). 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