[PATCH] mac80211: fix regression in sta connection monitor

Georgi Valkov gvalkov at abv.bg
Tue Sep 22 03:28:57 EDT 2020


Hi Felix!

In the original code before the regression, as well as in the fix I proposed, probe_send_count was always reset if ack is true, while in your fix it will not be reset when non-null frames are received. The connection failed again after 10 hours and the STA remained offline for two minutes instead of two seconds. I should also note that I spent multiple days testing the fix I proposed and I had no disconnects. Please revise your fix again!


// my fix
void ieee80211_sta_tx_notify(struct ieee80211_sub_if_data *sdata,
			     struct ieee80211_hdr *hdr, bool ack, u16 tx_time)
{
	ieee80211_sta_tx_wmm_ac_notify(sdata, hdr, tx_time);

	if (ieee80211_is_any_nullfunc(hdr->frame_control) &&
	    sdata->u.mgd.probe_send_count > 0) {
		if (ack)
			sdata->u.mgd.probe_send_count = 0;
		else
			sdata->u.mgd.nullfunc_failed = true;
		ieee80211_queue_work(&sdata->local->hw, &sdata->work);
		return;
	}

	if (ack)
		sdata->u.mgd.probe_send_count = 0;
}


// commit 1c6d45644a54e50b6445bbc63eff1ae34b2f1e2e
void ieee80211_sta_tx_notify(struct ieee80211_sub_if_data *sdata,
			     struct ieee80211_hdr *hdr, bool ack, u16 tx_time)
{
	ieee80211_sta_tx_wmm_ac_notify(sdata, hdr, tx_time);

	if (!ieee80211_is_any_nullfunc(hdr->frame_control) ||
	    !sdata->u.mgd.probe_send_count)
		return;

	if (ack)
		sdata->u.mgd.probe_send_count = 0;
	else
		sdata->u.mgd.nullfunc_failed = true;
	ieee80211_queue_work(&sdata->local->hw, &sdata->work);
}


