From patchwork Thu Apr 26 16:26:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrien Mazarguil X-Patchwork-Id: 39051 X-Patchwork-Delegate: shahafs@mellanox.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 2F1BBA491; Thu, 26 Apr 2018 18:26:33 +0200 (CEST) Received: from mail-wm0-f66.google.com (mail-wm0-f66.google.com [74.125.82.66]) by dpdk.org (Postfix) with ESMTP id 9E8FF8E76 for ; Thu, 26 Apr 2018 18:26:29 +0200 (CEST) Received: by mail-wm0-f66.google.com with SMTP id n10so14363330wmc.1 for ; Thu, 26 Apr 2018 09:26:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=45eU2J3zj8elNvDD0FkXQo2ZoUoYEQtLd2+FLd1xJrg=; b=uyIjOgaVVX8HCIpyH+DQBbONvgSezmaDJlsRfnuNfAbhQtOMcaiLjOc8AkjgcIA6Fx TtNLjIMg+G/ifJ2oi+FQHPQCdP9uh8JtSscpWTukMphRLI1rWINTfJ+wTXTHMgOP9eF0 rCHdebxl7Tk7mh7e+i0B7Z6ZqRkiW8ZDkp1MoFJfIRGasuejC+JLigdFUElxfCT0GY8n zD1siDO68KY+B1fNKZxDMAwnImgeir49yjxAZog//Y9iA3NOSKcFOqTqcJ1ieudkYfiY 6CzeTmWtNEIW9gazG5NOzMD9md83tf0VXBaXutZIM5jJJvx6wFOXHqQW/X8sBB3GG/v1 nKpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=45eU2J3zj8elNvDD0FkXQo2ZoUoYEQtLd2+FLd1xJrg=; b=dkZ6anBcgjgZYu182sp/KdRcBbOsvmthozRgGlmqDXeE/AzupEpYlgJH1dYrXT0tkE 8ZjvfHca4Cxyhj0g868ctjc/s7Bc5d4pcxVOvjoE0CDU3EhX1xS2SFgIkK9T06Xhy1qk i4yiglyjyaZSoTJgowfoj/5it2LbF+CsKGw4e3B1yxn2S465MQVP2dkwclqUhaN3Ih46 ztm7Qd8BWcv+FPjrBcMD5f/BpF1dx3HHdrJ51I/RhLix21mDOQ4lL496VFYzK8CJmfSr TfKaPGpLpe/IFZou5WRxa1jNs7Tbv2NFCQrHqv/4GwD0eSLdIsdNvgk+QJ/5OF/osq+6 TgRw== X-Gm-Message-State: ALQs6tBdog7aKCxgES7vrlgZtHLqFD3SRxaokOsRqrrww975dg0tAK9p dl/raeiEimEbhQxuRAdHRyJoGui4 X-Google-Smtp-Source: AIpwx4/tgEOHW50jpRiJLVKSCP9Jk3NdHMrGsd9cZP4cmH0FGctj+8VHh1HxyJOHPxXHmkBLx0OHMQ== X-Received: by 10.28.41.133 with SMTP id p127mr21380191wmp.0.1524759989361; Thu, 26 Apr 2018 09:26:29 -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 l37-v6sm4012705wrl.83.2018.04.26.09.26.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 26 Apr 2018 09:26:28 -0700 (PDT) Date: Thu, 26 Apr 2018 18:26:15 +0200 From: Adrien Mazarguil To: Shahaf Shuler Cc: Ferruh Yigit , dev@dpdk.org, stable@dpdk.org Message-ID: <20180426162142.6617-2-adrien.mazarguil@6wind.com> References: <20180425153739.9157-1-adrien.mazarguil@6wind.com> <20180426162142.6617-1-adrien.mazarguil@6wind.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20180426162142.6617-1-adrien.mazarguil@6wind.com> X-Mailer: git-send-email 2.11.0 Subject: [dpdk-dev] [PATCH v2 2/3] net/mlx4: fix default RSS hash fields 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" Using special types value -1 with mlx4_conv_rss_types() is supposed to return a supported set of Verbs RSS hash fields, that is, priv->hw_rss_sup unmodified. Due to the way this function is written and because it is also used to initially populate priv->hw_rss_sup however, this special value works properly only once and fails with ENOTSUP errors afterward. This problem can be seen when re-creating default flows (e.g. by entering and leaving isolated mode). Fixes: 024e87bef40b ("net/mlx4: restore UDP RSS by probing capabilities") Cc: stable@dpdk.org Signed-off-by: Adrien Mazarguil --- drivers/net/mlx4/mlx4.c | 15 +++++++-------- drivers/net/mlx4/mlx4_flow.c | 13 ++++--------- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c index 3dd72dbf5..4e472fa1d 100644 --- a/drivers/net/mlx4/mlx4.c +++ b/drivers/net/mlx4/mlx4.c @@ -569,14 +569,13 @@ mlx4_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev) if (!priv->hw_rss_sup) { WARN("no RSS capabilities reported; disabling support" " for UDP RSS and inner VXLAN RSS"); - /* Fake support for all possible RSS hash fields. */ - priv->hw_rss_sup = ~UINT64_C(0); - priv->hw_rss_sup = mlx4_conv_rss_types(priv, -1); - /* Filter out known unsupported fields. */ - priv->hw_rss_sup &= - ~(uint64_t)(IBV_RX_HASH_SRC_PORT_UDP | - IBV_RX_HASH_DST_PORT_UDP | - IBV_RX_HASH_INNER); + priv->hw_rss_sup = + IBV_RX_HASH_SRC_IPV4 | + IBV_RX_HASH_DST_IPV4 | + IBV_RX_HASH_SRC_IPV6 | + IBV_RX_HASH_DST_IPV6 | + IBV_RX_HASH_SRC_PORT_TCP | + IBV_RX_HASH_DST_PORT_TCP; } DEBUG("supported RSS hash fields mask: %016" PRIx64, priv->hw_rss_sup); diff --git a/drivers/net/mlx4/mlx4_flow.c b/drivers/net/mlx4/mlx4_flow.c index e3d7aa8ef..bebad074e 100644 --- a/drivers/net/mlx4/mlx4_flow.c +++ b/drivers/net/mlx4/mlx4_flow.c @@ -125,20 +125,15 @@ mlx4_conv_rss_types(struct priv *priv, uint64_t types) uint64_t conv = 0; unsigned int i; + if (types == (uint64_t)-1) + return priv->hw_rss_sup; for (i = 0; i != RTE_DIM(in); ++i) if (types & in[i]) { seen |= types & in[i]; conv |= out[i]; } - if ((conv & priv->hw_rss_sup) == conv) { - if (types == (uint64_t)-1) { - /* Include inner RSS by default if supported. */ - conv |= priv->hw_rss_sup & IBV_RX_HASH_INNER; - return conv; - } - if (!(types & ~seen)) - return conv; - } + if ((conv & priv->hw_rss_sup) == conv && !(types & ~seen)) + return conv; rte_errno = ENOTSUP; return (uint64_t)-1; }