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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 085CAC77B78 for ; Wed, 26 Apr 2023 17:22:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id: Content-Transfer-Encoding:Content-Type:MIME-Version:Message-Id:Date:Subject: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=9ph+5lfap41GhhIYN4o+S1Eh3tgVJNxaqloTCHYLDBI=; b=uJfl739ZR7QFtI iKis+I5ycNAR2Maw3h9KYGX9umFLaVGFROqJTnev1qfIkrOO0NrgesyvgtVnBr18L5KEwcF22WjRH zhMnJlnvKWrihXvLG6/6NLNszPm4qlfr8No2eCVgf4QIQlxqKZ8js6g0sjupsGYYXZ1chLhqBqNMX +4QzAayoDMMJDerAnC5pZ7aZrjipcLxn7CKpoFYv7X0hAWjs4gryc+vKIzlI2jWiAuY7yo+BXr5Fu Q34+hYGbtC+uT6o6i0XbCJ5BqUipgOjcf5GkpQebc4+p3TorucNIGzmnGVN3YjAc7c95TrB06IIrK 2aQFvPbgLq0bA7jrLwVw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1priqR-004VQP-23; Wed, 26 Apr 2023 17:22:19 +0000 Received: from mxout2.routing.net ([2a03:2900:1:a::b]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1priqN-004VNY-0G; Wed, 26 Apr 2023 17:22:17 +0000 Received: from mxbox1.masterlogin.de (unknown [192.168.10.88]) by mxout2.routing.net (Postfix) with ESMTP id F08A9615F4; Wed, 26 Apr 2023 17:22:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailerdienst.de; s=20200217; t=1682529728; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9ph+5lfap41GhhIYN4o+S1Eh3tgVJNxaqloTCHYLDBI=; b=kw12t/diCsUFUYg6sujCROB5ZcLs/zuZYvbzvqYGJCBQ7LdOh/P+G6ZZcFVYch58wTPQbY kxoi3O4OmzvSlc7HQAKDeSed3OF+viPuCByd72kem+ko5KHQsm4dK/QzmI9CKhap5NhE4Q dFv/ZEzsO0IRx5fzTn1nk8wfC/Jw+OQ= Received: from frank-G5.. (fttx-pool-217.61.146.19.bambit.de [217.61.146.19]) by mxbox1.masterlogin.de (Postfix) with ESMTPSA id A6B4E4021D; Wed, 26 Apr 2023 17:22:06 +0000 (UTC) From: Frank Wunderlich To: linux-mediatek@lists.infradead.org Subject: [net v2] net: ethernet: mtk_eth_soc: drop generic vlan rx offload, only use DSA untagging Date: Wed, 26 Apr 2023 19:21:53 +0200 Message-Id: <20230426172153.8352-1-linux@fw-web.de> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Mail-ID: 6a51c8a2-6d2c-4cbd-a943-f861745ef60a X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230426_102215_454439_7AC058A7 X-CRM114-Status: GOOD ( 21.46 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: AngeloGioacchino Del Regno , netdev@vger.kernel.org, Sean Wang , Russell King , stable@vger.kernel.org, Mark Lee , Eric Dumazet , =?UTF-8?q?Ar=C4=B1n=C3=A7=20=C3=9CNAL?= , linux-arm-kernel@lists.infradead.org, John Crispin , Matthias Brugger , Jakub Kicinski , Paolo Abeni , Lorenzo Bianconi , "David S. Miller" , linux-kernel@vger.kernel.org, Felix Fietkau Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org From: Felix Fietkau Through testing I found out that hardware vlan rx offload support seems to have some hardware issues. At least when using multiple MACs and when receiving tagged packets on the secondary MAC, the hardware can sometimes start to emit wrong tags on the first MAC as well. In order to avoid such issues, drop the feature configuration and use the offload feature only for DSA hardware untagging on MT7621/MT7622 devices where this feature works properly. Fixes: 08666cbb7dd5 ("net: ethernet: mtk_eth_soc: add support for configuring vlan rx offload") Tested-by: Frank Wunderlich Signed-off-by: Felix Fietkau Signed-off-by: Frank Wunderlich Tested-by: Arınç ÜNAL --- v2: - changed commit message to drop "only one MAC used" phrase based on Arincs comments - fixed too long line in commit description and add empty line after declaration - add fixes tag used felix Patch as base and ported up to 6.3-rc6 it basicly reverts changes from vladimirs patch 1a3245fe0cf8 net: ethernet: mtk_eth_soc: fix DSA TX tag hwaccel for switch port 0 tested this on bananapi-r3 on non-dsa gmac1 and dsa eth0 (wan). on both vlan is working, but maybe it breaks HW-vlan-untagging --- drivers/net/ethernet/mediatek/mtk_eth_soc.c | 106 ++++++++------------ drivers/net/ethernet/mediatek/mtk_eth_soc.h | 1 - 2 files changed, 40 insertions(+), 67 deletions(-) diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c index 9e948d091a69..a75fd072082c 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c @@ -1918,9 +1918,7 @@ static int mtk_poll_rx(struct napi_struct *napi, int budget, while (done < budget) { unsigned int pktlen, *rxdcsum; - bool has_hwaccel_tag = false; struct net_device *netdev; - u16 vlan_proto, vlan_tci; dma_addr_t dma_addr; u32 hash, reason; int mac = 0; @@ -2055,31 +2053,16 @@ static int mtk_poll_rx(struct napi_struct *napi, int budget, skb_checksum_none_assert(skb); skb->protocol = eth_type_trans(skb, netdev); - if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX) { - if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) { - if (trxd.rxd3 & RX_DMA_VTAG_V2) { - vlan_proto = RX_DMA_VPID(trxd.rxd4); - vlan_tci = RX_DMA_VID(trxd.rxd4); - has_hwaccel_tag = true; - } - } else if (trxd.rxd2 & RX_DMA_VTAG) { - vlan_proto = RX_DMA_VPID(trxd.rxd3); - vlan_tci = RX_DMA_VID(trxd.rxd3); - has_hwaccel_tag = true; - } - } - /* When using VLAN untagging in combination with DSA, the * hardware treats the MTK special tag as a VLAN and untags it. */ - if (has_hwaccel_tag && netdev_uses_dsa(netdev)) { - unsigned int port = vlan_proto & GENMASK(2, 0); + if (!MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2) && + (trxd.rxd2 & RX_DMA_VTAG) && netdev_uses_dsa(netdev)) { + unsigned int port = RX_DMA_VPID(trxd.rxd3) & GENMASK(2, 0); if (port < ARRAY_SIZE(eth->dsa_meta) && eth->dsa_meta[port]) skb_dst_set_noref(skb, ð->dsa_meta[port]->dst); - } else if (has_hwaccel_tag) { - __vlan_hwaccel_put_tag(skb, htons(vlan_proto), vlan_tci); } if (reason == MTK_PPE_CPU_REASON_HIT_UNBIND_RATE_REACHED) @@ -2907,29 +2890,11 @@ static netdev_features_t mtk_fix_features(struct net_device *dev, static int mtk_set_features(struct net_device *dev, netdev_features_t features) { - struct mtk_mac *mac = netdev_priv(dev); - struct mtk_eth *eth = mac->hw; netdev_features_t diff = dev->features ^ features; - int i; if ((diff & NETIF_F_LRO) && !(features & NETIF_F_LRO)) mtk_hwlro_netdev_disable(dev); - /* Set RX VLAN offloading */ - if (!(diff & NETIF_F_HW_VLAN_CTAG_RX)) - return 0; - - mtk_w32(eth, !!(features & NETIF_F_HW_VLAN_CTAG_RX), - MTK_CDMP_EG_CTRL); - - /* sync features with other MAC */ - for (i = 0; i < MTK_MAC_COUNT; i++) { - if (!eth->netdev[i] || eth->netdev[i] == dev) - continue; - eth->netdev[i]->features &= ~NETIF_F_HW_VLAN_CTAG_RX; - eth->netdev[i]->features |= features & NETIF_F_HW_VLAN_CTAG_RX; - } - return 0; } @@ -3247,30 +3212,6 @@ static int mtk_open(struct net_device *dev) struct mtk_eth *eth = mac->hw; int i, err; - if (mtk_uses_dsa(dev) && !eth->prog) { - for (i = 0; i < ARRAY_SIZE(eth->dsa_meta); i++) { - struct metadata_dst *md_dst = eth->dsa_meta[i]; - - if (md_dst) - continue; - - md_dst = metadata_dst_alloc(0, METADATA_HW_PORT_MUX, - GFP_KERNEL); - if (!md_dst) - return -ENOMEM; - - md_dst->u.port_info.port_id = i; - eth->dsa_meta[i] = md_dst; - } - } else { - /* Hardware special tag parsing needs to be disabled if at least - * one MAC does not use DSA. - */ - u32 val = mtk_r32(eth, MTK_CDMP_IG_CTRL); - val &= ~MTK_CDMP_STAG_EN; - mtk_w32(eth, val, MTK_CDMP_IG_CTRL); - } - err = phylink_of_phy_connect(mac->phylink, mac->of_node, 0); if (err) { netdev_err(dev, "%s: could not attach PHY: %d\n", __func__, @@ -3309,6 +3250,40 @@ static int mtk_open(struct net_device *dev) phylink_start(mac->phylink); netif_tx_start_all_queues(dev); + if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) + return 0; + + if (mtk_uses_dsa(dev) && !eth->prog) { + for (i = 0; i < ARRAY_SIZE(eth->dsa_meta); i++) { + struct metadata_dst *md_dst = eth->dsa_meta[i]; + + if (md_dst) + continue; + + md_dst = metadata_dst_alloc(0, METADATA_HW_PORT_MUX, + GFP_KERNEL); + if (!md_dst) + return -ENOMEM; + + md_dst->u.port_info.port_id = i; + eth->dsa_meta[i] = md_dst; + } + } else { + /* Hardware special tag parsing needs to be disabled if at least + * one MAC does not use DSA. + */ + u32 val = mtk_r32(eth, MTK_CDMP_IG_CTRL); + + val &= ~MTK_CDMP_STAG_EN; + mtk_w32(eth, val, MTK_CDMP_IG_CTRL); + + val = mtk_r32(eth, MTK_CDMQ_IG_CTRL); + val &= ~MTK_CDMQ_STAG_EN; + mtk_w32(eth, val, MTK_CDMQ_IG_CTRL); + + mtk_w32(eth, 0, MTK_CDMP_EG_CTRL); + } + return 0; } @@ -3793,10 +3768,9 @@ static int mtk_hw_init(struct mtk_eth *eth, bool reset) if (!MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) { val = mtk_r32(eth, MTK_CDMP_IG_CTRL); mtk_w32(eth, val | MTK_CDMP_STAG_EN, MTK_CDMP_IG_CTRL); - } - /* Enable RX VLan Offloading */ - mtk_w32(eth, 1, MTK_CDMP_EG_CTRL); + mtk_w32(eth, 1, MTK_CDMP_EG_CTRL); + } /* set interrupt delays based on current Net DIM sample */ mtk_dim_rx(ð->rx_dim.work); @@ -4453,7 +4427,7 @@ static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np) eth->netdev[id]->hw_features |= NETIF_F_LRO; eth->netdev[id]->vlan_features = eth->soc->hw_features & - ~(NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_CTAG_RX); + ~NETIF_F_HW_VLAN_CTAG_TX; eth->netdev[id]->features |= eth->soc->hw_features; eth->netdev[id]->ethtool_ops = &mtk_ethtool_ops; diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.h b/drivers/net/ethernet/mediatek/mtk_eth_soc.h index cdcf8534283e..707445f6bcb1 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h @@ -48,7 +48,6 @@ #define MTK_HW_FEATURES (NETIF_F_IP_CSUM | \ NETIF_F_RXCSUM | \ NETIF_F_HW_VLAN_CTAG_TX | \ - NETIF_F_HW_VLAN_CTAG_RX | \ NETIF_F_SG | NETIF_F_TSO | \ NETIF_F_TSO6 | \ NETIF_F_IPV6_CSUM |\ -- 2.34.1 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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 40CFAC77B7C for ; Wed, 26 Apr 2023 17:32:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234138AbjDZRcI (ORCPT ); Wed, 26 Apr 2023 13:32:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56902 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232195AbjDZRcH (ORCPT ); Wed, 26 Apr 2023 13:32:07 -0400 X-Greylist: delayed 591 seconds by postgrey-1.37 at lindbergh.monkeyblade.net; Wed, 26 Apr 2023 10:32:01 PDT Received: from mxout2.routing.net (mxout2.routing.net [IPv6:2a03:2900:1:a::b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B6BD597; Wed, 26 Apr 2023 10:32:01 -0700 (PDT) Received: from mxbox1.masterlogin.de (unknown [192.168.10.88]) by mxout2.routing.net (Postfix) with ESMTP id F08A9615F4; Wed, 26 Apr 2023 17:22:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailerdienst.de; s=20200217; t=1682529728; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9ph+5lfap41GhhIYN4o+S1Eh3tgVJNxaqloTCHYLDBI=; b=kw12t/diCsUFUYg6sujCROB5ZcLs/zuZYvbzvqYGJCBQ7LdOh/P+G6ZZcFVYch58wTPQbY kxoi3O4OmzvSlc7HQAKDeSed3OF+viPuCByd72kem+ko5KHQsm4dK/QzmI9CKhap5NhE4Q dFv/ZEzsO0IRx5fzTn1nk8wfC/Jw+OQ= Received: from frank-G5.. (fttx-pool-217.61.146.19.bambit.de [217.61.146.19]) by mxbox1.masterlogin.de (Postfix) with ESMTPSA id A6B4E4021D; Wed, 26 Apr 2023 17:22:06 +0000 (UTC) From: Frank Wunderlich To: linux-mediatek@lists.infradead.org Cc: Felix Fietkau , John Crispin , Sean Wang , Mark Lee , Lorenzo Bianconi , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Matthias Brugger , AngeloGioacchino Del Regno , Russell King , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, stable@vger.kernel.org, Frank Wunderlich , =?UTF-8?q?Ar=C4=B1n=C3=A7=20=C3=9CNAL?= Subject: [net v2] net: ethernet: mtk_eth_soc: drop generic vlan rx offload, only use DSA untagging Date: Wed, 26 Apr 2023 19:21:53 +0200 Message-Id: <20230426172153.8352-1-linux@fw-web.de> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Mail-ID: 6a51c8a2-6d2c-4cbd-a943-f861745ef60a Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: Felix Fietkau Through testing I found out that hardware vlan rx offload support seems to have some hardware issues. At least when using multiple MACs and when receiving tagged packets on the secondary MAC, the hardware can sometimes start to emit wrong tags on the first MAC as well. In order to avoid such issues, drop the feature configuration and use the offload feature only for DSA hardware untagging on MT7621/MT7622 devices where this feature works properly. Fixes: 08666cbb7dd5 ("net: ethernet: mtk_eth_soc: add support for configuring vlan rx offload") Tested-by: Frank Wunderlich Signed-off-by: Felix Fietkau Signed-off-by: Frank Wunderlich Tested-by: Arınç ÜNAL --- v2: - changed commit message to drop "only one MAC used" phrase based on Arincs comments - fixed too long line in commit description and add empty line after declaration - add fixes tag used felix Patch as base and ported up to 6.3-rc6 it basicly reverts changes from vladimirs patch 1a3245fe0cf8 net: ethernet: mtk_eth_soc: fix DSA TX tag hwaccel for switch port 0 tested this on bananapi-r3 on non-dsa gmac1 and dsa eth0 (wan). on both vlan is working, but maybe it breaks HW-vlan-untagging --- drivers/net/ethernet/mediatek/mtk_eth_soc.c | 106 ++++++++------------ drivers/net/ethernet/mediatek/mtk_eth_soc.h | 1 - 2 files changed, 40 insertions(+), 67 deletions(-) diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c index 9e948d091a69..a75fd072082c 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c @@ -1918,9 +1918,7 @@ static int mtk_poll_rx(struct napi_struct *napi, int budget, while (done < budget) { unsigned int pktlen, *rxdcsum; - bool has_hwaccel_tag = false; struct net_device *netdev; - u16 vlan_proto, vlan_tci; dma_addr_t dma_addr; u32 hash, reason; int mac = 0; @@ -2055,31 +2053,16 @@ static int mtk_poll_rx(struct napi_struct *napi, int budget, skb_checksum_none_assert(skb); skb->protocol = eth_type_trans(skb, netdev); - if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX) { - if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) { - if (trxd.rxd3 & RX_DMA_VTAG_V2) { - vlan_proto = RX_DMA_VPID(trxd.rxd4); - vlan_tci = RX_DMA_VID(trxd.rxd4); - has_hwaccel_tag = true; - } - } else if (trxd.rxd2 & RX_DMA_VTAG) { - vlan_proto = RX_DMA_VPID(trxd.rxd3); - vlan_tci = RX_DMA_VID(trxd.rxd3); - has_hwaccel_tag = true; - } - } - /* When using VLAN untagging in combination with DSA, the * hardware treats the MTK special tag as a VLAN and untags it. */ - if (has_hwaccel_tag && netdev_uses_dsa(netdev)) { - unsigned int port = vlan_proto & GENMASK(2, 0); + if (!MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2) && + (trxd.rxd2 & RX_DMA_VTAG) && netdev_uses_dsa(netdev)) { + unsigned int port = RX_DMA_VPID(trxd.rxd3) & GENMASK(2, 0); if (port < ARRAY_SIZE(eth->dsa_meta) && eth->dsa_meta[port]) skb_dst_set_noref(skb, ð->dsa_meta[port]->dst); - } else if (has_hwaccel_tag) { - __vlan_hwaccel_put_tag(skb, htons(vlan_proto), vlan_tci); } if (reason == MTK_PPE_CPU_REASON_HIT_UNBIND_RATE_REACHED) @@ -2907,29 +2890,11 @@ static netdev_features_t mtk_fix_features(struct net_device *dev, static int mtk_set_features(struct net_device *dev, netdev_features_t features) { - struct mtk_mac *mac = netdev_priv(dev); - struct mtk_eth *eth = mac->hw; netdev_features_t diff = dev->features ^ features; - int i; if ((diff & NETIF_F_LRO) && !(features & NETIF_F_LRO)) mtk_hwlro_netdev_disable(dev); - /* Set RX VLAN offloading */ - if (!(diff & NETIF_F_HW_VLAN_CTAG_RX)) - return 0; - - mtk_w32(eth, !!(features & NETIF_F_HW_VLAN_CTAG_RX), - MTK_CDMP_EG_CTRL); - - /* sync features with other MAC */ - for (i = 0; i < MTK_MAC_COUNT; i++) { - if (!eth->netdev[i] || eth->netdev[i] == dev) - continue; - eth->netdev[i]->features &= ~NETIF_F_HW_VLAN_CTAG_RX; - eth->netdev[i]->features |= features & NETIF_F_HW_VLAN_CTAG_RX; - } - return 0; } @@ -3247,30 +3212,6 @@ static int mtk_open(struct net_device *dev) struct mtk_eth *eth = mac->hw; int i, err; - if (mtk_uses_dsa(dev) && !eth->prog) { - for (i = 0; i < ARRAY_SIZE(eth->dsa_meta); i++) { - struct metadata_dst *md_dst = eth->dsa_meta[i]; - - if (md_dst) - continue; - - md_dst = metadata_dst_alloc(0, METADATA_HW_PORT_MUX, - GFP_KERNEL); - if (!md_dst) - return -ENOMEM; - - md_dst->u.port_info.port_id = i; - eth->dsa_meta[i] = md_dst; - } - } else { - /* Hardware special tag parsing needs to be disabled if at least - * one MAC does not use DSA. - */ - u32 val = mtk_r32(eth, MTK_CDMP_IG_CTRL); - val &= ~MTK_CDMP_STAG_EN; - mtk_w32(eth, val, MTK_CDMP_IG_CTRL); - } - err = phylink_of_phy_connect(mac->phylink, mac->of_node, 0); if (err) { netdev_err(dev, "%s: could not attach PHY: %d\n", __func__, @@ -3309,6 +3250,40 @@ static int mtk_open(struct net_device *dev) phylink_start(mac->phylink); netif_tx_start_all_queues(dev); + if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) + return 0; + + if (mtk_uses_dsa(dev) && !eth->prog) { + for (i = 0; i < ARRAY_SIZE(eth->dsa_meta); i++) { + struct metadata_dst *md_dst = eth->dsa_meta[i]; + + if (md_dst) + continue; + + md_dst = metadata_dst_alloc(0, METADATA_HW_PORT_MUX, + GFP_KERNEL); + if (!md_dst) + return -ENOMEM; + + md_dst->u.port_info.port_id = i; + eth->dsa_meta[i] = md_dst; + } + } else { + /* Hardware special tag parsing needs to be disabled if at least + * one MAC does not use DSA. + */ + u32 val = mtk_r32(eth, MTK_CDMP_IG_CTRL); + + val &= ~MTK_CDMP_STAG_EN; + mtk_w32(eth, val, MTK_CDMP_IG_CTRL); + + val = mtk_r32(eth, MTK_CDMQ_IG_CTRL); + val &= ~MTK_CDMQ_STAG_EN; + mtk_w32(eth, val, MTK_CDMQ_IG_CTRL); + + mtk_w32(eth, 0, MTK_CDMP_EG_CTRL); + } + return 0; } @@ -3793,10 +3768,9 @@ static int mtk_hw_init(struct mtk_eth *eth, bool reset) if (!MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) { val = mtk_r32(eth, MTK_CDMP_IG_CTRL); mtk_w32(eth, val | MTK_CDMP_STAG_EN, MTK_CDMP_IG_CTRL); - } - /* Enable RX VLan Offloading */ - mtk_w32(eth, 1, MTK_CDMP_EG_CTRL); + mtk_w32(eth, 1, MTK_CDMP_EG_CTRL); + } /* set interrupt delays based on current Net DIM sample */ mtk_dim_rx(ð->rx_dim.work); @@ -4453,7 +4427,7 @@ static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np) eth->netdev[id]->hw_features |= NETIF_F_LRO; eth->netdev[id]->vlan_features = eth->soc->hw_features & - ~(NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_CTAG_RX); + ~NETIF_F_HW_VLAN_CTAG_TX; eth->netdev[id]->features |= eth->soc->hw_features; eth->netdev[id]->ethtool_ops = &mtk_ethtool_ops; diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.h b/drivers/net/ethernet/mediatek/mtk_eth_soc.h index cdcf8534283e..707445f6bcb1 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h @@ -48,7 +48,6 @@ #define MTK_HW_FEATURES (NETIF_F_IP_CSUM | \ NETIF_F_RXCSUM | \ NETIF_F_HW_VLAN_CTAG_TX | \ - NETIF_F_HW_VLAN_CTAG_RX | \ NETIF_F_SG | NETIF_F_TSO | \ NETIF_F_TSO6 | \ NETIF_F_IPV6_CSUM |\ -- 2.34.1 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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0FD7AC7618E for ; Wed, 26 Apr 2023 17:23:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=0v/4xBbnDmaODO8894BoQHZPzI/YZ5fq/g4eCgQJTbA=; b=MNTeCNh9lc0iBC fOtSkB/95T+D4ozWLWjKhOAX10b+49/kc99DZQKMLcmtJA/rYmb4F3nbuZYxjayLCiQl5HwM1aIMI yOdn0IhDomLSNr4Y6qON3dmywgfYHZ38ZuBJid162f0JK9PRBe/IFVsHwVbO/aligbZOtQUG4aPu7 AyXLQUvj9olkXn7uXiCMzJx3JlG4BMKuEvBH4OW5Q6h0q7shYsXIva8PR30aTXY1BOtlwjoHM7fcz tUSn+E4r8Yw03+FPxM/Ja6GYP5SUi9//QGN0aLcoBcLspjLenn04vNdwM2PJ2Ygq24A2BKcxiHVVh z6IynLOOmvbU5pm1/ZMQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1priqQ-004VPr-2O; Wed, 26 Apr 2023 17:22:18 +0000 Received: from mxout2.routing.net ([2a03:2900:1:a::b]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1priqN-004VNY-0G; Wed, 26 Apr 2023 17:22:17 +0000 Received: from mxbox1.masterlogin.de (unknown [192.168.10.88]) by mxout2.routing.net (Postfix) with ESMTP id F08A9615F4; Wed, 26 Apr 2023 17:22:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailerdienst.de; s=20200217; t=1682529728; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=9ph+5lfap41GhhIYN4o+S1Eh3tgVJNxaqloTCHYLDBI=; b=kw12t/diCsUFUYg6sujCROB5ZcLs/zuZYvbzvqYGJCBQ7LdOh/P+G6ZZcFVYch58wTPQbY kxoi3O4OmzvSlc7HQAKDeSed3OF+viPuCByd72kem+ko5KHQsm4dK/QzmI9CKhap5NhE4Q dFv/ZEzsO0IRx5fzTn1nk8wfC/Jw+OQ= Received: from frank-G5.. (fttx-pool-217.61.146.19.bambit.de [217.61.146.19]) by mxbox1.masterlogin.de (Postfix) with ESMTPSA id A6B4E4021D; Wed, 26 Apr 2023 17:22:06 +0000 (UTC) From: Frank Wunderlich To: linux-mediatek@lists.infradead.org Cc: Felix Fietkau , John Crispin , Sean Wang , Mark Lee , Lorenzo Bianconi , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Matthias Brugger , AngeloGioacchino Del Regno , Russell King , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, stable@vger.kernel.org, Frank Wunderlich , =?UTF-8?q?Ar=C4=B1n=C3=A7=20=C3=9CNAL?= Subject: [net v2] net: ethernet: mtk_eth_soc: drop generic vlan rx offload, only use DSA untagging Date: Wed, 26 Apr 2023 19:21:53 +0200 Message-Id: <20230426172153.8352-1-linux@fw-web.de> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Mail-ID: 6a51c8a2-6d2c-4cbd-a943-f861745ef60a X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230426_102215_454439_7AC058A7 X-CRM114-Status: GOOD ( 21.46 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org RnJvbTogRmVsaXggRmlldGthdSA8bmJkQG5iZC5uYW1lPgoKVGhyb3VnaCB0ZXN0aW5nIEkgZm91 bmQgb3V0IHRoYXQgaGFyZHdhcmUgdmxhbiByeCBvZmZsb2FkIHN1cHBvcnQgc2VlbXMgdG8KaGF2 ZSBzb21lIGhhcmR3YXJlIGlzc3Vlcy4gQXQgbGVhc3Qgd2hlbiB1c2luZyBtdWx0aXBsZSBNQUNz IGFuZCB3aGVuCnJlY2VpdmluZyB0YWdnZWQgcGFja2V0cyBvbiB0aGUgc2Vjb25kYXJ5IE1BQywg dGhlIGhhcmR3YXJlIGNhbiBzb21ldGltZXMKc3RhcnQgdG8gZW1pdCB3cm9uZyB0YWdzIG9uIHRo ZSBmaXJzdCBNQUMgYXMgd2VsbC4KCkluIG9yZGVyIHRvIGF2b2lkIHN1Y2ggaXNzdWVzLCBkcm9w IHRoZSBmZWF0dXJlIGNvbmZpZ3VyYXRpb24gYW5kIHVzZQp0aGUgb2ZmbG9hZCBmZWF0dXJlIG9u bHkgZm9yIERTQSBoYXJkd2FyZSB1bnRhZ2dpbmcgb24gTVQ3NjIxL01UNzYyMgpkZXZpY2VzIHdo ZXJlIHRoaXMgZmVhdHVyZSB3b3JrcyBwcm9wZXJseS4KCkZpeGVzOiAwODY2NmNiYjdkZDUgKCJu ZXQ6IGV0aGVybmV0OiBtdGtfZXRoX3NvYzogYWRkIHN1cHBvcnQgZm9yIGNvbmZpZ3VyaW5nIHZs YW4gcnggb2ZmbG9hZCIpClRlc3RlZC1ieTogRnJhbmsgV3VuZGVybGljaCA8ZnJhbmstd0BwdWJs aWMtZmlsZXMuZGU+ClNpZ25lZC1vZmYtYnk6IEZlbGl4IEZpZXRrYXUgPG5iZEBuYmQubmFtZT4K U2lnbmVkLW9mZi1ieTogRnJhbmsgV3VuZGVybGljaCA8ZnJhbmstd0BwdWJsaWMtZmlsZXMuZGU+ ClRlc3RlZC1ieTogQXLEsW7DpyDDnE5BTCA8YXJpbmMudW5hbEBhcmluYzkuY29tPgotLS0KdjI6 Ci0gY2hhbmdlZCBjb21taXQgbWVzc2FnZSB0byBkcm9wICJvbmx5IG9uZSBNQUMgdXNlZCIgcGhy YXNlIGJhc2VkIG9uCiAgQXJpbmNzIGNvbW1lbnRzCi0gZml4ZWQgdG9vIGxvbmcgbGluZSBpbiBj b21taXQgZGVzY3JpcHRpb24gYW5kIGFkZCBlbXB0eSBsaW5lIGFmdGVyCiAgZGVjbGFyYXRpb24K LSBhZGQgZml4ZXMgdGFnCgp1c2VkIGZlbGl4IFBhdGNoIGFzIGJhc2UgYW5kIHBvcnRlZCB1cCB0 byA2LjMtcmM2CgppdCBiYXNpY2x5IHJldmVydHMgY2hhbmdlcyBmcm9tIHZsYWRpbWlycyBwYXRj aAoKMWEzMjQ1ZmUwY2Y4IG5ldDogZXRoZXJuZXQ6IG10a19ldGhfc29jOiBmaXggRFNBIFRYIHRh ZyBod2FjY2VsIGZvciBzd2l0Y2ggcG9ydCAwCgp0ZXN0ZWQgdGhpcyBvbiBiYW5hbmFwaS1yMyBv biBub24tZHNhIGdtYWMxIGFuZCBkc2EgZXRoMCAod2FuKS4Kb24gYm90aCB2bGFuIGlzIHdvcmtp bmcsIGJ1dCBtYXliZSBpdCBicmVha3MgSFctdmxhbi11bnRhZ2dpbmcKLS0tCiBkcml2ZXJzL25l dC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jIHwgMTA2ICsrKysrKysrLS0tLS0tLS0t LS0tCiBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5oIHwgICAxIC0K IDIgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgNjcgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYyBiL2Ry aXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMKaW5kZXggOWU5NDhkMDkx YTY5Li5hNzVmZDA3MjA4MmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlh dGVrL210a19ldGhfc29jLmMKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRr X2V0aF9zb2MuYwpAQCAtMTkxOCw5ICsxOTE4LDcgQEAgc3RhdGljIGludCBtdGtfcG9sbF9yeChz dHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQsCiAKIAl3aGlsZSAoZG9uZSA8IGJ1 ZGdldCkgewogCQl1bnNpZ25lZCBpbnQgcGt0bGVuLCAqcnhkY3N1bTsKLQkJYm9vbCBoYXNfaHdh Y2NlbF90YWcgPSBmYWxzZTsKIAkJc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjsKLQkJdTE2IHZs YW5fcHJvdG8sIHZsYW5fdGNpOwogCQlkbWFfYWRkcl90IGRtYV9hZGRyOwogCQl1MzIgaGFzaCwg cmVhc29uOwogCQlpbnQgbWFjID0gMDsKQEAgLTIwNTUsMzEgKzIwNTMsMTYgQEAgc3RhdGljIGlu dCBtdGtfcG9sbF9yeChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQsCiAJCQlz a2JfY2hlY2tzdW1fbm9uZV9hc3NlcnQoc2tiKTsKIAkJc2tiLT5wcm90b2NvbCA9IGV0aF90eXBl X3RyYW5zKHNrYiwgbmV0ZGV2KTsKIAotCQlpZiAobmV0ZGV2LT5mZWF0dXJlcyAmIE5FVElGX0Zf SFdfVkxBTl9DVEFHX1JYKSB7Ci0JCQlpZiAoTVRLX0hBU19DQVBTKGV0aC0+c29jLT5jYXBzLCBN VEtfTkVUU1lTX1YyKSkgewotCQkJCWlmICh0cnhkLnJ4ZDMgJiBSWF9ETUFfVlRBR19WMikgewot CQkJCQl2bGFuX3Byb3RvID0gUlhfRE1BX1ZQSUQodHJ4ZC5yeGQ0KTsKLQkJCQkJdmxhbl90Y2kg PSBSWF9ETUFfVklEKHRyeGQucnhkNCk7Ci0JCQkJCWhhc19od2FjY2VsX3RhZyA9IHRydWU7Ci0J CQkJfQotCQkJfSBlbHNlIGlmICh0cnhkLnJ4ZDIgJiBSWF9ETUFfVlRBRykgewotCQkJCXZsYW5f cHJvdG8gPSBSWF9ETUFfVlBJRCh0cnhkLnJ4ZDMpOwotCQkJCXZsYW5fdGNpID0gUlhfRE1BX1ZJ RCh0cnhkLnJ4ZDMpOwotCQkJCWhhc19od2FjY2VsX3RhZyA9IHRydWU7Ci0JCQl9Ci0JCX0KLQog CQkvKiBXaGVuIHVzaW5nIFZMQU4gdW50YWdnaW5nIGluIGNvbWJpbmF0aW9uIHdpdGggRFNBLCB0 aGUKIAkJICogaGFyZHdhcmUgdHJlYXRzIHRoZSBNVEsgc3BlY2lhbCB0YWcgYXMgYSBWTEFOIGFu ZCB1bnRhZ3MgaXQuCiAJCSAqLwotCQlpZiAoaGFzX2h3YWNjZWxfdGFnICYmIG5ldGRldl91c2Vz X2RzYShuZXRkZXYpKSB7Ci0JCQl1bnNpZ25lZCBpbnQgcG9ydCA9IHZsYW5fcHJvdG8gJiBHRU5N QVNLKDIsIDApOworCQlpZiAoIU1US19IQVNfQ0FQUyhldGgtPnNvYy0+Y2FwcywgTVRLX05FVFNZ U19WMikgJiYKKwkJICAgICh0cnhkLnJ4ZDIgJiBSWF9ETUFfVlRBRykgJiYgbmV0ZGV2X3VzZXNf ZHNhKG5ldGRldikpIHsKKwkJCXVuc2lnbmVkIGludCBwb3J0ID0gUlhfRE1BX1ZQSUQodHJ4ZC5y eGQzKSAmIEdFTk1BU0soMiwgMCk7CiAKIAkJCWlmIChwb3J0IDwgQVJSQVlfU0laRShldGgtPmRz YV9tZXRhKSAmJgogCQkJICAgIGV0aC0+ZHNhX21ldGFbcG9ydF0pCiAJCQkJc2tiX2RzdF9zZXRf bm9yZWYoc2tiLCAmZXRoLT5kc2FfbWV0YVtwb3J0XS0+ZHN0KTsKLQkJfSBlbHNlIGlmIChoYXNf aHdhY2NlbF90YWcpIHsKLQkJCV9fdmxhbl9od2FjY2VsX3B1dF90YWcoc2tiLCBodG9ucyh2bGFu X3Byb3RvKSwgdmxhbl90Y2kpOwogCQl9CiAKIAkJaWYgKHJlYXNvbiA9PSBNVEtfUFBFX0NQVV9S RUFTT05fSElUX1VOQklORF9SQVRFX1JFQUNIRUQpCkBAIC0yOTA3LDI5ICsyODkwLDExIEBAIHN0 YXRpYyBuZXRkZXZfZmVhdHVyZXNfdCBtdGtfZml4X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNl ICpkZXYsCiAKIHN0YXRpYyBpbnQgbXRrX3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAq ZGV2LCBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcykKIHsKLQlzdHJ1Y3QgbXRrX21hYyAqbWFj ID0gbmV0ZGV2X3ByaXYoZGV2KTsKLQlzdHJ1Y3QgbXRrX2V0aCAqZXRoID0gbWFjLT5odzsKIAlu ZXRkZXZfZmVhdHVyZXNfdCBkaWZmID0gZGV2LT5mZWF0dXJlcyBeIGZlYXR1cmVzOwotCWludCBp OwogCiAJaWYgKChkaWZmICYgTkVUSUZfRl9MUk8pICYmICEoZmVhdHVyZXMgJiBORVRJRl9GX0xS TykpCiAJCW10a19od2xyb19uZXRkZXZfZGlzYWJsZShkZXYpOwogCi0JLyogU2V0IFJYIFZMQU4g b2ZmbG9hZGluZyAqLwotCWlmICghKGRpZmYgJiBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWCkpCi0J CXJldHVybiAwOwotCi0JbXRrX3czMihldGgsICEhKGZlYXR1cmVzICYgTkVUSUZfRl9IV19WTEFO X0NUQUdfUlgpLAotCQlNVEtfQ0RNUF9FR19DVFJMKTsKLQotCS8qIHN5bmMgZmVhdHVyZXMgd2l0 aCBvdGhlciBNQUMgKi8KLQlmb3IgKGkgPSAwOyBpIDwgTVRLX01BQ19DT1VOVDsgaSsrKSB7Ci0J CWlmICghZXRoLT5uZXRkZXZbaV0gfHwgZXRoLT5uZXRkZXZbaV0gPT0gZGV2KQotCQkJY29udGlu dWU7Ci0JCWV0aC0+bmV0ZGV2W2ldLT5mZWF0dXJlcyAmPSB+TkVUSUZfRl9IV19WTEFOX0NUQUdf Ulg7Ci0JCWV0aC0+bmV0ZGV2W2ldLT5mZWF0dXJlcyB8PSBmZWF0dXJlcyAmIE5FVElGX0ZfSFdf VkxBTl9DVEFHX1JYOwotCX0KLQogCXJldHVybiAwOwogfQogCkBAIC0zMjQ3LDMwICszMjEyLDYg QEAgc3RhdGljIGludCBtdGtfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCXN0cnVjdCBt dGtfZXRoICpldGggPSBtYWMtPmh3OwogCWludCBpLCBlcnI7CiAKLQlpZiAobXRrX3VzZXNfZHNh KGRldikgJiYgIWV0aC0+cHJvZykgewotCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShldGgt PmRzYV9tZXRhKTsgaSsrKSB7Ci0JCQlzdHJ1Y3QgbWV0YWRhdGFfZHN0ICptZF9kc3QgPSBldGgt PmRzYV9tZXRhW2ldOwotCi0JCQlpZiAobWRfZHN0KQotCQkJCWNvbnRpbnVlOwotCi0JCQltZF9k c3QgPSBtZXRhZGF0YV9kc3RfYWxsb2MoMCwgTUVUQURBVEFfSFdfUE9SVF9NVVgsCi0JCQkJCQkg ICAgR0ZQX0tFUk5FTCk7Ci0JCQlpZiAoIW1kX2RzdCkKLQkJCQlyZXR1cm4gLUVOT01FTTsKLQot CQkJbWRfZHN0LT51LnBvcnRfaW5mby5wb3J0X2lkID0gaTsKLQkJCWV0aC0+ZHNhX21ldGFbaV0g PSBtZF9kc3Q7Ci0JCX0KLQl9IGVsc2UgewotCQkvKiBIYXJkd2FyZSBzcGVjaWFsIHRhZyBwYXJz aW5nIG5lZWRzIHRvIGJlIGRpc2FibGVkIGlmIGF0IGxlYXN0Ci0JCSAqIG9uZSBNQUMgZG9lcyBu b3QgdXNlIERTQS4KLQkJICovCi0JCXUzMiB2YWwgPSBtdGtfcjMyKGV0aCwgTVRLX0NETVBfSUdf Q1RSTCk7Ci0JCXZhbCAmPSB+TVRLX0NETVBfU1RBR19FTjsKLQkJbXRrX3czMihldGgsIHZhbCwg TVRLX0NETVBfSUdfQ1RSTCk7Ci0JfQotCiAJZXJyID0gcGh5bGlua19vZl9waHlfY29ubmVjdCht YWMtPnBoeWxpbmssIG1hYy0+b2Zfbm9kZSwgMCk7CiAJaWYgKGVycikgewogCQluZXRkZXZfZXJy KGRldiwgIiVzOiBjb3VsZCBub3QgYXR0YWNoIFBIWTogJWRcbiIsIF9fZnVuY19fLApAQCAtMzMw OSw2ICszMjUwLDQwIEBAIHN0YXRpYyBpbnQgbXRrX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRl dikKIAlwaHlsaW5rX3N0YXJ0KG1hYy0+cGh5bGluayk7CiAJbmV0aWZfdHhfc3RhcnRfYWxsX3F1 ZXVlcyhkZXYpOwogCisJaWYgKE1US19IQVNfQ0FQUyhldGgtPnNvYy0+Y2FwcywgTVRLX05FVFNZ U19WMikpCisJCXJldHVybiAwOworCisJaWYgKG10a191c2VzX2RzYShkZXYpICYmICFldGgtPnBy b2cpIHsKKwkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZXRoLT5kc2FfbWV0YSk7IGkrKykg eworCQkJc3RydWN0IG1ldGFkYXRhX2RzdCAqbWRfZHN0ID0gZXRoLT5kc2FfbWV0YVtpXTsKKwor CQkJaWYgKG1kX2RzdCkKKwkJCQljb250aW51ZTsKKworCQkJbWRfZHN0ID0gbWV0YWRhdGFfZHN0 X2FsbG9jKDAsIE1FVEFEQVRBX0hXX1BPUlRfTVVYLAorCQkJCQkJICAgIEdGUF9LRVJORUwpOwor CQkJaWYgKCFtZF9kc3QpCisJCQkJcmV0dXJuIC1FTk9NRU07CisKKwkJCW1kX2RzdC0+dS5wb3J0 X2luZm8ucG9ydF9pZCA9IGk7CisJCQlldGgtPmRzYV9tZXRhW2ldID0gbWRfZHN0OworCQl9CisJ fSBlbHNlIHsKKwkJLyogSGFyZHdhcmUgc3BlY2lhbCB0YWcgcGFyc2luZyBuZWVkcyB0byBiZSBk aXNhYmxlZCBpZiBhdCBsZWFzdAorCQkgKiBvbmUgTUFDIGRvZXMgbm90IHVzZSBEU0EuCisJCSAq LworCQl1MzIgdmFsID0gbXRrX3IzMihldGgsIE1US19DRE1QX0lHX0NUUkwpOworCisJCXZhbCAm PSB+TVRLX0NETVBfU1RBR19FTjsKKwkJbXRrX3czMihldGgsIHZhbCwgTVRLX0NETVBfSUdfQ1RS TCk7CisKKwkJdmFsID0gbXRrX3IzMihldGgsIE1US19DRE1RX0lHX0NUUkwpOworCQl2YWwgJj0g fk1US19DRE1RX1NUQUdfRU47CisJCW10a193MzIoZXRoLCB2YWwsIE1US19DRE1RX0lHX0NUUkwp OworCisJCW10a193MzIoZXRoLCAwLCBNVEtfQ0RNUF9FR19DVFJMKTsKKwl9CisKIAlyZXR1cm4g MDsKIH0KIApAQCAtMzc5MywxMCArMzc2OCw5IEBAIHN0YXRpYyBpbnQgbXRrX2h3X2luaXQoc3Ry dWN0IG10a19ldGggKmV0aCwgYm9vbCByZXNldCkKIAlpZiAoIU1US19IQVNfQ0FQUyhldGgtPnNv Yy0+Y2FwcywgTVRLX05FVFNZU19WMikpIHsKIAkJdmFsID0gbXRrX3IzMihldGgsIE1US19DRE1Q X0lHX0NUUkwpOwogCQltdGtfdzMyKGV0aCwgdmFsIHwgTVRLX0NETVBfU1RBR19FTiwgTVRLX0NE TVBfSUdfQ1RSTCk7Ci0JfQogCi0JLyogRW5hYmxlIFJYIFZMYW4gT2ZmbG9hZGluZyAqLwotCW10 a193MzIoZXRoLCAxLCBNVEtfQ0RNUF9FR19DVFJMKTsKKwkJbXRrX3czMihldGgsIDEsIE1US19D RE1QX0VHX0NUUkwpOworCX0KIAogCS8qIHNldCBpbnRlcnJ1cHQgZGVsYXlzIGJhc2VkIG9uIGN1 cnJlbnQgTmV0IERJTSBzYW1wbGUgKi8KIAltdGtfZGltX3J4KCZldGgtPnJ4X2RpbS53b3JrKTsK QEAgLTQ0NTMsNyArNDQyNyw3IEBAIHN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19l dGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucCkKIAkJZXRoLT5uZXRkZXZbaWRdLT5od19m ZWF0dXJlcyB8PSBORVRJRl9GX0xSTzsKIAogCWV0aC0+bmV0ZGV2W2lkXS0+dmxhbl9mZWF0dXJl cyA9IGV0aC0+c29jLT5od19mZWF0dXJlcyAmCi0JCX4oTkVUSUZfRl9IV19WTEFOX0NUQUdfVFgg fCBORVRJRl9GX0hXX1ZMQU5fQ1RBR19SWCk7CisJCX5ORVRJRl9GX0hXX1ZMQU5fQ1RBR19UWDsK IAlldGgtPm5ldGRldltpZF0tPmZlYXR1cmVzIHw9IGV0aC0+c29jLT5od19mZWF0dXJlczsKIAll dGgtPm5ldGRldltpZF0tPmV0aHRvb2xfb3BzID0gJm10a19ldGh0b29sX29wczsKIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuaCBiL2RyaXZl cnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmgKaW5kZXggY2RjZjg1MzQyODNl Li43MDc0NDVmNmJjYjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVr L210a19ldGhfc29jLmgKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0 aF9zb2MuaApAQCAtNDgsNyArNDgsNiBAQAogI2RlZmluZSBNVEtfSFdfRkVBVFVSRVMJCShORVRJ Rl9GX0lQX0NTVU0gfCBcCiAJCQkJIE5FVElGX0ZfUlhDU1VNIHwgXAogCQkJCSBORVRJRl9GX0hX X1ZMQU5fQ1RBR19UWCB8IFwKLQkJCQkgTkVUSUZfRl9IV19WTEFOX0NUQUdfUlggfCBcCiAJCQkJ IE5FVElGX0ZfU0cgfCBORVRJRl9GX1RTTyB8IFwKIAkJCQkgTkVUSUZfRl9UU082IHwgXAogCQkJ CSBORVRJRl9GX0lQVjZfQ1NVTSB8XAotLSAKMi4zNC4xCgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QK bGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRl YWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=