From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754769AbcI2LUs (ORCPT ); Thu, 29 Sep 2016 07:20:48 -0400 Received: from mail-sn1nam01on0041.outbound.protection.outlook.com ([104.47.32.41]:31376 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751243AbcI2LUi (ORCPT ); Thu, 29 Sep 2016 07:20:38 -0400 X-Greylist: delayed 3662 seconds by postgrey-1.27 at vger.kernel.org; Thu, 29 Sep 2016 07:20:37 EDT Authentication-Results: spf=pass (sender IP is 149.199.60.100) 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 bulk maxburst through module parameter in gadget zero. Date: Thu, 29 Sep 2016 14:16:44 +0530 Message-ID: <1475138804-3335-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.100;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(7916002)(2980300002)(438002)(199003)(189002)(305945005)(5660300001)(8676002)(229853001)(36756003)(2906002)(8666005)(7846002)(81166006)(47776003)(81156014)(103686003)(356003)(46386002)(8936002)(45336002)(90966002)(50226002)(86362001)(106466001)(2201001)(4001430100002)(42186005)(50466002)(5001770100001)(11100500001)(48376002)(4326007)(626004)(87936001)(107886002)(586003)(7416002)(92566002)(36386004)(33646002)(189998001)(19580405001)(50986999)(63266004)(52956003)(19580395003)(5003940100001)(7059030)(107986001)(921003)(1121003)(5001870100001)(19627235001);DIR:OUT;SFP:1101;SCL:1;SRVR:BL2PR02MB1970;H:xsj-pvapsmtpgw02;FPR:;SPF:Pass;PTR:xapps1.xilinx.com,unknown-60-100.xilinx.com;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;SN1NAM02FT017;1:fj0tTMe/pzKdlEFp3+TU+/yRorVIZ3J8WCPqmWmGHB3+6dxK5tuXE6d861t4kwdzs9/YWapQ7l2UKKJS7c+LU5L5qOGnwCGZa/R83A27z9wbm5x28o5rMgKQrn3UIaYmIez7d9qKVg6HZRgW1tuWIavQeOwVDMDV3+txarybkMnNgSjEGHzJUQOoVAcLl0a5uSFDtUvchO11eL7ip02IB20t86TWk2tBky2zqEI6EOIVH4uqnrptOlrB9V1z16aPYkdGFBkt48PEVIkfDIyw9n2gWBGVg+SiBaHp3KbPwKHNQv/jsJ4022a9/3KhO+GQGXGR4MQ45aLkxLxkTWugH4rvPqbTdHnES3X3Yj3VzcC7KkcDxqGpPJoz7DR1XDaVz/QZ27G6ClD1lxAwSJOdmCrtZeyAHX6qEri8zDINlChIJQwOqjVJuERlCTJf+vJyiQzuavLf6WiviE3UoFOtESOM5pp4doz38a+1q9pawvwrv0quDloS0ugQMrCbhBlmlRMiYTpMGAfKZEcfdQEBQcVLzKugyp0XHL23gYvnZFmBPil117zTRAbGypEP4jJ5QS48X0hHR9r/1Cl+zP52A1JXPVOegLird1Sb46rmzjg= MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: 7a1ba58b-887d-41dd-20b1-08d3e84528b9 X-Microsoft-Exchange-Diagnostics: 1;BL2PR02MB1970;2:EIOVk/Ak54UQN77LAixXqd3zirhiquc7f+akou6TWIrC0DfpkS01L8atXx2y8Wj3IwWNwR5MsDUjgrt256JPJpMsMiM38Rz5ToeWtPabAuaeUUQGtZAimG1+I1+6GU7K3aEF+/b7a2lUgSnlci13HRkI/nFyGs6p+3hF5O1R0nVoqZTCGD6kfHu4V2w8HYze;3:jboM0/xvUvrTNKtSLKC6WrCnMz5A7Pe+BLDDF/XY10l1Ip7RLt7VcpH1AMHdcq8IHwrSYLP+89bF5IiNlCSO6Mv1itw0ralxalRJc6z/QOIX58v+2APUQKS+7xfOUXM+SqIuV6V7FhxQn+Od8dD+yzkN7s+M5kpPFhRm4EJ5FuTLqdivJow0ploDGFv3Y8yiomfpOSsuss5EDwtR8KECftKUj+aThYcXU1KcBz0KoesKVJHab+4UDbyAHkPv42Hv4BM85bmbXbDCmyqlRMpXuQ==;25:YlZ1Lh3izI2IPlztr4zbaUK3C3wlgezrPMWI7OlAjJhYvB2vUbjmNHuN6cVR74xb68QiRyWOj2vDJC3WgEO8mrnfS8O7Uj6DGWBETYZEt89XO8Le8hdHyDVywLtufOz5GOwkJZXbkmXAb9KgGFjlbij0NKIw6UIG6Aewd2udWhzTIFXRYoo+OHS7RWjf1mSQ3/y+HLUvSZeZfvqKJ4pWzlL1iMycNAbFXHNSW4t+BWWYT75Jz5Jqk4M7iAKrPAXNhRIznoTGR8r4004yQseVe//mPHtUcy9/85vhKOBuftxg16npePAdP25pwFQx20EmE26SxOKQA5DrcGG60uWI+7sRJtwThDRI0g3G7Yl7YiOX9bqnvQ9QNJQiKQJuWYakq4Xn3su69aemmGHYx1CVS+gcuwrs0r7zFWaL0Tv7igI= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(8251501002);SRVR:BL2PR02MB1970; X-Microsoft-Exchange-Diagnostics: 1;BL2PR02MB1970;31:AcQoJ4oSEZMAGvZ04fW6NE7wD77L/e312jVKbzJybdJF8Gg1ox3u9Zc0IggRnXsgzp48sKCpghBEAVWvD9wsLjGGaI5PXnnlbbD4CyV1P8898+IOSTgK6oycodgvdDp07CkXF5AYMsFSZRzvReEhAjpYaOIflRgJ9m2Pjeox1qPROtdUaZRBGMwFWPPUrY84fqpVHqUNW8IG1eZCiiYWkhfkLLGO6rj525/S4RRlN2A=;20:biIAJpKi34XucGHJb8E4ENuU0Pc3+DZFGMCtcnAGDFmP10qrONEi7qMwUPhZtND+HR9GohGS4//N+taUT+f9m5zmQf6vBnPhttL8u6dhs0avx4XQtOpWxYDT14o+T09Q/k2tgELG42URMdNe1KNyujh8MXq/5oi0oBQ1pUlUu3mH+TN9y/3lVeGXNytXjaQmYaxV0W7C2+A9r1YXjv4WW4jhnddx8mXsNtEsuzEA15/d/ALR7fVuiHnLtCBUY/4PXoqRvnsay+Qwmv2C5BCYs/Kyf57lRd9UnopKK7dmy357N7Kut1lf9EqqC52EaMkQrWkT5cUsi0HFNmp0g15xm4qSshetDiCb6R6+L/cb1ubuLVsZ7g4b5O3i8ddU4IQ7hVmnrF1NYfKPfg7TRrSHynHxzWRNRxmjpNxRgbEEeS5LoIjl+yS2ybOt8mJHsMa/TyMYy9pnoQt3ZMEWUEmKv8SJMCUQDBIt8IMUjcIAO9C6fzVeiwCf14xX3hXGVzAx 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)(13017025)(13015025)(13018025)(13024025)(8121501046)(5005006)(3002001)(10201501046)(6055026);SRVR:BL2PR02MB1970;BCL:0;PCL:0;RULEID:;SRVR:BL2PR02MB1970; X-Microsoft-Exchange-Diagnostics: 1;BL2PR02MB1970;4:YAbDlclyDgKcHyXRiFUEBnfSZTRzsfpg5cK6WQOvGq8NqKMAmn6LlJVo4WalFrOBv19RaZ73W0w7cvGFLLmvbQ1a2MrpU1OUt/4RjAJVuJN3iTq4yah7gcJeESSsrCxjjg/Lzua4A4tCy0ccYGZqGn6fEURQ8Sf+2ZjA30M0FL6N3XQvVfUKdligDFwmIF+cxfX3f0NW51t0wALDzW8zezEIhTese2Yo9KjAvcloyoi8N6a/r52X/x4AJd9strSvJjaYu+6Y8oOociSk/aMUX5QW6OZ3jSA8cHmgLjeDJZH2CtLF2yZHG4ipKAb3tEciDsVwynA4Rl2jAQJE7zxLMzhBrkZzF3s5tkCDCUZyOek7h6nogOS5NzFZze32DtMG88beWCiB3sMJ3cGEYaeBXMTch87TZUqgXmfFAn7WwyAdcCUy83cDeTmo9DpQWXji59MiwK7TeQQyrVcBqN5uiwwBem8cKGVp1d3p4pLFcvAfTcbSDNVoB/idEqLD160p5qkBV8YrdVZCEpURZDqOG4eSjFXd6AglmgrHumDlhJM= X-Forefront-PRVS: 00808B16F3 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BL2PR02MB1970;23:58RtkNVuWj5awVg2o772fBVwl6AyVNt1L89rebcrk?= =?us-ascii?Q?LuMtf069rNElCCNQLQJWOoJYQIYf6neJxWTp545i2hh75tHw7uNuppPk7a4K?= =?us-ascii?Q?HMtxTh6tPHnl+nha4CwCs2bdxjwuNwZwi87naWdFQnA9I+FAheHDSXjvxE0I?= =?us-ascii?Q?Xk5J47pVyc8gU2btpAQJ8zFtmwC0aZEqfHNvBpf9/fbZPyOhSeuXxHiKZ3oj?= =?us-ascii?Q?bocWbwYC+naSRkZ1+13cYxhjBbE13eivA7tJQZ8zAo646it6koHkWgzDSVct?= =?us-ascii?Q?oa/9HuuJ1ZXYdzIYWo7vHvG2NwA65XJ850KbcBw+FZiiKvd9s8l0eeOcYmwY?= =?us-ascii?Q?xi/Y3lW2e8yXkzQ8KJtVZbWrQgCFzgVZgkEtdWSw85iGlz1ocJIOigFJ3CYf?= =?us-ascii?Q?RYjI0LMP9JcvGO/11ch8LoAyhdVmN80jcsNvHaiib81Oa1EGfJvo5DG1PPmG?= =?us-ascii?Q?IK4QXVYexINgFzJVrxTo1XA9aQUNxcq7ZAEm+rAZHw+x5j3j++irf79kjtrb?= =?us-ascii?Q?bUa44/Gc0HYV2P+UeHgEdsWkwFTWiCuA1XZdyAtfdjYVmvsAG9Md/tSKXOZZ?= =?us-ascii?Q?Byi/7pmyzYkc65RlykTOuSviULW7awHwP42GyXVzziPd4CHrzd75gvLzM+Ok?= =?us-ascii?Q?SdAvtiwiFCZrVpNhVEjCN1APO1cH2j9Bav5M8gKoI2U6sIxJ5WtOuBFXeI1O?= =?us-ascii?Q?b3n0ioAe+zS9pAluQ0mfhQgrndKra1fghMYP/GEnXg6G8YJ9kZqzyH5qlIjY?= =?us-ascii?Q?AP21gW4hFNVoON6Qa9FvK4SAH1SeHpgJDfr9dU/CGDkYp22I6EdQvxEnlV4z?= =?us-ascii?Q?xGR8c4fVey+9z3hqw+OeRtvGU2cZdp503V92kRl/YpE/Jjm6LpEzsL2llxSe?= =?us-ascii?Q?J+jii4ySzpL+Prf8LPXYQM2gu8CE4JaQmraEHn2r2EMkjbZqG72ylXtgPvA1?= =?us-ascii?Q?xYwrPkSVLXlgbWo4gCl9zhYw/kju4a4I6hk0QU4UwVKRI26W0uuT7AcLDEFB?= =?us-ascii?Q?eh7nJ/z3cIHxauQkA5kLWIwu/oYLTjAxJv7TZBbkLtoR088+ImMWb/CnfvKn?= =?us-ascii?Q?4Pu5vhwMd9hfrgvvkg+sXWt2XJuNRYqNAeUlld2DhEIPzKpET3h743wfGaW/?= =?us-ascii?Q?XMISZ3Utrbt2cKivDKDeEx44r6VEwMTRvCj6QdyVB+Oab9myJBm8WPwvD0ai?= =?us-ascii?Q?kzHcL+nYUQC1inBJMTWGQZfF0H2xAh19lFqlhUAwvxFoek3sIpe30sPozxqL?= =?us-ascii?Q?lIHyCcz1LSwaM6JMigplKd6kaJhOBNzv1NNITM9JRUla85HuGDsOoY/kDAp0?= =?us-ascii?Q?EwhmhnhoMewQyKeefmjDnonhSuf2yB6QNwIO2DJ7c4B?= X-Microsoft-Exchange-Diagnostics: 1;BL2PR02MB1970;6:ozom47PH0yX2Bbeb588/oDlVa8pEwtRTKzAsSSfQktIeevXmpC98T81XuoHqJDjOAw7bvUMTbiP9TciUhF+4SXaQx+sWajacDR7pgM2S0UqFiiEJ1zLbIx+m1J5SyUs++a4MjIP+wf5tzfU7BL+3Z8OhsOvmpm1l3/vMWLp7Vz5eykVRlh2UKasG9FkPZ9T5iZ7MS15EwhTScWrAAHMAkzkAKMqziNzW8BoC9Hqm+cawT654ERDQ8waoTV/t0M0cXw8YkbQ4rR40ecqqHfb3j4yz4YObYmA/g2SkfEhGb5zTExJt718+73PdARyj/cPhvYM1D9HSerqoWzFRz9NE0A==;5:LE6GCGMIwC1lStkRjVRvxXO2uJV8PDQyBW3zUcCnA4in3NL4RrRD2eoFc7ISCNv5E/gktDq/gEGjNJ0YhWV2rVAvnknQLV/0b7/bmz1lAvfNThR0l7D8U8mWjVfnQ58kP1GaxHgO18E/IaCYtmLglw==;24:gpSxD16bXrf9sB5hdFgeCqAmZwtt3k+GczIE6uN4Ft3z1Zfd8x6xZiJ+HSAh2WcT0GY4dVdkxLYprT3oaCJCL7QvAHjS4s90ZIqrzWAZc3U=;7:Q7OqypNP7ZCe03rNygFljHP6s8GLdwi+pN0hmg+ZNKEzGKJSoR3KTLNFuh7eMDK/9FmW7yzKa1B2FK1NSUnXqFDRpJYU4R3TpyGWUVO2chJuLRvD4RTsZe3hXU2faLHJVHcjTdqWZ8AeAF6PwonRLB1VYJZ4SoYHBHWCfARTysJUO6ibQjLIbSxsYy7GdaGnP1Dna1rC5iWnBk9OCRzHWIuF6STSVy0CPwxfjn6TB+iekWvmnFunhPAp/JHpg75y5JNVn90+abZiIm0X7qIXyCPYfdyj/YSX0UmUch/irNtNOJhFdSE0p8bLZAbOy6AW SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2016 08:46:51.7511 (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.100];Helo=[xsj-pvapsmtpgw02] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL2PR02MB1970 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch adds support to configure bulk maxburst through module parameter. This parameter can be used to modify bulk maxburst 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 | 14 ++++++++++++++ drivers/usb/gadget/function/g_zero.h | 2 ++ drivers/usb/gadget/legacy/zero.c | 5 +++++ 3 files changed, 21 insertions(+), 0 deletions(-) diff --git a/drivers/usb/gadget/function/f_sourcesink.c b/drivers/usb/gadget/function/f_sourcesink.c index df0189d..81274ba 100644 --- a/drivers/usb/gadget/function/f_sourcesink.c +++ b/drivers/usb/gadget/function/f_sourcesink.c @@ -49,6 +49,7 @@ struct f_sourcesink { unsigned isoc_maxpacket; unsigned isoc_mult; unsigned isoc_maxburst; + unsigned bulk_maxburst; unsigned buflen; unsigned bulk_qlen; unsigned iso_qlen; @@ -334,6 +335,10 @@ sourcesink_bind(struct usb_configuration *c, struct usb_function *f) source_sink_intf_alt0.bInterfaceNumber = id; source_sink_intf_alt1.bInterfaceNumber = id; + /* sanity check the bulk module parameters */ + if (ss->bulk_maxburst > 15) + ss->bulk_maxburst = 15; + /* allocate bulk endpoints */ ss->in_ep = usb_ep_autoconfig(cdev->gadget, &fs_source_desc); if (!ss->in_ep) { @@ -347,6 +352,14 @@ autoconf_fail: if (!ss->out_ep) goto autoconf_fail; + /* + * Fill in the SS bulk descriptors from the module parameters. + * We assume that the user knows what they are doing and won't + * give parameters that their UDC doesn't support. + */ + ss_source_comp_desc.bMaxBurst = ss->bulk_maxburst; + ss_sink_comp_desc.bMaxBurst = ss->bulk_maxburst; + /* sanity check the isoc module parameters */ if (ss->isoc_interval < 1) ss->isoc_interval = 1; @@ -857,6 +870,7 @@ static struct usb_function *source_sink_alloc_func( ss->isoc_maxpacket = ss_opts->isoc_maxpacket; ss->isoc_mult = ss_opts->isoc_mult; ss->isoc_maxburst = ss_opts->isoc_maxburst; + ss->bulk_maxburst = ss_opts->bulk_maxburst; ss->buflen = ss_opts->bulk_buflen; ss->bulk_qlen = ss_opts->bulk_qlen; ss->iso_qlen = ss_opts->iso_qlen; diff --git a/drivers/usb/gadget/function/g_zero.h b/drivers/usb/gadget/function/g_zero.h index 492924d..b3234e7 100644 --- a/drivers/usb/gadget/function/g_zero.h +++ b/drivers/usb/gadget/function/g_zero.h @@ -19,6 +19,7 @@ struct usb_zero_options { unsigned isoc_maxpacket; unsigned isoc_mult; unsigned isoc_maxburst; + unsigned bulk_maxburst; unsigned bulk_buflen; unsigned qlen; unsigned ss_bulk_qlen; @@ -32,6 +33,7 @@ struct f_ss_opts { unsigned isoc_maxpacket; unsigned isoc_mult; unsigned isoc_maxburst; + unsigned bulk_maxburst; unsigned bulk_buflen; unsigned bulk_qlen; unsigned iso_qlen; diff --git a/drivers/usb/gadget/legacy/zero.c b/drivers/usb/gadget/legacy/zero.c index d02e2ce..c88f5e0 100644 --- a/drivers/usb/gadget/legacy/zero.c +++ b/drivers/usb/gadget/legacy/zero.c @@ -247,6 +247,10 @@ MODULE_PARM_DESC(isoc_maxpacket, "0 - 1023 (fs), 0 - 1024 (hs/ss)"); module_param_named(isoc_mult, gzero_options.isoc_mult, uint, S_IRUGO|S_IWUSR); MODULE_PARM_DESC(isoc_mult, "0 - 2 (hs/ss only)"); +module_param_named(bulk_maxburst, gzero_options.bulk_maxburst, uint, + S_IRUGO|S_IWUSR); +MODULE_PARM_DESC(bulk_maxburst, "0 - 15 (ss only)"); + module_param_named(isoc_maxburst, gzero_options.isoc_maxburst, uint, S_IRUGO|S_IWUSR); MODULE_PARM_DESC(isoc_maxburst, "0 - 15 (ss only)"); @@ -294,6 +298,7 @@ static int zero_bind(struct usb_composite_dev *cdev) ss_opts->isoc_maxpacket = gzero_options.isoc_maxpacket; ss_opts->isoc_mult = gzero_options.isoc_mult; ss_opts->isoc_maxburst = gzero_options.isoc_maxburst; + ss_opts->bulk_maxburst = gzero_options.bulk_maxburst; ss_opts->bulk_buflen = gzero_options.bulk_buflen; ss_opts->bulk_qlen = gzero_options.ss_bulk_qlen; ss_opts->iso_qlen = gzero_options.ss_iso_qlen; -- 1.7.1