mirror of https://github.com/hak5/openwrt.git
ramips: remove fake vlan rx offload from ethernet driver
The network stack does not need it to do GRO Signed-off-by: Felix Fietkau <nbd@nbd.name>lede-17.01
parent
94e23bf740
commit
82dcbec727
|
@ -600,7 +600,7 @@ Signed-off-by: Michael Lee <igvtee@gmail.com>
|
||||||
+#endif
|
+#endif
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -0,0 +1,1607 @@
|
@@ -0,0 +1,1587 @@
|
||||||
+/* This program is free software; you can redistribute it and/or modify
|
+/* This program is free software; you can redistribute it and/or modify
|
||||||
+ * it under the terms of the GNU General Public License as published by
|
+ * it under the terms of the GNU General Public License as published by
|
||||||
+ * the Free Software Foundation; version 2 of the License
|
+ * the Free Software Foundation; version 2 of the License
|
||||||
|
@ -1400,20 +1400,6 @@ Signed-off-by: Michael Lee <igvtee@gmail.com>
|
||||||
+ return NETDEV_TX_OK;
|
+ return NETDEV_TX_OK;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+static inline void fe_rx_vlan(struct sk_buff *skb)
|
|
||||||
+{
|
|
||||||
+ struct ethhdr *ehdr;
|
|
||||||
+ u16 vlanid;
|
|
||||||
+
|
|
||||||
+ if (!__vlan_get_tag(skb, &vlanid)) {
|
|
||||||
+ /* pop the vlan tag */
|
|
||||||
+ ehdr = (struct ethhdr *)skb->data;
|
|
||||||
+ memmove(skb->data + VLAN_HLEN, ehdr, ETH_ALEN * 2);
|
|
||||||
+ skb_pull(skb, VLAN_HLEN);
|
|
||||||
+ __vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), vlanid);
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int fe_poll_rx(struct napi_struct *napi, int budget,
|
+static int fe_poll_rx(struct napi_struct *napi, int budget,
|
||||||
+ struct fe_priv *priv, u32 rx_intr)
|
+ struct fe_priv *priv, u32 rx_intr)
|
||||||
+{
|
+{
|
||||||
|
@ -1427,7 +1413,6 @@ Signed-off-by: Michael Lee <igvtee@gmail.com>
|
||||||
+ u8 *data, *new_data;
|
+ u8 *data, *new_data;
|
||||||
+ struct fe_rx_dma *rxd, trxd;
|
+ struct fe_rx_dma *rxd, trxd;
|
||||||
+ int done = 0, pad;
|
+ int done = 0, pad;
|
||||||
+ bool rx_vlan = netdev->features & NETIF_F_HW_VLAN_CTAG_RX;
|
|
||||||
+
|
+
|
||||||
+ if (netdev->features & NETIF_F_RXCSUM)
|
+ if (netdev->features & NETIF_F_RXCSUM)
|
||||||
+ checksum_bit = soc->checksum_bit;
|
+ checksum_bit = soc->checksum_bit;
|
||||||
|
@ -1483,8 +1468,6 @@ Signed-off-by: Michael Lee <igvtee@gmail.com>
|
||||||
+ skb->ip_summed = CHECKSUM_UNNECESSARY;
|
+ skb->ip_summed = CHECKSUM_UNNECESSARY;
|
||||||
+ else
|
+ else
|
||||||
+ skb_checksum_none_assert(skb);
|
+ skb_checksum_none_assert(skb);
|
||||||
+ if (rx_vlan)
|
|
||||||
+ fe_rx_vlan(skb);
|
|
||||||
+ skb->protocol = eth_type_trans(skb, netdev);
|
+ skb->protocol = eth_type_trans(skb, netdev);
|
||||||
+
|
+
|
||||||
+ stats->rx_packets++;
|
+ stats->rx_packets++;
|
||||||
|
@ -2098,10 +2081,7 @@ Signed-off-by: Michael Lee <igvtee@gmail.com>
|
||||||
+
|
+
|
||||||
+ if (soc->init_data)
|
+ if (soc->init_data)
|
||||||
+ soc->init_data(soc, netdev);
|
+ soc->init_data(soc, netdev);
|
||||||
+ /* fake NETIF_F_HW_VLAN_CTAG_RX for good GRO performance */
|
+ netdev->vlan_features = netdev->hw_features & ~NETIF_F_HW_VLAN_CTAG_TX;
|
||||||
+ netdev->hw_features |= NETIF_F_HW_VLAN_CTAG_RX;
|
|
||||||
+ netdev->vlan_features = netdev->hw_features &
|
|
||||||
+ ~(NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_CTAG_RX);
|
|
||||||
+ netdev->features |= netdev->hw_features;
|
+ netdev->features |= netdev->hw_features;
|
||||||
+
|
+
|
||||||
+ /* fake rx vlan filter func. to support tx vlan offload func */
|
+ /* fake rx vlan filter func. to support tx vlan offload func */
|
||||||
|
|
|
@ -21,7 +21,7 @@ Signed-off-by: Michael Lee <igvtee@gmail.com>
|
||||||
|
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/drivers/net/ethernet/mediatek/soc_mt7621.c
|
+++ b/drivers/net/ethernet/mediatek/soc_mt7621.c
|
||||||
@@ -0,0 +1,186 @@
|
@@ -0,0 +1,185 @@
|
||||||
+/* This program is free software; you can redistribute it and/or modify
|
+/* This program is free software; you can redistribute it and/or modify
|
||||||
+ * it under the terms of the GNU General Public License as published by
|
+ * it under the terms of the GNU General Public License as published by
|
||||||
+ * the Free Software Foundation; version 2 of the License
|
+ * the Free Software Foundation; version 2 of the License
|
||||||
|
@ -146,8 +146,7 @@ Signed-off-by: Michael Lee <igvtee@gmail.com>
|
||||||
+
|
+
|
||||||
+ /* mt7621 doesn't have txcsum config */
|
+ /* mt7621 doesn't have txcsum config */
|
||||||
+ mt7621_rxcsum_config((dev->features & NETIF_F_RXCSUM));
|
+ mt7621_rxcsum_config((dev->features & NETIF_F_RXCSUM));
|
||||||
+ mt7621_rxvlan_config((dev->features & NETIF_F_HW_VLAN_CTAG_RX) &&
|
+ mt7621_rxvlan_config(priv->flags & FE_FLAG_RX_VLAN_CTAG);
|
||||||
+ (priv->flags & FE_FLAG_RX_VLAN_CTAG));
|
|
||||||
+
|
+
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+}
|
+}
|
||||||
|
|
|
@ -858,7 +858,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
+#endif
|
+#endif
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -1308,8 +1308,13 @@ static int __init fe_init(struct net_dev
|
@@ -1291,8 +1291,13 @@ static int __init fe_init(struct net_dev
|
||||||
}
|
}
|
||||||
|
|
||||||
err = fe_hw_init(dev);
|
err = fe_hw_init(dev);
|
||||||
|
|
|
@ -10,7 +10,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
|
|
||||||
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
||||||
@@ -1344,6 +1344,9 @@ static int fe_do_ioctl(struct net_device
|
@@ -1327,6 +1327,9 @@ static int fe_do_ioctl(struct net_device
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
|
|
Loading…
Reference in New Issue