[STA: excerpt from the kernel log]
[   37.473147] jffs2_scan_eraseblock(): End of filesystem marker found at 0x0
[   37.587678] jffs2_build_filesystem(): unlocking the mtd device...
[   37.587722] done.
[   37.596129] jffs2_build_filesystem(): erasing all blocks after the end marker...
[   37.964664] br-lan: port 1(eth0.1) entered forwarding state
[   37.978167] br-lan: topology change detected, propagating
[   37.984273] IPv6: ADDRCONF(NETDEV_CHANGE): br-lan: link becomes ready
[   38.744745] ath: EEPROM regdomain: 0x8348
[   38.744752] ath: EEPROM indicates we should expect a country code
[   38.744759] ath: doing EEPROM country->regdmn map search
[   38.744764] ath: country maps to regdmn code: 0x3a
[   38.744769] ath: Country alpha2 being used: US
[   38.744772] ath: Regpair used: 0x3a
[   38.744778] ath: regdomain 0x8348 dynamically updated by user
[   39.468663] br-lan: port 2(tap_su) entered learning state
[   41.377031] br-lan: port 3(wifi) entered blocking state
[   41.382487] br-lan: port 3(wifi) entered disabled state
[   41.388183] device wifi entered promiscuous mode
[   41.484626] br-lan: port 2(tap_su) entered forwarding state
[   41.490410] br-lan: topology change detected, propagating
[   41.954884] wifi: authenticate with 60:38:e0:xx:xx:xx
[   41.974243] wifi: send auth to 60:38:e0:xx:xx:xx (try 1/3)
[   41.986584] wifi: authenticated
[   42.044684] wifi: associate with 60:38:e0:xx:xx:xx (try 1/3)
[   42.070584] wifi: RX AssocResp from 60:38:e0:xx:xx:xx (capab=0x431 status=0 aid=1)
[   42.078755] wifi: associated
[   42.093218] IPv6: ADDRCONF(NETDEV_CHANGE): wifi: link becomes ready
[   42.099926] br-lan: port 3(wifi) entered blocking state
[   42.105375] br-lan: port 3(wifi) entered listening state
[   44.140622] br-lan: port 3(wifi) entered learning state
[   46.156627] br-lan: port 3(wifi) entered forwarding state
[   46.162225] br-lan: topology change detected, sending tcn bpdu
[   66.065901] done.
[   66.067921] jffs2: notice: (1973) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found.
[   66.371947] overlayfs: upper fs does not support tmpfile.
[   96.686235] sh (2348): drop_caches: 3
[36276.157356] wifi: deauthenticated from 60:38:e0:xx:xx:xx (Reason: 16=GROUP_KEY_HANDSHAKE_TIMEOUT)
[36276.166733] br-lan: port 3(wifi) entered disabled state
[36276.172265] br-lan: topology change detected, propagating
[36277.143206] wifi: authenticate with 60:38:e0:xx:xx:xx
[36277.162537] wifi: send auth to 60:38:e0:xx:xx:xx (try 1/3)
[36277.207635] wifi: authenticated
[36277.212374] wifi: associate with 60:38:e0:xx:xx:xx (try 1/3)
[36277.236924] wifi: RX AssocResp from 60:38:e0:xx:xx:xx (capab=0x431 status=0 aid=1)
[36277.245086] wifi: associated
[36277.272020] br-lan: port 3(wifi) entered blocking state
[36277.277472] br-lan: port 3(wifi) entered listening state
[36279.304356] br-lan: port 3(wifi) entered learning state
[36281.320494] br-lan: port 3(wifi) entered forwarding state
[36281.326089] br-lan: topology change detected, sending tcn bpdu
[36301.769911] br-lan: port 3(wifi) neighbor 7fff.60:38:e0:xx:xx:xy lost
[36301.776587] br-lan: topology change detected, propagating
[36577.165274] wifi: disassociated from 60:38:e0:xx:xx:xx (Reason: 4=DISASSOC_DUE_TO_INACTIVITY)
[36577.174238] br-lan: port 3(wifi) entered disabled state
[36577.228788] wifi: authenticate with 60:38:e0:xx:xx:xx
[36577.248147] wifi: send auth to 60:38:e0:xx:xx:xx (try 1/3)
[36577.255054] wifi: authenticated
[36577.259806] wifi: associate with 60:38:e0:xx:xx:xx (try 1/3)
[36577.285353] wifi: RX AssocResp from 60:38:e0:xx:xx:xx (capab=0x431 status=0 aid=1)
[36577.293521] wifi: associated
[36577.303805] br-lan: port 3(wifi) entered blocking state
[36577.309234] br-lan: port 3(wifi) entered listening state
[36579.323849] br-lan: port 3(wifi) entered learning state
[36581.339975] br-lan: port 3(wifi) entered forwarding state
[36581.345571] br-lan: topology change detected, sending tcn bpdu


