summaryrefslogtreecommitdiff
path: root/sys/src
diff options
context:
space:
mode:
authorRomano <unobe@cpan.org>2021-04-01 12:54:08 +0200
committerRomano <unobe@cpan.org>2021-04-01 12:54:08 +0200
commita398a097831f619fbebf064134b8931cb24ca051 (patch)
treed4a6fa871798077575e518fa4cacfcba7699598e /sys/src
parentfcc93463a3e2fec9738330b1d82a11b077c96315 (diff)
[9front] [patch] nusb/ether -t rndis
Diffstat (limited to 'sys/src')
-rwxr-xr-xsys/src/9/boot/nusbrc7
-rw-r--r--sys/src/cmd/nusb/ether/rndis.c3
2 files changed, 7 insertions, 3 deletions
diff --git a/sys/src/9/boot/nusbrc b/sys/src/9/boot/nusbrc
index bf3c311e0..43ce0a6e1 100755
--- a/sys/src/9/boot/nusbrc
+++ b/sys/src/9/boot/nusbrc
@@ -34,8 +34,11 @@ if(! nusb/usbd)
case *03
nusb/kb $id
case *02
- # CDC ethernet
- nusb/ether $etherargs $id
+ # RNDIS, otherwise CDC ethernet
+ if(~ $4 ff0202)
+ nusb/ether -t rndis $etherargs $id
+ if not
+ nusb/ether $etherargs $id
case *08
if(nusb/disk $id) @{
rfork ne
diff --git a/sys/src/cmd/nusb/ether/rndis.c b/sys/src/cmd/nusb/ether/rndis.c
index 68985a3e9..71640f7c7 100644
--- a/sys/src/cmd/nusb/ether/rndis.c
+++ b/sys/src/cmd/nusb/ether/rndis.c
@@ -118,7 +118,8 @@ rndisinit(Dev *d)
for(i = 0; i < nelem(d->usb->ep); i++){
if((ep = d->usb->ep[i]) == nil)
continue;
- if(ep->iface->csp == 0x000301e0)
+ // ff0202 is canonical CSP per Linux kernel; 301e0 used by Nexus 5
+ if(ep->iface->csp == 0xff0202 || ep->iface->csp == 0x000301e0)
r = 1;
}
if(!r){