On Mon, Dec 05, 2011 at 07:38:54PM +0100, Marius Strobl wrote:
> On Mon, Dec 05, 2011 at 03:33:14PM +0000, Luigi Rizzo wrote:
...
> > +#ifdef DEV_NETMAP
> > +           if (slot) {
> > +                   int si = i + na->tx_rings[txr->me].nkr_hwofs;
> > +                   void *addr;
> > +
> > +                   if (si >= na->num_tx_desc)
> > +                           si -= na->num_tx_desc;
> > +                   addr = NMB(slot + si);
> > +                   txr->tx_base[i].buffer_addr =
> > +                       htole64(vtophys(addr));
> > +                   /* reload the map for netmap mode */
> > +                   netmap_load_map(txr->txtag,
> > +                       txbuf->map, addr, na->buff_size);
> > +           }
> > +#endif /* DEV_NETMAP */
> 
> Can these vtophys(9) usages be fixed to use bus_dma(9) instead so netmap
> works with bounce buffers, IOMMUs etc?

maybe. Can you suggest how to change it ?

Consider that (not here but in other places) vtophys() is called
in a time-critical loop so performance matters a lot. As long as i
can compute the physical address in advance and cache it in my own
array, i suppose that should be fine (in which case the calls to
vtophys(addr) would become NMPB(slot + si) where the NMPB() macro
would hide translations and checks.

cheers
luigi
> 
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to