From 3d79ad3f05e58a016e1481fb39d80dcd3ff2cc66 Mon Sep 17 00:00:00 2001 From: David Bauer Date: Tue, 1 Dec 2020 18:55:27 +0100 Subject: [PATCH] ipq40xx: revert usage of VLAN S-TAG This reverts the usage of the S-Tag for separating LAN and WAN port on the embedded switch. Many users complained about not being able to manage C-Tag addition / removal on the switch as well as degraded performance. Fixes: commit 9da2b567605b ("ipq40xx: fix ethernet vlan double tagging") Signed-off-by: David Bauer --- .../drivers/net/ethernet/qualcomm/essedma/edma.c | 12 ++++-------- .../drivers/net/ethernet/qualcomm/essedma/edma_axi.c | 11 +++++------ 2 files changed, 9 insertions(+), 14 deletions(-) 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 529ede5371..ed96f38bb7 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 @@ -156,10 +156,8 @@ static void edma_configure_rx(struct edma_common_info *edma_cinfo) /* Set Rx FIFO threshold to start to DMA data to host */ rxq_ctrl_data = EDMA_FIFO_THRESH_128_BYTE; - if (!edma_cinfo->is_single_phy) { /* Set RX remove vlan bit */ rxq_ctrl_data |= EDMA_RXQ_CTRL_RMV_VLAN; - } edma_write_reg(EDMA_REG_RXQ_CTRL, rxq_ctrl_data); } @@ -1403,12 +1401,10 @@ netdev_tx_t edma_xmit(struct sk_buff *skb, } /* Check and mark VLAN tag offload */ - if (!adapter->edma_cinfo->is_single_phy) { - if (unlikely(skb_vlan_tag_present(skb))) - flags_transmit |= EDMA_VLAN_TX_TAG_INSERT_FLAG; - else if (adapter->default_vlan_tag) - flags_transmit |= EDMA_VLAN_TX_TAG_INSERT_DEFAULT_FLAG; - } + if (unlikely(skb_vlan_tag_present(skb))) + flags_transmit |= EDMA_VLAN_TX_TAG_INSERT_FLAG; + else if (!adapter->edma_cinfo->is_single_phy && adapter->default_vlan_tag) + flags_transmit |= EDMA_VLAN_TX_TAG_INSERT_DEFAULT_FLAG; /* Check and mark checksum offload */ if (likely(skb->ip_summed == CHECKSUM_PARTIAL)) diff --git a/target/linux/ipq40xx/files/drivers/net/ethernet/qualcomm/essedma/edma_axi.c b/target/linux/ipq40xx/files/drivers/net/ethernet/qualcomm/essedma/edma_axi.c index 17bc34c4e3..3868d48154 100644 --- a/target/linux/ipq40xx/files/drivers/net/ethernet/qualcomm/essedma/edma_axi.c +++ b/target/linux/ipq40xx/files/drivers/net/ethernet/qualcomm/essedma/edma_axi.c @@ -956,9 +956,8 @@ static int edma_axi_probe(struct platform_device *pdev) 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; + NETIF_F_TSO | NETIF_F_GRO | NETIF_F_HW_VLAN_CTAG_TX; edma_netdev[i]->hw_features = NETIF_F_HW_CSUM | NETIF_F_RXCSUM | NETIF_F_HW_VLAN_CTAG_RX | NETIF_F_SG | NETIF_F_TSO | NETIF_F_GRO; @@ -968,10 +967,10 @@ static int edma_axi_probe(struct platform_device *pdev) 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 | NETIF_F_RXHASH; + edma_netdev[i]->hw_features |= NETIF_F_NTUPLE | NETIF_F_RXHASH; + edma_netdev[i]->vlan_features |= NETIF_F_NTUPLE | NETIF_F_RXHASH; + edma_netdev[i]->wanted_features |= NETIF_F_NTUPLE | NETIF_F_RXHASH; #endif edma_set_ethtool_ops(edma_netdev[i]);