From 31f8780b0ed4476143121016c47fa53df8082d75 Mon Sep 17 00:00:00 2001 From: Chen Minqiang Date: Thu, 15 Mar 2018 05:46:42 +0800 Subject: [PATCH] ipq40xx: essedma: disable default vlan tagging original idea by chunkeey The essedma driver has its own unique take on VLAN management and its configuration. In the original SDK, each VLAN is assigned one virtual ethernet netdev. However, this is non-standard. So, this patch does away with the default_vlan_tag property the driver is using and therefore forces the user to use the kernel's vlan feature. Unfortunately, this change will cause the essedma driver to leak LAN<->WAN during LEDE bootup. Signed-off-by: Chen Minqiang --- .../files/arch/arm/boot/dts/qcom-ipq4018-a42.dts | 16 ---------------- .../arch/arm/boot/dts/qcom-ipq4018-ap120c-ac.dts | 16 ---------------- .../arch/arm/boot/dts/qcom-ipq4018-eap1300.dts | 8 -------- .../arch/arm/boot/dts/qcom-ipq4018-emr3500.dts | 8 -------- .../arch/arm/boot/dts/qcom-ipq4018-jalapeno.dtsi | 14 -------------- .../files/arch/arm/boot/dts/qcom-ipq4019-a62.dts | 8 -------- .../arch/arm/boot/dts/qcom-ipq4019-eap2200.dts | 4 ---- .../arch/arm/boot/dts/qcom-ipq4019-wpj419.dts | 16 ---------------- .../arch/arm/boot/dts/qcom-ipq4028-wpj428.dts | 16 ---------------- .../drivers/net/ethernet/qualcomm/essedma/edma.c | 12 +++++------- 10 files changed, 5 insertions(+), 113 deletions(-) diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-a42.dts b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-a42.dts index 3861a7cb24..6430e2a088 100644 --- a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-a42.dts +++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-a42.dts @@ -175,22 +175,6 @@ status = "okay"; }; -&gmac0 { - qcom,phy_mdio_addr = <4>; - qcom,poll_required = <1>; - qcom,forced_speed = <1000>; - qcom,forced_duplex = <1>; - vlan_tag = <2 0x20>; -}; - -&gmac1 { - qcom,phy_mdio_addr = <3>; - qcom,poll_required = <1>; - qcom,forced_speed = <1000>; - qcom,forced_duplex = <1>; - vlan_tag = <1 0x10>; -}; - &usb2_hs_phy { status = "okay"; }; diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-ap120c-ac.dts b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-ap120c-ac.dts index c35ce5ccc4..f87514821f 100644 --- a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-ap120c-ac.dts +++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-ap120c-ac.dts @@ -266,22 +266,6 @@ #gpio-cells = <2>; }; -&gmac0 { - qcom,forced_duplex = <1>; - qcom,forced_speed = <1000>; - qcom,phy_mdio_addr = <3>; - qcom,poll_required = <1>; - vlan_tag = <1 0x10>; -}; - -&gmac1 { - qcom,forced_duplex = <1>; - qcom,forced_speed = <1000>; - qcom,phy_mdio_addr = <4>; - qcom,poll_required = <1>; - vlan_tag = <2 0x20>; -}; - &tlmm { i2c0_pins: i2c0_pinmux { mux_i2c { diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-eap1300.dts b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-eap1300.dts index 054d4ba8cb..4daf58a036 100644 --- a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-eap1300.dts +++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-eap1300.dts @@ -227,14 +227,6 @@ status = "okay"; }; -&gmac0 { - vlan_tag = <2 0x20>; -}; - -&gmac1 { - vlan_tag = <1 0x10>; -}; - &wifi0 { status = "okay"; qcom,ath10k-calibration-variant = "EnGenius-EAP1300"; diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-emr3500.dts b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-emr3500.dts index c1313e8bb0..1f6cc43c36 100644 --- a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-emr3500.dts +++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-emr3500.dts @@ -222,14 +222,6 @@ status = "okay"; }; -&gmac0 { - vlan_tag = <1 0x10>; -}; - -&gmac1 { - vlan_tag = <2 0x20>; -}; - &usb2_hs_phy { status = "okay"; }; diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-jalapeno.dtsi b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-jalapeno.dtsi index 3af6de1f60..2da5b0aa91 100644 --- a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-jalapeno.dtsi +++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-jalapeno.dtsi @@ -230,20 +230,6 @@ status = "okay"; }; -&gmac0 { - qcom,poll_required = <1>; - qcom,poll_required_dynamic = <1>; - qcom,phy_mdio_addr = <3>; - vlan_tag = <1 0x10>; -}; - -&gmac1 { - qcom,poll_required = <1>; - qcom,poll_required_dynamic = <1>; - qcom,phy_mdio_addr = <4>; - vlan_tag = <2 0x20>; -}; - &wifi0 { status = "okay"; diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-a62.dts b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-a62.dts index fe8092fbf3..772bc4b51b 100644 --- a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-a62.dts +++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-a62.dts @@ -185,14 +185,6 @@ status = "okay"; }; -&gmac0 { - qcom,phy_mdio_addr = <3>; - qcom,poll_required = <1>; - qcom,forced_speed = <1000>; - qcom,forced_duplex = <1>; - vlan_tag = <1 0x10>; -}; - &usb2_hs_phy { status = "okay"; }; diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-eap2200.dts b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-eap2200.dts index 89cc8b1c4f..80d94e179e 100644 --- a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-eap2200.dts +++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-eap2200.dts @@ -181,10 +181,6 @@ status = "okay"; }; -&gmac0 { - vlan_tag = <1 0x10>; -}; - &nand { pinctrl-0 = <&nand_pins>; pinctrl-names = "default"; diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-wpj419.dts b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-wpj419.dts index beb59ff977..a072863464 100644 --- a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-wpj419.dts +++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-wpj419.dts @@ -362,22 +362,6 @@ }; }; -&gmac0 { - qcom,phy_mdio_addr = <4>; - qcom,poll_required = <1>; - qcom,forced_speed = <1000>; - qcom,forced_duplex = <1>; - vlan_tag = <2 0x20>; -}; - -&gmac1 { - qcom,phy_mdio_addr = <3>; - qcom,poll_required = <1>; - qcom,forced_speed = <1000>; - qcom,forced_duplex = <1>; - vlan_tag = <1 0x10>; -}; - &wifi0 { status = "okay"; }; diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4028-wpj428.dts b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4028-wpj428.dts index 27ec0ce7b3..b64f0d78f1 100644 --- a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4028-wpj428.dts +++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4028-wpj428.dts @@ -260,22 +260,6 @@ status = "okay"; }; -&gmac0 { - qcom,phy_mdio_addr = <4>; - qcom,poll_required = <1>; - qcom,forced_speed = <1000>; - qcom,forced_duplex = <1>; - vlan_tag = <2 0x20>; -}; - -&gmac1 { - qcom,phy_mdio_addr = <3>; - qcom,poll_required = <1>; - qcom,forced_speed = <1000>; - qcom,forced_duplex = <1>; - vlan_tag = <1 0x10>; -}; - &usb3_ss_phy { status = "okay"; }; diff --git a/target/linux/ipq40xx/files/drivers/net/ethernet/qualcomm/essedma/edma.c b/target/linux/ipq40xx/files/drivers/net/ethernet/qualcomm/essedma/edma.c index 40c69ee763..cd13517fad 100644 --- a/target/linux/ipq40xx/files/drivers/net/ethernet/qualcomm/essedma/edma.c +++ b/target/linux/ipq40xx/files/drivers/net/ethernet/qualcomm/essedma/edma.c @@ -729,13 +729,11 @@ static u16 edma_rx_complete(struct edma_common_info *edma_cinfo, edma_receive_checksum(rd, skb); /* Process VLAN HW acceleration indication provided by HW */ - if (unlikely(adapter->default_vlan_tag != rd->rrd4)) { - vlan = rd->rrd4; - if (likely(rd->rrd7 & EDMA_RRD_CVLAN)) - __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), vlan); - else if (rd->rrd1 & EDMA_RRD_SVLAN) - __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021AD), vlan); - } + vlan = rd->rrd4; + if (likely(rd->rrd7 & EDMA_RRD_CVLAN)) + __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), vlan); + else if (rd->rrd1 & EDMA_RRD_SVLAN) + __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021AD), vlan); /* Update rx statistics */ adapter->stats.rx_packets++;