* [PATCH] ath10k: enable VHT160 and VHT80+80 modes
@ 2020-03-25 14:56 Sowmiya Sree Elavalagan
2020-03-26 9:59 ` Kalle Valo
[not found] ` <20200326095907.5326BC433BA@smtp.codeaurora.org>
0 siblings, 2 replies; 5+ messages in thread
From: Sowmiya Sree Elavalagan @ 2020-03-25 14:56 UTC (permalink / raw)
To: ath10k
Cc: linux-wireless, Lei Wang, Sebastian Gottschall, Rick Wu,
Sowmiya Sree Elavalagan
From: Lei Wang <leiwa@codeaurora.org>
Set right channel frequencies in VHT160 mode according to the VHT160
interoperability workaround added as part of IEEE Std 802.11™-2016 in
"Table 9-252—VHT Operation Information subfields", band_center_freq2
corresponds to CCFS1 in Table 9-253. Previous implementation
(band_center_freq2 = 0 for VHT160) is only deprecated.
Enable VHT80+80 mode and set the proper peer RX nss value for VHT160 and
VHT80+80 mode.
Based on patches by Sebastian Gottschall:
https://lkml.kernel.org/r/20180704095444.662-1-s.gottschall@dd-wrt.com
https://lkml.kernel.org/r/20180704120519.6479-1-s.gottschall@dd-wrt.com
Tested: qca9984 with firmware ver 10.4-3.10-00047
Co-developed-by: Sebastian Gottschall <s.gottschall@dd-wrt.com>
Signed-off-by: Sebastian Gottschall <s.gottschall@dd-wrt.com>
Co-developed-by: Rick Wu <rwu@codeaurora.org>
Signed-off-by: Rick Wu <rwu@codeaurora.org>
Signed-off-by: Lei Wang <leiwa@codeaurora.org>
Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
---
drivers/net/wireless/ath/ath10k/mac.c | 84 +++++++++++++++++++++++++----------
drivers/net/wireless/ath/ath10k/wmi.c | 23 ++++++----
drivers/net/wireless/ath/ath10k/wmi.h | 5 ++-
3 files changed, 80 insertions(+), 32 deletions(-)
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index 81e148e..7c2e396 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -2505,6 +2505,30 @@ static int ath10k_peer_assoc_qos_ap(struct ath10k *ar,
return tx_mcs_set;
}
+static u32 get_160mhz_nss_from_maxrate(int rate)
+{
+ u32 nss;
+
+ switch (rate) {
+ case 780:
+ nss = 1;
+ break;
+ case 1560:
+ nss = 2;
+ break;
+ case 2106:
+ nss = 3; /* not support MCS9 from spec*/
+ break;
+ case 3120:
+ nss = 4;
+ break;
+ default:
+ nss = 0;
+ }
+
+ return nss;
+}
+
static void ath10k_peer_assoc_h_vht(struct ath10k *ar,
struct ieee80211_vif *vif,
struct ieee80211_sta *sta,
@@ -2512,6 +2536,7 @@ static void ath10k_peer_assoc_h_vht(struct ath10k *ar,
{
const struct ieee80211_sta_vht_cap *vht_cap = &sta->vht_cap;
struct ath10k_vif *arvif = (void *)vif->drv_priv;
+ struct ath10k_hw_params *hw = &ar->hw_params;
struct cfg80211_chan_def def;
enum nl80211_band band;
const u16 *vht_mcs_mask;
@@ -2578,22 +2603,38 @@ static void ath10k_peer_assoc_h_vht(struct ath10k *ar,
arg->peer_vht_rates.tx_mcs_set = ath10k_peer_assoc_h_vht_limit(
__le16_to_cpu(vht_cap->vht_mcs.tx_mcs_map), vht_mcs_mask);
- ath10k_dbg(ar, ATH10K_DBG_MAC, "mac vht peer %pM max_mpdu %d flags 0x%x\n",
- sta->addr, arg->peer_max_mpdu, arg->peer_flags);
+ /* Configure bandwidth-NSS mapping to FW
+ * for the chip's tx chains setting on 160Mhz bw
+ */
+ if (arg->peer_phymode == MODE_11AC_VHT160 ||
+ arg->peer_phymode == MODE_11AC_VHT80_80) {
+ u32 rx_nss;
+ u32 max_rate;
- if (arg->peer_vht_rates.rx_max_rate &&
- (sta->vht_cap.cap & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK)) {
- switch (arg->peer_vht_rates.rx_max_rate) {
- case 1560:
- /* Must be 2x2 at 160Mhz is all it can do. */
- arg->peer_bw_rxnss_override = 2;
- break;
- case 780:
- /* Can only do 1x1 at 160Mhz (Long Guard Interval) */
- arg->peer_bw_rxnss_override = 1;
- break;
+ max_rate = arg->peer_vht_rates.rx_max_rate;
+ rx_nss = get_160mhz_nss_from_maxrate(max_rate);
+
+ if (rx_nss == 0)
+ rx_nss = arg->peer_num_spatial_streams;
+ else
+ rx_nss = min(arg->peer_num_spatial_streams, rx_nss);
+
+ max_rate = hw->vht160_mcs_tx_highest;
+ rx_nss = min(rx_nss, get_160mhz_nss_from_maxrate(max_rate));
+
+ arg->peer_bw_rxnss_override =
+ FIELD_PREP(WMI_PEER_NSS_MAP_ENABLE, 1) |
+ FIELD_PREP(WMI_PEER_NSS_160MHZ_MASK, (rx_nss - 1));
+
+ if (arg->peer_phymode == MODE_11AC_VHT80_80) {
+ arg->peer_bw_rxnss_override |=
+ FIELD_PREP(WMI_PEER_NSS_80_80MHZ_MASK, (rx_nss - 1));
}
}
+ ath10k_dbg(ar, ATH10K_DBG_MAC,
+ "mac vht peer %pM max_mpdu %d flags 0x%x peer_rx_nss_override 0x%x\n",
+ sta->addr, arg->peer_max_mpdu,
+ arg->peer_flags, arg->peer_bw_rxnss_override);
}
static void ath10k_peer_assoc_h_qos(struct ath10k *ar,
@@ -2745,9 +2786,9 @@ static int ath10k_peer_assoc_prepare(struct ath10k *ar,
ath10k_peer_assoc_h_crypto(ar, vif, sta, arg);
ath10k_peer_assoc_h_rates(ar, vif, sta, arg);
ath10k_peer_assoc_h_ht(ar, vif, sta, arg);
+ ath10k_peer_assoc_h_phymode(ar, vif, sta, arg);
ath10k_peer_assoc_h_vht(ar, vif, sta, arg);
ath10k_peer_assoc_h_qos(ar, vif, sta, arg);
- ath10k_peer_assoc_h_phymode(ar, vif, sta, arg);
return 0;
}
@@ -4561,13 +4602,6 @@ static struct ieee80211_sta_vht_cap ath10k_create_vht_cap(struct ath10k *ar)
vht_cap.cap |= val;
}
- /* Currently the firmware seems to be buggy, don't enable 80+80
- * mode until that's resolved.
- */
- if ((ar->vht_cap_info & IEEE80211_VHT_CAP_SHORT_GI_160) &&
- (ar->vht_cap_info & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK) == 0)
- vht_cap.cap |= IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ;
-
mcs_map = 0;
for (i = 0; i < 8; i++) {
if ((i < ar->num_rf_chains) && (ar->cfg_tx_chainmask & BIT(i)))
@@ -8623,7 +8657,9 @@ void ath10k_mac_destroy(struct ath10k *ar)
.radar_detect_widths = BIT(NL80211_CHAN_WIDTH_20_NOHT) |
BIT(NL80211_CHAN_WIDTH_20) |
BIT(NL80211_CHAN_WIDTH_40) |
- BIT(NL80211_CHAN_WIDTH_80),
+ BIT(NL80211_CHAN_WIDTH_80) |
+ BIT(NL80211_CHAN_WIDTH_80P80) |
+ BIT(NL80211_CHAN_WIDTH_160),
#endif
},
};
@@ -8641,7 +8677,9 @@ void ath10k_mac_destroy(struct ath10k *ar)
.radar_detect_widths = BIT(NL80211_CHAN_WIDTH_20_NOHT) |
BIT(NL80211_CHAN_WIDTH_20) |
BIT(NL80211_CHAN_WIDTH_40) |
- BIT(NL80211_CHAN_WIDTH_80),
+ BIT(NL80211_CHAN_WIDTH_80) |
+ BIT(NL80211_CHAN_WIDTH_80P80) |
+ BIT(NL80211_CHAN_WIDTH_160),
#endif
},
};
diff --git a/drivers/net/wireless/ath/ath10k/wmi.c b/drivers/net/wireless/ath/ath10k/wmi.c
index 2ea77bb..db6f4c7 100644
--- a/drivers/net/wireless/ath/ath10k/wmi.c
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
@@ -1714,12 +1714,23 @@ void ath10k_wmi_put_wmi_channel(struct wmi_channel *ch,
if (arg->chan_radar)
flags |= WMI_CHAN_FLAG_DFS;
+ ch->band_center_freq2 = 0;
ch->mhz = __cpu_to_le32(arg->freq);
ch->band_center_freq1 = __cpu_to_le32(arg->band_center_freq1);
if (arg->mode == MODE_11AC_VHT80_80)
ch->band_center_freq2 = __cpu_to_le32(arg->band_center_freq2);
- else
- ch->band_center_freq2 = 0;
+
+ if (arg->mode == MODE_11AC_VHT160) {
+ if (arg->freq > arg->band_center_freq1)
+ ch->band_center_freq1 =
+ __cpu_to_le32(arg->band_center_freq1 + 40);
+ else
+ ch->band_center_freq1 =
+ __cpu_to_le32(arg->band_center_freq1 - 40);
+
+ ch->band_center_freq2 = __cpu_to_le32(arg->band_center_freq1);
+ }
+
ch->min_power = arg->min_power;
ch->max_power = arg->max_power;
ch->reg_power = arg->max_reg_power;
@@ -7628,12 +7639,8 @@ void ath10k_wmi_start_scan_init(struct ath10k *ar,
struct wmi_10_4_peer_assoc_complete_cmd *cmd = buf;
ath10k_wmi_peer_assoc_fill_10_2(ar, buf, arg);
- if (arg->peer_bw_rxnss_override)
- cmd->peer_bw_rxnss_override =
- __cpu_to_le32((arg->peer_bw_rxnss_override - 1) |
- BIT(PEER_BW_RXNSS_OVERRIDE_OFFSET));
- else
- cmd->peer_bw_rxnss_override = 0;
+ cmd->peer_bw_rxnss_override =
+ __cpu_to_le32(arg->peer_bw_rxnss_override);
}
static int
diff --git a/drivers/net/wireless/ath/ath10k/wmi.h b/drivers/net/wireless/ath/ath10k/wmi.h
index 972d53d..f722eef3 100644
--- a/drivers/net/wireless/ath/ath10k/wmi.h
+++ b/drivers/net/wireless/ath/ath10k/wmi.h
@@ -6501,7 +6501,10 @@ struct wmi_10_2_peer_assoc_complete_cmd {
__le32 info0; /* WMI_PEER_ASSOC_INFO0_ */
} __packed;
-#define PEER_BW_RXNSS_OVERRIDE_OFFSET 31
+/* NSS Mapping to FW */
+#define WMI_PEER_NSS_MAP_ENABLE BIT(31)
+#define WMI_PEER_NSS_160MHZ_MASK GENMASK(2, 0)
+#define WMI_PEER_NSS_80_80MHZ_MASK GENMASK(5, 3)
struct wmi_10_4_peer_assoc_complete_cmd {
struct wmi_10_2_peer_assoc_complete_cmd cmd;
--
1.9.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] ath10k: enable VHT160 and VHT80+80 modes
2020-03-25 14:56 [PATCH] ath10k: enable VHT160 and VHT80+80 modes Sowmiya Sree Elavalagan
@ 2020-03-26 9:59 ` Kalle Valo
[not found] ` <20200326095907.5326BC433BA@smtp.codeaurora.org>
1 sibling, 0 replies; 5+ messages in thread
From: Kalle Valo @ 2020-03-26 9:59 UTC (permalink / raw)
To: Sowmiya Sree Elavalagan
Cc: ath10k, linux-wireless, Lei Wang, Sebastian Gottschall, Rick Wu,
Sowmiya Sree Elavalagan
Sowmiya Sree Elavalagan <ssreeela@codeaurora.org> wrote:
> From: Lei Wang <leiwa@codeaurora.org>
>
> Set right channel frequencies in VHT160 mode according to the VHT160
> interoperability workaround added as part of IEEE Std 802.11™-2016 in
> "Table 9-252—VHT Operation Information subfields", band_center_freq2
> corresponds to CCFS1 in Table 9-253. Previous implementation
> (band_center_freq2 = 0 for VHT160) is only deprecated.
>
> Enable VHT80+80 mode and set the proper peer RX nss value for VHT160 and
> VHT80+80 mode.
>
> Based on patches by Sebastian Gottschall:
>
> https://lkml.kernel.org/r/20180704095444.662-1-s.gottschall@dd-wrt.com
>
> https://lkml.kernel.org/r/20180704120519.6479-1-s.gottschall@dd-wrt.com
>
> Tested: qca9984 with firmware ver 10.4-3.10-00047
>
> Co-developed-by: Sebastian Gottschall <s.gottschall@dd-wrt.com>
> Signed-off-by: Sebastian Gottschall <s.gottschall@dd-wrt.com>
> Co-developed-by: Rick Wu <rwu@codeaurora.org>
> Signed-off-by: Rick Wu <rwu@codeaurora.org>
> Signed-off-by: Lei Wang <leiwa@codeaurora.org>
> Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
Fails to build on GCC 8.1. Did you test this?
In file included from ./include/asm-generic/bug.h:5,
from ./arch/x86/include/asm/bug.h:83,
from ./include/linux/bug.h:5,
from ./include/net/mac80211.h:16,
from drivers/net/wireless/ath/ath10k/mac.h:10,
from drivers/net/wireless/ath/ath10k/mac.c:8:
In function 'ath10k_peer_assoc_h_vht',
inlined from 'ath10k_peer_assoc_prepare' at drivers/net/wireless/ath/ath10k/mac.c:2790:2:
./include/linux/compiler.h:350:38: error: call to '__compiletime_assert_2631' declared with attribute error: BUILD_BUG_ON failed: ((((((~(((0UL)))) - ((((1UL))) << (3)) + 1) & (~(((0UL))) >> (64 - 1 - (5))))) + (1ULL << (__builtin_ffsll((((~(((0UL)))) - ((((1UL))) << (3)) + 1) & (~(((0UL))) >> (64 - 1 - (5))))) - 1))) & ((((((~(((0UL)))) - ((((1UL))) << (3)) + 1) & (~(((0UL))) >> (64 - 1 - (5))))) + (1ULL << (__builtin_ffsll((((~(((0UL)))) - ((((1UL))) << (3)) + 1) & (~(((0UL))) >> (64 - 1 - (5))))) - 1))) - 1)) != 0
_compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
^
./include/linux/compiler.h:331:4: note: in definition of macro '__compiletime_assert'
prefix ## suffix(); \
^~~~~~
./include/linux/compiler.h:350:2: note: in expansion of macro '_compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
^~~~~~~~~~~~~~~~~~~
./include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~~~~~~~~~~~~~~~~~
./include/linux/bitfield.h:49:3: note: in expansion of macro 'BUILD_BUG_ON_MSG'
BUILD_BUG_ON_MSG(__builtin_constant_p(_val) ? \
^~~~~~~~~~~~~~~~
./include/linux/bitfield.h:81:3: note: in expansion of macro '__BF_FIELD_CHECK'
__BF_FIELD_CHECK(_mask, 0ULL, _val, "FIELD_PREP: "); \
^~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath10k/mac.c:2631:4: note: in expansion of macro 'FIELD_PREP'
FIELD_PREP(WMI_PEER_NSS_80_80MHZ_MASK, (rx_nss - 1));
^~~~~~~~~~
./include/linux/compiler.h:350:38: error: call to '__compiletime_assert_2627' declared with attribute error: BUILD_BUG_ON failed: ((((((~(((0UL)))) - ((((1UL))) << (0)) + 1) & (~(((0UL))) >> (64 - 1 - (2))))) + (1ULL << (__builtin_ffsll((((~(((0UL)))) - ((((1UL))) << (0)) + 1) & (~(((0UL))) >> (64 - 1 - (2))))) - 1))) & ((((((~(((0UL)))) - ((((1UL))) << (0)) + 1) & (~(((0UL))) >> (64 - 1 - (2))))) + (1ULL << (__builtin_ffsll((((~(((0UL)))) - ((((1UL))) << (0)) + 1) & (~(((0UL))) >> (64 - 1 - (2))))) - 1))) - 1)) != 0
_compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
^
./include/linux/compiler.h:331:4: note: in definition of macro '__compiletime_assert'
prefix ## suffix(); \
^~~~~~
./include/linux/compiler.h:350:2: note: in expansion of macro '_compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
^~~~~~~~~~~~~~~~~~~
./include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~~~~~~~~~~~~~~~~~
./include/linux/bitfield.h:49:3: note: in expansion of macro 'BUILD_BUG_ON_MSG'
BUILD_BUG_ON_MSG(__builtin_constant_p(_val) ? \
^~~~~~~~~~~~~~~~
./include/linux/bitfield.h:81:3: note: in expansion of macro '__BF_FIELD_CHECK'
__BF_FIELD_CHECK(_mask, 0ULL, _val, "FIELD_PREP: "); \
^~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath10k/mac.c:2627:4: note: in expansion of macro 'FIELD_PREP'
FIELD_PREP(WMI_PEER_NSS_160MHZ_MASK, (rx_nss - 1));
^~~~~~~~~~
make[5]: *** [drivers/net/wireless/ath/ath10k/mac.o] Error 1
make[5]: *** Waiting for unfinished jobs....
make[4]: *** [drivers/net/wireless/ath/ath10k] Error 2
make[3]: *** [drivers/net/wireless/ath] Error 2
make[2]: *** [drivers/net/wireless] Error 2
make[1]: *** [drivers/net] Error 2
make: *** [drivers] Error 2
Patch set to Changes Requested.
--
https://patchwork.kernel.org/patch/11458023/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] ath10k: enable VHT160 and VHT80+80 modes
[not found] ` <20200326095907.5326BC433BA@smtp.codeaurora.org>
@ 2020-03-26 13:15 ` ssreeela
2020-03-27 11:25 ` Kalle Valo
0 siblings, 1 reply; 5+ messages in thread
From: ssreeela @ 2020-03-26 13:15 UTC (permalink / raw)
To: Kalle Valo
Cc: ath10k, linux-wireless, Lei Wang, Sebastian Gottschall, Rick Wu
On 2020-03-26 15:29, Kalle Valo wrote:
> Sowmiya Sree Elavalagan <ssreeela@codeaurora.org> wrote:
>
>> From: Lei Wang <leiwa@codeaurora.org>
>>
>> Set right channel frequencies in VHT160 mode according to the VHT160
>> interoperability workaround added as part of IEEE Std 802.11™-2016 in
>> "Table 9-252—VHT Operation Information subfields", band_center_freq2
>> corresponds to CCFS1 in Table 9-253. Previous implementation
>> (band_center_freq2 = 0 for VHT160) is only deprecated.
>>
>> Enable VHT80+80 mode and set the proper peer RX nss value for VHT160
>> and
>> VHT80+80 mode.
>>
>> Based on patches by Sebastian Gottschall:
>>
>> https://lkml.kernel.org/r/20180704095444.662-1-s.gottschall@dd-wrt.com
>>
>> https://lkml.kernel.org/r/20180704120519.6479-1-s.gottschall@dd-wrt.com
>>
>> Tested: qca9984 with firmware ver 10.4-3.10-00047
>>
>> Co-developed-by: Sebastian Gottschall <s.gottschall@dd-wrt.com>
>> Signed-off-by: Sebastian Gottschall <s.gottschall@dd-wrt.com>
>> Co-developed-by: Rick Wu <rwu@codeaurora.org>
>> Signed-off-by: Rick Wu <rwu@codeaurora.org>
>> Signed-off-by: Lei Wang <leiwa@codeaurora.org>
>> Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
>
> Fails to build on GCC 8.1. Did you test this?
>
> In file included from ./include/asm-generic/bug.h:5,
> from ./arch/x86/include/asm/bug.h:83,
> from ./include/linux/bug.h:5,
> from ./include/net/mac80211.h:16,
> from drivers/net/wireless/ath/ath10k/mac.h:10,
> from drivers/net/wireless/ath/ath10k/mac.c:8:
> In function 'ath10k_peer_assoc_h_vht',
> inlined from 'ath10k_peer_assoc_prepare' at
> drivers/net/wireless/ath/ath10k/mac.c:2790:2:
> ./include/linux/compiler.h:350:38: error: call to
> '__compiletime_assert_2631' declared with attribute error:
> BUILD_BUG_ON failed: ((((((~(((0UL)))) - ((((1UL))) << (3)) + 1) &
> (~(((0UL))) >> (64 - 1 - (5))))) + (1ULL <<
> (__builtin_ffsll((((~(((0UL)))) - ((((1UL))) << (3)) + 1) &
> (~(((0UL))) >> (64 - 1 - (5))))) - 1))) & ((((((~(((0UL)))) -
> ((((1UL))) << (3)) + 1) & (~(((0UL))) >> (64 - 1 - (5))))) + (1ULL <<
> (__builtin_ffsll((((~(((0UL)))) - ((((1UL))) << (3)) + 1) &
> (~(((0UL))) >> (64 - 1 - (5))))) - 1))) - 1)) != 0
> _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
> ^
> ./include/linux/compiler.h:331:4: note: in definition of macro
> '__compiletime_assert'
> prefix ## suffix(); \
> ^~~~~~
> ./include/linux/compiler.h:350:2: note: in expansion of macro
> '_compiletime_assert'
> _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
> ^~~~~~~~~~~~~~~~~~~
> ./include/linux/build_bug.h:39:37: note: in expansion of macro
> 'compiletime_assert'
> #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
> ^~~~~~~~~~~~~~~~~~
> ./include/linux/bitfield.h:49:3: note: in expansion of macro
> 'BUILD_BUG_ON_MSG'
> BUILD_BUG_ON_MSG(__builtin_constant_p(_val) ? \
> ^~~~~~~~~~~~~~~~
> ./include/linux/bitfield.h:81:3: note: in expansion of macro
> '__BF_FIELD_CHECK'
> __BF_FIELD_CHECK(_mask, 0ULL, _val, "FIELD_PREP: "); \
> ^~~~~~~~~~~~~~~~
> drivers/net/wireless/ath/ath10k/mac.c:2631:4: note: in expansion of
> macro 'FIELD_PREP'
> FIELD_PREP(WMI_PEER_NSS_80_80MHZ_MASK, (rx_nss - 1));
> ^~~~~~~~~~
> ./include/linux/compiler.h:350:38: error: call to
> '__compiletime_assert_2627' declared with attribute error:
> BUILD_BUG_ON failed: ((((((~(((0UL)))) - ((((1UL))) << (0)) + 1) &
> (~(((0UL))) >> (64 - 1 - (2))))) + (1ULL <<
> (__builtin_ffsll((((~(((0UL)))) - ((((1UL))) << (0)) + 1) &
> (~(((0UL))) >> (64 - 1 - (2))))) - 1))) & ((((((~(((0UL)))) -
> ((((1UL))) << (0)) + 1) & (~(((0UL))) >> (64 - 1 - (2))))) + (1ULL <<
> (__builtin_ffsll((((~(((0UL)))) - ((((1UL))) << (0)) + 1) &
> (~(((0UL))) >> (64 - 1 - (2))))) - 1))) - 1)) != 0
> _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
> ^
> ./include/linux/compiler.h:331:4: note: in definition of macro
> '__compiletime_assert'
> prefix ## suffix(); \
> ^~~~~~
> ./include/linux/compiler.h:350:2: note: in expansion of macro
> '_compiletime_assert'
> _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
> ^~~~~~~~~~~~~~~~~~~
> ./include/linux/build_bug.h:39:37: note: in expansion of macro
> 'compiletime_assert'
> #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
> ^~~~~~~~~~~~~~~~~~
> ./include/linux/bitfield.h:49:3: note: in expansion of macro
> 'BUILD_BUG_ON_MSG'
> BUILD_BUG_ON_MSG(__builtin_constant_p(_val) ? \
> ^~~~~~~~~~~~~~~~
> ./include/linux/bitfield.h:81:3: note: in expansion of macro
> '__BF_FIELD_CHECK'
> __BF_FIELD_CHECK(_mask, 0ULL, _val, "FIELD_PREP: "); \
> ^~~~~~~~~~~~~~~~
> drivers/net/wireless/ath/ath10k/mac.c:2627:4: note: in expansion of
> macro 'FIELD_PREP'
> FIELD_PREP(WMI_PEER_NSS_160MHZ_MASK, (rx_nss - 1));
> ^~~~~~~~~~
> make[5]: *** [drivers/net/wireless/ath/ath10k/mac.o] Error 1
> make[5]: *** Waiting for unfinished jobs....
> make[4]: *** [drivers/net/wireless/ath/ath10k] Error 2
> make[3]: *** [drivers/net/wireless/ath] Error 2
> make[2]: *** [drivers/net/wireless] Error 2
> make[1]: *** [drivers/net] Error 2
> make: *** [drivers] Error 2
>
> Patch set to Changes Requested.
Hi Kalle,
I checked the build. Build was successful with GCC version 4.8.
Will fix the error and update the patch.
Thanks,
Sowmiya Sree
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] ath10k: enable VHT160 and VHT80+80 modes
2020-03-26 13:15 ` ssreeela
@ 2020-03-27 11:25 ` Kalle Valo
2020-03-30 9:22 ` ssreeela
0 siblings, 1 reply; 5+ messages in thread
From: Kalle Valo @ 2020-03-27 11:25 UTC (permalink / raw)
To: ssreeela; +Cc: Lei Wang, Rick Wu, linux-wireless, Sebastian Gottschall, ath10k
ssreeela@codeaurora.org writes:
> On 2020-03-26 15:29, Kalle Valo wrote:
>> Sowmiya Sree Elavalagan <ssreeela@codeaurora.org> wrote:
>>
>>> From: Lei Wang <leiwa@codeaurora.org>
>>>
>>> Set right channel frequencies in VHT160 mode according to the VHT160
>>> interoperability workaround added as part of IEEE Std 802.11™-2016 in
>>> "Table 9-252—VHT Operation Information subfields", band_center_freq2
>>> corresponds to CCFS1 in Table 9-253. Previous implementation
>>> (band_center_freq2 = 0 for VHT160) is only deprecated.
>>>
>>> Enable VHT80+80 mode and set the proper peer RX nss value for
>>> VHT160 and
>>> VHT80+80 mode.
>>>
>>> Based on patches by Sebastian Gottschall:
>>>
>>> https://lkml.kernel.org/r/20180704095444.662-1-s.gottschall@dd-wrt.com
>>>
>>> https://lkml.kernel.org/r/20180704120519.6479-1-s.gottschall@dd-wrt.com
>>>
>>> Tested: qca9984 with firmware ver 10.4-3.10-00047
>>>
>>> Co-developed-by: Sebastian Gottschall <s.gottschall@dd-wrt.com>
>>> Signed-off-by: Sebastian Gottschall <s.gottschall@dd-wrt.com>
>>> Co-developed-by: Rick Wu <rwu@codeaurora.org>
>>> Signed-off-by: Rick Wu <rwu@codeaurora.org>
>>> Signed-off-by: Lei Wang <leiwa@codeaurora.org>
>>> Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
>>
>> Fails to build on GCC 8.1. Did you test this?
>>
>> In file included from ./include/asm-generic/bug.h:5,
>> from ./arch/x86/include/asm/bug.h:83,
>> from ./include/linux/bug.h:5,
>> from ./include/net/mac80211.h:16,
>> from drivers/net/wireless/ath/ath10k/mac.h:10,
>> from drivers/net/wireless/ath/ath10k/mac.c:8:
>> In function 'ath10k_peer_assoc_h_vht',
>> inlined from 'ath10k_peer_assoc_prepare' at
>> drivers/net/wireless/ath/ath10k/mac.c:2790:2:
>> ./include/linux/compiler.h:350:38: error: call to
>> '__compiletime_assert_2631' declared with attribute error:
[...]
> I checked the build. Build was successful with GCC version 4.8.
> Will fix the error and update the patch.
Great, thanks. Here's how I installed GCC 8.1 from crosstool:
listings: https://www.kernel.org/pub/tools/crosstool/
wget https://www.kernel.org/pub/tools/crosstool/files/bin/x86_64/8.1.0/x86_64-gcc-8.1.0-nolibc-x86_64-linux.tar.xz
pushd /opt/cross/
tar -xf ~/tmp/crosstool/x86_64-gcc-8.1.0-nolibc-x86_64-linux.tar.xz
In top level create GNUMakefile:
CROSS_COMPILE=/opt/cross/gcc-8.1.0-nolibc/x86_64-linux/bin/x86_64-linux-
include Makefile
--
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] ath10k: enable VHT160 and VHT80+80 modes
2020-03-27 11:25 ` Kalle Valo
@ 2020-03-30 9:22 ` ssreeela
0 siblings, 0 replies; 5+ messages in thread
From: ssreeela @ 2020-03-30 9:22 UTC (permalink / raw)
To: Kalle Valo
Cc: Lei Wang, Rick Wu, linux-wireless, Sebastian Gottschall, ath10k
On 2020-03-27 16:55, Kalle Valo wrote:
> ssreeela@codeaurora.org writes:
>
>> On 2020-03-26 15:29, Kalle Valo wrote:
>>> Sowmiya Sree Elavalagan <ssreeela@codeaurora.org> wrote:
>>>
>>>> From: Lei Wang <leiwa@codeaurora.org>
>>>>
>>>> Set right channel frequencies in VHT160 mode according to the VHT160
>>>> interoperability workaround added as part of IEEE Std 802.11™-2016
>>>> in
>>>> "Table 9-252—VHT Operation Information subfields", band_center_freq2
>>>> corresponds to CCFS1 in Table 9-253. Previous implementation
>>>> (band_center_freq2 = 0 for VHT160) is only deprecated.
>>>>
>>>> Enable VHT80+80 mode and set the proper peer RX nss value for
>>>> VHT160 and
>>>> VHT80+80 mode.
>>>>
>>>> Based on patches by Sebastian Gottschall:
>>>>
>>>> https://lkml.kernel.org/r/20180704095444.662-1-s.gottschall@dd-wrt.com
>>>>
>>>> https://lkml.kernel.org/r/20180704120519.6479-1-s.gottschall@dd-wrt.com
>>>>
>>>> Tested: qca9984 with firmware ver 10.4-3.10-00047
>>>>
>>>> Co-developed-by: Sebastian Gottschall <s.gottschall@dd-wrt.com>
>>>> Signed-off-by: Sebastian Gottschall <s.gottschall@dd-wrt.com>
>>>> Co-developed-by: Rick Wu <rwu@codeaurora.org>
>>>> Signed-off-by: Rick Wu <rwu@codeaurora.org>
>>>> Signed-off-by: Lei Wang <leiwa@codeaurora.org>
>>>> Signed-off-by: Sowmiya Sree Elavalagan <ssreeela@codeaurora.org>
>>>
>>> Fails to build on GCC 8.1. Did you test this?
>>>
>>> In file included from ./include/asm-generic/bug.h:5,
>>> from ./arch/x86/include/asm/bug.h:83,
>>> from ./include/linux/bug.h:5,
>>> from ./include/net/mac80211.h:16,
>>> from drivers/net/wireless/ath/ath10k/mac.h:10,
>>> from drivers/net/wireless/ath/ath10k/mac.c:8:
>>> In function 'ath10k_peer_assoc_h_vht',
>>> inlined from 'ath10k_peer_assoc_prepare' at
>>> drivers/net/wireless/ath/ath10k/mac.c:2790:2:
>>> ./include/linux/compiler.h:350:38: error: call to
>>> '__compiletime_assert_2631' declared with attribute error:
>
> [...]
>
>> I checked the build. Build was successful with GCC version 4.8.
>> Will fix the error and update the patch.
>
> Great, thanks. Here's how I installed GCC 8.1 from crosstool:
>
> listings: https://www.kernel.org/pub/tools/crosstool/
>
> wget
> https://www.kernel.org/pub/tools/crosstool/files/bin/x86_64/8.1.0/x86_64-gcc-8.1.0-nolibc-x86_64-linux.tar.xz
> pushd /opt/cross/
> tar -xf ~/tmp/crosstool/x86_64-gcc-8.1.0-nolibc-x86_64-linux.tar.xz
>
> In top level create GNUMakefile:
>
> CROSS_COMPILE=/opt/cross/gcc-8.1.0-nolibc/x86_64-linux/bin/x86_64-linux-
> include Makefile
Thanks for the info. Will check the build with GCC 8.1 and resend.
Regards,
Sowmiya Sree
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-03-30 9:23 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-25 14:56 [PATCH] ath10k: enable VHT160 and VHT80+80 modes Sowmiya Sree Elavalagan
2020-03-26 9:59 ` Kalle Valo
[not found] ` <20200326095907.5326BC433BA@smtp.codeaurora.org>
2020-03-26 13:15 ` ssreeela
2020-03-27 11:25 ` Kalle Valo
2020-03-30 9:22 ` ssreeela
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).