[linux-yocto] [kernel-cache][PATCH] features/wifi: Add WiFi driver fragments for various vendors/interfaces

Nathan Rossi nathan at nathanrossi.com
Thu Mar 22 01:49:17 PDT 2018


On 22 March 2018 at 15:33, Bruce Ashfield <bruce.ashfield at 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 <nathan at 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

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
>> +
>>
>


More information about the linux-yocto mailing list