Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758331Ab0FBOz4 (ORCPT ); Wed, 2 Jun 2010 10:55:56 -0400 Received: from mail.netservers.co.uk ([80.248.178.71]:47295 "EHLO mail.netservers.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757693Ab0FBOzx (ORCPT ); Wed, 2 Jun 2010 10:55:53 -0400 X-Envelope-From: ben@netservers.co.uk Message-ID: <4C0670E2.1090708@netservers.co.uk> Date: Wed, 02 Jun 2010 15:55:30 +0100 From: Ben McKeegan User-Agent: Mozilla-Thunderbird 2.0.0.24 (X11/20100328) MIME-Version: 1.0 To: Paul Mackerras CC: netdev@vger.kernel.org, linux-ppp@vger.kernel.org, Alan Cox , "Alexander E. Patrakov" , Richard Hartmann , linux-kernel@vger.kernel.org, gabriele.paoloni@intel.com Subject: Re: [Patch] fix packet loss and massive ping spikes with PPP multi-link References: <2d460de71003260850x7f90d04cy79ac853464108182@mail.gmail.com> <20100326160226.0159ac3b@lxorguk.ukuu.org.uk> <4BACE827.4070006@gmail.com> <20100326170428.6c1ad66c@lxorguk.ukuu.org.uk> <4BB31E00.8060204@netservers.co.uk> <20100529021624.GA2538@brick.ozlabs.ibm.com> <4C03E1CD.4000809@netservers.co.uk> In-Reply-To: <4C03E1CD.4000809@netservers.co.uk> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2258 Lines: 48 Ben McKeegan wrote: > Paul Mackerras wrote: > >>> I needed to do something similar a while back and I took a very >>> different approach, which I think is more flexible. Rather than >>> implement a new round-robin scheduler I simply introduced a target >>> minimum fragment size into the fragment size calculation, as a per >>> bundle parameter that can be configured via a new ioctl. This >>> modifies the algorithm so that it tries to limit the number of >>> fragments such that each fragment is at least the minimum size. If >>> the minimum size is greater than the packet size it will not be >>> fragmented all but will instead just get sent down the next >>> available channel. >>> >>> A pppd plugin generates the ioctl call allowing this to be tweaked >>> per connection. It is more flexible in that you can still have the >>> larger packets fragmented if you wish. >> >> I like this a lot better than the other proposed patch. It adds less >> code because it uses the fact that ppp_mp_explode() already has a >> round-robin capability using the ppp->nxchan field, plus it provides a >> way to control it per bundle via pppd. >> >> If you fix up the indentation issues (2-space indent in some of the >> added code -- if you're using emacs, set c-basic-offset to 8), I'll >> ack it and hopefully DaveM will pick it up. > > Okay, I'll fix it up when I'm back at work Tuesday and submit (today is > a UK public holiday) and also dig out and fix up the userspace code to > go with it. Still working on this, updating the patch wasn't as trivial as I thought as it clashed with Gabriele Paoloni's ppp_mp_explode redesign. However, while looking at this code I believe I have found a bug which might have been contributing to the poor performance the OP was experiencing. For the case where channel speeds are unknown and there are more than 2 channels it would miscalculate the fragment sizes so they are not balanced on the channels. Patch for the bug to follow immediately. Regards, Ben. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/