From patchwork Tue Aug 1 16:54:24 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrien Mazarguil X-Patchwork-Id: 27353 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 AC95BA29A; Tue, 1 Aug 2017 18:56:10 +0200 (CEST) Received: from mail-wm0-f51.google.com (mail-wm0-f51.google.com [74.125.82.51]) by dpdk.org (Postfix) with ESMTP id 0D501A1A8 for ; Tue, 1 Aug 2017 18:55:44 +0200 (CEST) Received: by mail-wm0-f51.google.com with SMTP id m85so20321418wma.1 for ; Tue, 01 Aug 2017 09:55:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:in-reply-to:references; bh=ZcEETbFACfTJK48PJQNv7q5L9m8nzJYnovhqA+Ly6jI=; b=DF5o87V4rg4GbB7bU0Xq6dgOWogw+TEvyYKenGei4YlY94G+hLyMR0tRRHnvTg0ve9 oWZ3bGCNfRp7dFMiM2emcKDOZ9QfhPxCe6COMJmwKw0wiVx6ARCPe25v5sXOZ3pkde5T FU3CnAJBIH99d/kwsN3HGOhF2WLQCVFjwkcSCLL/yDnphyB2WRsff4APnkYkWqXIXnx1 u+ZaTuGU7yhiMjfc00u+gch3JcOIdt7f/Rx1giyaXo7VxbANBpP4k8XcfMsmHGdt/yZP 0xeDFrAAN1MPQEm3AVc4DVM+rjlFW5sicJMA7+r5xPcyKlCbjs+trPCOI1HnlD38KjvW /NmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=ZcEETbFACfTJK48PJQNv7q5L9m8nzJYnovhqA+Ly6jI=; b=C0tGO5x73yIOD1rH60fRwFbpHgOgFLJtm/DLvvoOZ69mZh35sSLGEmFt6BE5F079vx 7KQ1Xz8FvFaQXWXf0B+WfpBeR52NajMO2DThIEEMyetpoCoPfQ8AA7QJZLAqswnLO5zD 0iTK1Th5Hu42+DKfJaoCHAQJEvVAxLqy4FgToLH+XnfS2fcfu/lsex5vVRTtzwAreD7k CzT4sWUCUSazKSVvceRnebhjtw1XivRJCkDmHdu1dTgA9K4AcbTSngp4421KU4RwwP5r IyandzfykRkvBirLM6oWdogyJx28NN7o6WlxLbzRQuiCCeqvY8X8a1B3I03tkxR8ILwC f/NQ== X-Gm-Message-State: AIVw112+pf1B95Jloy2967Ihd0OdkoyCGH2Vt//VZ445VaWFmHCTIAH0 QfeTehQpJvRli7+rJyQ= X-Received: by 10.28.137.66 with SMTP id l63mr1945378wmd.117.1501606543316; Tue, 01 Aug 2017 09:55:43 -0700 (PDT) Received: from 6wind.com (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id m196sm1683349wma.17.2017.08.01.09.55.42 for (version=TLS1_2 cipher=AES128-SHA bits=128/128); Tue, 01 Aug 2017 09:55:42 -0700 (PDT) From: Adrien Mazarguil To: dev@dpdk.org Date: Tue, 1 Aug 2017 18:54:24 +0200 Message-Id: X-Mailer: git-send-email 2.1.4 In-Reply-To: References: Subject: [dpdk-dev] [PATCH v1 37/48] net/mlx4: clean up interrupt functions prototypes 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 naming scheme for these functions is overly verbose and not accurate enough, with too many "handler" functions that are difficult to differentiate (e.g. mlx4_dev_link_status_handler(), mlx4_dev_interrupt_handler() and priv_dev_status_handler()). This commit renames them and removes the unnecessary dev argument which can be retrieved through the private structure where needed. Documentation is updated accordingly. Signed-off-by: Adrien Mazarguil --- drivers/net/mlx4/mlx4.c | 145 ++++++++++++++++--------------------------- 1 file changed, 55 insertions(+), 90 deletions(-) diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c index d6d4be7..50e0687 100644 --- a/drivers/net/mlx4/mlx4.c +++ b/drivers/net/mlx4/mlx4.c @@ -2048,14 +2048,9 @@ mlx4_rx_queue_release(void *dpdk_rxq) rte_free(rxq); } -static int -priv_dev_interrupt_handler_install(struct priv *, struct rte_eth_dev *); - -static int -priv_dev_removal_interrupt_handler_install(struct priv *, struct rte_eth_dev *); - -static int -priv_dev_link_interrupt_handler_install(struct priv *, struct rte_eth_dev *); +static int priv_interrupt_handler_install(struct priv *priv); +static int priv_removal_interrupt_handler_install(struct priv *priv); +static int priv_link_interrupt_handler_install(struct priv *priv); /** * DPDK callback to start the device. @@ -2081,13 +2076,13 @@ mlx4_dev_start(struct rte_eth_dev *dev) ret = priv_mac_addr_add(priv); if (ret) goto err; - ret = priv_dev_link_interrupt_handler_install(priv, dev); + ret = priv_link_interrupt_handler_install(priv); if (ret) { ERROR("%p: LSC handler install failed", (void *)dev); goto err; } - ret = priv_dev_removal_interrupt_handler_install(priv, dev); + ret = priv_removal_interrupt_handler_install(priv); if (ret) { ERROR("%p: RMV handler install failed", (void *)dev); @@ -2184,15 +2179,9 @@ removed_rx_burst(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n) return 0; } -static int -priv_dev_interrupt_handler_uninstall(struct priv *, struct rte_eth_dev *); - -static int -priv_dev_removal_interrupt_handler_uninstall(struct priv *, - struct rte_eth_dev *); - -static int -priv_dev_link_interrupt_handler_uninstall(struct priv *, struct rte_eth_dev *); +static int priv_interrupt_handler_uninstall(struct priv *priv); +static int priv_removal_interrupt_handler_uninstall(struct priv *priv); +static int priv_link_interrupt_handler_uninstall(struct priv *priv); /** * DPDK callback to close the device. @@ -2256,8 +2245,8 @@ mlx4_dev_close(struct rte_eth_dev *dev) claim_zero(ibv_close_device(priv->ctx)); } else assert(priv->ctx == NULL); - priv_dev_removal_interrupt_handler_uninstall(priv, dev); - priv_dev_link_interrupt_handler_uninstall(priv, dev); + priv_removal_interrupt_handler_uninstall(priv); + priv_link_interrupt_handler_uninstall(priv); priv_rx_intr_vec_disable(priv); memset(priv, 0, sizeof(*priv)); } @@ -2745,31 +2734,25 @@ priv_get_mac(struct priv *priv, uint8_t (*mac)[ETHER_ADDR_LEN]) return 0; } -static void -mlx4_dev_link_status_handler(void *); -static void -mlx4_dev_interrupt_handler(void *); +static void mlx4_link_status_alarm(struct priv *priv); /** - * Link/device status handler. + * Collect interrupt events. * * @param priv * Pointer to private structure. - * @param dev - * Pointer to the rte_eth_dev structure. * @param events * Pointer to event flags holder. * * @return - * Number of events + * Number of events. */ static int -priv_dev_status_handler(struct priv *priv, struct rte_eth_dev *dev, - uint32_t *events) +priv_collect_interrupt_events(struct priv *priv, uint32_t *events) { struct ibv_async_event event; int port_change = 0; - struct rte_eth_link *link = &dev->data->dev_link; + struct rte_eth_link *link = &priv->dev->data->dev_link; int ret = 0; *events = 0; @@ -2793,15 +2776,16 @@ priv_dev_status_handler(struct priv *priv, struct rte_eth_dev *dev, } if (!port_change) return ret; - mlx4_link_update(dev, 0); + mlx4_link_update(priv->dev, 0); if (((link->link_speed == 0) && link->link_status) || ((link->link_speed != 0) && !link->link_status)) { if (!priv->intr_alarm) { /* Inconsistent status, check again later. */ priv->intr_alarm = 1; rte_eal_alarm_set(MLX4_INTR_ALARM_TIMEOUT, - mlx4_dev_link_status_handler, - dev); + (void (*)(void *)) + mlx4_link_status_alarm, + priv); } } else { *events |= (1 << RTE_ETH_EVENT_INTR_LSC); @@ -2810,53 +2794,48 @@ priv_dev_status_handler(struct priv *priv, struct rte_eth_dev *dev, } /** - * Handle delayed link status event. + * Process scheduled link status check. * - * @param arg - * Registered argument. + * @param priv + * Pointer to private structure. */ static void -mlx4_dev_link_status_handler(void *arg) +mlx4_link_status_alarm(struct priv *priv) { - struct rte_eth_dev *dev = arg; - struct priv *priv = dev->data->dev_private; uint32_t events; int ret; assert(priv->intr_alarm == 1); priv->intr_alarm = 0; - ret = priv_dev_status_handler(priv, dev, &events); + ret = priv_collect_interrupt_events(priv, &events); if (ret > 0 && events & (1 << RTE_ETH_EVENT_INTR_LSC)) - _rte_eth_dev_callback_process(dev, RTE_ETH_EVENT_INTR_LSC, + _rte_eth_dev_callback_process(priv->dev, + RTE_ETH_EVENT_INTR_LSC, NULL, NULL); } /** * Handle interrupts from the NIC. * - * @param[in] intr_handle - * Interrupt handler. - * @param cb_arg - * Callback argument. + * @param priv + * Pointer to private structure. */ static void -mlx4_dev_interrupt_handler(void *cb_arg) +mlx4_interrupt_handler(struct priv *priv) { - struct rte_eth_dev *dev = cb_arg; - struct priv *priv = dev->data->dev_private; int ret; uint32_t ev; int i; - ret = priv_dev_status_handler(priv, dev, &ev); + ret = priv_collect_interrupt_events(priv, &ev); if (ret > 0) { for (i = RTE_ETH_EVENT_UNKNOWN; i < RTE_ETH_EVENT_MAX; i++) { if (ev & (1 << i)) { ev &= ~(1 << i); - _rte_eth_dev_callback_process(dev, i, NULL, - NULL); + _rte_eth_dev_callback_process(priv->dev, i, + NULL, NULL); ret--; } } @@ -2871,14 +2850,12 @@ mlx4_dev_interrupt_handler(void *cb_arg) * * @param priv * Pointer to private structure. - * @param dev - * Pointer to the rte_eth_dev structure. * * @return * 0 on success, negative errno value otherwise and rte_errno is set. */ static int -priv_dev_interrupt_handler_uninstall(struct priv *priv, struct rte_eth_dev *dev) +priv_interrupt_handler_uninstall(struct priv *priv) { int ret; @@ -2886,8 +2863,9 @@ priv_dev_interrupt_handler_uninstall(struct priv *priv, struct rte_eth_dev *dev) priv->intr_conf.rmv) return 0; ret = rte_intr_callback_unregister(&priv->intr_handle, - mlx4_dev_interrupt_handler, - dev); + (void (*)(void *)) + mlx4_interrupt_handler, + priv); if (ret < 0) { rte_errno = ret; ERROR("rte_intr_callback_unregister failed with %d %s", @@ -2902,15 +2880,12 @@ priv_dev_interrupt_handler_uninstall(struct priv *priv, struct rte_eth_dev *dev) * * @param priv * Pointer to private structure. - * @param dev - * Pointer to the rte_eth_dev structure. * * @return * 0 on success, negative errno value otherwise and rte_errno is set. */ static int -priv_dev_interrupt_handler_install(struct priv *priv, - struct rte_eth_dev *dev) +priv_interrupt_handler_install(struct priv *priv) { int rc; @@ -2924,8 +2899,9 @@ priv_dev_interrupt_handler_install(struct priv *priv, return 0; priv->intr_handle.fd = priv->ctx->async_fd; rc = rte_intr_callback_register(&priv->intr_handle, - mlx4_dev_interrupt_handler, - dev); + (void (*)(void *)) + mlx4_interrupt_handler, + priv); if (!rc) return 0; rte_errno = -rc; @@ -2940,19 +2916,16 @@ priv_dev_interrupt_handler_install(struct priv *priv, * * @param priv * Pointer to private structure. - * @param dev - * Pointer to the rte_eth_dev structure. * * @return * 0 on success, negative errno value otherwise and rte_errno is set. */ static int -priv_dev_removal_interrupt_handler_uninstall(struct priv *priv, - struct rte_eth_dev *dev) +priv_removal_interrupt_handler_uninstall(struct priv *priv) { - if (dev->data->dev_conf.intr_conf.rmv) { + if (priv->dev->data->dev_conf.intr_conf.rmv) { priv->intr_conf.rmv = 0; - return priv_dev_interrupt_handler_uninstall(priv, dev); + return priv_interrupt_handler_uninstall(priv); } return 0; } @@ -2962,27 +2935,25 @@ priv_dev_removal_interrupt_handler_uninstall(struct priv *priv, * * @param priv * Pointer to private structure. - * @param dev - * Pointer to the rte_eth_dev structure. * * @return * 0 on success, negative errno value otherwise and rte_errno is set. */ static int -priv_dev_link_interrupt_handler_uninstall(struct priv *priv, - struct rte_eth_dev *dev) +priv_link_interrupt_handler_uninstall(struct priv *priv) { int ret = 0; - if (dev->data->dev_conf.intr_conf.lsc) { + if (priv->dev->data->dev_conf.intr_conf.lsc) { priv->intr_conf.lsc = 0; - ret = priv_dev_interrupt_handler_uninstall(priv, dev); + ret = priv_interrupt_handler_uninstall(priv); if (ret) return ret; } if (priv->intr_alarm) - if (rte_eal_alarm_cancel(mlx4_dev_link_status_handler, - dev)) { + if (rte_eal_alarm_cancel((void (*)(void *)) + mlx4_link_status_alarm, + priv)) { ERROR("rte_eal_alarm_cancel failed " " (rte_errno: %s)", strerror(rte_errno)); return -rte_errno; @@ -2996,20 +2967,17 @@ priv_dev_link_interrupt_handler_uninstall(struct priv *priv, * * @param priv * Pointer to private structure. - * @param dev - * Pointer to the rte_eth_dev structure. * * @return * 0 on success, negative errno value otherwise and rte_errno is set. */ static int -priv_dev_link_interrupt_handler_install(struct priv *priv, - struct rte_eth_dev *dev) +priv_link_interrupt_handler_install(struct priv *priv) { int ret; - if (dev->data->dev_conf.intr_conf.lsc) { - ret = priv_dev_interrupt_handler_install(priv, dev); + if (priv->dev->data->dev_conf.intr_conf.lsc) { + ret = priv_interrupt_handler_install(priv); if (ret) return ret; priv->intr_conf.lsc = 1; @@ -3022,20 +2990,17 @@ priv_dev_link_interrupt_handler_install(struct priv *priv, * * @param priv * Pointer to private structure. - * @param dev - * Pointer to the rte_eth_dev structure. * * @return * 0 on success, negative errno value otherwise and rte_errno is set. */ static int -priv_dev_removal_interrupt_handler_install(struct priv *priv, - struct rte_eth_dev *dev) +priv_removal_interrupt_handler_install(struct priv *priv) { int ret; - if (dev->data->dev_conf.intr_conf.rmv) { - ret = priv_dev_interrupt_handler_install(priv, dev); + if (priv->dev->data->dev_conf.intr_conf.rmv) { + ret = priv_interrupt_handler_install(priv); if (ret) return ret; priv->intr_conf.rmv = 1;