mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
wifi: wilc1000: Register wiphy after reading out chipid
Register wiphy after reading out chipid, so the chipid can be used to determine chip features and not advertise WPA3/SAE support to userspace on WILC3000. Note that wilc_netdev_cleanup() will deregister the wiphy in fail path. Tested-by: Alexis Lothoré <alexis.lothore@bootlin.com> Tested-on: WILC1000SD 07 SDIO WILC_WIFI_FW_REL_16_1_2 Tested-on: WILC3000 A SDIO WILC_WIFI_FW_REL_16_1_1 Signed-off-by: Marek Vasut <marex@denx.de> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://patch.msgid.link/20241004114551.40236-6-marex@denx.de
This commit is contained in:
parent
577c04fc3b
commit
fbdf0c5248
4 changed files with 17 additions and 8 deletions
|
@ -1761,7 +1761,6 @@ static struct wilc *wilc_create_wiphy(struct device *dev)
|
|||
{
|
||||
struct wiphy *wiphy;
|
||||
struct wilc *wl;
|
||||
int ret;
|
||||
|
||||
wiphy = wiphy_new(&wilc_cfg80211_ops, sizeof(*wl));
|
||||
if (!wiphy)
|
||||
|
@ -1804,14 +1803,8 @@ static struct wilc *wilc_create_wiphy(struct device *dev)
|
|||
BIT(NL80211_IFTYPE_P2P_GO) |
|
||||
BIT(NL80211_IFTYPE_P2P_CLIENT);
|
||||
wiphy->flags |= WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL;
|
||||
wiphy->features |= NL80211_FEATURE_SAE;
|
||||
set_wiphy_dev(wiphy, dev);
|
||||
wl->wiphy = wiphy;
|
||||
ret = wiphy_register(wiphy);
|
||||
if (ret) {
|
||||
wiphy_free(wiphy);
|
||||
return NULL;
|
||||
}
|
||||
return wl;
|
||||
}
|
||||
|
||||
|
@ -1855,12 +1848,19 @@ free_cfg:
|
|||
|
||||
free_wl:
|
||||
wlan_deinit_locks(wl);
|
||||
wiphy_unregister(wl->wiphy);
|
||||
wiphy_free(wl->wiphy);
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(wilc_cfg80211_init);
|
||||
|
||||
int wilc_cfg80211_register(struct wilc *wilc)
|
||||
{
|
||||
wilc->wiphy->features |= NL80211_FEATURE_SAE;
|
||||
|
||||
return wiphy_register(wilc->wiphy);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(wilc_cfg80211_register);
|
||||
|
||||
int wilc_init_host_int(struct net_device *net)
|
||||
{
|
||||
int ret;
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
|
||||
int wilc_cfg80211_init(struct wilc **wilc, struct device *dev, int io_type,
|
||||
const struct wilc_hif_func *ops);
|
||||
int wilc_cfg80211_register(struct wilc *wilc);
|
||||
void wilc_deinit_host_int(struct net_device *net);
|
||||
int wilc_init_host_int(struct net_device *net);
|
||||
void wilc_wfi_monitor_rx(struct net_device *mon_dev, u8 *buff, u32 size);
|
||||
|
|
|
@ -186,6 +186,10 @@ static int wilc_sdio_probe(struct sdio_func *func,
|
|||
if (ret)
|
||||
goto dispose_irq;
|
||||
|
||||
ret = wilc_cfg80211_register(wilc);
|
||||
if (ret)
|
||||
goto dispose_irq;
|
||||
|
||||
ret = wilc_load_mac_from_nv(wilc);
|
||||
if (ret) {
|
||||
pr_err("Can not retrieve MAC address from chip\n");
|
||||
|
|
|
@ -249,6 +249,10 @@ static int wilc_bus_probe(struct spi_device *spi)
|
|||
if (ret)
|
||||
goto power_down;
|
||||
|
||||
ret = wilc_cfg80211_register(wilc);
|
||||
if (ret)
|
||||
goto power_down;
|
||||
|
||||
ret = wilc_load_mac_from_nv(wilc);
|
||||
if (ret) {
|
||||
pr_err("Can not retrieve MAC address from chip\n");
|
||||
|
|
Loading…
Add table
Reference in a new issue