From 7bab5bdb81e33cd0bc0aa848931ff47940ad54b0 Mon Sep 17 00:00:00 2001 From: Chen-Yu Tsai Date: Wed, 7 Jan 2026 17:27:40 +0800 Subject: [PATCH] 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 --- drivers/net/wireless/marvell/mwifiex/cfg80211.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) 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: -- 2.47.3