aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/bfa/bfad_bsg.c
diff options
context:
space:
mode:
authorVijaya Mohan Guvva <vmohan@brocade.com>2013-11-21 04:37:28 -0500
committerJames Bottomley <JBottomley@Parallels.com>2013-12-19 10:39:04 -0500
commit28d358d01e1d27c17b6448935693b28cb5624bbe (patch)
treea34eb90f977ecd725873d507f5c278d23a7286e8 /drivers/scsi/bfa/bfad_bsg.c
parent0e7c60cb8cd7b0250b1cf40012e5015c90bb89db (diff)
[SCSI] bfa: Firmware patch simplification
This patch includes change to enable firmware patch simplication feature. This feature is targeted to address the requirement to have independent patch release for firmware. Prior to 3.2.3, releasing a patch fix for firmware requires changes to bfa, to use new firmware images. But with these changes, if the new firmware is flashed on to the HBA with brocade adapter management utilites, driver uses the new firmware after checking the patch release byte in the firmware version. Signed-off-by: Vijaya Mohan Guvva <vmohan@brocade.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/bfa/bfad_bsg.c')
-rw-r--r--drivers/scsi/bfa/bfad_bsg.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/scsi/bfa/bfad_bsg.c b/drivers/scsi/bfa/bfad_bsg.c
index 0467c349251a..157f6044a9bb 100644
--- a/drivers/scsi/bfa/bfad_bsg.c
+++ b/drivers/scsi/bfa/bfad_bsg.c
@@ -229,6 +229,18 @@ bfad_iocmd_iocfc_get_attr(struct bfad_s *bfad, void *cmd)
229} 229}
230 230
231int 231int
232bfad_iocmd_ioc_fw_sig_inv(struct bfad_s *bfad, void *cmd)
233{
234 struct bfa_bsg_gen_s *iocmd = (struct bfa_bsg_gen_s *)cmd;
235 unsigned long flags;
236
237 spin_lock_irqsave(&bfad->bfad_lock, flags);
238 iocmd->status = bfa_ioc_fwsig_invalidate(&bfad->bfa.ioc);
239 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
240 return 0;
241}
242
243int
232bfad_iocmd_iocfc_set_intr(struct bfad_s *bfad, void *cmd) 244bfad_iocmd_iocfc_set_intr(struct bfad_s *bfad, void *cmd)
233{ 245{
234 struct bfa_bsg_iocfc_intr_s *iocmd = (struct bfa_bsg_iocfc_intr_s *)cmd; 246 struct bfa_bsg_iocfc_intr_s *iocmd = (struct bfa_bsg_iocfc_intr_s *)cmd;
@@ -2893,6 +2905,9 @@ bfad_iocmd_handler(struct bfad_s *bfad, unsigned int cmd, void *iocmd,
2893 case IOCMD_IOC_PCIFN_CFG: 2905 case IOCMD_IOC_PCIFN_CFG:
2894 rc = bfad_iocmd_ioc_get_pcifn_cfg(bfad, iocmd); 2906 rc = bfad_iocmd_ioc_get_pcifn_cfg(bfad, iocmd);
2895 break; 2907 break;
2908 case IOCMD_IOC_FW_SIG_INV:
2909 rc = bfad_iocmd_ioc_fw_sig_inv(bfad, iocmd);
2910 break;
2896 case IOCMD_PCIFN_CREATE: 2911 case IOCMD_PCIFN_CREATE:
2897 rc = bfad_iocmd_pcifn_create(bfad, iocmd); 2912 rc = bfad_iocmd_pcifn_create(bfad, iocmd);
2898 break; 2913 break;