[STA: excerpt from the system log]
Tue Sep 22 09:24:16 2020 daemon.notice wpa_supplicant[1436]: wifi: WPA: Group rekeying completed with 60:38:e0:xx:xx:xx [GTK=CCMP]
Tue Sep 22 09:24:20 2020 kern.info kernel: [36276.157356] wifi: deauthenticated from 60:38:e0:xx:xx:xx (Reason: 16=GROUP_KEY_HANDSHAKE_TIMEOUT)
Tue Sep 22 09:24:20 2020 kern.info kernel: [36276.166733] br-lan: port 3(wifi) entered disabled state
Tue Sep 22 09:24:20 2020 kern.info kernel: [36276.172265] br-lan: topology change detected, propagating
Tue Sep 22 09:24:20 2020 daemon.notice netifd: Network device 'wifi' link is down
Tue Sep 22 09:24:20 2020 daemon.notice wpa_supplicant[1436]: wifi: CTRL-EVENT-DISCONNECTED bssid=60:38:e0:xx:xx:xx reason=16
Tue Sep 22 09:24:21 2020 daemon.notice wpa_supplicant[1436]: wifi: SME: Trying to authenticate with 60:38:e0:xx:xx:xx (SSID='wifi' freq=2432 MHz)
Tue Sep 22 09:24:21 2020 kern.info kernel: [36277.143206] wifi: authenticate with 60:38:e0:xx:xx:xx
Tue Sep 22 09:24:21 2020 kern.info kernel: [36277.162537] wifi: send auth to 60:38:e0:xx:xx:xx (try 1/3)
Tue Sep 22 09:24:21 2020 daemon.notice wpa_supplicant[1436]: wifi: Trying to associate with 60:38:e0:xx:xx:xx (SSID='wifi' freq=2432 MHz)
Tue Sep 22 09:24:21 2020 kern.info kernel: [36277.207635] wifi: authenticated
Tue Sep 22 09:24:21 2020 kern.info kernel: [36277.212374] wifi: associate with 60:38:e0:xx:xx:xx (try 1/3)
Tue Sep 22 09:24:22 2020 kern.info kernel: [36277.236924] wifi: RX AssocResp from 60:38:e0:xx:xx:xx (capab=0x431 status=0 aid=1)
Tue Sep 22 09:24:22 2020 kern.info kernel: [36277.245086] wifi: associated
Tue Sep 22 09:24:22 2020 daemon.notice netifd: Network device 'wifi' link is up
Tue Sep 22 09:24:22 2020 daemon.notice wpa_supplicant[1436]: wifi: Associated with 60:38:e0:xx:xx:xx
Tue Sep 22 09:24:22 2020 daemon.notice wpa_supplicant[1436]: wifi: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
Tue Sep 22 09:24:22 2020 daemon.notice wpa_supplicant[1436]: wifi: WPA: Key negotiation completed with 60:38:e0:xx:xx:xx [PTK=CCMP GTK=CCMP]
Tue Sep 22 09:24:22 2020 daemon.notice wpa_supplicant[1436]: wifi: CTRL-EVENT-CONNECTED - Connection to 60:38:e0:xx:xx:xx completed [id=0 id_str=]
Tue Sep 22 09:24:22 2020 kern.info kernel: [36277.272020] br-lan: port 3(wifi) entered blocking state
Tue Sep 22 09:24:22 2020 kern.info kernel: [36277.277472] br-lan: port 3(wifi) entered listening state
Tue Sep 22 09:24:24 2020 kern.info kernel: [36279.304356] br-lan: port 3(wifi) entered learning state
Tue Sep 22 09:24:26 2020 kern.info kernel: [36281.320494] br-lan: port 3(wifi) entered forwarding state
Tue Sep 22 09:24:26 2020 kern.info kernel: [36281.326089] br-lan: topology change detected, sending tcn bpdu
Tue Sep 22 09:24:46 2020 kern.info kernel: [36301.769911] br-lan: port 3(wifi) neighbor 7fff.60:38:e0:xx:xx:xy lost
Tue Sep 22 09:24:46 2020 kern.info kernel: [36301.776587] br-lan: topology change detected, propagating
Tue Sep 22 09:29:21 2020 kern.info kernel: [36577.165274] wifi: disassociated from 60:38:e0:xx:xx:xx (Reason: 4=DISASSOC_DUE_TO_INACTIVITY)
Tue Sep 22 09:29:21 2020 kern.info kernel: [36577.174238] br-lan: port 3(wifi) entered disabled state
Tue Sep 22 09:29:21 2020 daemon.notice netifd: Network device 'wifi' link is down
Tue Sep 22 09:29:21 2020 daemon.notice wpa_supplicant[1436]: wifi: CTRL-EVENT-DISCONNECTED bssid=60:38:e0:xx:xx:xx reason=4
Tue Sep 22 09:29:21 2020 daemon.notice wpa_supplicant[1436]: wifi: SME: Trying to authenticate with 60:38:e0:xx:xx:xx (SSID='wifi' freq=2432 MHz)
Tue Sep 22 09:29:22 2020 kern.info kernel: [36577.228788] wifi: authenticate with 60:38:e0:xx:xx:xx
Tue Sep 22 09:29:22 2020 kern.info kernel: [36577.248147] wifi: send auth to 60:38:e0:xx:xx:xx (try 1/3)
Tue Sep 22 09:29:22 2020 kern.info kernel: [36577.255054] wifi: authenticated
Tue Sep 22 09:29:22 2020 daemon.notice wpa_supplicant[1436]: wifi: Trying to associate with 60:38:e0:xx:xx:xx (SSID='wifi' freq=2432 MHz)
Tue Sep 22 09:29:22 2020 kern.info kernel: [36577.259806] wifi: associate with 60:38:e0:xx:xx:xx (try 1/3)
Tue Sep 22 09:29:22 2020 kern.info kernel: [36577.285353] wifi: RX AssocResp from 60:38:e0:xx:xx:xx (capab=0x431 status=0 aid=1)
Tue Sep 22 09:29:22 2020 kern.info kernel: [36577.293521] wifi: associated
Tue Sep 22 09:29:22 2020 daemon.notice wpa_supplicant[1436]: wifi: Associated with 60:38:e0:xx:xx:xx
Tue Sep 22 09:29:22 2020 daemon.notice wpa_supplicant[1436]: wifi: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
Tue Sep 22 09:29:22 2020 daemon.notice netifd: Network device 'wifi' link is up
Tue Sep 22 09:29:22 2020 daemon.notice wpa_supplicant[1436]: wifi: WPA: Key negotiation completed with 60:38:e0:xx:xx:xx [PTK=CCMP GTK=CCMP]
Tue Sep 22 09:29:22 2020 daemon.notice wpa_supplicant[1436]: wifi: CTRL-EVENT-CONNECTED - Connection to 60:38:e0:xx:xx:xx completed [id=0 id_str=]
Tue Sep 22 09:29:22 2020 kern.info kernel: [36577.303805] br-lan: port 3(wifi) entered blocking state
Tue Sep 22 09:29:22 2020 kern.info kernel: [36577.309234] br-lan: port 3(wifi) entered listening state
Tue Sep 22 09:29:24 2020 kern.info kernel: [36579.323849] br-lan: port 3(wifi) entered learning state
Tue Sep 22 09:29:26 2020 kern.info kernel: [36581.339975] br-lan: port 3(wifi) entered forwarding state
Tue Sep 22 09:29:26 2020 kern.info kernel: [36581.345571] br-lan: topology change detected, sending tcn bpdu


