From patchwork Mon Aug 6 20:09:40 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Manlunas, Felix" X-Patchwork-Id: 954213 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=cavium.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com header.i=@CAVIUMNETWORKS.onmicrosoft.com header.b="jxC54tNa"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 41kpfB6hP4z9ryt for ; Tue, 7 Aug 2018 06:09:54 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387597AbeHFWUd (ORCPT ); Mon, 6 Aug 2018 18:20:33 -0400 Received: from mail-bl2nam02on0065.outbound.protection.outlook.com ([104.47.38.65]:32785 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728671AbeHFWUd (ORCPT ); Mon, 6 Aug 2018 18:20:33 -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:X-MS-Exchange-SenderADCheck; bh=aoSHvaKMKvJ8mqjEUPiAKF4OSul1rZJS6hEW9d/0q14=; b=jxC54tNa9KduAZdvPTwO0wVaaamwVPvrjA1JAugfmSjuMmMYyde3Zi6qlXACacNp0b+huQFhrwyO/PgeBe4ot5/DmX2B7BCZbCszYat3g9W3eQXml4KrS8R3YhEE1JrdPgBJZNqoXI3zwK6HYCOaMXX9cpJuEg+qmKQ4lxaMW4Q= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Felix.Manlunas@cavium.com; Received: from localhost (50.233.148.155) by BN6PR07MB2817.namprd07.prod.outlook.com (2603:10b6:404:40::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1017.15; Mon, 6 Aug 2018 20:09:43 +0000 Date: Mon, 6 Aug 2018 13:09:40 -0700 From: Felix Manlunas To: davem@davemloft.net Cc: netdev@vger.kernel.org, raghu.vatsavayi@cavium.com, derek.chickles@cavium.com, satananda.burla@cavium.com, felix.manlunas@cavium.com, intiyaz.basha@cavium.com Subject: [PATCH net-next] liquidio: avoided acquiring post_lock for data only queues Message-ID: <20180806200940.GA2501@felix-thinkpad.cavium.com> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.6.1 (2016-04-27) X-Originating-IP: [50.233.148.155] X-ClientProxiedBy: DM5PR06CA0066.namprd06.prod.outlook.com (2603:10b6:3:37::28) To BN6PR07MB2817.namprd07.prod.outlook.com (2603:10b6:404:40::11) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f863bde1-3598-4d6b-6ac8-08d5fbd88ce5 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BN6PR07MB2817; X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB2817; 3:YFEUqKZGGUBn7JQLWewX2+kbIXr50SZ/CbcssAMNV1XwB0s6gEveD/y7BSvLVY+FrOpc1HDf3MFcx4IzZb7b67CYlQTr9YzI63joSmxubORyUspJ511ATqN+VaJ7EC0wUK7FKKm0Svn5997BW4z7RuAkdvqQ00CrjYaFY9a3R/bYcnlXbJbyTcFYUYNhOgeOodkD/JKNbTbc9lb1HBUyA+vyG2yyjoCzhBRgawxWKBQq15BoF+80lR/X/m2r5dkh; 25:FTpvfbw7Syeb3KNGkhAi/MCr7q3XEztrKwltMuyHMkLV/QGiJIYuUeopVnxMQYQlJl3WE7NiRKJjHvuNaEFf9cVtZQcA+hbnlKmQs5lH+BeiiEBoDRTRhLitOH8phJiKJGduEjUgj9yqR1h2R5qbfveFYkWpOECT48rJ0NUYfVLQtMpNU6Vf1gSrLa/y73q3eU1K4rEAnjELP3Nidy7KPef1YqNAltJPJG6Z6z94ZL1Mo/yeuzsUTjbZ1bJ89XOOJ8ZI1mAfNS3w5aaWGj6K5ZJwYn5BMqyIBgp+fpshk6K4ARZoCOa1ySMVpqism4HR+XAk/Qaj9AkdwWX0AENqvg==; 31:IySwVslOGPwRYwNy36v5e5o2nVSphJh3Tyfla7WBfi2oEtF0ZFRC9Q/PpXlqhE9mfApVETxF1ofzOtz8mTEPuAdgKKVpKz/uY6wq8KJC/1ire0N3BYPmShMsj0ydkQEQpI3c7ZRdDp1+00cyve3ICgZp0I4BWtPEd8RfRK99YxgwVIAAiNSYsAytZCZUwewfo7czVxjs6hy/a100xOxPaswlwNuQQ6z89ifzJbc8Jq8= X-MS-TrafficTypeDiagnostic: BN6PR07MB2817: X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB2817; 20:wBLT8wobtf8Isakpz8DeO1O1nP4r0kinlpZu5W4zst5UooPT1v/K43oIF+6ephzIxRYNBOoLQ5UVIgrfGI2bAX36zo584vs0mM+Vkjxw+KJMH9QGmq/KgkQ9s00GwebwRbEoR4X2LX5NqFaahIm5o+bmCarCywggBGy9XL3GoeZHNBQXVZZOymp8O/UVUQ8Dkwcw7V1hjoBK8A8hTBYNhi3ell3t1sMprZ6y/JT3v4ZyMG4er0KsVy9ItxHPrYZlRBAWcQGqNf7ZriY+cyn2FPbCYhSZ6utoP2IAfaCxCrpkHny1l00Er+vIWQkYFJorPpMtOobOcc03Ajtr8vo7Iy2ii7PiBhJGlJLWjV+pcE2xlpFpfV/0zMoYegjDWkrw3or81EzUjqUzcHv0sC/OVfsdF4Yp0aL5qaAuEW41RVYcxVLvIFSgmc0mVuiLbh7y20eg5cHkI3Ewiv7hC9LiVOm4LSBCSqtN0dX226GqMr5QxA0WJKWsuNuEIuNLyMuY; 4:53smIAXeEkeVwi756aVtX7i/hs/rHMHEcN6xl6LYHM+paDdX66KL0MMv6saoVmb5g0mboXuqTwbgvtYg1v79mLiwbU7JL3gCgBrYKJcgOT+Hzix9OpyWmFcnfIRP/KncAUjzJ4TWfcsXCBIlg4aJP7x6dPd7iFI9vY4sScNI3nt4tbbPqsNqhjcJpVwNIqrZht9chYx+QEFpuviJBYe3gi2QMci8PZFo2Kedxfp4W48MUSuj2Uu3YuD+xGdiJMaN9c8mvdHkxzp3WDjYIXpOKg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(10201501046)(3231311)(944501410)(52105095)(149027)(150027)(6041310)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:BN6PR07MB2817; BCL:0; PCL:0; RULEID:; SRVR:BN6PR07MB2817; X-Forefront-PRVS: 07562C22DA X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(376002)(346002)(39860400002)(366004)(136003)(396003)(199004)(189003)(8676002)(81166006)(76506005)(53936002)(106356001)(86362001)(305945005)(107886003)(4326008)(386003)(2906002)(81156014)(3846002)(8936002)(2351001)(6486002)(316002)(14444005)(25786009)(7736002)(23726003)(5660300001)(1076002)(105586002)(6116002)(52116002)(26005)(50466002)(476003)(16526019)(68736007)(186003)(6496006)(47776003)(66066001)(956004)(72206003)(16586007)(97736004)(33656002)(6916009)(58126008)(2361001)(478600001)(486006)(44832011)(18370500001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR07MB2817; H:localhost; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB2817; 23:bMDXl1s67aOQ6gJgrVV1n/9pAbTyCU1GxXZ6YkZWyDnpcrKyxShLleUB4jJ44OINDDyjGf2/UpzqRN00SivwRQtojri6RIS5T6e+NhxejrpspC8SjZ9HVEx/IkBO+apTmuN5+s5XAMZpc0nMlWFxhsvNZUhjqR/XThRiK6JqHJyR4a6AM41yBlruILiPlfxPTeutsT3kz5n43rGT5X68ibiQgyuPS/iFOT3qaTAJeERWbOD4RVUlX7qILgqwpTBBHhQ4RH7PG6kDYJdYGG1BB2sexJptebcxuYq12PAVp9a/F1jCcWh6OonlrMS2WFhW5Mk2iHQ4vpiOiZcjAkUKmo4G3RphPDtDxQJnQp1nDwvCn/k7j5ms+gXW28YI/7juLXU53uHwhsEGNV/++CSs/jUFoomwKAobTvfLdWMkhH58G8lxjr/BLO8NStQpW9EmbiEaUKWDfaVRBm4IA16PKy22QHoNTvtfkDVGeEwD8q1Ba7+4rHjuq28mgy6QlWstA24VPeZzEXzsbQmmJZLQazV3Au2gVfH4hY53A5jyWsIAJTKVQ47cLn5MTApSmRCXnji/b7ezlxnozp6mmtjpN82C3XHNvzld5PZ1ajJvl2t3IZGmOycILs50UvuzaZ/w1H3p7UGtE6HDV7p+agGBJwWRkE2EiowQdEzwByfU5wsF/8ML5W+WZktMathECM1VCvZjBbb7Ah6P3g7WTNqBBVSTtlhrmeE7DFfcUJ2om+tKlbyj5zD8x/mMaZ1gB9BRFooSfdrjVhKTR4MjjVX+JJNLjdKZytHK5S11jAiVyiqR9RG36AwjVNh0wGIwmKAwKEH66AlkJoSaw1quvSlRxpKg9Lwm41wVJV/ZXIIwoThkPPTkBRSEZHImdXvSNgVYCDoXMcl9k16KfsnOIVr63o3XfWrm0HZPOI1b1PB4k6mCNDmfMQTRtgzn92LNNiMXWyP+3nyqGYJfFvo6MPq21UoczvVmUsbL+sJ0umIBJoZVodPTmKHdKI1p9NlnQaO1FYN4ZTDKHh/J2T9qjJDA0Oe1Aji24czSOAhmbI69Iu9wQC2cOLq4/Ic35defzTf4DVtPwVBwWWAOcVtNv5Y8qzDUjt/0WwE8Jge+5QAYLnQO2IHeCrBBB8SQDTSevWAMLSQ4H2I/zSWnxBEXbiYIzuV9Li5KMunQbhHOegmq2QcGXbLtIM6GAsIHXsP9+xjxyFoXQ1OyJjTW68Vp7iXDbUVeXr5LW38m8XNFrCn0v2M= X-Microsoft-Antispam-Message-Info: ndjrOE70CapJVgSGSSz0Ra3NWJwSOdLP6GXJn6cPF70SyY33VNDw8g2gyieCf5zOlVVZwu7Yyh2Y5ZwZQtXMAFnYHiTNocVLlDEaLXt6yJK/NuBD7kvSqGE8EuDcH/DnPF4OxSk/T7Z5dwdnl4w/8bR3OPXrKgpB7IBIsjmDuSO4r7h5L5xAtjnqq6WKQL4H4vJL2Q7OYhIK1ExzUYlL0B2Vyjb6ADYqhOAfbrVqqhOrfWvMwn4a1bPLkWdmFNsP8xJ6VIFeaSH6h0oYPSLYL+Th68qIUVqJhA+hmm4xRDOHqt248b9U533bXUpEV4LiE2GxhsHoZwSsdpYUGzaJuBZBIEhC3qr7Kzv9sN6AV+g= X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB2817; 6:R36AGHlauLW6dpIJPTVOtyRiP2yjTg5ib2wAHm0hjhKjAuDWsGxC5ClkLJPgIWymOXFfvqvS8662vf/v1eS5rCv+nAMeo0QFH6pwR33QpVg92grz1nsCojVYYLA0EZl7eaBiggceIvg1ndf0KY9msH3Stt0SaYqj7gjcM/33oQ6PUgJtzpYgYfIn2zXzK+ZtKVvrEP88ikiQmHO6rZz6U6P5TtUYJHwdZYUcgsW8zVm2W5NEPV2DFhZt6luO3t73zTqw28cRbvcky41CISIv1JCaUPYlqex6oRr7dKUf6jo5h5zD8H4VU/l4m1wpH0xe4KyyryCj4s0bWSNT7qWQypR8LUNJVquSTM3KZ/m0m/0G1OJElEbq/EaFExoeDLrMxocAyzR01FCAsgWPJ+ZjVM+xUQEalFC8KL6YiI1M6+ZnoMJy1mChpEwOkTskjWF9olEFkYQmr2Iw37G+7m+hbw==; 5:XhsVqwUFBzr45ebQv9/0csfrudmv+1NHw7UqgudhPlB5IaHtrIB6agOOwD1QQHMQNO27ceeADgmTQQ39dnZQc9heIDIe5IUiUtJw/pI4R6zPirHYJnHFKLVcCChSfh3sgsoPyz/7nXFH6eUHxUno2W4SerJHiplRDRm+LJAS1YI=; 7:gl7VYvtWBe735E+xJZEfsk2+d/kyilXB3ZL/B8Q/ae9AmVuu4cyrCG46B7YVEZx7cFIL8cp6+vW8px2X8m+BYPThVsvfwAh8of5pVWL14Ps9HkpV4aZ15aIwR+sIe6oOgS/067D/c1RlxqZlybV5WinMR6WlO+c1w7vI6mvl5StmYFImfo+SMmUlAmTvkb4hRemGuh46R/2ZhpXHXCjpXFHRti0JRVKiO/ulaN5r4iKstx1615NaB63Aprt6SQ++ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Aug 2018 20:09:43.5914 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f863bde1-3598-4d6b-6ac8-08d5fbd88ce5 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR07MB2817 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Intiyaz Basha All control commands (soft commands) goes through only Queue 0 (control and data queue). So only queue-0 needs post_lock, other queues are only data queues and does not need post_lock Added a flag to indicate the queue can be used for soft commands. If this flag is set, post_lock must be acquired before posting a command to the queue. If this flag is clear, post_lock is invalid for the queue. Signed-off-by: Intiyaz Basha Signed-off-by: Felix Manlunas --- drivers/net/ethernet/cavium/liquidio/octeon_iq.h | 10 ++++++++++ .../net/ethernet/cavium/liquidio/request_manager.c | 22 +++++++++++++++++++--- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_iq.h b/drivers/net/ethernet/cavium/liquidio/octeon_iq.h index 5fed7b6..2327062 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_iq.h +++ b/drivers/net/ethernet/cavium/liquidio/octeon_iq.h @@ -82,6 +82,16 @@ struct octeon_instr_queue { /** A spinlock to protect while posting on the ring. */ spinlock_t post_lock; + /** This flag indicates if the queue can be used for soft commands. + * If this flag is set, post_lock must be acquired before posting + * a command to the queue. + * If this flag is clear, post_lock is invalid for the queue. + * All control commands (soft commands) will go through only Queue 0 + * (control and data queue). So only queue-0 needs post_lock, + * other queues are only data queues and does not need post_lock + */ + bool allow_soft_cmds; + u32 pkt_in_done; /** A spinlock to protect access to the input ring.*/ diff --git a/drivers/net/ethernet/cavium/liquidio/request_manager.c b/drivers/net/ethernet/cavium/liquidio/request_manager.c index d5d9e47..8f746e1 100644 --- a/drivers/net/ethernet/cavium/liquidio/request_manager.c +++ b/drivers/net/ethernet/cavium/liquidio/request_manager.c @@ -126,7 +126,12 @@ int octeon_init_instr_queue(struct octeon_device *oct, /* Initialize the spinlock for this instruction queue */ spin_lock_init(&iq->lock); - spin_lock_init(&iq->post_lock); + if (iq_no == 0) { + iq->allow_soft_cmds = true; + spin_lock_init(&iq->post_lock); + } else { + iq->allow_soft_cmds = false; + } spin_lock_init(&iq->iq_flush_running_lock); @@ -566,7 +571,8 @@ octeon_send_command(struct octeon_device *oct, u32 iq_no, /* Get the lock and prevent other tasks and tx interrupt handler from * running. */ - spin_lock_bh(&iq->post_lock); + if (iq->allow_soft_cmds) + spin_lock_bh(&iq->post_lock); st = __post_command2(iq, cmd); @@ -583,7 +589,8 @@ octeon_send_command(struct octeon_device *oct, u32 iq_no, INCR_INSTRQUEUE_PKT_COUNT(oct, iq_no, instr_dropped, 1); } - spin_unlock_bh(&iq->post_lock); + if (iq->allow_soft_cmds) + spin_unlock_bh(&iq->post_lock); /* This is only done here to expedite packets being flushed * for cases where there are no IQ completion interrupts. @@ -702,11 +709,20 @@ octeon_prepare_soft_command(struct octeon_device *oct, int octeon_send_soft_command(struct octeon_device *oct, struct octeon_soft_command *sc) { + struct octeon_instr_queue *iq; struct octeon_instr_ih2 *ih2; struct octeon_instr_ih3 *ih3; struct octeon_instr_irh *irh; u32 len; + iq = oct->instr_queue[sc->iq_no]; + if (!iq->allow_soft_cmds) { + dev_err(&oct->pci_dev->dev, "Soft commands are not allowed on Queue %d\n", + sc->iq_no); + INCR_INSTRQUEUE_PKT_COUNT(oct, sc->iq_no, instr_dropped, 1); + return IQ_SEND_FAILED; + } + if (OCTEON_CN23XX_PF(oct) || OCTEON_CN23XX_VF(oct)) { ih3 = (struct octeon_instr_ih3 *)&sc->cmd.cmd3.ih3; if (ih3->dlengsz) {