* Obtain the physical addresses of the RX and TX
* rings which we'll need later in the init routine.
More formally, it's not a 'physical address'- it's a "Bus Address", or
"Address appropriate for a device on this bus to use to access the
memory so mapped". Under sparc64, for example, it would be an iommu
2. All callback functions for dma- you should be checking error.
3. You might want to recycle rather than create/destroy mbuf tags.
I'm not creating/destroying tags, I'm creating/destroying dma maps
My understanding is that I need a dmamap for every buffer that I
need to send to the NIC, and in the transmit case, I might have several
buffers per packet (i.e. an mbuf list with all the packet fragments).
But I can't know ahead of time how many fragments will be in the chain,
so I can't really say "allocate this many dma maps for packet transmit."
You should note that FreeBSD's bus_dma is hardly as strict or as formal as
NetBSD's, so there's room for a lot of slop here. The key thing to test it on
is an alpha that has both direct-mapped and sgmap hardware to see that it
Hopefully I will be able to do this on Monday. In the meantime, I have
also converted the RealTek driver: