aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_init.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_init.c')
-rw-r--r--drivers/scsi/qla2xxx/qla_init.c80
1 files changed, 40 insertions, 40 deletions
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index 08bdba520c90..80f4f9de8182 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -768,42 +768,16 @@ qla2x00_alloc_fw_dump(scsi_qla_host_t *ha)
768 mem_size = (ha->fw_memory_size - 0x100000 + 1) * 768 mem_size = (ha->fw_memory_size - 0x100000 + 1) *
769 sizeof(uint32_t); 769 sizeof(uint32_t);
770 770
771 /* Allocate memory for Extended Trace Buffer. */
772 tc = dma_alloc_coherent(&ha->pdev->dev, EFT_SIZE, &tc_dma,
773 GFP_KERNEL);
774 if (!tc) {
775 qla_printk(KERN_WARNING, ha, "Unable to allocate "
776 "(%d KB) for EFT.\n", EFT_SIZE / 1024);
777 goto cont_alloc;
778 }
779
780 memset(tc, 0, EFT_SIZE);
781 rval = qla2x00_enable_eft_trace(ha, tc_dma, EFT_NUM_BUFFERS);
782 if (rval) {
783 qla_printk(KERN_WARNING, ha, "Unable to initialize "
784 "EFT (%d).\n", rval);
785 dma_free_coherent(&ha->pdev->dev, EFT_SIZE, tc,
786 tc_dma);
787 goto cont_alloc;
788 }
789
790 qla_printk(KERN_INFO, ha, "Allocated (%d KB) for EFT...\n",
791 EFT_SIZE / 1024);
792
793 eft_size = EFT_SIZE;
794 ha->eft_dma = tc_dma;
795 ha->eft = tc;
796
797 /* Allocate memory for Fibre Channel Event Buffer. */ 771 /* Allocate memory for Fibre Channel Event Buffer. */
798 if (!IS_QLA25XX(ha)) 772 if (!IS_QLA25XX(ha))
799 goto cont_alloc; 773 goto try_eft;
800 774
801 tc = dma_alloc_coherent(&ha->pdev->dev, FCE_SIZE, &tc_dma, 775 tc = dma_alloc_coherent(&ha->pdev->dev, FCE_SIZE, &tc_dma,
802 GFP_KERNEL); 776 GFP_KERNEL);
803 if (!tc) { 777 if (!tc) {
804 qla_printk(KERN_WARNING, ha, "Unable to allocate " 778 qla_printk(KERN_WARNING, ha, "Unable to allocate "
805 "(%d KB) for FCE.\n", FCE_SIZE / 1024); 779 "(%d KB) for FCE.\n", FCE_SIZE / 1024);
806 goto cont_alloc; 780 goto try_eft;
807 } 781 }
808 782
809 memset(tc, 0, FCE_SIZE); 783 memset(tc, 0, FCE_SIZE);
@@ -815,7 +789,7 @@ qla2x00_alloc_fw_dump(scsi_qla_host_t *ha)
815 dma_free_coherent(&ha->pdev->dev, FCE_SIZE, tc, 789 dma_free_coherent(&ha->pdev->dev, FCE_SIZE, tc,
816 tc_dma); 790 tc_dma);
817 ha->flags.fce_enabled = 0; 791 ha->flags.fce_enabled = 0;
818 goto cont_alloc; 792 goto try_eft;
819 } 793 }
820 794
821 qla_printk(KERN_INFO, ha, "Allocated (%d KB) for FCE...\n", 795 qla_printk(KERN_INFO, ha, "Allocated (%d KB) for FCE...\n",
@@ -825,6 +799,32 @@ qla2x00_alloc_fw_dump(scsi_qla_host_t *ha)
825 ha->flags.fce_enabled = 1; 799 ha->flags.fce_enabled = 1;
826 ha->fce_dma = tc_dma; 800 ha->fce_dma = tc_dma;
827 ha->fce = tc; 801 ha->fce = tc;
802try_eft:
803 /* Allocate memory for Extended Trace Buffer. */
804 tc = dma_alloc_coherent(&ha->pdev->dev, EFT_SIZE, &tc_dma,
805 GFP_KERNEL);
806 if (!tc) {
807 qla_printk(KERN_WARNING, ha, "Unable to allocate "
808 "(%d KB) for EFT.\n", EFT_SIZE / 1024);
809 goto cont_alloc;
810 }
811
812 memset(tc, 0, EFT_SIZE);
813 rval = qla2x00_enable_eft_trace(ha, tc_dma, EFT_NUM_BUFFERS);
814 if (rval) {
815 qla_printk(KERN_WARNING, ha, "Unable to initialize "
816 "EFT (%d).\n", rval);
817 dma_free_coherent(&ha->pdev->dev, EFT_SIZE, tc,
818 tc_dma);
819 goto cont_alloc;
820 }
821
822 qla_printk(KERN_INFO, ha, "Allocated (%d KB) for EFT...\n",
823 EFT_SIZE / 1024);
824
825 eft_size = EFT_SIZE;
826 ha->eft_dma = tc_dma;
827 ha->eft = tc;
828 } 828 }
829cont_alloc: 829cont_alloc:
830 req_q_size = ha->request_q_length * sizeof(request_t); 830 req_q_size = ha->request_q_length * sizeof(request_t);
@@ -3286,17 +3286,6 @@ qla2x00_abort_isp(scsi_qla_host_t *ha)
3286 ha->isp_abort_cnt = 0; 3286 ha->isp_abort_cnt = 0;
3287 clear_bit(ISP_ABORT_RETRY, &ha->dpc_flags); 3287 clear_bit(ISP_ABORT_RETRY, &ha->dpc_flags);
3288 3288
3289 if (ha->eft) {
3290 memset(ha->eft, 0, EFT_SIZE);
3291 rval = qla2x00_enable_eft_trace(ha,
3292 ha->eft_dma, EFT_NUM_BUFFERS);
3293 if (rval) {
3294 qla_printk(KERN_WARNING, ha,
3295 "Unable to reinitialize EFT "
3296 "(%d).\n", rval);
3297 }
3298 }
3299
3300 if (ha->fce) { 3289 if (ha->fce) {
3301 ha->flags.fce_enabled = 1; 3290 ha->flags.fce_enabled = 1;
3302 memset(ha->fce, 0, 3291 memset(ha->fce, 0,
@@ -3311,6 +3300,17 @@ qla2x00_abort_isp(scsi_qla_host_t *ha)
3311 ha->flags.fce_enabled = 0; 3300 ha->flags.fce_enabled = 0;
3312 } 3301 }
3313 } 3302 }
3303
3304 if (ha->eft) {
3305 memset(ha->eft, 0, EFT_SIZE);
3306 rval = qla2x00_enable_eft_trace(ha,
3307 ha->eft_dma, EFT_NUM_BUFFERS);
3308 if (rval) {
3309 qla_printk(KERN_WARNING, ha,
3310 "Unable to reinitialize EFT "
3311 "(%d).\n", rval);
3312 }
3313 }
3314 } else { /* failed the ISP abort */ 3314 } else { /* failed the ISP abort */
3315 ha->flags.online = 1; 3315 ha->flags.online = 1;
3316 if (test_bit(ISP_ABORT_RETRY, &ha->dpc_flags)) { 3316 if (test_bit(ISP_ABORT_RETRY, &ha->dpc_flags)) {