From 6db7a01cbb85465d757f9a02b84e5667c2ae9595 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Fri, 17 Jul 2020 18:25:52 +0800 Subject: [PATCH] Revert "ipq40xx: fix ethernet vlan double tagging" This reverts commit f4689c739bb48eb8bfd0b055b75257113ec3ce36 and a5ac9604663dcc0e6e0f4bb5f9e51e211c834708. --- package/network/config/gre/files/gre.sh | 21 +- package/network/config/ipip/files/ipip.sh | 2 - .../{20-smp-tune => 20-smp-packet-steering} | 22 +- .../etc/uci-defaults/14_migrate-dhcp-release | 23 +++ .../netifd/files/lib/netifd/dhcp.script | 8 +- .../netifd/files/lib/netifd/proto/dhcp.sh | 10 +- .../config/netifd/files/lib/network/config.sh | 4 +- package/network/config/netifd/files/sbin/ifup | 2 +- package/network/config/vti/files/vti.sh | 2 - package/network/config/xfrm/files/xfrm.sh | 2 - .../716-essedma-vlan-double-tag.patch | 193 ------------------ 11 files changed, 63 insertions(+), 226 deletions(-) rename package/network/config/netifd/files/etc/hotplug.d/net/{20-smp-tune => 20-smp-packet-steering} (72%) create mode 100644 package/network/config/netifd/files/etc/uci-defaults/14_migrate-dhcp-release delete mode 100644 target/linux/ipq40xx/patches-4.14/716-essedma-vlan-double-tag.patch diff --git a/package/network/config/gre/files/gre.sh b/package/network/config/gre/files/gre.sh index ca11e87cfd..eb3df5b48c 100755 --- a/package/network/config/gre/files/gre.sh +++ b/package/network/config/gre/files/gre.sh @@ -13,10 +13,9 @@ gre_generic_setup() { local local="$3" local remote="$4" local link="$5" - local mtu ttl tos zone ikey okey icsum ocsum iseqno oseqno multicast - json_get_vars mtu ttl tos zone ikey okey icsum ocsum iseqno oseqno multicast + local mtu ipv6 ttl tos zone ikey okey icsum ocsum iseqno oseqno multicast + json_get_vars mtu ipv6 ttl tos zone ikey okey icsum ocsum iseqno oseqno multicast - [ -z "$zone" ] && zone="wan" [ -z "$multicast" ] && multicast=1 proto_init_update "$link" 1 @@ -24,6 +23,7 @@ gre_generic_setup() { proto_add_tunnel json_add_string mode "$mode" json_add_int mtu "${mtu:-1280}" + json_add_boolean ipv6 "${ipv6:-1}" [ -n "$df" ] && json_add_boolean df "$df" [ -n "$ttl" ] && json_add_int ttl "$ttl" [ -n "$tos" ] && json_add_string tos "$tos" @@ -57,7 +57,7 @@ gre_setup() { local remoteip local ipaddr peeraddr - json_get_vars df ipaddr peeraddr tunlink + json_get_vars df ipaddr peeraddr tunlink nohostroute [ -z "$peeraddr" ] && { proto_notify_error "$cfg" "MISSING_PEER_ADDRESS" @@ -77,7 +77,9 @@ gre_setup() { break done - ( proto_add_host_dependency "$cfg" "$peeraddr" "$tunlink" ) + if [ "${nohostroute}" != "1" ]; then + ( proto_add_host_dependency "$cfg" "$peeraddr" "$tunlink" ) + fi [ -z "$ipaddr" ] && { local wanif="$tunlink" @@ -134,7 +136,7 @@ grev6_setup() { local remoteip6 local ip6addr peer6addr weakif - json_get_vars ip6addr peer6addr tunlink weakif encaplimit + json_get_vars ip6addr peer6addr tunlink weakif encaplimit nohostroute [ -z "$peer6addr" ] && { proto_notify_error "$cfg" "MISSING_PEER_ADDRESS" @@ -154,7 +156,9 @@ grev6_setup() { break done - ( proto_add_host_dependency "$cfg" "$peer6addr" "$tunlink" ) + if [ "${nohostroute}" != "1" ]; then + ( proto_add_host_dependency "$cfg" "$peer6addr" "$tunlink" ) + fi [ -z "$ip6addr" ] && { local wanif="$tunlink" @@ -245,6 +249,7 @@ gre_generic_init_config() { available=1 proto_config_add_int "mtu" + proto_config_add_boolean "ipv6" proto_config_add_int "ttl" proto_config_add_string "tos" proto_config_add_string "tunlink" @@ -263,6 +268,7 @@ proto_gre_init_config() { proto_config_add_string "ipaddr" proto_config_add_string "peeraddr" proto_config_add_boolean "df" + proto_config_add_boolean "nohostroute" } proto_gretap_init_config() { @@ -276,6 +282,7 @@ proto_grev6_init_config() { proto_config_add_string "peer6addr" proto_config_add_string "weakif" proto_config_add_string "encaplimit" + proto_config_add_boolean "nohostroute" } proto_grev6tap_init_config() { diff --git a/package/network/config/ipip/files/ipip.sh b/package/network/config/ipip/files/ipip.sh index f1c94d6eed..15b1c978e3 100755 --- a/package/network/config/ipip/files/ipip.sh +++ b/package/network/config/ipip/files/ipip.sh @@ -47,8 +47,6 @@ proto_ipip_setup() { fi } - [ -z "$zone" ] && zone="wan" - proto_init_update "ipip-$cfg" 1 proto_add_tunnel diff --git a/package/network/config/netifd/files/etc/hotplug.d/net/20-smp-tune b/package/network/config/netifd/files/etc/hotplug.d/net/20-smp-packet-steering similarity index 72% rename from package/network/config/netifd/files/etc/hotplug.d/net/20-smp-tune rename to package/network/config/netifd/files/etc/hotplug.d/net/20-smp-packet-steering index ab9a90418e..8a86bf75f6 100644 --- a/package/network/config/netifd/files/etc/hotplug.d/net/20-smp-tune +++ b/package/network/config/netifd/files/etc/hotplug.d/net/20-smp-packet-steering @@ -14,7 +14,7 @@ find_irq_cpu() { [ -n "$match" ] && { set -- $match shift - for cur in `seq 1 $NPROCS`; do + for cur in $(seq 1 $NPROCS); do [ "$1" -gt 0 ] && { cpu=$(($cur - 1)) break @@ -34,8 +34,8 @@ set_hex_val() { echo "$val" > "$file" } -default_ps="$(uci get "network.@globals[0].default_ps")" -[ -n "$default_ps" -a "$default_ps" != 1 ] && exit 0 +packet_steering="$(uci get "network.@globals[0].packet_steering")" +[ "$packet_steering" != 1 ] && exit 0 exec 512>/var/lock/smp_tune.lock flock 512 || exit 1 @@ -52,16 +52,16 @@ for dev in /sys/class/net/*; do irq_cpu="$(find_irq_cpu "$device")" irq_cpu_mask="$((1 << $irq_cpu))" - for q in ${dev}/queues/rx-*; do - set_hex_val "$q/rps_cpus" "$(($PROC_MASK & ~$irq_cpu_mask))" + for q in ${dev}/queues/tx-*; do + set_hex_val "$q/xps_cpus" "$PROC_MASK" done - ntxq="$(ls -d ${dev}/queues/tx-* | wc -l)" + # ignore dsa slave ports for RPS + subsys="$(readlink "${dev}/device/subsystem")" + subsys="$(basename "$subsys")" + [ "$subsys" = "mdio_bus" ] && continue - idx=$(($irq_cpu + 1)) - for q in ${dev}/queues/tx-*; do - set_hex_val "$q/xps_cpus" "$((1 << $idx))" - let "idx = idx + 1" - [ "$idx" -ge "$NPROCS" ] && idx=0 + for q in ${dev}/queues/rx-*; do + set_hex_val "$q/rps_cpus" "$PROC_MASK" done done diff --git a/package/network/config/netifd/files/etc/uci-defaults/14_migrate-dhcp-release b/package/network/config/netifd/files/etc/uci-defaults/14_migrate-dhcp-release new file mode 100644 index 0000000000..f1b384eecc --- /dev/null +++ b/package/network/config/netifd/files/etc/uci-defaults/14_migrate-dhcp-release @@ -0,0 +1,23 @@ +. /lib/functions.sh + +migrate_release() { + local config="$1" + local proto + local release + + config_get proto "$config" proto + config_get release "$config" release + + [ "$proto" = "dhcp" ] && [ -n "$release" ] && { + norelease="$((!$release))" + uci_set network "$config" norelease "$norelease" + uci_remove network "$config" release + } + +} + +config_load network +config_foreach migrate_release interface +uci commit network + +exit 0 diff --git a/package/network/config/netifd/files/lib/netifd/dhcp.script b/package/network/config/netifd/files/lib/netifd/dhcp.script index 00604f40e7..6585b641d6 100755 --- a/package/network/config/netifd/files/lib/netifd/dhcp.script +++ b/package/network/config/netifd/files/lib/netifd/dhcp.script @@ -46,10 +46,16 @@ setup_interface () { proto_add_dns_search "$i" done + # TODO: Deprecate timesvr in favor of timesrv + if [ -n "$timesvr" -a -z "$timesrv" ]; then + timesrv="$timesvr" + echo "Environment variable 'timesvr' will be deprecated; use 'timesrv' instead." + fi + proto_add_data [ -n "$ZONE" ] && json_add_string zone "$ZONE" [ -n "$ntpsrv" ] && json_add_string ntpserver "$ntpsrv" - [ -n "$timesvr" ] && json_add_string timeserver "$timesvr" + [ -n "$timesrv" ] && json_add_string timeserver "$timesrv" [ -n "$hostname" ] && json_add_string hostname "$hostname" [ -n "$message" ] && json_add_string message "$message" [ -n "$timezone" ] && json_add_int timezone "$timezone" diff --git a/package/network/config/netifd/files/lib/netifd/proto/dhcp.sh b/package/network/config/netifd/files/lib/netifd/proto/dhcp.sh index 0d06eba06e..3034b2ba68 100755 --- a/package/network/config/netifd/files/lib/netifd/proto/dhcp.sh +++ b/package/network/config/netifd/files/lib/netifd/proto/dhcp.sh @@ -14,7 +14,7 @@ proto_dhcp_init_config() { proto_config_add_string clientid proto_config_add_string vendorid proto_config_add_boolean 'broadcast:bool' - proto_config_add_boolean 'release:bool' + proto_config_add_boolean 'norelease:bool' proto_config_add_string 'reqopts:list(string)' proto_config_add_boolean 'defaultreqopts:bool' proto_config_add_string iface6rd @@ -35,8 +35,8 @@ proto_dhcp_setup() { local config="$1" local iface="$2" - local ipaddr hostname clientid vendorid broadcast release reqopts defaultreqopts iface6rd sendopts delegate zone6rd zone mtu6rd customroutes classlessroute - json_get_vars ipaddr hostname clientid vendorid broadcast release reqopts defaultreqopts iface6rd delegate zone6rd zone mtu6rd customroutes classlessroute + local ipaddr hostname clientid vendorid broadcast norelease reqopts defaultreqopts iface6rd sendopts delegate zone6rd zone mtu6rd customroutes classlessroute + json_get_vars ipaddr hostname clientid vendorid broadcast norelease reqopts defaultreqopts iface6rd delegate zone6rd zone mtu6rd customroutes classlessroute local opt dhcpopts for opt in $reqopts; do @@ -50,7 +50,7 @@ proto_dhcp_setup() { [ "$defaultreqopts" = 0 ] && defaultreqopts="-o" || defaultreqopts= [ "$broadcast" = 1 ] && broadcast="-B" || broadcast= - [ "$release" = 1 ] && release="-R" || release= + [ "$norelease" = 1 ] && norelease="" || norelease="-R" [ -n "$clientid" ] && clientid="-x 0x3d:${clientid//:/}" || clientid="-C" [ -n "$iface6rd" ] && proto_export "IFACE6RD=$iface6rd" [ "$iface6rd" != 0 -a -f /lib/netifd/proto/6rd.sh ] && append dhcpopts "-O 212" @@ -70,7 +70,7 @@ proto_dhcp_setup() { ${ipaddr:+-r $ipaddr} \ ${hostname:+-x "hostname:$hostname"} \ ${vendorid:+-V "$vendorid"} \ - $clientid $defaultreqopts $broadcast $release $dhcpopts + $clientid $defaultreqopts $broadcast $norelease $dhcpopts } proto_dhcp_renew() { diff --git a/package/network/config/netifd/files/lib/network/config.sh b/package/network/config/netifd/files/lib/network/config.sh index 0ded45edc4..4cd28e4ce1 100755 --- a/package/network/config/netifd/files/lib/network/config.sh +++ b/package/network/config/netifd/files/lib/network/config.sh @@ -6,13 +6,13 @@ find_config() { local device="$1" local ifdev ifl3dev ifobj - for ifobj in `ubus list network.interface.\*`; do + for ifobj in $(ubus list network.interface.\*); do interface="${ifobj##network.interface.}" ( json_load "$(ifstatus $interface)" json_get_var ifdev device json_get_var ifl3dev l3_device - if [[ "$device" = "$ifdev" ]] || [[ "$device" = "$ifl3dev" ]]; then + if [ "$device" = "$ifdev" ] || [ "$device" = "$ifl3dev" ]; then echo "$interface" exit 0 else diff --git a/package/network/config/netifd/files/sbin/ifup b/package/network/config/netifd/files/sbin/ifup index 5515b91f76..15be535bbf 100755 --- a/package/network/config/netifd/files/sbin/ifup +++ b/package/network/config/netifd/files/sbin/ifup @@ -37,7 +37,7 @@ done [ "$modes" = "down up" ] && ubus call network reload if [ -n "$ifup_all" ]; then - for interface in `ubus -S list 'network.interface.*'`; do + for interface in $(ubus -S list 'network.interface.*'); do if_call "${interface##network.interface.}" done [ -n "$setup_wifi" ] && /sbin/wifi up diff --git a/package/network/config/vti/files/vti.sh b/package/network/config/vti/files/vti.sh index 0443800a0c..ebfd9d41e1 100755 --- a/package/network/config/vti/files/vti.sh +++ b/package/network/config/vti/files/vti.sh @@ -16,8 +16,6 @@ vti_generic_setup() { local mtu zone ikey json_get_vars mtu zone ikey okey - [ -z "$zone" ] && zone="wan" - proto_init_update "$link" 1 proto_add_tunnel diff --git a/package/network/config/xfrm/files/xfrm.sh b/package/network/config/xfrm/files/xfrm.sh index edde93c35f..1bd1958726 100755 --- a/package/network/config/xfrm/files/xfrm.sh +++ b/package/network/config/xfrm/files/xfrm.sh @@ -28,8 +28,6 @@ proto_xfrm_setup() { ( proto_add_host_dependency "$cfg" '' "$tunlink" ) - [ -z "$zone" ] && zone="wan" - proto_init_update "$cfg" 1 proto_add_tunnel 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 f57804f3c7..0000000000 --- a/target/linux/ipq40xx/patches-4.14/716-essedma-vlan-double-tag.patch +++ /dev/null @@ -1,193 +0,0 @@ -From: Sven Eckelmann -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 - (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(-) - -diff --git a/drivers/net/phy/ar40xx.c b/drivers/net/phy/ar40xx.c -index e408e8f7312f749aeb29c73a589047856e9479c7..421399b9b33e6f42d4e38db3f90b0c1d514a0b79 100644 ---- a/drivers/net/phy/ar40xx.c -+++ b/drivers/net/phy/ar40xx.c -@@ -1200,7 +1200,11 @@ ar40xx_init_port(struct ar40xx_priv *priv, int port) - 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); - -From: Sven Eckelmann -Date: Fri, 17 Mar 2017 11:00:40 +0100 -Subject: [PATCH] ipq40xx: Disable CTAG TX VLAN offloading - -The driver requires the offloading to set the VLAN specific header for the -port selection. It can therefore not be used at the same time to offload -the setting of the VLAN header on top of essedma interface. - -Forwarded: no ---- - drivers/net/ethernet/qualcomm/essedma/edma_axi.c | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/drivers/net/ethernet/qualcomm/essedma/edma_axi.c b/drivers/net/ethernet/qualcomm/essedma/edma_axi.c -index 81fc1e1b64daa41b15f21634ac1f08de0f5822a7..db184b82769f53e1554a1c51c53414ef7cadd7f6 100644 ---- 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 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_TSO6 | NETIF_F_GRO; - edma_netdev[i]->hw_features = NETIF_F_HW_CSUM | NETIF_F_RXCSUM | -From: Sven Eckelmann -Date: Fri, 17 Mar 2017 11:04:50 +0100 -Subject: [PATCH] ar40xx: Enable QinQ on the switch - -The switch used in by IPQ40xx is using VLANs by default to select the -outgoing port. It was therefore not possible to sent or receive 802.1q -tagged frames over the CPU port. This can be allowed by changing the port -configuration and lookup configuration. - -The resulting VLAN-tagged frames send or received by the CPU will therefore -look like QinQ frames. The outer VLAN tag is the port-VLAN of the port from -which the data was received or towards which the data has to be sent. The -inner VLAN tag (when it exists) is the VLAN which was configrued on top of -the ethernet device. - -Forwarded: no ---- - drivers/net/phy/ar40xx.c | 23 ++++++++++++++++++++--- - drivers/net/phy/ar40xx.h | 5 +++++ - 2 files changed, 25 insertions(+), 3 deletions(-) - -diff --git a/drivers/net/phy/ar40xx.c b/drivers/net/phy/ar40xx.c -index 421399b9b33e6f42d4e38db3f90b0c1d514a0b79..4af26638d542a9ab5ca27454ce557233bcb64575 100644 ---- a/drivers/net/phy/ar40xx.c -+++ b/drivers/net/phy/ar40xx.c -@@ -1247,6 +1247,10 @@ ar40xx_init_globals(struct ar40xx_priv *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 -@@ -1572,7 +1576,11 @@ ar40xx_setup_port(struct ar40xx_priv *priv, int port, u32 members) - 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; -@@ -1583,8 +1591,17 @@ ar40xx_setup_port(struct ar40xx_priv *priv, int port, u32 members) - 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; -diff --git a/drivers/net/phy/ar40xx.h b/drivers/net/phy/ar40xx.h -index 722bf6ae4b32fcefa33e007ae34a3202315a3fe1..7ba40ccf753fe833e6a01b32cfe1407a317d92ee 100644 ---- 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 -From: Sven Eckelmann -Date: Wed, 29 Mar 2017 16:05:26 +0200 -Subject: [PATCH] ipq40xx: Disable NETIF_F_RXHASH support in essedma - -The NETIF_F_RXHASH requires that each skb set the hash correctly with -skb_set_hash. essedma tries to do that but the set hash always results in -only used CPU when RPS is allowed for all CPUs. - -Disabling RXHASH works around this problem for now. - -IssueID: #5477 -Forwarded: no - Upstream author was informed via e-mail about the problem ---- - drivers/net/ethernet/qualcomm/essedma/edma_axi.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/drivers/net/ethernet/qualcomm/essedma/edma_axi.c b/drivers/net/ethernet/qualcomm/essedma/edma_axi.c -index db184b82769f53e1554a1c51c53414ef7cadd7f6..975e119cfe6f1a8cfe54ac0eb8f8752aa4bf22af 100644 ---- a/drivers/net/ethernet/qualcomm/essedma/edma_axi.c -+++ b/drivers/net/ethernet/qualcomm/essedma/edma_axi.c -@@ -984,10 +984,10 @@ static int edma_axi_probe(struct platform_device *pdev) - 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]); -