On 03/22/2018 04:49 AM, Nathan Rossi wrote:
On 22 March 2018 at 15:33, Bruce Ashfield <bruce.ashfi...@windriver.com> wrote:
On 03/20/2018 10:10 AM, Nathan Rossi wrote:

This change adds WiFi driver configuration fragments. The fragments are
split into vendor and interface files to allow for easy selection of
drivers for specific interface types (USB, PCI, SDIO) which is useful
for BSPs with specific interfaces. The specific vendor/interface config
fragments can be included by specific BSPs in its .scc files.

However .scc files (wifi-*.scc) are provided to allow enabling interface
specific or all interfaces drivers via KERNEL_FEATURES or inclusion via
other .scc files. And wifi-common.scc is provided to enable the base
config options required for all WiFi drivers, which is done to ensure
correct configuration for default no config setups (e.g.
linux-yocto-tiny).

This patch only enables a limited set of drivers, which is based on what
the common-pc-wifi.cfg fragment sets as well as some additional drivers,
that primarily appear in USB WiFi devices.


These changes look good to me. I'll let them sit on the list for
another day or so, and see if anyone else has any comments.


Signed-off-by: Nathan Rossi <nat...@nathanrossi.com>
---
These changes are very similar to a set of configuration fragments that
were included (?) in minnow branches in ~2013. However they never made
it into the current set of configuration fragments.


https://lists.yoctoproject.org/pipermail/linux-yocto/2013-November/001393.html


Interesting. I'm not sure how they ended up getting dropped or
lost, but when I merge this, it will go into the versioned
branches and master, so it can't be lost again.


Also whilst not in this patch, if accepted these fragments could replace
the common-pc-wifi.cfg to reduce duplication.


Indeed. We can look at that in follow up commits.


For completeness I have tested these fragments on linux-yocto version
v4.14 and v4.15 for qemux86, qemux86-64 and qemuarm builds as well as
for the beaglebone-yocto target. For v4.12 compatibility, due to the
iwlwifi fragments adding patches (which do not apply correctly to
standard/base) the fragments would need to be modified.


What configuration were you building to trigger those errors ? Just
qemux86-64 ? something else ? The patches should have been ignored,
as long as the fragment wasn't directly on the SRC_URI.

Just adding iwlwifi.scc to KERNEL_FEATURES either directly or via the
include in one of the .scc files of this patch causes the iwlwifi
patches to apply.

KERNEL_FEATURES_append = " features/iwlwifi/iwlwifi.scc"

| DEBUG: Executing shell function do_patch
| (1/310) iwlwifi-mvm-support-getting-nvm-data-from-firmware.patch
| [INFO]: check of
.kernel-meta//patches//features/iwlwifi/iwlwifi-mvm-support-getting-nvm-data-from-firmware.patch
with "git am" did not pass, trying reduced context.
| [INFO]: Context reduced git-am of
.kernel-meta//patches//features/iwlwifi/iwlwifi-mvm-support-getting-nvm-data-from-firmware.patch
with "git am" did not work, trying "apply".
| 
/storage/nathan/build/test-wifi/tmp-glibc/work-shared/qemux86-64/kernel-source/.git/rebase-apply/patch:26:
indent with spaces.
|  * struct iwl_nvm_get_info - request to get NVM data
| 
/storage/nathan/build/test-wifi/tmp-glibc/work-shared/qemux86-64/kernel-source/.git/rebase-apply/patch:27:
indent with spaces.
|  */
| 
/storage/nathan/build/test-wifi/tmp-glibc/work-shared/qemux86-64/kernel-source/.git/rebase-apply/patch:33:
indent with spaces.
|  * struct iwl_nvm_get_info_general - general NVM data
| 
/storage/nathan/build/test-wifi/tmp-glibc/work-shared/qemux86-64/kernel-source/.git/rebase-apply/patch:34:
indent with spaces.
|  * @flags: 1 - empty, 0 - valid
| 
/storage/nathan/build/test-wifi/tmp-glibc/work-shared/qemux86-64/kernel-source/.git/rebase-apply/patch:35:
indent with spaces.
|  * @nvm_version: nvm version
| error: patch failed: drivers/net/wireless/intel/iwlwifi/mvm/fw-api.h:345
| error: drivers/net/wireless/intel/iwlwifi/mvm/fw-api.h: patch does not apply
| error: patch failed: drivers/net/wireless/intel/iwlwifi/mvm/fw.c:738
| error: drivers/net/wireless/intel/iwlwifi/mvm/fw.c: patch does not apply
| error: patch failed: drivers/net/wireless/intel/iwlwifi/mvm/mvm.h:1390
| error: drivers/net/wireless/intel/iwlwifi/mvm/mvm.h: patch does not apply
| error: patch failed: drivers/net/wireless/intel/iwlwifi/mvm/nvm.c:374
| error: drivers/net/wireless/intel/iwlwifi/mvm/nvm.c: patch does not apply
| error: patch failed: drivers/net/wireless/intel/iwlwifi/mvm/ops.c:483
| error: drivers/net/wireless/intel/iwlwifi/mvm/ops.c: patch does not apply
| [ERROR]: Application of
.kernel-meta//patches//features/iwlwifi/iwlwifi-mvm-support-getting-nvm-data-from-firmware.patch
failed.
|          Patch needs to be refreshed. Sample resolution script:
|              .git/rebase-apply/resolve_rejects
| ERROR: Could not apply patches for qemux86-64.

