Hi,

I'm bringing my old Mac Mini G4 back to life, and I had an issue with a
wireless dongle (RTL8187 rev 0x04, RFv2).

urtw interface was available, but wasn't working at all.

Investigations highlighted an endianness related issue.

I've written a quick and dirty patch which make the interface fully working
again.

I've tested it on PPC and i386 (5.8 and snapshot).


Cédric



--- if_urtw.c.orig      2015-11-25 04:10:00.000000000 +0100
+++ if_urtw.c   2015-12-07 11:40:05.000000000 +0100
@@ -1078,6 +1078,7 @@
        USETW(req.wIndex, index);
        USETW(req.wLength, sizeof(uint16_t));
 
+       data = htole16(data);   
        return (usbd_do_request(sc->sc_udev, &req, &data));
 }
 
@@ -1587,6 +1588,7 @@
        USETW(req.wLength, sizeof(uint16_t));
 
        error = usbd_do_request(sc->sc_udev, &req, data);
+       *data = letoh16(*data);
        return (error);
 }
 
@@ -1603,6 +1605,7 @@
        USETW(req.wLength, sizeof(uint32_t));
 
        error = usbd_do_request(sc->sc_udev, &req, data);
+       *data = letoh32(*data);
        return (error);
 }
 
@@ -1645,6 +1648,7 @@
        USETW(req.wIndex, idx & 0x03);
        USETW(req.wLength, sizeof(uint16_t));
 
+       data = htole16(data);   
        return (usbd_do_request(sc->sc_udev, &req, &data));
 }
 
@@ -1659,6 +1663,7 @@
        USETW(req.wIndex, idx & 0x03);
        USETW(req.wLength, sizeof(uint32_t));
 
+       data = htole32(data);   
        return (usbd_do_request(sc->sc_udev, &req, &data));
 }
 

Reply via email to