From patchwork Thu Dec 9 04:44:27 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Mosberger-Tang X-Patchwork-Id: 523036 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id EF229C433FE for ; Thu, 9 Dec 2021 04:44:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231874AbhLIEsD (ORCPT ); Wed, 8 Dec 2021 23:48:03 -0500 Received: from o1.ptr2625.egauge.net ([167.89.112.53]:11030 "EHLO o1.ptr2625.egauge.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230218AbhLIEsB (ORCPT ); Wed, 8 Dec 2021 23:48:01 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=egauge.net; h=from:subject:in-reply-to:references:mime-version:to:cc: content-transfer-encoding:content-type; s=sgd; bh=H64ILayGbyX7QYCOqwVQMsvPO71U8dZR6YHB4zg8EFs=; b=W/H0s5KkRii6Uw7QQR+WAr/CG/MgmONN3LqO1vksSjeAxzJmXX73zOe1E3YGhQ3JTn1p FQnIN3Ug6pGJQPYOJU4NQvKgap/bjEkVR6THJ6inymuLdhrw/+jfJEO2l+/HF+dhtblq1k HTaC2G2UCZdtq1uQ1dAEJDKaWhT7B98R5AX2LmVkUjfMv4Hhg52wnyfSard4k8AK+WKxJb K+HrZLUZHUydnNfANYb+/3aRBlYV2dspU6FbJVqe7rUhX6bkiqhiUUFarjjV7VphFc1wGS 26bsZ+oMY+gmfAdB1NMSeM8DWAJ/80FaRXn+vWdVU90EclGWu/s9j5Vsl2YPt+sQ== Received: by filterdrecv-656998cfdd-gwqfx with SMTP id filterdrecv-656998cfdd-gwqfx-1-61B189AB-4 2021-12-09 04:44:27.295232665 +0000 UTC m=+6758200.701945321 Received: from pearl.egauge.net (unknown) by geopod-ismtpd-5-1 (SG) with ESMTP id cyYv14rSQAiel4p3-86dvA Thu, 09 Dec 2021 04:44:26.993 +0000 (UTC) Received: by pearl.egauge.net (Postfix, from userid 1000) id 761D87002CB; Wed, 8 Dec 2021 21:44:26 -0700 (MST) From: David Mosberger-Tang Subject: [PATCH 1/4] wilc1000: Rename SPI driver from "WILC_SPI" to "wilc1000_spi" Date: Thu, 09 Dec 2021 04:44:27 +0000 (UTC) Message-Id: <20211209044411.3482259-2-davidm@egauge.net> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211209044411.3482259-1-davidm@egauge.net> References: <20211209044411.3482259-1-davidm@egauge.net> MIME-Version: 1.0 X-SG-EID: +kMxBqj35EdRUKoy8diX1j4AXmPtd302oan+iXZuF8m2Nw4HRW2irNspffT/khET6RJF6+Prbl0h/EtF1rRLvJwe83XFZyNCdpj6AiavbJ9FB/H07BuKFsH9AsM2LPyuRo0GMdSmLegvcRhC3B529egjWPSHs5u9p5/4DrFXqR98hB+7udjYLWWZdxtdBNpS1JiKsy2z7giIRaIsFMrZ9APIRorrUpcUD3GqYG2xXkKzRkXoWqyg5uT4XBijwWF4kV/A6fctZszFMadpoCCIKw== To: Ajay Singh Cc: Claudiu Beznea , Kalle Valo , "David S. Miller" , Jakub Kicinski , linux-wireless@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, David Mosberger-Tang X-Entity-ID: Xg4JGAcGrJFIz2kDG9eoaQ== Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org The name "wilc1000_spi" follows normal Linux conventions and also is analogous to the SDIO driver, which uses "wilc1000_sdio". Signed-off-by: David Mosberger-Tang --- drivers/net/wireless/microchip/wilc1000/spi.c | 4 +++- drivers/net/wireless/microchip/wilc1000/wlan.h | 2 -- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/microchip/wilc1000/spi.c b/drivers/net/wireless/microchip/wilc1000/spi.c index 640850f989dd..69c901395329 100644 --- a/drivers/net/wireless/microchip/wilc1000/spi.c +++ b/drivers/net/wireless/microchip/wilc1000/spi.c @@ -12,6 +12,8 @@ #include "netdev.h" #include "cfg80211.h" +#define SPI_MODALIAS "wilc1000_spi" + static bool enable_crc7; /* protect SPI commands with CRC7 */ module_param(enable_crc7, bool, 0644); MODULE_PARM_DESC(enable_crc7, @@ -205,7 +207,7 @@ MODULE_DEVICE_TABLE(of, wilc_of_match); static struct spi_driver wilc_spi_driver = { .driver = { - .name = MODALIAS, + .name = SPI_MODALIAS, .of_match_table = wilc_of_match, }, .probe = wilc_bus_probe, diff --git a/drivers/net/wireless/microchip/wilc1000/wlan.h b/drivers/net/wireless/microchip/wilc1000/wlan.h index 13fde636aa0e..eb7978166d73 100644 --- a/drivers/net/wireless/microchip/wilc1000/wlan.h +++ b/drivers/net/wireless/microchip/wilc1000/wlan.h @@ -213,8 +213,6 @@ #define WILC_RX_BUFF_SIZE (96 * 1024) #define WILC_TX_BUFF_SIZE (64 * 1024) -#define MODALIAS "WILC_SPI" - #define NQUEUES 4 #define AC_BUFFER_SIZE 1000 From patchwork Thu Dec 9 04:44:28 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Mosberger-Tang X-Patchwork-Id: 523035 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3AB23C433EF for ; Thu, 9 Dec 2021 04:44:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230216AbhLIEsG (ORCPT ); Wed, 8 Dec 2021 23:48:06 -0500 Received: from o1.ptr2625.egauge.net ([167.89.112.53]:11258 "EHLO o1.ptr2625.egauge.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230245AbhLIEsC (ORCPT ); Wed, 8 Dec 2021 23:48:02 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=egauge.net; h=from:subject:in-reply-to:references:mime-version:to:cc: content-transfer-encoding:content-type; s=sgd; bh=YaTQ2gxJhl0t16vCN/mieGkdFAy59VhLYl6Y22oNjxs=; b=QaBBm9exwNLuNKpyoT23WthmbAgSEhRABvzM0ArfeBDYwQcMVh/sYu3dMtD44uLY+YUt ou3m9tiMJvW92VwywF3vG+hH21+7IrkNVf9mwuWF4IWVdX3eb1Sx+JH42YudQ1DBucFnWo 3DVQaGs2cM7bDibKs7AerMwg7LRlB+50kP9jS9suunAmgw3Y1fk9c9ufJhu3cwwGQwaaA0 lbc7HMgfFm/o0+fuXUOH4iEoXQgz35yp5g7AmU1vgXCfri3G3FWMLP/JhdkfNufgJgjZNy PkF1qQFPntz9cumI5l8oYxQpIui+aCgLeBzW0PycIyjApMWr72y5NTRCF7GkKArg== Received: by filterdrecv-75ff7b5ffb-96rhp with SMTP id filterdrecv-75ff7b5ffb-96rhp-1-61B189AB-19 2021-12-09 04:44:27.857624053 +0000 UTC m=+8490247.738130723 Received: from pearl.egauge.net (unknown) by ismtpd0047p1las1.sendgrid.net (SG) with ESMTP id xn7barkGR2qV9cf5_7G2Wg Thu, 09 Dec 2021 04:44:27.778 +0000 (UTC) Received: by pearl.egauge.net (Postfix, from userid 1000) id 49BEB7002CB; Wed, 8 Dec 2021 21:44:27 -0700 (MST) From: David Mosberger-Tang Subject: [PATCH 2/4] wilc1000: Rename irq handler from "WILC_IRQ" to netdev name Date: Thu, 09 Dec 2021 04:44:28 +0000 (UTC) Message-Id: <20211209044411.3482259-3-davidm@egauge.net> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211209044411.3482259-1-davidm@egauge.net> References: <20211209044411.3482259-1-davidm@egauge.net> MIME-Version: 1.0 X-SG-EID: +kMxBqj35EdRUKoy8diX1j4AXmPtd302oan+iXZuF8m2Nw4HRW2irNspffT/khET6RJF6+Prbl0h/EtF1rRLvFe3c01PoG04mJYIZgQwDCewcoG18r/f11AGGAmZHMWMyzfrUGZq0kyCMKkZ7Oshm9MG8hcWR3ioKnwDggTrV5ev+WSo0GOqGvEXESa3mKkJK8N0t2C3FJk6Pxkf939YbQw8pxiIUE5oQBksHbjRMXS6Vf3zEfcRniZY8Az//zv5Wxcl2Q9B0Yfin9A+/BAtDA== To: Ajay Singh Cc: Claudiu Beznea , Kalle Valo , "David S. Miller" , Jakub Kicinski , linux-wireless@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, David Mosberger-Tang X-Entity-ID: Xg4JGAcGrJFIz2kDG9eoaQ== Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org This change follows normal Linux convention and the new name is more useful since it'll be clear which irq handler statistics correspond to which net device. Signed-off-by: David Mosberger-Tang --- drivers/net/wireless/microchip/wilc1000/netdev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/wireless/microchip/wilc1000/netdev.c b/drivers/net/wireless/microchip/wilc1000/netdev.c index 690572e01a2a..fae6b364ce5c 100644 --- a/drivers/net/wireless/microchip/wilc1000/netdev.c +++ b/drivers/net/wireless/microchip/wilc1000/netdev.c @@ -56,7 +56,7 @@ static int init_irq(struct net_device *dev) ret = request_threaded_irq(wl->dev_irq_num, isr_uh_routine, isr_bh_routine, IRQF_TRIGGER_FALLING | IRQF_ONESHOT, - "WILC_IRQ", wl); + dev->name, wl); if (ret) { netdev_err(dev, "Failed to request IRQ [%d]\n", ret); return ret; From patchwork Thu Dec 9 04:44:28 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Mosberger-Tang X-Patchwork-Id: 522709 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 45BA5C433F5 for ; Thu, 9 Dec 2021 04:44:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232083AbhLIEsG (ORCPT ); Wed, 8 Dec 2021 23:48:06 -0500 Received: from o1.ptr2625.egauge.net ([167.89.112.53]:11566 "EHLO o1.ptr2625.egauge.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230287AbhLIEsE (ORCPT ); Wed, 8 Dec 2021 23:48:04 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=egauge.net; h=from:subject:in-reply-to:references:mime-version:to:cc: content-transfer-encoding:content-type; s=sgd; bh=4jU+mibC8yxDcqhHS9INe1ECc6xPDEbLP0oXfY4SoDE=; b=p2BtZf9MNWKPHhQkhD5d40Z2Bjnyu48vmYfd+goUKmnVPuB17sZxcYedfB4A867AP7VP G51ipKkF0QtawjziP3EEco389WNdeMdV8x3lKJP2WIMtZw/M8Au1sUf6MwnxIJETXL9rrz P8QTg5uoKPyP+BXBtp0BC1Nt2wsJjpXFZhiag7BZNklOIGrmb4oFbwcCS0JkfVIA3YRmHJ nzdmTEh0S9i/QRcJ2YhGuBlWMuGJtEO59qYcJgXPYFQvZERv86Np6RKWVRlhoR6wr72zhe +3QYiNR0pEweqYjRfdiVEK/bzJVUTyamtv2CC9WFMFf1MFj8jw4XCk17cLRlo+FA== Received: by filterdrecv-75ff7b5ffb-7dt9d with SMTP id filterdrecv-75ff7b5ffb-7dt9d-1-61B189AC-14 2021-12-09 04:44:28.568802866 +0000 UTC m=+8490232.442480606 Received: from pearl.egauge.net (unknown) by geopod-ismtpd-4-0 (SG) with ESMTP id vmywDYzRR0qPNZGoPANOAw Thu, 09 Dec 2021 04:44:28.452 +0000 (UTC) Received: by pearl.egauge.net (Postfix, from userid 1000) id 258F27002CB; Wed, 8 Dec 2021 21:44:28 -0700 (MST) From: David Mosberger-Tang Subject: [PATCH 3/4] wilc1000: Rename tx task from "K_TXQ_TASK" to NETDEV-tx Date: Thu, 09 Dec 2021 04:44:28 +0000 (UTC) Message-Id: <20211209044411.3482259-4-davidm@egauge.net> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211209044411.3482259-1-davidm@egauge.net> References: <20211209044411.3482259-1-davidm@egauge.net> MIME-Version: 1.0 X-SG-EID: +kMxBqj35EdRUKoy8diX1j4AXmPtd302oan+iXZuF8m2Nw4HRW2irNspffT/khET6RJF6+Prbl0h/EtF1rRLvPTgbt+ZgFQ0kkP0km9CAA5WLs05wsIeWz9KOel9Qh+wQViyidf1vLTegz4uABBl6OVnG1aHdivTRQJ33AWxhcj3tNUbYlQ/mMgrzdC13yswoiqe74mV8iXiuqyGf+BzqQTriLRnzL0KeN/2BvIb0WA8YBaZVk6BFuBwvhvhREy1jNBXxGxA7/k6MECMasxdFg== To: Ajay Singh Cc: Claudiu Beznea , Kalle Valo , "David S. Miller" , Jakub Kicinski , linux-wireless@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, David Mosberger-Tang X-Entity-ID: Xg4JGAcGrJFIz2kDG9eoaQ== Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org This follows normal Linux conventions and is also more useful because the netdevice name is part of the task name (e.g., "wlan0-tx" for network device "wlan0"). Signed-off-by: David Mosberger-Tang --- drivers/net/wireless/microchip/wilc1000/netdev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/wireless/microchip/wilc1000/netdev.c b/drivers/net/wireless/microchip/wilc1000/netdev.c index fae6b364ce5c..e3b7629b9410 100644 --- a/drivers/net/wireless/microchip/wilc1000/netdev.c +++ b/drivers/net/wireless/microchip/wilc1000/netdev.c @@ -468,7 +468,7 @@ static int wlan_initialize_threads(struct net_device *dev) struct wilc *wilc = vif->wilc; wilc->txq_thread = kthread_run(wilc_txq_task, (void *)wilc, - "K_TXQ_TASK"); + "%s-tx", dev->name); if (IS_ERR(wilc->txq_thread)) { netdev_err(dev, "couldn't create TXQ thread\n"); wilc->close = 0; From patchwork Thu Dec 9 04:44:30 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Mosberger-Tang X-Patchwork-Id: 522708 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8145AC433EF for ; Thu, 9 Dec 2021 04:44:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232340AbhLIEsP (ORCPT ); Wed, 8 Dec 2021 23:48:15 -0500 Received: from o1.ptr2625.egauge.net ([167.89.112.53]:12182 "EHLO o1.ptr2625.egauge.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230473AbhLIEsG (ORCPT ); Wed, 8 Dec 2021 23:48:06 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=egauge.net; h=from:subject:in-reply-to:references:mime-version:to:cc: content-transfer-encoding:content-type; s=sgd; bh=iHd/0RCXjKTxd8QykVdQ8eE0fAUunRy92vDapu3L2UI=; b=PVou7tpO6ziwvgFEhisz4H5HwQuKBdWNcveSI+DO2mhS4Z4+tHK2nmiTAozBf0DkYpFv B63j4bguA25IJyh+DXmozmPmdpEmgi2FeQtGNvMwLqhldeuX/ihTxNwOKFh1GRYQYfcS9c daPXBhM0ZP3H/cVsMYKnz1HNBaFZ5b/zA+fkwKvMB9+q54j51Gby93jcj2kOrAunEYDHUD f+qsCk0ysIGP3pJAjzQ2RUHEbVmZ/QxxEJvq4zH8p9HKiCP/GYNmRx2/LW8AQWus2m7+ZE HB+GuyQxNctfLSc4EaFrlk3c4ngW7xVHSDbkbGOrWUyQLQqocFFMQDwj2t0ggtZQ== Received: by filterdrecv-7bc86b958d-jb29x with SMTP id filterdrecv-7bc86b958d-jb29x-1-61B189AE-2 2021-12-09 04:44:30.260943231 +0000 UTC m=+8490286.153384126 Received: from pearl.egauge.net (unknown) by ismtpd0046p1las1.sendgrid.net (SG) with ESMTP id 3tBTAwxpQySG7nZd1a6wSQ Thu, 09 Dec 2021 04:44:30.074 +0000 (UTC) Received: by pearl.egauge.net (Postfix, from userid 1000) id 901AA7002CB; Wed, 8 Dec 2021 21:44:29 -0700 (MST) From: David Mosberger-Tang Subject: [PATCH 4/4] wilc1000: Rename workqueue from "WILC_wq" to "NETDEV-wq" Date: Thu, 09 Dec 2021 04:44:30 +0000 (UTC) Message-Id: <20211209044411.3482259-5-davidm@egauge.net> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211209044411.3482259-1-davidm@egauge.net> References: <20211209044411.3482259-1-davidm@egauge.net> MIME-Version: 1.0 X-SG-EID: +kMxBqj35EdRUKoy8diX1j4AXmPtd302oan+iXZuF8m2Nw4HRW2irNspffT/khET6RJF6+Prbl0h/EtF1rRLvJ72WeUfXsZj0NWYvg3sVTEVN8mxHsYb55kisYzRTpJ7dNjzBIVALAraPW2za18MOtTrVquRvGVSfDw8SEuoqqjoszn+lkKK6geXqPLl6wOgCQIrJNnOJGwmvSrlaheV3h4+uh6typuMBRTh0AzQ0yRwRroqcwJMy837GwsIVUMVY+03QbwP3Jbd9KEw8BEyLQ== To: Ajay Singh Cc: Claudiu Beznea , Kalle Valo , "David S. Miller" , Jakub Kicinski , linux-wireless@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, David Mosberger-Tang X-Entity-ID: Xg4JGAcGrJFIz2kDG9eoaQ== Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org 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 --- .../net/wireless/microchip/wilc1000/cfg80211.c | 10 +--------- drivers/net/wireless/microchip/wilc1000/netdev.c | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/drivers/net/wireless/microchip/wilc1000/cfg80211.c b/drivers/net/wireless/microchip/wilc1000/cfg80211.c index dc4bfe7be378..8d8378bafd9b 100644 --- a/drivers/net/wireless/microchip/wilc1000/cfg80211.c +++ b/drivers/net/wireless/microchip/wilc1000/cfg80211.c @@ -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); diff --git a/drivers/net/wireless/microchip/wilc1000/netdev.c b/drivers/net/wireless/microchip/wilc1000/netdev.c index e3b7629b9410..19e36bf4f36c 100644 --- a/drivers/net/wireless/microchip/wilc1000/netdev.c +++ b/drivers/net/wireless/microchip/wilc1000/netdev.c @@ -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");