Download speed is slow over ethernet, but not upload

(For those that have helped me before, this is a new configuration)
I have gigabit ethernet. When I hookup a different router, I get 700 down 900 up.. But I use this one, I get 150-215 down, 500 up. When I use a speedtest command line tool I installed on the router, I get 600 down 5 up.
This is kinda bonkers... Any ideas?
I have included the network and firewall configs, as those are the ones I would guess you need.
Despite the firewall rule, wireguard is not set up on this router. It is just there in prep for setting up.
Network:


config interface 'loopback'
	option device 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config globals 'globals'
	option ula_prefix '<redacted>'

config device
	option name 'br-lan'
	option type 'bridge'
	list ports 'eth1.1'

config device
	option name 'eth1.1'
	option macaddr '<redacted>'

config interface 'lan'
	option device 'br-lan'
	option proto 'static'
	option ipaddr '10.1.1.5'
	option netmask '255.255.128.0'
	option ip6assign '60'

config device
	option name 'eth0.2'
	option macaddr '<redacted>'

config interface 'wan'
	option device 'eth0.2'
	option proto 'pppoe'
	option username '<redacted>'
	option password '<redacted>'
	option ipv6 'auto'

config switch
	option name 'switch0'
	option reset '1'
	option enable_vlan '1'

config switch_vlan
	option device 'switch0'
	option vlan '1'
	option ports '2 3 4 5 6t'

config switch_vlan
	option device 'switch0'
	option vlan '2'
	option ports '1 0t'

config interface 'Guest'
	option proto 'static'
	option ipaddr '192.168.60.1'
	option netmask '255.255.255.0'
	list dns '1.1.1.1'


Firewall:


config defaults
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	option synflood_protect '1'

config zone
	option name 'lan'
	option input 'ACCEPT'
	option output 'ACCEPT'
	option forward 'ACCEPT'
	list network 'lan'

config zone
	option name 'wan'
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	option masq '1'
	option mtu_fix '1'
	list network 'wan'

config forwarding
	option src 'lan'
	option dest 'wan'

config rule
	option name 'Allow-DHCP-Renew'
	option src 'wan'
	option proto 'udp'
	option dest_port '68'
	option target 'ACCEPT'
	option family 'ipv4'

config rule
	option name 'Allow-Ping'
	option src 'wan'
	option proto 'icmp'
	option icmp_type 'echo-request'
	option family 'ipv4'
	option target 'ACCEPT'

config rule
	option name 'Allow-IGMP'
	option src 'wan'
	option proto 'igmp'
	option family 'ipv4'
	option target 'ACCEPT'

config rule
	option name 'Allow-DHCPv6'
	option src 'wan'
	option proto 'udp'
	option dest_port '546'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-MLD'
	option src 'wan'
	option proto 'icmp'
	option src_ip 'fe80::/10'
	list icmp_type '130/0'
	list icmp_type '131/0'
	list icmp_type '132/0'
	list icmp_type '143/0'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-ICMPv6-Input'
	option src 'wan'
	option proto 'icmp'
	list icmp_type 'echo-request'
	list icmp_type 'echo-reply'
	list icmp_type 'destination-unreachable'
	list icmp_type 'packet-too-big'
	list icmp_type 'time-exceeded'
	list icmp_type 'bad-header'
	list icmp_type 'unknown-header-type'
	list icmp_type 'router-solicitation'
	list icmp_type 'neighbour-solicitation'
	list icmp_type 'router-advertisement'
	list icmp_type 'neighbour-advertisement'
	option limit '1000/sec'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-ICMPv6-Forward'
	option src 'wan'
	option dest '*'
	option proto 'icmp'
	list icmp_type 'echo-request'
	list icmp_type 'echo-reply'
	list icmp_type 'destination-unreachable'
	list icmp_type 'packet-too-big'
	list icmp_type 'time-exceeded'
	list icmp_type 'bad-header'
	list icmp_type 'unknown-header-type'
	option limit '1000/sec'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-IPSec-ESP'
	option src 'wan'
	option dest 'lan'
	option proto 'esp'
	option target 'ACCEPT'

