From patchwork Fri Apr 15 07:23:32 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sumit Saxena X-Patchwork-Id: 8845571 Return-Path: X-Original-To: patchwork-linux-scsi@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 3F6DDC0553 for ; Fri, 15 Apr 2016 07:24:10 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 3A10B202DD for ; Fri, 15 Apr 2016 07:24:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 462572027D for ; Fri, 15 Apr 2016 07:24:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752306AbcDOHYH (ORCPT ); Fri, 15 Apr 2016 03:24:07 -0400 Received: from mail-pa0-f52.google.com ([209.85.220.52]:33232 "EHLO mail-pa0-f52.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751791AbcDOHYG (ORCPT ); Fri, 15 Apr 2016 03:24:06 -0400 Received: by mail-pa0-f52.google.com with SMTP id zm5so52911237pac.0 for ; Fri, 15 Apr 2016 00:24:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=dDYZ6cV/ac1EnW2KttS0MOSnnWhFDal89zp7twyq/jQ=; b=OSys0ri3TSqGYQXsCkFntDwKtXkapcBNNbMRfj3cFaAz19LJ3dBKJubeBfED83cbru 7hQWVyxvOh4KQ8E1aK9ggwQYuojLfjIhaXjlXjeKLnG1pFcM79I2Nl8txO+T7H4vbgkG /9W6Th6cw6J4HVCBBpSA9bJ2WGhob6Cy8yx+s= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=dDYZ6cV/ac1EnW2KttS0MOSnnWhFDal89zp7twyq/jQ=; b=O1WpNWmPt38vDx+T2i9wWmmi8zWVpZxlq6/KzpNfL1b6tXyFGQ4oCtpsDMXLTsYkwX h1odWehh6mhUviCBeMvSyz/jOcawc1O6mrNQoqWKOaHWjeUHiTdyLGmYzW/3+enegek4 bG+T1LAUUQljG7RtmFyB6xbirIEaVPdnsdGgu5/VzI6uGHWYM8HB2ZDd/15owY4fqD8I mXsgKLj2GEtFrLc9pb5Ta886qbLMPI29CZjrAqYT7go6s0jFw6YBG9fpdM/RVwq593eO 8iZ3hnbdTxJK//aDBIN+PzELEQ5T9vNtXdXe5z8cAFuciru2vLpFrL62phnThHinSkze osRA== X-Gm-Message-State: AOPr4FVI8EYwzs31NZA1S3xf/bmnCxiLEcblF9o46MKZLNqJQShumk4YUTSFWuJuqXw4rsE1 X-Received: by 10.67.14.6 with SMTP id fc6mr26771462pad.55.1460705045480; Fri, 15 Apr 2016 00:24:05 -0700 (PDT) Received: from dhcp-135-24-192-142.localdomain ([192.19.239.250]) by smtp.gmail.com with ESMTPSA id p189sm41983857pfb.51.2016.04.15.00.24.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 15 Apr 2016 00:24:04 -0700 (PDT) From: Sumit Saxena To: James.Bottomley@HansenPartnership.com, martin.petersen@oracle.com, hch@infradead.org, thenzl@redhat.com Cc: kashyap.desai@broadcom.com, linux-scsi@vger.kernel.org, sumit.saxena@broadcom.com Subject: [PATCH 3/4] megaraid_sas: task management code optimizations Date: Fri, 15 Apr 2016 00:23:32 -0700 Message-Id: <1460705013-6482-4-git-send-email-sumit.saxena@broadcom.com> X-Mailer: git-send-email 2.4.3 In-Reply-To: <1460705013-6482-1-git-send-email-sumit.saxena@broadcom.com> References: <1460705013-6482-1-git-send-email-sumit.saxena@broadcom.com> Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org X-Spam-Status: No, score=-7.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,T_DKIM_INVALID,UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This patch will do code optmization for task management functions. Below are key changes- 1. Remove reset_device hook as it was not being used and driver was setting this to NULL. 2. Create wrapper functions for task abort and target reset and inside these functions adapter specific calls be made. e.g. fusion adapters support task abort and target reset so task abort and target reset should be issued to fusion adapters only and for MFI adapters, print a message saying feature not supported. Signed-off-by: Sumit Saxena Reviewed-by: Hannes Reinecke --- drivers/scsi/megaraid/megaraid_sas_base.c | 67 +++++++++++++++++++++---------- 1 file changed, 46 insertions(+), 21 deletions(-) diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c index 8588202..b84756c 100644 --- a/drivers/scsi/megaraid/megaraid_sas_base.c +++ b/drivers/scsi/megaraid/megaraid_sas_base.c @@ -2670,17 +2670,6 @@ blk_eh_timer_return megasas_reset_timer(struct scsi_cmnd *scmd) } /** - * megasas_reset_device - Device reset handler entry point - */ -static int megasas_reset_device(struct scsi_cmnd *scmd) -{ - /* - * First wait for all commands to complete - */ - return megasas_generic_reset(scmd); -} - -/** * megasas_reset_bus_host - Bus & host reset handler entry point */ static int megasas_reset_bus_host(struct scsi_cmnd *scmd) @@ -2702,6 +2691,50 @@ static int megasas_reset_bus_host(struct scsi_cmnd *scmd) } /** + * megasas_task_abort - Issues task abort request to firmware + * (supported only for fusion adapters) + * @scmd: SCSI command pointer + */ +static int megasas_task_abort(struct scsi_cmnd *scmd) +{ + int ret; + struct megasas_instance *instance; + + instance = (struct megasas_instance *)scmd->device->host->hostdata; + + if (instance->ctrl_context) + ret = megasas_task_abort_fusion(scmd); + else { + sdev_printk(KERN_NOTICE, scmd->device, "TASK ABORT not supported\n"); + ret = FAILED; + } + + return ret; +} + +/** + * megasas_reset_target: Issues target reset request to firmware + * (supported only for fusion adapters) + * @scmd: SCSI command pointer + */ +static int megasas_reset_target(struct scsi_cmnd *scmd) +{ + int ret; + struct megasas_instance *instance; + + instance = (struct megasas_instance *)scmd->device->host->hostdata; + + if (instance->ctrl_context) + ret = megasas_reset_target_fusion(scmd); + else { + sdev_printk(KERN_NOTICE, scmd->device, "TARGET RESET not supported\n"); + ret = FAILED; + } + + return ret; +} + +/** * megasas_bios_param - Returns disk geometry for a disk * @sdev: device handle * @bdev: block device @@ -2969,8 +3002,8 @@ static struct scsi_host_template megasas_template = { .slave_alloc = megasas_slave_alloc, .slave_destroy = megasas_slave_destroy, .queuecommand = megasas_queue_command, - .eh_device_reset_handler = megasas_reset_device, - .eh_bus_reset_handler = megasas_reset_bus_host, + .eh_target_reset_handler = megasas_reset_target, + .eh_abort_handler = megasas_task_abort, .eh_host_reset_handler = megasas_reset_bus_host, .eh_timed_out = megasas_reset_timer, .shost_attrs = megaraid_host_attrs, @@ -5598,14 +5631,6 @@ static int megasas_io_attach(struct megasas_instance *instance) host->max_lun = MEGASAS_MAX_LUN; host->max_cmd_len = 16; - /* Fusion only supports host reset */ - if (instance->ctrl_context) { - host->hostt->eh_device_reset_handler = NULL; - host->hostt->eh_bus_reset_handler = NULL; - host->hostt->eh_target_reset_handler = megasas_reset_target_fusion; - host->hostt->eh_abort_handler = megasas_task_abort_fusion; - } - /* * Notify the mid-layer about the new controller */