From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr0-f196.google.com (mail-wr0-f196.google.com [209.85.128.196]) by dpdk.org (Postfix) with ESMTP id 7A6E11B5F7 for ; Mon, 23 Oct 2017 13:18:17 +0200 (CEST) Received: by mail-wr0-f196.google.com with SMTP id l1so16973494wrc.3 for ; Mon, 23 Oct 2017 04:18:17 -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=jHOFbJir1lCOpqOWixiX4pBkrO66/DJFmbF2nAEx3u4=; b=Js2jLAr3MbvhPKgoZVY1dTPmMa0P2mrODta2u8O0HAX9fCUYTEFYkmtiFOottOJzD5 KMmFa0JkdFmUvq767UqW7OJZMK45Zp50+3GQMrPnselGsCC7q/9rk1fHwQKsPGI+OSX2 HaK/2dI/1VOTdxs2TG8usvl6t+EBIztXzvQav4yNgkQ56UIG2v6T7URpG/Qe5ak1SDXA IzZAL2o2M5SK5ssi3S61fkPjpXb045hEMmth0hP80VfmRTHY9D4Qpfgq2T6Spvb2ucZX y2s4aFg2YTmx56r5TT0WzCTGWE2jDNHLL5Giw1vPOe7I8LSs5HkIL294n3+m6HMCyaSS vyOg== 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=jHOFbJir1lCOpqOWixiX4pBkrO66/DJFmbF2nAEx3u4=; b=QqRQUbdfYIOT9i/EuR3aCn0dsVE3wPdLojUeBBFt4zUlpLdxQb2/eW76kCHfeEL3AX rLSren+7aAi3SOlzC0Yit/TcrCfN8LyP9fOzgK0Ds60sFvBKnShoXYTKzfk1AFKqP1K8 NEjXm1o7jeoXq1fSDeTD1exwddOcKTDTPeFkFHqPsrV+VLIddM1wa7znknQzaqPsyKRW euzlYzSHK8LyBjveJJmcMa5XWgpRKdSD0tqNvl9en/dg/N9qXZWhSR1kt73fYowDs49x wGbmictEBOnSOL1DTWBqSnBX2wSVOWbdXbaPLTgLXWVcDpfErPCRGK4hRv94WsOomKys luFg== X-Gm-Message-State: AMCzsaXk9JjlKbzuBd+Y3XyMLzhr6lxJU3p75LFq5kekbKCXHTdZyAZ1 mKjzyc3m7g5pegLLYPMqo28mx5OXXA== X-Google-Smtp-Source: ABhQp+SGs7aaWylR4T4R1cLLgcb+w6nIia0DUIhkwRfpNZMFxb9raH3NBAnDQ/ynzuaksjHIHSaFzQ== X-Received: by 10.223.131.226 with SMTP id 89mr11636343wre.227.1508757496900; Mon, 23 Oct 2017 04:18:16 -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 v5sm4975463wrf.29.2017.10.23.04.18.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 23 Oct 2017 04:18:16 -0700 (PDT) From: Nelio Laranjeiro To: dev@dpdk.org Cc: Yongseok Koh , Adrien Mazarguil Date: Mon, 23 Oct 2017 13:17:57 +0200 Message-Id: <120a5c8345cac22559f0bc95f9f256dae4664b4b.1508757360.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 v3 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 11:18:17 -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. Fixes: 29c1d8bb3e79 ("net/mlx5: handle a single RSS hash key for all protocols") 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