From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nelson Escobar Subject: [PATCH 1/3] net/enic: cleanup interrupt setup when stopping port Date: Mon, 19 Sep 2016 11:50:09 -0700 Message-ID: <1474311011-19978-1-git-send-email-neescoba@cisco.com> Cc: bruce.richardson@intel.com, Nelson Escobar To: dev@dpdk.org Return-path: Received: from alln-iport-7.cisco.com (alln-iport-7.cisco.com [173.37.142.94]) by dpdk.org (Postfix) with ESMTP id 054423238 for ; Mon, 19 Sep 2016 20:50:15 +0200 (CEST) List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" enic_disable() wasn't calling rte_intr_disable() or rte_intr_callback_unregister(). If stopping/starting a port, the latter omission would result in the same interrupt callback being registered multiple times, which would then cause it to be called multiple times on every interrupt. Fixes: fefed3d1e62c ("enic: new driver") Signed-off-by: Nelson Escobar Reviewed-by: John Daley --- drivers/net/enic/enic_main.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/net/enic/enic_main.c b/drivers/net/enic/enic_main.c index b4ca371..aec24d2 100644 --- a/drivers/net/enic/enic_main.c +++ b/drivers/net/enic/enic_main.c @@ -798,6 +798,10 @@ int enic_disable(struct enic *enic) vnic_intr_mask(&enic->intr); (void)vnic_intr_masked(&enic->intr); /* flush write */ + rte_intr_disable(&enic->pdev->intr_handle); + rte_intr_callback_unregister(&enic->pdev->intr_handle, + enic_intr_handler, + (void *)enic->rte_dev); vnic_dev_disable(enic->vdev); -- 2.7.0