On Tuesday, 11 June 2019 20:02:47 CEST Sven Eckelmann wrote: [...] > --- > This doesn't work currently as expected. No HE rates are used between > the two HE mesh peers: [...] There seems to be also an ordering problem. ath11k_peer_assoc_h_he is only called before ieee80211_he_cap_ie_to_sta_he_cap is called. So ath11k_bss_assoc will not have the information whether the remote has HE support or not. Looks like I have adjust mesh_sta_info_init to get this somehow to ath11k_peer_assoc_h_he. Maybe through ath11k_sta_rc_update but this is not called by mesh_sta_info_init at the moment. Just because rate_control_rate_init is called and not rate_control_rate_update. The easiest method seems to adjust the check at the end of mesh_sta_info_init to if (!test_sta_flag(sta, WLAN_STA_RATE_CONTROL) && !ieee80211_hw_check(&local->hw, HAS_RATE_CONTROL)) { rate_control_rate_init(sta); } else { rate_control_rate_update(local, sband, sta, changed); } and to create a IEEE80211_RC_SUPP_RATES_CHANGED change when the has_he state changes. And yes, I know that Bob Copeland added this because it would have crashed ath10k when rate_control_rate_init is not used [1]. The other suggestion would be: if (!test_sta_flag(sta, WLAN_STA_RATE_CONTROL)) rate_control_rate_init(sta); /* inform drivers about changes */ rate_control_rate_update(local, sband, sta, changed); Both will at least cause a call to ath11k_peer_assoc_prepare + ath11k_wmi_send_peer_assoc_cmd but unfortunately the ath11k firmware hangs afterwards. Kind regards, Sven [1] https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/commit/?id=1d6741d86429a294f51f2773c751c8f7662e7ca2
Attachment:
signature.asc
Description: This is a digitally signed message part.