Received: by 10.213.65.68 with SMTP id h4csp1634304imn; Thu, 15 Mar 2018 05:33:33 -0700 (PDT) X-Google-Smtp-Source: AG47ELtHlhYlTmMv/5wgQeeW+9hTcuATWw4UKAPNH4MhXXG2dzm9LFvnv/7UtKPydnfcdn0+2fg6 X-Received: by 10.98.133.86 with SMTP id u83mr7613517pfd.172.1521117213221; Thu, 15 Mar 2018 05:33:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521117213; cv=none; d=google.com; s=arc-20160816; b=XxBHds4CJ3+0B0RiEqQBtpYZrig44PR4XrqyrHgpKWp9/Q1Gv8wmkcEFPvX5iZATZP hmbKjOq5fYUkANebCFDAxsGNqS3nmNiL0zUvR7cDawYF2DRtceaLuvqgSRygpErR2s6f wJs4Kp30UuYM1L3HyllGF1C1O5dlbill8Ma09R3wTbZRSOkBgimF1RDMsuym6WNvK5Qw w9MtHqIpd2H+LVLpVoFNy0sk54xTtbrtCmDDZbkiCLmbUjftDYEefjC6WUL8sfYS363v SEShcbYIpxmWy92mJD0gj4g6N00fHZIH/9XjTF596M+NZAD0bi/BeiQgWVL6uS+1GhOP f8YA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:references:cc:to:from:subject:dkim-signature :arc-authentication-results; bh=c6VOKOALNu2xYhjXMQNDfuo7sl9Rjzx9QsPKt34kpbI=; b=Xc7QG/hLAEvHyyMSnrkFvL+w3lqnXkWdyNZ8MfFkvzgeZZrZqEhsSQX2M0bP0/2osc pX7rPXO965PFTT7336l9fAX+f4tC+F/rViX6lW9/5VqnkSbe0bcr00JCPhiZAeTVS5jW wcRAuXMv/5e5WYi6lDmJVT+uvtX9RRyMvtCWVvhdDgBCpY30oskZTjXOQREiEOxZ2K7E ry0MPo3enT0r1jKon4WE1Tn+Q6IKghBeaBMa8Xe3WT0lft6SpN6h8SpEDuSoGTKtmaQR kgwQwUTj/HvRKXSlW+l3lZNsviAHVI77mpSbGQ/SZ9i/zxbodFDo6uEIRwmnFsIZDwwr UXFg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@dev-mellanox-co-il.20150623.gappssmtp.com header.s=20150623 header.b=HNTRdUPe; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mellanox.co.il Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j19-v6si3906420pll.34.2018.03.15.05.33.17; Thu, 15 Mar 2018 05:33:33 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@dev-mellanox-co-il.20150623.gappssmtp.com header.s=20150623 header.b=HNTRdUPe; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mellanox.co.il Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751693AbeCOMcG (ORCPT + 99 others); Thu, 15 Mar 2018 08:32:06 -0400 Received: from mail-qk0-f195.google.com ([209.85.220.195]:44160 "EHLO mail-qk0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751459AbeCOMcE (ORCPT ); Thu, 15 Mar 2018 08:32:04 -0400 Received: by mail-qk0-f195.google.com with SMTP id h14so1548949qkj.11 for ; Thu, 15 Mar 2018 05:32:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dev-mellanox-co-il.20150623.gappssmtp.com; s=20150623; h=subject:from:to:cc:references:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=c6VOKOALNu2xYhjXMQNDfuo7sl9Rjzx9QsPKt34kpbI=; b=HNTRdUPey3LXzDkMFRt0pQMx1jJMmqlUIOy1bRLFnxlklHPBAi2LMaSOmIi5/fpw5o BxdLktYm2+FyZaUqwpQ5mbJZJ3DhRv/S1grXsC+9+dEYe7ltSUY7/Gi/ovWXcI84v8of PgzRc1Ix7Dor12nVvxh54ffP3XHK36ljwwDzYTdSKsu8eCjM0ppvSCTqXg8dkhVNVLma gCmHN6XDiLKUvQLI3xN8GsHg3HdVLhS9mgF2uTeuxsnn4CYRe4J1TZ8QhvYrBQBoUb1t Oa7EFqkAeuNAQoLL5qCRn4AnuAu6T6YExGkgndIwzc4BuS4vOhGLa8P7d4hEZKjIlJCs iTfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:cc:references:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=c6VOKOALNu2xYhjXMQNDfuo7sl9Rjzx9QsPKt34kpbI=; b=m+aa4xLU9pgGOFslPCZZhgWJ7J2LNrviIXJEcdt/sJELTCbUk5ayRbYMIduhqOG6L+ Qj6aFFA/jrEME4QCBQ0c5vcHkOH9kd3M0TQJ0R5D4YEGGu5FAsWCijpj2aIRO546L9PE qIEmN3aznJwVhqbaMe4h6r7f3VYTKpDGnJr5YFtxbDN36Y/lRYXFmf3CJda2Uj0H+NJm IlXGhwTHDtmUFT58OoRaum4c7yWvZc7sIOqI7lbYCc5DdlAWrh/c3WoH5oCkVcQzOvu+ c4SQlQLaGDZAPxEEx4hya7cq7Cp/0ht6nQy4i8b9jGTkumjyQtwIl4n6zHZrDMD5INmO Bqow== X-Gm-Message-State: AElRT7Hl9vQH/khgQ3pYrAAmtYfLJtgjE4CFyJ2s3Q6kC82b/JVXJVya f09eiuuwTRu6vJZbAJ1x5Qa9rjWm X-Received: by 10.55.179.130 with SMTP id c124mr12085102qkf.193.1521117123429; Thu, 15 Mar 2018 05:32:03 -0700 (PDT) Received: from [192.168.1.183] (c-73-182-207-166.hsd1.ma.comcast.net. [73.182.207.166]) by smtp.googlemail.com with ESMTPSA id x28sm3860020qtx.20.2018.03.15.05.32.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 15 Mar 2018 05:32:02 -0700 (PDT) Subject: Re: [PATCH 2/2] IB/core: Set width to 1X for invalid active widths when port is down From: Hal Rosenstock To: Honggang LI , dledford@redhat.com, jgg@ziepe.ca, linux-rdma@vger.kernel.org Cc: noaos@mellanox.com, linux-kernel@vger.kernel.org References: <20180315090214.21706-1-honli@redhat.com> <20180315090214.21706-3-honli@redhat.com> <74460de7-9603-146b-28ec-2e16b8b5bb52@dev.mellanox.co.il> Message-ID: Date: Thu, 15 Mar 2018 08:32:02 -0400 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: <74460de7-9603-146b-28ec-2e16b8b5bb52@dev.mellanox.co.il> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 3/15/2018 8:01 AM, Hal Rosenstock wrote: > On 3/15/2018 5:02 AM, Honggang LI wrote: >> From: Honggang Li >> >> commit f1b65df5a232 ("IB/mlx5: Add support for active_width and >> active_speed in RoCE"). Before this patch applied, the mlx5_ib >> driver set default active_width and active_speed to IB_WIDTH_4X >> and IB_SPEED_QDR. >> >> When the RoCE port is down, the RoCE port did not negotiate the >> active width with remote side. The active width is zero. If run >> ibstat to require the port status, ibstat will panic as it read >> invalid width from sys file. >> >> Signed-off-by: Honggang Li >> --- >> drivers/infiniband/core/sysfs.c | 15 +++++++++++---- >> 1 file changed, 11 insertions(+), 4 deletions(-) >> >> diff --git a/drivers/infiniband/core/sysfs.c b/drivers/infiniband/core/sysfs.c >> index cf36ff1f0068..722e4571f4d2 100644 >> --- a/drivers/infiniband/core/sysfs.c >> +++ b/drivers/infiniband/core/sysfs.c >> @@ -240,6 +240,7 @@ static ssize_t rate_show(struct ib_port *p, struct port_attribute *unused, >> struct ib_port_attr attr; >> char *speed = ""; >> int rate; /* in deci-Gb/sec */ >> + int width; >> ssize_t ret; >> >> ret = ib_query_port(p->ibdev, p->port_num, &attr); >> @@ -278,13 +279,19 @@ static ssize_t rate_show(struct ib_port *p, struct port_attribute *unused, >> break; >> } >> >> - rate *= ib_width_enum_to_int(attr.active_width); >> - if (rate < 0) >> - return -EINVAL; >> + width = ib_width_enum_to_int(attr.active_width); >> + if (width < 0) { >> + if (attr.state != IB_PORT_ACTIVE) > > Link width is valid in any PortState other than Down so I think that > this check should be: > if (attr.state != IB_PORT_DOWN) > > However, I don't think overriding width should be needed for this case > and just returning -EINVAL should be fine regardless of port state. > AFAIK it's the driver responsibility to populate acceptable defaults for > such parameters. What driver(s) have this issue ? Shouldn't it be fixed > there rather than here ? I just noticed that you reference commit f1b65df5a232 ("IB/mlx5: Add support for active_width and active_speed in RoCE"). Before this patch applied, the mlx5_ib driver set default active_width and active_speed to IB_WIDTH_4X and IB_SPEED_QDR. Should the fix be to hw/mlx5/main.c:translate_eth_proto_oper which now has: switch (eth_proto_oper) { ... default: return -EINVAL; } return 0; and change default case to: *active_width = IB_WIDTH_1X; ? > -- Hal > >> + width = 1; /* default to 1X for invalid widths */ >> + else >> + return -EINVAL; >> + } >> + >> + rate *= width; >> >> return sprintf(buf, "%d%s Gb/sec (%dX%s)\n", >> rate / 10, rate % 10 ? ".5" : "", >> - ib_width_enum_to_int(attr.active_width), speed); >> + width, speed); >> } >> >> static ssize_t phys_state_show(struct ib_port *p, struct port_attribute *unused, >>