9front - general discussion about 9front
 help / color / mirror / Atom feed
From: inbox@tachibana-labs.org
To: 9front@9front.org
Subject: [9front] [PATCH] nusb/lib and nusb/ether fixes.
Date: Sun, 21 May 2023 18:06:49 +0100	[thread overview]
Message-ID: <06E2394F1FB8B1194569FECED3765B58@tachibana-labs.org> (raw)

[-- Attachment #1: Type: text/plain, Size: 155 bytes --]

added setconf() to nusb/lib, and fixed findendpoints() in nusb/ether
to set the correct configuration.

this makes nusb/ether work for my rtl8156 adapter.

[-- Attachment #2: nusb-ether.diff --]
[-- Type: text/plain, Size: 1503 bytes --]

From: mia soweli <inbox@tachibana-labs.org>
Date: Sun, 21 May 2023 17:01:43 +0000
Subject: [PATCH] nusb/ether: set configuration, and use the first interface that matches


before, we were parsing all configurations, to find the cdc union,
but we would not set the config. this means we would try to talk cdc ethernet to whatever the first configuration is.

this makes cdc ethernet work on my rtl8156.
---
diff daeb5b0ab6d6342dd7d4a25ee6380f67082cfbed 7df4a1cd04d3c77382fbe58062bfb95ed2fb2035
--- a/sys/src/cmd/nusb/ether/ether.c
+++ b/sys/src/cmd/nusb/ether/ether.c
@@ -642,15 +642,18 @@
 		ctlif = datif = nil;
 		for(j = 0; j < nelem(c->iface); j++){
 			for(iface = c->iface[j]; iface != nil; iface = iface->next){
-				if(iface->id == ctlid)
+				if(ctlif == nil && iface->id == ctlid)
 					ctlif = iface;
-				if(iface->id == datid)
+				if(datif == nil && iface->id == datid)
 					datif = iface;
 			}
 			if(datif != nil && ctlif != nil){
-				if(Subclass(ctlif->csp) == Scether)
+				if(Subclass(ctlif->csp) == Scether) {
+					if(setconf(d, c) < 0)
+						break;
 					if(ifaceinit(d, datif, ein, eout) != -1)
 						return 0;
+				}
 				break;
 			}
 		}		
@@ -659,6 +662,8 @@
 	/* try any other one that seems to be ok */
 	for(i = 0; i < nelem(ud->conf); i++){
 		if((c = ud->conf[i]) != nil){
+			if(setconf(d, c) < 0)
+				break;
 			for(j = 0; j < nelem(c->iface); j++){
 				for(datif = c->iface[j]; datif != nil; datif = datif->next){
 					if(ifaceinit(d, datif, ein, eout) != -1)

[-- Attachment #3: nusb-setconf.diff --]
[-- Type: text/plain, Size: 987 bytes --]

From: mia soweli <inbox@tachibana-labs.org>
Date: Sat, 20 May 2023 19:15:57 +0000
Subject: [PATCH] nusb/lib: add setconf() to set the configuration

---
diff f27164167a90a7bc8613375a2d90f2438625518b e3cd2bf512fee93d44d1f48c9813f15f81b21938
--- a/sys/src/cmd/nusb/lib/dev.c
+++ b/sys/src/cmd/nusb/lib/dev.c
@@ -483,6 +483,16 @@
 }
 
 int
+setconf(Dev *d, Conf *c)
+{
+	if(usbcmd(d, Rh2d|Rstd|Rdev, Rsetconf, c->cval, 0, nil, 0) > 0) {
+		werrstr("setconf: %s: %r", d->dir);
+		return -1;
+	}
+	return 0;
+}
+
+int
 setalt(Dev *d, Iface *ifc)
 {
 	if(usbcmd(d, Rh2d|Rstd|Riface, Rsetiface, ifc->alt, ifc->id, nil, 0) < 0){
--- a/sys/src/cmd/nusb/lib/usb.h
+++ b/sys/src/cmd/nusb/lib/usb.h
@@ -353,6 +353,7 @@
 int	unstall(Dev *dev, Dev *ep, int dir);
 int	usbcmd(Dev *d, int type, int req, int value, int index, uchar *data, int count);
 Dev*	getdev(char *devid);
+int	setconf(Dev *d, Conf *c);
 int	setalt(Dev *d, Iface *ifc);
 
 extern int usbdebug;	/* more messages for bigger values */

                 reply	other threads:[~2023-05-21 17:11 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=06E2394F1FB8B1194569FECED3765B58@tachibana-labs.org \
    --to=inbox@tachibana-labs.org \
    --cc=9front@9front.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).