ipq40xx: essedma: enable VLAN tag offload for single-port
authorDavid Bauer <mail@david-bauer.net>
Sat, 5 Sep 2020 23:24:00 +0000 (01:24 +0200)
committerDavid Bauer <mail@david-bauer.net>
Fri, 11 Sep 2020 15:37:11 +0000 (17:37 +0200)
Enable the VLAN tag offloading mechanism for RGMII single-port devices.
This allows those devices to use 802.1Q VLANs on the ethernet port.

Previously, RX frames were double tagged, as the RX TAG removal flag was
not enabled and an additional 802.1Q header was inserted elsewhere in
the code.

On the TX side, tagging was completely not present for single-port
devices. Enable tagging if an 802.1Q frame should be transmitted and
disable the default tagging mechanism for single-port devices.

Tested on Aruba AP-303

Signed-off-by: David Bauer <mail@david-bauer.net>
target/linux/ipq40xx/files-5.4/drivers/net/ethernet/qualcomm/essedma/edma.c

index 5561cc23eadfdba656a230ed6da5ff4d38757376..5f2630ae508d16375b2836d9a53b8680e8078620 100644 (file)
@@ -164,10 +164,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);
 }
@@ -1411,12 +1409,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))