Date: Mon, 17 Sep 2007 17:48:36 +0200 From: Hans Petter Selasky <hselasky@c2i.net> To: Kip Macy <kmacy@freebsd.org> Cc: Perforce Change Reviews <perforce@freebsd.org> Subject: Re: PERFORCE change 126455 for review Message-ID: <200709171748.36573.hselasky@c2i.net> In-Reply-To: <200709152326.l8FNQwPq024216@repoman.freebsd.org> References: <200709152326.l8FNQwPq024216@repoman.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sunday 16 September 2007, Kip Macy wrote: > http://perforce.freebsd.org/chv.cgi?CH=126455 > > Change 126455 by kmacy@kmacy_home:ethng on 2007/09/15 23:26:15 > > skip busdma rx setup on x86 > increases rx throughput by about 15% on udp netperf recv Really this should be done for all platforms. The mbuf m_data field should have a companion pointer for example m_databuffer of type "struct usbd_page_chache *" : struct usbd_page_cache { struct usbd_page *page_start; struct usbd_page *page_end; struct usbd_page *page_cur; uint32_t page_offset_buf; uint32_t page_offset_cur; }; struct usbd_page { void *buffer; bus_size_t physaddr; #ifdef __FreeBSD__ bus_dma_tag_t tag; bus_dmamap_t map; register_t intr_temp; #endif #ifdef __NetBSD__ bus_dma_tag_t tag; bus_dmamap_t map; bus_dma_segment_t seg; register_t intr_temp; int32_t seg_count; #endif uint32_t length; }; Then based on the "tag" and "map" from the structures pointed to by "m_databuffer" you perform a flush/invalidate before setting up DMA. What do you think Kip ? --HPS
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200709171748.36573.hselasky>