From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 91BD6C43218 for ; Fri, 26 Apr 2019 02:32:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 656FE20685 for ; Fri, 26 Apr 2019 02:32:09 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="AlF/M2G0" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728183AbfDZCcI (ORCPT ); Thu, 25 Apr 2019 22:32:08 -0400 Received: from mail-pl1-f194.google.com ([209.85.214.194]:33878 "EHLO mail-pl1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727204AbfDZCcG (ORCPT ); Thu, 25 Apr 2019 22:32:06 -0400 Received: by mail-pl1-f194.google.com with SMTP id d5so171213plr.1 for ; Thu, 25 Apr 2019 19:32:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=P3csknu0i3fWvdeZXdVAMRnPgmBJL3eLdO4DeftRLY4=; b=AlF/M2G04b8DUd5Tl4TnYQAHtGyTKj17Qa5s5s2ofWpYS6d0v4dKQRSIPfqrkx7Kql D0AlxKZpSFUb2yjNbfmazFDdR4UAzh0vDqE8Tyy4+BcSnIyYqu53E+NCcWxIDou46+is AMHE88GZp47+fhNgxpUaBQpCzBMn2wJG7+TRw= 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; bh=P3csknu0i3fWvdeZXdVAMRnPgmBJL3eLdO4DeftRLY4=; b=SLwO05k1zPFQnRyVc1M3ZB0SbcL/6ICOfpa/2GuJ8Wzc84GuxfCWkC5m/heGja/PgJ MkXqYwNu5QKBhPMKdCt/lbFXdB+rFZb3xW2CIVzXeVK5TyOOX/+0ko6knYx8y7CA7jN+ mGinX0Qp0gIq1PhIgEV30hdjYk8nmDc/TV3wmP3iKli2/Tzl5prxrfrV3tZY/6eE1CX6 sEbDCwlH00L666PNUs7jFsU+MkpMBsyE7ZOr8d/gMfX+H+Qa09GpazcttAyiViNxtAgq 7CES0t2kqFjgqeZaa7w0DHcQpOW6cnG28qqEpD6b5VcrrEFLO4dCxO395+kV2oWrp+Mr 6isQ== X-Gm-Message-State: APjAAAXAsCzKdvm+BxNpTbJYnnym8puJSiuXj039QHXOIzIwXS3h3fK9 mcDpupQvFGfU3P25zzhSvyIn2v3BKWA= X-Google-Smtp-Source: APXvYqxMKavXWJ6U+FA/kacvZcooo/kIkoEKk8P7X2lXQxL32StDCTzAOqRD5qxIa9/Hi3fKAxO8fg== X-Received: by 2002:a17:902:bb84:: with SMTP id m4mr7391661pls.302.1556245926196; Thu, 25 Apr 2019 19:32:06 -0700 (PDT) Received: from localhost.localdomain.dhcp.broadcom.net ([192.19.223.250]) by smtp.gmail.com with ESMTPSA id n5sm25690368pgp.80.2019.04.25.19.32.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 25 Apr 2019 19:32:05 -0700 (PDT) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org Subject: [PATCH net 4/6] bnxt_en: Pass correct extended TX port statistics size to firmware. Date: Thu, 25 Apr 2019 22:31:53 -0400 Message-Id: <1556245915-5430-5-git-send-email-michael.chan@broadcom.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1556245915-5430-1-git-send-email-michael.chan@broadcom.com> References: <1556245915-5430-1-git-send-email-michael.chan@broadcom.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org If driver determines that extended TX port statistics are not supported or allocation of the data structure fails, make sure to pass 0 TX stats size to firmware to disable it. The firmware returned TX stats size should also be set to 0 for consistency. This will prevent bnxt_get_ethtool_stats() from accessing the NULL TX stats pointer in case there is mismatch between firmware and driver. Fixes: 36e53349b60b ("bnxt_en: Add additional extended port statistics.") Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index b03669f..a9172b2 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -6753,6 +6753,7 @@ static int bnxt_hwrm_port_qstats_ext(struct bnxt *bp) struct hwrm_queue_pri2cos_qcfg_input req2 = {0}; struct hwrm_port_qstats_ext_input req = {0}; struct bnxt_pf_info *pf = &bp->pf; + u32 tx_stat_size; int rc; if (!(bp->flags & BNXT_FLAG_PORT_STATS_EXT)) @@ -6762,13 +6763,16 @@ static int bnxt_hwrm_port_qstats_ext(struct bnxt *bp) req.port_id = cpu_to_le16(pf->port_id); req.rx_stat_size = cpu_to_le16(sizeof(struct rx_port_stats_ext)); req.rx_stat_host_addr = cpu_to_le64(bp->hw_rx_port_stats_ext_map); - req.tx_stat_size = cpu_to_le16(sizeof(struct tx_port_stats_ext)); + tx_stat_size = bp->hw_tx_port_stats_ext ? + sizeof(*bp->hw_tx_port_stats_ext) : 0; + req.tx_stat_size = cpu_to_le16(tx_stat_size); req.tx_stat_host_addr = cpu_to_le64(bp->hw_tx_port_stats_ext_map); mutex_lock(&bp->hwrm_cmd_lock); rc = _hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT); if (!rc) { bp->fw_rx_stats_ext_size = le16_to_cpu(resp->rx_stat_size) / 8; - bp->fw_tx_stats_ext_size = le16_to_cpu(resp->tx_stat_size) / 8; + bp->fw_tx_stats_ext_size = tx_stat_size ? + le16_to_cpu(resp->tx_stat_size) / 8 : 0; } else { bp->fw_rx_stats_ext_size = 0; bp->fw_tx_stats_ext_size = 0; -- 2.5.1