config rule
	option name 'Allow-ISAKMP'
	option src 'wan'
	option dest 'lan'
	option dest_port '500'
	option proto 'udp'
	option target 'ACCEPT'

config zone
	option name 'Guest'
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	list network 'Guest'

config forwarding
	option src 'Guest'
	option dest 'wan'

config rule
	option name 'GuestDNS'
	option src 'Guest'
	option dest_port '53'
	option target 'ACCEPT'
	option src_port '53'

config rule
	option name 'GuestDNS'
	list proto 'udp'
	option src 'Guest'
	option src_port '67-68'
	option dest_port '67-68'
	option target 'ACCEPT'

config rule
	option name 'GuestNoWireguard'
	list proto 'all'
	option src 'Guest'
	option dest 'wan'
	list dest_ip '192.168.1.1/24'
	option target 'REJECT'


What is the device in question and the version of OpenWrt?

ubus call system board

The disparity is huge, for sure, but the thing to keep in mind is that routers can often route traffic through the device much faster than it can locally process information. That's because they have highly specialized routing (and switching) hardware, but they don't usually have strong general purpose processors. So, any traffic that needs to be generated or terminated by the router will likely hit a massive bottleneck.

The best way to test is with a computer connected to the router running a speed test to another network/the internet.

The lan is a bit strange, but not necessarily problematic:

Why are you using a /17? Do you have a need to have 32K hosts?? The network size doesn't present an actual technical issue, but it's often recommended to stick with /24 networks for a number of reasons (including human readability). If you're really dealing with much larger host counts, you should be looking at other options instead of huge subnets.

Also, again not necessarily a technical issue, but often the router will use the .1 address in the subnet, just as a matter of convention. Where it can be a technical problem is if the router's address is inside the DHCP pool. You didn't share that file, so I don't know if that could be a problem here.

What is this rule for?? It's not clear how this would block wireguard (I don't see this network in your router config, unless it is upstream):


{
        "kernel": "5.15.134",
        "hostname": "OpenWrt",
        "system": "ARMv7 Processor rev 0 (v7l)",
        "model": "Linksys EA7500 V1 WiFi Router",
        "board_name": "linksys,ea7500-v1",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "23.05.0",
                "revision": "r23497-6637af95aa",
                "target": "ipq806x/generic",
                "description": "OpenWrt 23.05.0 r23497-6637af95aa"
        }
}

No, I don't need 32k hosts, but I wanted to be able to spread my different devices out so they are separated and easily "found." (Light switches on 10.1.20, servers on 10.1.4, etc etc.) I know its very unusual, people give me a hard time for using /17. But /18 didn't give me enough on the 3rd oclet (Thats what its called, isn't it?) and /16 was too much. I have over 70 devices, and it just helps me keep them nicely separated.

The GuestNoWireguard rule will prevent the guest network from accessing the remote network when wireguard is set up. Wireguard isn't being used to tunnel my internet traffic, its just being used so I can connect to my work network and I don't want my guest network to be able to access it. This rule seemed to do that. I just havent set up the wireguard yet. My configuration is being moved to this router for some testing. Without getting in great detail. I was using this router before. I upgraded to a new router. My Zigbee network was working poorly. Due to setting something in the first router wrong (set LAN to PPPOE Instead of WAN) and not seeing to be able to get it into failsafe mode, I reset to default settings, so I had to reconfigure it again.
So the plan is to use this router for a few days and see if my Zigbee network is any better, and since I am using it, I wouldn't mind getting my full speed out of it. (I was able to get 600+/600+ or so last time. But at the time I switched routers, I also switched ISP's from one what was using a dynamic IP, to one that uses PPPOE)
The DHCP file is as follows:


config dnsmasq
	option domainneeded '1'
	option boguspriv '1'
	option filterwin2k '0'
	option localise_queries '1'
	option rebind_protection '1'
	option rebind_localhost '1'
	option local '/lan/'
	option domain 'lan'
	option expandhosts '1'
	option nonegcache '0'
	option cachesize '1000'
	option authoritative '1'
	option readethers '1'
	option leasefile '/tmp/dhcp.leases'
	option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
	option nonwildcard '1'
	option localservice '1'
	option ednspacket_max '1232'
	option filter_aaaa '0'
	option filter_a '0'

config dhcp 'lan'
	option interface 'lan'
	option start '513'
	option limit '150'
	option leasetime '12h'
	option dhcpv4 'server'
	list dhcp_option '6,10.1.4.10'

config dhcp 'wan'
	option interface 'wan'
	option ignore '1'

config odhcpd 'odhcpd'
	option maindhcp '0'
	option leasefile '/tmp/hosts/odhcpd'
	option leasetrigger '/usr/sbin/odhcpd-update'
	option loglevel '4'

 <Removed a tonne of DHCP reservations here>

config dhcp 'Guest'
	option interface 'Guest'
	option start '100'
	option limit '150'
	option leasetime '12h'
	list dhcp_option '6,1.1.1.1'

If you need any other config info, or other info let me know. I just don't know what config files are needed dor any help most of the time.

Sysupgrade (e.g auc) to 23.05.4

ethtool -S lan1 # dont post, try to extract errors pauses etc wonders

-ash: ethtool: not found
root@OpenWrt:~#

You are supposed to install diagnostic tools, esp when they are named same as package containing them.

Sorry, as someone with little advanced network and linux knowledge, I am a bit in the dark with some things. I did manage to get more, yet I believe useless information. Maybe I am not finding the correct lan interface?

root@OpenWrt:~# ethtool -S lan1 # dont post, try to extract errors pauses etc wonders
Cannot get stats strings information: No such device
root@OpenWrt:~# ethtool -S lan2 # dont post, try to extract errors pauses etc wonders
Cannot get stats strings information: No such device
root@OpenWrt:~# ethtool -S lan # dont post, try to extract errors pauses etc wonders
Cannot get stats strings information: No such device
root@OpenWrt:~# ethtool -S br-lan # dont post, try to extract errors pauses etc wonders
no stats available
root@OpenWrt:~#

Get stats from adapters that provide those?

Huh? I am afraid I don't know if you are asking me to do something, stating a fact, or asking a question... I am afraid my limited knowledge is going to force me to ask "What exactly is it you need at this point? And how do I get it?"

Type ip link
For all adapters try
ethtool -S name0
Ones that show statistics are of interest.

Okay, now I am getting information... Information I have no idea what it is, but a lot of it. 200+ lines per adapter... So it would be helpful to know what adapter I should search though, as I can't decode what ones I should check. I can only eliminate, based on my limited knowledge, 2 of them, lo, and pppoe-wan. Which ones should I be looking through?


root@OpenWrt:~# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether <redacted> brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether <redacted> brd ff:ff:ff:ff:ff:ff
10: phy1-ap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-lan state UP qlen 1000
    link/ether c0:56:27:36:ec:dc brd ff:ff:ff:ff:ff:ff
76: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether <redacted> brd ff:ff:ff:ff:ff:ff
77: eth1.1@eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-lan state UP qlen 1000
    link/ether <redacted> brd ff:ff:ff:ff:ff:ff
120: phy0-ap1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether <redacted> brd ff:ff:ff:ff:ff:ff
165: eth0.2@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether <redacted> brd ff:ff:ff:ff:ff:ff
166: pppoe-wan: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc fq_codel state UNKNOWN qlen 3
    link/ppp
167: phy0-ap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-lan state UP qlen 1000
    link/ether <redacted> brd ff:ff:ff:ff:ff:ff

pppoe-wan lowlevel device, eth0 eth1

So, for eth0 and eth1 I looked through, and in my limited knowedge, there don't appear to be any errors. Basically, I looked for any line without a 0 in it, and none of them seemed to be denoted as err, error, bad, slow, delay or anything alone those lines. Can't seem to get anything from pppoe however:

