diff mbox series

[Disco] scsi: libsas: Check SMP PHY control function result

Message ID 20190401211804.9879-1-dann.frazier@canonical.com
State New
Headers show
Series [Disco] scsi: libsas: Check SMP PHY control function result | expand

Commit Message

dann frazier April 1, 2019, 9:18 p.m. UTC
From: John Garry <john.garry@huawei.com>

BugLink: https://bugs.launchpad.net/bugs/1822680

Currently the SMP PHY control execution result is checked, however the
function result for the command is not.

As such, we may be missing all potential errors, like SMP FUNCTION FAILED,
INVALID REQUEST FRAME LENGTH, etc., meaning the PHY control request has
failed.

In some scenarios we need to ensure the function result is accepted, so add
a check for this.

Tested-by: Jian Luo <luojian5@huawei.com>
Signed-off-by: John Garry <john.garry@huawei.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
(cherry picked from commit 01929a65dfa13e18d89264ab1378854a91857e59)
Signed-off-by: dann frazier <dann.frazier@canonical.com>
---
 drivers/scsi/libsas/sas_expander.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

Comments

Seth Forshee April 2, 2019, 8:35 p.m. UTC | #1
On Mon, Apr 01, 2019 at 03:18:04PM -0600, dann frazier wrote:
> From: John Garry <john.garry@huawei.com>
> 
> BugLink: https://bugs.launchpad.net/bugs/1822680
> 
> Currently the SMP PHY control execution result is checked, however the
> function result for the command is not.
> 
> As such, we may be missing all potential errors, like SMP FUNCTION FAILED,
> INVALID REQUEST FRAME LENGTH, etc., meaning the PHY control request has
> failed.
> 
> In some scenarios we need to ensure the function result is accepted, so add
> a check for this.
> 
> Tested-by: Jian Luo <luojian5@huawei.com>
> Signed-off-by: John Garry <john.garry@huawei.com>
> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
> (cherry picked from commit 01929a65dfa13e18d89264ab1378854a91857e59)
> Signed-off-by: dann frazier <dann.frazier@canonical.com>

Applied to disco/master-next, thanks!
diff mbox series

Patch

diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c
index b5d31e7cbbf1f..bc0bdd4eafe62 100644
--- a/drivers/scsi/libsas/sas_expander.c
+++ b/drivers/scsi/libsas/sas_expander.c
@@ -614,7 +614,14 @@  int sas_smp_phy_control(struct domain_device *dev, int phy_id,
 	}
 
 	res = smp_execute_task(dev, pc_req, PC_REQ_SIZE, pc_resp,PC_RESP_SIZE);
-
+	if (res) {
+		pr_err("ex %016llx phy%02d PHY control failed: %d\n",
+		       SAS_ADDR(dev->sas_addr), phy_id, res);
+	} else if (pc_resp[2] != SMP_RESP_FUNC_ACC) {
+		pr_err("ex %016llx phy%02d PHY control failed: function result 0x%x\n",
+		       SAS_ADDR(dev->sas_addr), phy_id, pc_resp[2]);
+		res = pc_resp[2];
+	}
 	kfree(pc_resp);
 	kfree(pc_req);
 	return res;