[AP: excerpt from the kernel log]
[86442.373359] ieee80211 phy1: staid 1 deleted
[86448.496264] ieee80211 phy1: staid 1 deleted


[PC: ping -t 192.168.zzz.1]
Reply from 192.168.zzz.1: bytes=32 time=6ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=2ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=2ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=2ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=2ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=2ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=6ms TTL=64
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.

Ping statistics for 192.168.zzz.1:
    Packets: Sent = 29750, Received = 29745, Lost = 5 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 242ms, Average = 2ms
Control-Break
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.7: Destination host unreachable.
Reply from 192.168.zzz.1: bytes=32 time=2996ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=502ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=502ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=502ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=502ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=502ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=44ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=502ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=502ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=504ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=502ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=502ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=502ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=502ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=502ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=502ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=502ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=503ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=502ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=504ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=503ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=504ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=502ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=502ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=504ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=502ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=502ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=502ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=502ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=502ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=502ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=505ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=503ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=502ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=502ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=502ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=301ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=507ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=5ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=2ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=2ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=2ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=2ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=2ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=2ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=3ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=2ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=2ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=2ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=2ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=2ms TTL=64
Reply from 192.168.zzz.1: bytes=32 time=3ms TTL=64

Ping statistics for 192.168.zzz.1:
    Packets: Sent = 29820, Received = 29815, Lost = 5 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 2996ms, Average = 3ms


> On 2020-09-21, at 6:45 PM, Felix Fietkau <nbd at nbd.name> wrote:
> 
> When the nulldata frame was acked, the probe send count needs to be reset,
> otherwise it will keep increasing until the connection is considered dead,
> even though it fine.
> 
> Fixes: 9abf4e49830d ("mac80211: optimize station connection monitor")
> Reported-by: Georgi Valkov <gvalkov at abv.bg>
> Signed-off-by: Felix Fietkau <nbd at nbd.name>
> ---
> net/mac80211/mlme.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
> index 50a9b9025725..7c04d8e30482 100644
> --- a/net/mac80211/mlme.c
> +++ b/net/mac80211/mlme.c
> @@ -2508,7 +2508,9 @@ void ieee80211_sta_tx_notify(struct ieee80211_sub_if_data *sdata,
> 	    !sdata->u.mgd.probe_send_count)
> 		return;
> 
> -	if (!ack)
> +	if (ack)
> +		sdata->u.mgd.probe_send_count = 0;
> +	else
> 		sdata->u.mgd.nullfunc_failed = true;
> 	ieee80211_queue_work(&sdata->local->hw, &sdata->work);
> }
> -- 
> 2.28.0
> 
> 




More information about the openwrt-devel mailing list