root@OpenWrt:~# ethtool -S pppoe-wan
no stats available
root@OpenWrt:~# ethtool -S pppoe-wan lowlevel device
ethtool: bad command line argument(s)
For more information run ethtool -h
root@OpenWrt:~#

eth1 and eth0 ????

Oh, in the comment for the command above (at least I thought it was a comment) you said "don't post, try and extract"

root@OpenWrt:~# ethtool -S eth0
NIC statistics:
     mmc_tx_octetcount_gb: 3711709906
     mmc_tx_framecount_gb: 92183499
     mmc_tx_broadcastframe_g: 1
     mmc_tx_multicastframe_g: 16
     mmc_tx_64_octets_gb: 13713
     mmc_tx_65_to_127_octets_gb: 11947207
     mmc_tx_128_to_255_octets_gb: 169250
     mmc_tx_256_to_511_octets_gb: 47573
     mmc_tx_512_to_1023_octets_gb: 189679
     mmc_tx_1024_to_max_octets_gb: 79816077
     mmc_tx_unicast_gb: 92183482
     mmc_tx_multicast_gb: 16
     mmc_tx_broadcast_gb: 1
     mmc_tx_underflow_error: 0
     mmc_tx_singlecol_g: 0
     mmc_tx_multicol_g: 0
     mmc_tx_deferred: 0
     mmc_tx_latecol: 0
     mmc_tx_exesscol: 0
     mmc_tx_carrier_error: 0
     mmc_tx_octetcount_g: 3711709906
     mmc_tx_framecount_g: 92183499
     mmc_tx_excessdef: 0
     mmc_tx_pause_frame: 0
     mmc_tx_vlan_frame_g: 92183492
     mmc_rx_framecount_gb: 51080740
     mmc_rx_octetcount_gb: 2112732210
     mmc_rx_octetcount_g: 2112732210
     mmc_rx_broadcastframe_g: 0
     mmc_rx_multicastframe_g: 0
     mmc_rx_crc_error: 0
     mmc_rx_align_error: 0
     mmc_rx_run_error: 0
     mmc_rx_jabber_error: 0
     mmc_rx_undersize_g: 0
     mmc_rx_oversize_g: 0
     mmc_rx_64_octets_gb: 0
     mmc_rx_65_to_127_octets_gb: 12742243
     mmc_rx_128_to_255_octets_gb: 159326
     mmc_rx_256_to_511_octets_gb: 123737
     mmc_rx_512_to_1023_octets_gb: 99499
     mmc_rx_1024_to_max_octets_gb: 37955935
     mmc_rx_unicast_g: 51080740
     mmc_rx_length_error: 0
     mmc_rx_autofrangetype: 0
     mmc_rx_pause_frames: 0
     mmc_rx_fifo_overflow: 0
     mmc_rx_vlan_frames_gb: 51080724
     mmc_rx_watchdog_error: 0
     mmc_rx_ipc_intr_mask: 3221078013
     mmc_rx_ipc_intr: 0
     mmc_rx_ipv4_gd: 0
     mmc_rx_ipv4_hderr: 0
     mmc_rx_ipv4_nopay: 0
     mmc_rx_ipv4_frag: 0
     mmc_rx_ipv4_udsbl: 0
     mmc_rx_ipv4_gd_octets: 0
     mmc_rx_ipv4_hderr_octets: 0
     mmc_rx_ipv4_nopay_octets: 0
     mmc_rx_ipv4_frag_octets: 0
     mmc_rx_ipv4_udsbl_octets: 0
     mmc_rx_ipv6_gd_octets: 0
     mmc_rx_ipv6_hderr_octets: 0
     mmc_rx_ipv6_nopay_octets: 0
     mmc_rx_ipv6_gd: 0
     mmc_rx_ipv6_hderr: 0
     mmc_rx_ipv6_nopay: 0
     mmc_rx_udp_gd: 0
     mmc_rx_udp_err: 0
     mmc_rx_tcp_gd: 0
     mmc_rx_tcp_err: 0
     mmc_rx_icmp_gd: 0
     mmc_rx_icmp_err: 0
     mmc_rx_udp_gd_octets: 0
     mmc_rx_udp_err_octets: 0
     mmc_rx_tcp_gd_octets: 0
     mmc_rx_tcp_err_octets: 0
     mmc_rx_icmp_gd_octets: 0
     mmc_rx_icmp_err_octets: 0
     mmc_tx_fpe_fragment_cntr: 0
     mmc_tx_hold_req_cntr: 0
     mmc_rx_packet_assembly_err_cntr: 0
     mmc_rx_packet_smd_err_cntr: 0
     mmc_rx_packet_assembly_ok_cntr: 0
     mmc_rx_fpe_fragment_cntr: 0
     tx_underflow: 0
     tx_carrier: 0
     tx_losscarrier: 0
     vlan_tag: 0
     tx_deferred: 0
     tx_vlan: 92183492
     tx_jabber: 0
     tx_frame_flushed: 0
     tx_payload_error: 0
     tx_ip_header_error: 0
     rx_desc: 0
     sa_filter_fail: 0
     overflow_error: 0
     ipc_csum_error: 0
     rx_collision: 0
     rx_crc_errors: 0
     dribbling_bit: 0
     rx_length: 0
     rx_mii: 0
     rx_multicast: 0
     rx_gmac_overflow: 0
     rx_watchdog: 0
     da_rx_filter_fail: 0
     sa_rx_filter_fail: 0
     rx_missed_cntr: 0
     rx_overflow_cntr: 0
     rx_vlan: 50833386
     rx_split_hdr_pkt_n: 0
     tx_undeflow_irq: 0
     tx_process_stopped_irq: 0
     tx_jabber_irq: 0
     rx_overflow_irq: 0
     rx_buf_unav_irq: 0
     rx_process_stopped_irq: 0
     rx_watchdog_irq: 0
     tx_early_irq: 0
     fatal_bus_error_irq: 0
     rx_early_irq: 685076
     threshold: 1
     tx_pkt_n: 92183499
     rx_pkt_n: 50833402
     normal_irq_n: 17679257
     rx_normal_irq_n: 14345499
     napi_poll: 18619432
     tx_normal_irq_n: 3481592
     tx_clean: 4022280
     tx_set_ic_bit: 3687339
     irq_receive_pmt_irq_n: 0
     mmc_tx_irq_n: 0
     mmc_rx_irq_n: 0
     mmc_rx_csum_offload_irq_n: 0
     irq_tx_path_in_lpi_mode_n: 0
     irq_tx_path_exit_lpi_mode_n: 0
     irq_rx_path_in_lpi_mode_n: 0
     irq_rx_path_exit_lpi_mode_n: 0
     phy_eee_wakeup_error_n: 0
     ip_hdr_err: 0
     ip_payload_err: 0
     ip_csum_bypassed: 0
     ipv4_pkt_rcvd: 0
     ipv6_pkt_rcvd: 0
     no_ptp_rx_msg_type_ext: 0
     ptp_rx_msg_type_sync: 0
     ptp_rx_msg_type_follow_up: 0
     ptp_rx_msg_type_delay_req: 0
     ptp_rx_msg_type_delay_resp: 0
     ptp_rx_msg_type_pdelay_req: 0
     ptp_rx_msg_type_pdelay_resp: 0
     ptp_rx_msg_type_pdelay_follow_up: 0
     ptp_rx_msg_type_announce: 0
     ptp_rx_msg_type_management: 0
     ptp_rx_msg_pkt_reserved_type: 0
     ptp_frame_type: 0
     ptp_ver: 0
     timestamp_dropped: 0
     av_pkt_rcvd: 0
     av_tagged_pkt_rcvd: 0
     vlan_tag_priority_val: 0
     l3_filter_match: 0
     l4_filter_match: 0
     l3_l4_filter_no_match: 0
     irq_pcs_ane_n: 0
     irq_pcs_link_n: 0
     irq_rgmii_n: 0
     mtl_tx_status_fifo_full: 0
     mtl_tx_fifo_not_empty: 0
     mmtl_fifo_ctrl: 0
     mtl_tx_fifo_read_ctrl_write: 0
     mtl_tx_fifo_read_ctrl_wait: 0
     mtl_tx_fifo_read_ctrl_read: 0
     mtl_tx_fifo_read_ctrl_idle: 0
     mac_tx_in_pause: 0
     mac_tx_frame_ctrl_xfer: 0
     mac_tx_frame_ctrl_idle: 0
     mac_tx_frame_ctrl_wait: 0
     mac_tx_frame_ctrl_pause: 0
     mac_gmii_tx_proto_engine: 0
     mtl_rx_fifo_fill_level_full: 0
     mtl_rx_fifo_fill_above_thresh: 0
     mtl_rx_fifo_fill_below_thresh: 0
     mtl_rx_fifo_fill_level_empty: 0
     mtl_rx_fifo_read_ctrl_flush: 0
     mtl_rx_fifo_read_ctrl_read_data: 0
     mtl_rx_fifo_read_ctrl_status: 0
     mtl_rx_fifo_read_ctrl_idle: 0
     mtl_rx_fifo_ctrl_active: 0
     mac_rx_frame_ctrl_fifo: 0
     mac_gmii_rx_proto_engine: 0
     tx_tso_frames: 0
     tx_tso_nfrags: 0
     mtl_est_cgce: 0
     mtl_est_hlbs: 0
     mtl_est_hlbf: 0
     mtl_est_btre: 0
     mtl_est_btrlm: 0
     q0_tx_pkt_n: 92183499
     q0_tx_irq_n: 0
     q0_rx_pkt_n: 50833402
     q0_rx_irq_n: 0
