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>