scsi: csiostor: fail probe if fw does not support FCoE
authorVarun Prakash <varun@chelsio.com>
Mon, 31 Jul 2017 16:32:55 +0000 (22:02 +0530)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 17 Aug 2017 00:01:30 +0000 (20:01 -0400)
Fail probe if FCoE capability is not enabled in the firmware.

Signed-off-by: Varun Prakash <varun@chelsio.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/csiostor/csio_hw.c
drivers/scsi/csiostor/csio_init.c

index 2029ad225121162bddfec4ffcce7e38a940385f3..5be0086142cac6991598cd9099522212709a216c 100644 (file)
@@ -3845,8 +3845,10 @@ csio_hw_start(struct csio_hw *hw)
 
        if (csio_is_hw_ready(hw))
                return 0;
-       else
+       else if (csio_match_state(hw, csio_hws_uninit))
                return -EINVAL;
+       else
+               return -ENODEV;
 }
 
 int
index ea0c31086cc6b8b44517c8fcd34a44fb6c93fad9..dcd074169aa9b7794850c7034a1208353ba17266 100644 (file)
@@ -969,10 +969,14 @@ static int csio_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
 
        pci_set_drvdata(pdev, hw);
 
-       if (csio_hw_start(hw) != 0) {
-               dev_err(&pdev->dev,
-                       "Failed to start FW, continuing in debug mode.\n");
-               return 0;
+       rv = csio_hw_start(hw);
+       if (rv) {
+               if (rv == -EINVAL) {
+                       dev_err(&pdev->dev,
+                               "Failed to start FW, continuing in debug mode.\n");
+                       return 0;
+               }
+               goto err_lnode_exit;
        }
 
        sprintf(hw->fwrev_str, "%u.%u.%u.%u\n",