Just FYI

ng_ubt(4) (/sys/netgraph/bluetooth/drivers/ubt) driver
(Bluetooth USB devices) makes use of two interfaces.

thanks,
max

Bernd Walter wrote:
On Fri, Mar 28, 2003 at 10:38:58AM -0800, Bill Paul wrote:

So. I picked up a Linksys USB200M USB 2.0 ethernet adapter that uses
the ASIX Electronics AX88172 chip, and I started cobbling together a
driver. This chip uses a series of vendor specific commands to do
things like read/write the MII management interface on the MAC,
read/write the SROM, set the RX filter, multicast hash table, etc.
I can do all this no problem. The Linksys NIC uses a RealTek 8201L
PHY, and I can attach it and negotiate a link.

However I can't send or receive any packets.

Like all the other USB NICs, packet transfer is supposed to done
via bulk in/bulk out endpoints, and I can open these endpoints
and initiate transfers just fine, but nothing ever happens. Transmit
attempts don't yield any packets on the wire, and I never get any
RX transfer completions. (I can see the activity LED on the NIC
blink when a frame arrives though.) One thing I have not attempted
to do yet (but may try this weekend) is to directly read the RX or
TX SRAM (there are commands to let you do this).

Frankly, I'm a bit stumped. It looks as though I'm doing everything
correctly, but I can't explain why the bulk transfers don't work.
Clearly, the control endpoint works, since I can issue commands. There
doesn't appear to be any special command that one has to issue to
enable/disable the receiver or transmitter on the MAC.

I have only one possible explanation. The manual for the AX88172
(http://www.freebsd.org/~wpaul/ASIX/Ax88172.PDF) says the following:

"The AX88172 supports 2 interfaces, the interface 0 is Data Interface
and interface 1 is for Communication interface."


If that is true - the device has a strange design.
Normaly devices use single interfaces with multiple commucations
channels.
An interface in USB wording is something like a virtual device -
similar to functions on pci.
E.g. you can have an umass device on interface 0 and a keyboard on
interface 1.
The FreeBSD USB stack supports mutltiple interfaces, but currently
doesn't support probing different drivers for different interfaces on
the same device.

However you can try usbctl from usbutils to get an overview of the
device.
I have made a port, it is actually being reviewed by a port commiter,
which you can get on: http://www.cosmo-project.de/~bernd/usbutil.tgz


However the USB stack disagrees with the manual on this point: it
steadfastly insists that configuration 1 has only 1 interface. So
my question, for any USB gurus out there, is: is it possible that
the USB stack is wrong on this point, and I really need to be
using interface 1 for bulk in/out transfers? I'm a little suspicious
at this point, because the stack can't seem to even read the
device ID string correctly. (It identifies the chip only as "vendor
0x77b, device 0x2226".)


Strange - let us see what usbctl says - it never failed for me.

BTW: I doubt that USB 1.x vs USB 2.0 make a difference in the problem
you are seeing, but in case you want to test later.
The EHCI patch is available under:
http://www.cosmo-project.de/~bernd/ehci.patch
It is currently not tested against any device, but the controller
probes fine and scanning the root hub (without devices) did not fail.



_______________________________________________
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to