aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/ath10k-ct/patches/164-ath10k-commit-rates-from-mac80211.patch
blob: 9a31164fcc1bca447a8a0b110dd919f2e3e5ae5f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
From: Sven Eckelmann <sven@narfation.org>
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 <sven@narfation.org>

--- 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);