Opened 2 years ago

Closed 2 years ago

#4729 closed (invalid)

Interference Mitigation Commands Ignored in rc_startup

Reported by: Steve Jenkins Owned by:
Keywords: Cc:

Description

I discovered this while testing cases for #4121, but I'm filing a separate ticket since this bug occurs in rc_startup and not the GUI Commands (though it's possible the bugs might be related).

Hardware: E4200 v1 running dd-wrt.v24-27490_NEWD-2_K2.6_mega-nv60k.bin and Belkin F7D3302 / F7D7302 v1 running dd-wrt.v24-27490_NEWD-2_K2.6_mini.bin

Issue: Interference Mitigation Commands Ignored in rc_startup

First batch of tests all run on E4200 (which has dual radios):

Immediately following reboot:

root@gateway:~# nvram get rc_startup
wl -i eth1 interference 3
wl -i eth2 interference 3
ifconfig eth0 txqueuelen 5
echo 262144 > /proc/sys/net/core/rmem_max
echo 262144 > /proc/sys/net/core/wmem_max
echo "4096 87380 262144" > /proc/sys/net/ipv4/tcp_rmem
echo "4096 16384 262144" > /proc/sys/net/ipv4/tcp_wmem
echo 1000 > /proc/sys/net/core/netdev_max_backlog
echo 16384 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max
echo 16384 > /sys/module/nf_conntrack/parameters/hashsize
root@gateway:~# wl -i eth1 interference
root@gateway:~# wl -i eth2 interference
Non-wireless LAN Interference mitigation is enabled.
root@gateway:~# cat  /proc/sys/net/core/rmem_max
262144
root@gateway:~# cat /proc/sys/net/core/netdev_max_backlog
1000

Note that both interference commands for eth1 and eth2 are ignored (and strangely return different results to their respective queries), but the rest of the commands seem to be obeyed.

I repeated the test by adding a sleep command at the beginning of the startup script and rebooting:

root@gateway:~# nvram get rc_startup
sleep 10
wl -i eth1 interference 3
wl -i eth2 interference 3
ifconfig eth0 txqueuelen 5
echo 262144 > /proc/sys/net/core/rmem_max
echo 262144 > /proc/sys/net/core/wmem_max
echo "4096 87380 262144" > /proc/sys/net/ipv4/tcp_rmem
echo "4096 16384 262144" > /proc/sys/net/ipv4/tcp_wmem
echo 1000 > /proc/sys/net/core/netdev_max_backlog
echo 16384 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max
echo 16384 > /sys/module/nf_conntrack/parameters/hashsize
root@gateway:~# wl -i eth1 interference
root@gateway:~# wl -i eth2 interference
Auto Wireless LAN Interference mitigation is enabled and not active

Adding the sleep command allowed the eth2 interference command to work, but the eth1 command was still ignored.

Knowing there are strange issues with the eth1 interference mitigation from #4121, I repeated the test by removing the sleep and eth1 lines from rc_startup, putting the eth2 interference command as the second line, changing the txqueuelen for testing, and rebooting:

root@gateway:~# nvram get rc_startup
ifconfig eth0 txqueuelen 6
wl -i eth2 interference 3
echo 262144 > /proc/sys/net/core/rmem_max
echo 262144 > /proc/sys/net/core/wmem_max
echo "4096 87380 262144" > /proc/sys/net/ipv4/tcp_rmem
echo "4096 16384 262144" > /proc/sys/net/ipv4/tcp_wmem
echo 1000 > /proc/sys/net/core/netdev_max_backlog
echo 16384 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max
echo 16384 > /sys/module/nf_conntrack/parameters/hashsize
root@gateway:~# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 58:6D:XX:XX:XX:XX
          inet6 addr: feXX::5aXX:8fXX:feXX:XXXX/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:252502 errors:0 dropped:0 overruns:0 frame:0
          TX packets:251787 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:6
          RX bytes:234726163 (223.8 MiB)  TX bytes:233504550 (222.6 MiB)
          Interrupt:4 Base address:0x2000

root@gateway:~# wl -i eth2 interference
Non-wireless LAN Interference mitigation is enabled.
root@gateway:~# cat /proc/sys/net/core/rmem_max
262144
root@gateway:~# cat /proc/sys/net/core/wmem_max
262144

In the above test, it seems the 1st, 2nd, and 4th lines are obeyed, but the eth2 interference line is ignored (eth2 remained at the default setting of 1).

I re-inserted the sleep command prior to the eth2 interference line and rebooted:

