Hi, Macpaul Lin <macpaul.lin@xxxxxxxxxxxx> writes: > Nowadays some embedded systems use VCOM to transfer large log and data. > Take LTE MODEM as an example, during the long debugging stage, large > log and data were transfer through VCOM when doing field try or in > operator's lab. Here we suggest slightly increase the transfer buffer > in u_serial.c for performance improving. > > Signed-off-by: Macpaul Lin <macpaul.lin@xxxxxxxxxxxx> > --- > Changes for v2: > - Drop previous patch for adding flag which indicates hardware capability in > gadget.h and in DMA engine according to Alan's suggestion. Thanks. > - Replace requested buffer size "REQ_BUF_SIZE" instead of checking hardware > capability. > - Refine commit messages. > Changes for v3: > - Code: no change. > Commit: Add missing change log in v2. > > drivers/usb/gadget/function/u_serial.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/usb/gadget/function/u_serial.c b/drivers/usb/gadget/function/u_serial.c > index 3cfc6e2..d7912a9 100644 > --- a/drivers/usb/gadget/function/u_serial.c > +++ b/drivers/usb/gadget/function/u_serial.c > @@ -80,6 +80,7 @@ > #define QUEUE_SIZE 16 > #define WRITE_BUF_SIZE 8192 /* TX only */ > #define GS_CONSOLE_BUF_SIZE 8192 > +#define REQ_BUF_SIZE 4096 > > /* console info */ > struct gs_console { > @@ -247,7 +248,7 @@ static int gs_start_tx(struct gs_port *port) > break; > > req = list_entry(pool->next, struct usb_request, list); > - len = gs_send_packet(port, req->buf, in->maxpacket); > + len = gs_send_packet(port, req->buf, REQ_BUF_SIZE); > if (len == 0) { > wake_up_interruptible(&port->drain_wait); > break; > @@ -514,7 +515,7 @@ static int gs_alloc_requests(struct usb_ep *ep, struct list_head *head, > * be as speedy as we might otherwise be. > */ > for (i = 0; i < n; i++) { > - req = gs_alloc_req(ep, ep->maxpacket, GFP_ATOMIC); > + req = gs_alloc_req(ep, REQ_BUF_SIZE, GFP_ATOMIC); since this can only be applied for the next merge window, it would be much better if you work rework how requests are used here and, as I mentioned in the other subthread, preallocate a list of requests that get recycled. This would allow us to allocate memory without GFP_ATOMIC. -- balbi
Attachment:
signature.asc
Description: PGP signature