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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.