* [PATCH 1/6] staging: wfx: drop module version @ 2019-10-17 9:40 Jerome Pouiller 2019-10-17 9:40 ` [PATCH 2/6] staging: wfx: relocate wfx_fill_sl_key() in secure_link.h Jerome Pouiller ` (4 more replies) 0 siblings, 5 replies; 6+ messages in thread From: Jerome Pouiller @ 2019-10-17 9:40 UTC (permalink / raw) To: devel; +Cc: linux-kernel, Greg Kroah-Hartman, Jerome Pouiller From: Jérôme Pouiller <jerome.pouiller@silabs.com> wfx_version.h says that this code is same same than driver 2.3.1 hosted on github: https://github.com/siliconlabs/wfx-linux-driver/tree/2.3.1-public However, it is inaccurate, driver in-tree contains multiple small patches ahead 2.3.1. I prefer to drop this confusing information. Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> --- drivers/staging/wfx/TODO | 3 --- drivers/staging/wfx/main.c | 4 ---- drivers/staging/wfx/wfx_version.h | 3 --- 3 files changed, 10 deletions(-) delete mode 100644 drivers/staging/wfx/wfx_version.h diff --git a/drivers/staging/wfx/TODO b/drivers/staging/wfx/TODO index be990e8f18b1..e44772289af8 100644 --- a/drivers/staging/wfx/TODO +++ b/drivers/staging/wfx/TODO @@ -1,9 +1,6 @@ This is a list of things that need to be done to get this driver out of the staging directory. - - wfx_version.h is still there in order to ensure synchronization with github. - It can be dropped as soon as development is entirely in kernel - - I have to take a decision about secure link support. I can: - drop completely - keep it in an external patch (my preferred option) diff --git a/drivers/staging/wfx/main.c b/drivers/staging/wfx/main.c index d2508bc950fa..157e0fc0107e 100644 --- a/drivers/staging/wfx/main.c +++ b/drivers/staging/wfx/main.c @@ -33,14 +33,12 @@ #include "secure_link.h" #include "hif_tx_mib.h" #include "hif_api_cmd.h" -#include "wfx_version.h" #define WFX_PDS_MAX_SIZE 1500 MODULE_DESCRIPTION("Silicon Labs 802.11 Wireless LAN driver for WFx"); MODULE_AUTHOR("Jérôme Pouiller <jerome.pouiller@silabs.com>"); MODULE_LICENSE("GPL"); -MODULE_VERSION(WFX_LABEL); static int gpio_wakeup = -2; module_param(gpio_wakeup, int, 0644); @@ -480,8 +478,6 @@ static int __init wfx_core_init(void) { int ret = 0; - pr_info("wfx: Silicon Labs " WFX_LABEL "\n"); - if (IS_ENABLED(CONFIG_SPI)) ret = spi_register_driver(&wfx_spi_driver); if (IS_ENABLED(CONFIG_MMC) && !ret) diff --git a/drivers/staging/wfx/wfx_version.h b/drivers/staging/wfx/wfx_version.h deleted file mode 100644 index 6e7f30207c73..000000000000 --- a/drivers/staging/wfx/wfx_version.h +++ /dev/null @@ -1,3 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ -/* THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT! */ -#define WFX_LABEL "2.3.1" -- 2.20.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/6] staging: wfx: relocate wfx_fill_sl_key() in secure_link.h 2019-10-17 9:40 [PATCH 1/6] staging: wfx: drop module version Jerome Pouiller @ 2019-10-17 9:40 ` Jerome Pouiller 2019-10-17 9:40 ` [PATCH 5/6] staging: wfx: fix setting MAC address from DT Jerome Pouiller ` (3 subsequent siblings) 4 siblings, 0 replies; 6+ messages in thread From: Jerome Pouiller @ 2019-10-17 9:40 UTC (permalink / raw) To: devel; +Cc: linux-kernel, Greg Kroah-Hartman, Jerome Pouiller From: Jérôme Pouiller <jerome.pouiller@silabs.com> "Secure link" feature is not available in in-tree driver (because it depends on mbedtls). Thus, secure_link.h only empty functions. Module parameter "slk_key" and associated function wfx_fill_sl_key() had an unjustifiable place in main.c. This patch relocate them to secure_link.h. BTW, content of wfx_fill_sl_key() is now useless. Just keep a warning if user try to use "slk_key" attribute (unsupported by this driver). Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> --- drivers/staging/wfx/main.c | 29 +---------------------------- drivers/staging/wfx/main.h | 1 - drivers/staging/wfx/secure_link.h | 9 +++++++++ 3 files changed, 10 insertions(+), 29 deletions(-) diff --git a/drivers/staging/wfx/main.c b/drivers/staging/wfx/main.c index 157e0fc0107e..3a43f190d96a 100644 --- a/drivers/staging/wfx/main.c +++ b/drivers/staging/wfx/main.c @@ -44,10 +44,6 @@ static int gpio_wakeup = -2; module_param(gpio_wakeup, int, 0644); MODULE_PARM_DESC(gpio_wakeup, "gpio number for wakeup. -1 for none."); -static char *slk_key; -module_param(slk_key, charp, 0600); -MODULE_PARM_DESC(slk_key, "secret key for secure link (expect 64 hexadecimal digits)."); - #define RATETAB_ENT(_rate, _rateid, _flags) { \ .bitrate = (_rate), \ .hw_value = (_rateid), \ @@ -194,29 +190,6 @@ struct gpio_desc *wfx_get_gpio(struct device *dev, int override, const char *lab return ret; } -static void wfx_fill_sl_key(struct device *dev, struct wfx_platform_data *pdata) -{ - const char *ascii_key = NULL; - int ret = 0; - - if (slk_key) - ascii_key = slk_key; - if (!ascii_key) - ret = of_property_read_string(dev->of_node, "slk_key", &ascii_key); - if (ret == -EILSEQ || ret == -ENODATA) - dev_err(dev, "ignoring malformatted key from DT\n"); - if (!ascii_key) - return; - - ret = hex2bin(pdata->slk_key, ascii_key, sizeof(pdata->slk_key)); - if (ret) { - dev_err(dev, "ignoring malformatted key: %s\n", ascii_key); - memset(pdata->slk_key, 0, sizeof(pdata->slk_key)); - return; - } - dev_err(dev, "secure link is not supported by this driver, ignoring provided key\n"); -} - /* NOTE: wfx_send_pds() destroy buf */ int wfx_send_pds(struct wfx_dev *wdev, unsigned char *buf, size_t len) { @@ -334,7 +307,7 @@ struct wfx_dev *wfx_init_common(struct device *dev, memcpy(&wdev->pdata, pdata, sizeof(*pdata)); of_property_read_string(dev->of_node, "config-file", &wdev->pdata.file_pds); wdev->pdata.gpio_wakeup = wfx_get_gpio(dev, gpio_wakeup, "wakeup"); - wfx_fill_sl_key(dev, &wdev->pdata); + wfx_sl_fill_pdata(dev, &wdev->pdata); mutex_init(&wdev->conf_mutex); mutex_init(&wdev->rx_stats_lock); diff --git a/drivers/staging/wfx/main.h b/drivers/staging/wfx/main.h index f2b07ed1627c..875f8c227803 100644 --- a/drivers/staging/wfx/main.h +++ b/drivers/staging/wfx/main.h @@ -22,7 +22,6 @@ struct wfx_platform_data { /* Keyset and ".sec" extention will appended to this string */ const char *file_fw; const char *file_pds; - unsigned char slk_key[API_KEY_VALUE_SIZE]; struct gpio_desc *gpio_wakeup; /* * if true HIF D_out is sampled on the rising edge of the clock diff --git a/drivers/staging/wfx/secure_link.h b/drivers/staging/wfx/secure_link.h index e2da1c73c760..376d7bc4c0c4 100644 --- a/drivers/staging/wfx/secure_link.h +++ b/drivers/staging/wfx/secure_link.h @@ -5,6 +5,8 @@ #ifndef WFX_SECURE_LINK_H #define WFX_SECURE_LINK_H +#include <linux/of.h> + #include "hif_api_general.h" struct wfx_dev; @@ -33,6 +35,13 @@ static inline int wfx_sl_check_pubkey(struct wfx_dev *wdev, uint8_t *ncp_pubkey, return -EIO; } +static inline void wfx_sl_fill_pdata(struct device *dev, + struct wfx_platform_data *pdata) +{ + if (of_find_property(dev->of_node, "slk_key", NULL)) + dev_err(dev, "secure link is not supported by this driver, ignoring provided key\n"); +} + static inline int wfx_sl_init(struct wfx_dev *wdev) { return -EIO; -- 2.20.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 5/6] staging: wfx: fix setting MAC address from DT 2019-10-17 9:40 [PATCH 1/6] staging: wfx: drop module version Jerome Pouiller 2019-10-17 9:40 ` [PATCH 2/6] staging: wfx: relocate wfx_fill_sl_key() in secure_link.h Jerome Pouiller @ 2019-10-17 9:40 ` Jerome Pouiller 2019-10-17 9:40 ` [PATCH 4/6] staging: wfx: fix Oops when CONFIG_OF_NET is not set Jerome Pouiller ` (2 subsequent siblings) 4 siblings, 0 replies; 6+ messages in thread From: Jerome Pouiller @ 2019-10-17 9:40 UTC (permalink / raw) To: devel; +Cc: linux-kernel, Greg Kroah-Hartman, Jerome Pouiller, Marc Dorval From: Jérôme Pouiller <jerome.pouiller@silabs.com> MAC address read from chip is unconditionally used even if a MAC address is configured in device tree. Reported-by: Marc Dorval <marc.dorval@silabs.com> Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> --- drivers/staging/wfx/main.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/staging/wfx/main.c b/drivers/staging/wfx/main.c index 205b5bc8872e..18f07f7ad347 100644 --- a/drivers/staging/wfx/main.c +++ b/drivers/staging/wfx/main.c @@ -410,8 +410,9 @@ int wfx_probe(struct wfx_dev *wdev) if (!IS_ERR_OR_NULL(macaddr)) { ether_addr_copy(wdev->addresses[i].addr, macaddr); wdev->addresses[i].addr[ETH_ALEN - 1] += i; + } else { + ether_addr_copy(wdev->addresses[i].addr, wdev->hw_caps.mac_addr[i]); } - ether_addr_copy(wdev->addresses[i].addr, wdev->hw_caps.mac_addr[i]); if (!is_valid_ether_addr(wdev->addresses[i].addr)) { dev_warn(wdev->dev, "using random MAC address\n"); eth_random_addr(wdev->addresses[i].addr); -- 2.20.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 4/6] staging: wfx: fix Oops when CONFIG_OF_NET is not set 2019-10-17 9:40 [PATCH 1/6] staging: wfx: drop module version Jerome Pouiller 2019-10-17 9:40 ` [PATCH 2/6] staging: wfx: relocate wfx_fill_sl_key() in secure_link.h Jerome Pouiller 2019-10-17 9:40 ` [PATCH 5/6] staging: wfx: fix setting MAC address from DT Jerome Pouiller @ 2019-10-17 9:40 ` Jerome Pouiller 2019-10-17 9:40 ` [PATCH 3/6] staging: wfx: fix CONFIG_MMC=m with CONFIG_WFX=y Jerome Pouiller 2019-10-17 9:40 ` [PATCH 6/6] staging: wfx: fix number of available tx_policies Jerome Pouiller 4 siblings, 0 replies; 6+ messages in thread From: Jerome Pouiller @ 2019-10-17 9:40 UTC (permalink / raw) To: devel; +Cc: linux-kernel, Greg Kroah-Hartman, Jerome Pouiller From: Jérôme Pouiller <jerome.pouiller@silabs.com> In most case, of_get_mac_address() return NULL in case of error. However, if CONFIG_OF_NET is not set, it return -ENODEV. Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> --- drivers/staging/wfx/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/staging/wfx/main.c b/drivers/staging/wfx/main.c index 3a43f190d96a..205b5bc8872e 100644 --- a/drivers/staging/wfx/main.c +++ b/drivers/staging/wfx/main.c @@ -407,7 +407,7 @@ int wfx_probe(struct wfx_dev *wdev) for (i = 0; i < ARRAY_SIZE(wdev->addresses); i++) { eth_zero_addr(wdev->addresses[i].addr); macaddr = of_get_mac_address(wdev->dev->of_node); - if (macaddr) { + if (!IS_ERR_OR_NULL(macaddr)) { ether_addr_copy(wdev->addresses[i].addr, macaddr); wdev->addresses[i].addr[ETH_ALEN - 1] += i; } -- 2.20.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/6] staging: wfx: fix CONFIG_MMC=m with CONFIG_WFX=y 2019-10-17 9:40 [PATCH 1/6] staging: wfx: drop module version Jerome Pouiller ` (2 preceding siblings ...) 2019-10-17 9:40 ` [PATCH 4/6] staging: wfx: fix Oops when CONFIG_OF_NET is not set Jerome Pouiller @ 2019-10-17 9:40 ` Jerome Pouiller 2019-10-17 9:40 ` [PATCH 6/6] staging: wfx: fix number of available tx_policies Jerome Pouiller 4 siblings, 0 replies; 6+ messages in thread From: Jerome Pouiller @ 2019-10-17 9:40 UTC (permalink / raw) To: devel; +Cc: linux-kernel, Greg Kroah-Hartman, Jerome Pouiller, zhong jiang From: Jérôme Pouiller <jerome.pouiller@silabs.com> If CONFIG_MMC=m and CONFIG_WFX=y, compilation complains with undefined references: drivers/staging/wfx/main.o: In function `wfx_core_init': /linux/drivers/staging/wfx/main.c:488: undefined reference to `sdio_register_driver' drivers/staging/wfx/main.o: In function `wfx_core_exit': /linux/drivers/staging/wfx/main.c:496: undefined reference to `sdio_unregister_driver' drivers/staging/wfx/main.o:(.debug_addr+0x1a8): undefined reference to `sdio_register_driver' drivers/staging/wfx/main.o:(.debug_addr+0x6f0): undefined reference to `sdio_unregister_driver' Indeed, symbols sdio_* are not present in kernel image. This patch disallows CONFIG_WFX=y if CONFIG_MMC=m. This solution impacts users who want to use SPI bus with configuration: CONFIG_WFX=y + CONFIG_SPI=y + CONFIG_MMC=m. However, I think this is a twisted case. So, I think it won't be missed. Reported-by: zhong jiang <zhongjiang@huawei.com> Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> --- drivers/staging/wfx/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/staging/wfx/Kconfig b/drivers/staging/wfx/Kconfig index 9b8a1c7a9e90..83ee4d0ca8c6 100644 --- a/drivers/staging/wfx/Kconfig +++ b/drivers/staging/wfx/Kconfig @@ -1,6 +1,7 @@ config WFX tristate "Silicon Labs wireless chips WF200 and further" depends on MAC80211 + depends on MMC || !MMC # do not allow WFX=y if MMC=m depends on (SPI || MMC) help This is a driver for Silicons Labs WFxxx series (WF200 and further) -- 2.20.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 6/6] staging: wfx: fix number of available tx_policies 2019-10-17 9:40 [PATCH 1/6] staging: wfx: drop module version Jerome Pouiller ` (3 preceding siblings ...) 2019-10-17 9:40 ` [PATCH 3/6] staging: wfx: fix CONFIG_MMC=m with CONFIG_WFX=y Jerome Pouiller @ 2019-10-17 9:40 ` Jerome Pouiller 4 siblings, 0 replies; 6+ messages in thread From: Jerome Pouiller @ 2019-10-17 9:40 UTC (permalink / raw) To: devel; +Cc: linux-kernel, Greg Kroah-Hartman, Jerome Pouiller, Alban Jeantheau From: Jérôme Pouiller <jerome.pouiller@silabs.com> Original API declares 16 tx_policies. But in fact, the 16th is used internally by the firmware. So, only 15 tx_policies are available for driver. Reported-by: Alban Jeantheau <alban.jeantheau@silabs.com> Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> --- drivers/staging/wfx/hif_api_mib.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/staging/wfx/hif_api_mib.h b/drivers/staging/wfx/hif_api_mib.h index 3c56ef2978a2..af657555f894 100644 --- a/drivers/staging/wfx/hif_api_mib.h +++ b/drivers/staging/wfx/hif_api_mib.h @@ -507,7 +507,7 @@ struct hif_mib_tx_rate_retry_policy { uint8_t rates[12]; } __packed; -#define HIF_MIB_NUM_TX_RATE_RETRY_POLICIES 16 +#define HIF_MIB_NUM_TX_RATE_RETRY_POLICIES 15 struct hif_mib_set_tx_rate_retry_policy { uint8_t num_tx_rate_policies; -- 2.20.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2019-10-17 9:41 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-10-17 9:40 [PATCH 1/6] staging: wfx: drop module version Jerome Pouiller 2019-10-17 9:40 ` [PATCH 2/6] staging: wfx: relocate wfx_fill_sl_key() in secure_link.h Jerome Pouiller 2019-10-17 9:40 ` [PATCH 5/6] staging: wfx: fix setting MAC address from DT Jerome Pouiller 2019-10-17 9:40 ` [PATCH 4/6] staging: wfx: fix Oops when CONFIG_OF_NET is not set Jerome Pouiller 2019-10-17 9:40 ` [PATCH 3/6] staging: wfx: fix CONFIG_MMC=m with CONFIG_WFX=y Jerome Pouiller 2019-10-17 9:40 ` [PATCH 6/6] staging: wfx: fix number of available tx_policies Jerome Pouiller
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).