From patchwork Thu Apr 6 12:42:22 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Qi Zhang X-Patchwork-Id: 23254 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 4A51769D4; Thu, 6 Apr 2017 06:48:22 +0200 (CEST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id D7DEA692F for ; Thu, 6 Apr 2017 06:48:18 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=intel.com; i=@intel.com; q=dns/txt; s=intel; t=1491454099; x=1522990099; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=ASJjwUAhCuynu+WtiwlIOWzFnIvJDepZLLwJpdQdsWE=; b=Y316cTyNMmJBRKn1OREjxAufQwOt3sliAJTSvhwvw6CeFp3odoiEJOy2 kpvwp8/8D7I02EhtHsuNZZrkW8cAuQ==; Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 Apr 2017 21:48:18 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos; i="5.37,282,1488873600"; d="scan'208"; a="1151734689" Received: from qzhan15-z170x-ud5.sh.intel.com ([10.239.66.54]) by fmsmga002.fm.intel.com with ESMTP; 05 Apr 2017 21:48:15 -0700 From: Qi Zhang To: thomas.monjalon@6wind.com Cc: dev@dpdk.org, Qi Zhang Date: Thu, 6 Apr 2017 20:42:22 +0800 Message-Id: <20170406124222.18172-3-qi.z.zhang@intel.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170406124222.18172-1-qi.z.zhang@intel.com> References: <20170404230908.15145-1-qi.z.zhang@intel.com> <20170406124222.18172-1-qi.z.zhang@intel.com> Subject: [dpdk-dev] [PATCH v7 2/2] eal: clean up interrupt handle X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" The patch change the prototype of callback function (rte_intr_callback_fn) by removing the unnecessary parameter. Signed-off-by: Qi Zhang --- v7: - Update for avp and tap driver which are new added. - Merge test code changes. v5: - Update mlx4 driver which is missed in previous version. v4: - Update mlx5 driver which is missed in v1, v2, v3. v3: - Update bnx2x driver which is missed in v1,v2 v2: - Seperate patch 1 of v1 into 2 patches.(part 2) drivers/net/avp/avp_ethdev.c | 5 ++--- drivers/net/bnx2x/bnx2x_ethdev.c | 5 +++-- drivers/net/bnxt/bnxt_irq.c | 3 +-- drivers/net/e1000/em_ethdev.c | 8 +++----- drivers/net/e1000/igb_ethdev.c | 15 ++++++--------- drivers/net/enic/enic_main.c | 3 +-- drivers/net/fm10k/fm10k_ethdev.c | 12 ++++-------- drivers/net/i40e/i40e_ethdev.c | 8 +++----- drivers/net/i40e/i40e_ethdev_vf.c | 5 ++--- drivers/net/ixgbe/ixgbe_ethdev.c | 14 +++++--------- drivers/net/mlx4/mlx4.c | 5 ++--- drivers/net/mlx5/mlx5.h | 2 +- drivers/net/mlx5/mlx5_ethdev.c | 3 +-- drivers/net/nfp/nfp_net.c | 6 ++---- drivers/net/qede/qede_ethdev.c | 4 ++-- drivers/net/sfc/sfc_intr.c | 10 ++++++---- drivers/net/tap/rte_eth_tap.c | 3 +-- drivers/net/virtio/virtio_ethdev.c | 5 ++--- drivers/net/virtio/virtio_ethdev.h | 2 +- lib/librte_eal/common/include/rte_interrupts.h | 3 +-- lib/librte_eal/linuxapp/eal/eal_alarm.c | 5 ++--- lib/librte_eal/linuxapp/eal/eal_interrupts.c | 3 +-- test/test/test_interrupts.c | 23 ++++++++++++----------- 23 files changed, 64 insertions(+), 88 deletions(-) diff --git a/drivers/net/avp/avp_ethdev.c b/drivers/net/avp/avp_ethdev.c index 989152e..7f2ab47 100644 --- a/drivers/net/avp/avp_ethdev.c +++ b/drivers/net/avp/avp_ethdev.c @@ -692,8 +692,7 @@ avp_dev_attach(struct rte_eth_dev *eth_dev) } static void -avp_dev_interrupt_handler(struct rte_intr_handle *intr_handle, - void *data) +avp_dev_interrupt_handler(void *data) { struct rte_eth_dev *eth_dev = data; struct rte_pci_device *pci_dev = AVP_DEV_TO_PCI(eth_dev); @@ -744,7 +743,7 @@ avp_dev_interrupt_handler(struct rte_intr_handle *intr_handle, status); /* re-enable UIO interrupt handling */ - ret = rte_intr_enable(intr_handle); + ret = rte_intr_enable(&pci_dev->intr_handle); if (ret < 0) { PMD_DRV_LOG(ERR, "Failed to re-enable UIO interrupts, ret=%d\n", ret); diff --git a/drivers/net/bnx2x/bnx2x_ethdev.c b/drivers/net/bnx2x/bnx2x_ethdev.c index a0b0dfa..0e8b4d9 100644 --- a/drivers/net/bnx2x/bnx2x_ethdev.c +++ b/drivers/net/bnx2x/bnx2x_ethdev.c @@ -119,12 +119,13 @@ bnx2x_interrupt_action(struct rte_eth_dev *dev) } static __rte_unused void -bnx2x_interrupt_handler(struct rte_intr_handle *handle, void *param) +bnx2x_interrupt_handler(void *param) { struct rte_eth_dev *dev = (struct rte_eth_dev *)param; + struct bnx2x_softc *sc = dev->data->dev_private; bnx2x_interrupt_action(dev); - rte_intr_enable(handle); + rte_intr_enable(&sc->pci_dev->intr_handle); } /* diff --git a/drivers/net/bnxt/bnxt_irq.c b/drivers/net/bnxt/bnxt_irq.c index e93585a..20e17ff 100644 --- a/drivers/net/bnxt/bnxt_irq.c +++ b/drivers/net/bnxt/bnxt_irq.c @@ -45,8 +45,7 @@ * Interrupts */ -static void bnxt_int_handler(struct rte_intr_handle *handle __rte_unused, - void *param) +static void bnxt_int_handler(void *param) { struct rte_eth_dev *eth_dev = (struct rte_eth_dev *)param; struct bnxt *bp = (struct bnxt *)eth_dev->data->dev_private; diff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c index 7110af3..ecefa56 100644 --- a/drivers/net/e1000/em_ethdev.c +++ b/drivers/net/e1000/em_ethdev.c @@ -85,8 +85,7 @@ static int eth_em_rxq_interrupt_setup(struct rte_eth_dev *dev); static int eth_em_interrupt_get_status(struct rte_eth_dev *dev); static int eth_em_interrupt_action(struct rte_eth_dev *dev, struct rte_intr_handle *handle); -static void eth_em_interrupt_handler(struct rte_intr_handle *handle, - void *param); +static void eth_em_interrupt_handler(void *param); static int em_hw_init(struct e1000_hw *hw); static int em_hardware_init(struct e1000_hw *hw); @@ -1658,13 +1657,12 @@ eth_em_interrupt_action(struct rte_eth_dev *dev, * void */ static void -eth_em_interrupt_handler(struct rte_intr_handle *handle, - void *param) +eth_em_interrupt_handler(void *param) { struct rte_eth_dev *dev = (struct rte_eth_dev *)param; eth_em_interrupt_get_status(dev); - eth_em_interrupt_action(dev, handle); + eth_em_interrupt_action(dev, dev->intr_handle); _rte_eth_dev_callback_process(dev, RTE_ETH_EVENT_INTR_LSC, NULL); } diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c index a73cd7a..cc2c244 100644 --- a/drivers/net/e1000/igb_ethdev.c +++ b/drivers/net/e1000/igb_ethdev.c @@ -136,8 +136,7 @@ static int eth_igb_rxq_interrupt_setup(struct rte_eth_dev *dev); static int eth_igb_interrupt_get_status(struct rte_eth_dev *dev); static int eth_igb_interrupt_action(struct rte_eth_dev *dev, struct rte_intr_handle *handle); -static void eth_igb_interrupt_handler(struct rte_intr_handle *handle, - void *param); +static void eth_igb_interrupt_handler(void *param); static int igb_hardware_init(struct e1000_hw *hw); static void igb_hw_control_acquire(struct e1000_hw *hw); static void igb_hw_control_release(struct e1000_hw *hw); @@ -283,8 +282,7 @@ static void eth_igb_assign_msix_vector(struct e1000_hw *hw, int8_t direction, static void eth_igb_write_ivar(struct e1000_hw *hw, uint8_t msix_vector, uint8_t index, uint8_t offset); static void eth_igb_configure_msix_intr(struct rte_eth_dev *dev); -static void eth_igbvf_interrupt_handler(struct rte_intr_handle *handle, - void *param); +static void eth_igbvf_interrupt_handler(void *param); static void igbvf_mbx_process(struct rte_eth_dev *dev); /* @@ -2784,12 +2782,12 @@ eth_igb_interrupt_action(struct rte_eth_dev *dev, * void */ static void -eth_igb_interrupt_handler(struct rte_intr_handle *handle, void *param) +eth_igb_interrupt_handler(void *param) { struct rte_eth_dev *dev = (struct rte_eth_dev *)param; eth_igb_interrupt_get_status(dev); - eth_igb_interrupt_action(dev, handle); + eth_igb_interrupt_action(dev, dev->intr_handle); } static int @@ -2846,13 +2844,12 @@ eth_igbvf_interrupt_action(struct rte_eth_dev *dev, struct rte_intr_handle *intr } static void -eth_igbvf_interrupt_handler(struct rte_intr_handle *handle, - void *param) +eth_igbvf_interrupt_handler(void *param) { struct rte_eth_dev *dev = (struct rte_eth_dev *)param; eth_igbvf_interrupt_get_status(dev); - eth_igbvf_interrupt_action(dev, handle); + eth_igbvf_interrupt_action(dev, dev->intr_handle); } static int diff --git a/drivers/net/enic/enic_main.c b/drivers/net/enic/enic_main.c index 570b7b6..5f2188b 100644 --- a/drivers/net/enic/enic_main.c +++ b/drivers/net/enic/enic_main.c @@ -423,8 +423,7 @@ int enic_link_update(struct enic *enic) } static void -enic_intr_handler(__rte_unused struct rte_intr_handle *handle, - void *arg) +enic_intr_handler(void *arg) { struct rte_eth_dev *dev = (struct rte_eth_dev *)arg; struct enic *enic = pmd_priv(dev); diff --git a/drivers/net/fm10k/fm10k_ethdev.c b/drivers/net/fm10k/fm10k_ethdev.c index b6775d8..de0352e 100644 --- a/drivers/net/fm10k/fm10k_ethdev.c +++ b/drivers/net/fm10k/fm10k_ethdev.c @@ -2542,9 +2542,7 @@ fm10k_dev_handle_fault(struct fm10k_hw *hw, uint32_t eicr) * void */ static void -fm10k_dev_interrupt_handler_pf( - struct rte_intr_handle *handle, - void *param) +fm10k_dev_interrupt_handler_pf(void *param) { struct rte_eth_dev *dev = (struct rte_eth_dev *)param; struct fm10k_hw *hw = FM10K_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -2594,7 +2592,7 @@ fm10k_dev_interrupt_handler_pf( FM10K_WRITE_REG(hw, FM10K_ITR(0), FM10K_ITR_AUTOMASK | FM10K_ITR_MASK_CLEAR); /* Re-enable interrupt from host side */ - rte_intr_enable(handle); + rte_intr_enable(dev->intr_handle); } /** @@ -2609,9 +2607,7 @@ fm10k_dev_interrupt_handler_pf( * void */ static void -fm10k_dev_interrupt_handler_vf( - struct rte_intr_handle *handle, - void *param) +fm10k_dev_interrupt_handler_vf(void *param) { struct rte_eth_dev *dev = (struct rte_eth_dev *)param; struct fm10k_hw *hw = FM10K_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -2628,7 +2624,7 @@ fm10k_dev_interrupt_handler_vf( FM10K_WRITE_REG(hw, FM10K_VFITR(0), FM10K_ITR_AUTOMASK | FM10K_ITR_MASK_CLEAR); /* Re-enable interrupt from host side */ - rte_intr_enable(handle); + rte_intr_enable(dev->intr_handle); } /* Mailbox message handler in VF */ diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c index cb8bf2b..c8f0071 100644 --- a/drivers/net/i40e/i40e_ethdev.c +++ b/drivers/net/i40e/i40e_ethdev.c @@ -328,8 +328,7 @@ static void i40e_stat_update_48(struct i40e_hw *hw, uint64_t *offset, uint64_t *stat); static void i40e_pf_config_irq0(struct i40e_hw *hw, bool no_queue); -static void i40e_dev_interrupt_handler(struct rte_intr_handle *handle, - void *param); +static void i40e_dev_interrupt_handler(void *param); static int i40e_res_pool_init(struct i40e_res_pool_info *pool, uint32_t base, uint32_t num); static void i40e_res_pool_destroy(struct i40e_res_pool_info *pool); @@ -5816,8 +5815,7 @@ i40e_dev_handle_aq_msg(struct rte_eth_dev *dev) * void */ static void -i40e_dev_interrupt_handler(struct rte_intr_handle *intr_handle, - void *param) +i40e_dev_interrupt_handler(void *param) { struct rte_eth_dev *dev = (struct rte_eth_dev *)param; struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -5861,7 +5859,7 @@ i40e_dev_interrupt_handler(struct rte_intr_handle *intr_handle, done: /* Enable interrupt */ i40e_pf_enable_irq0(hw); - rte_intr_enable(intr_handle); + rte_intr_enable(dev->intr_handle); } static int diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c index d3659c9..7e48fea 100644 --- a/drivers/net/i40e/i40e_ethdev_vf.c +++ b/drivers/net/i40e/i40e_ethdev_vf.c @@ -1422,8 +1422,7 @@ i40evf_handle_aq_msg(struct rte_eth_dev *dev) * void */ static void -i40evf_dev_interrupt_handler(struct rte_intr_handle *intr_handle, - void *param) +i40evf_dev_interrupt_handler(void *param) { struct rte_eth_dev *dev = (struct rte_eth_dev *)param; struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); @@ -1452,7 +1451,7 @@ i40evf_dev_interrupt_handler(struct rte_intr_handle *intr_handle, done: i40evf_enable_irq0(hw); - rte_intr_enable(intr_handle); + rte_intr_enable(dev->intr_handle); } static int diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c index 0ad59c2..1462324 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.c +++ b/drivers/net/ixgbe/ixgbe_ethdev.c @@ -238,8 +238,7 @@ static int ixgbe_dev_rxq_interrupt_setup(struct rte_eth_dev *dev); static int ixgbe_dev_interrupt_get_status(struct rte_eth_dev *dev); static int ixgbe_dev_interrupt_action(struct rte_eth_dev *dev, struct rte_intr_handle *handle); -static void ixgbe_dev_interrupt_handler(struct rte_intr_handle *handle, - void *param); +static void ixgbe_dev_interrupt_handler(void *param); static void ixgbe_dev_interrupt_delayed_handler(void *param); static void ixgbe_add_rar(struct rte_eth_dev *dev, struct ether_addr *mac_addr, uint32_t index, uint32_t pool); @@ -360,8 +359,7 @@ static int ixgbe_timesync_read_time(struct rte_eth_dev *dev, struct timespec *timestamp); static int ixgbe_timesync_write_time(struct rte_eth_dev *dev, const struct timespec *timestamp); -static void ixgbevf_dev_interrupt_handler(struct rte_intr_handle *handle, - void *param); +static void ixgbevf_dev_interrupt_handler(void *param); static int ixgbe_dev_l2_tunnel_eth_type_conf (struct rte_eth_dev *dev, struct rte_eth_l2_tunnel_conf *l2_tunnel); @@ -3917,13 +3915,12 @@ ixgbe_dev_interrupt_delayed_handler(void *param) * void */ static void -ixgbe_dev_interrupt_handler(struct rte_intr_handle *handle, - void *param) +ixgbe_dev_interrupt_handler(void *param) { struct rte_eth_dev *dev = (struct rte_eth_dev *)param; ixgbe_dev_interrupt_get_status(dev); - ixgbe_dev_interrupt_action(dev, handle); + ixgbe_dev_interrupt_action(dev, dev->intr_handle); } static int @@ -8182,8 +8179,7 @@ ixgbevf_dev_interrupt_action(struct rte_eth_dev *dev) } static void -ixgbevf_dev_interrupt_handler(__rte_unused struct rte_intr_handle *handle, - void *param) +ixgbevf_dev_interrupt_handler(void *param) { struct rte_eth_dev *dev = (struct rte_eth_dev *)param; diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c index ff903e6..aff9155 100644 --- a/drivers/net/mlx4/mlx4.c +++ b/drivers/net/mlx4/mlx4.c @@ -5251,7 +5251,7 @@ mlx4_getenv_int(const char *name) static void mlx4_dev_link_status_handler(void *); static void -mlx4_dev_interrupt_handler(struct rte_intr_handle *, void *); +mlx4_dev_interrupt_handler(void *); /** * Link status handler. @@ -5333,13 +5333,12 @@ mlx4_dev_link_status_handler(void *arg) * Callback argument. */ static void -mlx4_dev_interrupt_handler(struct rte_intr_handle *intr_handle, void *cb_arg) +mlx4_dev_interrupt_handler(void *cb_arg) { struct rte_eth_dev *dev = cb_arg; struct priv *priv = dev->data->dev_private; int ret; - (void)intr_handle; priv_lock(priv); ret = priv_dev_link_status_handler(priv, dev); priv_unlock(priv); diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h index d26d465..e8bf361 100644 --- a/drivers/net/mlx5/mlx5.h +++ b/drivers/net/mlx5/mlx5.h @@ -219,7 +219,7 @@ int mlx5_dev_set_flow_ctrl(struct rte_eth_dev *, struct rte_eth_fc_conf *); int mlx5_ibv_device_to_pci_addr(const struct ibv_device *, struct rte_pci_addr *); void mlx5_dev_link_status_handler(void *); -void mlx5_dev_interrupt_handler(struct rte_intr_handle *, void *); +void mlx5_dev_interrupt_handler(void *); void priv_dev_interrupt_handler_uninstall(struct priv *, struct rte_eth_dev *); void priv_dev_interrupt_handler_install(struct priv *, struct rte_eth_dev *); int mlx5_set_link_down(struct rte_eth_dev *dev); diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c index 18f4c96..3fd22cb 100644 --- a/drivers/net/mlx5/mlx5_ethdev.c +++ b/drivers/net/mlx5/mlx5_ethdev.c @@ -1274,13 +1274,12 @@ mlx5_dev_link_status_handler(void *arg) * Callback argument. */ void -mlx5_dev_interrupt_handler(struct rte_intr_handle *intr_handle, void *cb_arg) +mlx5_dev_interrupt_handler(void *cb_arg) { struct rte_eth_dev *dev = cb_arg; struct priv *priv = dev->data->dev_private; int ret; - (void)intr_handle; priv_lock(priv); ret = priv_dev_link_status_handler(priv, dev); priv_unlock(priv); diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c index a1ad97a..1a7a992 100644 --- a/drivers/net/nfp/nfp_net.c +++ b/drivers/net/nfp/nfp_net.c @@ -63,8 +63,7 @@ /* Prototypes */ static void nfp_net_close(struct rte_eth_dev *dev); static int nfp_net_configure(struct rte_eth_dev *dev); -static void nfp_net_dev_interrupt_handler(struct rte_intr_handle *handle, - void *param); +static void nfp_net_dev_interrupt_handler(void *param); static void nfp_net_dev_interrupt_delayed_handler(void *param); static int nfp_net_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu); static void nfp_net_infos_get(struct rte_eth_dev *dev, @@ -1304,8 +1303,7 @@ nfp_net_irq_unmask(struct rte_eth_dev *dev) } static void -nfp_net_dev_interrupt_handler(__rte_unused struct rte_intr_handle *handle, - void *param) +nfp_net_dev_interrupt_handler(void *param) { int64_t timeout; struct rte_eth_link link; diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c index 2f1d2b5..5f469e5 100644 --- a/drivers/net/qede/qede_ethdev.c +++ b/drivers/net/qede/qede_ethdev.c @@ -279,14 +279,14 @@ static void qede_interrupt_action(struct ecore_hwfn *p_hwfn) } static void -qede_interrupt_handler(struct rte_intr_handle *handle, void *param) +qede_interrupt_handler(void *param) { struct rte_eth_dev *eth_dev = (struct rte_eth_dev *)param; struct qede_dev *qdev = eth_dev->data->dev_private; struct ecore_dev *edev = &qdev->edev; qede_interrupt_action(ECORE_LEADING_HWFN(edev)); - if (rte_intr_enable(handle)) + if (rte_intr_enable(eth_dev->intr_handle)) DP_ERR(edev, "rte_intr_enable failed\n"); } diff --git a/drivers/net/sfc/sfc_intr.c b/drivers/net/sfc/sfc_intr.c index 448709c..7d91a2a 100644 --- a/drivers/net/sfc/sfc_intr.c +++ b/drivers/net/sfc/sfc_intr.c @@ -70,13 +70,14 @@ sfc_intr_handle_mgmt_evq(struct sfc_adapter *sa) } static void -sfc_intr_line_handler(struct rte_intr_handle *intr_handle, void *cb_arg) +sfc_intr_line_handler(void *cb_arg) { struct sfc_adapter *sa = (struct sfc_adapter *)cb_arg; efx_nic_t *enp = sa->nic; boolean_t fatal; uint32_t qmask; unsigned int lsc_seq = sa->port.lsc_seq; + struct rte_pci_device *pci_dev = SFC_DEV_TO_PCI(sa->eth_dev); sfc_log_init(sa, "entry"); @@ -99,7 +100,7 @@ sfc_intr_line_handler(struct rte_intr_handle *intr_handle, void *cb_arg) if (qmask & (1 << sa->mgmt_evq_index)) sfc_intr_handle_mgmt_evq(sa); - if (rte_intr_enable(intr_handle) != 0) + if (rte_intr_enable(&pci_dev->intr_handle) != 0) sfc_err(sa, "cannot reenable interrupts"); sfc_log_init(sa, "done"); @@ -115,12 +116,13 @@ sfc_intr_line_handler(struct rte_intr_handle *intr_handle, void *cb_arg) } static void -sfc_intr_message_handler(struct rte_intr_handle *intr_handle, void *cb_arg) +sfc_intr_message_handler(void *cb_arg) { struct sfc_adapter *sa = (struct sfc_adapter *)cb_arg; efx_nic_t *enp = sa->nic; boolean_t fatal; unsigned int lsc_seq = sa->port.lsc_seq; + struct rte_pci_device *pci_dev = SFC_DEV_TO_PCI(sa->eth_dev); sfc_log_init(sa, "entry"); @@ -141,7 +143,7 @@ sfc_intr_message_handler(struct rte_intr_handle *intr_handle, void *cb_arg) sfc_intr_handle_mgmt_evq(sa); - if (rte_intr_enable(intr_handle) != 0) + if (rte_intr_enable(&pci_dev->intr_handle) != 0) sfc_err(sa, "cannot reenable interrupts"); sfc_log_init(sa, "done"); diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c index 8321863..a15c00e 100644 --- a/drivers/net/tap/rte_eth_tap.c +++ b/drivers/net/tap/rte_eth_tap.c @@ -1009,8 +1009,7 @@ tap_nl_msg_handler(struct nlmsghdr *nh, void *arg) } static void -tap_dev_intr_handler(struct rte_intr_handle *intr_handle __rte_unused, - void *cb_arg) +tap_dev_intr_handler(void *cb_arg) { struct rte_eth_dev *dev = cb_arg; struct pmd_internals *pmd = dev->data->dev_private; diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c index 6a9568f..78cb3e8 100644 --- a/drivers/net/virtio/virtio_ethdev.c +++ b/drivers/net/virtio/virtio_ethdev.c @@ -1206,8 +1206,7 @@ virtio_negotiate_features(struct virtio_hw *hw, uint64_t req_features) * if link state changed. */ void -virtio_interrupt_handler(struct rte_intr_handle *handle, - void *param) +virtio_interrupt_handler(void *param) { struct rte_eth_dev *dev = param; struct virtio_hw *hw = dev->data->dev_private; @@ -1217,7 +1216,7 @@ virtio_interrupt_handler(struct rte_intr_handle *handle, isr = vtpci_isr(hw); PMD_DRV_LOG(INFO, "interrupt status = %#x", isr); - if (rte_intr_enable(handle) < 0) + if (rte_intr_enable(dev->intr_handle) < 0) PMD_DRV_LOG(ERR, "interrupt enable failed"); if (isr & VIRTIO_PCI_ISR_CONFIG) { diff --git a/drivers/net/virtio/virtio_ethdev.h b/drivers/net/virtio/virtio_ethdev.h index 4009c4d..c3413c6 100644 --- a/drivers/net/virtio/virtio_ethdev.h +++ b/drivers/net/virtio/virtio_ethdev.h @@ -113,6 +113,6 @@ uint16_t virtio_xmit_pkts_simple(void *tx_queue, struct rte_mbuf **tx_pkts, int eth_virtio_dev_init(struct rte_eth_dev *eth_dev); -void virtio_interrupt_handler(struct rte_intr_handle *handle, void *param); +void virtio_interrupt_handler(void *param); #endif /* _VIRTIO_ETHDEV_H_ */ diff --git a/lib/librte_eal/common/include/rte_interrupts.h b/lib/librte_eal/common/include/rte_interrupts.h index 6cade01..5d06ed7 100644 --- a/lib/librte_eal/common/include/rte_interrupts.h +++ b/lib/librte_eal/common/include/rte_interrupts.h @@ -51,8 +51,7 @@ extern "C" { struct rte_intr_handle; /** Function to be registered for the specific interrupt */ -typedef void (*rte_intr_callback_fn)(struct rte_intr_handle *intr_handle, - void *cb_arg); +typedef void (*rte_intr_callback_fn)(void *cb_arg); #include diff --git a/lib/librte_eal/linuxapp/eal/eal_alarm.c b/lib/librte_eal/linuxapp/eal/eal_alarm.c index 8b042ab..fbae461 100644 --- a/lib/librte_eal/linuxapp/eal/eal_alarm.c +++ b/lib/librte_eal/linuxapp/eal/eal_alarm.c @@ -83,7 +83,7 @@ static rte_spinlock_t alarm_list_lk = RTE_SPINLOCK_INITIALIZER; static struct rte_intr_handle intr_handle = {.fd = -1 }; static int handler_registered = 0; -static void eal_alarm_callback(struct rte_intr_handle *hdl, void *arg); +static void eal_alarm_callback(void *arg); int rte_eal_alarm_init(void) @@ -102,8 +102,7 @@ rte_eal_alarm_init(void) } static void -eal_alarm_callback(struct rte_intr_handle *hdl __rte_unused, - void *arg __rte_unused) +eal_alarm_callback(void *arg __rte_unused) { struct timespec now; struct alarm_entry *ap; diff --git a/lib/librte_eal/linuxapp/eal/eal_interrupts.c b/lib/librte_eal/linuxapp/eal/eal_interrupts.c index 3069779..2e3bd12 100644 --- a/lib/librte_eal/linuxapp/eal/eal_interrupts.c +++ b/lib/librte_eal/linuxapp/eal/eal_interrupts.c @@ -744,8 +744,7 @@ eal_intr_process_interrupts(struct epoll_event *events, int nfds) rte_spinlock_unlock(&intr_lock); /* call the actual callback */ - active_cb.cb_fn(&src->intr_handle, - active_cb.cb_arg); + active_cb.cb_fn(active_cb.cb_arg); /*get the lock back. */ rte_spinlock_lock(&intr_lock); diff --git a/test/test/test_interrupts.c b/test/test/test_interrupts.c index 371101f..5377292 100644 --- a/test/test/test_interrupts.c +++ b/test/test/test_interrupts.c @@ -199,8 +199,9 @@ test_interrupt_handle_compare(struct rte_intr_handle *intr_handle_l, * Callback for the test interrupt. */ static void -test_interrupt_callback(struct rte_intr_handle *intr_handle, void *arg) +test_interrupt_callback(void *arg) { + struct rte_intr_handle *intr_handle = (struct rte_intr_handle *)arg; if (test_intr_type >= TEST_INTERRUPT_HANDLE_MAX) { printf("invalid interrupt type\n"); flag = -1; @@ -230,9 +231,9 @@ test_interrupt_callback(struct rte_intr_handle *intr_handle, void *arg) * Callback for the test interrupt. */ static void -test_interrupt_callback_1(struct rte_intr_handle *intr_handle, - __attribute__((unused)) void *arg) +test_interrupt_callback_1(void *arg) { + struct rte_intr_handle *intr_handle = (struct rte_intr_handle *)arg; if (test_interrupt_handle_sanity_check(intr_handle) < 0) { printf("null or invalid intr_handle for %s\n", __func__); flag = -1; @@ -364,7 +365,7 @@ test_interrupt_full_path_check(enum test_interrupt_handle_type intr_type) test_intr_handle = intr_handles[intr_type]; test_intr_type = intr_type; if (rte_intr_callback_register(&test_intr_handle, - test_interrupt_callback, NULL) < 0) { + test_interrupt_callback, &test_intr_handle) < 0) { printf("fail to register callback\n"); return -1; } @@ -378,7 +379,7 @@ test_interrupt_full_path_check(enum test_interrupt_handle_type intr_type) rte_delay_ms(TEST_INTERRUPT_CHECK_INTERVAL); if (rte_intr_callback_unregister(&test_intr_handle, - test_interrupt_callback, NULL) < 0) + test_interrupt_callback, &test_intr_handle) < 0) return -1; if (flag == 0) { @@ -441,7 +442,7 @@ test_interrupt(void) /* check if it will fail to register cb with invalid intr_handle */ test_intr_handle = intr_handles[TEST_INTERRUPT_HANDLE_INVALID]; if (rte_intr_callback_register(&test_intr_handle, - test_interrupt_callback, NULL) == 0) { + test_interrupt_callback, &test_intr_handle) == 0) { printf("unexpectedly register successfully with invalid " "intr_handle\n"); goto out; @@ -449,7 +450,7 @@ test_interrupt(void) /* check if it will fail to register without callback */ test_intr_handle = intr_handles[TEST_INTERRUPT_HANDLE_VALID]; - if (rte_intr_callback_register(&test_intr_handle, NULL, NULL) == 0) { + if (rte_intr_callback_register(&test_intr_handle, NULL, &test_intr_handle) == 0) { printf("unexpectedly register successfully with " "null callback\n"); goto out; @@ -466,7 +467,7 @@ test_interrupt(void) /* check if it will fail to unregister cb with invalid intr_handle */ test_intr_handle = intr_handles[TEST_INTERRUPT_HANDLE_INVALID]; if (rte_intr_callback_unregister(&test_intr_handle, - test_interrupt_callback, NULL) > 0) { + test_interrupt_callback, &test_intr_handle) > 0) { printf("unexpectedly unregister successfully with " "invalid intr_handle\n"); goto out; @@ -475,12 +476,12 @@ test_interrupt(void) /* check if it is ok to register the same intr_handle twice */ test_intr_handle = intr_handles[TEST_INTERRUPT_HANDLE_VALID]; if (rte_intr_callback_register(&test_intr_handle, - test_interrupt_callback, NULL) < 0) { + test_interrupt_callback, &test_intr_handle) < 0) { printf("it fails to register test_interrupt_callback\n"); goto out; } if (rte_intr_callback_register(&test_intr_handle, - test_interrupt_callback_1, NULL) < 0) { + test_interrupt_callback_1, &test_intr_handle) < 0) { printf("it fails to register test_interrupt_callback_1\n"); goto out; } @@ -492,7 +493,7 @@ test_interrupt(void) goto out; } if (rte_intr_callback_unregister(&test_intr_handle, - test_interrupt_callback, NULL) <= 0) { + test_interrupt_callback, &test_intr_handle) <= 0) { printf("it fails to unregister test_interrupt_callback\n"); goto out; }