On Sunday 01 January 2006 22:21, Matteo Frigo wrote:
> Michael Buesch <[EMAIL PROTECTED]> writes:
> 
> > You have a device with a wlcore rev < 5, which uses
> > one DMA engine for TX status blobs.
> > This code is untested and indeed likely to be wrong.
> > I have no facilities to test it (neither has any other
> > developer).
> 
> Well, I do have a card with rev < 5, so I can test it.
> 
> On my machine, the code does invoke dma_rx() to read from rx_ring1, so
> at least this part is working.  However, I always get len == 0 when
> (ring->mmio_base == BCM43xx_MMIO_DMA4_BASE), the packet is dropped,
> and the bcm43xx_rx_transmitstatus() mechanism is not invoked.
> 
> Any suggestion?

Ok, it should not be dropped. Afaik the len should be ignored
on DMA4. (I can not check, as the specs server is down).
But you may play around by yourself. Do a hack to ignore the
len on DMA4 and pass the xmitstatus blob to bcm43xx_rx_transmitstatus().
The xmitstatus blob is at the beginning of the descriptor buffer
(_no_ frame offset is used) and has a length of
sizeof(struct bcm43xx_hwxmitstatus).
So instead of doing:
len = le16_to_cpu(rxhdr->frame_length);
You might hack something like that:
if (ring->mmio_base == BCM43xx_MMIO_DMA4_BASE)
        len = sizeof(struct bcm43xx_hwxmitstatus);
else
        len = le16_to_cpu(rxhdr->frame_length);

Please also do another thing. dump the xmitstatus blob, using
bcm43xx_printk_dump() and post the hexdump here.
Just to see if we actually receive sane data.

-- 
Greetings Michael.

Attachment: pgpP8LV1pMy7v.pgp
Description: PGP signature

Reply via email to