aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/bfa/bfad_bsg.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/bfa/bfad_bsg.c')
-rw-r--r--drivers/scsi/bfa/bfad_bsg.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/drivers/scsi/bfa/bfad_bsg.c b/drivers/scsi/bfa/bfad_bsg.c
index 0db905531a7..0afa39076ce 100644
--- a/drivers/scsi/bfa/bfad_bsg.c
+++ b/drivers/scsi/bfa/bfad_bsg.c
@@ -677,9 +677,11 @@ bfad_iocmd_rport_get_stats(struct bfad_s *bfad, void *cmd)
677 677
678 memcpy((void *)&iocmd->stats, (void *)&fcs_rport->stats, 678 memcpy((void *)&iocmd->stats, (void *)&fcs_rport->stats,
679 sizeof(struct bfa_rport_stats_s)); 679 sizeof(struct bfa_rport_stats_s));
680 memcpy((void *)&iocmd->stats.hal_stats, 680 if (bfa_fcs_rport_get_halrport(fcs_rport)) {
681 (void *)&(bfa_fcs_rport_get_halrport(fcs_rport)->stats), 681 memcpy((void *)&iocmd->stats.hal_stats,
682 sizeof(struct bfa_rport_hal_stats_s)); 682 (void *)&(bfa_fcs_rport_get_halrport(fcs_rport)->stats),
683 sizeof(struct bfa_rport_hal_stats_s));
684 }
683 685
684 spin_unlock_irqrestore(&bfad->bfad_lock, flags); 686 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
685 iocmd->status = BFA_STATUS_OK; 687 iocmd->status = BFA_STATUS_OK;
@@ -715,7 +717,8 @@ bfad_iocmd_rport_clr_stats(struct bfad_s *bfad, void *cmd)
715 717
716 memset((char *)&fcs_rport->stats, 0, sizeof(struct bfa_rport_stats_s)); 718 memset((char *)&fcs_rport->stats, 0, sizeof(struct bfa_rport_stats_s));
717 rport = bfa_fcs_rport_get_halrport(fcs_rport); 719 rport = bfa_fcs_rport_get_halrport(fcs_rport);
718 memset(&rport->stats, 0, sizeof(rport->stats)); 720 if (rport)
721 memset(&rport->stats, 0, sizeof(rport->stats));
719 spin_unlock_irqrestore(&bfad->bfad_lock, flags); 722 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
720 iocmd->status = BFA_STATUS_OK; 723 iocmd->status = BFA_STATUS_OK;
721out: 724out:
@@ -750,7 +753,8 @@ bfad_iocmd_rport_set_speed(struct bfad_s *bfad, void *cmd)
750 fcs_rport->rpf.assigned_speed = iocmd->speed; 753 fcs_rport->rpf.assigned_speed = iocmd->speed;
751 /* Set this speed in f/w only if the RPSC speed is not available */ 754 /* Set this speed in f/w only if the RPSC speed is not available */
752 if (fcs_rport->rpf.rpsc_speed == BFA_PORT_SPEED_UNKNOWN) 755 if (fcs_rport->rpf.rpsc_speed == BFA_PORT_SPEED_UNKNOWN)
753 bfa_rport_speed(fcs_rport->bfa_rport, iocmd->speed); 756 if (fcs_rport->bfa_rport)
757 bfa_rport_speed(fcs_rport->bfa_rport, iocmd->speed);
754 spin_unlock_irqrestore(&bfad->bfad_lock, flags); 758 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
755 iocmd->status = BFA_STATUS_OK; 759 iocmd->status = BFA_STATUS_OK;
756out: 760out:
@@ -1036,9 +1040,10 @@ bfad_iocmd_itnim_get_iostats(struct bfad_s *bfad, void *cmd)
1036 iocmd->status = BFA_STATUS_UNKNOWN_RWWN; 1040 iocmd->status = BFA_STATUS_UNKNOWN_RWWN;
1037 else { 1041 else {
1038 iocmd->status = BFA_STATUS_OK; 1042 iocmd->status = BFA_STATUS_OK;
1039 memcpy((void *)&iocmd->iostats, (void *) 1043 if (bfa_fcs_itnim_get_halitn(itnim))
1040 &(bfa_fcs_itnim_get_halitn(itnim)->stats), 1044 memcpy((void *)&iocmd->iostats, (void *)
1041 sizeof(struct bfa_itnim_iostats_s)); 1045 &(bfa_fcs_itnim_get_halitn(itnim)->stats),
1046 sizeof(struct bfa_itnim_iostats_s));
1042 } 1047 }
1043 } 1048 }
1044 spin_unlock_irqrestore(&bfad->bfad_lock, flags); 1049 spin_unlock_irqrestore(&bfad->bfad_lock, flags);