From patchwork Fri Nov 3 19:17:44 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Manlunas, Felix" X-Patchwork-Id: 834057 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@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; dkim=pass (1024-bit key; unprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com header.i=@CAVIUMNETWORKS.onmicrosoft.com header.b="X50z3X1T"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yTBYZ2GBrz9s7M for ; Sat, 4 Nov 2017 06:17:54 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752465AbdKCTRv (ORCPT ); Fri, 3 Nov 2017 15:17:51 -0400 Received: from mail-sn1nam02on0071.outbound.protection.outlook.com ([104.47.36.71]:50736 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751942AbdKCTRt (ORCPT ); Fri, 3 Nov 2017 15:17:49 -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=mHIXaPhQ1o9F/3rrvlTZgaCrIQmW+CPuBpSOcS/StqM=; b=X50z3X1TxJ7KjrIT3HkR3Fe5LsHl6q1deGvxqebVyQNrww7u27ZzJEfTWXQFtmETYG/87kf9ALp6af3ct824Rz18Xug9ZZU5a16rJS3OWJ1iLIqXQB2p7spLxUXlAvAJDDnOWzfmwyrrbjCoDWgiiR2N+mjsHnDXFXferyAgSt0= Received: from localhost (50.233.148.156) by BN6PR07MB3171.namprd07.prod.outlook.com (10.172.105.141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.197.13; Fri, 3 Nov 2017 19:17:48 +0000 Date: Fri, 3 Nov 2017 12:17:44 -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, vijaya.guvva@cavium.com Subject: [PATCH net-next] liquidio: Fix an issue with multiple switchdev enable disables Message-ID: <20171103191744.GA25280@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.156] X-ClientProxiedBy: MWHPR04CA0054.namprd04.prod.outlook.com (10.173.46.16) To BN6PR07MB3171.namprd07.prod.outlook.com (10.172.105.141) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d64e98ff-6afb-481b-e6d1-08d522ef9222 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603240); SRVR:BN6PR07MB3171; X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3171; 3:Y4InxSZRJ8C7wp/vj5GYpkB9aqVOC8eiHv92cKTYvr7lJqC/ITWY842cpzuLN32Lq4oMmBDtalnD7fghj8mUVsj0hO4ZXYcy66puHt4iGQdFcqlSBfolnay+yvTQBsJfWwqE1+eqMNKB+DXtk+ksGJdZBzQktyVXjPkHGTTdUsWdocekVwcQO3Vdny8dlu3RIMvDfOWFZe269A6M0AVMQOT4Ul/1j0WXt1uNPqYhT+aPXablM+gDe19g+nRTfLEe; 25:q8ORWLjoRF54/OEx8IoArgocGazcn3lE4EBQJ/FFutWgZVOstd6L353OrfDE/HCKfRJbRB8+Yx8c5EbtrvR8yRxBnt+ymUvPGxmkd6cxTiKY9FhNwQZ5Sln/dTltfK0SAACqkSanSbLd58yJ2xBIRzy9Sh8HK7Yk3cFDb8+oKGERYRIH8i7+HvnB0F9N1h9V6laSxDdypCGO0MZGFzf0pkNykGWzR/TXFjGDSRQPnfdWwPide7R620Ew/oRIjsmiZ2uYpXHBlySJ+Y9RsuKSU+jKY/xxEg6xOa6sycDnx5IlcnB63tGGQ+5dhyPz6EhOvHYkdGKty0nLkWXID+BPFw==; 31:5u9L9mkQCXF/E2J83T++XR5B6HxojQS7s69QkdXNSXThvQmYYlJaUoBWWykNopFOJn1F9b6bUdJ4uaKrvcBkdKhLrvkUuT/rWC0NgeE4rFBK0lp/hh5MTxBNnxXqIzNOoK1PPa3tgDYg3+VwubBGjYQkPwdp1Mxm/pAWBQ8qJsWJVINOiFcUKbAcG4wc2W5nM4f3Z4IWIGUHpq29WU/0Lzf9/1qB/mgWV2zsINf8Hr0= X-MS-TrafficTypeDiagnostic: BN6PR07MB3171: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Felix.Manlunas@cavium.com; X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3171; 20:TDhO3BDrogdJb/+DYTHNjITNuBrwe034PNYczcIFrD9J3dUP/wawEbOmUHt7dpNeL7JqrKv7IpWPyLA5QaczN9AxowG67Jx8r6Bk3VH3fB4unHu0kOFjFGWxmMKmo5pWBVD8kBWE6RIjdHixi+8KwUSC3dIoeSiWUcZ4pmWprHTRYAroyxgp42Ca2A1ZUiZZl8vIrCxLMppwW+Hc+YAznhxviBDX5Ahn48J4hrbs7JSR4lA5FCzyZaDAP7Zbv+CPOwkR86p5JtwoZYOy4hVYhPmXoQJLtDx3WEvGPEaxYiw3JzJRuDD4gJMyWv9hTJ6TKQqs4FHQM8TTmCubXh4Tys+oo3oyIIi770x4CU9wk9AR7e0MfUMLy0AHUMcTTPhlxTH0jKHVrq+GNORdYUJ28GmwH9PmWpCF2+rANiaSsTMh0wfjZD3TVjWvMs8PWGiw5HK1Z6VjZN931BpW+ptECYpXvF9kI7f5x3L7sbUMFJ0s9RiULpkEk+gHqzgBfrht; 4:ZpgJ4PtJBQHEbeZ+5FV9NVX4allBOzKx1WUwofsQ262gHAuIP2YQRHHcUKqfgFge5LWF0KmepJcMKNsgvBumxomQjgTWkeidiO6QhXyWBMnzRSTrYz8NnH6o3DTDmYdDp3ubUxbMBQoFTshWuf8uYBpQV0MxavSXi9CM2vbTVGxMuqSpPMGGJAy2NhvspzM9yPgvP38NqffDHW6GKQNxuPNeBDaMivRKGMzm2AcyDu+NREIArYpzZIWEYMIVleehLFMHyjvA+6pSetvSt4VqSg== X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(93001095)(100000703101)(100105400095)(3231021)(6041248)(20161123555025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123562025)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BN6PR07MB3171; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BN6PR07MB3171; X-Forefront-PRVS: 0480A51D4A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(6069001)(376002)(346002)(189002)(199003)(72206003)(478600001)(81166006)(101416001)(58126008)(316002)(68736007)(8676002)(16586007)(66066001)(5660300001)(6496005)(33656002)(50986999)(54356999)(25786009)(189998001)(2351001)(105586002)(6486002)(16526018)(23726003)(81156014)(107886003)(1076002)(8936002)(7736002)(2906002)(47776003)(3846002)(305945005)(83506002)(97736004)(76506005)(53936002)(6116002)(106356001)(6916009)(4326008)(2361001)(86362001)(50466002)(6666003)(18370500001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR07MB3171; H:localhost; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3171; 23:DF4ftZZD0qf+WrU1dmAcv6hBt63T6A7dhe24Js14AOghSy5tjhq5lPk5xzytRrLqTITjun77eJTLmwAF84lAqIGA+orncsyGcx3IeG+zeW+SWAHmKyWgl+j+lO5W9tJLOOa68llSNYlUF6oVPeJpS2WRODhPIszDIEmjhRgzWsYPNoXRoxSOwC4wKI/yl2rrS7EnxdgZqGXxFRJahaxcVLUS3w4t5nyq3GPOZ7UoiZiAsQaJlJEpzVe2ixbbZIc1tLp5AYel8sd4WSmXKPr46X9Fs9mQV2Q2Q0fdvArWEbETJBNBOEcBamGwKWPWQSqbK7KCVcs6967/xDWEoKbz6396ZSVu2VEF5r03I7AeEg/H6PuLCyY5KxN0Qsjy0hqYGf5fn5J8z83BI9y9uccu/DWEwLhNGxzeX2IbdgluIFtUyHYa6nbOUf7VFMLXReiBX3dWquSu7yCEu48H7EMqJfRa0z+CidbmIHnvDhC8KkpcTNVtPITahXIIrB6BqSGg9VRqzqpXL/cwGBhnZSjJmpi/j54MZmwAQ8jE+c9ZTctN+lWyMY8aCQQJEcrno2HHOcCbwAHSd1Y5wMHVJ3koQ7wGPhvxW1E9d8XZqO4hZ0VWcDF2slNZupRunqlBd4E8YcJ0o7oNFaAsrh+CNt8XC6StuJDAeCHKrEC/70BQRya8c4Nu9H3Ics5ADcQyOKdWN13+6X0V4jEt6UZKzmMXKsrJ3t1K450dGsw80DF/DAsItgrYtoh6mC8c4RtdCRTdjnXmrjjdBF1yrcfKTD4EA5/R2IoSn9SZ5lA0t9J+IUctDfVnLDo3qsZi5y3D2Po/kj0G72dzM6SQ4412a9LlpVgn3lEb0D5CoRYb131uVgT11P+KD6qvTdL+6TE6j96+KWh4VHB6/keiqjehl+JQO9muhO7UBt/5g4RA9fio1gHtynYCVP15Tlr19uyO9j0LNV9CPCL0DcQda2OmmUD72/wGlfnRYgzGdD37V3gZvcLDER6W100TUbDGS9WBt4cSm1pNG+5G3c+5sunmIUXRMck7oTccgd3nmz0W8KDZBN4E7N5uT2Ve4p/xNUNqj76o7jpNZM6rLjzro/4bcPex91OaiQCZkUjNoclUKARLHfhXdOtmgqnLggzYaskBX273EdTCn3L1h11PSk74akrK7Q== X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3171; 6:3KNC1ni3P/919apDk6jK+tIFvhZ2WzXy6WQDJFpzV0R0YeUwZZ44swmkzXLiAubybOe4fiWD0YO0ccz+ld8f6CZC+dRdSYpUEddbh3u/fDsXefU8/HmaM+lQqDoKCAx+SjZaze2H8qRdfNcVw6RqsVB+u+TyeYRJpsUgK5+Qee7wIDa5H8kjEg2hvA6efZ0rVuAFXO20Q62p7lpFs4Jaot9AbbDW+CKSL0VZYNXQsNTXetCwizjjdVtFX++vLtG7vnU8GW3ff+bXlk0EbUhGgMkYdgtrCfmO9KtD91bq0txyp815gX/f2weddS9bYoq0kaOXXHDlc+FSxoHcW1u80KfgzJ1EBR4YH+M2wMfyKQs=; 5:bSolu/LGnnJ1LNLW2hwIRh2jiMMzSiBsvGi2aNE4GGsTlpdi7k/i7s+dEeD9ujEsjXn9LOAyN283bA7/bkMJIUTm+ltOIOCYfXLw4/93kQVdXsTcSGDMK3qu2VCuenD2Z2x7BtTmRiZYbiEkBLGc96ad3KQIpW+31RoejqF1Djc=; 24:jlFa6odTySmXzKUrG+zr6d7LlVWHEv4Vfic8Su0M2XyJest0QCCpFi07nOge7mVhLET/mAn0j+Y4PhLHHY6nBAO26bMj6rCH/FujtqaTj/g=; 7:cgAhrsQ/AhC6KIcVuf7e04u0TqLrtrN/z6FPEVO6ZXOOL0hppbUXfjM7fJQ3wsZclhNnYKs6Ra1jAopl4LpzkmNDIkx0SrV/ZxeaC4qep6F2LD8BTId6gyMPtVzLSo1PO99rzQAJHc7qHj4rI1XJCxUwdX4E8M3I99IhwLl755sUA9KP2hYrGoeQ92mTSJIP/twzJYWMqRLoHLcGWTfVHRa09I5Wr6cXmPc9h7WbFNmB4F6elwv2fzr26sVfqfHl SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Nov 2017 19:17:48.3957 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d64e98ff-6afb-481b-e6d1-08d522ef9222 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR07MB3171 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Vijaya Mohan Guvva Return success if the same dispatch function is being registered for a given opcode and subcode, there by allow multiple switchdev enable and disables. Signed-off-by: Vijaya Mohan Guvva Signed-off-by: Satanand Burla Signed-off-by: Felix Manlunas --- drivers/net/ethernet/cavium/liquidio/octeon_device.c | 4 ++++ drivers/net/ethernet/cavium/liquidio/octeon_droq.c | 4 ++-- drivers/net/ethernet/cavium/liquidio/octeon_droq.h | 3 +++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_device.c b/drivers/net/ethernet/cavium/liquidio/octeon_device.c index e4aa339..2c615ab 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_device.c +++ b/drivers/net/ethernet/cavium/liquidio/octeon_device.c @@ -1180,6 +1180,10 @@ void octeon_delete_dispatch_list(struct octeon_device *oct) spin_unlock_bh(&oct->dispatch.lock); } else { + if (pfn == fn && + octeon_get_dispatch_arg(oct, opcode, subcode) == fn_arg) + return 0; + dev_err(&oct->pci_dev->dev, "Found previously registered dispatch fn for opcode/subcode: %x/%x\n", opcode, subcode); diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_droq.c b/drivers/net/ethernet/cavium/liquidio/octeon_droq.c index 9372d4c..3461d65 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_droq.c +++ b/drivers/net/ethernet/cavium/liquidio/octeon_droq.c @@ -52,8 +52,8 @@ struct __dispatch { * @return Failure: NULL * */ -static inline void *octeon_get_dispatch_arg(struct octeon_device *octeon_dev, - u16 opcode, u16 subcode) +void *octeon_get_dispatch_arg(struct octeon_device *octeon_dev, + u16 opcode, u16 subcode) { int idx; struct list_head *dispatch; diff --git a/drivers/net/ethernet/cavium/liquidio/octeon_droq.h b/drivers/net/ethernet/cavium/liquidio/octeon_droq.h index f91bc84..815a9f5 100644 --- a/drivers/net/ethernet/cavium/liquidio/octeon_droq.h +++ b/drivers/net/ethernet/cavium/liquidio/octeon_droq.h @@ -400,6 +400,9 @@ int octeon_register_dispatch_fn(struct octeon_device *oct, u16 subcode, octeon_dispatch_fn_t fn, void *fn_arg); +void *octeon_get_dispatch_arg(struct octeon_device *oct, + u16 opcode, u16 subcode); + void octeon_droq_print_stats(void); u32 octeon_droq_check_hw_for_pkts(struct octeon_droq *droq);