Hi Georgi,

thanks for testing and for your insight into this issue.

On 2020-09-26 06:41, Georgi Valkov wrote:
> Hi Felix!
> 
> With your latest suggestion, it takes between 10 and 17 hours for the 
> connection to drop, then long five minutes to reconnect.
> Notice the order of code execution in the original code of 
> ieee80211_sta_tx_notify():
> probe_send_count is always cleared when ack is true. But before clearing 
> probe_send_count, we need to check if ieee80211_is_any_nullfunc() returns 
> true and probe_send_count > 0: if yes, we must call ieee80211_queue_work(). 
> You cleared probe_send_count ahead of time, so the condition to run 
> ieee80211_queue_work() will never be met.
The condition in ieee80211_sta_tx_notify may not be met, but
ieee80211_queue_work is called from ieee80211_tx_status_ext in that
case. Any idea why that is not enough?

> To spare your time, I did spend one week to find the cause, then another 
> learning every detail about the code and testing various solutions, including 
> those you proposed. While I do not have experience with mac80211’s design, 
> I’m quite good at preserving the exact behaviour during large scale 
> refactoring. And in my fix I tried changing as little as possible to keep the 
> patch small, preserving both your changes and the original design behaviour.
And the reason I'm still proposing changes to it is because your patch
does not take into account no-skb or 802.3 tx status.
I'll try to make a v3 patch that leaves more of the original code intact
at the cost of a little more duplication.

- Felix

_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to