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));
}