From: Johan Hovold <jhovold@gmail.com>
To: Peter Hurley <peter@hurleysoftware.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Johan Hovold <jhovold@gmail.com>, Stas Sergeev <stsp@list.ru>,
Jarkko Huijts <jarkko.huijts@gmail.com>,
Alan Cox <alan@linux.intel.com>,
linux-usb@vger.kernel.org, linux-serial@vger.kernel.org,
Linux kernel <linux-kernel@vger.kernel.org>,
Caylan Van Larson <i@caylan.net>,
"Rafael J. Wysocki" <rjw@sisk.pl>
Subject: Re: Regression: ftdi_sio is slow (since Wed Oct 10 15:05:06 2012)
Date: Sun, 5 May 2013 20:29:13 +0200 [thread overview]
Message-ID: <20130505182913.GE16818@localhost> (raw)
In-Reply-To: <5184F38D.9090507@hurleysoftware.com>
On Sat, May 04, 2013 at 07:39:57AM -0400, Peter Hurley wrote:
> On 05/04/2013 07:15 AM, Johan Hovold wrote:
> > On Sat, May 04, 2013 at 01:50:42AM +0400, Stas Sergeev wrote:
> >> 04.05.2013 00:34, Greg KH пишет:
> >>> On Fri, May 03, 2013 at 10:27:18PM +0400, Stas Sergeev wrote:
> >>>> 03.05.2013 21:16, Greg KH пишет:
[...]
> > But you do have a point, and I have been meaning to look into whether
> > the added overhead of checking the hardware buffers could be mitigated
> > by adding wait_until_sent support to usb-serial. This way the we would
> > only query the hardware buffers on tty_wait_until_sent (e.g. at close)
> > and select and TIOCMOUTQ would not suffer. This is also the way things
> > are handled in serial_core.
>
> Agreed. This is the correct solution.
>
> > I'll prepare a series which adds wait_until_sent to usb-serial, but I
> > doubt it would be stable material (even if it could get into 3.10).
> >
> > What do you think Greg, is this overhead to chars_in_buffer reason
> > enough to disable it in the stable trees or should we simply fix it in
> > 3.11 (or 3.10)? (The overhead is about 3-400 us per call when the port
> > fifo is empty, which makes chars_in_buffer about 100 times slower on my
> > test system.)
>
> A better solution for stable would be to set port->drain_delay. It
> won't help tcdrain() but at least the port won't shutdown on live
> outbound data.
Removing the hardware-buffer checks from chars_in_buffer would mean
breaking tty_wait_until_sent and thus also, for example, tcdrain,
tcsendbreak, and close. Using drain_delay would partially work-around
the problem with close, but at the cost of adding delays for all users
while still not being able to guarantee that the buffers have been
drained. Either way, this seems to amount to a regression.
On the other hand, the added overhead to chars_in_buffer seems to break
at least one application as well.
I've implemented wait_until_sent-support for usb-serial, which fixes the
problem without any such trade-offs and which I believe needs to go in
to v3.10.
For the stable trees I think keeping the current, less efficient (but
more complete) chars_in_buffer implementations is preferred over
introducing further regressions. Back-porting wait_until_sent-support
could perhaps also be considered.
I'm responding to this mail with a wait_until_sent-support series.
Thanks,
Johan
next prev parent reply other threads:[~2013-05-05 18:29 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <5183D196.2080305@list.ru>
2013-05-03 16:30 ` Regression: ftdi_sio is slow (since Wed Oct 10 15:05:06 2012) Greg KH
2013-05-03 17:38 ` Stas Sergeev
2013-05-03 16:52 ` Greg KH
2013-05-03 18:05 ` Stas Sergeev
2013-05-03 17:16 ` Greg KH
2013-05-03 18:27 ` Stas Sergeev
2013-05-03 20:34 ` Greg KH
[not found] ` <20130503203419.GA25932-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2013-05-03 21:50 ` Stas Sergeev
2013-05-04 11:15 ` Johan Hovold
2013-05-04 11:39 ` Peter Hurley
2013-05-05 18:29 ` Johan Hovold [this message]
2013-05-05 18:32 ` [PATCH 0/7] USB: serial: add wait_until_sent-support Johan Hovold
2013-05-05 18:32 ` [PATCH 1/7] USB: serial: add wait_until_sent operation Johan Hovold
[not found] ` <1367778753-22297-1-git-send-email-jhovold-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-05-05 18:32 ` [PATCH 2/7] USB: serial: add generic wait_until_sent implementation Johan Hovold
2013-05-08 14:25 ` Stas Sergeev
2013-05-08 15:48 ` Johan Hovold
2013-05-08 15:51 ` [PATCH v2 2/8] " Johan Hovold
2013-05-05 18:32 ` [PATCH 3/7] USB: ftdi_sio: clean up get_modem_status Johan Hovold
2013-05-05 18:32 ` [PATCH 4/7] USB: ftdi_sio: fix chars_in_buffer overhead Johan Hovold
2013-05-05 18:32 ` [PATCH 5/7] USB: io_ti: " Johan Hovold
2013-05-05 18:32 ` [PATCH 6/7] USB: ti_usb_3410_5052: " Johan Hovold
2013-05-05 18:32 ` [PATCH 7/7] USB: serial: clean up chars_in_buffer Johan Hovold
[not found] ` <81D166EE-BB85-4A72-A6FA-A1F6B5633CB0@caylan.net>
2013-05-20 10:07 ` [PATCH 0/7] USB: serial: add wait_until_sent-support Johan Hovold
2013-05-04 12:44 ` Regression: ftdi_sio is slow (since Wed Oct 10 15:05:06 2012) Stas Sergeev
2013-05-04 9:37 ` Stas Sergeev
2013-05-03 18:15 ` Stas Sergeev
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=20130505182913.GE16818@localhost \
--to=jhovold@gmail.com \
--cc=alan@linux.intel.com \
--cc=gregkh@linuxfoundation.org \
--cc=i@caylan.net \
--cc=jarkko.huijts@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=peter@hurleysoftware.com \
--cc=rjw@sisk.pl \
--cc=stsp@list.ru \
/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).