diff mbox series

ath10k: Limit available channels via DT ieee80211-freq-limit

Message ID 20180730153933.3771-1-sven.eckelmann@openmesh.com (mailing list archive)
State Accepted
Commit 34d5629d2ca89d847b7040762b87964c696c14da
Delegated to: Kalle Valo
Headers show
Series ath10k: Limit available channels via DT ieee80211-freq-limit | expand

Commit Message

Sven Eckelmann July 30, 2018, 3:39 p.m. UTC
Tri-band devices (1x 2.4GHz + 2x 5GHz) often incorporate special filters in
the RX and TX path. These filtered channel can in theory still be used by
the hardware but the signal strength is reduced so much that it makes no
sense.

There is already a DT property to limit the available channels but ath10k
has to manually call this functionality to limit the currrently set wiphy
channels further.

Signed-off-by: Sven Eckelmann <sven.eckelmann@openmesh.com>
---
 drivers/net/wireless/ath/ath10k/mac.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Arend Van Spriel July 30, 2018, 6:50 p.m. UTC | #1
+ Rafał

On 7/30/2018 5:39 PM, Sven Eckelmann wrote:
> Tri-band devices (1x 2.4GHz + 2x 5GHz) often incorporate special filters in
> the RX and TX path. These filtered channel can in theory still be used by
> the hardware but the signal strength is reduced so much that it makes no
> sense.
>
> There is already a DT property to limit the available channels but ath10k
> has to manually call this functionality to limit the currrently set wiphy
> channels further.

Wondering whether we can call it in wiphy_register() like below. Not 
sure why we did not explore that with the introduction of it by Rafał. 
Maybe he remembers. I did not find something in that direction in 
patchwork, but may have missed it. I know mt76 drops the band reference 
if it ends up with all channels disabled. Maybe that was the reason.

Regards,
Arend
---
diff --git a/net/wireless/core.c b/net/wireless/core.c
index a88551f..2e00cb1 100644
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
@@ -742,6 +742,8 @@ int wiphy_register(struct wiphy *wiphy)
	if (res)
		return res;

