From patchwork Wed Apr 11 15:50:13 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 897249 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=broadcom.com header.i=@broadcom.com header.b="CSZjiFm/"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40LpR55fNGz9s35 for ; Thu, 12 Apr 2018 01:50:41 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753623AbeDKPui (ORCPT ); Wed, 11 Apr 2018 11:50:38 -0400 Received: from mail-pl0-f66.google.com ([209.85.160.66]:36157 "EHLO mail-pl0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753423AbeDKPug (ORCPT ); Wed, 11 Apr 2018 11:50:36 -0400 Received: by mail-pl0-f66.google.com with SMTP id 91-v6so1697745pld.3 for ; Wed, 11 Apr 2018 08:50:36 -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=kyVik2xo8c+Xt4rcKXllhOzXrzn4agboqGb/t85YmJM=; b=CSZjiFm/aR4BbrvhiFTrwc+USbmtDBwlDGJvza2Ji8LtCOgVS5vZPh6kW0GFX3AJhv q8LJlRc0j0PKz+srVTFFWmgr1jm3CFIhjwwrycWVFPGnDRc+MfjV6Va303oYhVPapFRr 6BVirzWlxbnImVQyIkvl5mllXZcxo5dmDY0oM= 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=kyVik2xo8c+Xt4rcKXllhOzXrzn4agboqGb/t85YmJM=; b=cNoavOCoxgXbNqsStdDjgwQUBfpH3yWpg/DxwARiH5GILCJOSCx+iRMIpnEMPAfyxu 5Xod/WFYqembJXQeQQGF71hhym2ImGSz81bE4UWsynV+pNlyF+2na8dCHX04nDHQRNy1 GBjgRloHgyQUXfbMwBWItfnz47pZEAIHYqLRmrB1nVJ8JduC8kUg7d25RF4kPIJr2fbM ppeUVumDPenBgwPlr4QTsfpbfGGXd1kVDE8Z1Z1stiS1O0aVXgfuGeNIbRdpV8r8fqcJ jq8stNIcYxxg5lSR59sFqLjOs7o+RLjviJwy8tTQT11luw+R0G+e3kpywfiE7f5APc5P pvNg== X-Gm-Message-State: ALQs6tCf1pCIZx5kCE4/CddRWrTkpssJr4g+vJ6FhuxwGnlPy/AhybvP g6tHwAn14TSzw/0QCL0zfF1SM8aAFZE= X-Google-Smtp-Source: AIpwx4+gtD8KPjHBe2qesBfQ3+N2JoNNjW+0df41yvbVv213M52QnMZZndiWbRf5A5MMc/nxRjfiSg== X-Received: by 2002:a17:902:6c07:: with SMTP id q7-v6mr5646921plk.67.1523461836046; Wed, 11 Apr 2018 08:50:36 -0700 (PDT) Received: from localhost.dhcp.broadcom.net ([192.19.223.250]) by smtp.gmail.com with ESMTPSA id b3sm3380872pfi.54.2018.04.11.08.50.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 11 Apr 2018 08:50:35 -0700 (PDT) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org Subject: [PATCH net v2 1/6] bnxt_en: Fix ethtool -x crash when device is down. Date: Wed, 11 Apr 2018 11:50:13 -0400 Message-Id: <1523461818-15774-2-git-send-email-michael.chan@broadcom.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1523461818-15774-1-git-send-email-michael.chan@broadcom.com> References: <1523461818-15774-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 Fix ethtool .get_rxfh() crash by checking for valid indirection table address before copying the data. Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c index 8d8ccd6..1f622ca 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c @@ -870,17 +870,22 @@ static int bnxt_get_rxfh(struct net_device *dev, u32 *indir, u8 *key, u8 *hfunc) { struct bnxt *bp = netdev_priv(dev); - struct bnxt_vnic_info *vnic = &bp->vnic_info[0]; + struct bnxt_vnic_info *vnic; int i = 0; if (hfunc) *hfunc = ETH_RSS_HASH_TOP; - if (indir) + if (!bp->vnic_info) + return 0; + + vnic = &bp->vnic_info[0]; + if (indir && vnic->rss_table) { for (i = 0; i < HW_HASH_INDEX_SIZE; i++) indir[i] = le16_to_cpu(vnic->rss_table[i]); + } - if (key) + if (key && vnic->rss_hash_key) memcpy(key, vnic->rss_hash_key, HW_HASH_KEY_SIZE); return 0; From patchwork Wed Apr 11 15:50:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 897254 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=broadcom.com header.i=@broadcom.com header.b="IAa04w9X"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40LpRv6g5wz9s0x for ; Thu, 12 Apr 2018 01:51:23 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753918AbeDKPvV (ORCPT ); Wed, 11 Apr 2018 11:51:21 -0400 Received: from mail-pl0-f49.google.com ([209.85.160.49]:45418 "EHLO mail-pl0-f49.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753268AbeDKPuh (ORCPT ); Wed, 11 Apr 2018 11:50:37 -0400 Received: by mail-pl0-f49.google.com with SMTP id e22-v6so1694872plj.12 for ; Wed, 11 Apr 2018 08:50:37 -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=KsfIokqYtPLLh6ZRJbmg+PumHg+Eh07j/LW/73H3FTE=; b=IAa04w9XOTT5wVSgdGkZA5sqX8WTQwBaeN+6Ve5VuxHa5EBYQ72C5svVRWmyHvZXF8 rposmj2mZDCymHI3Ph2/UroO12T8UWTvmEET5w8HnXkqO2dyomYSy/UVVfuZNhR4OhXJ u7EZkPljGCtl5rj5qtnArI6d3+Yateh7GAkO8= 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=KsfIokqYtPLLh6ZRJbmg+PumHg+Eh07j/LW/73H3FTE=; b=Hz+9scmBmSOkXF/Uyk42DDSyPfnMs6KtbupCMAOoOSyrl9AspHmIv7hXA7TWox08fZ 151tjVX6tN4/R/s/JPnVaEN8xqERCJhdZqZRTUBg8PbnAVrJ2s3fLMg+GfCXlpZT0CL5 LtP8iFQliZkS/1W227fbQtL8A83hRhyCa08f0y0bUNzCFXmeCnqGHWvgKp0PRDmSl9yb Hzg5fk9IwZaxYghPX7sgAbrRAoaEJEzKriBoI5cDHfgfEOENhtn5o7nAy8DmzUkpzD35 I0GkF4djS/Qee0TCaGPAH58JvRn0fJo6Hu3kBfWd3cuqi/Wm8X6Gw7hL8F+UgnqXZ2m6 YfOg== X-Gm-Message-State: ALQs6tCdHhCTYbXVzz/7//CyZea4o4ttggXkL2uHt5+yyu2whlLKkUTM OZo+2N9alK29OaJFAnklQxV+OW3fias= X-Google-Smtp-Source: AIpwx49Ji1sIDryXLvmNKj48nsfo5F2lnXt0UlDdSZdpV0pkInHUlVW7ymcDo6EYh5MIZiu+jqtXZA== X-Received: by 2002:a17:902:7405:: with SMTP id g5-v6mr5756732pll.4.1523461836964; Wed, 11 Apr 2018 08:50:36 -0700 (PDT) Received: from localhost.dhcp.broadcom.net ([192.19.223.250]) by smtp.gmail.com with ESMTPSA id b3sm3380872pfi.54.2018.04.11.08.50.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 11 Apr 2018 08:50:36 -0700 (PDT) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, Andy Gospodarek Subject: [PATCH net v2 2/6] bnxt_en: do not allow wildcard matches for L2 flows Date: Wed, 11 Apr 2018 11:50:14 -0400 Message-Id: <1523461818-15774-3-git-send-email-michael.chan@broadcom.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1523461818-15774-1-git-send-email-michael.chan@broadcom.com> References: <1523461818-15774-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 From: Andy Gospodarek Before this patch the following commands would succeed as far as the user was concerned: $ tc qdisc add dev p1p1 ingress $ tc filter add dev p1p1 parent ffff: protocol all \ flower skip_sw action drop $ tc filter add dev p1p1 parent ffff: protocol ipv4 \ flower skip_sw src_mac 00:02:00:00:00:01/44 action drop The current flow offload infrastructure used does not support wildcard matching for ethernet headers, so do not allow the second or third commands to succeed. If a user wants to drop traffic on that interface the protocol and MAC addresses need to be specified explicitly: $ tc qdisc add dev p1p1 ingress $ tc filter add dev p1p1 parent ffff: protocol arp \ flower skip_sw action drop $ tc filter add dev p1p1 parent ffff: protocol ipv4 \ flower skip_sw action drop ... $ tc filter add dev p1p1 parent ffff: protocol ipv4 \ flower skip_sw src_mac 00:02:00:00:00:01 action drop $ tc filter add dev p1p1 parent ffff: protocol ipv4 \ flower skip_sw src_mac 00:02:00:00:00:02 action drop ... There are also checks for VLAN parameters in this patch as other callers may wildcard those parameters even if tc does not. Using different flow infrastructure could allow this to work in the future for L2 flows, but for now it does not. Fixes: 2ae7408fedfe ("bnxt_en: bnxt: add TC flower filter offload support") Signed-off-by: Andy Gospodarek Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c | 59 ++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c index 65c2cee..ac193408 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c @@ -377,6 +377,30 @@ static bool is_wildcard(void *mask, int len) return true; } +static bool is_exactmatch(void *mask, int len) +{ + const u8 *p = mask; + int i; + + for (i = 0; i < len; i++) + if (p[i] != 0xff) + return false; + + return true; +} + +static bool bits_set(void *key, int len) +{ + const u8 *p = key; + int i; + + for (i = 0; i < len; i++) + if (p[i] != 0) + return true; + + return false; +} + static int bnxt_hwrm_cfa_flow_alloc(struct bnxt *bp, struct bnxt_tc_flow *flow, __le16 ref_flow_handle, __le32 tunnel_handle, __le16 *flow_handle) @@ -764,6 +788,41 @@ static bool bnxt_tc_can_offload(struct bnxt *bp, struct bnxt_tc_flow *flow) return false; } + /* Currently source/dest MAC cannot be partial wildcard */ + if (bits_set(&flow->l2_key.smac, sizeof(flow->l2_key.smac)) && + !is_exactmatch(flow->l2_mask.smac, sizeof(flow->l2_mask.smac))) { + netdev_info(bp->dev, "Wildcard match unsupported for Source MAC\n"); + return false; + } + if (bits_set(&flow->l2_key.dmac, sizeof(flow->l2_key.dmac)) && + !is_exactmatch(&flow->l2_mask.dmac, sizeof(flow->l2_mask.dmac))) { + netdev_info(bp->dev, "Wildcard match unsupported for Dest MAC\n"); + return false; + } + + /* Currently VLAN fields cannot be partial wildcard */ + if (bits_set(&flow->l2_key.inner_vlan_tci, + sizeof(flow->l2_key.inner_vlan_tci)) && + !is_exactmatch(&flow->l2_mask.inner_vlan_tci, + sizeof(flow->l2_mask.inner_vlan_tci))) { + netdev_info(bp->dev, "Wildcard match unsupported for VLAN TCI\n"); + return false; + } + if (bits_set(&flow->l2_key.inner_vlan_tpid, + sizeof(flow->l2_key.inner_vlan_tpid)) && + !is_exactmatch(&flow->l2_mask.inner_vlan_tpid, + sizeof(flow->l2_mask.inner_vlan_tpid))) { + netdev_info(bp->dev, "Wildcard match unsupported for VLAN TPID\n"); + return false; + } + + /* Currently Ethertype must be set */ + if (!is_exactmatch(&flow->l2_mask.ether_type, + sizeof(flow->l2_mask.ether_type))) { + netdev_info(bp->dev, "Wildcard match unsupported for Ethertype\n"); + return false; + } + return true; } From patchwork Wed Apr 11 15:50:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 897250 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=broadcom.com header.i=@broadcom.com header.b="WFI5p07U"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40LpR76FlHz9s35 for ; Thu, 12 Apr 2018 01:50:43 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753679AbeDKPuk (ORCPT ); Wed, 11 Apr 2018 11:50:40 -0400 Received: from mail-pl0-f68.google.com ([209.85.160.68]:39920 "EHLO mail-pl0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753463AbeDKPui (ORCPT ); Wed, 11 Apr 2018 11:50:38 -0400 Received: by mail-pl0-f68.google.com with SMTP id e7-v6so1697582plt.6 for ; Wed, 11 Apr 2018 08:50:38 -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=d4a5/w1/tiZTlK0mNrHOVA97mPzVx6OAxmgIzTyOGIg=; b=WFI5p07UdqH5DHFSceNdJhRuQlVoHuKKCs8jZME3D7vS3BZ/VFRSKUl5YXcYMO72Qj FQc0tGuXugr66xmrq+UHh7xEax4/OBa0QeCNIwjGVGid354CFeZxRRHDwWDqpKYPE761 3AZl5hZybUeHtVomtDv6Ch3tXJ9iYDjw5rb/U= 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=d4a5/w1/tiZTlK0mNrHOVA97mPzVx6OAxmgIzTyOGIg=; b=ALg9z0x5gFceT6tuCDR4f35a7L3UIuarz+XNnbF+p5lLJSBWCAM/soAmbRFYAzIx5F xGvSsDee01myMYl0N0wtl1t6jz5tr3EfOUTSCzVjKOaiZzTTrqzbqL/0cu9+FupVQ9Ei HOAoa8Cq71ju2+MxEZk7P7BkXta7yYf9WEKJeC+RM5WXjeYmfGluVY5CIIKIy11+ZJZg oLbhJ/gGhDYmUmXf8vNNlyAtCDCsc7NwiK6kdw9e2JmnNiaeonzKwU9cdFstNSifaK7k Y30LQkPzL37Z8Ly5BIeedEq//zoBDQU/eVJKAjRT1dMfPvAv5hNs9n86U8L40Wm009Xz +c9g== X-Gm-Message-State: ALQs6tDScLvBZkcr6vK3n9t3biuMn8jqY1LUNvneOmKZ/D9VVlcLWENl 4tVyKW9tnHezsUVrxDXse7mlhi6UpJc= X-Google-Smtp-Source: AIpwx491lCW2DDyRcw0X9sRtoIeCgOV4dSfrgRE13oUb3ZxFlNsxHeJAVedWf4WLLPF/USCB+o4myA== X-Received: by 2002:a17:902:108a:: with SMTP id c10-v6mr5730385pla.22.1523461837947; Wed, 11 Apr 2018 08:50:37 -0700 (PDT) Received: from localhost.dhcp.broadcom.net ([192.19.223.250]) by smtp.gmail.com with ESMTPSA id b3sm3380872pfi.54.2018.04.11.08.50.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 11 Apr 2018 08:50:37 -0700 (PDT) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, Sriharsha Basavapatna Subject: [PATCH net v2 3/6] bnxt_en: Ignore src port field in decap filter nodes Date: Wed, 11 Apr 2018 11:50:15 -0400 Message-Id: <1523461818-15774-4-git-send-email-michael.chan@broadcom.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1523461818-15774-1-git-send-email-michael.chan@broadcom.com> References: <1523461818-15774-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 From: Sriharsha Basavapatna The driver currently uses src port field (along with other fields) in the decap tunnel key, while looking up and adding tunnel nodes. This leads to redundant cfa_decap_filter_alloc() requests to the FW and flow-miss in the flow engine. Fix this by ignoring the src port field in decap tunnel nodes. Fixes: f484f6782e01 ("bnxt_en: add hwrm FW cmds for cfa_encap_record and decap_filter") Signed-off-by: Sriharsha Basavapatna Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c index ac193408..795f450 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c @@ -1051,8 +1051,10 @@ static int bnxt_tc_get_decap_handle(struct bnxt *bp, struct bnxt_tc_flow *flow, /* Check if there's another flow using the same tunnel decap. * If not, add this tunnel to the table and resolve the other - * tunnel header fileds + * tunnel header fileds. Ignore src_port in the tunnel_key, + * since it is not required for decap filters. */ + decap_key->tp_src = 0; decap_node = bnxt_tc_get_tunnel_node(bp, &tc_info->decap_table, &tc_info->decap_ht_params, decap_key); From patchwork Wed Apr 11 15:50:16 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 897253 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=broadcom.com header.i=@broadcom.com header.b="ADorN9oC"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40LpRN4qHVz9s0x for ; Thu, 12 Apr 2018 01:50:56 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753826AbeDKPuy (ORCPT ); Wed, 11 Apr 2018 11:50:54 -0400 Received: from mail-pl0-f66.google.com ([209.85.160.66]:41878 "EHLO mail-pl0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753423AbeDKPuj (ORCPT ); Wed, 11 Apr 2018 11:50:39 -0400 Received: by mail-pl0-f66.google.com with SMTP id bj1-v6so1692373plb.8 for ; Wed, 11 Apr 2018 08:50:39 -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=6vKrk4u8kuH3YUhceyyAUBwpkkTZV3L0ec0dczOzwM8=; b=ADorN9oCGEwhBhMSHgXkECjWFSR9oWWlqir/11JbNbbMJy0aLTKLecc6EojPo5X37t Uf2mKbkzBPaPTWJquGzwlZ5bE21mxFjbemAdpvS8X5nwulUu6P7+CmMT29g5FPG9j4x+ bVQY9ZZ7nGJBwQWsWb+7Z+L/jxt6S/mW60MwY= 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=6vKrk4u8kuH3YUhceyyAUBwpkkTZV3L0ec0dczOzwM8=; b=EwzA5rcAjxmA7Ic1Qy0fv1y1ECm79+lgWftCg1RDNI9Kmm9kuzVIa7J5Kmg6DTiWTw AXkYc5ZJOJJB7XQVqHYVzS4D3+vUBotuEkKm9Bo9NJmEl8omClIALyoolEf3AXqeSqZ9 onzTlZiW9qtvIm7fGpjiesOg+CgLWy5BD3DKOuwu/e/QnzNaZcc11gIvgbYuvXVo/AJo ArHTM8YOahRIEXIyhptam7eFZKd0ANA6GgNbo4NBoWQJsZ85l++WM12eT2YgfNsTlq0J WzlcuXvnxYiH6mWdNu30jem3q6iefQqGQkKpO+uECDIFl6MUjxDP7IDarWLUb5nk8UA8 J8fw== X-Gm-Message-State: ALQs6tCnToQtQaCgc2OZHUTX7Kgf4aEj58r+KWcjYp/Dbyw/W/BVPrz6 ZoFtZAhvlQBu73Ne8vDql8qmlQ== X-Google-Smtp-Source: AIpwx4+3K0F2dx3ZThsmqyJseEF428UPBSQlAR/sEm6+prU8TL0UuXMRWA8sl5HXKPIgZfUJ4Gp6HA== X-Received: by 2002:a17:902:d685:: with SMTP id v5-v6mr5625036ply.284.1523461838915; Wed, 11 Apr 2018 08:50:38 -0700 (PDT) Received: from localhost.dhcp.broadcom.net ([192.19.223.250]) by smtp.gmail.com with ESMTPSA id b3sm3380872pfi.54.2018.04.11.08.50.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 11 Apr 2018 08:50:38 -0700 (PDT) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, Sriharsha Basavapatna Subject: [PATCH net v2 4/6] bnxt_en: Support max-mtu with VF-reps Date: Wed, 11 Apr 2018 11:50:16 -0400 Message-Id: <1523461818-15774-5-git-send-email-michael.chan@broadcom.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1523461818-15774-1-git-send-email-michael.chan@broadcom.com> References: <1523461818-15774-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 From: Sriharsha Basavapatna While a VF is configured with a bigger mtu (> 1500), any packets that are punted to the VF-rep (slow-path) get dropped by OVS kernel-datapath with the following message: "dropped over-mtu packet". Fix this by returning the max-mtu value for a VF-rep derived from its corresponding VF. VF-rep's mtu can be changed using 'ip' command as shown in this example: $ ip link set bnxt0_pf0vf0 mtu 9000 Signed-off-by: Sriharsha Basavapatna Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt_vfr.c | 30 +++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_vfr.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_vfr.c index 2629040..38f635c 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_vfr.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_vfr.c @@ -64,6 +64,31 @@ static int hwrm_cfa_vfr_free(struct bnxt *bp, u16 vf_idx) return rc; } +static int bnxt_hwrm_vfr_qcfg(struct bnxt *bp, struct bnxt_vf_rep *vf_rep, + u16 *max_mtu) +{ + struct hwrm_func_qcfg_output *resp = bp->hwrm_cmd_resp_addr; + struct hwrm_func_qcfg_input req = {0}; + u16 mtu; + int rc; + + bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_FUNC_QCFG, -1, -1); + req.fid = cpu_to_le16(bp->pf.vf[vf_rep->vf_idx].fw_fid); + + mutex_lock(&bp->hwrm_cmd_lock); + + rc = _hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT); + if (!rc) { + mtu = le16_to_cpu(resp->max_mtu_configured); + if (!mtu) + *max_mtu = BNXT_MAX_MTU; + else + *max_mtu = mtu; + } + mutex_unlock(&bp->hwrm_cmd_lock); + return rc; +} + static int bnxt_vf_rep_open(struct net_device *dev) { struct bnxt_vf_rep *vf_rep = netdev_priv(dev); @@ -365,6 +390,7 @@ static void bnxt_vf_rep_netdev_init(struct bnxt *bp, struct bnxt_vf_rep *vf_rep, struct net_device *dev) { struct net_device *pf_dev = bp->dev; + u16 max_mtu; dev->netdev_ops = &bnxt_vf_rep_netdev_ops; dev->ethtool_ops = &bnxt_vf_rep_ethtool_ops; @@ -380,6 +406,10 @@ static void bnxt_vf_rep_netdev_init(struct bnxt *bp, struct bnxt_vf_rep *vf_rep, bnxt_vf_rep_eth_addr_gen(bp->pf.mac_addr, vf_rep->vf_idx, dev->perm_addr); ether_addr_copy(dev->dev_addr, dev->perm_addr); + /* Set VF-Rep's max-mtu to the corresponding VF's max-mtu */ + if (!bnxt_hwrm_vfr_qcfg(bp, vf_rep, &max_mtu)) + dev->max_mtu = max_mtu; + dev->min_mtu = ETH_ZLEN; } static int bnxt_pcie_dsn_get(struct bnxt *bp, u8 dsn[]) From patchwork Wed Apr 11 15:50:17 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 897252 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=broadcom.com header.i=@broadcom.com header.b="L5GzWzQ7"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40LpRB4DK9z9s0x for ; Thu, 12 Apr 2018 01:50:46 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753786AbeDKPun (ORCPT ); Wed, 11 Apr 2018 11:50:43 -0400 Received: from mail-pg0-f66.google.com ([74.125.83.66]:41432 "EHLO mail-pg0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753651AbeDKPuk (ORCPT ); Wed, 11 Apr 2018 11:50:40 -0400 Received: by mail-pg0-f66.google.com with SMTP id e2so939999pgv.8 for ; Wed, 11 Apr 2018 08:50:40 -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=FKDFPfQKEEzQWAuX9BFXse2QVBSg/UzP//8kc3cXoDU=; b=L5GzWzQ7ebmxvTq/2Hba6iK1GjWJH7HjS+38N9SmQKdb8TmEgI0w7+BdxhzlfYFI3Z 8/49RV/TUkOXKplVmYwyhxUvogU2f0k4EXWaicDzWKz7WHNghitrqfebeGXpZtveNg5E bctjVnI6L7MjfFUGSCFRzlG1Bj6oeN5ITQUXc= 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=FKDFPfQKEEzQWAuX9BFXse2QVBSg/UzP//8kc3cXoDU=; b=a18/qq1r+vQ03MOsy+FVMuZ1blNg8JHMeI+931tqlAOY80wzLmDNMhwvZcF4+3A27x L+19MCQEKIH+mJsLqaYxoX23Z1DONhp6piKaF1nKI2q/tzA49swllN4VGBjFfZtaWxuE uULUyYo9V504G+srSuoxkZS5nlk4z+hKLmTEvKPb6C44/g9ufy9RVwgw2drEyEM+idnI w+9ZciR+eQr5wHA6z/spKtO3JjgmfWY1VZ2TPceQEULrZyDhiX/WrZYglchVGVSwptWE ivXWe9ns4KMBnyXL0biLD4nbWPgyazDFEhCpl8NnY2PaFKrN1d34zWZ6mOyMkNZnnVIt DdFg== X-Gm-Message-State: ALQs6tAsUY3UZn3RyCigqENNrZIk8yp5jTWjE/9gwlyyFWp3tt7hV2SC +qwsWdQ8O3lgBwAM9UkOeokMX3pge1w= X-Google-Smtp-Source: AIpwx4+L18FS/mU8Fs6Vi1p0IqTlPFjxCj6ddh2d5an5uGbwzCFUWq7Y4LGhgNLhTrhT7m+iIRbbGg== X-Received: by 10.99.117.79 with SMTP id f15mr3935564pgn.47.1523461839761; Wed, 11 Apr 2018 08:50:39 -0700 (PDT) Received: from localhost.dhcp.broadcom.net ([192.19.223.250]) by smtp.gmail.com with ESMTPSA id b3sm3380872pfi.54.2018.04.11.08.50.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 11 Apr 2018 08:50:39 -0700 (PDT) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org Subject: [PATCH net v2 5/6] bnxt_en: Need to include RDMA rings in bnxt_check_rings(). Date: Wed, 11 Apr 2018 11:50:17 -0400 Message-Id: <1523461818-15774-6-git-send-email-michael.chan@broadcom.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1523461818-15774-1-git-send-email-michael.chan@broadcom.com> References: <1523461818-15774-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 With recent changes to reserve both L2 and RDMA rings, we need to include the RDMA rings in bnxt_check_rings(). Otherwise we will under-estimate the rings we need during ethtool -L and may lead to failure. Fixes: fbcfc8e46741 ("bnxt_en: Reserve completion rings and MSIX for bnxt_re RDMA driver.") Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 1991f0c..9cb8b4b 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -7686,6 +7686,8 @@ int bnxt_check_rings(struct bnxt *bp, int tx, int rx, bool sh, int tcs, if (bp->flags & BNXT_FLAG_AGG_RINGS) rx_rings <<= 1; cp = sh ? max_t(int, tx_rings_needed, rx) : tx_rings_needed + rx; + if (bp->flags & BNXT_FLAG_NEW_RM) + cp += bnxt_get_ulp_msix_num(bp); return bnxt_hwrm_check_rings(bp, tx_rings_needed, rx_rings, rx, cp, vnics); } From patchwork Wed Apr 11 15:50:18 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 897251 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=broadcom.com header.i=@broadcom.com header.b="Y3dOfP95"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40LpR91G8xz9s0x for ; Thu, 12 Apr 2018 01:50:45 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753751AbeDKPum (ORCPT ); Wed, 11 Apr 2018 11:50:42 -0400 Received: from mail-pg0-f66.google.com ([74.125.83.66]:37933 "EHLO mail-pg0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753463AbeDKPul (ORCPT ); Wed, 11 Apr 2018 11:50:41 -0400 Received: by mail-pg0-f66.google.com with SMTP id f4so943124pgs.5 for ; Wed, 11 Apr 2018 08:50:41 -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=Z3wwB6oB00LPWP/LrvbbPnGixU/vp8jHPzvtho7bjCo=; b=Y3dOfP95djo50uNnd4RGqWf8MoIKDMXA5ug79IhD3Y4UDImDGEFE4LDL/d3OPLXlQq n+WH0aYWvAzMDVkaqB8c0hAjWGjjJJp8TxJthqlHwX3jv84Uw5HGmnIyaSUhTUKIPm3W OoOJJcbuvegzeAiRyLfFG3l/PaQ5T99qPBB58= 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=Z3wwB6oB00LPWP/LrvbbPnGixU/vp8jHPzvtho7bjCo=; b=QBEZYFQmNzcVHExA5PorQoIdb2PJ45SJrDC0G4qK0u2XKI88LyTN5u3mds67MOgjgr MOOGST75X9xGWRlurlaZdyMX8ve45zqQPh4oKlIzHg/YXhzjFgmxgmiy2pxsRA7yO8aq d0fUzXiAsHOsZrPY1Y6irhcA7pSXNvyDz43gptq1MygvVBC3JZdq98hvatAsebVR+sbV LSQ6bcogJBrLgo4WYzTh+KntD4ILrSI47xCfN9VqV3lZB5v4uh70zKDnDSSEEDRIWkuY MGivrQBRh0OgcqfnVaVVzXLWsAXc9tT5sjeOnnvifEjO9fFy8p0a7GGvTw0eWsamNR2V zQMw== X-Gm-Message-State: ALQs6tBM2XGxIRerns/4Dq7fIthaiaPvo6c05aF1MSXPu9lx0DLIGeVN MfqexBvHfMZO5Z4ZRwKKBfWklA== X-Google-Smtp-Source: AIpwx48/N5czF9Rj5MPTVmibWmCbVLJ7Nygs3ero5XLGOlaGApEk5wGsSZHt+imwhJopzkG3kWg2Fg== X-Received: by 10.99.117.84 with SMTP id f20mr3846630pgn.188.1523461840599; Wed, 11 Apr 2018 08:50:40 -0700 (PDT) Received: from localhost.dhcp.broadcom.net ([192.19.223.250]) by smtp.gmail.com with ESMTPSA id b3sm3380872pfi.54.2018.04.11.08.50.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 11 Apr 2018 08:50:40 -0700 (PDT) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org Subject: [PATCH net v2 6/6] bnxt_en: Fix NULL pointer dereference at bnxt_free_irq(). Date: Wed, 11 Apr 2018 11:50:18 -0400 Message-Id: <1523461818-15774-7-git-send-email-michael.chan@broadcom.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1523461818-15774-1-git-send-email-michael.chan@broadcom.com> References: <1523461818-15774-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 When open fails during ethtool -L ring change, for example, the driver may crash at bnxt_free_irq() because bp->bnapi is NULL. If we fail to allocate all the new rings, bnxt_open_nic() will free all the memory including bp->bnapi. Subsequent call to bnxt_close_nic() will try to dereference bp->bnapi in bnxt_free_irq(). Fix it by checking for !bp->bnapi in bnxt_free_irq(). Fixes: e5811b8c09df ("bnxt_en: Add IRQ remapping logic.") Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 9cb8b4b..f83769d 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -6090,7 +6090,7 @@ static void bnxt_free_irq(struct bnxt *bp) free_irq_cpu_rmap(bp->dev->rx_cpu_rmap); bp->dev->rx_cpu_rmap = NULL; #endif - if (!bp->irq_tbl) + if (!bp->irq_tbl || !bp->bnapi) return; for (i = 0; i < bp->cp_nr_rings; i++) {