From: Chen-Yu Tsai Date: Wed, 7 Jan 2026 09:27:40 +0000 (+0800) Subject: wifi: mwifiex: Allocate dev name earlier for interface workqueue name X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7bab5bdb81e33cd0bc0aa848931ff47940ad54b0;p=thirdparty%2Fkernel%2Flinux.git wifi: mwifiex: Allocate dev name earlier for interface workqueue name The interface specific workqueues are allocated with the interface name as part of the workqueue name. However when they are allocated, the interface name has not been allocated, thus the "name" is actually the pattern for the name "mlan%d". This ends up pretty ugly and could conflict if multiple interfaces were added. Allocate the device name earlier and use that to allocate the workqueues. Also tweak the workqueue name patterns to add a separator between the prefix and the interface name parts for readability. Signed-off-by: Chen-Yu Tsai Link: https://patch.msgid.link/20260107092744.1131314-1-wenst@chromium.org Signed-off-by: Johannes Berg --- diff --git a/drivers/net/wireless/marvell/mwifiex/cfg80211.c b/drivers/net/wireless/marvell/mwifiex/cfg80211.c index be23a29e7de09..a66d18e380fc5 100644 --- a/drivers/net/wireless/marvell/mwifiex/cfg80211.c +++ b/drivers/net/wireless/marvell/mwifiex/cfg80211.c @@ -3147,10 +3147,14 @@ struct wireless_dev *mwifiex_add_virtual_intf(struct wiphy *wiphy, SET_NETDEV_DEV(dev, adapter->dev); - priv->dfs_cac_workqueue = alloc_workqueue("MWIFIEX_DFS_CAC%s", + ret = dev_alloc_name(dev, name); + if (ret) + goto err_alloc_name; + + priv->dfs_cac_workqueue = alloc_workqueue("MWIFIEX_DFS_CAC-%s", WQ_HIGHPRI | WQ_MEM_RECLAIM | - WQ_UNBOUND, 0, name); + WQ_UNBOUND, 0, dev->name); if (!priv->dfs_cac_workqueue) { mwifiex_dbg(adapter, ERROR, "cannot alloc DFS CAC queue\n"); ret = -ENOMEM; @@ -3159,9 +3163,9 @@ struct wireless_dev *mwifiex_add_virtual_intf(struct wiphy *wiphy, INIT_DELAYED_WORK(&priv->dfs_cac_work, mwifiex_dfs_cac_work_queue); - priv->dfs_chan_sw_workqueue = alloc_workqueue("MWIFIEX_DFS_CHSW%s", + priv->dfs_chan_sw_workqueue = alloc_workqueue("MWIFIEX_DFS_CHSW-%s", WQ_HIGHPRI | WQ_UNBOUND | - WQ_MEM_RECLAIM, 0, name); + WQ_MEM_RECLAIM, 0, dev->name); if (!priv->dfs_chan_sw_workqueue) { mwifiex_dbg(adapter, ERROR, "cannot alloc DFS channel sw queue\n"); ret = -ENOMEM; @@ -3198,6 +3202,7 @@ err_alloc_chsw: destroy_workqueue(priv->dfs_cac_workqueue); priv->dfs_cac_workqueue = NULL; err_alloc_cac: +err_alloc_name: free_netdev(dev); priv->netdev = NULL; err_sta_init: