summaryrefslogtreecommitdiffstats
path: root/sys/dev/isp/isp.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/isp/isp.c')
-rw-r--r--sys/dev/isp/isp.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/dev/isp/isp.c b/sys/dev/isp/isp.c
index 03900dc..3fa49d1 100644
--- a/sys/dev/isp/isp.c
+++ b/sys/dev/isp/isp.c
@@ -2089,7 +2089,7 @@ isp_fibre_init_2400(ispsoftc_t *isp)
}
if (IS_26XX(isp)) {
- /* We don't support MSI-X yet, so set this unconditionally. */
+ /* Use handshake to reduce global lock congestion. */
icbp->icb_fwoptions2 |= ICB2400_OPT2_ENA_IHR;
icbp->icb_fwoptions2 |= ICB2400_OPT2_ENA_IHA;
}
@@ -2187,6 +2187,12 @@ isp_fibre_init_2400(ispsoftc_t *isp)
DMA_WD1(isp->isp_atioq_dma), DMA_WD0(isp->isp_atioq_dma));
#endif
+ if (ISP_CAP_MSIX(isp) && isp->isp_nirq >= 2) {
+ icbp->icb_msixresp = 1;
+ if (IS_26XX(isp) && isp->isp_nirq >= 3)
+ icbp->icb_msixatio = 2;
+ }
+
isp_prt(isp, ISP_LOGDEBUG0, "isp_fibre_init_2400: fwopt1 0x%x fwopt2 0x%x fwopt3 0x%x", icbp->icb_fwoptions1, icbp->icb_fwoptions2, icbp->icb_fwoptions3);
isp_prt(isp, ISP_LOGDEBUG0, "isp_fibre_init_2400: rqst %04x%04x%04x%04x rsp %04x%04x%04x%04x", DMA_WD3(isp->isp_rquest_dma), DMA_WD2(isp->isp_rquest_dma),
OpenPOWER on IntegriCloud