Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp1762163ybb; Thu, 2 Apr 2020 06:58:08 -0700 (PDT) X-Google-Smtp-Source: APiQypIlE7C4IN47Bdo3xG6lLWoh4CQdrAJDO4wlgnjPDYn9ki64sH3aBd/h1YDJdkibxWQBXTJ4 X-Received: by 2002:a05:6830:314e:: with SMTP id c14mr2540257ots.7.1585835888411; Thu, 02 Apr 2020 06:58:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585835888; cv=none; d=google.com; s=arc-20160816; b=rVHFCQ3NTnfR1tEKveTuqp0AG9nIg+fCofWS1cb6C7ZxVuHq4aYq9b1b5kYx7QlwK/ 7er58GU9egkiKntN5Duu1F12NKYQGvuK58RnEyQ6yI9PUyylLooh/xHTGfld2XxNkr7+ nc741XqxWn/a/0LtzL+daJJ87g47sBtsxkYxtY2RlTascv8wbojBzi3nZmHSSln29txJ FcG/s1KcnFl1GjA9L93Vu2HwlVtDWjeeXCDtofeyhD7Jc1SkbXXXFV8+xCucjmnB6Anp 4HrfWj3l3cQmnZWq7BCUf83UI0vmet0lOAAqNWjljYMFffNb7Ot2SiccfEDssCaAHlQo JpfQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature; bh=vJ+wYgBk274zmA5vnZ7Lwq+Ee6SI9Fhll7g57j/X008=; b=jFf7g9m0hBM+UPX7hMC4dn9q9J9arLCA9YIBwvoV8h0Mhk4HDT303uXXK2pmvoTSg4 1vPEZs6VY1ubnZvRzEYAPBnCvZDFGNBy9OC7hGA+XLXdzzitkY1sckdbv6/VxIWrhQMd 2EfPmJoWjaBtjmmCh87VKl21ahCoMHvjtH38k4uYaPzvi5aJagDzKEIORgvMqB3hf01Y 8KBmFoWvdhj9PgDiBr7w2XmQzZm4g6n+VQd6vOept0KfmFdlkW6e7jnwBCkFyZtTm32m fSapfHGoIwMZDkIMdWJbKloyTcNJsXSjsO0pLnf1lgEr1O7FE6IDaDRbt/Mcu2tK5ckv OHVQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@synopsys.com header.s=mail header.b="SExtHH2/"; 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=pass (p=NONE sp=NONE dis=NONE) header.from=synopsys.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 184si2353546oif.56.2020.04.02.06.57.55; Thu, 02 Apr 2020 06:58:08 -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=@synopsys.com header.s=mail header.b="SExtHH2/"; 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=pass (p=NONE sp=NONE dis=NONE) header.from=synopsys.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732639AbgDBN5P (ORCPT + 99 others); Thu, 2 Apr 2020 09:57:15 -0400 Received: from smtprelay-out1.synopsys.com ([149.117.73.133]:54808 "EHLO smtprelay-out1.synopsys.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727439AbgDBN5O (ORCPT ); Thu, 2 Apr 2020 09:57:14 -0400 Received: from mailhost.synopsys.com (mdc-mailhost1.synopsys.com [10.225.0.209]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by smtprelay-out1.synopsys.com (Postfix) with ESMTPS id D0ABB43BB0; Thu, 2 Apr 2020 13:57:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1585835834; bh=WxB9gfK7GgZCSSdeiOrOcAWKApS/sOPCGGGM63tiPEQ=; h=From:To:Cc:Subject:Date:From; b=SExtHH2/3uXBmmuJPIQIqhFRsoYdNajCJQ1pS2JGL7z5jnl3R/dZNe6/0He/izxdO v+zCqA/rU8SvFWnQcfbsO/vyzcNwleriVnxioC+RGwbza21xF1XC3U721RWJXkBWRm IL6AEBis1v/gyRaBVsEEDbXpLrSIz+thlhyyiAOGUpOsJVjK8/jKfIyn9op/WO66xq 5lMNl0X/lQnw5BPXsRqTmMZ1m1pnlCITIQj4LxdU1hqqzXG58qRPKE++lvBQFIt46o C1GY4XqJ8Ku7z04idUbEWry9734w2OeXZlGEE8EZm6cQT3wpdQu4eb2XqR8HYfYjel mmSmWFe6x0Wjw== Received: from de02dwia024.internal.synopsys.com (de02dwia024.internal.synopsys.com [10.225.19.81]) by mailhost.synopsys.com (Postfix) with ESMTP id 93E62A005B; Thu, 2 Apr 2020 13:57:11 +0000 (UTC) From: Jose Abreu To: netdev@vger.kernel.org Cc: Joao Pinto , Jose Abreu , Giuseppe Cavallaro , Alexandre Torgue , Jose Abreu , "David S. Miller" , Maxime Coquelin , linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH net] net: stmmac: xgmac: Fix VLAN register handling Date: Thu, 2 Apr 2020 15:57:07 +0200 Message-Id: X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit 907a076881f1, forgot that we need to clear old values of XGMAC_VLAN_TAG register when we switch from VLAN perfect matching to HASH matching. Fix it. Fixes: 907a076881f1 ("net: stmmac: xgmac: fix incorrect XGMAC_VLAN_TAG register writting") Signed-off-by: Jose Abreu --- Cc: Giuseppe Cavallaro Cc: Alexandre Torgue Cc: Jose Abreu Cc: "David S. Miller" Cc: Maxime Coquelin Cc: netdev@vger.kernel.org Cc: linux-stm32@st-md-mailman.stormreply.com Cc: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org --- drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c index 0e4575f7bedb..ad4df9bddcf3 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c @@ -577,8 +577,13 @@ static void dwxgmac2_update_vlan_hash(struct mac_device_info *hw, u32 hash, value |= XGMAC_VLAN_EDVLP; value |= XGMAC_VLAN_ESVL; value |= XGMAC_VLAN_DOVLTC; + } else { + value &= ~XGMAC_VLAN_EDVLP; + value &= ~XGMAC_VLAN_ESVL; + value &= ~XGMAC_VLAN_DOVLTC; } + value &= ~XGMAC_VLAN_VID; writel(value, ioaddr + XGMAC_VLAN_TAG); } else if (perfect_match) { u32 value = readl(ioaddr + XGMAC_PACKET_FILTER); @@ -589,13 +594,19 @@ static void dwxgmac2_update_vlan_hash(struct mac_device_info *hw, u32 hash, value = readl(ioaddr + XGMAC_VLAN_TAG); + value &= ~XGMAC_VLAN_VTHM; value |= XGMAC_VLAN_ETV; if (is_double) { value |= XGMAC_VLAN_EDVLP; value |= XGMAC_VLAN_ESVL; value |= XGMAC_VLAN_DOVLTC; + } else { + value &= ~XGMAC_VLAN_EDVLP; + value &= ~XGMAC_VLAN_ESVL; + value &= ~XGMAC_VLAN_DOVLTC; } + value &= ~XGMAC_VLAN_VID; writel(value | perfect_match, ioaddr + XGMAC_VLAN_TAG); } else { u32 value = readl(ioaddr + XGMAC_PACKET_FILTER); -- 2.7.4