Incidentally, I have a USB-C to ethernet adapter handy, and tried plugging my phone in to the router directly, and I am getting the same issue with unusable internet (pages half loading). So I guess it's some issue other than the wifi? Here's the system log from around the time I connect the S21 to the wifi (mac addresses removed):
Aug 21 12:56:03 kernel: CONSOLE: 156118.206 wl1: wlc_ap_authresp: Reject auth request from <Other MAC> suppressed by MAC filter
Aug 21 12:56:03 kernel: CONSOLE: 156118.206 wlc_ap_authresp: status 0
Aug 21 12:56:07 wlceventd: wlceventd_proc_event(505): eth6: Auth <Other MAC>, status: Successful (0)
Aug 21 12:56:07 wlceventd: wlceventd_proc_event(534): eth6: Assoc <Other MAC>, status: Successful (0)
Aug 21 12:56:08 wlceventd: wlceventd_proc_event(505): eth7: Auth <S21 MAC>, status: Successful (0)
Aug 21 12:56:08 wlceventd: wlceventd_proc_event(534): eth7: Assoc <S21 MAC>, status: Successful (0)
Aug 21 12:56:08 kernel: CONSOLE: 156123.550 wlc_ap_authresp: status 0
Aug 21 12:56:08 kernel: CONSOLE: 156123.551 wlc_ap_process_assocreq_done status 0
Aug 21 12:56:08 kernel: CONSOLE: 156123.552 wl1: STA <S21 MAC> has associated tx_type 2
Aug 21 12:56:08 kernel: CONSOLE: 156123.555 iov:SCB_DEAUTH
Aug 21 12:56:08 kernel: CONSOLE: 156123.556 tx
rep:802.1x
Aug 21 12:56:08 kernel: CONSOLE: 156123.557 wl1.0: wlc_send_bar: for <S21 MAC> seq 0x1 tid 5
Aug 21 12:56:08 kernel: CONSOLE: 156123.591 tx
rep:802.1x
Aug 21 12:56:08 kernel: CONSOLE: 156123.606 iov:SCB_AUTH
Aug 21 12:56:08 kernel: CONSOLE: 156123.622 wl1: wlc_rrm_send_nbrrep: Neighbor Report element is empty
Aug 21 12:56:08 kernel: CONSOLE: 156123.727 wl1: wlc_ap_authresp: Reject auth request from <Other MAC> suppressed by MAC filter
Aug 21 12:56:08 kernel: CONSOLE: 156123.727 wlc_ap_authresp: status 0
Aug 21 12:56:08 kernel: CONSOLE: 156123.961 wl1: r0hole: tx_exp_seq 0x1, seq 0x2
Aug 21 12:56:08 kernel: CONSOLE: 156123.964 wl1.0: wlc_send_bar: for <S21 MAC> seq 0x1 tid 6
Aug 21 12:56:09 kernel: CONSOLE: 156124.084 wl1.0: wlc_send_bar: for <S21 MAC> seq 0x1 tid 0
Aug 21 12:56:09 kernel: CONSOLE: 156124.280 wl1.0: wlc_send_bar: for <S21 MAC> seq 0x1 tid 2
Aug 21 12:56:09 kernel: CONSOLE: 156124.408 wl1.0: wlc_send_bar: for <S21 MAC> seq 0x2 tid 4
Aug 21 12:56:09 kernel: CONSOLE: 156124.971 wl1.0: wlc_send_bar: for <S21 MAC> seq 0x12 tid 5
Aug 21 12:56:09 kernel: CONSOLE: 156125.043 wl1.0: wlc_send_bar: for <S21 MAC> seq 0x1 tid 1
Aug 21 12:56:10 kernel: CONSOLE: 156125.588 wl1.0: wlc_send_bar: for <S21 MAC> seq 0x1 tid 3
Aug 21 12:56:11 wlceventd: wlceventd_proc_event(505): eth7: Auth <Other MAC>, status: Successful (0)
Aug 21 12:56:11 wlceventd: wlceventd_proc_event(534): eth7: Assoc <Other MAC>, status: Successful (0)
Aug 21 12:56:11 kernel: wfd_registerdevice Successfully registered dev wds1.0.1 ifidx 1 wfd_idx 1
Aug 21 12:56:11 kernel: Register interface [wds1.0.1] MAC: fc:34:97:3a:8d:4c
Aug 21 12:56:11 kernel: CONSOLE: 156126.773 wlc_ap_authresp: status 0
Aug 21 12:56:11 kernel: CONSOLE: 156126.774 wlc_ap_process_assocreq_done status 0
Aug 21 12:56:11 kernel: CONSOLE: 156126.774 wl1: STA <Other MAC> has associated tx_type 2
Aug 21 12:56:11 kernel: CONSOLE: 156126.776 iov:SCB_DEAUTH
Aug 21 12:56:11 kernel: CONSOLE: 156126.777 tx
rep:802.1x
Aug 21 12:56:11 kernel: CONSOLE: 156126.778 wl1.0: wlc_send_bar: for <Other MAC> seq 0x1 tid 5
Aug 21 12:56:11 kernel: CONSOLE: 156126.786 tx
rep:802.1x
Aug 21 12:56:11 kernel: CONSOLE: 156126.795 iov:SCB_AUTH
Aug 21 12:56:11 wlceventd: wlceventd_proc_event(505): eth6: Auth <Other MAC>, status: Successful (0)
Aug 21 12:56:11 wlceventd: wlceventd_proc_event(534): eth6: Assoc <Other MAC>, status: Successful (0)
Aug 21 12:56:11 kernel: wfd_registerdevice Successfully registered dev wds0.0.1 ifidx 1 wfd_idx 0
Aug 21 12:56:11 kernel: CONSOLE: 156126.854 wl1.0: wlc_send_bar: for <Other MAC> seq 0x1 tid 0
Aug 21 12:56:13 kernel: wl0: random key value: 7057578085ACC7440E5C02C79958E5B4FC0E2B569E600CF96220C4DDF13D6D00
Aug 21 12:56:13 kernel: wl0: set timeout 5 secs to wait dev reg finish
Aug 21 12:56:13 wlceventd: wlceventd_proc_event(486): wds0.0.1: Disassoc <Other MAC>, status: 0, reason: Disassociated because sending station is leaving (or has left) BSS (8)
Aug 21 12:56:13 kernel: wfd_unregisterdevice Successfully unregistered ifidx 1 wfd_idx 0
Aug 21 12:56:13 wlceventd: wlceventd_proc_event(486): eth6: Disassoc <Other MAC>, status: 0, reason: Disassociated because sending station is leaving (or has left) BSS (8)
Aug 21 12:56:13 wlceventd: wlceventd_proc_event(505): eth6: Auth <Other MAC>, status: Successful (0)
Aug 21 12:56:13 wlceventd: wlceventd_proc_event(534): eth6: Assoc <Other MAC>, status: Successful (0)
Aug 21 12:56:13 kernel: wfd_registerdevice Successfully registered dev wds0.0.1 ifidx 1 wfd_idx 0
Aug 21 12:56:15 kernel: CONSOLE: 156130.527 wl1.0: wlc_send_bar: for <S21 MAC> seq 0x1 tid 7
Aug 21 12:56:15 kernel: CONSOLE: 156130.946 wl1.0: wlc_send_bar: for <Other MAC> seq 0x1 tid 6
Aug 21 12:56:16 kernel: CONSOLE: 156131.833 wl1: link up (wl1)
Aug 21 12:56:17 kernel: wl0: random key value: 9E23201A7FB7CBE620B0007900842E62F7BB164C5B3A04E79C0C912AECC24BE2
Aug 21 12:56:17 wlceventd: wlceventd_proc_event(486): wds0.0.1: Disassoc <Other MAC>, status: 0, reason: Disassociated because sending station is leaving (or has left) BSS (8)
Aug 21 12:56:17 kernel: wl0: set timeout 5 secs to wait dev reg finish
Aug 21 12:56:17 kernel: wfd_unregisterdevice Successfully unregistered ifidx 1 wfd_idx 0
Aug 21 12:56:17 wlceventd: wlceventd_proc_event(486): eth6: Disassoc <Other MAC>, status: 0, reason: Disassociated because sending station is leaving (or has left) BSS (8)
Aug 21 12:56:25 kernel: CONSOLE: 156140.406 wl1.0: wlc_send_bar: for <Other MAC> seq 0x1 tid 4