X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fcommon%2Fsfc_efx%2Fbase%2Fef10_ev.c;h=c0cbc427b9601b0ecfa5004ca333758bc10ad445;hb=3dee345ab31a8cc685c9fe5ba3f90aa322ee1d48;hp=aec1c468a4a0212fb574123eebecc6f805dcac74;hpb=9edb8ee3e7ab606baea586d8e9179ec61d971456;p=dpdk.git diff --git a/drivers/common/sfc_efx/base/ef10_ev.c b/drivers/common/sfc_efx/base/ef10_ev.c index aec1c468a4..c0cbc427b9 100644 --- a/drivers/common/sfc_efx/base/ef10_ev.c +++ b/drivers/common/sfc_efx/base/ef10_ev.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: BSD-3-Clause * - * Copyright(c) 2019-2020 Xilinx, Inc. + * Copyright(c) 2019-2021 Xilinx, Inc. * Copyright(c) 2012-2019 Solarflare Communications Inc. */ @@ -121,12 +121,15 @@ ef10_ev_qcreate( __in efx_evq_t *eep) { efx_nic_cfg_t *encp = &(enp->en_nic_cfg); - uint32_t irq; + uint32_t irq = 0; + uint32_t target_evq = 0; efx_rc_t rc; boolean_t low_latency; _NOTE(ARGUNUSED(id)) /* buftbl id managed by MC */ + EFSYS_ASSERT((flags & EFX_EVQ_FLAGS_EXTENDED_WIDTH) == 0); + /* * NO_CONT_EV mode is only requested from the firmware when creating * receive queues, but here it needs to be specified at event queue @@ -157,11 +160,12 @@ ef10_ev_qcreate( EFX_EVQ_FLAGS_NOTIFY_INTERRUPT) { irq = index; } else if (index == EFX_EF10_ALWAYS_INTERRUPTING_EVQ_INDEX) { - irq = index; + /* Use the first interrupt for always interrupting EvQ */ + irq = 0; flags = (flags & ~EFX_EVQ_FLAGS_NOTIFY_MASK) | EFX_EVQ_FLAGS_NOTIFY_INTERRUPT; } else { - irq = EFX_EF10_ALWAYS_INTERRUPTING_EVQ_INDEX; + target_evq = EFX_EF10_ALWAYS_INTERRUPTING_EVQ_INDEX; } /* @@ -185,8 +189,8 @@ ef10_ev_qcreate( * decision and low_latency hint is ignored. */ low_latency = encp->enc_datapath_cap_evb ? 0 : 1; - rc = efx_mcdi_init_evq(enp, index, esmp, ndescs, irq, us, flags, - low_latency); + rc = efx_mcdi_init_evq(enp, index, esmp, ndescs, irq, target_evq, us, + flags, low_latency); if (rc != 0) goto fail2;