get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

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