From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754738AbcI2KYQ (ORCPT ); Thu, 29 Sep 2016 06:24:16 -0400 Received: from mail-cys01nam02on0072.outbound.protection.outlook.com ([104.47.37.72]:61472 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752736AbcI2KYH (ORCPT ); Thu, 29 Sep 2016 06:24:07 -0400 X-Greylist: delayed 5833 seconds by postgrey-1.27 at vger.kernel.org; Thu, 29 Sep 2016 06:24:07 EDT Authentication-Results: spf=pass (sender IP is 149.199.60.83) smtp.mailfrom=xilinx.com; vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=bestguesspass action=none header.from=xilinx.com; From: Manish Narani To: , , , , , , , , , , CC: , Subject: [LINUX PATCH] usb: gadget: Configure data verification through module parameter in gadget zero Date: Thu, 29 Sep 2016 14:18:54 +0530 Message-ID: <1475138934-3647-1-git-send-email-mnarani@xilinx.com> X-Mailer: git-send-email 2.1.1 X-RCIS-Action: ALLOW X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.0.0.1202-22606.005 X-TM-AS-User-Approved-Sender: Yes;Yes X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:149.199.60.83;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(7916002)(2980300002)(438002)(199003)(189002)(7846002)(36756003)(356003)(8666005)(90966002)(36386004)(15650500001)(106466001)(229853001)(586003)(86362001)(87936001)(2201001)(63266004)(42186005)(52956003)(189998001)(103686003)(92566002)(5001770100001)(50986999)(305945005)(107886002)(50226002)(5660300001)(7416002)(626004)(11100500001)(8936002)(46386002)(45336002)(6666003)(81166006)(81156014)(5003940100001)(8676002)(4326007)(2906002)(47776003)(50466002)(4001430100002)(19580395003)(19580405001)(33646002)(48376002)(7059030)(107986001)(921003)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR02MB2883;H:xsj-pvapsmtpgw01;FPR:;SPF:Pass;PTR:unknown-60-83.xilinx.com;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BL2NAM02FT022;1:9hV17+ODVAmUaehnobhr9FBd1JT78pQidJKB6lwRld9pm4Vr/QMSkkilrlQaJWMFUj8196H6lLkYjz/p6eNfdzxXlQRk2tGm71waUMlSyXdcf/7+7PG6oix8Iaf/zYm2xgfCfXWR2d8e9djrjVCOr5EjeCITdNp3jeAlXmFM39UzuNq/YXH580Td+TGDIscQnxdVpfS9vEj3jVq6e6lyvvVYXFIC8F4i3BzZ9yVfuD31+f+Xnqtc+frIFPH14HvTakwsQLLkjZxGsFzrRYfPpTe/nyLqZSBKC1lbTjTMgUO/Qb7zqEPhex2o7geHEpfuAKlKQS0AjI7DR9MiZVHqs8yzpqZP4a8fJM5rMjho1fU+v2GnKO4nXMr/qNIA0Yj/66IFlEgblimO9nU/K5Jzjh+6lmaWq5M/85Rj/ELjSAufJHjoV1hZpW0WlW/2OCrKJWHaikmwYW3soX4r8QD1LtQDKIUK2+hvvKmrdy4jrBvJgPGeatD6NhzRme2QAGk521iYsZDRwDbvbe+Y6JY1hU26TyjLYP0fmSWyMZOyg3FhYisYOf464NQzNu7iAVsae4eC6FK5iu9r4OtzWvhVqRkJuphHuVbSWWZ1eOft4as= MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: 8763e4af-653b-4bac-5a2f-08d3e8457d77 X-Microsoft-Exchange-Diagnostics: 1;BN6PR02MB2883;2:exu99TO1MqdNcH5aDiuPKo7hRduC6l1P19272dbLgdArVauj+6RsVOIdKbg8Yzwmi6RtMvYcUXz+O+8JXSlJNqMbVWTMHTMIZaHnwXnU+BByp9PxXjU3N8nSOD8R9zADOB4klCqiY1VoaNkBlDK4cPATr9aQdP3LihpefgD4vgYcqQe9XOsWiBN2xM1OlzZF4bY600hNJT45DPPNcfuHuQ==;3:NKSDuMrpKs6ycWzjcvWrsLTDdyWTd21aoZJ03t2pH6CCI5QQvhu4qLT/zujzeDZnhSjGOtxR77JjERoAcFsggwZs2gqWPNa56y4kSNGGHhLkJa3ecbrncpD5aNXXeqV3gWVwdjzRzjQ3CMrgpJxLKrKfP76C9shvpwHlmYY64rv/ZXCvdwxH12eIN30PdjrP6jbKvxgFnh1RJhxKZ00X/xYOzXXm+85h3KElUgyhTYD4hmV2VQEi+4HgZv6WL56mqZHvA4GWCqJSoU/XIQrGDz0JGh0aJWQEXVChwKlXnmY=;25:XscIO2lDz17JdiMuG2CSa/efAYh58jCd7IIgvaTJfZ2vVFgpmH7LoPWACKE9eRxxA8EjA0hBcpDg+UfZkUoF32iiT/Ille8WNsSczdulRHozBdP7WSCPC5BwVzqa3+An3WItc3TcQTmqYjRzVLAp6ANVOXrqyaboiWxb7fD2+JbalUMjtht+QyGdLhcHS2Ecs6gaY8gcN2wh3F2/fVh+Ivxz7h8tOARiRmpXr9/ndur93ioc8DK3eK1s+YrmoLr8t6g/lAx3VyNjx2kZqC5ge5n0aVvozMQed7309HQnWhtWCjgocT5oj465boMh74MI2ryQvSq1hSJ2s0J6T5Njc/qMCNRi5I+6P9kYRqbO0NWhFlz+aerBE3jh8GzoTJtPANsylKBtp2hwEYv+ZxDwhLRehTUbKEBufpxVECZZZi1Wr7P+ww978sziy/phrOGS X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(8251501002);SRVR:BN6PR02MB2883; X-Microsoft-Exchange-Diagnostics: 1;BN6PR02MB2883;31:LNTuMlEElfjXz151lhE3CoHUuByb5ORx+M/TMhmGEtewlNf7Av8kRMO7675my4MYZw08K+PdHNz1TcBDbg6LEqHQbe3U0FvQ1sLCezFGNv3uej5O5iHcLgx/pv2PX6JwS+Vx07CDYy/CVt0sG7xJEEZ6OXmuhrfazaaSyMO2Whof1aRJN/QRFTOVhKa+58qxg4+5AeCgvVPlatwZKmxKEiZJnzZ9meePS019TF5Y6SK8B88AcbelnRHoC9/kqkOD;20:n9eIzaqwpJarZ90uSNlVkGGvG7mQcGsWm7tNIIHuisKjYByaLtRkct32Nhr9MS3b64lbGB67Q00jero2tqNgP50p7d3oQv/Br7uttHgNSiZtFHYtChDnrZx8hk+nMlgyey/XOukTl4SI23u00/aLfOKtGyxoQ7rTeUvLwaUlOLJ1FHxdZmMTaRFtaDmwht4BxFM8iLPkaRAHoA8+PN28XJCL78AGe0atnWkUP66uhDgLY4cOyYidOT5DnPWaxa9hecQDwMeZF3qLMtRc2piivoG5nY7o6NW/AmXOAMlfBvxL0Qk2d3A0MRmNM1HgL6KJJdQMDuQUoDoicIfR+2U/cPT7PrgOdkiR2Yx/TzjYmUTH88VgK02L2FrPPFV75sXq6EV+kS7zDfPLBTyTWhS8nVp7xH4K5sjMoHvayaKd9TloxBysVGQdjI/+mrKHTBQCyA5XTuoK+NRBeD/tYwZ5USzi53zQY8Y2dx3fF41c9PAgoH6Aimu9vUvtd3cjshuH X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(192813158149592); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(13023025)(13018025)(13024025)(13017025)(13015025)(8121501046)(5005006)(3002001)(10201501046)(6055026);SRVR:BN6PR02MB2883;BCL:0;PCL:0;RULEID:;SRVR:BN6PR02MB2883; X-Microsoft-Exchange-Diagnostics: 1;BN6PR02MB2883;4:dgi52Zm30IN++QCbNFgu/dPWbRckwoxP0Rrs0YgAevP4RKeGy8dbFZyvx1APkFCAny0Zm/58spUTHCGVCm0ZMVRPU8CRFsuVha/aM/lmdGtatwz4fh0GljfeDZVNCLI6Ll2Vmi1EqrgGk8RvsgbG7rm+rUbz3rGXGnMRwtDjGkw4zwYQvCedBt6oh5NXrwGdWX8g4rPyCaDBPaNKnr4GbN2ZBCU1aKZ80LVj/l+1Wq6772RNfJFmIvgVVv1R+UakecM+x/FE7VkcQeThqiznQUPUpZl61P7ZSNFVXuC/PA1wHbgJ/a5tb1gJMFqDcDk/tHjXfWsgrrpzVjCif7H1rTaHnZ3y8/AbTGSY/D/EZ/RyDb5bADVq3JgSPfq5IXpIunLxrR6JhSaRdTYSQKcA+OXo/0wCuimrncbvn3acyhjS5a1MztEoxk0ewzp1WzuPNnueiumgYH48QOEg99fFwaJXZFuezknm4muHLW25ovrznIhDbOfSyiBW0DPuLWmLvdR5HRKV5zwzIS0OJ+1bnPK3oZIxnMtcvSXCF8/QWYTv9INN25w6vRG2LGbtCEZ7 X-Forefront-PRVS: 00808B16F3 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BN6PR02MB2883;23:fZtoatY7bFC5A7DA08g3xmvrdUDorm1P9KhotQhr+?= =?us-ascii?Q?HuIadMLiqEPKApbTbmmhQm0T3GoVB83hlJYRCVsJeYfZve7yDwkcZNJj0gn+?= =?us-ascii?Q?Tnv/hgPr9SA1/SOn2gREymzXmAlxy0lAo3FK+rO5Hxs/ES87dEJQO8HpvKJO?= =?us-ascii?Q?dGBM4gBj3Lt9kW4qa90N6U9bH2lqaVCFvb8aUVsmbhyfGQA4tRJiFs4sloC1?= =?us-ascii?Q?4y06CZVyvr2Fx7ix1EPEgFCAvMr1dWjVslsmRNKP97rkzfbcsY/tOXUIu5Xu?= =?us-ascii?Q?Gc7KYlTDgTYJAJcyJoL6Hr97iJAQzHzcvVQ2SAHIB2k59TIm8rvQ7Y1Kp7sK?= =?us-ascii?Q?yOFBKBeZH7ycm9GGWOaOtCWdeW83CDmq1gcX7Fz7gLrL+POlXNmDLLxzB3d0?= =?us-ascii?Q?4twQ4l9jhGQCmE8Cxl4FAr2jvrD6tpur9tkSY7ULNXvxiOwDEJxWF8IC4dOO?= =?us-ascii?Q?ItYesgoKiPEJyjJUELQlTLV/F4YsyEfrDd2eZlBfwIisFj1Kt+qr/4wUncnl?= =?us-ascii?Q?TNb23WpxUU/XE/gHpWWd0QP6t0yq7udI3Mc8NOTjuFo02C4CAHONSGk+9mc/?= =?us-ascii?Q?90OlvsV12mt6dOEQOah2vO4FBunK09wikr/CWM/D1fgcP9nJ1h+5esn/1PVP?= =?us-ascii?Q?allySyXUHTIQB3W5Zby4BJFNKJZnzZ5mZ6qLtln166if1iHgltlENQHFvKPe?= =?us-ascii?Q?AJIqAPKxFLu/hcby3CFpNu2wXH4/PcJTZMvJs6AwSrIbOIqG0F8uEUIqJAAl?= =?us-ascii?Q?phri0KLCXzY6BZelcACx6nBb8cOKq2QvDskY48gFUeRzgrE2lkLcE6mdkA4Y?= =?us-ascii?Q?a3kOpMpC2DHbErNgDtHq7IKdTbe200mjRm6HMXNpDbZ41BElm0qi3bjHOMlL?= =?us-ascii?Q?itqzLpAGegXHr4a6ni7eM70l1bNOHHOgXYqQXPKZbAdKY+g1seBTUclJAisi?= =?us-ascii?Q?i6qVR0Hhn+Pl8EKV+9IyX4m18lSwr6j6cXnh+LmCYSKHM/G+oegylUntIXkH?= =?us-ascii?Q?UTMzkW5nSIkFyN1rJzFVqn6IrTCcTLt1Mpb3YZ432wPez++0ODVrvuFXwlDL?= =?us-ascii?Q?tw4wEA7k5XPVwfaYE7QLIx3v+qUW5Tt8XWX0HF2GswCppnYruxyxfw+OV9oS?= =?us-ascii?Q?cP/K7CfGwlM5KRlfsZWR8qA2Nh/k6TKwwMP5xK0oUpWkhjhsH9uTHLLKnh1k?= =?us-ascii?Q?ECnZ4wn4mMO9Ldc6fENzQQjwN0geYJJdwzbC056sQy0zXPU+8UvdPYQpVmgm?= =?us-ascii?Q?cvB/lo8IE0U0Gz3u/VgXuk6bULX0ZT9x4H3iXeaxY5bGr/6N8Gjz6ytBT24Q?= =?us-ascii?Q?y24V32ScCdm7fc+KDnJMeo=3D?= X-Microsoft-Exchange-Diagnostics: 1;BN6PR02MB2883;6:NEZFXRwQe0JKB8dv3bW2PxjcMiXl+jWJKGXyPXAOROcYm/jPg3l4dN+b/oITzWa33raAZTlpX+cCPDtdsS5IYg/M1p1p29/yICmLi9AtCPc5QmezDWBGEjlyjLEWGIlc9mt5txjxF9YuWQGcHSbj5or1LXxVOAkZ5nvtgzT1PLqzr9BgBZKXYLaA31BOgHAfncaIo1UDVNyYmJw56nQEfzBc9wRaPHsBmlyYN2C52WG7yInBF32N2/Iyz5EFQS2uulWYDDEMC1nlLH99jk3eSkb3qRqIP5NoJunYNHXoqJkFFe+2Pg9C3Cvdo0zXTMlLDCRypp3T8nc6v0Odouj9r9fJrMrXL+R/NPDBh5wfO9c=;5:hBqOXCpXkRLmdgmzek/n2WHeCd9AZ3v9pmEIG5cCVBPN3nUSb0AqU1nsi0zWr7fWNUcd3yzAeS4neXkPiH3t6pIXQyskoTW+11IkyB4PigGQKLmtMOn5bsxhkAOJRJSzQQIEpusETcgJOJitgq4nZr3vzk+7DK8bUV63YHT9g/s=;24:2JdpSV44l9fo/2iWKfGAlnTPnpdhFqpX2XhrgikQxBbVoWFUjwY9qbw1yNC7+SDZ4//35QEDfVTlbEhZJh6yjsQWZzPH8ge3ry/vYwD5BEY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BN6PR02MB2883;7:+ant74bwW8D5y97M3fWkg6+0SPw60Ty0wnS3xIp6WL2sZlC+7Nl0od6FjVhktVlt7fmwHbRMMDz7RgGmMyAackG8uUUoaGxNgMT1vAVefdxMmki0XzfWMPUykc22tU/JzQHVM4VimnghOQzRFctH7pru21ZQnOX+3/myIgCJLL5B6/p11yhUaJuX4VsnOzcqfSDRRFhuPy7YjM0uz1wTvhgs3HXnCuqFrT3m+PeWnPlvdMoMq2Sk9eCTtyVp4bzBt3EQGIouiMCnIA/qX/5jPNMiSVGrJg5Q4qP5mjegY6XN0gWlIZeiKLFhsDKjy/yurBnE+iVkLioo/wOZdUfZtA== X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2016 08:49:14.1295 (UTC) X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c;Ip=[149.199.60.83];Helo=[xsj-pvapsmtpgw01] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR02MB2883 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch adds support to configure data verification through module parameter. This parameter can be used to disable data verification in case if one wants to measure peak Bulk/Isoc-IN/OUT performance Signed-off-by: Manish Narani --- drivers/usb/gadget/function/f_sourcesink.c | 6 ++++-- drivers/usb/gadget/function/g_zero.h | 3 +++ drivers/usb/gadget/legacy/zero.c | 5 +++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/usb/gadget/function/f_sourcesink.c b/drivers/usb/gadget/function/f_sourcesink.c index 81274ba..2328d11 100644 --- a/drivers/usb/gadget/function/f_sourcesink.c +++ b/drivers/usb/gadget/function/f_sourcesink.c @@ -45,6 +45,7 @@ struct f_sourcesink { int cur_alt; unsigned pattern; + unsigned verify_rx_data; unsigned isoc_interval; unsigned isoc_maxpacket; unsigned isoc_mult; @@ -552,7 +553,7 @@ static void source_sink_complete(struct usb_ep *ep, struct usb_request *req) switch (status) { case 0: /* normal completion? */ - if (ep == ss->out_ep) { + if (ss->verify_rx_data && (ep == ss->out_ep)) { check_read_data(ss, req); if (ss->pattern != 2) memset(req->buf, 0x55, req->length); @@ -630,7 +631,7 @@ static int source_sink_start_ep(struct f_sourcesink *ss, bool is_in, req->complete = source_sink_complete; if (is_in) reinit_write_data(ep, req); - else if (ss->pattern != 2) + else if (ss->verify_rx_data && (ss->pattern != 2)) memset(req->buf, 0x55, req->length); status = usb_ep_queue(ep, req, GFP_ATOMIC); @@ -866,6 +867,7 @@ static struct usb_function *source_sink_alloc_func( mutex_unlock(&ss_opts->lock); ss->pattern = ss_opts->pattern; + ss->verify_rx_data = ss_opts->verify_rx_data; ss->isoc_interval = ss_opts->isoc_interval; ss->isoc_maxpacket = ss_opts->isoc_maxpacket; ss->isoc_mult = ss_opts->isoc_mult; diff --git a/drivers/usb/gadget/function/g_zero.h b/drivers/usb/gadget/function/g_zero.h index b3234e7..8e5d20c 100644 --- a/drivers/usb/gadget/function/g_zero.h +++ b/drivers/usb/gadget/function/g_zero.h @@ -6,6 +6,7 @@ #ifndef __G_ZERO_H #define __G_ZERO_H +#define GZERO_VERIFY_RX_DATA 1 #define GZERO_BULK_BUFLEN 4096 #define GZERO_QLEN 32 #define GZERO_ISOC_INTERVAL 4 @@ -15,6 +16,7 @@ struct usb_zero_options { unsigned pattern; + unsigned verify_rx_data; unsigned isoc_interval; unsigned isoc_maxpacket; unsigned isoc_mult; @@ -29,6 +31,7 @@ struct usb_zero_options { struct f_ss_opts { struct usb_function_instance func_inst; unsigned pattern; + unsigned verify_rx_data; unsigned isoc_interval; unsigned isoc_maxpacket; unsigned isoc_mult; diff --git a/drivers/usb/gadget/legacy/zero.c b/drivers/usb/gadget/legacy/zero.c index c88f5e0..0087ef8 100644 --- a/drivers/usb/gadget/legacy/zero.c +++ b/drivers/usb/gadget/legacy/zero.c @@ -64,6 +64,7 @@ static bool loopdefault = 0; module_param(loopdefault, bool, S_IRUGO|S_IWUSR); static struct usb_zero_options gzero_options = { + .verify_rx_data = GZERO_VERIFY_RX_DATA, .isoc_interval = GZERO_ISOC_INTERVAL, .isoc_maxpacket = GZERO_ISOC_MAXPACKET, .bulk_buflen = GZERO_BULK_BUFLEN, @@ -236,6 +237,9 @@ module_param_named(buflen, gzero_options.bulk_buflen, uint, 0); module_param_named(pattern, gzero_options.pattern, uint, S_IRUGO|S_IWUSR); MODULE_PARM_DESC(pattern, "0 = all zeroes, 1 = mod63, 2 = none"); +module_param_named(verify, gzero_options.verify_rx_data, uint, S_IRUGO|S_IWUSR); +MODULE_PARM_DESC(verify, "Verification of received data : 0 = No, 1 = Yes"); + module_param_named(isoc_interval, gzero_options.isoc_interval, uint, S_IRUGO|S_IWUSR); MODULE_PARM_DESC(isoc_interval, "1 - 16"); @@ -294,6 +298,7 @@ static int zero_bind(struct usb_composite_dev *cdev) ss_opts = container_of(func_inst_ss, struct f_ss_opts, func_inst); ss_opts->pattern = gzero_options.pattern; + ss_opts->verify_rx_data = gzero_options.verify_rx_data; ss_opts->isoc_interval = gzero_options.isoc_interval; ss_opts->isoc_maxpacket = gzero_options.isoc_maxpacket; ss_opts->isoc_mult = gzero_options.isoc_mult; -- 2.1.1