>       if (virt_to_bus(skb->data) < MAX_DMA_ADDRESS) {
>               memcpy(device->bouncebuf, skb->data, skb->len);
>               device->txbuf = device->bouncebuf;
>       } else
>               device->txbuf = skb->data;
> 
>       This does not work, because the MAX_DMA_ADDRESS is #defined to be
> PAGE_OFFSET+0x01000000, so it refers to the _virtual_ address instead of
> the bus one. The correct condition should be

It also has another error. 
> 
>       if (skb->data < MAX_DMA_ADDRESS) ...

Nope

        (skb->data+skb->len)

and you ought to check it doesnt span a page. The 85230 driver has the
right bits in for that now. I've never seen a frame spanning a 64K boundary
on x86, and the mm may actually mean it cant occur.

Alan


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/

Reply via email to