From patchwork Wed Jun 7 21:43:27 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 9772919 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 99A8460350 for ; Wed, 7 Jun 2017 21:44:13 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A83D62847A for ; Wed, 7 Jun 2017 21:44:13 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9CEAF284F4; Wed, 7 Jun 2017 21:44:13 +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.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID 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 B2B552847A for ; Wed, 7 Jun 2017 21:44:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751780AbdFGVoL (ORCPT ); Wed, 7 Jun 2017 17:44:11 -0400 Received: from mail-co1nam03on0066.outbound.protection.outlook.com ([104.47.40.66]:46976 "EHLO NAM03-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751559AbdFGVoA (ORCPT ); Wed, 7 Jun 2017 17:44:00 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=kgkIOeT/PvVpezuLbz83Q6NjoMKR+E/+cyrZHOf9FtY=; b=Kb0x6zuol23k0WmmdkjvKINYcv0+zFduzfZdBeLUy9uxjMLtV+gqfylPicKuMom0D0hUPrTmdsNdBiSSiujCH9tgEXmIWQyPEwm3+bPrm1VVKFijzo3TOJmrJLLYDZid+YGdeCMc0gRiATUO05eK8/m8OZbPAv8KuFQYPxUjnRY= Received: from BY2PR07CA0089.namprd07.prod.outlook.com (10.166.107.42) by BLUPR07MB420.namprd07.prod.outlook.com (10.141.28.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1157.12; Wed, 7 Jun 2017 21:43:58 +0000 Received: from BN1AFFO11FD028.protection.gbl (2a01:111:f400:7c10::185) by BY2PR07CA0089.outlook.office365.com (2a01:111:e400:7bff::42) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1157.12 via Frontend Transport; Wed, 7 Jun 2017 21:43:57 +0000 Authentication-Results: spf=none (sender IP is 50.232.66.26) smtp.mailfrom=cavium.com; vger.kernel.org; dkim=none (message not signed) header.d=none; vger.kernel.org; dmarc=none action=none header.from=cavium.com; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) Received: from CAEXCH02.caveonetworks.com (50.232.66.26) by BN1AFFO11FD028.mail.protection.outlook.com (10.58.52.88) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.1101.12 via Frontend Transport; Wed, 7 Jun 2017 21:43:56 +0000 Received: from dut1171.mv.qlogic.com (172.29.51.171) by CAEXCH02.caveonetworks.com (10.17.4.29) with Microsoft SMTP Server id 14.2.347.0; Wed, 7 Jun 2017 14:43:41 -0700 Received: from dut1171.mv.qlogic.com (localhost [127.0.0.1]) by dut1171.mv.qlogic.com (8.14.7/8.14.7) with ESMTP id v57LhfcK023181; Wed, 7 Jun 2017 14:43:41 -0700 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id v57Lhf2H023180; Wed, 7 Jun 2017 14:43:41 -0700 From: Himanshu Madhani To: , CC: , Subject: [PATCH 09/15] qla2xxx: Add function call to qpair for door bell Date: Wed, 7 Jun 2017 14:43:27 -0700 Message-ID: <20170607214333.23110-10-himanshu.madhani@cavium.com> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20170607214333.23110-1-himanshu.madhani@cavium.com> References: <20170607214333.23110-1-himanshu.madhani@cavium.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:50.232.66.26; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(39400400002)(39840400002)(39450400003)(39850400002)(39410400002)(2980300002)(428002)(199003)(189002)(9170700003)(2950100002)(42186005)(1076002)(5660300001)(6666003)(50986999)(189998001)(47776003)(76176999)(2906002)(33646002)(101416001)(36756003)(105586002)(305945005)(86362001)(575784001)(50226002)(8676002)(81166006)(8936002)(87636003)(72206003)(106466001)(478600001)(50466002)(107886003)(4326008)(48376002)(38730400002)(356003)(54906002)(5003940100001)(80596001); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR07MB420; H:CAEXCH02.caveonetworks.com; FPR:; SPF:None; MLV:sfv; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD028; 1:7ELOQayX+xcpZU1uDPHMPR8A2HCOpz6nJvo9kmjNC5onu8PFI1oa5VWzSoXN+sIj6IKYDx02UzBSfbV6m+gcy2dK5Th/bG/u/Iuqi9mHkgSAfRO9ORZOCDQ2Z/kHsmSBtBXkValbdBQS/Tj5dCm+ZrOl0ZemGmUiqtYBlpa8Q+Botcd1zpuQrVVSjpWEY8sOdT6QcD2JAfKumFv8eKyDWj34i8mI9F7H2+kP945u9zvxRM76NrqjuGod+TqJOcRSGZdARfzFmWLYiro16rnb9/vo/euYiP5fGNYtJgfMOORTj97NGPOUSnmipMKbU4gS3u6voi+rJSRtDCbgMGfjc3SloU+M5JMjrRHXjiBS+EEnivIbSEwvbonQoR88y/J07kgf1Q+cm5IqxMG+RJteItQTKZlbDZSBW9yDQ/VtcG2cZPo02EdugZzXGbc67I4WTDQCyK7cqNkSnh7hE0mqFbD4E/k4HyTKBHiEq9FKBYV1Os4oWsqZzKqkqaLjaOm+ X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BLUPR07MB420: X-MS-Office365-Filtering-Correlation-Id: abe7b3b0-7d6a-4284-75e3-08d4adee4d13 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254075)(201703131423075)(201703031133081)(201702281549075); SRVR:BLUPR07MB420; X-Microsoft-Exchange-Diagnostics: 1; BLUPR07MB420; 3:4StJuKvZZp8MVONHHSmDIpS7T4CR7ybZ+hYM/qP/N1a/nskGZYXkomdIaaOHhFpc1YqFnCXYCzu8DZMfDVjRHU7uaPCstZ29dNXRbjUBlwf0jobF+4TA95NS9ble47GtlIcO7ZYS5kQEf4boow9DpGc3DgNZ7fmMAkuLgrARcya91FEmGOuLvFDcn65LcF/4B5aRHTe8gLqAoPckgAmF4B6MB9abfVJgOflWiNVHygQjt0nSs9OWdJR/T0beqfXInjhUlnlgN09nACVCCsrhDxdg+D1XU5E+yBSNYuSpG7/8GQaOYjXb9YOG66XoRbkJPO3QVXr1YZVAg3sGiXzTVq//IRhDu2WK/+wET1t/QI/5vI6KboGQ4YrPOLU9ikagrxBSfAXxR6Ab4pB4a3hWEHFb+eK13HX8WixlYviDVag4dgiv1oEXm+Ekv/CVRrq6srvMui8ehD7a6sUVY/36HcqFQi8g9QCSffWFXXVycdWE5C84sUgzmyLLgUk6+Phf X-Microsoft-Exchange-Diagnostics: 1; BLUPR07MB420; 25:FCs1TudvTVmYuEfQ7Bfy0C1fva393w8YZ6cdGVrZZX5BvC/i1LvkZZ9NXtLn1NQdtw7n8Mh1RDqmmgY6xBepSi/Zl2I93LlnIDi0Orea/JtZcpi1y0SI2SpsfDlQ2wvUgT44rU3DEmiCVAKo3awFP5rvICvnCVIotdBaR1Wv41qynaV3fM6icsdOZRFQdF2pVxBLBZgoek31Zaa0xVcfDVyBzP1Oye+zGKIxhCwazScmT3T1etP5YEb8AJ7TcTsX+Y6HBTT0nS5EkRv/SkROKNl6mILmD4uGW78OIyi4xn5ggOcNygoZK6DvEBPHJj/JN1sPj7iInrrpg9tiqf1CyyfxrdxOl3PxdPVCkbAr3TCaN2hb9dixmCz9izoHBlx8y0Y7c/KrBvNSSX8mbJsWBYywj0sKm+BVlanTPAyIjBQ2Ugs/rcFbYyONXFnMBKlFiwleJ4fCPimkSk+ecQxQO8UYO30e4IdQ8uJV/lVuTBc=; 31:9l1sZKneSScXuV/yfVhuKmWCBc2589kf+nyjq9SpfYRDlWrAlbkrDdQyDQmuWK7fUytLs+dVmEob/lsOXPUq5zIoBxZYDL5b/4dhXALvqThOlCRpfrh9IkBQyspont6Jh2XlYncLtG7u/QtOww0NxCLUcqKvg8CV1cBvJm0PNxMwJh8EQL5N5OcDDQPXUS7MKuFntAZ3ICbG6st2S+1HkovMGBTp3yNKHGninLP3OHhxdmRJG33P3koMTTZgfmuK X-Microsoft-Exchange-Diagnostics: 1; BLUPR07MB420; 20:fgstWTsggSbOVuWG5t+IKIP6Y4EfpTnYGH+HxkHK0cPcqNzLj9/aw3qhUAHEiR6UMgmdjHxt+K60BnPz6BWAPoctdkuknw7LRqmxZ0aIK6steWj/qsJTwNLUVcSFla5Hg9e20XTxeeYDktK9aX7Qm7C4L2sun9yhFvao++Oy75UvM0E7EdebP7fB/y8I7+wG+rSiksBJcG7IANAHt1F3T3WnPLAKNd5Ltop/ia9+LLMERLfp5wL0+BL3DngrAd/tNkgXu6nNYgqqy88tTIuM/ueRUpOl+DAQ71HfwSRG6Y2i4qIXLA+ZcsnPLeaxl7W/tFKJCU3yRFjUmTJW9GAAVDbcGNBF5B8dtSYCxkkZWq1KiDus7mvbLz6vmXtdqrkNP3a8DdA0vdsvmOKj1pmCWNOMXuvRiqNolEzxM2TNWGKZxXJDGHLIBy9rZqZKkJAtH85ypTExPhQKLquh05Z0UzpfqPzveC8Lr+a1z/YnPgR2AC+RXgfURER0jFY3izFl X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(13018025)(13016025)(10201501046)(3002001)(100000703101)(100105400095)(93006095)(93001095)(6041248)(20161123564025)(20161123560025)(20161123562025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BLUPR07MB420; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BLUPR07MB420; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR07MB420; 4:inmdG+7jq8X1ii55fQR+YUwxUcOj9k/ut5drV+ivFzM?= =?us-ascii?Q?xqvf8HW3D3e1V06fiSNiuFul9V2lJ9X6ryusmKlulNP7VfJBUK0dKw9n+sLx?= =?us-ascii?Q?mRdkvQ+wQwUD4quDnGsf8WSNdx94H5uxAizxWYHp95bRWCIXlgVZyXDf75VU?= =?us-ascii?Q?LXkYMdN7OFgAzRiTU2QZmdIRad9nCfTlsYR4iOmAlGz1Mb4CI+jDtfTzqgok?= =?us-ascii?Q?IdkBrOflj4WLBhieaVIGB+5GExBbnSxmmsgYlZoQdugWpC0VYIn6Gm6kue+r?= =?us-ascii?Q?yaYmp2nmThHLXM9IStz7Ajr//+JxhmTNvhnZHWShJ2SaHIQ+sm+pk97/evPG?= =?us-ascii?Q?yInh1G5Dn8xrlywh4KjPPif4ghyUKDvcZJNLPwVndTsYwGCY5CZvw5VghvhB?= =?us-ascii?Q?LgNH7+m0HMm75mSRYLSQ3xPPGpzcZUHtbGNKXa4Z+EyOcEBkDVN3dQ3V3/CP?= =?us-ascii?Q?7tCyZtrKH08kkeE2XTF//Jd6Zih8SYshC3+iyFLt/aUO0R/kgn6oyZDSUSvn?= =?us-ascii?Q?Nil7oxPWgRa+YlKzmQU3oRZAC25e8yks7ey22emcm0xyIvbRn00F8qkdAxW8?= =?us-ascii?Q?u0rqMDpd4gyV4ktY2ypgxfIGsQszLPBpNiLm6WshoAIl5cZWxTnBcIGRyh26?= =?us-ascii?Q?PZbThP/PUauZpEb6U0eUQZLKdx/G9vyl6bN4ucnYAkKDdTEiVezTsaqTaR7x?= =?us-ascii?Q?4hLB7j8o5+J1nlzJRrstTXGFEO0K59HmdIJr7Msdal9JqEs5fZlxV34ajSMi?= =?us-ascii?Q?JyyVUM+a7PAiBR6Q6lnEV7b2LFZmH+tzeGndD1UXSd7DZ20Ycy+QQVea7i2P?= =?us-ascii?Q?EvisHyOhzubDPRBA/1DgYOGdgk/VKd+wdkJGNAlPt6TvigYB05Yopyh2cCrR?= =?us-ascii?Q?GVHCwD6VwVVaEiRTXrsfxiQo+YyLyxrLGaolaq9ZJpYVOyOAnDaPSeuK9kER?= =?us-ascii?Q?Jmf2v4ZaeDMaYMuztWFM2iCNv14nEI4XRSJQIGK3DDt+bCOjXH8b6q/AEXr2?= =?us-ascii?Q?YuTvKN5jg7s5DcH+W+lw0/PlXvCm/oM1r4cS96jX0Vt1Wh1vxGVJemQbKJpP?= =?us-ascii?Q?3qLWASSBxvFukwVGq5EA3n+qhO9sBt/bgfjR9tp/XyhuoJPvsflW+TXpveZs?= =?us-ascii?Q?Ou+lxJ9ma+QkPGWpUCxe6tsYdCmr9eUc2StZAWQWlpiAuHtBbAQu237N5cNQ?= =?us-ascii?Q?Boc46LklOC+0=3D?= X-Forefront-PRVS: 03319F6FEF X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR07MB420; 23:DLl5tVlxsGT2q6tB1HCY6to8Bh34OC7gGO9RuoGCp/?= =?us-ascii?Q?KzmbUspMfO1lrQwdAefN/bBUGRsk5itZKrT//iEnyzwhe/AJH8HaD90utfeM?= =?us-ascii?Q?h7uFXI3Gkf4i4o9ZGHysd1pTJmESj8D7uFAjJZZCOzWAxs/onyWsjZuhf1dE?= =?us-ascii?Q?8WZs/hyxikSQTYkSZPmY/u/oAr1nMDbUInOJaTxWrTC68qk9WljVjwlLCTRF?= =?us-ascii?Q?KyILqnxV/OGLw8/yaaDAbOlAUa0S86V2UL2d7nasuxyAH0cNWPDKSrtvoi25?= =?us-ascii?Q?3B2RBU4LazJUJ3XOXxI5gTPbAp76UDlObusuEZMwq2vfm44EgtvF8ECh+u3u?= =?us-ascii?Q?mfTaoFGoTcl1x7dqdZUBKYsrmWz4pJyswBJ1JVNlBk02x7iTDZLu4Ab/XaAJ?= =?us-ascii?Q?xR9qarWr+QhOIP8RXghxfBD7fYUNkfNzKYiqiEzdRUSz14qSudOXmvBoTqhW?= =?us-ascii?Q?JAhRoHS53bLYfOn+DjItQkIpBy2VJQ/akkcI76UnCz/0aufy/fEd7SCWIZvD?= =?us-ascii?Q?fp8S12wsUECPrneC7a/JWVM6iiFskWAF25VDj6aXs2IDugfHE5jh1o7H5dso?= =?us-ascii?Q?+s4Dq8+QkvSYSkcmeaY66K1MAW0waAvMtABj/HYG2nc8q+I21HjVjErNd5ur?= =?us-ascii?Q?DwSHrGr0f2JwRHF49pTRkB+m1d207TntfMXbLjoCfuL5slBIeV/Pns8Hapoy?= =?us-ascii?Q?WeGjNXxIeWNSoW8IOb9mtB3zf0HmKfjY6G/sDeaVDUdpMFvrBM2DXAvD1amS?= =?us-ascii?Q?NaCD2wxbrPbzojn8J73+JmfxAw2Texlm/QosBOKnnr13eDHKiY0NUW5OFO6m?= =?us-ascii?Q?CyBYe/g0Num1zs1TwOyeR9Gvsz7lhePBZEJoS2BiXc58DAX8FUS1IGCMMwhJ?= =?us-ascii?Q?NCJenfczPfqMBKcmj/ZePf0wEFEcQEjiatxfxz4gCnJYyaJXdJbfdWDJFjss?= =?us-ascii?Q?yPazSa1KzPb/sfAwsxAP3qenDEg+TKSd+BGWO2OnpBSHi34utnpDB/M3DI0T?= =?us-ascii?Q?w60aZF5LmbcFAWUvWorHwoQ/hN+/8zh2t7mleUCtnfpChQHIwM95bEFFPiqx?= =?us-ascii?Q?01aF78mu7rGxSWJRbVdABwU5UTSHdUh08c7fR9wlbuSqR+j+3qsDwt6KV1u2?= =?us-ascii?Q?5el05Gyw7qeUuZhXabPFOQ0vPET51f?= X-Microsoft-Exchange-Diagnostics: 1; BLUPR07MB420; 6:0CUoAM97UsJT/fAXDbFYMdRBZZBHe7WuUlof4KCFJoXEyRXpUaPpq+ysaOoqbay+0UpinOcqWsj05eeurRRvvmF7sFnzdEfiqgoWiKrWVe7boFmtWsu0v2P9G+DvksrwCQjO1kbOITzt2IHt52f6OS61DlwAnvSTdkpWU4N50JD6WV3wWsdv3dkXit0WUO8Nma7TAfEMkJOTl5FhYz8b1XsEk90fUX3iQstYU7C1f4pt6rYXm9vuC21KWC8qtPkH8YLJQaLAkXgs7lUidXMCmbSAysNj2rx+u0bGCdFPBpD+iAqWpZHYKdOaMSbnrVvu4BDugfbyQcmpBHWYUZtsWXlWpNMTluCsH++5SOJgZlK3SkfLrispt2LCAhs+Annn2r0virc4Xv8AV6dtmTt/tWFTo6Ti6/3ttfrjir0k/R1H7jSdk3WDybbeSCfeangp8twa5pY2fOBYHQOYg3nPosec0tjvXVOxrZLyIdRhOsZj44jka16HF8BK2gx8qBtdAYqLjYdNAD67fFPUc9bYnA== X-Microsoft-Exchange-Diagnostics: 1; BLUPR07MB420; 5:Y/HqFd+jwO+Vt1voN9TiKrQ7KzeBzSv6xfIYXxqbWRrouQfNQptWF39/mUtAr4w2NZIGbZgAB2IvGq9yF5DA/q7pIhl5untHQcaHZkz2EpkcVJ/KMx6X2+GXK+09XtGudFu5aEncc5kmigAD5iWq8dLHHcSB/l4enYULr+ddUZCzh7ucZafFbCjqTHv0nxLyh3sqo+ul+wLMp9YTRqq4sJcVKqvY0kG07j2bV+v1nmGbSUI1irGwMWzAueo4UoLsKZ+BI3J2FVpa3GFUYriqGDdGGtzhKXPDSX8DJmh5bUiUJhlRYehma0Rhgz9387PFVnbR6k21s8MjGLJFAGY2fOMG+Odvap0rHGA5wD6LASegfIQJ8ZVevAsZ83MEwo7zRi26WZerGNi0gdzyhEzz3zJEQ4c0fbiXaWp2uD0oZWFUWaba+zZ6iTpv64aSATQgpczigqicb8QIPG85ZvfJwwCE4jVEzBDk0Wg42CUNrH/CKdDzJSALY/0JoM+Xgn6v; 24:ulWPHJEyIbnDj7Y188dIB071SAijkWm68LJzAxgQjsWXry282MB5joUCDyfQWUo37iZ8x85bcvSgITPFgRfynvO1iwsU+APdOpYj3ve63mo= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BLUPR07MB420; 7:AyoBnTWEhORtWPRxq40tK4cxYkJJ+bYtoybp4YBIM23F5tFfx5gOXcugM6DzvDYl/Rokrgbd6muGtTljhacHd55TxSAMbYsRc8jiOfPoZ7cFMgkcYqhEALPs/rrDjygHie2VKWRsq9IhWad1hipBxq/m/mMY/KSmi9B4RfyUL1rEncrz6K8B9QAjFTWZZxjwPYVb7WvJqvttISGeNM8LMPKeto9oag0fA+WqIWS/hXuOg2upGiapgyYGsQZUQO+FnsGcfQfiwG8HZtkZD947G+Ybz5bF93r2JCJrNvsNDEHkYPgkNPxu4HBKwSDhsinJLa+BVNdZNiyDO5rJyV7a6w== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jun 2017 21:43:56.9593 (UTC) X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=711e4ccf-2e9b-4bcf-a551-4094005b6194; Ip=[50.232.66.26]; Helo=[CAEXCH02.caveonetworks.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR07MB420 Sender: target-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: target-devel@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Quinn Tran Add call back to door bell for qpair. This help reduce access to qla_hw_data structure. Signed-off-by: Quinn Tran Signed-off-by: Himanshu Madhani --- drivers/scsi/qla2xxx/qla_def.h | 3 ++ drivers/scsi/qla2xxx/qla_init.c | 3 ++ drivers/scsi/qla2xxx/qla_inline.h | 15 +++++++++ drivers/scsi/qla2xxx/qla_os.c | 35 ++++++++++++------- drivers/scsi/qla2xxx/qla_target.c | 71 +++++++++++++++++++++++++++------------ drivers/scsi/qla2xxx/qla_target.h | 2 +- 6 files changed, 94 insertions(+), 35 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index b3ba32773db4..17b13dd92511 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h @@ -3272,6 +3272,9 @@ struct qla_qpair { uint16_t vp_idx; /* vport ID */ mempool_t *srb_mempool; + struct pci_dev *pdev; + void (*reqq_start_iocbs)(struct qla_qpair *); + /* to do: New driver: move queues to here instead of pointers */ struct req_que *req; struct rsp_que *rsp; diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index f586f4f7dc57..48c0a58330d4 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c @@ -7653,6 +7653,9 @@ struct qla_qpair *qla2xxx_create_qpair(struct scsi_qla_host *vha, int qos, qpair->msix->in_use = 1; list_add_tail(&qpair->qp_list_elem, &vha->qp_list); + qpair->pdev = ha->pdev; + if (IS_QLA27XX(ha) || IS_QLA83XX(ha)) + qpair->reqq_start_iocbs = qla_83xx_start_iocbs; mutex_unlock(&ha->mq_lock); diff --git a/drivers/scsi/qla2xxx/qla_inline.h b/drivers/scsi/qla2xxx/qla_inline.h index bd8cb796f64e..9a2c86eacf44 100644 --- a/drivers/scsi/qla2xxx/qla_inline.h +++ b/drivers/scsi/qla2xxx/qla_inline.h @@ -352,3 +352,18 @@ qla_qpair_to_hint(struct qla_tgt *tgt, struct qla_qpair *qpair) return NULL; } + +static inline void +qla_83xx_start_iocbs(struct qla_qpair *qpair) +{ + struct req_que *req = qpair->req; + + req->ring_index++; + if (req->ring_index == req->length) { + req->ring_index = 0; + req->ring_ptr = req->ring; + } else + req->ring_ptr++; + + WRT_REG_DWORD(req->req_q_in, req->ring_index); +} diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 1d66954b7e5a..88e115fcea60 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c @@ -351,6 +351,28 @@ int qla2xxx_mqueuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd, struct qla_qpair *qpair); /* -------------------------------------------------------------------------- */ +static void qla_init_base_qpair(struct scsi_qla_host *vha, struct req_que *req, + struct rsp_que *rsp) +{ + struct qla_hw_data *ha = vha->hw; + rsp->qpair = ha->base_qpair; + rsp->req = req; + ha->base_qpair->req = req; + ha->base_qpair->rsp = rsp; + ha->base_qpair->vha = vha; + ha->base_qpair->qp_lock_ptr = &ha->hardware_lock; + ha->base_qpair->use_shadow_reg = IS_SHADOW_REG_CAPABLE(ha) ? 1 : 0; + ha->base_qpair->msix = &ha->msix_entries[QLA_MSIX_RSP_Q]; + INIT_LIST_HEAD(&ha->base_qpair->hints_list); + ha->base_qpair->enable_class_2 = ql2xenableclass2; + /* init qpair to this cpu. Will adjust at run time. */ + qla_cpu_update(rsp->qpair, smp_processor_id()); + ha->base_qpair->pdev = ha->pdev; + + if (IS_QLA27XX(ha) || IS_QLA83XX(ha)) + ha->base_qpair->reqq_start_iocbs = qla_83xx_start_iocbs; +} + static int qla2x00_alloc_queues(struct qla_hw_data *ha, struct req_que *req, struct rsp_que *rsp) { @@ -378,18 +400,7 @@ static int qla2x00_alloc_queues(struct qla_hw_data *ha, struct req_que *req, goto fail_base_qpair; } - rsp->qpair = ha->base_qpair; - rsp->req = req; - ha->base_qpair->req = req; - ha->base_qpair->rsp = rsp; - ha->base_qpair->vha = vha; - ha->base_qpair->qp_lock_ptr = &ha->hardware_lock; - ha->base_qpair->use_shadow_reg = IS_SHADOW_REG_CAPABLE(ha) ? 1 : 0; - /* init qpair to this cpu. Will adjust at run time. */ - ha->base_qpair->msix = &ha->msix_entries[QLA_MSIX_RSP_Q]; - INIT_LIST_HEAD(&ha->base_qpair->hints_list); - ha->base_qpair->enable_class_2 = ql2xenableclass2; - qla_cpu_update(rsp->qpair, smp_processor_id()); + qla_init_base_qpair(vha, req, rsp); if (ql2xmqsupport && ha->max_qpairs) { ha->queue_pair_map = kcalloc(ha->max_qpairs, sizeof(struct qla_qpair *), diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c index 1d6cc24c0640..f18a50867119 100644 --- a/drivers/scsi/qla2xxx/qla_target.c +++ b/drivers/scsi/qla2xxx/qla_target.c @@ -1728,7 +1728,10 @@ static void qlt_24xx_send_abts_resp(struct qla_qpair *qpair, /* Memory Barrier */ wmb(); - qla2x00_start_iocbs(vha, qpair->req); + if (qpair->reqq_start_iocbs) + qpair->reqq_start_iocbs(qpair); + else + qla2x00_start_iocbs(vha, qpair->req); } /* @@ -2058,7 +2061,10 @@ static void qlt_24xx_send_task_mgmt_ctio(struct qla_qpair *qpair, /* Memory Barrier */ wmb(); - qla2x00_start_iocbs(ha, qpair->req); + if (qpair->reqq_start_iocbs) + qpair->reqq_start_iocbs(qpair); + else + qla2x00_start_iocbs(ha, qpair->req); } void qlt_free_mcmd(struct qla_tgt_mgmt_cmd *mcmd) @@ -2071,12 +2077,13 @@ EXPORT_SYMBOL(qlt_free_mcmd); * ha->hardware_lock supposed to be held on entry. Might drop it, then * reacquire */ -void qlt_send_resp_ctio(scsi_qla_host_t *vha, struct qla_tgt_cmd *cmd, +void qlt_send_resp_ctio(struct qla_qpair *qpair, struct qla_tgt_cmd *cmd, uint8_t scsi_status, uint8_t sense_key, uint8_t asc, uint8_t ascq) { struct atio_from_isp *atio = &cmd->atio; struct ctio7_to_24xx *ctio; uint16_t temp; + struct scsi_qla_host *vha = cmd->vha; ql_dbg(ql_dbg_tgt_dif, vha, 0x3066, "Sending response CTIO7 (vha=%p, atio=%p, scsi_status=%02x, " @@ -2127,7 +2134,11 @@ void qlt_send_resp_ctio(scsi_qla_host_t *vha, struct qla_tgt_cmd *cmd, /* Memory Barrier */ wmb(); - qla2x00_start_iocbs(vha, vha->req); + if (qpair->reqq_start_iocbs) + qpair->reqq_start_iocbs(qpair); + else + qla2x00_start_iocbs(vha, qpair->req); + out: return; } @@ -2205,7 +2216,7 @@ static int qlt_pci_map_calc_cnt(struct qla_tgt_prm *prm) BUG_ON(cmd->sg_cnt == 0); prm->sg = (struct scatterlist *)cmd->sg; - prm->seg_cnt = pci_map_sg(prm->tgt->ha->pdev, cmd->sg, + prm->seg_cnt = pci_map_sg(cmd->qpair->pdev, cmd->sg, cmd->sg_cnt, cmd->dma_data_direction); if (unlikely(prm->seg_cnt == 0)) goto out_err; @@ -2232,7 +2243,7 @@ static int qlt_pci_map_calc_cnt(struct qla_tgt_prm *prm) if (cmd->prot_sg_cnt) { prm->prot_sg = cmd->prot_sg; - prm->prot_seg_cnt = pci_map_sg(prm->tgt->ha->pdev, + prm->prot_seg_cnt = pci_map_sg(cmd->qpair->pdev, cmd->prot_sg, cmd->prot_sg_cnt, cmd->dma_data_direction); if (unlikely(prm->prot_seg_cnt == 0)) @@ -2260,21 +2271,24 @@ static int qlt_pci_map_calc_cnt(struct qla_tgt_prm *prm) static void qlt_unmap_sg(struct scsi_qla_host *vha, struct qla_tgt_cmd *cmd) { - struct qla_hw_data *ha = vha->hw; - + struct qla_hw_data *ha; + struct qla_qpair *qpair; if (!cmd->sg_mapped) return; - pci_unmap_sg(ha->pdev, cmd->sg, cmd->sg_cnt, cmd->dma_data_direction); + qpair = cmd->qpair; + + pci_unmap_sg(qpair->pdev, cmd->sg, cmd->sg_cnt, + cmd->dma_data_direction); cmd->sg_mapped = 0; if (cmd->prot_sg_cnt) - pci_unmap_sg(ha->pdev, cmd->prot_sg, cmd->prot_sg_cnt, + pci_unmap_sg(qpair->pdev, cmd->prot_sg, cmd->prot_sg_cnt, cmd->dma_data_direction); if (!cmd->ctx) return; - + ha = vha->hw; if (cmd->ctx_dsd_alloced) qla2x00_clean_dsd_pool(ha, cmd->ctx); @@ -2324,7 +2338,6 @@ static inline void *qlt_get_req_pkt(struct req_que *req) /* ha->hardware_lock supposed to be held on entry */ static inline uint32_t qlt_make_handle(struct qla_qpair *qpair) { - struct scsi_qla_host *vha = qpair->vha; uint32_t h; int index; uint8_t found = 0; @@ -2349,9 +2362,9 @@ static inline uint32_t qlt_make_handle(struct qla_qpair *qpair) if (found) { req->current_outstanding_cmd = h; } else { - ql_dbg(ql_dbg_io, vha, 0x305b, - "qla_target(%d): Ran out of empty cmd slots\n", - vha->vp_idx); + ql_dbg(ql_dbg_io, qpair->vha, 0x305b, + "qla_target(%d): Ran out of empty cmd slots\n", + qpair->vha->vp_idx); h = QLA_TGT_NULL_HANDLE; } @@ -3189,7 +3202,10 @@ int qlt_xmit_response(struct qla_tgt_cmd *cmd, int xmit_type, /* Memory Barrier */ wmb(); - qla2x00_start_iocbs(vha, qpair->req); + if (qpair->reqq_start_iocbs) + qpair->reqq_start_iocbs(qpair); + else + qla2x00_start_iocbs(vha, qpair->req); spin_unlock_irqrestore(qpair->qp_lock_ptr, flags); return 0; @@ -3264,7 +3280,10 @@ int qlt_rdy_to_xfer(struct qla_tgt_cmd *cmd) /* Memory Barrier */ wmb(); - qla2x00_start_iocbs(vha, qpair->req); + if (qpair->reqq_start_iocbs) + qpair->reqq_start_iocbs(qpair); + else + qla2x00_start_iocbs(vha, qpair->req); spin_unlock_irqrestore(qpair->qp_lock_ptr, flags); return res; @@ -3282,7 +3301,7 @@ EXPORT_SYMBOL(qlt_rdy_to_xfer); * it is assumed either hardware_lock or qpair lock is held. */ static void -qlt_handle_dif_error(struct scsi_qla_host *vha, struct qla_tgt_cmd *cmd, +qlt_handle_dif_error(struct qla_qpair *qpair, struct qla_tgt_cmd *cmd, struct ctio_crc_from_fw *sts) { uint8_t *ap = &sts->actual_dif[0]; @@ -3290,6 +3309,7 @@ qlt_handle_dif_error(struct scsi_qla_host *vha, struct qla_tgt_cmd *cmd, uint64_t lba = cmd->se_cmd.t_task_lba; uint8_t scsi_status, sense_key, asc, ascq; unsigned long flags; + struct scsi_qla_host *vha = cmd->vha; cmd->trc_flags |= TRC_DIF_ERR; @@ -3370,7 +3390,8 @@ qlt_handle_dif_error(struct scsi_qla_host *vha, struct qla_tgt_cmd *cmd, } spin_unlock_irqrestore(&cmd->cmd_lock, flags); - qlt_send_resp_ctio(vha, cmd, scsi_status, sense_key, asc, ascq); + qlt_send_resp_ctio(qpair, cmd, scsi_status, sense_key, asc, + ascq); /* assume scsi status gets out on the wire. * Will not wait for completion. */ @@ -3525,7 +3546,10 @@ static int __qlt_send_term_exchange(struct qla_qpair *qpair, /* Memory Barrier */ wmb(); - qla2x00_start_iocbs(vha, qpair->req); + if (qpair->reqq_start_iocbs) + qpair->reqq_start_iocbs(qpair); + else + qla2x00_start_iocbs(vha, qpair->req); return ret; } @@ -3883,7 +3907,7 @@ static void qlt_do_ctio_completion(struct scsi_qla_host *vha, *((u64 *)&crc->actual_dif[0]), *((u64 *)&crc->expected_dif[0])); - qlt_handle_dif_error(vha, cmd, ctio); + qlt_handle_dif_error(qpair, cmd, ctio); return; } default: @@ -5121,7 +5145,10 @@ static int __qlt_send_busy(struct qla_qpair *qpair, ctio24->u.status1.scsi_status = cpu_to_le16(status); /* Memory Barrier */ wmb(); - qla2x00_start_iocbs(vha, qpair->req); + if (qpair->reqq_start_iocbs) + qpair->reqq_start_iocbs(qpair); + else + qla2x00_start_iocbs(vha, qpair->req); return 0; } diff --git a/drivers/scsi/qla2xxx/qla_target.h b/drivers/scsi/qla2xxx/qla_target.h index 5f497311d7b7..30a389445de4 100644 --- a/drivers/scsi/qla2xxx/qla_target.h +++ b/drivers/scsi/qla2xxx/qla_target.h @@ -1097,7 +1097,7 @@ extern int qlt_free_qfull_cmds(struct qla_qpair *); extern void qlt_logo_completion_handler(fc_port_t *, int); extern void qlt_do_generation_tick(struct scsi_qla_host *, int *); -void qlt_send_resp_ctio(scsi_qla_host_t *, struct qla_tgt_cmd *, uint8_t, +void qlt_send_resp_ctio(struct qla_qpair *, struct qla_tgt_cmd *, uint8_t, uint8_t, uint8_t, uint8_t); extern void qlt_abort_cmd_on_host_reset(struct scsi_qla_host *, struct qla_tgt_cmd *);