@@ -670,7 +670,7 @@ static void ath10k_htt_rx_h_rates(struct ath10k *ar,
u8 info0, u32 info1, u32 info2,
struct ieee80211_rx_status *status)
{
- u8 cck, rate, rate_idx, bw, sgi, mcs, nss;
+ u8 cck, rate, rate_idx, bw, sgi, mcs, nss, ldpc, stbc;
u8 preamble = 0;
/* Check if valid fields */
@@ -730,6 +730,8 @@ static void ath10k_htt_rx_h_rates(struct ath10k *ar,
nss = ((info1 >> 10) & 0x07) + 1;
bw = info1 & 3;
sgi = info2 & 1;
+ stbc = info1 & 8;
+ ldpc = info2 & 4;
status->rate_idx = mcs;
status->vht_nss = nss;
@@ -737,6 +739,13 @@ static void ath10k_htt_rx_h_rates(struct ath10k *ar,
if (sgi)
status->flag |= RX_FLAG_SHORT_GI;
+ /* for test */
+ status->flag |= stbc << RX_FLAG_STBC_SHIFT;
+
+ if (ldpc)
+ status->flag |= RX_FLAG_LDPC;
+
+
switch (bw) {
/* 20MHZ */
case 0:
@@ -487,6 +487,9 @@ static struct wmi_pdev_param_map wmi_10x_pdev_param_map = {
.burst_enable = WMI_10X_PDEV_PARAM_BURST_ENABLE,
};
+int ath10k_wmi_vdev_set_param(struct ath10k *ar, u32 vdev_id,
+ u32 param_id, u32 param_value);
+
int ath10k_wmi_wait_for_service_ready(struct ath10k *ar)
{
int ret;
@@ -3143,6 +3146,11 @@ int ath10k_wmi_vdev_up(struct ath10k *ar, u32 vdev_id, u32 aid, const u8 *bssid)
struct wmi_vdev_up_cmd *cmd;
struct sk_buff *skb;
+ /* add for test */
+ ath10k_wmi_vdev_set_param(ar, vdev_id, WMI_VDEV_PARAM_LDPC, 1);
+ ath10k_wmi_vdev_set_param(ar, vdev_id, WMI_VDEV_PARAM_RX_STBC, 1);
+ ath10k_wmi_vdev_set_param(ar, vdev_id, WMI_VDEV_PARAM_SGI, 1);
+
skb = ath10k_wmi_alloc_skb(sizeof(*cmd));
if (!skb)
return -ENOMEM;