Revert "ipq40xx: fix ethernet vlan double tagging"
This reverts commitf4689c739banda5ac960466.
This commit is contained in:
parent
17eed1a10c
commit
6db7a01cbb
@ -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() {
|
||||
|
||||
@ -47,8 +47,6 @@ proto_ipip_setup() {
|
||||
fi
|
||||
}
|
||||
|
||||
[ -z "$zone" ] && zone="wan"
|
||||
|
||||
proto_init_update "ipip-$cfg" 1
|
||||
|
||||
proto_add_tunnel
|
||||
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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"
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -1,193 +0,0 @@
|
||||
From: Sven Eckelmann <sven@narfation.org>
|
||||
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 <xiaofeis@codeaurora.org>
|
||||
(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 <sven@narfation.org>
|
||||
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 <sven@narfation.org>
|
||||
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 <sven@narfation.org>
|
||||
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]);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user