wilc1000: Rename workqueue from "WILC_wq" to "NETDEV-wq"
authorDavid Mosberger-Tang <davidm@egauge.net>
Thu, 9 Dec 2021 04:44:30 +0000 (04:44 +0000)
committerKalle Valo <kvalo@kernel.org>
Tue, 14 Dec 2021 18:46:35 +0000 (20:46 +0200)
This follows normal Linux convention and is more useful since the new
name will make it apparent which network device the work-queue is for
(e.g., the name will be "wlan0-wq" for network device "wlan0").

hif_workqueue allocation has to move from
cfg80211.c:wilc_cfg80211_init() to netdev.c:wilc_netdev_ifc_init()
because the network device name is not known until after the netdev is
registered.  The move also makes sense because netdev.c is already
responsible for destroying the work queue when it is no longer needed.

Signed-off-by: David Mosberger-Tang <davidm@egauge.net>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20211209044411.3482259-5-davidm@egauge.net
drivers/net/wireless/microchip/wilc1000/cfg80211.c
drivers/net/wireless/microchip/wilc1000/netdev.c

index dc4bfe7be378d8b3e47e730b5abff57ba7647e4e..8d8378bafd9b0bad107452ab5edd77a285ceb75d 100644 (file)
@@ -1737,23 +1737,15 @@ int wilc_cfg80211_init(struct wilc **wilc, struct device *dev, int io_type,
        INIT_LIST_HEAD(&wl->rxq_head.list);
        INIT_LIST_HEAD(&wl->vif_list);
 
-       wl->hif_workqueue = create_singlethread_workqueue("WILC_wq");
-       if (!wl->hif_workqueue) {
-               ret = -ENOMEM;
-               goto free_cfg;
-       }
        vif = wilc_netdev_ifc_init(wl, "wlan%d", WILC_STATION_MODE,
                                   NL80211_IFTYPE_STATION, false);
        if (IS_ERR(vif)) {
                ret = PTR_ERR(vif);
-               goto free_hq;
+               goto free_cfg;
        }
 
        return 0;
 
-free_hq:
-       destroy_workqueue(wl->hif_workqueue);
-
 free_cfg:
        wilc_wlan_cfg_deinit(wl);
 
index dec550cb548f4338397ac140d746d278d0146227..03e3485d7e7fa24324507ef2f5bb90a0af8045fd 100644 (file)
@@ -962,8 +962,15 @@ struct wilc_vif *wilc_netdev_ifc_init(struct wilc *wl, const char *name,
                ret = register_netdev(ndev);
 
        if (ret) {
-               free_netdev(ndev);
-               return ERR_PTR(-EFAULT);
+               ret = -EFAULT;
+               goto error;
+       }
+
+       wl->hif_workqueue = alloc_ordered_workqueue("%s-wq", WQ_MEM_RECLAIM,
+                                                   ndev->name);
+       if (!wl->hif_workqueue) {
+               ret = -ENOMEM;
+               goto error;
        }
 
        ndev->needs_free_netdev = true;
@@ -977,6 +984,10 @@ struct wilc_vif *wilc_netdev_ifc_init(struct wilc *wl, const char *name,
        synchronize_srcu(&wl->srcu);
 
        return vif;
+
+  error:
+       free_netdev(ndev);
+       return ERR_PTR(ret);
 }
 
 MODULE_LICENSE("GPL");