From: Sven Eckelmann Date: Tue, 26 Feb 2019 08:06:35 +0100 Subject: ath10k-ct: apply mac80211 rates to ath10k-ct rate state The rates from mac80211 have to be copied to the state of ath10k-ct or otherwise the ath10k_check_apply_special_rates function overwrites them again with some default values. This breaks for example the mcast_rate set for a wifi-iface. Signed-off-by: Sven Eckelmann --- a/ath10k-4.19/mac.c +++ b/ath10k-4.19/mac.c @@ -6625,6 +6625,7 @@ static void ath10k_bss_info_changed(stru "mac vdev %d mcast_rate %x\n", arvif->vdev_id, rate); + arvif->mcast_rate[band] = rate; vdev_param = ar->wmi.vdev_param->mcast_data_rate; ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, rate); @@ -6633,6 +6634,7 @@ static void ath10k_bss_info_changed(stru "failed to set mcast rate on vdev %i: %d\n", arvif->vdev_id, ret); + arvif->bcast_rate[band] = rate; vdev_param = ar->wmi.vdev_param->bcast_data_rate; ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, rate); @@ -6659,6 +6661,7 @@ static void ath10k_bss_info_changed(stru return; } + arvif->mgt_rate[def.chan->band] = hw_rate_code; vdev_param = ar->wmi.vdev_param->mgmt_rate; ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, hw_rate_code); --- a/ath10k-5.2/mac.c +++ b/ath10k-5.2/mac.c @@ -6742,6 +6742,7 @@ static void ath10k_bss_info_changed(stru "mac vdev %d mcast_rate %x\n", arvif->vdev_id, rate); + arvif->mcast_rate[band] = rate; vdev_param = ar->wmi.vdev_param->mcast_data_rate; ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, rate); @@ -6750,6 +6751,7 @@ static void ath10k_bss_info_changed(stru "failed to set mcast rate on vdev %i: %d\n", arvif->vdev_id, ret); + arvif->bcast_rate[band] = rate; vdev_param = ar->wmi.vdev_param->bcast_data_rate; ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, rate); @@ -6776,6 +6778,7 @@ static void ath10k_bss_info_changed(stru return; } + arvif->mgt_rate[def.chan->band] = hw_rate_code; vdev_param = ar->wmi.vdev_param->mgmt_rate; ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, hw_rate_code);