Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 Mar 2003 19:56:50 +0100
From:      Bernd Walter <ticso@cicely9.cicely.de>
To:        Bill Paul <wpaul@FreeBSD.ORG>
Cc:        hackers@FreeBSD.ORG
Subject:   Re: Ax88172 vs FreeBSD USB stack
Message-ID:  <20030328185650.GK23168@cicely9.cicely.de>
In-Reply-To: <20030328183858.7B2DB37B401@hub.freebsd.org>
References:  <20030328183858.7B2DB37B401@hub.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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.

-- 
B.Walter                   BWCT                http://www.bwct.de
ticso@bwct.de                                  info@bwct.de



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030328185650.GK23168>