From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f67.google.com (mail-wm0-f67.google.com [74.125.82.67]) by dpdk.org (Postfix) with ESMTP id 7186E1B3D1 for ; Mon, 23 Oct 2017 11:45:20 +0200 (CEST) Received: by mail-wm0-f67.google.com with SMTP id b189so8239533wmd.4 for ; Mon, 23 Oct 2017 02:45:20 -0700 (PDT) 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=EYWJgBYIvt/5gEptAs7TCn5yUTF/Jlom899zVeedIsI=; b=y0WZamUA3v5hpuciM5PqLHqoO5ER/HmJjT0+O922kKzMcJbQdTXHFoyv3Ee5W8bNp5 mV9Hs75WWuZlboI9XfsD+KwYcQHnjxCouZy+Iy8qhWu0xOS8eGkXfjHYlzfeHkV1CD19 ULHa2qOqKqiiulk5rbzD92kORAmJS2So8psRGmiFLqo3shH52iuYbVJngWv8KE44JXLw 4JbccNXZkm8nCeHu/VlzEEY6eIwG02wXScaAGPib/PciJ5JXBIfMDXR1bIxzvmMC0syc PnQUej/sRIV0Zyhma7brkmX6vSj0kxDclWSV9rygaEarIjnQH2qnRtH9Nd8ctq4WwlA1 /YeA== 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=EYWJgBYIvt/5gEptAs7TCn5yUTF/Jlom899zVeedIsI=; b=QaX9qUWCU6NUrYHaYhB6OnpwsIvOvI9OhrnWSXX2Z2/UbKeMXkfm7k7H4mPMfiUCe1 4sTssiU4CF6jaiMUpYFyXRvcN6cc0TDep1TBerHehP6f/5+A09Dc50gd/mrHXuJHk32N EDeX+FgwU0KmY1mL+yxWvj90wwySm1Vq/Rsh3ejf6H0LBIaRD4cLaOAmLXW4lp6pX9SY pGZt1qGtp85xb57LviVFdXXmrTD2j/yp+i5IxbDIf9j89zQ4DcSDfER7JjtGFotVgmxW y8MFJRC86mzhaf/Fxd7kPKu7kIkENxQkbqu7/iJ7ofbSmZ/48EvmBUwPYp6NhJHzPEA4 r2Ow== X-Gm-Message-State: AMCzsaUK/7UdC21r5cGIi1ABad37Uk9S8CfeGHrsIYg14+F7ogltRB0w HMvL5w9iyjU/VPsO4OUB3S5AYz7ygg== X-Google-Smtp-Source: ABhQp+QGpD086xX6zBU4FLdTnRANHNyeNjXoFZOFtTWgNrL+BdYoi0STR8W9OcuL+F7oA0zu5h9ZwA== X-Received: by 10.28.93.200 with SMTP id r191mr5252604wmb.19.1508751919779; Mon, 23 Oct 2017 02:45:19 -0700 (PDT) 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 x189sm2829610wmf.10.2017.10.23.02.45.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 23 Oct 2017 02:45:19 -0700 (PDT) From: Nelio Laranjeiro To: dev@dpdk.org Cc: Yongseok Koh , Adrien Mazarguil Date: Mon, 23 Oct 2017 11:45:01 +0200 Message-Id: X-Mailer: git-send-email 2.11.0 In-Reply-To: References: In-Reply-To: References: Subject: [dpdk-dev] [PATCH 3/3] net/mlx5: fix RSS hash update 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: Mon, 23 Oct 2017 09:45:20 -0000 Few bugs fixes in both configuration get and hash update where inputs are not handled as expected by the ethdev layer. RSS structure may not be totally usable, the PMD should try to take as most information from it has it can when it is an hash update or it should try to fill as most as possible in the configuration get. This means that in the RSS configuration structure, the memory space for the RSS hash key may not be present, but the PMD should consider the hash field valid and process/set it. Signed-off-by: Nelio Laranjeiro --- drivers/net/mlx5/mlx5_rss.c | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/drivers/net/mlx5/mlx5_rss.c b/drivers/net/mlx5/mlx5_rss.c index ad6d9ab70..f3de46de0 100644 --- a/drivers/net/mlx5/mlx5_rss.c +++ b/drivers/net/mlx5/mlx5_rss.c @@ -72,14 +72,14 @@ mlx5_rss_hash_update(struct rte_eth_dev *dev, int ret = 0; priv_lock(priv); - if (rss_conf->rss_key_len) { + if (rss_conf->rss_key && rss_conf->rss_key_len) { priv->rss_conf.rss_key = rte_realloc(priv->rss_conf.rss_key, rss_conf->rss_key_len, 0); if (!priv->rss_conf.rss_key) { ret = -ENOMEM; goto out; } - memcpy(&priv->rss_conf.rss_key, rss_conf->rss_key, + memcpy(priv->rss_conf.rss_key, rss_conf->rss_key, rss_conf->rss_key_len); priv->rss_conf.rss_key_len = rss_conf->rss_key_len; } @@ -105,22 +105,19 @@ mlx5_rss_hash_conf_get(struct rte_eth_dev *dev, struct rte_eth_rss_conf *rss_conf) { struct priv *priv = dev->data->dev_private; - int ret = 0; + if (!rss_conf) + return -EINVAL; priv_lock(priv); - if (!rss_conf->rss_key) { - ret = -ENOMEM; - goto out; - } - if (rss_conf->rss_key_len < priv->rss_conf.rss_key_len) { - ret = -EINVAL; - goto out; + if (rss_conf->rss_key && + (rss_conf->rss_key_len >= priv->rss_conf.rss_key_len)) { + memcpy(rss_conf->rss_key, priv->rss_conf.rss_key, + priv->rss_conf.rss_key_len); } - memcpy(rss_conf->rss_key, priv->rss_conf.rss_key, - priv->rss_conf.rss_key_len); -out: + rss_conf->rss_key_len = priv->rss_conf.rss_key_len; + rss_conf->rss_hf = priv->rss_conf.rss_hf; priv_unlock(priv); - return ret; + return 0; } /** -- 2.11.0