From owner-freebsd-usb@FreeBSD.ORG Mon Dec 22 09:10:11 2014 Return-Path: Delivered-To: freebsd-usb@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 6759A238 for ; Mon, 22 Dec 2014 09:10:11 +0000 (UTC) Received: from mail.turbocat.net (heidi.turbocat.net [88.198.202.214]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 2379D3A60 for ; Mon, 22 Dec 2014 09:10:10 +0000 (UTC) Received: from laptop015.home.selasky.org (cm-176.74.213.204.customer.telag.net [176.74.213.204]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.turbocat.net (Postfix) with ESMTPSA id ABAE41FE022; Mon, 22 Dec 2014 10:10:08 +0100 (CET) Message-ID: <5497E016.7020809@selasky.org> Date: Mon, 22 Dec 2014 10:10:46 +0100 From: Hans Petter Selasky User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:31.0) Gecko/20100101 Thunderbird/31.3.0 MIME-Version: 1.0 To: Kohji Okuno Subject: Re: About XHCI_TD_PAGE_SIZE. References: <20141217.110334.1811096089058017495.okuno.kohji@jp.panasonic.com> <549541BC.6070505@selasky.org> <20141222.103833.2105768702793613386.okuno.kohji@jp.panasonic.com> In-Reply-To: <20141222.103833.2105768702793613386.okuno.kohji@jp.panasonic.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Cc: freebsd-usb@freebsd.org X-BeenThere: freebsd-usb@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: FreeBSD support for USB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Dec 2014 09:10:11 -0000 On 12/22/14 02:38, Kohji Okuno wrote: > From: Hans Petter Selasky > Subject: Re: About XHCI_TD_PAGE_SIZE. > Date: Sat, 20 Dec 2014 10:30:36 +0100 > >> On 12/17/14 05:42, Nidal Khalil wrote: >>> I agree. Thanks >>> >>> Nidal >>> On Dec 16, 2014 6:25 PM, "Kohji Okuno" wrote: >>> >>>> Hi Hans, >>>> >>>> If we use PAGE_SIZE as USB_PAGE_SIZE, we should use PAGE_SIZE as >>>> XHCI_TD_PAGE_SIZE, too. I think. >>>> >>>> As you know, one TRB can use 1~64kB for the transfer length. >>>> >> >> Hi, >> >> We currently only check if 4K pages are supported by the hardware. If you >> change the value of XHCI_TD_PAGE_SIZE, you will also need to change the checks >> other places. You know that PAGE_SIZE is not a constant? >> >> Do you have a complete patch? >> >> --HPS >> > > Hi, > > XHCI_TD_PAGE_SIZE is used at only 2-points. > > 1. use as XHCI_TD_PAYLOAD_MAX (XHCI_TD_PAGE_NBUF) in xhci.h > We sholud change as the following, I think. > > - #define XHCI_TD_PAGE_NBUF 17 /* units, room enough for 64Kbytes */ > - #define XHCI_TD_PAGE_SIZE 4096 /* bytes */ > - #define XHCI_TD_PAYLOAD_MAX (XHCI_TD_PAGE_SIZE * (XHCI_TD_PAGE_NBUF - 1)) > + #define XHCI_TD_PAYLOAD_MAX (64*1024) /* bytes */ > + #define XHCI_TD_PAGE_SIZE PAGE_SIZE /* bytes */ > + /* units, room enough for 64Kbytes */ > + #define XHCI_TD_PAGE_NBUF (XHCI_TD_PAYLOAD_MAX/XHCI_TD_PAGE_SIZE + 1) > > 2. use as the maximum length of TRB. > If PAGE_SIZE is 8kB, buf_res.length may be 8kB. > But, we can set 1B~64kB for length of TRB. This is the spcification > of xHCI. So, we don't need change this point. > > xhci.c > 1807 /* check for maximum length */ > 1808 if (buf_res.length > XHCI_TD_PAGE_SIZE) > 1809 buf_res.length = XHCI_TD_PAGE_SIZE; > Hi Kohji, I see your points. By doing this you save some memory in the descriptor layout for 8K page size - right? BTW: Do you think the following check is OK, or should it be extended to check also for 8K? if (!(XREAD4(sc, oper, XHCI_PAGESIZE) & XHCI_PAGESIZE_4K)) { device_printf(sc->sc_bus.parent, "Controller does " "not support 4K page size.\n"); return (USB_ERR_IOERROR); } I guess your patch is more in the direction of optimisation. Is it very urgent? Or is it fine if I handle it the beginning of January? Thank you for your input and review! --HPS