diff options
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_mid.c')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_mid.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/scsi/qla2xxx/qla_mid.c b/drivers/scsi/qla2xxx/qla_mid.c index e07b3617f019..8220e7b9799b 100644 --- a/drivers/scsi/qla2xxx/qla_mid.c +++ b/drivers/scsi/qla2xxx/qla_mid.c | |||
@@ -9,6 +9,7 @@ | |||
9 | 9 | ||
10 | #include <linux/moduleparam.h> | 10 | #include <linux/moduleparam.h> |
11 | #include <linux/vmalloc.h> | 11 | #include <linux/vmalloc.h> |
12 | #include <linux/slab.h> | ||
12 | #include <linux/list.h> | 13 | #include <linux/list.h> |
13 | 14 | ||
14 | #include <scsi/scsi_tcq.h> | 15 | #include <scsi/scsi_tcq.h> |
@@ -382,8 +383,6 @@ qla24xx_create_vhost(struct fc_vport *fc_vport) | |||
382 | vha->mgmt_svr_loop_id = 10 + vha->vp_idx; | 383 | vha->mgmt_svr_loop_id = 10 + vha->vp_idx; |
383 | 384 | ||
384 | vha->dpc_flags = 0L; | 385 | vha->dpc_flags = 0L; |
385 | set_bit(REGISTER_FDMI_NEEDED, &vha->dpc_flags); | ||
386 | set_bit(REGISTER_FC4_NEEDED, &vha->dpc_flags); | ||
387 | 386 | ||
388 | /* | 387 | /* |
389 | * To fix the issue of processing a parent's RSCN for the vport before | 388 | * To fix the issue of processing a parent's RSCN for the vport before |
@@ -638,11 +637,15 @@ failed: | |||
638 | 637 | ||
639 | static void qla_do_work(struct work_struct *work) | 638 | static void qla_do_work(struct work_struct *work) |
640 | { | 639 | { |
640 | unsigned long flags; | ||
641 | struct rsp_que *rsp = container_of(work, struct rsp_que, q_work); | 641 | struct rsp_que *rsp = container_of(work, struct rsp_que, q_work); |
642 | struct scsi_qla_host *vha; | 642 | struct scsi_qla_host *vha; |
643 | struct qla_hw_data *ha = rsp->hw; | ||
643 | 644 | ||
644 | vha = qla25xx_get_host(rsp); | 645 | spin_lock_irqsave(&rsp->hw->hardware_lock, flags); |
646 | vha = pci_get_drvdata(ha->pdev); | ||
645 | qla24xx_process_response_queue(vha, rsp); | 647 | qla24xx_process_response_queue(vha, rsp); |
648 | spin_unlock_irqrestore(&rsp->hw->hardware_lock, flags); | ||
646 | } | 649 | } |
647 | 650 | ||
648 | /* create response queue */ | 651 | /* create response queue */ |
@@ -698,6 +701,10 @@ qla25xx_create_rsp_que(struct qla_hw_data *ha, uint16_t options, | |||
698 | /* Use alternate PCI devfn */ | 701 | /* Use alternate PCI devfn */ |
699 | if (LSB(rsp->rid)) | 702 | if (LSB(rsp->rid)) |
700 | options |= BIT_5; | 703 | options |= BIT_5; |
704 | /* Enable MSIX handshake mode on for uncapable adapters */ | ||
705 | if (!IS_MSIX_NACK_CAPABLE(ha)) | ||
706 | options |= BIT_6; | ||
707 | |||
701 | rsp->options = options; | 708 | rsp->options = options; |
702 | rsp->id = que_id; | 709 | rsp->id = que_id; |
703 | reg = ISP_QUE_REG(ha, que_id); | 710 | reg = ISP_QUE_REG(ha, que_id); |