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
signature.asc
Description: This is a digitally signed message part.
