From patchwork Thu Jul 7 08:32:39 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yoshihiro Shimoda X-Patchwork-Id: 9218369 X-Patchwork-Delegate: geert@linux-m68k.org Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 61E05607D9 for ; Thu, 7 Jul 2016 08:34:54 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 54A10287AC for ; Thu, 7 Jul 2016 08:34:54 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 496B2287B3; Thu, 7 Jul 2016 08:34:54 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B70A2287AC for ; Thu, 7 Jul 2016 08:34:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1030486AbcGGIew (ORCPT ); Thu, 7 Jul 2016 04:34:52 -0400 Received: from relmlor1.renesas.com ([210.160.252.171]:64026 "EHLO relmlie4.idc.renesas.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1030535AbcGGIdL (ORCPT ); Thu, 7 Jul 2016 04:33:11 -0400 Received: from unknown (HELO relmlir3.idc.renesas.com) ([10.200.68.153]) by relmlie4.idc.renesas.com with ESMTP; 07 Jul 2016 17:33:09 +0900 Received: from relmlac4.idc.renesas.com (relmlac4.idc.renesas.com [10.200.69.24]) by relmlir3.idc.renesas.com (Postfix) with ESMTP id 3E2D54D1A9; Thu, 7 Jul 2016 17:33:09 +0900 (JST) Received: by relmlac4.idc.renesas.com (Postfix, from userid 0) id 2EEB5480A4; Thu, 7 Jul 2016 17:33:09 +0900 (JST) Received: from relmlac4.idc.renesas.com (localhost [127.0.0.1]) by relmlac4.idc.renesas.com (Postfix) with ESMTP id 29723480A3; Thu, 7 Jul 2016 17:33:09 +0900 (JST) Received: from relmlii2.idc.renesas.com [10.200.68.66] by relmlac4.idc.renesas.com with ESMTP id TAA26979; Thu, 7 Jul 2016 17:33:09 +0900 X-IronPort-AV: E=Sophos;i="5.22,559,1449500400"; d="scan'";a="215083341" Received: from mail-sg2apc01lp0243.outbound.protection.outlook.com (HELO APC01-SG2-obe.outbound.protection.outlook.com) ([65.55.88.243]) by relmlii2.idc.renesas.com with ESMTP/TLS/AES256-SHA; 07 Jul 2016 17:33:08 +0900 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesasgroup.onmicrosoft.com; s=selector1-renesas-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=YzI5oAu+jy1SVcuag3DYDfnSYhhckQwTIpBa62/onTQ=; b=EmePsQIYyYE5chNsCw4ioBCqWeDZKnW84yC/qm/lNEyXN0Hfr94Iv6kHp0keoiWC1WMw2WiHWjxc5NtZMeYx37MPuBmyxS8qaKLy+E70w/rr7l2xte7fbt69rf3dx8ZPkQ50Qfh1QsA7C07f5uvAz7RLOJ4s5TnRQmClmb7bgEE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=<>; Received: from localhost (211.11.155.144) by SIXPR06MB0559.apcprd06.prod.outlook.com (10.160.238.152) with Microsoft SMTP Server (TLS) id 15.1.534.14; Thu, 7 Jul 2016 08:33:07 +0000 From: Yoshihiro Shimoda To: CC: , , , Yoshihiro Shimoda Subject: [PATCH/RFC 1/4] usb: gadget: add a new quirk to avoid skb_reserve in u_ether.c Date: Thu, 7 Jul 2016 17:32:39 +0900 Message-ID: <1467880362-4844-2-git-send-email-yoshihiro.shimoda.uh@renesas.com> X-Mailer: git-send-email 1.9.4.msysgit.1 In-Reply-To: <1467880362-4844-1-git-send-email-yoshihiro.shimoda.uh@renesas.com> References: <1467880362-4844-1-git-send-email-yoshihiro.shimoda.uh@renesas.com> MIME-Version: 1.0 X-Originating-IP: [211.11.155.144] X-ClientProxiedBy: OS1PR01CA0021.jpnprd01.prod.outlook.com (10.161.225.159) To SIXPR06MB0559.apcprd06.prod.outlook.com (10.160.238.152) X-MS-Office365-Filtering-Correlation-Id: cafd6a3a-6a60-4d18-f1ca-08d3a6415248 X-Microsoft-Exchange-Diagnostics: 1; SIXPR06MB0559; 2:fyshUWomXlL/0beeVAEGWQx9kNWbuVFB9IAOxyNt2XHoSr2mpsQ3lVsQUfaC4N0Rnv0Fm4b+JoVa8x10BYWMADiZzl4yA7ituzMHPaDNYd/97/ow68tBT8SNPtlvydJ1x3yB3ZzykRxLOWHS22NP0PObn9GP5wD1WkNA9WmryN4Ffze/2kYjEhMcCNl2RKGm; 3:YG6fHE1tfLfiB+r3MzC+JaxRJkutYxqXo9SKmmJeGHZpBjTDUTv1E/XOdj/n39MswQ6yjfbFRHuBHEJLj64MjWoM9vyLg8lc8YCyTNY8ub63imaWnbJ/KXFdjlh8an1/ X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SIXPR06MB0559; X-Microsoft-Exchange-Diagnostics: 1; SIXPR06MB0559; 25:5JIHCiDxmLvswGv+PjwjNeh/IgSQ+Pqu7YicPsFvtxX1i4rMJEWppdG2A6pbhvgWhggpmP0+Q/l0M0hVJzVHqpoyFie08gwTV8zTlgaF0b+L8Ix09UHU8ckAH1BlIGHYT4rBpXjyQlPL762KtsoGb1T3GWcbUUY/QEHjbK9i3F9k6GoWnoINCOvAVbAjzR97eE6hK2/WXx8Bm+6Cgd8cLuijD0G17+dQN/9f3p1ye7yYp/X0GunDVIvmvXVtxDMyb9KE80mjaW9kEK/pRlRjf84aKPM+PfkBuMHPkeP+1kynT/y7avmvMJvY2oNSCLkZM6BeEVVfQPwEW/atf5qQJj5MsR6aCN7TLQGAIpybgt+gzcPJxJb3UvfV60Z8g+xeizGPBAQ2o7DqPu4OzM/Xjc9R/Ov8H1ol/uA+efyTlbdtusydT3XnDmC9dJ8mcIp5MzbRCgocgReiPQphBDEWsWZykMUtY2/xfZ115jE8RAAyS34f6hI8Xi3LCUOF+9oLPjb/QTSbWa8MBJ78WgoAJgVnhioFrYe10JOI5XgnN/1tfV9sIHZ6qr+Zm17lsmYZlFiGTqJYN8VCOeJL+gEVQ7wPE5ZcIEQfOcy1P5WG7MSIyieVA7BWRfB224nzergfvHPR82uQzwRIj9nGUz+bSUCZumC4FAL9pA/dZ7uFOfOa9WeWWIryS4bTv+tsJAS/HQe6wcFS/OX6DXPrpHoXL3+IhfL9NWLA9L7OMm5xh6c=; 31:rQE/8mtfOzWeyiqvLf7zinjs5D+px93pw6E8N6ASBXs/N8Bk01Ddx6ypFda7HrN/3idTiz5b58LlbhCLc8rSjXsDTESGc9CjKuiEkZ/beCG1bsEFGGlUo2hPse3X2ExRIB/L8phohfG7paOraMqxeITxJ47zmRKi33OJ2Oi0vaq3LEdHEQ8i1P6pQ oUi54Gmw6MQfcXdPntM8mDdsn3Dew== X-Microsoft-Exchange-Diagnostics: 1; SIXPR06MB0559; 20:x97S81YTMrgZ4NDKfVvPxaiHGmv2pd3fd1LmcSXDbui1K/D3TMbgOFaYZK4duzgT6litPWJRfHNCSXwXYUJ37086YzUmD4FIqgTF1Q7P867FC44rKa4YygPrdFWMVh8bTLrON2YpJTjTrfRHLfT4H5iDufZZq7TfJEUPWcg6wJ0ATSmXOUomU+Tvg1ra4Bxm8GDMJBfRZyRhToxmxpjMlzWGiqZsGNWnBsAMVkJZ+haJjnGZqn0eYUIZj0wfVRi5tmxvnXp6lAyupDw1HPPXnyoBhsW4lUk3xshZWf/9fCNBAagZIXF932iapwmWpcDuBFKrs/HuV6k3YZSxE985qdSPTUAoPIUZEYvK3Dc4NEoQW7f1DBe7PJ26kZEJ+TWHc/mjPJtDyr6gLowII6D3I3fT+/4XNOpAyl57a0A+oRPoUgXZhbz1Cu239ig5Wv44fGt7YAYeiMPKfhgjTHgLePY4PsRmr3CvQEKDvvz0kfK7Oj0XxcwKhUz3bD8Qn9Ob; 4:qBfr3SaoNzwUtJ94XmLUHGEh1gumMwLDY7UsbSL2yekQ4rXNcALZw4ggAaU42kavvyJrXdDGhTn3kXV+8YCt8RLuVTow87Rg2ZO4hau+M8PEjW9jL8Gewsca17GHwcHsBYA8V07YBmLxXbGoeosLCkZcukoiDvbj+B3CT2uCVlS3VLqOxesL4WhR2uThVgEDE0PsyLq3T2SVjUZ1CDjSIj4uHDZONqRg9fritd4Qnv2uUTl9GeKXp3tZ6+LsVV3s/WTPHtKn3dw4y/AkXk+awqVFlKAI4H39QOAQ8ZeKnxqe31Rim+azcTeo/I04wwgawbjtgRTMwxrjrAtK04Hk1tlgZtcNbFOXAWxnpg1de/ZYFy3kybgjKjgmmnGDEoqI0rehq//AU9tetfFMOQJ+9Q== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6055026); SRVR:SIXPR06MB0559; BCL:0; PCL:0; RULEID:; SRVR:SIXPR06MB0559; X-Forefront-PRVS: 0996D1900D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(6069001)(7916002)(189002)(199003)(7846002)(92566002)(4326007)(7736002)(189998001)(2950100001)(6116002)(586003)(33646002)(3846002)(19580405001)(81156014)(8676002)(68736007)(110136002)(19580395003)(50226002)(81166006)(97736004)(78352004)(2906002)(4001430100002)(107886002)(50986999)(50466002)(76176999)(305945005)(105586002)(101416001)(48376002)(66066001)(36756003)(47776003)(76506005)(2351001)(106356001)(229853001)(42186005)(5003940100001)(77096005); DIR:OUT; SFP:1102; SCL:1; SRVR:SIXPR06MB0559; H:localhost; FPR:; SPF:None; PTR:InfoNoRecords; MX:0; A:0; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SIXPR06MB0559; 23:cgXmY/Y2A2kOJHFkXb6uSyjNON45RT8psEzp16xVI?= =?us-ascii?Q?EJI2+blezEiv70xbnkK8JbaUrqEojUBnOFUqjWIrq5WiudJHOuFJe1zC0Hmp?= =?us-ascii?Q?UWkmrG9uPEAP4YnRQWuYUwQWFriHrf1v1qdoBH26wkfNgUuDgYivFpG9/koY?= =?us-ascii?Q?zRY//8LPzjBJ4IKwJuvn5LiSmXMB8R7HjTnU9KRCfhXwNznSYVA9q89M0awT?= =?us-ascii?Q?WBdjVpQ3N3hvTiFxoBXh3yYKi/qXC+yRthjh49KN7It5ark5jWa11SfZJ8Xz?= =?us-ascii?Q?15pq+w+5/K2Tid1nf3B5gU0Mary7/j3G5Pu5YitIVala3dJX1sVfaBNE9ess?= =?us-ascii?Q?ZwYJVHZtcPyEISx24Vj4uWdw6m0duI4IDeuxezzcSYJ94ot+CLpVV3r2c9s6?= =?us-ascii?Q?xV8bdPr8/rykkycaznAgMXUxaSrWF8wLnzLBr+9EkDD3M1938BtMMnZ793QQ?= =?us-ascii?Q?44VaqYb/uv6D2UzsPEB/0T3T4ymal5G/+VKVNvtGc14tROsY2Rmj9jN5BMhT?= =?us-ascii?Q?olPP5fuzGnVi3jRl0Cst5TkkQloigYG224twAKtXFE7U/uQN7f4z0wocM5Dr?= =?us-ascii?Q?31n2BjAdUDrqfbw2R9IKW8Fb2uROL3pMZqK7d66dkK343FPgHAuhsf+SZ1vA?= =?us-ascii?Q?JnP5rqAo2APP2V0YrW8LNw9wSdkPh6UkOZ08XcPcTibJ2WtV/83F4/IVt4bP?= =?us-ascii?Q?pqHZdLLWkWOLLcrQODm5PS1hbYMKUK1vHerAXmoF93h7ZbOmRQyEjudkKm0u?= =?us-ascii?Q?RkLz2B90v/LMnVXs+T2u2MK09DGsIsAQLtfg8HVNN/nWY/fEdBBu9OvZb2Dt?= =?us-ascii?Q?UnctxHmD0ZkNeajbOdcKgQOkHGkN4nWir3G67HlQtMDWPYcmIR+lATkVFWeq?= =?us-ascii?Q?jeaFDww+7aclGX0NsHkBI2rJVXkIL3g4WWDvOkFtY1VdTfbhoYiJzp3XscXH?= =?us-ascii?Q?cEh6d6aCJYuXF+7R9BfPe+Xt+tCa9RrAs5jEq/xHJHiZYIMnUryIDarRIKhD?= =?us-ascii?Q?KVeZYxBxvaj7G7CmeLd9jFenHCn1bhQwC4PyRsRKBVVjvFGRMYXuTPWMGGBv?= =?us-ascii?Q?YUj9d17C3PaZnNv66pakyMPklqCIifSI+PF0HpA4NkGuqXzl4ELPya9GWAnT?= =?us-ascii?Q?uKZe5yihWsNQdbRmwCrzo0egxQjqxbvrL1/Q8+UBAIyLNUQCw6P5w=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; SIXPR06MB0559; 6:b1ZLNUWk7reRbiKLsB0Er8KC6/JmQZiPZUozYAgV9Q5+ieZrKdJTGu4W+FWSF9TlzykFmoAOzlk4eqJpwdy5lcHURZelJyST4o8uRF/nMAJj90K3pVtDYrEKOp6CMTuevPFjGsR3bkbIDD7XBrDaCiCGRv8lYOhFiocu/z4+B60QWFyemW+N6TNfWpaOAQGEZ7/zvFpHco6s4YUV3KfQxLJve30BZQEiB+nSjAQC1hWZ9y716EBNncSYFSb4HyXIhsCggxDQj4V4zlLFZePzMfqLrSl+JBkrjBNnzVEE68qA1G1dpmQXwNS3OY/UHrAIJvvz6x9YtRBXkZv7JM9+wg==; 5:eY/MAglQ/rMRXImAlvHQBASghTlYS8V/Hm68ZVDcv/iNDHlD/iD70cWFuzpbWjbk+I1/0ocCqt1nEIMMJ9osUWw3Ga1KsQd6xhI2gHK7rM+XkWBNrgw+C0lmY3++fpxpu1xdU2d0PucYr81Oovrdyg==; 24:iBJgV0RVHzTr7VWZTB+JX5XAa+vtf2PgUstCS5spNbLpTbQQ7Qm+FSA0CJe4Ij6lzfoyd3wQTX+jPTfuk7ebCyEmWFGGQ7oBLqey2NYYZJw=; 7:4JTQygFuIAUqC0Mr+QC9b+LSL3X/eysLeiMtmL7MR2oAtmLQfqryyKEV+FxzyASa1igq8LUPubfSOn2QZNu1unu3sxjHtcq/aTTMrQdjtflLxHYTd2n/ODdHmXCBY/SKwzaGu1WLS1lDMQ+vIdu34195puJyBZHaNoNaXZWylD6tRX/qmLWlMAnmBiC0TJZlDItN7D8HIJCAyICRMZhvmI1HNaYcXxIpj+MfWmG5sVokC1Fuu9MD3yJo//De1ARh SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SIXPR06MB0559; 20:K/lsl5OW4iJYrQN85uXKipnL+NHLUfYl68idGz0ZxLKzvG/tM6GiQ5q3sEY/Yau2+LFVz6TZ5Bv/tSIg0DdR57ZF9lywGTIS8L5Pk9jYWrlLAjB7jAKhssjZjH7P4XHDl8JOn4em6wxXdAnzf/CA8dtn8Zss7alxH3qAzKcWuCg= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2016 08:33:07.1087 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SIXPR06MB0559 Sender: linux-renesas-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-renesas-soc@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Some platforms (e.g. R-Car SoCs) has memory alignment restriction. If memory alignment is not match, the usb peripheral driver desides not to DMA controller. Then, the performance is not good. In the case of u_ether.c, since it calls skb_reserve() in rx_submit(), it is possible to cause memory alignment mispatch in some platforms (like R-Car SoCs). So, this patch adds a new quirk "quirk_avoids_skb_reserve" to avoid skb_reserve() calling in u_ether.c to improve performance. A peripheral driver will set this flag and network gadget drivers (e.g. f_ncm.c) will reference the flag via gadget_avoids_skb_reserve(). Signed-off-by: Yoshihiro Shimoda --- include/linux/usb/gadget.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h index 612dbdf..c7ff7fe 100644 --- a/include/linux/usb/gadget.h +++ b/include/linux/usb/gadget.h @@ -346,6 +346,8 @@ struct usb_gadget_ops { * or B-Peripheral wants to take host role. * @quirk_ep_out_aligned_size: epout requires buffer size to be aligned to * MaxPacketSize. + * @quirk_avoids_skb_reserve: udc/platform wants to avoid skb_reserve() in + * u_ether.c to improve performance. * @is_selfpowered: if the gadget is self-powered. * @deactivated: True if gadget is deactivated - in deactivated state it cannot * be connected. @@ -398,6 +400,7 @@ struct usb_gadget { unsigned quirk_altset_not_supp:1; unsigned quirk_stall_not_supp:1; unsigned quirk_zlp_not_supp:1; + unsigned quirk_avoids_skb_reserve:1; unsigned is_selfpowered:1; unsigned deactivated:1; unsigned connected:1; @@ -463,6 +466,16 @@ static inline int gadget_is_zlp_supported(struct usb_gadget *g) } /** + * gadget_avoids_skb_reserve - return true iff the hardware would like to avoid + * skb_reserve to improve performance. + * @g: controller to check for quirk + */ +static inline int gadget_avoids_skb_reserve(struct usb_gadget *g) +{ + return g->quirk_avoids_skb_reserve; +} + +/** * gadget_is_dualspeed - return true iff the hardware handles high speed * @g: controller that might support both high and full speeds */