From: Joshua Roys <Joshua.Roys@gtri.gatech.edu>
To: <linux-wireless@vger.kernel.org>
Cc: <Larry.Finger@lwfinger.net>
Subject: [PATCH 1/9] rtlwifi: avoid race registering with mac80211
Date: Thu, 3 May 2012 01:10:17 -0400 [thread overview]
Message-ID: <4FA21339.8060407@gtri.gatech.edu> (raw)
In-Reply-To: <4FA212D9.5020602@gtri.gatech.edu>
[-- Attachment #1: Type: text/plain, Size: 1 bytes --]
[-- Attachment #2: 0001-rtlwifi-avoid-race-registering-with-mac80211.patch --]
[-- Type: text/x-patch, Size: 3359 bytes --]
>From 3511cdf6c7d4388a21a4d36da423258e73a963b6 Mon Sep 17 00:00:00 2001
From: Joshua Roys <Joshua.Roys@gtri.gatech.edu>
Date: Wed, 2 May 2012 23:48:21 -0400
Subject: [PATCH 1/9] rtlwifi: avoid race registering with mac80211
Move the ieee80211_register_hw call out of the firmware callback. If the
firmware is cached in memory, the callback could be called before
rtl_init_core which configures the mac80211 bits.
Signed-off-by: Joshua Roys <Joshua.Roys@gtri.gatech.edu>
---
drivers/net/wireless/rtlwifi/base.c | 9 +++++++++
drivers/net/wireless/rtlwifi/core.c | 9 ---------
drivers/net/wireless/rtlwifi/rtl8192se/sw.c | 9 ---------
3 files changed, 9 insertions(+), 18 deletions(-)
diff --git a/drivers/net/wireless/rtlwifi/base.c b/drivers/net/wireless/rtlwifi/base.c
index e54488d..a08b408 100644
--- a/drivers/net/wireless/rtlwifi/base.c
+++ b/drivers/net/wireless/rtlwifi/base.c
@@ -421,11 +421,20 @@ int rtl_init_core(struct ieee80211_hw *hw)
{
struct rtl_priv *rtlpriv = rtl_priv(hw);
struct rtl_mac *rtlmac = rtl_mac(rtl_priv(hw));
+ int err;
/* <1> init mac80211 */
_rtl_init_mac80211(hw);
rtlmac->hw = hw;
+ err = ieee80211_register_hw(hw);
+ if (err) {
+ RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG,
+ "Can't register mac80211 hw\n");
+ return 1;
+ }
+ rtlpriv->mac80211.mac80211_registered = 1;
+
/* <2> rate control register */
hw->rate_control_algorithm = "rtl_rc";
diff --git a/drivers/net/wireless/rtlwifi/core.c b/drivers/net/wireless/rtlwifi/core.c
index 278e9f9..5f62b9d 100644
--- a/drivers/net/wireless/rtlwifi/core.c
+++ b/drivers/net/wireless/rtlwifi/core.c
@@ -40,7 +40,6 @@ void rtl_fw_cb(const struct firmware *firmware, void *context)
{
struct ieee80211_hw *hw = context;
struct rtl_priv *rtlpriv = rtl_priv(hw);
- int err;
RT_TRACE(rtlpriv, COMP_ERR, DBG_LOUD,
"Firmware callback routine entered!\n");
@@ -60,14 +59,6 @@ void rtl_fw_cb(const struct firmware *firmware, void *context)
rtlpriv->rtlhal.fwsize = firmware->size;
release_firmware(firmware);
- err = ieee80211_register_hw(hw);
- if (err) {
- RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG,
- "Can't register mac80211 hw\n");
- return;
- } else {
- rtlpriv->mac80211.mac80211_registered = 1;
- }
set_bit(RTL_STATUS_INTERFACE_START, &rtlpriv->status);
/*init rfkill */
diff --git a/drivers/net/wireless/rtlwifi/rtl8192se/sw.c b/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
index f1b3600..9739e24 100644
--- a/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
@@ -95,7 +95,6 @@ static void rtl92se_fw_cb(const struct firmware *firmware, void *context)
struct rtl_priv *rtlpriv = rtl_priv(hw);
struct rtl_pci *rtlpci = rtl_pcidev(pcipriv);
struct rt_firmware *pfirmware = NULL;
- int err;
RT_TRACE(rtlpriv, COMP_ERR, DBG_LOUD,
"Firmware callback routine entered!\n");
@@ -117,14 +116,6 @@ static void rtl92se_fw_cb(const struct firmware *firmware, void *context)
pfirmware->sz_fw_tmpbufferlen = firmware->size;
release_firmware(firmware);
- err = ieee80211_register_hw(hw);
- if (err) {
- RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG,
- "Can't register mac80211 hw\n");
- return;
- } else {
- rtlpriv->mac80211.mac80211_registered = 1;
- }
rtlpci->irq_alloc = 1;
set_bit(RTL_STATUS_INTERFACE_START, &rtlpriv->status);
--
1.7.7.6
next prev parent reply other threads:[~2012-05-03 5:10 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-03 5:08 [WIP] rtlwifi: rtl8192su subdriver Joshua Roys
2012-05-03 5:10 ` Joshua Roys [this message]
2012-05-03 17:10 ` [PATCH 1/9] rtlwifi: avoid race registering with mac80211 Larry Finger
2012-05-03 17:21 ` Joshua Roys
2012-05-03 18:55 ` Larry Finger
2012-05-03 5:10 ` [PATCH 2/9] rtlwifi: don't pass a null pointer to fill_tx_desc Joshua Roys
2012-05-03 5:11 ` [PATCH 3/9] rtlwifi: fix typo Joshua Roys
2012-05-03 5:11 ` [PATCH 4/9] rtlwifi: fix the selection of the bulk in endpoint Joshua Roys
2012-05-03 16:07 ` Larry Finger
2012-05-03 16:47 ` Joshua Roys
2012-05-03 5:12 ` [PATCH 5/9] rtlwifi: check for all 8192Sx-family cards for efuse operations Joshua Roys
2012-05-03 5:12 ` [PATCH 6/9] rtlwifi: add short circuit in the receive path Joshua Roys
2012-05-03 5:13 ` [PATCH 7/9] rtlwifi: fail rtl_usb_start if any bulk in urbs fail Joshua Roys
2012-05-03 5:13 ` [PATCH 8/9] rtlwifi: ugly hack to enable feature disparity between subdrivers Joshua Roys
2012-05-03 5:15 ` [PATCH 9/9] [WIP] rtlwifi: add rtl8192su subdriver Joshua Roys
2012-05-08 2:18 ` [WIP v2] rtlwifi: " Joshua Roys
2012-05-08 2:18 ` [PATCH 1/9] rtlwifi: don't pass a null pointer to fill_tx_desc Joshua Roys
2012-05-08 2:18 ` [PATCH 2/9] rtlwifi: fix typo Joshua Roys
2012-05-08 2:18 ` [PATCH 3/9] rtlwifi: fix the selection of the bulk in endpoint Joshua Roys
2012-05-08 2:18 ` [PATCH 4/9] rtlwifi: check for all 8192Sx-family cards for efuse operations Joshua Roys
2012-05-08 2:18 ` [PATCH 5/9] rtlwifi: add short circuit in the receive path Joshua Roys
2012-05-08 2:18 ` [PATCH 6/9] rtlwifi: fail rtl_usb_start if any bulk in urbs fail Joshua Roys
2012-05-08 2:18 ` [PATCH 7/9] rtlwifi: mimic rtl_pci_stop and disable LEDs Joshua Roys
2012-05-08 2:18 ` [PATCH 8/9] rtlwifi: ugly hack to enable feature disparity between subdrivers Joshua Roys
2012-05-08 2:18 ` [PATCH 9/9] rtlwifi: add rtl8192su subdriver Joshua Roys
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4FA21339.8060407@gtri.gatech.edu \
--to=joshua.roys@gtri.gatech.edu \
--cc=Larry.Finger@lwfinger.net \
--cc=linux-wireless@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.