aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_mid.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_mid.c')
-rw-r--r--drivers/scsi/qla2xxx/qla_mid.c13
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
639static void qla_do_work(struct work_struct *work) 638static 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);