get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/20682/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 20682,
    "url": "https://patches.dpdk.org/api/patches/20682/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1487801822-30938-2-git-send-email-qi.z.zhang@intel.com/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<1487801822-30938-2-git-send-email-qi.z.zhang@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1487801822-30938-2-git-send-email-qi.z.zhang@intel.com",
    "date": "2017-02-22T22:17:01",
    "name": "[dpdk-dev,1/2] eal: clean up interrupt handle",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "fbe4510aabd7b74005ab726a5852d5c63d8dd547",
    "submitter": {
        "id": 504,
        "url": "https://patches.dpdk.org/api/people/504/?format=api",
        "name": "Qi Zhang",
        "email": "qi.z.zhang@intel.com"
    },
    "delegate": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/1487801822-30938-2-git-send-email-qi.z.zhang@intel.com/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/20682/comments/",
    "check": "fail",
    "checks": "https://patches.dpdk.org/api/patches/20682/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id 5830669C3;\n\tThu, 23 Feb 2017 06:22:09 +0100 (CET)",
            "from mga04.intel.com (mga04.intel.com [192.55.52.120])\n\tby dpdk.org (Postfix) with ESMTP id 5B0342B88\n\tfor <dev@dpdk.org>; Thu, 23 Feb 2017 06:21:43 +0100 (CET)",
            "from fmsmga001.fm.intel.com ([10.253.24.23])\n\tby fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t22 Feb 2017 21:21:42 -0800",
            "from unknown (HELO localhost.localdomain.sh.intel.com)\n\t([10.239.129.189])\n\tby fmsmga001.fm.intel.com with ESMTP; 22 Feb 2017 21:21:41 -0800"
        ],
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos; i=\"5.35,197,1484035200\"; d=\"scan'208\";\n\ta=\"1114466609\"",
        "From": "Qi Zhang <qi.z.zhang@intel.com>",
        "To": "thomas.monjalon@6wind.com",
        "Cc": "dev@dpdk.org,\n\tQi Zhang <qi.z.zhang@intel.com>",
        "Date": "Wed, 22 Feb 2017 17:17:01 -0500",
        "Message-Id": "<1487801822-30938-2-git-send-email-qi.z.zhang@intel.com>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "<1487801822-30938-1-git-send-email-qi.z.zhang@intel.com>",
        "References": "<1487801822-30938-1-git-send-email-qi.z.zhang@intel.com>",
        "Subject": "[dpdk-dev] [PATCH 1/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 <dev.dpdk.org>",
        "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "The patch change the prototype of callback function\n(rte_intr_callback_fn) by removing the unnecessary parameter.\nAlso with this change we can keep content of item in intr_source\nread only, the inappropriate modifciation(like get_max_intr) can\nbe avoid.\n\nSigned-off-by: Qi Zhang <qi.z.zhang@intel.com>\n---\n drivers/net/bnxt/bnxt_irq.c                    |  3 +-\n drivers/net/e1000/em_ethdev.c                  |  8 ++----\n drivers/net/e1000/igb_ethdev.c                 | 15 ++++------\n drivers/net/enic/enic_main.c                   |  3 +-\n drivers/net/fm10k/fm10k_ethdev.c               | 12 +++-----\n drivers/net/i40e/i40e_ethdev.c                 |  8 ++----\n drivers/net/i40e/i40e_ethdev_vf.c              |  5 ++--\n drivers/net/ixgbe/ixgbe_ethdev.c               | 14 ++++-----\n drivers/net/nfp/nfp_net.c                      |  6 ++--\n drivers/net/qede/qede_ethdev.c                 |  4 +--\n drivers/net/sfc/sfc_intr.c                     | 10 ++++---\n drivers/net/virtio/virtio_ethdev.c             |  5 ++--\n lib/librte_eal/common/include/rte_interrupts.h |  3 +-\n lib/librte_eal/linuxapp/eal/eal_alarm.c        |  5 ++--\n lib/librte_eal/linuxapp/eal/eal_interrupts.c   | 39 ++++----------------------\n 15 files changed, 45 insertions(+), 95 deletions(-)",
    "diff": "diff --git a/drivers/net/bnxt/bnxt_irq.c b/drivers/net/bnxt/bnxt_irq.c\nindex e93585a..20e17ff 100644\n--- a/drivers/net/bnxt/bnxt_irq.c\n+++ b/drivers/net/bnxt/bnxt_irq.c\n@@ -45,8 +45,7 @@\n  * Interrupts\n  */\n \n-static void bnxt_int_handler(struct rte_intr_handle *handle __rte_unused,\n-\t\t\t     void *param)\n+static void bnxt_int_handler(void *param)\n {\n \tstruct rte_eth_dev *eth_dev = (struct rte_eth_dev *)param;\n \tstruct bnxt *bp = (struct bnxt *)eth_dev->data->dev_private;\ndiff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c\nindex 4066ef9..fff0874 100644\n--- a/drivers/net/e1000/em_ethdev.c\n+++ b/drivers/net/e1000/em_ethdev.c\n@@ -85,8 +85,7 @@ static int eth_em_rxq_interrupt_setup(struct rte_eth_dev *dev);\n static int eth_em_interrupt_get_status(struct rte_eth_dev *dev);\n static int eth_em_interrupt_action(struct rte_eth_dev *dev,\n \t\t\t\t   struct rte_intr_handle *handle);\n-static void eth_em_interrupt_handler(struct rte_intr_handle *handle,\n-\t\t\t\t\t\t\tvoid *param);\n+static void eth_em_interrupt_handler(void *param);\n \n static int em_hw_init(struct e1000_hw *hw);\n static int em_hardware_init(struct e1000_hw *hw);\n@@ -1646,13 +1645,12 @@ eth_em_interrupt_action(struct rte_eth_dev *dev,\n  *  void\n  */\n static void\n-eth_em_interrupt_handler(struct rte_intr_handle *handle,\n-\t\t\t void *param)\n+eth_em_interrupt_handler(void *param)\n {\n \tstruct rte_eth_dev *dev = (struct rte_eth_dev *)param;\n \n \teth_em_interrupt_get_status(dev);\n-\teth_em_interrupt_action(dev, handle);\n+\teth_em_interrupt_action(dev, dev->intr_handle);\n \t_rte_eth_dev_callback_process(dev, RTE_ETH_EVENT_INTR_LSC, NULL);\n }\n \ndiff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c\nindex a112b38..4cc7945 100644\n--- a/drivers/net/e1000/igb_ethdev.c\n+++ b/drivers/net/e1000/igb_ethdev.c\n@@ -136,8 +136,7 @@ static int eth_igb_rxq_interrupt_setup(struct rte_eth_dev *dev);\n static int eth_igb_interrupt_get_status(struct rte_eth_dev *dev);\n static int eth_igb_interrupt_action(struct rte_eth_dev *dev,\n \t\t\t\t    struct rte_intr_handle *handle);\n-static void eth_igb_interrupt_handler(struct rte_intr_handle *handle,\n-\t\t\t\t\t\t\tvoid *param);\n+static void eth_igb_interrupt_handler(void *param);\n static int  igb_hardware_init(struct e1000_hw *hw);\n static void igb_hw_control_acquire(struct e1000_hw *hw);\n static void igb_hw_control_release(struct e1000_hw *hw);\n@@ -283,8 +282,7 @@ static void eth_igb_assign_msix_vector(struct e1000_hw *hw, int8_t direction,\n static void eth_igb_write_ivar(struct e1000_hw *hw, uint8_t msix_vector,\n \t\t\t       uint8_t index, uint8_t offset);\n static void eth_igb_configure_msix_intr(struct rte_eth_dev *dev);\n-static void eth_igbvf_interrupt_handler(struct rte_intr_handle *handle,\n-\t\t\t\t\tvoid *param);\n+static void eth_igbvf_interrupt_handler(void *param);\n static void igbvf_mbx_process(struct rte_eth_dev *dev);\n \n /*\n@@ -2781,12 +2779,12 @@ eth_igb_interrupt_action(struct rte_eth_dev *dev,\n  *  void\n  */\n static void\n-eth_igb_interrupt_handler(struct rte_intr_handle *handle, void *param)\n+eth_igb_interrupt_handler(void *param)\n {\n \tstruct rte_eth_dev *dev = (struct rte_eth_dev *)param;\n \n \teth_igb_interrupt_get_status(dev);\n-\teth_igb_interrupt_action(dev, handle);\n+\teth_igb_interrupt_action(dev, dev->intr_handle);\n }\n \n static int\n@@ -2843,13 +2841,12 @@ eth_igbvf_interrupt_action(struct rte_eth_dev *dev, struct rte_intr_handle *intr\n }\n \n static void\n-eth_igbvf_interrupt_handler(struct rte_intr_handle *handle,\n-\t\t\t    void *param)\n+eth_igbvf_interrupt_handler(void *param)\n {\n \tstruct rte_eth_dev *dev = (struct rte_eth_dev *)param;\n \n \teth_igbvf_interrupt_get_status(dev);\n-\teth_igbvf_interrupt_action(dev, handle);\n+\teth_igbvf_interrupt_action(dev, dev->intr_handle);\n }\n \n static int\ndiff --git a/drivers/net/enic/enic_main.c b/drivers/net/enic/enic_main.c\nindex 570b7b6..5f2188b 100644\n--- a/drivers/net/enic/enic_main.c\n+++ b/drivers/net/enic/enic_main.c\n@@ -423,8 +423,7 @@ int enic_link_update(struct enic *enic)\n }\n \n static void\n-enic_intr_handler(__rte_unused struct rte_intr_handle *handle,\n-\tvoid *arg)\n+enic_intr_handler(void *arg)\n {\n \tstruct rte_eth_dev *dev = (struct rte_eth_dev *)arg;\n \tstruct enic *enic = pmd_priv(dev);\ndiff --git a/drivers/net/fm10k/fm10k_ethdev.c b/drivers/net/fm10k/fm10k_ethdev.c\nindex c4fe746..e37bd8f 100644\n--- a/drivers/net/fm10k/fm10k_ethdev.c\n+++ b/drivers/net/fm10k/fm10k_ethdev.c\n@@ -2541,9 +2541,7 @@ fm10k_dev_handle_fault(struct fm10k_hw *hw, uint32_t eicr)\n  *  void\n  */\n static void\n-fm10k_dev_interrupt_handler_pf(\n-\t\t\tstruct rte_intr_handle *handle,\n-\t\t\tvoid *param)\n+fm10k_dev_interrupt_handler_pf(void *param)\n {\n \tstruct rte_eth_dev *dev = (struct rte_eth_dev *)param;\n \tstruct fm10k_hw *hw = FM10K_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n@@ -2593,7 +2591,7 @@ fm10k_dev_interrupt_handler_pf(\n \tFM10K_WRITE_REG(hw, FM10K_ITR(0), FM10K_ITR_AUTOMASK |\n \t\t\t\t\tFM10K_ITR_MASK_CLEAR);\n \t/* Re-enable interrupt from host side */\n-\trte_intr_enable(handle);\n+\trte_intr_enable(dev->intr_handle);\n }\n \n /**\n@@ -2608,9 +2606,7 @@ fm10k_dev_interrupt_handler_pf(\n  *  void\n  */\n static void\n-fm10k_dev_interrupt_handler_vf(\n-\t\t\tstruct rte_intr_handle *handle,\n-\t\t\tvoid *param)\n+fm10k_dev_interrupt_handler_vf(void *param)\n {\n \tstruct rte_eth_dev *dev = (struct rte_eth_dev *)param;\n \tstruct fm10k_hw *hw = FM10K_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n@@ -2627,7 +2623,7 @@ fm10k_dev_interrupt_handler_vf(\n \tFM10K_WRITE_REG(hw, FM10K_VFITR(0), FM10K_ITR_AUTOMASK |\n \t\t\t\t\tFM10K_ITR_MASK_CLEAR);\n \t/* Re-enable interrupt from host side */\n-\trte_intr_enable(handle);\n+\trte_intr_enable(dev->intr_handle);\n }\n \n /* Mailbox message handler in VF */\ndiff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c\nindex 303027b..ddd423c 100644\n--- a/drivers/net/i40e/i40e_ethdev.c\n+++ b/drivers/net/i40e/i40e_ethdev.c\n@@ -318,8 +318,7 @@ static void i40e_stat_update_48(struct i40e_hw *hw,\n \t\t\t       uint64_t *offset,\n \t\t\t       uint64_t *stat);\n static void i40e_pf_config_irq0(struct i40e_hw *hw, bool no_queue);\n-static void i40e_dev_interrupt_handler(struct rte_intr_handle *handle,\n-\t\t\t\t       void *param);\n+static void i40e_dev_interrupt_handler(void *param);\n static int i40e_res_pool_init(struct i40e_res_pool_info *pool,\n \t\t\t\tuint32_t base, uint32_t num);\n static void i40e_res_pool_destroy(struct i40e_res_pool_info *pool);\n@@ -5770,8 +5769,7 @@ i40e_dev_handle_aq_msg(struct rte_eth_dev *dev)\n  *  void\n  */\n static void\n-i40e_dev_interrupt_handler(struct rte_intr_handle *intr_handle,\n-\t\t\t   void *param)\n+i40e_dev_interrupt_handler(void *param)\n {\n \tstruct rte_eth_dev *dev = (struct rte_eth_dev *)param;\n \tstruct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n@@ -5817,7 +5815,7 @@ i40e_dev_interrupt_handler(struct rte_intr_handle *intr_handle,\n done:\n \t/* Enable interrupt */\n \ti40e_pf_enable_irq0(hw);\n-\trte_intr_enable(intr_handle);\n+\trte_intr_enable(dev->intr_handle);\n }\n \n static int\ndiff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c\nindex 55fd344..517b48b 100644\n--- a/drivers/net/i40e/i40e_ethdev_vf.c\n+++ b/drivers/net/i40e/i40e_ethdev_vf.c\n@@ -1420,8 +1420,7 @@ i40evf_handle_aq_msg(struct rte_eth_dev *dev)\n  *  void\n  */\n static void\n-i40evf_dev_interrupt_handler(struct rte_intr_handle *intr_handle,\n-\t\t\t     void *param)\n+i40evf_dev_interrupt_handler(void *param)\n {\n \tstruct rte_eth_dev *dev = (struct rte_eth_dev *)param;\n \tstruct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n@@ -1450,7 +1449,7 @@ i40evf_dev_interrupt_handler(struct rte_intr_handle *intr_handle,\n \n done:\n \ti40evf_enable_irq0(hw);\n-\trte_intr_enable(intr_handle);\n+\trte_intr_enable(dev->intr_handle);\n }\n \n static int\ndiff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c\nindex 7169007..b979476 100644\n--- a/drivers/net/ixgbe/ixgbe_ethdev.c\n+++ b/drivers/net/ixgbe/ixgbe_ethdev.c\n@@ -244,8 +244,7 @@ static int ixgbe_dev_rxq_interrupt_setup(struct rte_eth_dev *dev);\n static int ixgbe_dev_interrupt_get_status(struct rte_eth_dev *dev);\n static int ixgbe_dev_interrupt_action(struct rte_eth_dev *dev,\n \t\t\t\t      struct rte_intr_handle *handle);\n-static void ixgbe_dev_interrupt_handler(struct rte_intr_handle *handle,\n-\t\tvoid *param);\n+static void ixgbe_dev_interrupt_handler(void *param);\n static void ixgbe_dev_interrupt_delayed_handler(void *param);\n static void ixgbe_add_rar(struct rte_eth_dev *dev, struct ether_addr *mac_addr,\n \t\tuint32_t index, uint32_t pool);\n@@ -366,8 +365,7 @@ static int ixgbe_timesync_read_time(struct rte_eth_dev *dev,\n \t\t\t\t   struct timespec *timestamp);\n static int ixgbe_timesync_write_time(struct rte_eth_dev *dev,\n \t\t\t\t   const struct timespec *timestamp);\n-static void ixgbevf_dev_interrupt_handler(struct rte_intr_handle *handle,\n-\t\t\t\t\t  void *param);\n+static void ixgbevf_dev_interrupt_handler(void *param);\n \n static int ixgbe_dev_l2_tunnel_eth_type_conf\n \t(struct rte_eth_dev *dev, struct rte_eth_l2_tunnel_conf *l2_tunnel);\n@@ -3913,13 +3911,12 @@ ixgbe_dev_interrupt_delayed_handler(void *param)\n  *  void\n  */\n static void\n-ixgbe_dev_interrupt_handler(struct rte_intr_handle *handle,\n-\t\t\t    void *param)\n+ixgbe_dev_interrupt_handler(void *param)\n {\n \tstruct rte_eth_dev *dev = (struct rte_eth_dev *)param;\n \n \tixgbe_dev_interrupt_get_status(dev);\n-\tixgbe_dev_interrupt_action(dev, handle);\n+\tixgbe_dev_interrupt_action(dev, dev->intr_handle);\n }\n \n static int\n@@ -8159,8 +8156,7 @@ ixgbevf_dev_interrupt_action(struct rte_eth_dev *dev)\n }\n \n static void\n-ixgbevf_dev_interrupt_handler(__rte_unused struct rte_intr_handle *handle,\n-\t\t\t      void *param)\n+ixgbevf_dev_interrupt_handler(void *param)\n {\n \tstruct rte_eth_dev *dev = (struct rte_eth_dev *)param;\n \ndiff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c\nindex d79f262..dbd9844 100644\n--- a/drivers/net/nfp/nfp_net.c\n+++ b/drivers/net/nfp/nfp_net.c\n@@ -63,8 +63,7 @@\n /* Prototypes */\n static void nfp_net_close(struct rte_eth_dev *dev);\n static int nfp_net_configure(struct rte_eth_dev *dev);\n-static void nfp_net_dev_interrupt_handler(struct rte_intr_handle *handle,\n-\t\t\t\t\t  void *param);\n+static void nfp_net_dev_interrupt_handler(void *param);\n static void nfp_net_dev_interrupt_delayed_handler(void *param);\n static int nfp_net_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu);\n static void nfp_net_infos_get(struct rte_eth_dev *dev,\n@@ -1308,8 +1307,7 @@ nfp_net_irq_unmask(struct rte_eth_dev *dev)\n }\n \n static void\n-nfp_net_dev_interrupt_handler(__rte_unused struct rte_intr_handle *handle,\n-\t\t\t      void *param)\n+nfp_net_dev_interrupt_handler(void *param)\n {\n \tint64_t timeout;\n \tstruct rte_eth_link link;\ndiff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c\nindex 0494dbd..ce10924 100644\n--- a/drivers/net/qede/qede_ethdev.c\n+++ b/drivers/net/qede/qede_ethdev.c\n@@ -279,14 +279,14 @@ static void qede_interrupt_action(struct ecore_hwfn *p_hwfn)\n }\n \n static void\n-qede_interrupt_handler(struct rte_intr_handle *handle, void *param)\n+qede_interrupt_handler(void *param)\n {\n \tstruct rte_eth_dev *eth_dev = (struct rte_eth_dev *)param;\n \tstruct qede_dev *qdev = eth_dev->data->dev_private;\n \tstruct ecore_dev *edev = &qdev->edev;\n \n \tqede_interrupt_action(ECORE_LEADING_HWFN(edev));\n-\tif (rte_intr_enable(handle))\n+\tif (rte_intr_enable(eth_dev->intr_handle))\n \t\tDP_ERR(edev, \"rte_intr_enable failed\\n\");\n }\n \ndiff --git a/drivers/net/sfc/sfc_intr.c b/drivers/net/sfc/sfc_intr.c\nindex d06980e..fa7cc3d 100644\n--- a/drivers/net/sfc/sfc_intr.c\n+++ b/drivers/net/sfc/sfc_intr.c\n@@ -68,13 +68,14 @@ sfc_intr_handle_mgmt_evq(struct sfc_adapter *sa)\n }\n \n static void\n-sfc_intr_line_handler(struct rte_intr_handle *intr_handle, void *cb_arg)\n+sfc_intr_line_handler(void *cb_arg)\n {\n \tstruct sfc_adapter *sa = (struct sfc_adapter *)cb_arg;\n \tefx_nic_t *enp = sa->nic;\n \tboolean_t fatal;\n \tuint32_t qmask;\n \tunsigned int lsc_seq = sa->port.lsc_seq;\n+\tstruct rte_pci_device *pci_dev = SFC_DEV_TO_PCI(sa->eth_dev);\n \n \tsfc_log_init(sa, \"entry\");\n \n@@ -97,7 +98,7 @@ sfc_intr_line_handler(struct rte_intr_handle *intr_handle, void *cb_arg)\n \tif (qmask & (1 << sa->mgmt_evq_index))\n \t\tsfc_intr_handle_mgmt_evq(sa);\n \n-\tif (rte_intr_enable(intr_handle) != 0)\n+\tif (rte_intr_enable(&pci_dev->intr_handle) != 0)\n \t\tsfc_err(sa, \"cannot reenable interrupts\");\n \n \tsfc_log_init(sa, \"done\");\n@@ -113,12 +114,13 @@ sfc_intr_line_handler(struct rte_intr_handle *intr_handle, void *cb_arg)\n }\n \n static void\n-sfc_intr_message_handler(struct rte_intr_handle *intr_handle, void *cb_arg)\n+sfc_intr_message_handler(void *cb_arg)\n {\n \tstruct sfc_adapter *sa = (struct sfc_adapter *)cb_arg;\n \tefx_nic_t *enp = sa->nic;\n \tboolean_t fatal;\n \tunsigned int lsc_seq = sa->port.lsc_seq;\n+\tstruct rte_pci_device *pci_dev = SFC_DEV_TO_PCI(sa->eth_dev);\n \n \tsfc_log_init(sa, \"entry\");\n \n@@ -139,7 +141,7 @@ sfc_intr_message_handler(struct rte_intr_handle *intr_handle, void *cb_arg)\n \n \tsfc_intr_handle_mgmt_evq(sa);\n \n-\tif (rte_intr_enable(intr_handle) != 0)\n+\tif (rte_intr_enable(&pci_dev->intr_handle) != 0)\n \t\tsfc_err(sa, \"cannot reenable interrupts\");\n \n \tsfc_log_init(sa, \"done\");\ndiff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c\nindex 4dc03b9..9033e7b 100644\n--- a/drivers/net/virtio/virtio_ethdev.c\n+++ b/drivers/net/virtio/virtio_ethdev.c\n@@ -1191,8 +1191,7 @@ virtio_negotiate_features(struct virtio_hw *hw, uint64_t req_features)\n  * if link state changed.\n  */\n static void\n-virtio_interrupt_handler(struct rte_intr_handle *handle,\n-\t\t\t void *param)\n+virtio_interrupt_handler(void *param)\n {\n \tstruct rte_eth_dev *dev = param;\n \tstruct virtio_hw *hw = dev->data->dev_private;\n@@ -1202,7 +1201,7 @@ virtio_interrupt_handler(struct rte_intr_handle *handle,\n \tisr = vtpci_isr(hw);\n \tPMD_DRV_LOG(INFO, \"interrupt status = %#x\", isr);\n \n-\tif (rte_intr_enable(handle) < 0)\n+\tif (rte_intr_enable(dev->intr_handle) < 0)\n \t\tPMD_DRV_LOG(ERR, \"interrupt enable failed\");\n \n \tif (isr & VIRTIO_PCI_ISR_CONFIG) {\ndiff --git a/lib/librte_eal/common/include/rte_interrupts.h b/lib/librte_eal/common/include/rte_interrupts.h\nindex 6cade01..5d06ed7 100644\n--- a/lib/librte_eal/common/include/rte_interrupts.h\n+++ b/lib/librte_eal/common/include/rte_interrupts.h\n@@ -51,8 +51,7 @@ extern \"C\" {\n struct rte_intr_handle;\n \n /** Function to be registered for the specific interrupt */\n-typedef void (*rte_intr_callback_fn)(struct rte_intr_handle *intr_handle,\n-\t\t\t\t\t\t\tvoid *cb_arg);\n+typedef void (*rte_intr_callback_fn)(void *cb_arg);\n \n #include <exec-env/rte_interrupts.h>\n \ndiff --git a/lib/librte_eal/linuxapp/eal/eal_alarm.c b/lib/librte_eal/linuxapp/eal/eal_alarm.c\nindex 8b042ab..fbae461 100644\n--- a/lib/librte_eal/linuxapp/eal/eal_alarm.c\n+++ b/lib/librte_eal/linuxapp/eal/eal_alarm.c\n@@ -83,7 +83,7 @@ static rte_spinlock_t alarm_list_lk = RTE_SPINLOCK_INITIALIZER;\n \n static struct rte_intr_handle intr_handle = {.fd = -1 };\n static int handler_registered = 0;\n-static void eal_alarm_callback(struct rte_intr_handle *hdl, void *arg);\n+static void eal_alarm_callback(void *arg);\n \n int\n rte_eal_alarm_init(void)\n@@ -102,8 +102,7 @@ rte_eal_alarm_init(void)\n }\n \n static void\n-eal_alarm_callback(struct rte_intr_handle *hdl __rte_unused,\n-\t\tvoid *arg __rte_unused)\n+eal_alarm_callback(void *arg __rte_unused)\n {\n \tstruct timespec now;\n \tstruct alarm_entry *ap;\ndiff --git a/lib/librte_eal/linuxapp/eal/eal_interrupts.c b/lib/librte_eal/linuxapp/eal/eal_interrupts.c\nindex 92a19cb..19372fd 100644\n--- a/lib/librte_eal/linuxapp/eal/eal_interrupts.c\n+++ b/lib/librte_eal/linuxapp/eal/eal_interrupts.c\n@@ -278,29 +278,6 @@ vfio_disable_msi(const struct rte_intr_handle *intr_handle) {\n \treturn ret;\n }\n \n-static int\n-get_max_intr(const struct rte_intr_handle *intr_handle)\n-{\n-\tstruct rte_intr_source *src;\n-\n-\tTAILQ_FOREACH(src, &intr_sources, next) {\n-\t\tif (src->intr_handle.fd != intr_handle->fd)\n-\t\t\tcontinue;\n-\n-\t\tif (src->intr_handle.max_intr < intr_handle->max_intr)\n-\t\t\tsrc->intr_handle.max_intr = intr_handle->max_intr;\n-\t\tif (!src->intr_handle.max_intr)\n-\t\t\tsrc->intr_handle.max_intr = 1;\n-\t\telse if (src->intr_handle.max_intr > RTE_MAX_RXTX_INTR_VEC_ID)\n-\t\t\tsrc->intr_handle.max_intr\n-\t\t\t\t= RTE_MAX_RXTX_INTR_VEC_ID + 1;\n-\n-\t\treturn src->intr_handle.max_intr;\n-\t}\n-\n-\treturn -1;\n-}\n-\n /* enable MSI-X interrupts */\n static int\n vfio_enable_msix(const struct rte_intr_handle *intr_handle) {\n@@ -313,15 +290,10 @@ vfio_enable_msix(const struct rte_intr_handle *intr_handle) {\n \n \tirq_set = (struct vfio_irq_set *) irq_set_buf;\n \tirq_set->argsz = len;\n-\n-\tret = get_max_intr(intr_handle);\n-\tif (ret < 0) {\n-\t\tRTE_LOG(ERR, EAL, \"Invalid number of MSI-X irqs for fd %d\\n\",\n-\t\t\tintr_handle->fd);\n-\t\treturn -1;\n-\t}\n-\n-\tirq_set->count = ret;\n+\t/* 0 < irq_set->count < RTE_MAX_RXTX_INTR_VEC_ID + 1 */\n+\tirq_set->count = intr_handle->max_intr ?\n+\t\t(intr_handle->max_intr > RTE_MAX_RXTX_INTR_VEC_ID + 1 ?\n+\t\tRTE_MAX_RXTX_INTR_VEC_ID + 1 : intr_handle->max_intr) : 1;\n \tirq_set->flags = VFIO_IRQ_SET_DATA_EVENTFD | VFIO_IRQ_SET_ACTION_TRIGGER;\n \tirq_set->index = VFIO_PCI_MSIX_IRQ_INDEX;\n \tirq_set->start = 0;\n@@ -757,8 +729,7 @@ eal_intr_process_interrupts(struct epoll_event *events, int nfds)\n \t\t\t\trte_spinlock_unlock(&intr_lock);\n \n \t\t\t\t/* call the actual callback */\n-\t\t\t\tactive_cb.cb_fn(&src->intr_handle,\n-\t\t\t\t\tactive_cb.cb_arg);\n+\t\t\t\tactive_cb.cb_fn(active_cb.cb_arg);\n \n \t\t\t\t/*get the lock back. */\n \t\t\t\trte_spinlock_lock(&intr_lock);\n",
    "prefixes": [
        "dpdk-dev",
        "1/2"
    ]
}