+	wiphy_read_of_freq_limits(wiphy);
+
	/* sanity check supported bands/channels */
	for (band = 0; band < NUM_NL80211_BANDS; band++) {
		u16 types = 0;
Arend Van Spriel July 30, 2018, 6:54 p.m. UTC | #2
+ Rafał

On 7/30/2018 5:39 PM, Sven Eckelmann wrote:
> Tri-band devices (1x 2.4GHz + 2x 5GHz) often incorporate special filters in
> the RX and TX path. These filtered channel can in theory still be used by
> the hardware but the signal strength is reduced so much that it makes no
> sense.
>
> There is already a DT property to limit the available channels but ath10k
> has to manually call this functionality to limit the currrently set wiphy
> channels further.

Wondering whether we can call it in wiphy_register() like below. Not 
sure why we did not explore that with the introduction of it by Rafał. 
Maybe he remembers. I did not find something in that direction in 
patchwork, but may have missed it. I know mt76 drops the band reference 
if it ends up with all channels disabled. Maybe that was the reason.

Regards,
Arend
---
diff --git a/net/wireless/core.c b/net/wireless/core.c
index a88551f..2e00cb1 100644
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
@@ -742,6 +742,8 @@ int wiphy_register(struct wiphy *wiphy)
	if (res)
		return res;

+	wiphy_read_of_freq_limits(wiphy);
+
	/* sanity check supported bands/channels */
	for (band = 0; band < NUM_NL80211_BANDS; band++) {
		u16 types = 0;
Arend Van Spriel July 30, 2018, 6:56 p.m. UTC | #3
On 7/30/2018 8:54 PM, Arend van Spriel wrote:
> + Rafał
>
> On 7/30/2018 5:39 PM, Sven Eckelmann wrote:
>> Tri-band devices (1x 2.4GHz + 2x 5GHz) often incorporate special
>> filters in
>> the RX and TX path. These filtered channel can in theory still be used by
>> the hardware but the signal strength is reduced so much that it makes no
>> sense.
>>
>> There is already a DT property to limit the available channels but ath10k
>> has to manually call this functionality to limit the currrently set wiphy
>> channels further.
>
> Wondering whether we can call it in wiphy_register() like below. Not
> sure why we did not explore that with the introduction of it by Rafał.
> Maybe he remembers. I did not find something in that direction in
> patchwork, but may have missed it. I know mt76 drops the band reference
> if it ends up with all channels disabled. Maybe that was the reason.

Sorry for sending this twice. My wifi connection was quirky.

Gr. AvS
Kalle Valo Aug. 24, 2018, 11:46 a.m. UTC | #4
Arend van Spriel <arend.vanspriel@broadcom.com> writes:

> + Rafał
>
> On 7/30/2018 5:39 PM, Sven Eckelmann wrote:
>> Tri-band devices (1x 2.4GHz + 2x 5GHz) often incorporate special filters in
>> the RX and TX path. These filtered channel can in theory still be used by
>> the hardware but the signal strength is reduced so much that it makes no
>> sense.
>>
>> There is already a DT property to limit the available channels but ath10k
>> has to manually call this functionality to limit the currrently set wiphy
>> channels further.
>
> Wondering whether we can call it in wiphy_register() like below. Not
> sure why we did not explore that with the introduction of it by Rafał.
> Maybe he remembers. I did not find something in that direction in
> patchwork, but may have missed it. I know mt76 drops the band
> reference if it ends up with all channels disabled. Maybe that was the
> reason.
>
> Regards,
> Arend
> ---
> diff --git a/net/wireless/core.c b/net/wireless/core.c
> index a88551f..2e00cb1 100644
> --- a/net/wireless/core.c
> +++ b/net/wireless/core.c
> @@ -742,6 +742,8 @@ int wiphy_register(struct wiphy *wiphy)
> 	if (res)
> 		return res;
>
> +	wiphy_read_of_freq_limits(wiphy);
> +
> 	/* sanity check supported bands/channels */
> 	for (band = 0; band < NUM_NL80211_BANDS; band++) {
> 		u16 types = 0;

Nobody commented to this, so not sure what to do. Maybe it's best to
apply Sven's patch now and we can later move the call to cfg80211 if
needed. Sounds good?
Kalle Valo Aug. 28, 2018, 1:51 p.m. UTC | #5
Sven Eckelmann <sven.eckelmann@openmesh.com> wrote:

> Tri-band devices (1x 2.4GHz + 2x 5GHz) often incorporate special filters in
> the RX and TX path. These filtered channel can in theory still be used by
> the hardware but the signal strength is reduced so much that it makes no
> sense.
> 
> There is already a DT property to limit the available channels but ath10k
> has to manually call this functionality to limit the currrently set wiphy
> channels further.
> 
> Signed-off-by: Sven Eckelmann <sven.eckelmann@openmesh.com>
> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>

Patch applied to ath-next branch of ath.git, thanks.

34d5629d2ca8 ath10k: limit available channels via DT ieee80211-freq-limit
diff mbox series

Patch

diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index 95243b48a179..8ed37ffd320f 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -18,6 +18,7 @@ 
 
 #include "mac.h"
 
+#include <net/cfg80211.h>
 #include <net/mac80211.h>
 #include <linux/etherdevice.h>
 #include <linux/acpi.h>
@@ -8306,6 +8307,7 @@  int ath10k_mac_register(struct ath10k *ar)
 		ar->hw->wiphy->bands[NL80211_BAND_5GHZ] = band;
 	}
 
+	wiphy_read_of_freq_limits(ar->hw->wiphy);
 	ath10k_mac_setup_ht_vht_cap(ar);
 
 	ar->hw->wiphy->interface_modes =