[PATCH 19.07] ipq40xx: Revert "ipq40xx: fix ethernet vlan double tagging"
Adrian Schmutzler
mail at adrianschmutzler.de
Fri Nov 20 09:09:12 EST 2020
Hi,
> -----Original Message-----
> From: openwrt-devel [mailto:openwrt-devel-bounces at lists.openwrt.org]
> On Behalf Of Baptiste Jonglez
> Sent: Freitag, 20. November 2020 11:21
> To: openwrt-devel at lists.openwrt.org; John Crispin <john at phrozen.org>
> Cc: Baptiste Jonglez <git at bitsofnetworks.org>
> Subject: [PATCH 19.07] ipq40xx: Revert "ipq40xx: fix ethernet vlan double
> tagging"
>
> From: Baptiste Jonglez <git at bitsofnetworks.org>
>
> This change has been causing several issues on ipq40xx devices, including:
this seems to lack a Signed-off-by?
Best
Adrian
>
> - VLAN tagging no longer works correctly:
> https://bugs.openwrt.org/index.php?do=details&task_id=3239
> - poor performance with tagged VLANs:
> https://bugs.openwrt.org/index.php?do=details&task_id=3457
>
> See also https://forum.openwrt.org/t/vlan-tagging-on-ipq40xx-gl-b1300-no-
> longer-works/69569
>
> There are have been discussions on ways to fix the issue in the links above
> (including switching to DSA), but nothing that can realistically be introduced in
> the 19.07 branch.
>
> This reverts commit 8c191712558ce94 ("ipq40xx: fix ethernet vlan double
> tagging")
>
> Note that it's not a clean revert because this patch was touched in
> 148d59c67edd5 ("kernel: update kernel 4.14 to version 4.14.193") even
> though the semantic of the patch was left unchanged.
>
> Fixes: FS#3239
> Fixes: FS#3457
> ---
> .../716-essedma-vlan-double-tag.patch | 128 ------------------
> 1 file changed, 128 deletions(-)
> delete mode 100644 target/linux/ipq40xx/patches-4.14/716-essedma-vlan-
> double-tag.patch
>
> diff --git a/target/linux/ipq40xx/patches-4.14/716-essedma-vlan-double-
> tag.patch b/target/linux/ipq40xx/patches-4.14/716-essedma-vlan-double-
> tag.patch
> deleted file mode 100644
> index e268351273..0000000000
> --- a/target/linux/ipq40xx/patches-4.14/716-essedma-vlan-double-tag.patch
> +++ /dev/null
> @@ -1,128 +0,0 @@
> -From: Sven Eckelmann <sven at narfation.org>
> -Date: Wed, 8 Feb 2017 16:26:00 +0100
> -Subject: [PATCH] ipq40xx: Fix ar40xx port separation
> -
> -It is currently not possible to submit (or receive) VLAN tagged frames over -
> the ar40xx PHY switch and the edma ethernet device.
> -
> -This can be worked around by disabling enable_vlan. The separation of the
> -eth0 and eth1 ports is then done by the vlan_tag information from the -
> device tree. But the ar40xx PHY switch then also has to parse the word3 -port
> bitmap (word3) from the TDP when data was received from the CPU port -
> (0).
> -
> -IssueID: #2857
> -
> -Forwarded: no
> - The ar40xx.c change was forwarded to Xiaofei Shen
> <xiaofeis at codeaurora.org>
> - (QCA). But John Crispin will rewrite the driver anyway and we have to check
> - later if this change is required in his driver too.
> ----
> - drivers/net/phy/ar40xx.c | 6 +++++-
> - 1 file changed, 5 insertions(+), 1 deletion(-)
> -
> ---- a/drivers/net/phy/ar40xx.c
> -+++ b/drivers/net/phy/ar40xx.c
> -@@ -1200,7 +1200,11 @@ ar40xx_init_port(struct ar40xx_priv *pri
> - ar40xx_rmw(priv, AR40XX_REG_PORT_STATUS(port),
> - AR40XX_PORT_AUTO_LINK_EN, 0);
> -
> -- ar40xx_write(priv, AR40XX_REG_PORT_HEADER(port), 0);
> -+ /* CPU port is setting headers to limit output ports */
> -+ if (port == 0)
> -+ ar40xx_write(priv, AR40XX_REG_PORT_HEADER(port), 0x8);
> -+ else
> -+ ar40xx_write(priv, AR40XX_REG_PORT_HEADER(port), 0);
> -
> - ar40xx_write(priv, AR40XX_REG_PORT_VLAN0(port), 0);
> -
> -@@ -1243,6 +1247,10 @@ ar40xx_init_globals(struct ar40xx_priv *
> - t = (AR40XX_PORT0_FC_THRESH_ON_DFLT << 16) |
> - AR40XX_PORT0_FC_THRESH_OFF_DFLT;
> - ar40xx_write(priv, AR40XX_REG_PORT_FLOWCTRL_THRESH(0), t);
> -+
> -+ /* set service tag to 802.1q */
> -+ t = ETH_P_8021Q | AR40XX_ESS_SERVICE_TAG_STAG;
> -+ ar40xx_write(priv, AR40XX_ESS_SERVICE_TAG, t);
> - }
> -
> - static void
> -@@ -1568,7 +1576,11 @@ ar40xx_setup_port(struct ar40xx_priv *pr
> - u32 pvid = priv->vlan_id[priv->pvid[port]];
> -
> - if (priv->vlan) {
> -- egress = AR40XX_PORT_VLAN1_OUT_MODE_UNMOD;
> -+ if (priv->vlan_tagged & BIT(port))
> -+ egress = AR40XX_PORT_VLAN1_OUT_MODE_TAG;
> -+ else
> -+ egress =
> AR40XX_PORT_VLAN1_OUT_MODE_UNMOD;
> -+
> - ingress = AR40XX_IN_SECURE;
> - } else {
> - egress = AR40XX_PORT_VLAN1_OUT_MODE_UNTOUCH;
> -@@ -1579,8 +1591,17 @@ ar40xx_setup_port(struct ar40xx_priv *pr
> - t |= pvid << AR40XX_PORT_VLAN0_DEF_CVID_S;
> - ar40xx_write(priv, AR40XX_REG_PORT_VLAN0(port), t);
> -
> -- t = AR40XX_PORT_VLAN1_PORT_VLAN_PROP;
> -- t |= egress << AR40XX_PORT_VLAN1_OUT_MODE_S;
> -+ t = egress << AR40XX_PORT_VLAN1_OUT_MODE_S;
> -+
> -+ /* set CPU port to core port */
> -+ if (port == 0)
> -+ t |= AR40XX_PORT_VLAN1_CORE_PORT;
> -+
> -+ if (priv->vlan_tagged & BIT(port))
> -+ t |= AR40XX_PORT_VLAN1_PORT_VLAN_PROP;
> -+ else
> -+ t |= AR40XX_PORT_VLAN1_PORT_TLS_MODE;
> -+
> - ar40xx_write(priv, AR40XX_REG_PORT_VLAN1(port), t);
> -
> - t = members;
> ---- a/drivers/net/ethernet/qualcomm/essedma/edma_axi.c
> -+++ b/drivers/net/ethernet/qualcomm/essedma/edma_axi.c
> -@@ -970,7 +970,6 @@ static int edma_axi_probe(struct platfor
> - edma_netdev[i]->netdev_ops = &edma_axi_netdev_ops;
> - edma_netdev[i]->max_mtu = 9000;
> - edma_netdev[i]->features = NETIF_F_HW_CSUM |
> NETIF_F_RXCSUM
> -- | NETIF_F_HW_VLAN_CTAG_TX
> - | NETIF_F_HW_VLAN_CTAG_RX |
> NETIF_F_SG |
> - NETIF_F_TSO | NETIF_F_GRO;
> - edma_netdev[i]->hw_features = NETIF_F_HW_CSUM |
> NETIF_F_RXCSUM |
> -@@ -982,10 +981,10 @@ static int edma_axi_probe(struct platfor
> - NETIF_F_TSO | NETIF_F_GRO;
> -
> - #ifdef CONFIG_RFS_ACCEL
> -- edma_netdev[i]->features |= NETIF_F_RXHASH |
> NETIF_F_NTUPLE;
> -- edma_netdev[i]->hw_features |= NETIF_F_RXHASH |
> NETIF_F_NTUPLE;
> -- edma_netdev[i]->vlan_features |= NETIF_F_RXHASH |
> NETIF_F_NTUPLE;
> -- edma_netdev[i]->wanted_features |= NETIF_F_RXHASH |
> NETIF_F_NTUPLE;
> -+ edma_netdev[i]->features |= NETIF_F_NTUPLE;
> -+ edma_netdev[i]->hw_features |= NETIF_F_NTUPLE;
> -+ edma_netdev[i]->vlan_features |= NETIF_F_NTUPLE;
> -+ edma_netdev[i]->wanted_features |= NETIF_F_NTUPLE;
> - #endif
> - edma_set_ethtool_ops(edma_netdev[i]);
> -
> ---- a/drivers/net/phy/ar40xx.h
> -+++ b/drivers/net/phy/ar40xx.h
> -@@ -151,6 +151,9 @@ struct ar40xx_mib_desc {
> - #define AR40XX_MIB_FUNC_NO_OP 0x0
> - #define AR40XX_MIB_FUNC_FLUSH 0x1
> -
> -+#define AR40XX_ESS_SERVICE_TAG 0x48
> -+#define AR40XX_ESS_SERVICE_TAG_STAG BIT(17)
> -+
> - #define AR40XX_REG_PORT_STATUS(_i) (0x07c + (_i) * 4)
> - #define AR40XX_PORT_SPEED BITS(0, 2)
> - #define AR40XX_PORT_STATUS_SPEED_S 0
> -@@ -179,6 +182,8 @@ struct ar40xx_mib_desc {
> - #define AR40XX_PORT_VLAN0_DEF_CVID_S 16
> -
> - #define AR40XX_REG_PORT_VLAN1(_i) (0x424 + (_i) * 0x8)
> -+#define AR40XX_PORT_VLAN1_CORE_PORT BIT(9)
> -+#define AR40XX_PORT_VLAN1_PORT_TLS_MODE BIT(7)
> - #define AR40XX_PORT_VLAN1_PORT_VLAN_PROP BIT(6)
> - #define AR40XX_PORT_VLAN1_OUT_MODE BITS(12, 2)
> - #define AR40XX_PORT_VLAN1_OUT_MODE_S 12
> --
> 2.29.2
>
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: openpgp-digital-signature.asc
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://lists.openwrt.org/pipermail/openwrt-devel/attachments/20201120/18e74de4/attachment.sig>
More information about the openwrt-devel
mailing list