I thought this behaviour was intentional given this part of
kernel-yocto.bbclass?
http://git.openembedded.org/openembedded-core/tree/meta/classes/kernel-yocto.bbclass#n178

Yes, in this case it is definitely intentional. That's why I was
wondering if it was a KERNEL_FEATURES that triggered it, or just the
building of the BSP with nothing added. If it was the latter, I
have a bug :D

I threw away all of the "patch resume detection" and made things
simpler, if it is on a SRC_URI, the patches are pushed. If the .scc
files references patches as part of a BSP description, they can safely
be logged only, since they are already in the tree.

In this case, I'll do the same split that we've done in the past to
avoid this. Make a -enable.scc, which is just the configs, and a
second one to contain the patches.

I'll take care of that as I merged it to 4.12.

Bruce


Regards,
Nathan


Bruce


---
   features/wifi/atheros-pci.cfg   | 11 +++++++++++
   features/wifi/atheros-usb.cfg   |  8 ++++++++
   features/wifi/broadcom-pci.cfg  | 11 +++++++++++
   features/wifi/broadcom-sdio.cfg | 11 +++++++++++
   features/wifi/broadcom-usb.cfg  |  7 +++++++
   features/wifi/mediatek-pci.cfg  |  3 +++
   features/wifi/mediatek-usb.cfg  |  3 +++
   features/wifi/ralink-pci.cfg    | 15 +++++++++++++++
   features/wifi/ralink-usb.cfg    | 12 ++++++++++++
   features/wifi/realtek-pci.cfg   | 18 ++++++++++++++++++
   features/wifi/realtek-usb.cfg   | 11 +++++++++++
   features/wifi/wifi-all.scc      |  7 +++++++
   features/wifi/wifi-common.cfg   |  4 ++++
   features/wifi/wifi-common.scc   |  7 +++++++
   features/wifi/wifi-pci.scc      | 14 ++++++++++++++
   features/wifi/wifi-sdio.scc     |  7 +++++++
   features/wifi/wifi-usb.scc      | 11 +++++++++++
   17 files changed, 160 insertions(+)
   create mode 100644 features/wifi/atheros-pci.cfg
   create mode 100644 features/wifi/atheros-usb.cfg
   create mode 100644 features/wifi/broadcom-pci.cfg
   create mode 100644 features/wifi/broadcom-sdio.cfg
   create mode 100644 features/wifi/broadcom-usb.cfg
   create mode 100644 features/wifi/mediatek-pci.cfg
   create mode 100644 features/wifi/mediatek-usb.cfg
   create mode 100644 features/wifi/ralink-pci.cfg
   create mode 100644 features/wifi/ralink-usb.cfg
   create mode 100644 features/wifi/realtek-pci.cfg
   create mode 100644 features/wifi/realtek-usb.cfg
   create mode 100644 features/wifi/wifi-all.scc
   create mode 100644 features/wifi/wifi-common.cfg
   create mode 100644 features/wifi/wifi-common.scc
   create mode 100644 features/wifi/wifi-pci.scc
   create mode 100644 features/wifi/wifi-sdio.scc
   create mode 100644 features/wifi/wifi-usb.scc

