linux-usb.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dave Penkler <dpenkler@gmail.com>
To: gregkh@linuxfoundation.org, linux-usb@vger.kernel.org
Cc: guido.kiener@rohde-schwarz.com, john.harvey@non.keysight.com,
	jian-wei_wu@keysight.com, gabe.jones@ni.com, dpenkler@gmail.com
Subject: [PATCH 0/4] USB: usbtmc: Fix stale status byte ioctl
Date: Tue, 15 Dec 2020 16:56:17 +0100	[thread overview]
Message-ID: <20201215155621.9592-1-dpenkler@gmail.com> (raw)

The ioctl USBTMC488_IOCTL_READ_STB either returns a cached status byte
(STB) sent by the device due to a service request (SRQ) condition or
the STB obtained from a query to the device with a READ_STATUS_BYTE
control message.

When the query is interrupted by an SRQ message on the interrupt pipe,
the ioctl still returns the requested STB while the STB of the
out-of-band SRQ message is cached for the next call of this
ioctl. However the cached SRQ STB represents a state that was previous
to the last returned STB.  Furthermore the cached SRQ STB can be
stale and not reflect the current state of the device.

This set of patches separates out the behaviour into 3 ioctls:

[PATCH 1]
USBTMC488_IOCTL_READ_STB always reads the STB from the device and if the
associated file descriptor has the srq_asserted bit set it ors in the
RQS bit to the returned STB and clears the srq_asserted bit conformant
to subclass USB488 devices.

[PATCH 2]
USBTMC_IOCTL_GET_STB reads the status byte (STB) from the device and
returns the STB unmodified to the application. The srq_asserted bit is
not taken into account and not changed.

[PATCH 3]
USBTMC_IOCTL_GET_SRQ_STB only returns the status byte (STB) that was
originally sent by the device due to a service request (SRQ) condition.

This ioctl checks the srq_asserted bit of the associated file
descriptor. If set, the srq_asserted bit is reset and the cached
STB with original SRQ information is returned. Otherwise the ioctl
returns the error code ENOMSG.

The latter 2 ioctls are useful to support non USBTMC-488 compliant
devices. Time sensitive applications can read the cached STB without
incurring the cost of an urb transaction over the bus.

[PATCH 4]
Increase the API version number

Dave Penkler (4):
  USB: usbtmc: Fix reading stale status byte
  USB: usbtmc: Add USBTMC_IOCTL_GET_STB
  USB: usbtmc: Add separate USBTMC_IOCTL_GET_SRQ_STB
  USB: usbtmc: Bump USBTMC_API_VERSION value

 drivers/usb/class/usbtmc.c   | 85 ++++++++++++++++++++++++++----------
 include/uapi/linux/usb/tmc.h |  3 ++
 2 files changed, 66 insertions(+), 22 deletions(-)

-- 
2.29.2


             reply	other threads:[~2020-12-15 15:58 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-15 15:56 Dave Penkler [this message]
2020-12-15 15:56 ` [PATCH 1/4] USB: usbtmc: Fix reading stale status byte Dave Penkler
2020-12-15 15:56 ` [PATCH 2/4] USB: usbtmc: Add USBTMC_IOCTL_GET_STB Dave Penkler
2020-12-15 15:56 ` [PATCH 3/4] USB: usbtmc: Add separate USBTMC_IOCTL_GET_SRQ_STB Dave Penkler
2020-12-15 15:56 ` [PATCH 4/4] USB: usbtmc: Bump USBTMC_API_VERSION value Dave Penkler
2020-12-28 14:49   ` Greg KH

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=20201215155621.9592-1-dpenkler@gmail.com \
    --to=dpenkler@gmail.com \
    --cc=gabe.jones@ni.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=guido.kiener@rohde-schwarz.com \
    --cc=jian-wei_wu@keysight.com \
    --cc=john.harvey@non.keysight.com \
    --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).