Date: Wed, 20 Feb 2013 09:44:12 -0500 From: Aman Sawrup <aman.sawrup@bluecoat.com> To: freebsd-usb@freebsd.org Subject: Re: Insufficient memory reserved for xfer->dma_page_ptr? Message-ID: <5124E13C.10003@bluecoat.com> In-Reply-To: <201302200836.56015.hselasky@c2i.net> References: <1360360082956-5785167.post@n5.nabble.com> <201302090001.57258.hselasky@c2i.net> <5123FC0B.70009@bluecoat.com> <201302200836.56015.hselasky@c2i.net>
index | next in thread | previous in thread | raw e-mail
Hi Hans,
If I understand correctly, I need to set bufsize in struct usb_config as
follows:
[UMASS_T_BBB_DATA_READ] = {
.type = UE_BULK,
.endpoint = UE_ADDR_ANY,
.direction = UE_DIR_IN,
.frames = 128,
.bufsize = UMASS_BULK_SIZE * 128,
.flags = {.proxy_buffer = 1,.short_xfer_ok = 1, UMASS_USB_FLAGS},
.callback = &umass_t_bbb_data_read_callback,
.timeout = 0, /* overwritten later */
},
Thanks
Aman
On 02/20/2013 02:36 AM, Hans Petter Selasky wrote:
> On Tuesday 19 February 2013 23:26:19 Aman Sawrup wrote:
>> I believe the amount of memory reserved needs to be much higher. For
>> example, if sizeof(struct usb_page) is 16 bytes, then for n_frbuffers of
>> 128 and parm->bufsize of 131072, we need the following amount of memory
>> reserved:
>>
>> parm->bufsize / USB_PAGE_SIZE * n_frbuffers * sizeof(struct usb_page)
>> = 131072 / 4096 * 128 * 16
>> = 65536
> Hi,
>
> The parm->bufsize is shared for all frbuffers, so the formula should be
> correct. In your computation you assume that parm->bufsize gives the maximum
> for each frbuffer. That is not the case.
>
> That means, when you configure bufsize, you must not exceed that size as a
> total when setting up frames. This include all transfer types. I think there
> are asserts for that so you should get a panic fairly quickly.
>
> --HPS
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5124E13C.10003>