diff --git a/features/wifi/atheros-pci.cfg b/features/wifi/atheros-pci.cfg
new file mode 100644
index 0000000000..1c48a0528a
--- /dev/null
+++ b/features/wifi/atheros-pci.cfg
@@ -0,0 +1,11 @@
+CONFIG_WLAN_VENDOR_ATH=y
+
+# ath5k
+CONFIG_ATH5K=m
+
+# ath9k
+CONFIG_ATH9K=m
+CONFIG_ATH9K_RFKILL=y
+CONFIG_ATH9K_PCOEM=y
+CONFIG_ATH9K_PCI=y
+
diff --git a/features/wifi/atheros-usb.cfg b/features/wifi/atheros-usb.cfg
new file mode 100644
index 0000000000..b9767dc164
--- /dev/null
+++ b/features/wifi/atheros-usb.cfg
@@ -0,0 +1,8 @@
+CONFIG_WLAN_VENDOR_ATH=y
+
+# ath9k
+CONFIG_ATH9K=m
+CONFIG_ATH9K_RFKILL=y
+CONFIG_ATH9K_PCOEM=y
+CONFIG_ATH9K_HTC=y
+
diff --git a/features/wifi/broadcom-pci.cfg
b/features/wifi/broadcom-pci.cfg
new file mode 100644
index 0000000000..2b5abe5842
--- /dev/null
+++ b/features/wifi/broadcom-pci.cfg
@@ -0,0 +1,11 @@
+CONFIG_WLAN_VENDOR_BROADCOM=y
+
+# brcm80211
+CONFIG_BRCMUTIL=m
+CONFIG_BRCMSMAC=m
+CONFIG_BRCMFMAC=m
+CONFIG_BRCMFMAC_PCIE=y
+
+# b43
+CONFIG_B43=m
+
diff --git a/features/wifi/broadcom-sdio.cfg
b/features/wifi/broadcom-sdio.cfg
new file mode 100644
index 0000000000..7762ccc61c
--- /dev/null
+++ b/features/wifi/broadcom-sdio.cfg
@@ -0,0 +1,11 @@
+CONFIG_WLAN_VENDOR_BROADCOM=y
+
+# brcm80211
+CONFIG_BRCMUTIL=m
+CONFIG_BRCMFMAC=m
+CONFIG_BRCMFMAC_SDIO=y
+
+# b43
+CONFIG_B43=m
+CONFIG_B43_SDIO=y
+
diff --git a/features/wifi/broadcom-usb.cfg
b/features/wifi/broadcom-usb.cfg
new file mode 100644
index 0000000000..098933788d
--- /dev/null
+++ b/features/wifi/broadcom-usb.cfg
@@ -0,0 +1,7 @@
+CONFIG_WLAN_VENDOR_BROADCOM=y
+
+# brcm80211
+CONFIG_BRCMUTIL=m
+CONFIG_BRCMFMAC=m
+CONFIG_BRCMFMAC_USB=y
+
diff --git a/features/wifi/mediatek-pci.cfg
b/features/wifi/mediatek-pci.cfg
new file mode 100644
index 0000000000..f37937ac21
--- /dev/null
+++ b/features/wifi/mediatek-pci.cfg
@@ -0,0 +1,3 @@
+CONFIG_WLAN_VENDOR_MEDIATEK=y
+CONFIG_MT76x2E=m
+
diff --git a/features/wifi/mediatek-usb.cfg
b/features/wifi/mediatek-usb.cfg
new file mode 100644
index 0000000000..b2975569ea
--- /dev/null
+++ b/features/wifi/mediatek-usb.cfg
@@ -0,0 +1,3 @@
+CONFIG_WLAN_VENDOR_MEDIATEK=y
+CONFIG_MT7601U=m
+
diff --git a/features/wifi/ralink-pci.cfg b/features/wifi/ralink-pci.cfg
new file mode 100644
index 0000000000..8320bd92f7
--- /dev/null
+++ b/features/wifi/ralink-pci.cfg
@@ -0,0 +1,15 @@
+CONFIG_WLAN_VENDOR_RALINK=y
+
+# rt2x00
+CONFIG_RT2X00=m
+
+# pci
+CONFIG_RT2400PCI=m
+CONFIG_RT2500PCI=m
+CONFIG_RT61PCI=m
+CONFIG_RT2800PCI=m
+CONFIG_RT2800PCI_RT33XX=y
+config RT2800PCI_RT35XX=y
+config RT2800PCI_RT53XX=y
+config RT2800PCI_RT3290=y
+
diff --git a/features/wifi/ralink-usb.cfg b/features/wifi/ralink-usb.cfg
new file mode 100644
index 0000000000..25ed907a2b
--- /dev/null
+++ b/features/wifi/ralink-usb.cfg
@@ -0,0 +1,12 @@
+CONFIG_WLAN_VENDOR_RALINK=y
+
+# rt2x00
+CONFIG_RT2X00=m
+
+# usb
+CONFIG_RT2500USB=m
+CONFIG_RT73USB=m
+CONFIG_RT2800USB=m
+CONFIG_RT2800USB_RT33XX=y
+CONFIG_RT2800USB_RT35XX=y
+
diff --git a/features/wifi/realtek-pci.cfg b/features/wifi/realtek-pci.cfg
new file mode 100644
index 0000000000..df67b85102
--- /dev/null
+++ b/features/wifi/realtek-pci.cfg
@@ -0,0 +1,18 @@
+CONFIG_WLAN_VENDOR_REALTEK=y
+
+# rtl818x
+CONFIG_RTL8180=m
+
+# rtl8xxxu
+CONFIG_RTL8XXXU=m
+
+# rtlwifi
+CONFIG_RTL_CARDS=y
+CONFIG_RTL8192CE=m
+CONFIG_RTL8192SE=m
+CONFIG_RTL8192DE=m
+CONFIG_RTL8723AE=m
+CONFIG_RTL8723BE=m
+CONFIG_RTL8188EE=m
+CONFIG_RTL8192EE=m
+CONFIG_RTL8821AE=m
diff --git a/features/wifi/realtek-usb.cfg b/features/wifi/realtek-usb.cfg
new file mode 100644
index 0000000000..111ec439cf
--- /dev/null
+++ b/features/wifi/realtek-usb.cfg
@@ -0,0 +1,11 @@
+CONFIG_WLAN_VENDOR_REALTEK=y
+
+# rtl818x
+CONFIG_RTL8187=y
+
+# rtl8xxxu
+CONFIG_RTL8XXXU=m
+
+# rtlwifi
+CONFIG_RTL_CARDS=y
+CONFIG_RTL8192CU=m
diff --git a/features/wifi/wifi-all.scc b/features/wifi/wifi-all.scc
new file mode 100644
index 0000000000..0fe6f931f6
--- /dev/null
+++ b/features/wifi/wifi-all.scc
@@ -0,0 +1,7 @@
+define KFEATURE_DESCRIPTION "Enable All WiFi Drivers"
+define KFEATURE_COMPATIBILITY board
+
+include wifi-pci.scc
+include wifi-sdio.scc
+include wifi-usb.scc
+
diff --git a/features/wifi/wifi-common.cfg b/features/wifi/wifi-common.cfg
new file mode 100644
index 0000000000..c5b019ebef
--- /dev/null
+++ b/features/wifi/wifi-common.cfg
@@ -0,0 +1,4 @@
+CONFIG_NET=y
+CONFIG_NETDEVICES=y
+CONFIG_WIRELESS=y
+CONFIG_WLAN=y
diff --git a/features/wifi/wifi-common.scc b/features/wifi/wifi-common.scc
new file mode 100644
index 0000000000..4f7633ce24
--- /dev/null
+++ b/features/wifi/wifi-common.scc
@@ -0,0 +1,7 @@
+define KFEATURE_DESCRIPTION "Enable Common WiFi Kernel Features"
+define KFEATURE_COMPATIBILITY board
+
+kconf hardware wifi-common.cfg
+
+include features/mac80211/mac80211.scc
+
diff --git a/features/wifi/wifi-pci.scc b/features/wifi/wifi-pci.scc
new file mode 100644
index 0000000000..a2d7ff5a6a
--- /dev/null
+++ b/features/wifi/wifi-pci.scc
@@ -0,0 +1,14 @@
+define KFEATURE_DESCRIPTION "Enable PCI(e) WiFi Drivers"
+define KFEATURE_COMPATIBILITY board
+
+include wifi-common.scc
+
+kconf hardware atheros-pci.cfg
+kconf hardware broadcom-pci.cfg
+kconf hardware mediatek-pci.cfg
+kconf hardware ralink-pci.cfg
+kconf hardware realtek-pci.cfg
+
+include features/iwlwifi/iwlwifi.scc
+include features/iwlegacy/iwlegacy.scc
+
diff --git a/features/wifi/wifi-sdio.scc b/features/wifi/wifi-sdio.scc
new file mode 100644
index 0000000000..23843d0367
--- /dev/null
+++ b/features/wifi/wifi-sdio.scc
@@ -0,0 +1,7 @@
+define KFEATURE_DESCRIPTION "Enable SDIO WiFi Drivers"
+define KFEATURE_COMPATIBILITY board
+
+include wifi-common.scc
+
+kconf hardware broadcom-sdio.cfg
+
diff --git a/features/wifi/wifi-usb.scc b/features/wifi/wifi-usb.scc
new file mode 100644
index 0000000000..9f9bafd4c9
--- /dev/null
+++ b/features/wifi/wifi-usb.scc
@@ -0,0 +1,11 @@
+define KFEATURE_DESCRIPTION "Enable USB WiFi Drivers"
+define KFEATURE_COMPATIBILITY board
+
+include wifi-common.scc
+
+kconf hardware atheros-usb.cfg
+kconf hardware broadcom-usb.cfg
+kconf hardware mediatek-usb.cfg
+kconf hardware ralink-usb.cfg
+kconf hardware realtek-usb.cfg
+



--
_______________________________________________
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto

Reply via email to