Hi George

I have just tried using the alternative driver uhci.o without success.

I am not using the synchronous reads but the asynchronous reads _very_ similar to
the code in the plusb or Pegasus drivers. I am in the process of trying async
reads just to test.
The usb API is wrapped in a network driver structure _very_similar to Plusb
The receive bulk URB is allocated and submitted during the driver's _open entry
point.
At the same time I (successfully) send 64 bytes from the PC to the iPAQ and the
iPAQ immediately responds with a 63 byte packet. This is recored on the CATC log(
warning I'm no expert in the USB standard - but I'm learning fast;-)
The PC code goes like

/* I call this entry point by issuing the command ifconfig x.x.x.x up */
net_open(struct net_device *dev)
{
alloc_urbs();    /* allocates and initialises Tx and Rx URBs - at this point the
callbacks are registered*/
tx_test();        /* using the URB allocated before sends 64 bytes to the iPAQ */

/* at this point the iPAQ receives the 64 bytes and returns a 63 byte packet */
return 0;
}

/* call back is as simple as this - it is never called if I send <= 64 bytes. If
I send > 64 bytes it reports only pktlen-64*/
my_rx_complete(urb_t *purb)
{
printk("RXComplete Called Packet=%d",pkt_count);
}

/* This gets called */
my_tx_complete(urb_t *purb)
{
printk("TXComplete Called\n");
}

BTW - If I use the asynchronous form of receive bulk transfers. What should I
expect to see at my callback routine? In otherwords if the iPAQ sends three
64byte bulk packets will my call back report 192 bytes in one hit or be called
three times each with 64 bytes? (assume I have initialised the RX URB with a
buffer length 1024 )

Regards
Charlie

Georg Acher wrote:

> On Thu, Aug 17, 2000 at 02:16:40PM +0000, Charlie Flynn wrote:
> <...>
> > I am having problems with getting my PC to receive the full amount of
> > packets sent by the iPAQ. It seems to drop the first 64 byte packet (
> > the packet size is set to 64 bytes both endpoints) If I send 63 bytes my
> >
> > callback routine isn't entered. If I send 68 bytes my callback routine
> > reports 4 bytes and if I send 132 bytes my callback routine reports
> > 132-64 bytes and so on. The data reported by the callback routine is
> > consistent with the packet received.
> <...>
>
> That is strange. I've just tested usb-uhci again with the usbstress-package
> (for Anchor/Cypress EZ-USB chips). It has a test called bulk echo.
> Essentially it sends 480Bytes in one URB to the chip and reads 480Bytes
> back:
>
>         unsigned int size = 480;
> <...>
>         for (r = 0; r < size; r++)
>                         buf[r] = random();
>         r = usb_bulk_msg(dev, USB_DIR_OUT|(2*intf), size, buf, 1000);
> <...>
>         r = usb_bulk_msg(dev, USB_DIR_IN|(2*intf), sizeof(bufr), bufr, 1000);
>
> The compare buf vs. bufr afterwards shows no differences, so all data was
> received.
>
> The test was run on the usb-uhci version 1.237 (2.4.0-pre7 or such...).
>
> Can you show some code?
>
> BTW: The linux-usb@suse mailing list is almost dead, please switch to
> linux-usb-devel at sourceforge.
> --
>          Georg Acher, [EMAIL PROTECTED]
>          http://www.in.tum.de/~acher/
>           "Oh no, not again !" The bowl of petunias
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to