From 3b07356d2d55c5eacc7a11eb08c3a8de97884b2f Mon Sep 17 00:00:00 2001 From: Raito Bezarius Date: Sun, 25 Jun 2023 18:15:45 +0200 Subject: linux/kernel/common-config: support DFS radiations for ath(9|10)k drivers This enables shady options because upstream and Atheros probably didn't fix the issue and their idea of "certification" is quite extreme. We follow OpenWRT here and apply those changes to reduce "WTFs/min" for users wondering what is the difference between OpenWRT and NixOS for their APs. This was tested on Qualcomm Atheros QCA986x/988x 802.11ac Wireless Network Adapter on a x86 machine in the French regulatory domain on frequency 5600MHz, DFS was used successfully by hostapd instead of a mind-boggling "device or resource busy" error which is what happens without those options. --- pkgs/os-specific/linux/kernel/common-config.nix | 36 ++++++++++++++++--------- 1 file changed, 24 insertions(+), 12 deletions(-) (limited to 'pkgs/os-specific/linux/kernel/common-config.nix') diff --git a/pkgs/os-specific/linux/kernel/common-config.nix b/pkgs/os-specific/linux/kernel/common-config.nix index 370e880963206..e0e4edc30fd93 100644 --- a/pkgs/os-specific/linux/kernel/common-config.nix +++ b/pkgs/os-specific/linux/kernel/common-config.nix @@ -281,18 +281,30 @@ let }; wireless = { - CFG80211_WEXT = option yes; # Without it, ipw2200 drivers don't build - IPW2100_MONITOR = option yes; # support promiscuous mode - IPW2200_MONITOR = option yes; # support promiscuous mode - HOSTAP_FIRMWARE = option yes; # Support downloading firmware images with Host AP driver - HOSTAP_FIRMWARE_NVRAM = option yes; - ATH9K_PCI = option yes; # Detect Atheros AR9xxx cards on PCI(e) bus - ATH9K_AHB = option yes; # Ditto, AHB bus - B43_PHY_HT = option yes; - BCMA_HOST_PCI = option yes; - RTW88 = whenAtLeast "5.2" module; - RTW88_8822BE = mkMerge [ (whenBetween "5.2" "5.8" yes) (whenAtLeast "5.8" module) ]; - RTW88_8822CE = mkMerge [ (whenBetween "5.2" "5.8" yes) (whenAtLeast "5.8" module) ]; + CFG80211_WEXT = option yes; # Without it, ipw2200 drivers don't build + IPW2100_MONITOR = option yes; # support promiscuous mode + IPW2200_MONITOR = option yes; # support promiscuous mode + HOSTAP_FIRMWARE = option yes; # Support downloading firmware images with Host AP driver + HOSTAP_FIRMWARE_NVRAM = option yes; + ATH9K_PCI = option yes; # Detect Atheros AR9xxx cards on PCI(e) bus + ATH9K_AHB = option yes; # Ditto, AHB bus + # The description of this option makes it sound dangerous or even illegal + # But OpenWRT enables it by default: https://github.com/openwrt/openwrt/blob/master/package/kernel/mac80211/Makefile#L55 + # At the time of writing (25-06-2023): this is only used in a "correct" way by ath drivers for initiating DFS radiation + # for "certified devices" + EXPERT = option yes; # this is needed for offering the certification option + CFG80211_CERTIFICATION_ONUS = option yes; + # DFS: "Dynamic Frequency Selection" is a spectrum-sharing mechanism that allows + # you to use certain interesting frequency when your local regulatory domain mandates it. + # ATH drivers hides the feature behind this option and makes hostapd works with DFS frequencies. + # OpenWRT enables it too: https://github.com/openwrt/openwrt/blob/master/package/kernel/mac80211/ath.mk#L42 + ATH9K_DFS_CERTIFIED = option yes; + ATH10K_DFS_CERTIFIED = option yes; + B43_PHY_HT = option yes; + BCMA_HOST_PCI = option yes; + RTW88 = whenAtLeast "5.2" module; + RTW88_8822BE = mkMerge [ (whenBetween "5.2" "5.8" yes) (whenAtLeast "5.8" module) ]; + RTW88_8822CE = mkMerge [ (whenBetween "5.2" "5.8" yes) (whenAtLeast "5.8" module) ]; }; fb = { -- cgit 1.4.1