diff options
author | David Kilroy <kilroyd@gmail.com> | 2008-08-21 18:28:04 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-08-22 19:28:06 -0400 |
commit | 31afcef385bb8bf528c6fbe05b359af9f456f02a (patch) | |
tree | c6032f5f81c250cf02bbb6d544bfa9866c5cfc67 /drivers/net/wireless/orinoco.h | |
parent | 06009fda9fde1b97074ab3d932d0468396bf5d10 (diff) |
orinoco: Process bulk of receive interrupt in a tasklet
Read the packet data off the hardware and straight into an skb in the
interrupt. We have to do this in case we don't process the tasklet in
time.
Signed-off-by: David Kilroy <kilroyd@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/orinoco.h')
-rw-r--r-- | drivers/net/wireless/orinoco.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/net/wireless/orinoco.h b/drivers/net/wireless/orinoco.h index bfab88f51362..e0c9be3daa30 100644 --- a/drivers/net/wireless/orinoco.h +++ b/drivers/net/wireless/orinoco.h | |||
@@ -9,6 +9,7 @@ | |||
9 | 9 | ||
10 | #define DRIVER_VERSION "0.15" | 10 | #define DRIVER_VERSION "0.15" |
11 | 11 | ||
12 | #include <linux/interrupt.h> | ||
12 | #include <linux/netdevice.h> | 13 | #include <linux/netdevice.h> |
13 | #include <linux/wireless.h> | 14 | #include <linux/wireless.h> |
14 | #include <net/iw_handler.h> | 15 | #include <net/iw_handler.h> |
@@ -57,6 +58,14 @@ struct xbss_element { | |||
57 | struct list_head list; | 58 | struct list_head list; |
58 | }; | 59 | }; |
59 | 60 | ||
61 | struct hermes_rx_descriptor; | ||
62 | |||
63 | struct orinoco_rx_data { | ||
64 | struct hermes_rx_descriptor *desc; | ||
65 | struct sk_buff *skb; | ||
66 | struct list_head list; | ||
67 | }; | ||
68 | |||
60 | struct orinoco_private { | 69 | struct orinoco_private { |
61 | void *card; /* Pointer to card dependent structure */ | 70 | void *card; /* Pointer to card dependent structure */ |
62 | struct device *dev; | 71 | struct device *dev; |
@@ -68,6 +77,11 @@ struct orinoco_private { | |||
68 | int hw_unavailable; | 77 | int hw_unavailable; |
69 | struct work_struct reset_work; | 78 | struct work_struct reset_work; |
70 | 79 | ||
80 | /* Interrupt tasklets */ | ||
81 | struct tasklet_struct rx_tasklet; | ||
82 | struct list_head rx_list; | ||
83 | struct orinoco_rx_data *rx_data; | ||
84 | |||
71 | /* driver state */ | 85 | /* driver state */ |
72 | int open; | 86 | int open; |
73 | u16 last_linkstatus; | 87 | u16 last_linkstatus; |