hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/net/wireless/marvell/libertas/main.c
....@@ -1,3 +1,4 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * This file contains the major functions in WLAN
34 * driver. It includes init, exit, open, close and main
....@@ -216,7 +217,7 @@
216217
217218 spin_lock_irqsave(&priv->driver_lock, flags);
218219 priv->iface_running = false;
219
- kfree_skb(priv->currenttxskb);
220
+ dev_kfree_skb_irq(priv->currenttxskb);
220221 priv->currenttxskb = NULL;
221222 priv->tx_pending_len = 0;
222223 spin_unlock_irqrestore(&priv->driver_lock, flags);
....@@ -720,7 +721,7 @@
720721 * lbs_cmd_timeout_handler - handles the timeout of command sending.
721722 * It will re-send the same command again.
722723 *
723
- * @data: &struct lbs_private pointer
724
+ * @t: Context from which to retrieve a &struct lbs_private pointer
724725 */
725726 static void lbs_cmd_timeout_handler(struct timer_list *t)
726727 {
....@@ -754,7 +755,7 @@
754755 * to the hardware. This is known to frequently happen with SD8686 when
755756 * waking up after a Wake-on-WLAN-triggered resume.
756757 *
757
- * @data: &struct lbs_private pointer
758
+ * @t: Context from which to retrieve a &struct lbs_private pointer
758759 */
759760 static void lbs_tx_lockup_handler(struct timer_list *t)
760761 {
....@@ -776,7 +777,7 @@
776777 /**
777778 * auto_deepsleep_timer_fn - put the device back to deep sleep mode when
778779 * timer expires and no activity (command, event, data etc.) is detected.
779
- * @data: &struct lbs_private pointer
780
+ * @t: Context from which to retrieve a &struct lbs_private pointer
780781 * returns: N/A
781782 */
782783 static void auto_deepsleep_timer_fn(struct timer_list *t)
....@@ -869,6 +870,7 @@
869870 ret = kfifo_alloc(&priv->event_fifo, sizeof(u32) * 16, GFP_KERNEL);
870871 if (ret) {
871872 pr_err("Out of memory allocating event FIFO buffer\n");
873
+ lbs_free_cmd_buffer(priv);
872874 goto out;
873875 }
874876
....@@ -907,25 +909,29 @@
907909 struct net_device *dev;
908910 struct wireless_dev *wdev;
909911 struct lbs_private *priv = NULL;
912
+ int err;
910913
911914 /* Allocate an Ethernet device and register it */
912915 wdev = lbs_cfg_alloc(dmdev);
913916 if (IS_ERR(wdev)) {
917
+ err = PTR_ERR(wdev);
914918 pr_err("cfg80211 init failed\n");
915
- goto done;
919
+ goto err_cfg;
916920 }
917921
918922 wdev->iftype = NL80211_IFTYPE_STATION;
919923 priv = wdev_priv(wdev);
920924 priv->wdev = wdev;
921925
922
- if (lbs_init_adapter(priv)) {
926
+ err = lbs_init_adapter(priv);
927
+ if (err) {
923928 pr_err("failed to initialize adapter structure\n");
924929 goto err_wdev;
925930 }
926931
927932 dev = alloc_netdev(0, "wlan%d", NET_NAME_UNKNOWN, ether_setup);
928933 if (!dev) {
934
+ err = -ENOMEM;
929935 dev_err(dmdev, "no memory for network device instance\n");
930936 goto err_adapter;
931937 }
....@@ -949,6 +955,7 @@
949955 init_waitqueue_head(&priv->waitq);
950956 priv->main_thread = kthread_run(lbs_thread, dev, "lbs_main");
951957 if (IS_ERR(priv->main_thread)) {
958
+ err = PTR_ERR(priv->main_thread);
952959 lbs_deb_thread("Error creating main thread.\n");
953960 goto err_ndev;
954961 }
....@@ -961,7 +968,7 @@
961968 priv->wol_gap = 20;
962969 priv->ehs_remove_supported = true;
963970
964
- goto done;
971
+ return priv;
965972
966973 err_ndev:
967974 free_netdev(dev);
....@@ -972,10 +979,8 @@
972979 err_wdev:
973980 lbs_cfg_free(priv);
974981
975
- priv = NULL;
976
-
977
-done:
978
- return priv;
982
+ err_cfg:
983
+ return ERR_PTR(err);
979984 }
980985 EXPORT_SYMBOL_GPL(lbs_add_card);
981986
....@@ -1042,7 +1047,7 @@
10421047 int lbs_start_card(struct lbs_private *priv)
10431048 {
10441049 struct net_device *dev = priv->dev;
1045
- int ret = -1;
1050
+ int ret;
10461051
10471052 /* poke the firmware */
10481053 ret = lbs_setup_firmware(priv);