|
@@ -5957,7 +5957,7 @@ ath10k_mac_bitrate_mask_get_single_rate(struct ath10k *ar,
|
|
|
}
|
|
|
|
|
|
static int ath10k_mac_set_fixed_rate_params(struct ath10k_vif *arvif,
|
|
|
- u8 rate, u8 nss, u8 sgi)
|
|
|
+ u8 rate, u8 nss, u8 sgi, u8 ldpc)
|
|
|
{
|
|
|
struct ath10k *ar = arvif->ar;
|
|
|
u32 vdev_param;
|
|
@@ -5990,6 +5990,13 @@ static int ath10k_mac_set_fixed_rate_params(struct ath10k_vif *arvif,
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
+ vdev_param = ar->wmi.vdev_param->ldpc;
|
|
|
+ ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, ldpc);
|
|
|
+ if (ret) {
|
|
|
+ ath10k_warn(ar, "failed to set ldpc param %d: %d\n", ldpc, ret);
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -6053,6 +6060,7 @@ static int ath10k_mac_op_set_bitrate_mask(struct ieee80211_hw *hw,
|
|
|
u8 rate;
|
|
|
u8 nss;
|
|
|
u8 sgi;
|
|
|
+ u8 ldpc;
|
|
|
int single_nss;
|
|
|
int ret;
|
|
|
|
|
@@ -6062,6 +6070,7 @@ static int ath10k_mac_op_set_bitrate_mask(struct ieee80211_hw *hw,
|
|
|
band = def.chan->band;
|
|
|
ht_mcs_mask = mask->control[band].ht_mcs;
|
|
|
vht_mcs_mask = mask->control[band].vht_mcs;
|
|
|
+ ldpc = !!(ar->ht_cap_info & WMI_HT_CAP_LDPC);
|
|
|
|
|
|
sgi = mask->control[band].gi;
|
|
|
if (sgi == NL80211_TXRATE_FORCE_LGI)
|
|
@@ -6100,7 +6109,7 @@ static int ath10k_mac_op_set_bitrate_mask(struct ieee80211_hw *hw,
|
|
|
|
|
|
mutex_lock(&ar->conf_mutex);
|
|
|
|
|
|
- ret = ath10k_mac_set_fixed_rate_params(arvif, rate, nss, sgi);
|
|
|
+ ret = ath10k_mac_set_fixed_rate_params(arvif, rate, nss, sgi, ldpc);
|
|
|
if (ret) {
|
|
|
ath10k_warn(ar, "failed to set fixed rate params on vdev %i: %d\n",
|
|
|
arvif->vdev_id, ret);
|