root@gateway:~#  nvram get rc_startup
ifconfig eth0 txqueuelen 5
sleep 10
wl -i eth2 interference 3
echo 262144 > /proc/sys/net/core/rmem_max
echo 262144 > /proc/sys/net/core/wmem_max
echo "4096 87380 262144" > /proc/sys/net/ipv4/tcp_rmem
echo "4096 16384 262144" > /proc/sys/net/ipv4/tcp_wmem
echo 1000 > /proc/sys/net/core/netdev_max_backlog
echo 16384 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max
echo 16384 > /sys/module/nf_conntrack/parameters/hashsize
root@gateway:~# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 58:6D:XX:XX:XX:XX
          inet6 addr: feXX::5aXX:8fXX:feXX:XXXX/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:473129 errors:0 dropped:0 overruns:0 frame:0
          TX packets:472039 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:5
          RX bytes:442826448 (422.3 MiB)  TX bytes:440514939 (420.1 MiB)
          Interrupt:4 Base address:0x2000

root@gateway:~# wl -i eth2 interference
Auto Wireless LAN Interference mitigation is enabled and not active
root@gateway:~# cat /proc/sys/net/core/rmem_max
262144
root@gateway:~# cat /proc/sys/net/core/wmem_max
262144

This was the best I could achieve on the dual radio E4200. Trying an additional sleep command in before the eth1 interference command did not work:

root@gateway:~# nvram get rc_startup
ifconfig eth0 txqueuelen 5
sleep 10
wl -i eth1 interference 3
sleep 10
wl -i eth2 interference 3
echo 262144 > /proc/sys/net/core/rmem_max
echo 262144 > /proc/sys/net/core/wmem_max
echo "4096 87380 262144" > /proc/sys/net/ipv4/tcp_rmem
echo "4096 16384 262144" > /proc/sys/net/ipv4/tcp_wmem
echo 1000 > /proc/sys/net/core/netdev_max_backlog
echo 16384 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max
echo 16384 > /sys/module/nf_conntrack/parameters/hashsize
root@gateway:~# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 58:6D:XX:XX:XX:XX
          inet6 addr: feXX::5aXX:8fXX:feXX:XXXX/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:329733 errors:0 dropped:0 overruns:0 frame:0
          TX packets:328860 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:5
          RX bytes:309865837 (295.5 MiB)  TX bytes:308289003 (294.0 MiB)
          Interrupt:4 Base address:0x2000

root@gateway:~# wl -i eth1 interference
root@gateway:~# wl -i eth2 interference
Auto Wireless LAN Interference mitigation is enabled and not active
root@gateway:~# cat /proc/sys/net/core/rmem_max
262144

On a SINGLE radio Belkin F7D3302 / F7D7302 v1 I get the following:

root@ap-master:~# nvram get rc_startup
ifconfig eth0 txqueuelen 5
wl -i eth1 interference 3
echo 262144 > /proc/sys/net/core/rmem_max
echo 262144 > /proc/sys/net/core/wmem_max
echo "4096 16384 262144" > /proc/sys/net/ipv4/tcp_wmem
echo "4096 87380 262144" > /proc/sys/net/ipv4/tcp_rmem
echo 1000 > /proc/sys/net/core/netdev_max_backlog
echo 16384 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max
echo 16384 > /sys/module/nf_conntrack/parameters/hashsize
root@ap-master:~# wl -i eth1 interference
root@ap-master:~# cat /proc/sys/net/core/rmem_max
262144

As with the dual radio device, the interference command is ignored. But the sleep workaround does work:

root@ap-master:~# nvram get rc_startup
ifconfig eth0 txqueuelen 5
sleep 10
wl -i eth1 interference 3
echo 262144 > /proc/sys/net/core/rmem_max
echo 262144 > /proc/sys/net/core/wmem_max
echo "4096 16384 262144" > /proc/sys/net/ipv4/tcp_wmem
echo "4096 87380 262144" > /proc/sys/net/ipv4/tcp_rmem
echo 1000 > /proc/sys/net/core/netdev_max_backlog
echo 16384 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max
echo 16384 > /sys/module/nf_conntrack/parameters/hashsize
root@ap-master:~# wl -i eth1 interference
Auto Wireless LAN Interference mitigation is enabled and not active

SUMMARY:

1) On a DUAL radio Broadcom device, the eth1 interference mode cannot be set via rc_startup and the only way to set the eth2 interference mode via rc_startup is to precede it with a sleep command as a workaround.

2) On SINGLE radio Broadcom device, the only way to set the eth1 interference mode via rc_startup is to precede it with a sleep command as a workaround.

Change History (1)

comment:1 Changed 2 years ago by BrainSlayer

Resolution: invalid
Status: newclosed

and? rc_startup is started before any wireless configuration. so your setting is likelly overwritten. its no bug. its your responsiblity to use it in a way that it works if you overwrite settings manually

Note: See TracTickets for help on using tickets.