hi,

On 2019/05/03 03:23, Mayuresh wrote:
> On Thu, May 02, 2019 at 09:23:38PM +0530, Mayuresh wrote:
>> # uname -a
>> NetBSD pi 8.99.37 NetBSD 8.99.37 (RPI2) #1: Thu Apr 25 16:01:51 UTC 2019
>> root@pi:/usr/src/sys/arch/evbarm/compile/RPI2 evbarm
>>
>> # dmesg | grep urndis
>> [    47.388677] urndis0 at uhub2 port 3 configuration 1 interface 0
>> [    47.388677] urndis0: SAMSUNG (0x4e8) SAMSUNG_Android (0x6863), rev 
>> 2.00/4.00, addr 8
>> [    47.388677] urndis0: IOERROR
>> [    47.388677] urndis0: unable to get init response
>> [    47.388677] urndis0: IOERROR
>> [    47.388677] urndis0: unable to get query response
>> [    47.388677] autoconfiguration error: urndis0: unable to get hardware 
>> address
>>
>>
>> The same mobile phone works fine as urndis0 on NetBSD 8.0 amd64.
>>
>> I do not know whether this is a problem with -current or with evbarm. (I
>> do not have amd64 -current or evbarm 8.0, unfortunately.)
>>
>> What more can I try out?

The urndis(4) driver transfers data on endpoint0 without
USBD_SHORT_XFER_OK to receive control messages.
If this transfer generates short condition, the ehci(4) allows it,
but dwctwo(4) does not.

Either of attached patch might help you.


> Marking current-users and port-arm.
>
> Mayuresh
>
--- src/sys/dev/usb/if_urndis.c Tue Mar  5 18:04:24 2019
+++ src/sys/dev/usb/if_urndis.c Fri May 10 05:10:18 2019
@@ -185,14 +185,17 @@ urndis_ctrl_msg(struct urndis_softc *sc,
     uint16_t index, uint16_t value, void *buf, size_t buflen)
 {
        usb_device_request_t req;
+       uint16_t flags;
 
        req.bmRequestType = rt;
+       flags = (UT_GET_DIR(rt) & UT_READ) ? USBD_SHORT_XFER_OK : 0;
        req.bRequest = r;
        USETW(req.wValue, value);
        USETW(req.wIndex, index);
        USETW(req.wLength, buflen);
 
-       return usbd_do_request(sc->sc_udev, &req, buf);
+       return usbd_do_request_flags(sc->sc_udev, &req, buf, flags, NULL,
+           USBD_DEFAULT_TIMEOUT);
 }
 
 static usbd_status
--- src/sys/external/bsd/dwc2/dwc2.c    Mon Aug 15 00:32:02 2016
+++ src/sys/external/bsd/dwc2/dwc2.c    Thu Oct  6 20:23:24 2016
@@ -1445,11 +1445,13 @@ void dwc2_host_complete(struct dwc2_hsot
                                 i, urb->iso_descs[i].status);
        }
 
+#if 0
        if (!status) {
                if (!(xfer->ux_flags & USBD_SHORT_XFER_OK) &&
                    xfer->ux_actlen < xfer->ux_length)
                        status = -EIO;
        }
+#endif
 
        switch (status) {
        case 0:

Reply via email to