Search Linux Wireless

[RFC 0/3] of: add common bindings to (de)activate IEEE 802.11 bands

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



There are at least two drivers (ath9k and mt76) out there, where
devicetree authors need to override the enabled bands.

For ath9k there is only one use-case: disabling a band which has been
incorrectly enabled by the vendor in the EEPROM (enabling a band is not
possible because the calibration data would be missing in the EEPROM).
The mt76 driver (currently pending for review) however allows enabling
and disabling the 2.4GHz and 5GHz band, see [0].

Based on the discussion of (earlier versions of) my ath9k devicetree
patch it was suggested [1] that we use enable- and disable- properties.
The current patch implements:
- bands can be enabled or disabled with the corresponding property
- if both (disable and enable) properties are given and a driver asks
  whether the band is enabled then the logic will return false (= not
  enabled, preferring the disabled flag)
- if both (disable and enable) properties are given and a driver asks
  whether the band is disabled then the logic will return true (again,
  preferring the disabled flag over the enabled flag)

We can still change the logic to do what the mt76 driver does (I am
fine with both solutions):
- property not available: driver decides which bands to enable
- property set to 0: disable the band
- property set to 1: enable the band

The new code has been integrated into ath9k to demonstrate how to use
it (with the benefit that the disable_2ghz and disable_5ghz settings
from the ath9k_platform_data can now also be configured via .dts).

open questions/decisions needed:
- where to place this new code? I put it into drivers/of/of_ieee80211
  because that's where most other functions live.
  However, I found that this makes backporting the code harder (using
  wireless-backports from the driver-backports project [2])
- we need a decision whether we want to go with two flags for each
  band (enable-ieee80211-band and disable-ieee80211-band) or if we
  prefer the solution from the mt76 driver (which means that the
  property for a band is absent for auto-detection, or
  ieee80211-band-enabled = <0/1> is specified. we could also move
  the 0 and 1 to a header file of course to make it easer to read,
  such as IEEE80211_BAND_ENABLED and IEEE80211_BAND_DISABLED)


[0] https://marc.info/?l=linux-wireless&m=147524754427890&w=2
[1] https://marc.info/?l=linux-wireless&m=147375173804817&w=2
[2] https://backports.wiki.kernel.org/index.php/Main_Page

Martin Blumenstingl (3):
  Documentation: dt-bindings: add IEEE 802.11 binding documentation
  of: add IEEE 802.11 device configuration support code
  ath9k: add OF configuration to disable the 2.4GHz or 5GHz band

 .../devicetree/bindings/net/wireless/ieee80211.txt | 12 ++++
 .../devicetree/bindings/net/wireless/qca,ath9k.txt |  2 +
 drivers/net/wireless/ath/ath9k/init.c              |  4 ++
 drivers/of/Kconfig                                 |  4 ++
 drivers/of/Makefile                                |  1 +
 drivers/of/of_ieee80211.c                          | 83 ++++++++++++++++++++++
 include/linux/of_ieee80211.h                       | 38 ++++++++++
 7 files changed, 144 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/net/wireless/ieee80211.txt
 create mode 100644 drivers/of/of_ieee80211.c
 create mode 100644 include/linux/of_ieee80211.h

-- 
2.10.0




[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux