From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f65.google.com (mail-wm0-f65.google.com [74.125.82.65]) by dpdk.org (Postfix) with ESMTP id 8D7D51B2B2 for ; Thu, 15 Feb 2018 10:28:46 +0100 (CET) Received: by mail-wm0-f65.google.com with SMTP id b21so26630619wme.4 for ; Thu, 15 Feb 2018 01:28:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=G1/+tEQKmlClurpLVOKNUSyZWRrZzZNjc9B+VvQVgw8=; b=PtzQO87idgCaMVLCmfRMHyzjAh+tJCNZ0zltPSPZMntjNk8c2loDFck0pUeutKh2Kr 1zgJg4jq/0UhRR9FaSDadOiiqZXh9ZsEf/jGLyRo6UMDzFntUEDKha0b/iDCi/1AX6LF R/fxQ/W9G2AA07syKTQdujqatGodY0329VLxXfKwj/MPw2zKzkfgKGbhkWXTRRb6JBNA RgD6EUXDkxwSKvE2WhT7TIDPFO60uGG/neddflAEA9UM8NXX763o3KgkJeOUYxCXu90d UGt4uaYmEDFOY0RTL28lviaLjOhEL6GjixjKfM2RCGoyzj4KCvfn491vMukj1zmxfhHW sDYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=G1/+tEQKmlClurpLVOKNUSyZWRrZzZNjc9B+VvQVgw8=; b=OozcLp6AdNifVcR2G4Xvrgt9YOhDIQ/+FKs3XO9NvJw7Xmc9l/G4OhYrin4b3tGmjW DTmHLLCGf/dA4OBDFFDwYOaGD6TsKxSbqrN9s3ukf0Z9+vt3m5vCWcqoFxQcqFrRo3nV ehrtV1MmCPmlXBgZmi6UVrXN3JlbJLh7J7Tw6/rXs84Ju8jAgKN9LV19dRdlH7rG29E3 CowoOw3qZ8zwFFDNqM8/CsAewK0Bj3cR2AeI8eXBM1dzgvOW5xVtcX0xH3uDahKURzuY GXwOROSNbD/TuXF+eDo2Z0vOFCp1wXTKtGitNo4PZD9RztfusKCm8L8VV9IXGrbU6bu4 10sQ== X-Gm-Message-State: APf1xPBv4cP/lY0jTECVtmQFMq5OmqBqTnoe7tdNfueIErsIYjRRdp5I HdtJ55woUdy/hlfNJzwUo7F6qCihZA== X-Google-Smtp-Source: AH8x227oJhXObRGIskVcnjZMKza0Pn2GEteBqLyhqef1lCaL2PqnuquwaoeCO91yZhN5hlpUvIhFdw== X-Received: by 10.28.238.18 with SMTP id m18mr1610831wmh.146.1518686925174; Thu, 15 Feb 2018 01:28:45 -0800 (PST) Received: from laranjeiro-vm.dev.6wind.com (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id g64sm11307595wmf.20.2018.02.15.01.28.44 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 15 Feb 2018 01:28:44 -0800 (PST) From: Nelio Laranjeiro To: dev@dpdk.org Cc: Adrien Mazarguil , Yongseok Koh Date: Thu, 15 Feb 2018 10:29:26 +0100 Message-Id: <3c6d213784a58de85b30ff5053b0c35bcfd33b57.1518686930.git.nelio.laranjeiro@6wind.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: References: In-Reply-To: References: Subject: [dpdk-dev] [PATCH 2/3] net/mlx5: convert return errno to negative ones 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: , X-List-Received-Date: Thu, 15 Feb 2018 09:28:47 -0000 Signed-off-by: Nelio Laranjeiro Acked-by: Yongseok Koh --- drivers/net/mlx5/mlx5.c | 19 ++++----- drivers/net/mlx5/mlx5_ethdev.c | 30 ++++++++------ drivers/net/mlx5/mlx5_flow.c | 92 +++++++++++++++++++++-------------------- drivers/net/mlx5/mlx5_mac.c | 7 ++-- drivers/net/mlx5/mlx5_mr.c | 4 +- drivers/net/mlx5/mlx5_rss.c | 16 +++---- drivers/net/mlx5/mlx5_rxq.c | 20 ++++----- drivers/net/mlx5/mlx5_socket.c | 41 ++++++++++++------ drivers/net/mlx5/mlx5_trigger.c | 27 ++++++------ drivers/net/mlx5/mlx5_txq.c | 14 +++---- drivers/net/mlx5/mlx5_vlan.c | 2 +- 11 files changed, 145 insertions(+), 127 deletions(-) diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c index f52edf74f..d24f2a37c 100644 --- a/drivers/net/mlx5/mlx5.c +++ b/drivers/net/mlx5/mlx5.c @@ -413,7 +413,7 @@ mlx5_args_check(const char *key, const char *val, void *opaque) * Device arguments structure. * * @return - * 0 on success, errno value on failure. + * 0 on success, negative errno value on failure. */ static int mlx5_args(struct mlx5_dev_config *config, struct rte_devargs *devargs) @@ -446,7 +446,7 @@ mlx5_args(struct mlx5_dev_config *config, struct rte_devargs *devargs) mlx5_args_check, config); if (ret != 0) { rte_kvargs_free(kvlist); - return ret; + return -EINVAL; } } } @@ -472,7 +472,7 @@ static void *uar_base; * Pointer to private structure. * * @return - * 0 on success, errno value on failure. + * 0 on success, negative errno value on failure. */ static int priv_uar_init_primary(struct priv *priv) @@ -480,7 +480,6 @@ priv_uar_init_primary(struct priv *priv) void *addr = (void *)0; int i; const struct rte_mem_config *mcfg; - int ret; if (uar_base) { /* UAR address space mapped. */ priv->uar_base = uar_base; @@ -502,8 +501,7 @@ priv_uar_init_primary(struct priv *priv) if (addr == MAP_FAILED) { ERROR("Failed to reserve UAR address space, please adjust " "MLX5_UAR_SIZE or try --base-virtaddr"); - ret = ENOMEM; - return ret; + return -ENOMEM; } /* Accept either same addr or a new addr returned from mmap if target * range occupied. @@ -522,13 +520,12 @@ priv_uar_init_primary(struct priv *priv) * Pointer to private structure. * * @return - * 0 on success, errno value on failure. + * 0 on success, negative errno value on failure. */ static int priv_uar_init_secondary(struct priv *priv) { void *addr; - int ret; assert(priv->uar_base); if (uar_base) { /* already reserved. */ @@ -541,15 +538,13 @@ priv_uar_init_secondary(struct priv *priv) if (addr == MAP_FAILED) { ERROR("UAR mmap failed: %p size: %llu", priv->uar_base, MLX5_UAR_SIZE); - ret = ENXIO; - return ret; + return -ENXIO; } if (priv->uar_base != addr) { ERROR("UAR address %p size %llu occupied, please adjust " "MLX5_UAR_OFFSET or try EAL parameter --base-virtaddr", priv->uar_base, MLX5_UAR_SIZE); - ret = ENXIO; - return ret; + return -ENXIO; } uar_base = addr; /* process local, don't reserve again */ INFO("Reserved UAR address space: %p", addr); diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c index b73cb53df..12d35dcf2 100644 --- a/drivers/net/mlx5/mlx5_ethdev.c +++ b/drivers/net/mlx5/mlx5_ethdev.c @@ -314,7 +314,7 @@ priv_set_flags(struct priv *priv, unsigned int keep, unsigned int flags) * Pointer to Ethernet device structure. * * @return - * 0 on success, errno value on failure. + * 0 on success, negative errno value on failure. */ static int dev_configure(struct rte_eth_dev *dev) @@ -338,26 +338,26 @@ dev_configure(struct rte_eth_dev *dev) ERROR("Some Tx offloads are not supported " "requested 0x%" PRIx64 " supported 0x%" PRIx64, tx_offloads, supp_tx_offloads); - return ENOTSUP; + return -ENOTSUP; } if ((rx_offloads & supp_rx_offloads) != rx_offloads) { ERROR("Some Rx offloads are not supported " "requested 0x%" PRIx64 " supported 0x%" PRIx64, rx_offloads, supp_rx_offloads); - return ENOTSUP; + return -ENOTSUP; } if (use_app_rss_key && (dev->data->dev_conf.rx_adv_conf.rss_conf.rss_key_len != rss_hash_default_key_len)) { /* MLX5 RSS only support 40bytes key. */ - return EINVAL; + return -EINVAL; } priv->rss_conf.rss_key = rte_realloc(priv->rss_conf.rss_key, rss_hash_default_key_len, 0); if (!priv->rss_conf.rss_key) { ERROR("cannot allocate RSS hash key memory (%u)", rxqs_n); - return ENOMEM; + return -ENOMEM; } memcpy(priv->rss_conf.rss_key, use_app_rss_key ? @@ -375,7 +375,7 @@ dev_configure(struct rte_eth_dev *dev) } if (rxqs_n > priv->config.ind_table_max_size) { ERROR("cannot handle this many RX queues (%u)", rxqs_n); - return EINVAL; + return -EINVAL; } if (rxqs_n == priv->rxqs_n) return 0; @@ -389,7 +389,7 @@ dev_configure(struct rte_eth_dev *dev) priv->config.ind_table_max_size : rxqs_n)); if (priv_rss_reta_index_resize(priv, reta_idx_n)) - return ENOMEM; + return -ENOMEM; /* When the number of RX queues is not a power of two, the remaining * table entries are padded with reused WQs and hashes are not spread * uniformly. */ @@ -420,7 +420,7 @@ mlx5_dev_configure(struct rte_eth_dev *dev) ret = dev_configure(dev); assert(ret >= 0); priv_unlock(priv); - return -ret; + return ret; } /** @@ -1199,7 +1199,7 @@ priv_dev_interrupt_handler_install(struct priv *priv, struct rte_eth_dev *dev) * Nonzero for link up, otherwise link down. * * @return - * 0 on success, errno value on failure. + * 0 on success, -1 on error and errno is set. */ static int priv_dev_set_link(struct priv *priv, int up) @@ -1214,7 +1214,7 @@ priv_dev_set_link(struct priv *priv, int up) * Pointer to Ethernet device structure. * * @return - * 0 on success, errno value on failure. + * 0 on success, negative errno value on failure. */ int mlx5_set_link_down(struct rte_eth_dev *dev) @@ -1225,7 +1225,9 @@ mlx5_set_link_down(struct rte_eth_dev *dev) priv_lock(priv); err = priv_dev_set_link(priv, 0); priv_unlock(priv); - return err; + if (err == -1) + return errno; + return 0; } /** @@ -1235,7 +1237,7 @@ mlx5_set_link_down(struct rte_eth_dev *dev) * Pointer to Ethernet device structure. * * @return - * 0 on success, errno value on failure. + * 0 on success, negative errno value on failure. */ int mlx5_set_link_up(struct rte_eth_dev *dev) @@ -1246,7 +1248,9 @@ mlx5_set_link_up(struct rte_eth_dev *dev) priv_lock(priv); err = priv_dev_set_link(priv, 1); priv_unlock(priv); - return err; + if (err == -1) + return errno; + return 0; } /** diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c index 26002c4b9..2a595442e 100644 --- a/drivers/net/mlx5/mlx5_flow.c +++ b/drivers/net/mlx5/mlx5_flow.c @@ -460,7 +460,7 @@ struct ibv_spec_header { * Bit-Mask size in bytes. * * @return - * 0 on success. + * 0 on success, -1 on error. */ static int mlx5_flow_item_validate(const struct rte_flow_item *item, @@ -523,7 +523,7 @@ mlx5_flow_item_validate(const struct rte_flow_item *item, * User RSS configuration to save. * * @return - * 0 on success, errno value on failure. + * 0 on success, negative errno value on failure. */ static int priv_flow_convert_rss_conf(struct priv *priv, @@ -538,9 +538,9 @@ priv_flow_convert_rss_conf(struct priv *priv, (void)priv; if (rss_conf) { if (rss_conf->rss_hf & MLX5_RSS_HF_MASK) - return EINVAL; + return -EINVAL; if (rss_conf->rss_key_len != 40) - return EINVAL; + return -EINVAL; if (rss_conf->rss_key_len && rss_conf->rss_key) { parser->rss_conf.rss_key_len = rss_conf->rss_key_len; memcpy(parser->rss_key, rss_conf->rss_key, @@ -1068,7 +1068,7 @@ priv_flow_convert(struct priv *priv, priv_flow_convert_allocate(priv, priority, offset, error); if (!parser->queue[HASH_RXQ_ETH].ibv_attr) - return ENOMEM; + return -ENOMEM; parser->queue[HASH_RXQ_ETH].offset = sizeof(struct ibv_flow_attr); } else { @@ -1103,7 +1103,7 @@ priv_flow_convert(struct priv *priv, cur_item->mask), parser); if (ret) { - rte_flow_error_set(error, ret, + rte_flow_error_set(error, -ret, RTE_FLOW_ERROR_TYPE_ITEM, items, "item not supported"); goto exit_free; @@ -1147,11 +1147,11 @@ priv_flow_convert(struct priv *priv, } rte_flow_error_set(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL, "cannot allocate verbs spec attributes."); - return ret; + return -rte_errno; exit_count_error: rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL, "cannot create counter."); - return rte_errno; + return -rte_errno; } /** @@ -1502,6 +1502,9 @@ mlx5_flow_create_tcp(const struct rte_flow_item *item, * Default bit-masks to use when item->mask is not provided. * @param data[in, out] * User structure. + * + * @return + * 0 on success, negative errno value on failure. */ static int mlx5_flow_create_vxlan(const struct rte_flow_item *item, @@ -1542,7 +1545,7 @@ mlx5_flow_create_vxlan(const struct rte_flow_item *item, * To avoid such situation, VNI 0 is currently refused. */ if (!vxlan.val.tunnel_id) - return EINVAL; + return -EINVAL; mlx5_flow_create_copy(parser, &vxlan, size); return 0; } @@ -1579,7 +1582,7 @@ mlx5_flow_create_flag_mark(struct mlx5_flow_parse *parser, uint32_t mark_id) * Pointer to MLX5 flow parser structure. * * @return - * 0 on success, errno value on failure. + * 0 on success, negative errno value on failure. */ static int mlx5_flow_create_count(struct priv *priv __rte_unused, @@ -1597,7 +1600,7 @@ mlx5_flow_create_count(struct priv *priv __rte_unused, init_attr.counter_set_id = 0; parser->cs = mlx5_glue->create_counter_set(priv->ctx, &init_attr); if (!parser->cs) - return EINVAL; + return -EINVAL; counter.counter_set_handle = parser->cs->handle; mlx5_flow_create_copy(parser, &counter, size); #endif @@ -1617,7 +1620,7 @@ mlx5_flow_create_count(struct priv *priv __rte_unused, * Perform verbose error reporting if not NULL. * * @return - * 0 on success, errno value on failure. + * 0 on success, negative errno value on failure. */ static int priv_flow_create_action_queue_drop(struct priv *priv, @@ -1653,7 +1656,7 @@ priv_flow_create_action_queue_drop(struct priv *priv, if (!flow->frxq[HASH_RXQ_ETH].ibv_flow) { rte_flow_error_set(error, ENOMEM, RTE_FLOW_ERROR_TYPE_HANDLE, NULL, "flow rule creation failure"); - err = ENOMEM; + err = -ENOMEM; goto error; } return 0; @@ -1689,7 +1692,7 @@ priv_flow_create_action_queue_drop(struct priv *priv, * Perform verbose error reporting if not NULL. * * @return - * 0 on success, a errno value otherwise and rte_errno is set. + * 0 on success, a negative errno value otherwise and rte_errno is set. */ static int priv_flow_create_action_queue_rss(struct priv *priv, @@ -1729,7 +1732,7 @@ priv_flow_create_action_queue_rss(struct priv *priv, rte_flow_error_set(error, ENOMEM, RTE_FLOW_ERROR_TYPE_HANDLE, NULL, "cannot create hash rxq"); - return ENOMEM; + return -ENOMEM; } } return 0; @@ -1748,7 +1751,7 @@ priv_flow_create_action_queue_rss(struct priv *priv, * Perform verbose error reporting if not NULL. * * @return - * 0 on success, a errno value otherwise and rte_errno is set. + * 0 on success, a negative errno value otherwise and rte_errno is set. */ static int priv_flow_create_action_queue(struct priv *priv, @@ -1779,7 +1782,7 @@ priv_flow_create_action_queue(struct priv *priv, rte_flow_error_set(error, ENOMEM, RTE_FLOW_ERROR_TYPE_HANDLE, NULL, "flow rule creation failure"); - err = ENOMEM; + err = -ENOMEM; goto error; } DEBUG("%p type %d QP %p ibv_flow %p", @@ -2038,7 +2041,7 @@ priv_flow_flush(struct priv *priv, struct mlx5_flows *list) * Pointer to private structure. * * @return - * 0 on success. + * 0 on success, negative errno on error. */ int priv_flow_create_drop_queue(struct priv *priv) @@ -2117,7 +2120,7 @@ priv_flow_create_drop_queue(struct priv *priv) if (fdq) rte_free(fdq); priv->flow_drop_queue = NULL; - return -1; + return -ENOMEM; } /** @@ -2214,7 +2217,7 @@ priv_flow_stop(struct priv *priv, struct mlx5_flows *list) * Pointer to a TAILQ flow list. * * @return - * 0 on success, a errno value otherwise and rte_errno is set. + * 0 on success, negative errno value otherwise and rte_errno is set. */ int priv_flow_start(struct priv *priv, struct mlx5_flows *list) @@ -2233,7 +2236,7 @@ priv_flow_start(struct priv *priv, struct mlx5_flows *list) DEBUG("Flow %p cannot be applied", (void *)flow); rte_errno = EINVAL; - return rte_errno; + return -rte_errno; } DEBUG("Flow %p applied", (void *)flow); /* Next flow. */ @@ -2260,7 +2263,7 @@ priv_flow_start(struct priv *priv, struct mlx5_flows *list) DEBUG("Flow %p cannot be applied", (void *)flow); rte_errno = EINVAL; - return rte_errno; + return -rte_errno; } flow_create: flow->frxq[i].ibv_flow = @@ -2270,7 +2273,7 @@ priv_flow_start(struct priv *priv, struct mlx5_flows *list) DEBUG("Flow %p cannot be applied", (void *)flow); rte_errno = EINVAL; - return rte_errno; + return -rte_errno; } DEBUG("Flow %p applied", (void *)flow); } @@ -2319,7 +2322,7 @@ priv_flow_verify(struct priv *priv) * A VLAN flow mask to apply. * * @return - * 0 on success. + * 0 on success, negative errno on error. */ int mlx5_ctrl_flow_vlan(struct rte_eth_dev *dev, @@ -2372,7 +2375,7 @@ mlx5_ctrl_flow_vlan(struct rte_eth_dev *dev, } action_rss; if (!priv->reta_idx_n) - return EINVAL; + return -EINVAL; for (i = 0; i != priv->reta_idx_n; ++i) action_rss.local.queue[i] = (*priv->reta_idx)[i]; action_rss.local.rss_conf = &priv->rss_conf; @@ -2381,7 +2384,7 @@ mlx5_ctrl_flow_vlan(struct rte_eth_dev *dev, flow = priv_flow_create(priv, &priv->ctrl_flows, &attr, items, actions, &error); if (!flow) - return rte_errno; + return -rte_errno; return 0; } @@ -2396,7 +2399,7 @@ mlx5_ctrl_flow_vlan(struct rte_eth_dev *dev, * An Ethernet flow mask to apply. * * @return - * 0 on success. + * 0 on success, negative errno on error. */ int mlx5_ctrl_flow(struct rte_eth_dev *dev, @@ -2455,7 +2458,7 @@ mlx5_flow_flush(struct rte_eth_dev *dev, * returned data from the counter. * * @return - * 0 on success, a errno value otherwise and rte_errno is set. + * 0 on success, a negative errno value otherwise and rte_errno is set. */ static int priv_flow_query_count(struct ibv_counter_set *cs, @@ -2567,7 +2570,7 @@ mlx5_flow_isolate(struct rte_eth_dev *dev, * Generic flow parameters structure. * * @return - * 0 on success, errno value on error. + * 0 on success, negative errno value on error. */ static int priv_fdir_filter_convert(struct priv *priv, @@ -2579,7 +2582,7 @@ priv_fdir_filter_convert(struct priv *priv, /* Validate queue number. */ if (fdir_filter->action.rx_queue >= priv->rxqs_n) { ERROR("invalid queue number %d", fdir_filter->action.rx_queue); - return EINVAL; + return -EINVAL; } attributes->attr.ingress = 1; attributes->items[0] = (struct rte_flow_item) { @@ -2601,7 +2604,7 @@ priv_fdir_filter_convert(struct priv *priv, break; default: ERROR("invalid behavior %d", fdir_filter->action.behavior); - return ENOTSUP; + return -ENOTSUP; } attributes->queue.index = fdir_filter->action.rx_queue; switch (fdir_filter->input.flow_type) { @@ -2737,7 +2740,7 @@ priv_fdir_filter_convert(struct priv *priv, default: ERROR("invalid flow type%d", fdir_filter->input.flow_type); - return ENOTSUP; + return -ENOTSUP; } return 0; } @@ -2751,7 +2754,7 @@ priv_fdir_filter_convert(struct priv *priv, * Flow director filter to add. * * @return - * 0 on success, errno value on failure. + * 0 on success, negative errno value on failure. */ static int priv_fdir_filter_add(struct priv *priv, @@ -2774,11 +2777,11 @@ priv_fdir_filter_add(struct priv *priv, ret = priv_fdir_filter_convert(priv, fdir_filter, &attributes); if (ret) - return -ret; + return ret; ret = priv_flow_convert(priv, &attributes.attr, attributes.items, attributes.actions, &error, &parser); if (ret) - return -ret; + return ret; flow = priv_flow_create(priv, &priv->flows, &attributes.attr, @@ -2789,7 +2792,7 @@ priv_fdir_filter_add(struct priv *priv, DEBUG("FDIR created %p", (void *)flow); return 0; } - return ENOTSUP; + return -ENOTSUP; } /** @@ -2801,7 +2804,7 @@ priv_fdir_filter_add(struct priv *priv, * Filter to be deleted. * * @return - * 0 on success, errno value on failure. + * 0 on success, negative errno value on failure. */ static int priv_fdir_filter_delete(struct priv *priv, @@ -2821,7 +2824,7 @@ priv_fdir_filter_delete(struct priv *priv, ret = priv_fdir_filter_convert(priv, fdir_filter, &attributes); if (ret) - return -ret; + return ret; ret = priv_flow_convert(priv, &attributes.attr, attributes.items, attributes.actions, &error, &parser); if (ret) @@ -2886,7 +2889,7 @@ priv_fdir_filter_delete(struct priv *priv, if (parser.queue[i].ibv_attr) rte_free(parser.queue[i].ibv_attr); } - return -ret; + return ret; } /** @@ -2898,7 +2901,7 @@ priv_fdir_filter_delete(struct priv *priv, * Filter to be updated. * * @return - * 0 on success, errno value on failure. + * 0 on success, negative errno value on failure. */ static int priv_fdir_filter_update(struct priv *priv, @@ -2961,7 +2964,7 @@ priv_fdir_info_get(struct priv *priv, struct rte_eth_fdir_info *fdir_info) * Pointer to operation-specific structure. * * @return - * 0 on success, errno value on failure. + * 0 on success, negative errno value on failure. */ static int priv_fdir_ctrl_func(struct priv *priv, enum rte_filter_op filter_op, void *arg) @@ -2976,7 +2979,7 @@ priv_fdir_ctrl_func(struct priv *priv, enum rte_filter_op filter_op, void *arg) fdir_mode != RTE_FDIR_MODE_PERFECT_MAC_VLAN) { ERROR("%p: flow director mode %d not supported", (void *)priv, fdir_mode); - return EINVAL; + return -EINVAL; } switch (filter_op) { case RTE_ETH_FILTER_ADD: @@ -2997,7 +3000,7 @@ priv_fdir_ctrl_func(struct priv *priv, enum rte_filter_op filter_op, void *arg) default: DEBUG("%p: unknown operation %u", (void *)priv, filter_op); - ret = EINVAL; + ret = -EINVAL; break; } return ret; @@ -3039,9 +3042,10 @@ mlx5_dev_filter_ctrl(struct rte_eth_dev *dev, priv_unlock(priv); break; default: + ret = -ENOTSUP; ERROR("%p: filter type (%d) not supported", (void *)dev, filter_type); break; } - return -ret; + return ret; } diff --git a/drivers/net/mlx5/mlx5_mac.c b/drivers/net/mlx5/mlx5_mac.c index e8a8d4594..afd525010 100644 --- a/drivers/net/mlx5/mlx5_mac.c +++ b/drivers/net/mlx5/mlx5_mac.c @@ -84,14 +84,13 @@ mlx5_mac_addr_remove(struct rte_eth_dev *dev, uint32_t index) * VMDq pool index to associate address with (ignored). * * @return - * 0 on success. + * 0 on success, negative errno on error. */ int mlx5_mac_addr_add(struct rte_eth_dev *dev, struct ether_addr *mac, uint32_t index, uint32_t vmdq) { unsigned int i; - int ret = 0; (void)vmdq; assert(index < MLX5_MAX_MAC_ADDRESSES); @@ -103,12 +102,12 @@ mlx5_mac_addr_add(struct rte_eth_dev *dev, struct ether_addr *mac, if (memcmp(&dev->data->mac_addrs[i], mac, sizeof(*mac))) continue; /* Address already configured elsewhere, return with error. */ - return EADDRINUSE; + return -EADDRINUSE; } dev->data->mac_addrs[index] = *mac; if (!dev->data->promiscuous) mlx5_traffic_restart(dev); - return ret; + return 0; } /** diff --git a/drivers/net/mlx5/mlx5_mr.c b/drivers/net/mlx5/mlx5_mr.c index 857dfcd83..ef267403b 100644 --- a/drivers/net/mlx5/mlx5_mr.c +++ b/drivers/net/mlx5/mlx5_mr.c @@ -333,7 +333,7 @@ priv_mr_get(struct priv *priv, struct rte_mempool *mp) * Pointer to memory region to release. * * @return - * 0 on success, errno on failure. + * 0 on success, negative errno on failure. */ int priv_mr_release(struct priv *priv, struct mlx5_mr *mr) @@ -348,7 +348,7 @@ priv_mr_release(struct priv *priv, struct mlx5_mr *mr) rte_free(mr); return 0; } - return EBUSY; + return -EBUSY; } /** diff --git a/drivers/net/mlx5/mlx5_rss.c b/drivers/net/mlx5/mlx5_rss.c index d06b0bee1..9975cb049 100644 --- a/drivers/net/mlx5/mlx5_rss.c +++ b/drivers/net/mlx5/mlx5_rss.c @@ -106,7 +106,7 @@ mlx5_rss_hash_conf_get(struct rte_eth_dev *dev, * The size of the array to allocate. * * @return - * 0 on success, errno value on failure. + * 0 on success, negative errno value on failure. */ int priv_rss_reta_index_resize(struct priv *priv, unsigned int reta_size) @@ -120,7 +120,7 @@ priv_rss_reta_index_resize(struct priv *priv, unsigned int reta_size) mem = rte_realloc(priv->reta_idx, reta_size * sizeof((*priv->reta_idx)[0]), 0); if (!mem) - return ENOMEM; + return -ENOMEM; priv->reta_idx = mem; priv->reta_idx_n = reta_size; @@ -142,7 +142,7 @@ priv_rss_reta_index_resize(struct priv *priv, unsigned int reta_size) * Number of entries. * * @return - * 0 on success, errno value on failure. + * 0 on success, negative errno value on failure. */ static int priv_dev_rss_reta_query(struct priv *priv, @@ -153,7 +153,7 @@ priv_dev_rss_reta_query(struct priv *priv, unsigned int i; if (!reta_size || reta_size > priv->reta_idx_n) - return EINVAL; + return -EINVAL; /* Fill each entry of the table even if its bit is not set. */ for (idx = 0, i = 0; (i != reta_size); ++i) { idx = i / RTE_RETA_GROUP_SIZE; @@ -174,7 +174,7 @@ priv_dev_rss_reta_query(struct priv *priv, * Number of entries. * * @return - * 0 on success, errno value on failure. + * 0 on success, negative errno value on failure. */ static int priv_dev_rss_reta_update(struct priv *priv, @@ -187,7 +187,7 @@ priv_dev_rss_reta_update(struct priv *priv, int ret; if (!reta_size) - return EINVAL; + return -EINVAL; ret = priv_rss_reta_index_resize(priv, reta_size); if (ret) return ret; @@ -227,7 +227,7 @@ mlx5_dev_rss_reta_query(struct rte_eth_dev *dev, priv_lock(priv); ret = priv_dev_rss_reta_query(priv, reta_conf, reta_size); priv_unlock(priv); - return -ret; + return ret; } /** @@ -258,5 +258,5 @@ mlx5_dev_rss_reta_update(struct rte_eth_dev *dev, mlx5_dev_stop(dev); mlx5_dev_start(dev); } - return -ret; + return ret; } diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c index 238fa7e56..5be0390e4 100644 --- a/drivers/net/mlx5/mlx5_rxq.c +++ b/drivers/net/mlx5/mlx5_rxq.c @@ -61,7 +61,7 @@ const size_t rss_hash_default_key_len = sizeof(rss_hash_default_key); * Pointer to RX queue structure. * * @return - * 0 on success, errno value on failure. + * 0 on success, negative errno value on failure. */ int rxq_alloc_elts(struct mlx5_rxq_ctrl *rxq_ctrl) @@ -131,7 +131,7 @@ rxq_alloc_elts(struct mlx5_rxq_ctrl *rxq_ctrl) } DEBUG("%p: failed, freed everything", (void *)rxq_ctrl); assert(ret > 0); - return ret; + return -ret; } /** @@ -849,7 +849,7 @@ mlx5_priv_rxq_ibv_get(struct priv *priv, uint16_t idx) * Verbs Rx queue object. * * @return - * 0 on success, errno value on failure. + * 0 on success, negative errno value on failure. */ int mlx5_priv_rxq_ibv_release(struct priv *priv, struct mlx5_rxq_ibv *rxq_ibv) @@ -876,7 +876,7 @@ mlx5_priv_rxq_ibv_release(struct priv *priv, struct mlx5_rxq_ibv *rxq_ibv) rte_free(rxq_ibv); return 0; } - return EBUSY; + return -EBUSY; } /** @@ -1084,7 +1084,7 @@ mlx5_priv_rxq_get(struct priv *priv, uint16_t idx) * TX queue index. * * @return - * 0 on success, errno value on failure. + * 0 on success, negative errno value on failure. */ int mlx5_priv_rxq_release(struct priv *priv, uint16_t idx) @@ -1110,7 +1110,7 @@ mlx5_priv_rxq_release(struct priv *priv, uint16_t idx) (*priv->rxqs)[idx] = NULL; return 0; } - return EBUSY; + return -EBUSY; } /** @@ -1266,7 +1266,7 @@ mlx5_priv_ind_table_ibv_get(struct priv *priv, uint16_t queues[], * Indirection table to release. * * @return - * 0 on success, errno value on failure. + * 0 on success, negative errno value on failure. */ int mlx5_priv_ind_table_ibv_release(struct priv *priv, @@ -1286,7 +1286,7 @@ mlx5_priv_ind_table_ibv_release(struct priv *priv, rte_free(ind_tbl); return 0; } - return EBUSY; + return -EBUSY; } /** @@ -1440,7 +1440,7 @@ mlx5_priv_hrxq_get(struct priv *priv, uint8_t *rss_key, uint8_t rss_key_len, * Pointer to Hash Rx queue to release. * * @return - * 0 on success, errno value on failure. + * 0 on success, negative errno value on failure. */ int mlx5_priv_hrxq_release(struct priv *priv, struct mlx5_hrxq *hrxq) @@ -1455,7 +1455,7 @@ mlx5_priv_hrxq_release(struct priv *priv, struct mlx5_hrxq *hrxq) return 0; } claim_nonzero(mlx5_priv_ind_table_ibv_release(priv, hrxq->ind_table)); - return EBUSY; + return -EBUSY; } /** diff --git a/drivers/net/mlx5/mlx5_socket.c b/drivers/net/mlx5/mlx5_socket.c index 61c1a4a50..e6d2c98b3 100644 --- a/drivers/net/mlx5/mlx5_socket.c +++ b/drivers/net/mlx5/mlx5_socket.c @@ -22,7 +22,7 @@ * Pointer to private structure. * * @return - * 0 on success, errno value on failure. + * 0 on success, negative errno value on failure. */ int priv_socket_init(struct priv *priv) @@ -40,40 +40,49 @@ priv_socket_init(struct priv *priv) */ ret = socket(AF_UNIX, SOCK_STREAM, 0); if (ret < 0) { + ret = errno; WARN("secondary process not supported: %s", strerror(errno)); - return ret; + return -ret; } priv->primary_socket = ret; flags = fcntl(priv->primary_socket, F_GETFL, 0); - if (flags == -1) + if (flags == -1) { + ret = errno; goto out; + } ret = fcntl(priv->primary_socket, F_SETFL, flags | O_NONBLOCK); - if (ret < 0) + if (ret < 0) { + ret = errno; goto out; + } snprintf(sun.sun_path, sizeof(sun.sun_path), "/var/tmp/%s_%d", MLX5_DRIVER_NAME, priv->primary_socket); ret = stat(sun.sun_path, &file_stat); - if (!ret) + if (!ret) { + ret = errno; claim_zero(remove(sun.sun_path)); + } ret = bind(priv->primary_socket, (const struct sockaddr *)&sun, sizeof(sun)); if (ret < 0) { + ret = errno; WARN("cannot bind socket, secondary process not supported: %s", strerror(errno)); goto close; } ret = listen(priv->primary_socket, 0); if (ret < 0) { + ret = errno; WARN("Secondary process not supported: %s", strerror(errno)); goto close; } - return ret; + return 0; close: remove(sun.sun_path); out: claim_zero(close(priv->primary_socket)); priv->primary_socket = 0; - return -(ret); + return -ret; } /** @@ -83,7 +92,7 @@ priv_socket_init(struct priv *priv) * Pointer to private structure. * * @return - * 0 on success, errno value on failure. + * 0 on success, negative errno value on failure. */ int priv_socket_uninit(struct priv *priv) @@ -191,7 +200,7 @@ priv_socket_connect(struct priv *priv) struct sockaddr_un sun = { .sun_family = AF_UNIX, }; - int socket_fd; + int socket_fd = -1; int *fd = NULL; int ret; struct ucred *cred; @@ -211,19 +220,22 @@ priv_socket_connect(struct priv *priv) ret = socket(AF_UNIX, SOCK_STREAM, 0); if (ret < 0) { + ret = errno; WARN("cannot connect to primary"); - return ret; + goto out; } socket_fd = ret; snprintf(sun.sun_path, sizeof(sun.sun_path), "/var/tmp/%s_%d", MLX5_DRIVER_NAME, priv->primary_socket); ret = connect(socket_fd, (const struct sockaddr *)&sun, sizeof(sun)); if (ret < 0) { + ret = errno; WARN("cannot connect to primary"); goto out; } cmsg = CMSG_FIRSTHDR(&msg); if (cmsg == NULL) { + ret = EINVAL; DEBUG("cannot get first message"); goto out; } @@ -232,6 +244,7 @@ priv_socket_connect(struct priv *priv) cmsg->cmsg_len = CMSG_LEN(sizeof(*cred)); cred = (struct ucred *)CMSG_DATA(cmsg); if (cred == NULL) { + ret = EINVAL; DEBUG("no credentials received"); goto out; } @@ -240,17 +253,20 @@ priv_socket_connect(struct priv *priv) cred->gid = getgid(); ret = sendmsg(socket_fd, &msg, MSG_DONTWAIT); if (ret < 0) { + ret = errno; WARN("cannot send credentials to primary: %s", strerror(errno)); goto out; } ret = recvmsg(socket_fd, &msg, MSG_WAITALL); if (ret <= 0) { + ret = errno; WARN("no message from primary: %s", strerror(errno)); goto out; } cmsg = CMSG_FIRSTHDR(&msg); if (cmsg == NULL) { + ret = EINVAL; WARN("No file descriptor received"); goto out; } @@ -262,6 +278,7 @@ priv_socket_connect(struct priv *priv) } ret = *fd; out: - close(socket_fd); - return ret; + if (socket_fd > 0) + close(socket_fd); + return -ret; } diff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c index a70b13d52..2918ba0e9 100644 --- a/drivers/net/mlx5/mlx5_trigger.c +++ b/drivers/net/mlx5/mlx5_trigger.c @@ -36,7 +36,7 @@ priv_txq_stop(struct priv *priv) * Pointer to private structure. * * @return - * 0 on success, errno on error. + * 0 on success, negative errno on error. */ static int priv_txq_start(struct priv *priv) @@ -60,12 +60,12 @@ priv_txq_start(struct priv *priv) txq_alloc_elts(txq_ctrl); txq_ctrl->ibv = mlx5_priv_txq_ibv_new(priv, i); if (!txq_ctrl->ibv) { - ret = ENOMEM; + ret = -ENOMEM; goto error; } } ret = priv_tx_uar_remap(priv, priv->ctx->cmd_fd); - if (ret) + if (!ret) goto error; return ret; error: @@ -95,7 +95,7 @@ priv_rxq_stop(struct priv *priv) * Pointer to private structure. * * @return - * 0 on success, errno on error. + * 0 on success, negative errno on error. */ static int priv_rxq_start(struct priv *priv) @@ -113,14 +113,14 @@ priv_rxq_start(struct priv *priv) goto error; rxq_ctrl->ibv = mlx5_priv_rxq_ibv_new(priv, i); if (!rxq_ctrl->ibv) { - ret = ENOMEM; + ret = -ENOMEM; goto error; } } - return -ret; + return ret; error: priv_rxq_stop(priv); - return -ret; + return ret; } /** @@ -239,7 +239,7 @@ mlx5_dev_stop(struct rte_eth_dev *dev) * Pointer to Ethernet device structure. * * @return - * 0 on success. + * 0 on success, negative errno on error. */ int priv_dev_traffic_enable(struct priv *priv, struct rte_eth_dev *dev) @@ -354,7 +354,7 @@ priv_dev_traffic_enable(struct priv *priv, struct rte_eth_dev *dev) } return 0; error: - return rte_errno; + return -rte_errno; } @@ -386,7 +386,7 @@ priv_dev_traffic_disable(struct priv *priv, struct rte_eth_dev *dev) * Pointer to Ethernet device structure. * * @return - * 0 on success. + * 0 on success, negative errno on error. */ int priv_dev_traffic_restart(struct priv *priv, struct rte_eth_dev *dev) @@ -405,15 +405,16 @@ priv_dev_traffic_restart(struct priv *priv, struct rte_eth_dev *dev) * Pointer to Ethernet device structure. * * @return - * 0 on success. + * 0 on success, negative errno on error. */ int mlx5_traffic_restart(struct rte_eth_dev *dev) { struct priv *priv = dev->data->dev_private; + int ret; priv_lock(priv); - priv_dev_traffic_restart(priv, dev); + ret = priv_dev_traffic_restart(priv, dev); priv_unlock(priv); - return 0; + return ret; } diff --git a/drivers/net/mlx5/mlx5_txq.c b/drivers/net/mlx5/mlx5_txq.c index ed1c713ea..158394168 100644 --- a/drivers/net/mlx5/mlx5_txq.c +++ b/drivers/net/mlx5/mlx5_txq.c @@ -271,7 +271,7 @@ mlx5_tx_queue_release(void *dpdk_txq) * Verbs file descriptor to map UAR pages. * * @return - * 0 on success, errno value on failure. + * 0 on success, negative errno value on failure. */ int priv_tx_uar_remap(struct priv *priv, int fd) @@ -287,7 +287,6 @@ priv_tx_uar_remap(struct priv *priv, int fd) struct mlx5_txq_ctrl *txq_ctrl; int already_mapped; size_t page_size = sysconf(_SC_PAGESIZE); - int r; memset(pages, 0, priv->txqs_n * sizeof(uintptr_t)); /* @@ -326,8 +325,7 @@ priv_tx_uar_remap(struct priv *priv, int fd) /* fixed mmap have to return same address */ ERROR("call to mmap failed on UAR for txq %d\n", i); - r = ENXIO; - return r; + return -ENXIO; } } if (rte_eal_process_type() == RTE_PROC_PRIMARY) /* save once */ @@ -575,7 +573,7 @@ mlx5_priv_txq_ibv_get(struct priv *priv, uint16_t idx) * Verbs Tx queue object. * * @return - * 0 on success, errno on failure. + * 0 on success, negative errno on failure. */ int mlx5_priv_txq_ibv_release(struct priv *priv, struct mlx5_txq_ibv *txq_ibv) @@ -591,7 +589,7 @@ mlx5_priv_txq_ibv_release(struct priv *priv, struct mlx5_txq_ibv *txq_ibv) rte_free(txq_ibv); return 0; } - return EBUSY; + return -EBUSY; } /** @@ -830,7 +828,7 @@ mlx5_priv_txq_get(struct priv *priv, uint16_t idx) * TX queue index. * * @return - * 0 on success, errno on failure. + * 0 on success, negative errno on failure. */ int mlx5_priv_txq_release(struct priv *priv, uint16_t idx) @@ -867,7 +865,7 @@ mlx5_priv_txq_release(struct priv *priv, uint16_t idx) (*priv->txqs)[idx] = NULL; return 0; } - return EBUSY; + return -EBUSY; } /** diff --git a/drivers/net/mlx5/mlx5_vlan.c b/drivers/net/mlx5/mlx5_vlan.c index 75c345626..2356bc0bb 100644 --- a/drivers/net/mlx5/mlx5_vlan.c +++ b/drivers/net/mlx5/mlx5_vlan.c @@ -80,7 +80,7 @@ mlx5_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on) ++priv->vlan_filter_n; } if (dev->data->dev_started) - priv_dev_traffic_restart(priv, dev); + ret = priv_dev_traffic_restart(priv, dev); out: priv_unlock(priv); return ret; -- 2.11.0