Garrett D'Amore wrote:
> Steven Stallion wrote:
>
>> Steven Stallion wrote:
>>
>>
>>> Garrett D'Amore wrote:
>>>
>>>
>>>> Steven Stallion wrote:
>>>>
>>>>
>>>>> Well, I swapped everything over to re and moved over to 16-bit DMA. I'm
>>>>> now seeing the following:
>>>>>
>>>>> Sep 3 22:53:09 devel pcisch: [ID 876218 kern.warning] WARNING: re0 peer
>>>>> only dev 60015ae7e00
>>>>> Sep 3 22:53:09 devel pcisch: [ID 346402 kern.warning] WARNING: re0 peer
>>>>> only device bad attr
>>>>> Sep 3 22:53:09 devel re: [ID 179634 kern.warning] WARNING: re0 failed
>>>>> to allocate DMA resources!
>>>>>
>>>>> re_dma_attr is:
>>>>>
>>>>>
>>>>>
>>>> The attributes you give below are probably horribly wrong. they
>>>> indicate that the memory has to be 32K aligned, and in the lower 64K.
>>>> That's probably not what you intended.
>>>>
>>>> My guess is you want to set addr_high to some fairly large value
>>>> (0xffffffff if the device can address the entire 32-bit address space --
>>>> which if it can take a 16-bit segment pointer, and a 16-bit offset,
>>>> should be correct). The attr_count_max should probably still be set to
>>>> 0xffff though.
>>>>
>>>>
>>> Unless I am misreading the DP8390 spec, the device can only address the
>>> lower 64K in dual 16-bit mode. It expects the upper 8 bits of a 16-bit
>>> address to be programmed into the DMA engine (in this case the PSTART,
>>> and PSTOP registers).
>>>
>>>
>
> If the device is that limited, then it may be difficult to set up DMA
> for it, and use of DMA may collide with other resources used in that
> memory space. (Recall that x86 platforms don't have an IOMMU, so they
> cannot relocate physical pages to make room for the device.)
> Additionally, it sounds like the DMA counter might only be 8 bits? (So
> you'd need multiple PIOs per packet?)
>
> At this point, I'd probably just opt for PIO. It may be less efficient,
> but by the time you involved the bounce buffers, etc., it may actually
> work better/faster than trying to workaround the DMA limitations.
>
Furthermore, I can't seem to find any other versions of the driver which
do DMA ... NetBSD and Linux both do PIO. And then, reading the Linux
driver, I saw this comment:
The NEx000 doesn't share the on-board packet memory -- you have to put
the packet out through the "remote DMA" dataport using outb.
So, I think again that you should probably just use PIO.
If Parallels wants better performance, then they should emulate a more
modern NIC device. :-)
-- Garrett
> -- Garrett
>
>
>>> Steve
>>> _______________________________________________
>>> driver-discuss mailing list
>>> [email protected]
>>> http://mail.opensolaris.org/mailman/listinfo/driver-discuss
>>>
>>>
>> I should mention that I changed the alignment to 256 from 32768 with the
>> same results (bad conversion from 32-bit).
>>
>>
>>
>
> _______________________________________________
> driver-discuss mailing list
> [email protected]
> http://mail.opensolaris.org/mailman/listinfo/driver-discuss
>
_______________________________________________
driver-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/driver-discuss