Date: Mon, 18 Dec 2006 12:48:56 -0800 From: John-Mark Gurney <gurney_j@resnet.uoregon.edu> To: tanniru.sankar@wipro.com Cc: freebsd-net@freebsd.org Subject: Re: ' bus_dmamap_load_mbuf_sg ( ) ' function usage problem Message-ID: <20061218204856.GC1350@funkthat.com> In-Reply-To: <8B9F8433B684734581EB519F1A3E5AF436CC6A@blr-m3-msg.wipro.com> References: <8B9F8433B684734581EB519F1A3E5AF436CC6A@blr-m3-msg.wipro.com>
next in thread | previous in thread | raw e-mail | index | archive | help
tanniru.sankar@wipro.com wrote this message on Mon, Dec 18, 2006 at 20:05 +0530:
> I am facing a problem on FreeBSD 7.0 during mapping using '
> bus_dmamap_load_mbuf_sg ( ) ' function .
> Details are below.
>
> It is AMD 64 bit machine. I have allocated jumbo buffer memory using
> ' m_getcl ' function.
>
> mp = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR, MJUM9BYTES);
>
> As it got success here, I am trying to map the buffer as below.
>
> err = bus_dmamap_load_mbuf_sg(dma_tag_rx, map, mp, &seg, &cnt,
> BUS_DMA_NOWAIT);
>
> Here it is getting error for the mbuf size equal to MJUM9BYTES.
> The type of error is ' EFBIG '.
>
> I have create rx jumbo dma tag with attributes as following.
[...]
> MJUM9BYTES, /* Maximum Size */
>
> 1 , /* Number of Segments */
>
> MJUM9BYTES, /* Maximum Segment Size */
This is probably the problem... Most likely the buffer is non-contiguous
in memory, and needs 3 segments to satisfy the mapping... Try increasing
the number of segments and see what happens...
--
John-Mark Gurney Voice: +1 415 225 5579
"All that I will do, has been done, All that I have, has not."
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20061218204856.GC1350>
