The channel being used for raw srb commands is retrieved from the utility
sent fibs and is converted into physical channel id. The driver does not
need to to do this since the management utility sends the correct channel
id in the first place and in addition the driver sets inaccurate
information in the cmd sent to the firmware and gets an invalid response.

Fixed by using channel id from srb command.

Cc: sta...@vger.kernel.org
Fixes: 423400e64d377c0 ("scsi: aacraid: Include HBA direct interface")
Signed-off-by: Raghava Aditya Renukunta <raghavaaditya.renuku...@microsemi.com>
Reviewed-by: David Carroll <david.carr...@microsemi.com>
Reviewed-by: Johannes Thumshirn <jthumsh...@suse.de>

---
Changes in V2:
None

 drivers/scsi/aacraid/commctrl.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/scsi/aacraid/commctrl.c b/drivers/scsi/aacraid/commctrl.c
index 614842a..f6afd50 100644
--- a/drivers/scsi/aacraid/commctrl.c
+++ b/drivers/scsi/aacraid/commctrl.c
@@ -580,7 +580,7 @@ static int aac_send_raw_srb(struct aac_dev* dev, void 
__user * arg)
                goto cleanup;
        }
 
-       chn = aac_logical_to_phys(user_srbcmd->channel);
+       chn = user_srbcmd->channel;
        if (chn < AAC_MAX_BUSES && user_srbcmd->id < AAC_MAX_TARGETS &&
                dev->hba_map[chn][user_srbcmd->id].devtype ==
                AAC_DEVTYPE_NATIVE_RAW) {
-- 
2.7.4

Reply via email to