From: Johan Hovold <johan@kernel.org>
To: John Goerzen <jgoerzen@complete.org>
Cc: linux-usb@vger.kernel.org
Subject: Re: Linux Keyspan USB serial driver ignoring XOFF
Date: Mon, 23 Sep 2019 12:20:12 +0200 [thread overview]
Message-ID: <20190923102012.GZ30545@localhost> (raw)
In-Reply-To: <87tv967nog.fsf@complete.org>
On Fri, Sep 20, 2019 at 02:49:51PM -0500, John Goerzen wrote:
> Hello,
>
> I have narrowed down the issue I'm about to describe to keyspan.c; a
> Digi Edgeport/1 with identical configuration works fine.
>
> I am configuring a Raspberry Pi running 4.19.66 (though keyspan.c hasn't
> changed since 2017) to talk to a real-live vt420. Configuring agetty
> with systemd worked easy enough, but I found that XON/XOFF wasn't
> working. stty -a shows ixon and ixoff as appropriate, but sending
> Ctrl-S (tested from multiple ways of sending) had no effect on output in
> bash, or scrolling output. (Emacs, though, recognized it as the start
> of a search, so I knew it was getting down the line.)
>
>
> After a great deal of head-scratching on this, I went to look at the
> kernel source and found that keyspan.c does not appear to be honoring
> XOFF. I also have a Digi Edgeport/1 on hand (which uses io_ti.c), and
> when I swapped to that, everything worked fine - Ctrl-S caused the
> expected pause.
>
> As far as I can tell, keyspan.c simply never implemented handling of
> XOFF, but you guys are the experts there.
That's correct, the driver does not support software flow control even
if the hardware seems to have some support for assisted XON/XOFF.
Would you mind testing the below patch which may be enough to turn
sw-flow control always on. If that works, I can probably find time to
cook up a proper patch to make this configurable later this week.
Johan
From 55b46d78fe63f182923e4674659fa18f4624d6b8 Mon Sep 17 00:00:00 2001
From: Johan Hovold <johan@kernel.org>
Date: Mon, 23 Sep 2019 12:14:56 +0200
Subject: [PATCH] USB: serial: keyspan: enable XON flow control
Signed-off-by: Johan Hovold <johan@kernel.org>
---
drivers/usb/serial/keyspan.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/usb/serial/keyspan.c b/drivers/usb/serial/keyspan.c
index d34779fe4a8d..934430cbdfc4 100644
--- a/drivers/usb/serial/keyspan.c
+++ b/drivers/usb/serial/keyspan.c
@@ -2118,7 +2118,7 @@ static int keyspan_usa26_send_setup(struct usb_serial *serial,
msg.setLcr = 0xff;
msg.ctsFlowControl = (p_priv->flow_control == flow_cts);
- msg.xonFlowControl = 0;
+ msg.xonFlowControl = 1;
msg.setFlowControl = 0xff;
msg.forwardingLength = 16;
msg.xonChar = 17;
@@ -2234,7 +2234,7 @@ static int keyspan_usa28_send_setup(struct usb_serial *serial,
msg.parity = 0; /* XXX for now */
msg.ctsFlowControl = (p_priv->flow_control == flow_cts);
- msg.xonFlowControl = 0;
+ msg.xonFlowControl = 1;
/* Do handshaking outputs, DTR is inverted relative to RTS */
msg.rts = p_priv->rts_state;
@@ -2388,7 +2388,7 @@ static int keyspan_usa49_send_setup(struct usb_serial *serial,
msg.setLcr = 0xff;
msg.ctsFlowControl = (p_priv->flow_control == flow_cts);
- msg.xonFlowControl = 0;
+ msg.xonFlowControl = 1;
msg.setFlowControl = 0xff;
msg.forwardingLength = 16;
@@ -2690,7 +2690,7 @@ static int keyspan_usa67_send_setup(struct usb_serial *serial,
msg.setLcr = 0xff;
msg.ctsFlowControl = (p_priv->flow_control == flow_cts);
- msg.xonFlowControl = 0;
+ msg.xonFlowControl = 1;
msg.setFlowControl = 0xff;
msg.forwardingLength = 16;
msg.xonChar = 17;
--
2.23.0
next prev parent reply other threads:[~2019-09-23 10:20 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <87woe37prw.fsf@complete.org>
2019-09-20 19:49 ` Linux Keyspan USB serial driver ignoring XOFF John Goerzen
2019-09-23 10:20 ` Johan Hovold [this message]
2019-09-23 15:59 ` John Goerzen
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=20190923102012.GZ30545@localhost \
--to=johan@kernel.org \
--cc=jgoerzen@complete.org \
--cc=linux-usb@vger.kernel.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).