Back out last commit.
authorkevlo <kevlo@openbsd.org>
Fri, 20 Aug 2021 04:54:10 +0000 (04:54 +0000)
committerkevlo <kevlo@openbsd.org>
Fri, 20 Aug 2021 04:54:10 +0000 (04:54 +0000)
deraadt@ pointed out that the operation is correct.
It attaches, but by then it is being pulled.  The dying flag is set to
avoid half the kinds of failure conditions.  The other half of the failure
conditions are detect on-the-spot.

And it seems when compiled for debug, this on-the-spot check which notices
the device isn't there, has a printf.

sys/dev/usb/if_ure.c

index 75d7cba..31e9282 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: if_ure.c,v 1.27 2021/08/20 01:40:51 kevlo Exp $       */
+/*     $OpenBSD: if_ure.c,v 1.28 2021/08/20 04:54:10 kevlo Exp $       */
 /*-
  * Copyright (c) 2015, 2016, 2019 Kevin Lo <kevlo@openbsd.org>
  * Copyright (c) 2020 Jonathon Fletcher <jonathon.fletcher@gmail.com>
@@ -223,7 +223,7 @@ ure_ctl(struct ure_softc *sc, uint8_t rw, uint16_t val, uint16_t index,
        usbd_status             err;
 
        if (usbd_is_dying(sc->ure_udev))
-               return -1;
+               return 0;
 
        if (rw == URE_CTL_WRITE)
                req.bmRequestType = UT_WRITE_VENDOR_DEVICE;
@@ -239,8 +239,6 @@ ure_ctl(struct ure_softc *sc, uint8_t rw, uint16_t val, uint16_t index,
        err = usbd_do_request(sc->ure_udev, &req, buf);
        if (err) {
                DPRINTF(("ure_ctl: error %d\n", err));
-               if (err == USBD_CANCELLED || err == USBD_TIMEOUT)
-                       usbd_deactivate(sc->ure_udev);
                return -1;
        }