From: Ivo van Doorn <ivdoorn@gmail.com>
To: "John W. Linville" <linville@tuxdriver.com>
Cc: linux-wireless@vger.kernel.org, users@rt2x00.serialmonkey.com
Subject: [PATCH 05/21] rt2x00: Introduce tasklets for interrupt handling
Date: Sun, 30 Jan 2011 13:17:52 +0100 [thread overview]
Message-ID: <201101301317.53313.IvDoorn@gmail.com> (raw)
In-Reply-To: <201101301317.30813.IvDoorn@gmail.com>
From: Helmut Schaa <helmut.schaa@googlemail.com>
No functional changes, just preparation for moving interrupt handling to
tasklets. The tasklets are disabled by default. Drivers making use of
them need to enable the tasklets when the device state is set to IRQ_ON.
Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
---
drivers/net/wireless/rt2x00/rt2x00.h | 13 +++++++++++++
drivers/net/wireless/rt2x00/rt2x00dev.c | 21 +++++++++++++++++++++
2 files changed, 34 insertions(+), 0 deletions(-)
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
index 985982b..6965131 100644
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -520,6 +520,10 @@ struct rt2x00lib_ops {
* TX status tasklet handler.
*/
void (*txstatus_tasklet) (unsigned long data);
+ void (*pretbtt_tasklet) (unsigned long data);
+ void (*tbtt_tasklet) (unsigned long data);
+ void (*rxdone_tasklet) (unsigned long data);
+ void (*autowake_tasklet) (unsigned long data);
/*
* Device init handlers.
@@ -905,6 +909,15 @@ struct rt2x00_dev {
* Tasklet for processing tx status reports (rt2800pci).
*/
struct tasklet_struct txstatus_tasklet;
+ struct tasklet_struct pretbtt_tasklet;
+ struct tasklet_struct tbtt_tasklet;
+ struct tasklet_struct rxdone_tasklet;
+ struct tasklet_struct autowake_tasklet;
+
+ /*
+ * Protect the interrupt mask register.
+ */
+ spinlock_t irqmask_lock;
};
/*
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
index 50b379a..7d4dece 100644
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -831,6 +831,26 @@ static int rt2x00lib_probe_hw(struct rt2x00_dev *rt2x00dev)
}
/*
+ * Initialize tasklets if used by the driver. Tasklets are
+ * disabled until the interrupts are turned on. The driver
+ * has to handle that.
+ */
+#define RT2X00_TASKLET_INIT(taskletname) \
+ if (rt2x00dev->ops->lib->taskletname) { \
+ tasklet_init(&rt2x00dev->taskletname, \
+ rt2x00dev->ops->lib->taskletname, \
+ (unsigned long)rt2x00dev); \
+ tasklet_disable(&rt2x00dev->taskletname); \
+ }
+
+ RT2X00_TASKLET_INIT(pretbtt_tasklet);
+ RT2X00_TASKLET_INIT(tbtt_tasklet);
+ RT2X00_TASKLET_INIT(rxdone_tasklet);
+ RT2X00_TASKLET_INIT(autowake_tasklet);
+
+#undef RT2X00_TASKLET_INIT
+
+ /*
* Register HW.
*/
status = ieee80211_register_hw(rt2x00dev->hw);
@@ -958,6 +978,7 @@ int rt2x00lib_probe_dev(struct rt2x00_dev *rt2x00dev)
{
int retval = -ENOMEM;
+ spin_lock_init(&rt2x00dev->irqmask_lock);
mutex_init(&rt2x00dev->csr_mutex);
set_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags);
--
1.7.2.3
next prev parent reply other threads:[~2011-01-30 12:24 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-30 12:16 [PATCH 01/21] rt2x00: Refactor beacon code to make use of start- and stop_queue Ivo van Doorn
2011-01-30 12:16 ` [PATCH 02/21] rt2x00: Introduce beacon_update_locked that requires caller locking Ivo van Doorn
2011-01-30 12:16 ` [PATCH 03/21] rt2x00: Limit beacon updates in bss_info_changed to USB devices Ivo van Doorn
2011-01-30 12:17 ` [PATCH 04/21] rt2x00: Make periodic beacon updates for PCI devices atomic Ivo van Doorn
2011-01-30 12:17 ` Ivo van Doorn [this message]
2011-01-30 12:18 ` [PATCH 06/21] rt2x00: Disable txstatus tasklet by default Ivo van Doorn
2011-01-30 12:18 ` [PATCH 07/21] rt2x00: Convert rt2800pci to use tasklets Ivo van Doorn
2011-01-30 12:19 ` [PATCH 08/21] rt2x00: Convert rt61pci " Ivo van Doorn
2011-01-30 12:19 ` [PATCH 09/21] rt2x00: Convert rt2500pci interrupt handling " Ivo van Doorn
2011-01-30 12:20 ` [PATCH 10/21] rt2x00: Convert rt2400pci " Ivo van Doorn
2011-01-30 12:20 ` [PATCH 11/21] rt2x00: Remove interrupt thread registration Ivo van Doorn
2011-01-30 12:20 ` [PATCH 12/21] rt2x00: Remove STATE_RADIO_IRQ_OFF_ISR and STATE_RADIO_IRQ_ON_ISR Ivo van Doorn
2011-01-30 12:21 ` [PATCH 13/21] rt2x00: Correct initial value of US_CYC_CNT register for pcie interface Ivo van Doorn
2011-01-30 12:21 ` [PATCH 14/21] rt2x00: Update MAINTAINERS Ivo van Doorn
2011-01-30 12:22 ` [PATCH 15/21] Trivial typo fix in comment Ivo van Doorn
2011-01-30 12:22 ` [PATCH 16/21] rt2x00: trivial: add \n to WARNING message Ivo van Doorn
2011-01-30 12:22 ` [PATCH 17/21] rt2x00: Fix WPA TKIP Michael MIC failures Ivo van Doorn
2011-01-30 12:23 ` [PATCH 18/21] rt2x00: Copy the MAC address to the WCID entry properly Ivo van Doorn
2011-01-30 12:23 ` [PATCH 19/21] rt2x00: Fix FIXME comments in rt61pci and rt73usb on Michael MIC Ivo van Doorn
2011-01-30 12:23 ` [PATCH 20/21] rt2x00: Kill all tasklets during device removal Ivo van Doorn
2011-01-30 12:24 ` [PATCH 21/21] rt2x00: Move TX/RX work into dedicated workqueue Ivo van Doorn
2011-02-17 18:16 ` [PATCH 17/21] rt2x00: Fix WPA TKIP Michael MIC failures Rafał Miłecki
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=201101301317.53313.IvDoorn@gmail.com \
--to=ivdoorn@gmail.com \
--cc=linux-wireless@vger.kernel.org \
--cc=linville@tuxdriver.com \
--cc=users@rt2x00.serialmonkey.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).