[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 10:17:04 PDT 2018


On 03/22/2018 12:00 PM, Bruce Ashfield wrote:
> 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.

4.12 is fixed, and I did a test build. These are now pushed. I'll do
SRCREV updates in my next consolidated pull request.

Bruce

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