root@OpenWrt:~# ethtool -S eth1
NIC statistics:
     mmc_tx_octetcount_gb: 778779363
     mmc_tx_framecount_gb: 41142452
     mmc_tx_broadcastframe_g: 328438
     mmc_tx_multicastframe_g: 62443
     mmc_tx_64_octets_gb: 1052800
     mmc_tx_65_to_127_octets_gb: 12037143
     mmc_tx_128_to_255_octets_gb: 214360
     mmc_tx_256_to_511_octets_gb: 180443
     mmc_tx_512_to_1023_octets_gb: 248425
     mmc_tx_1024_to_max_octets_gb: 27409281
     mmc_tx_unicast_gb: 40751571
     mmc_tx_multicast_gb: 62443
     mmc_tx_broadcast_gb: 328438
     mmc_tx_underflow_error: 0
     mmc_tx_singlecol_g: 0
     mmc_tx_multicol_g: 0
     mmc_tx_deferred: 0
     mmc_tx_latecol: 0
     mmc_tx_exesscol: 0
     mmc_tx_carrier_error: 0
     mmc_tx_octetcount_g: 778779363
     mmc_tx_framecount_g: 41142452
     mmc_tx_excessdef: 0
     mmc_tx_pause_frame: 0
     mmc_tx_vlan_frame_g: 41142445
     mmc_rx_framecount_gb: 91116912
     mmc_rx_octetcount_gb: 3685732530
     mmc_rx_octetcount_g: 3685732530
     mmc_rx_broadcastframe_g: 172438
     mmc_rx_multicastframe_g: 51879
     mmc_rx_crc_error: 0
     mmc_rx_align_error: 0
     mmc_rx_run_error: 0
     mmc_rx_jabber_error: 0
     mmc_rx_undersize_g: 0
     mmc_rx_oversize_g: 0
     mmc_rx_64_octets_gb: 0
     mmc_rx_65_to_127_octets_gb: 10521066
     mmc_rx_128_to_255_octets_gb: 219615
     mmc_rx_256_to_511_octets_gb: 99283
     mmc_rx_512_to_1023_octets_gb: 137861
     mmc_rx_1024_to_max_octets_gb: 80139087
     mmc_rx_unicast_g: 90892595
     mmc_rx_length_error: 0
     mmc_rx_autofrangetype: 0
     mmc_rx_pause_frames: 0
     mmc_rx_fifo_overflow: 0
     mmc_rx_vlan_frames_gb: 91116904
     mmc_rx_watchdog_error: 0
     mmc_rx_ipc_intr_mask: 3221078013
     mmc_rx_ipc_intr: 0
     mmc_rx_ipv4_gd: 90970483
     mmc_rx_ipv4_hderr: 0
     mmc_rx_ipv4_nopay: 1280
     mmc_rx_ipv4_frag: 0
     mmc_rx_ipv4_udsbl: 0
     mmc_rx_ipv4_gd_octets: 1663963234
     mmc_rx_ipv4_hderr_octets: 0
     mmc_rx_ipv4_nopay_octets: 58880
     mmc_rx_ipv4_frag_octets: 0
     mmc_rx_ipv4_udsbl_octets: 0
     mmc_rx_ipv6_gd_octets: 1540808
     mmc_rx_ipv6_hderr_octets: 0
     mmc_rx_ipv6_nopay_octets: 0
     mmc_rx_ipv6_gd: 7640
     mmc_rx_ipv6_hderr: 0
     mmc_rx_ipv6_nopay: 0
     mmc_rx_udp_gd: 73958674
     mmc_rx_udp_err: 0
     mmc_rx_tcp_gd: 17012328
     mmc_rx_tcp_err: 0
     mmc_rx_icmp_gd: 7121
     mmc_rx_icmp_err: 0
     mmc_rx_udp_gd_octets: 1243964074
     mmc_rx_udp_err_octets: 0
     mmc_rx_tcp_gd_octets: 2896432332
     mmc_rx_tcp_err_octets: 0
     mmc_rx_icmp_gd_octets: 352320
     mmc_rx_icmp_err_octets: 0
     mmc_tx_fpe_fragment_cntr: 0
     mmc_tx_hold_req_cntr: 0
     mmc_rx_packet_assembly_err_cntr: 0
     mmc_rx_packet_smd_err_cntr: 0
     mmc_rx_packet_assembly_ok_cntr: 0
     mmc_rx_fpe_fragment_cntr: 0
     tx_underflow: 0
     tx_carrier: 0
     tx_losscarrier: 0
     vlan_tag: 0
     tx_deferred: 0
     tx_vlan: 41142444
     tx_jabber: 0
     tx_frame_flushed: 0
     tx_payload_error: 0
     tx_ip_header_error: 0
     rx_desc: 0
     sa_filter_fail: 0
     overflow_error: 0
     ipc_csum_error: 0
     rx_collision: 0
     rx_crc_errors: 0
     dribbling_bit: 0
     rx_length: 0
     rx_mii: 0
     rx_multicast: 0
     rx_gmac_overflow: 0
     rx_watchdog: 0
     da_rx_filter_fail: 0
     sa_rx_filter_fail: 0
     rx_missed_cntr: 0
     rx_overflow_cntr: 0
     rx_vlan: 91107997
     rx_split_hdr_pkt_n: 0
     tx_undeflow_irq: 0
     tx_process_stopped_irq: 0
     tx_jabber_irq: 0
     rx_overflow_irq: 0
     rx_buf_unav_irq: 0
     rx_process_stopped_irq: 0
     rx_watchdog_irq: 0
     tx_early_irq: 0
     fatal_bus_error_irq: 0
     rx_early_irq: 101609
     threshold: 1
     tx_pkt_n: 41142451
     rx_pkt_n: 91108005
     normal_irq_n: 15800849
     rx_normal_irq_n: 14717947
     napi_poll: 16664767
     tx_normal_irq_n: 1306143
     tx_clean: 1839029
     tx_set_ic_bit: 1645698
     irq_receive_pmt_irq_n: 0
     mmc_tx_irq_n: 0
     mmc_rx_irq_n: 0
     mmc_rx_csum_offload_irq_n: 0
     irq_tx_path_in_lpi_mode_n: 0
     irq_tx_path_exit_lpi_mode_n: 0
     irq_rx_path_in_lpi_mode_n: 0
     irq_rx_path_exit_lpi_mode_n: 0
     phy_eee_wakeup_error_n: 0
     ip_hdr_err: 0
     ip_payload_err: 0
     ip_csum_bypassed: 1280
     ipv4_pkt_rcvd: 90962856
     ipv6_pkt_rcvd: 7640
     no_ptp_rx_msg_type_ext: 90970496
     ptp_rx_msg_type_sync: 0
     ptp_rx_msg_type_follow_up: 0
     ptp_rx_msg_type_delay_req: 0
     ptp_rx_msg_type_delay_resp: 0
     ptp_rx_msg_type_pdelay_req: 0
     ptp_rx_msg_type_pdelay_resp: 0
     ptp_rx_msg_type_pdelay_follow_up: 0
     ptp_rx_msg_type_announce: 0
     ptp_rx_msg_type_management: 0
     ptp_rx_msg_pkt_reserved_type: 0
     ptp_frame_type: 0
     ptp_ver: 0
     timestamp_dropped: 0
     av_pkt_rcvd: 0
     av_tagged_pkt_rcvd: 0
     vlan_tag_priority_val: 0
     l3_filter_match: 0
     l4_filter_match: 0
     l3_l4_filter_no_match: 0
     irq_pcs_ane_n: 0
     irq_pcs_link_n: 0
     irq_rgmii_n: 0
     mtl_tx_status_fifo_full: 0
     mtl_tx_fifo_not_empty: 0
     mmtl_fifo_ctrl: 0
     mtl_tx_fifo_read_ctrl_write: 0
     mtl_tx_fifo_read_ctrl_wait: 0
     mtl_tx_fifo_read_ctrl_read: 0
     mtl_tx_fifo_read_ctrl_idle: 0
     mac_tx_in_pause: 0
     mac_tx_frame_ctrl_xfer: 0
     mac_tx_frame_ctrl_idle: 0
     mac_tx_frame_ctrl_wait: 0
     mac_tx_frame_ctrl_pause: 0
     mac_gmii_tx_proto_engine: 0
     mtl_rx_fifo_fill_level_full: 0
     mtl_rx_fifo_fill_above_thresh: 0
     mtl_rx_fifo_fill_below_thresh: 0
     mtl_rx_fifo_fill_level_empty: 0
     mtl_rx_fifo_read_ctrl_flush: 0
     mtl_rx_fifo_read_ctrl_read_data: 0
     mtl_rx_fifo_read_ctrl_status: 0
     mtl_rx_fifo_read_ctrl_idle: 0
     mtl_rx_fifo_ctrl_active: 0
     mac_rx_frame_ctrl_fifo: 0
     mac_gmii_rx_proto_engine: 0
     tx_tso_frames: 0
     tx_tso_nfrags: 0
     mtl_est_cgce: 0
     mtl_est_hlbs: 0
     mtl_est_hlbf: 0
     mtl_est_btre: 0
     mtl_est_btrlm: 0
     q0_tx_pkt_n: 41142451
     q0_tx_irq_n: 0
     q0_rx_pkt_n: 91108005
     q0_rx_irq_n: 0
root@OpenWrt:~# ethtool -S pppoe-wan

No problem indicated. Is other side windows? Then you need to disable offloads to work around buggy drivers.

But, if the drivers in windows were buggy, woulnd't it do the same with other routers (it doesn't) or the last time with this router before a restore to defaults (it didn't) and not on multiple machines (it does)

The problem is way too common and you can find dozen places in registry to disable potentially buggy driver features via ms answers forum.

Figured it was worth a try. Disabled all offload. Problem still exists, upload is even slower.

Boot linux live usb and check again.