This could be a convincing explanation if it wouldn’t be switching perfectly with the Intel adapter.
Here is an extract from a wpa_supplicant
log I have just captured with the Intel card, where you can see that it knows that the APs are the same network and decides to switch to the other AP, even though the estimated throughput of the previous one is still 11 Mbit/s, which I would’t call “holding for dear life” – it just sees that it is the same ESS, and it can do a 802.11r fast transition, and the throughput is going to be better, so it does.
wpa_supplicant log
nl80211: Event message available
nl80211: Ignored event 64 (NL80211_CMD_NOTIFY_CQM) for foreign interface (ifindex 2 wdev 0x0)
nl80211: Drv Event 64 (NL80211_CMD_NOTIFY_CQM) received for wlp1s0
nl80211: Connection quality monitor event: RSSI low
nl80211: Signal: -76 dBm txrate: 866700
nl80211: Noise: 9999 dBm
wlp1s0: Event SIGNAL_CHANGE (24) received
wlp1s0: CTRL-EVENT-SIGNAL-CHANGE above=0 signal=-76 noise=9999 txrate=866700
bgscan simple: signal level changed (above=0 current_signal=-76 current_noise=9999 current_txrate=866700))
bgscan simple: Trigger immediate scan
bgscan simple: Request a background scan
wlp1s0: Add radio work 'scan'@0x91fa80
wlp1s0: First radio work item in the queue - schedule start immediately
wlp1s0: Starting radio work 'scan'@0x91fa80 after 0.000015 second wait
wlp1s0: nl80211: scan request
nl80211: Scan SSID kirNet
Scan requested (ret=0) - scan timeout 30 seconds
nl80211: Event message available
nl80211: Ignored event 33 (NL80211_CMD_TRIGGER_SCAN) for foreign interface (ifindex 2 wdev 0x0)
nl80211: Drv Event 33 (NL80211_CMD_TRIGGER_SCAN) received for wlp1s0
wlp1s0: nl80211: Scan trigger
wlp1s0: Event SCAN_STARTED (47) received
wlp1s0: Own scan request started a scan in 0.000186 seconds
<...>
RTM_NEWLINK: ifi_index=2 ifname=wlp1s0 wext ifi_family=0 ifi_flags=0x11043 ([UP][RUNNING][LOWER_UP])
nl80211: Event message available
nl80211: Ignored event 34 (NL80211_CMD_NEW_SCAN_RESULTS) for foreign interface (ifindex 2 wdev 0x0)
nl80211: Drv Event 34 (NL80211_CMD_NEW_SCAN_RESULTS) received for wlp1s0
wlp1s0: nl80211: New scan results available
nl80211: Scan probed for SSID 'kirNet'
nl80211: Scan included frequencies: 2412 2417 2422 2427 2432 2437 2442 2447 2452 2457 2462 2467 2472 5180 5200 5220 5240 5260 5280 5300 5320 5500 5520 5540 5560 5580 5600 5620 5640 5660 5680 5700 5720 5745 5765 5785 5805 5825 5955 5975 5995 6015 6035 6055 6075 6095 6115 6135 6155 6175 6195 6215 6235 6255 6275 6295 6315 6335 6355 6375 6395 6415 6435 6455 6475 6495 6515 6535 6555 6575 6595 6615 6635 6655 6675 6695 6715 6735 6755 6775 6795 6815 6835 6855 6875 6895 6915 6935 6955 6975 6995 7015 7035 7055 7075 7095 7115
wlp1s0: Event SCAN_RESULTS (3) received
wlp1s0: Scan completed in 4.275842 seconds
nl80211: Received scan results (23 BSSes)
nl80211: Scan results indicate BSS status with 94:83:c4:06:d7:6d as associated
wlp1s0: BSS: Start scan result update 18
<...>
wlp1s0: Radio work 'scan'@0x91fa80 done in 4.281589 seconds
wlp1s0: radio_work_free('scan'@0x91fa80): num_active_works --> 0
wlp1s0: Scan results matching the currently selected network
wlp1s0: 0: 48:8f:5a:7d:b3:6f freq=5180 level=-41 snr=51 est_throughput=65000
wlp1s0: 7: 94:83:c4:06:d7:6c freq=2462 level=-76 snr=13 est_throughput=33000
wlp1s0: 17: 94:83:c4:06:d7:6d freq=5785 level=-89 snr=3 est_throughput=10988
wlp1s0: Selecting BSS from priority group 0
wlp1s0: 0: 48:8f:5a:7d:b3:6f ssid='kirNet' wpa_ie_len=0 rsn_ie_len=24 caps=0x1011 level=-41 freq=5180
wlp1s0: selected based on RSN IE
wlp1s0: selected BSS 48:8f:5a:7d:b3:6f ssid='kirNet'
wlp1s0: Considering within-ESS reassociation
wlp1s0: Current BSS: 94:83:c4:06:d7:6d freq=5785 level=-89 snr=3 est_throughput=10988
wlp1s0: Selected BSS: 48:8f:5a:7d:b3:6f freq=5180 level=-41 snr=51 est_throughput=65000
wlp1s0: Using signal poll values for the current BSS: level=-84 snr=8 est_throughput=29301
wlp1s0: Allow reassociation - selected BSS has better estimated throughput
wlp1s0: Considering connect request: reassociate: 0 selected: 48:8f:5a:7d:b3:6f bssid: 94:83:c4:06:d7:6d pending: 00:00:00:00:00:00 wpa_state: COMPLETED ssid=0x94a350 current_ssid=0x94a350
wlp1s0: Request association with 48:8f:5a:7d:b3:6f
wlp1s0: Re-association to the same ESS
<...>