netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: David Woodhouse <dwmw2@infradead.org>
To: Paul Mackerras <paulus@samba.org>
Cc: Nathan Williams <nathan@traverse.com.au>,
	Karl Hiramoto <karl@hiramoto.org>,
	"David S. Miller" <davem@davemloft.net>,
	netdev@vger.kernel.org, John Crispin <blogic@openwrt.org>,
	Benjamin LaHaise <bcrl@kvack.org>
Subject: Re: PPPoE performance regression
Date: Thu, 14 Jun 2012 11:35:29 +0100	[thread overview]
Message-ID: <1339670129.2141.82.camel@shinybook.infradead.org> (raw)
In-Reply-To: <20120614061809.GA10453@drongo>

[-- Attachment #1: Type: text/plain, Size: 1065 bytes --]

On Thu, 2012-06-14 at 16:18 +1000, Paul Mackerras wrote:
> Umm, how does ppp_output_wakeup() actually get called?

In fact I'm thinking of eliminating ppp_output_wakeup() in the general
case.

The idea (and it is *just* an idea so far) is to introduce
ppp_sent_queue(), ppp_completed_queue() and ppp_reset_queue()¹ functions
which take a ppp_chan and map onto the corresponding netdev_* functions
for BQL.

Having done that, we should be able to trigger the wakeup automatically
from the ppp_completed_queue() function, and there's no need for channel
drivers to call ppp_output_wakeup() directly. Not only do we get proper
holistic queue length management, we also move the flow control into PPP
and get rid of the horrid dependency on internal PPP locking that's
documented in commit 9d02daf75², and which we'd have to address on the
PPPoX side too.

And the overhead that Ben is concerned about should be fairly minimal.

-- 
dwmw2

¹ For ppp_reset_queue in the mlppp case it gets moderately non-trivial.
² Look for 'downl'. Ick.


[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 6171 bytes --]

  parent reply	other threads:[~2012-06-14 10:35 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1339143949.24571.72.camel@dualcore.traverse>
     [not found] ` <1339144110.13998.1.camel@i7.infradead.org>
     [not found]   ` <1339144954.24571.80.camel@dualcore.traverse>
     [not found]     ` <1339147045.13998.3.camel@i7.infradead.org>
     [not found]       ` <1339289425.2661.27.camel@laptop>
2012-06-10  8:32         ` PPPoE performance regression David Woodhouse
2012-06-13  9:57           ` David Woodhouse
2012-06-13 13:50             ` David Woodhouse
2012-06-13 15:55               ` Benjamin LaHaise
2012-06-13 16:11                 ` David Woodhouse
2012-06-13 16:31                   ` Benjamin LaHaise
2012-06-13 16:32                     ` David Laight
2012-06-13 16:59                       ` David Woodhouse
2012-06-13 16:53                     ` David Woodhouse
2012-06-13 17:21                       ` Benjamin LaHaise
2012-06-13 17:43                         ` David Woodhouse
2012-06-14  6:18               ` Paul Mackerras
2012-06-14  6:49                 ` David Woodhouse
2012-06-14 10:35                 ` David Woodhouse [this message]
2012-06-13 20:17           ` Karl Hiramoto

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1339670129.2141.82.camel@shinybook.infradead.org \
    --to=dwmw2@infradead.org \
    --cc=bcrl@kvack.org \
    --cc=blogic@openwrt.org \
    --cc=davem@davemloft.net \
    --cc=karl@hiramoto.org \
    --cc=nathan@traverse.com.au \
    --cc=netdev@vger.kernel.org \
    --cc=paulus@samba.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).