Skip site navigation (1)Skip section navigation (2)
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>