problem with udbp and netgraph in the usb LAN

Hans Petter Selasky hselasky at c2i.net
Sat Jan 29 10:00:44 PST 2005


On Sat, Jan 29, 2005 at 06:23:45PM +0300, Kiselev wrote:
> On Thu, Jan 27, 2005 at 09:54:14AM +0300, 1801 wrote:
> > Hi, all
> > I have usb2usb link cable (no name)and try make usb network on two 
> > hosts  (FreeBSD 5.3).
> > I do everything as written in man 4 udbp:
> > kldload netgraph
> > kldload udbp
> > Result :
> > udbp0: Prolific Technology Inc. PL2302 Host-Host interface, rev 
> > 1.00/0.01,  addr2, iclass 255/0.
> > Then make:
> > ngctl mkpeer udbp0: iface data inet, ifconfig ng0 10.0.0.1 10.0.0.2 on  
> > both hosts.

I assume that you use ifconfig ng0 10.0.0.2 10.0.0.1 on the remote host.

> > How to make steady connection?
> > Thanks in advance, Yuri.
> 
> >> What kind of USB controller do you have?
> >> Looking through the code I found this problem:
> >> If a transmitted packet has a length that is divisible by 
> >> "MaxPacketLength" then udbp_in_transfer_cb() will not be called. In 
> >> other words the transmission will stop. So when udbp is sending 
> >> packets, the flag USBD_FORCE_SHORT_XFER must be set?
> >>
> >> --
> >> HPS
> 
> My USB controller is:
> ohci0: <SiS 5571 USB controller> mem 0xee000000-0xee000fff irq 20 at 
> device 2.2
> on pci0
> ohci0: [GIANT-LOCKED]
> usb0: <SiS 5571 USB controller> on ohci0
> ohci1: <SiS 5571 USB controller> mem 0xee001000-0xee001fff irq 23 at 
> device 2.3
> on pci0
> ohci1: [GIANT-LOCKED]
> usb1: <SiS 5571 USB controller> on ohci1.
> How to execute the idea set the flag USBD_FORCE_SHORT_XFER?
> I do not found anything in the(sysctl, rc.conf, GENERIC), and what to 
> correct in
> the /usr/src/sys/dev/usb/ohci.c:    if ((flags & USBD_FORCE_SHORT_XFER) &&
> i don't know.
> Thanks in advance, Yuri
> 

In the file /usr/src/sys/dev/usb/udbp.c:

Add "#define USB_DEBUG" at the beginning.

In the function udbp_setup_out_transfer()

change: 

        (void) usbd_setup_xfer( sc->sc_bulkout_xfer,
                                sc->sc_bulkout_pipe,
                                priv,
                                sc->sc_bulkout_buffer,
                                pktlen,
                                USBD_SHORT_XFER_OK,
                                UDBP_TIMEOUT,
                                udbp_out_transfer_cb);

into:

        (void) usbd_setup_xfer( sc->sc_bulkout_xfer,
                                sc->sc_bulkout_pipe,
                                priv,
                                sc->sc_bulkout_buffer,
                                pktlen,
                                USBD_SHORT_XFER_OK|USBD_FORCE_SHORT_XFER,
                                UDBP_TIMEOUT,
                                udbp_out_transfer_cb);

Then "cd /usr/src/sys/modules/udbp" and "make clean" and "make all install clean"

Unplug your device. Reload the udbp module or reboot the computer.

Run "sysctl hw.usb.udbp.debug=15", plug your device and try again.

--
HPS


More information about the freebsd-usb mailing list