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

Bruce Ashfield bruce.ashfield at windriver.com
Thu Mar 22 09:00:13 PDT 2018


On 03/22/2018 04:49 AM, Nathan Rossi wrote:
> 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

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



More information about the linux-yocto mailing list