aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00/rt2x00debug.c
diff options
context:
space:
mode:
authorIvo van Doorn <IvDoorn@gmail.com>2008-02-05 16:42:23 -0500
committerJohn W. Linville <linville@tuxdriver.com>2008-02-29 15:19:27 -0500
commit181d6902b6bad978d157e69479c95cc0ff213a76 (patch)
tree7a90b8a949a50bc8db6b7b5b2d76d5671fb9a89e /drivers/net/wireless/rt2x00/rt2x00debug.c
parent811aa9cad1bd927999888ab56ed9592519d2fef6 (diff)
rt2x00: Queue handling overhaul
This introduces a big queue handling overhaul, this also renames "ring" to "queues". Move queue handling into rt2x00queue.c and the matching header, use Kerneldoc to improve rt2x00 library documentation. Access to the queues is now protected under a spinlock, this to prevent race conditions which could corrupt the indexing system of the queue. Each queue entry allocates x bytes for driver/device specific data, this cleans up the queue structure significantly and improves code readability. rt2500usb no longer needs 2 entries in the beacon queue to correctly send out the guardian byte. This is now handled in the entry specific structure. rt61 and rt73 now use the correct descriptor size for beacon frames, since this data is written into the registers not the entire TXD descriptor was used but instead of a subset of it named TXINFO. Finally this also fixes numerous other bugs related to incorrect beacon handling or beacon related code. Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2x00debug.c')
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00debug.c32
1 files changed, 16 insertions, 16 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2x00debug.c b/drivers/net/wireless/rt2x00/rt2x00debug.c
index d70ce6ec8de8..4e048ac0a684 100644
--- a/drivers/net/wireless/rt2x00/rt2x00debug.c
+++ b/drivers/net/wireless/rt2x00/rt2x00debug.c
@@ -116,7 +116,7 @@ void rt2x00debug_dump_frame(struct rt2x00_dev *rt2x00dev,
116 struct sk_buff *skb) 116 struct sk_buff *skb)
117{ 117{
118 struct rt2x00debug_intf *intf = rt2x00dev->debugfs_intf; 118 struct rt2x00debug_intf *intf = rt2x00dev->debugfs_intf;
119 struct skb_desc *desc = get_skb_desc(skb); 119 struct skb_frame_desc *desc = get_skb_frame_desc(skb);
120 struct sk_buff *skbcopy; 120 struct sk_buff *skbcopy;
121 struct rt2x00dump_hdr *dump_hdr; 121 struct rt2x00dump_hdr *dump_hdr;
122 struct timeval timestamp; 122 struct timeval timestamp;
@@ -147,7 +147,7 @@ void rt2x00debug_dump_frame(struct rt2x00_dev *rt2x00dev,
147 dump_hdr->chip_rf = cpu_to_le16(rt2x00dev->chip.rf); 147 dump_hdr->chip_rf = cpu_to_le16(rt2x00dev->chip.rf);
148 dump_hdr->chip_rev = cpu_to_le32(rt2x00dev->chip.rev); 148 dump_hdr->chip_rev = cpu_to_le32(rt2x00dev->chip.rev);
149 dump_hdr->type = cpu_to_le16(desc->frame_type); 149 dump_hdr->type = cpu_to_le16(desc->frame_type);
150 dump_hdr->ring_index = desc->ring->queue_idx; 150 dump_hdr->queue_index = desc->entry->queue->qid;
151 dump_hdr->entry_index = desc->entry->entry_idx; 151 dump_hdr->entry_index = desc->entry->entry_idx;
152 dump_hdr->timestamp_sec = cpu_to_le32(timestamp.tv_sec); 152 dump_hdr->timestamp_sec = cpu_to_le32(timestamp.tv_sec);
153 dump_hdr->timestamp_usec = cpu_to_le32(timestamp.tv_usec); 153 dump_hdr->timestamp_usec = cpu_to_le32(timestamp.tv_usec);
@@ -186,7 +186,7 @@ static int rt2x00debug_file_release(struct inode *inode, struct file *file)
186 return 0; 186 return 0;
187} 187}
188 188
189static int rt2x00debug_open_ring_dump(struct inode *inode, struct file *file) 189static int rt2x00debug_open_queue_dump(struct inode *inode, struct file *file)
190{ 190{
191 struct rt2x00debug_intf *intf = inode->i_private; 191 struct rt2x00debug_intf *intf = inode->i_private;
192 int retval; 192 int retval;
@@ -203,7 +203,7 @@ static int rt2x00debug_open_ring_dump(struct inode *inode, struct file *file)
203 return 0; 203 return 0;
204} 204}
205 205
206static int rt2x00debug_release_ring_dump(struct inode *inode, struct file *file) 206static int rt2x00debug_release_queue_dump(struct inode *inode, struct file *file)
207{ 207{
208 struct rt2x00debug_intf *intf = inode->i_private; 208 struct rt2x00debug_intf *intf = inode->i_private;
209 209
@@ -214,10 +214,10 @@ static int rt2x00debug_release_ring_dump(struct inode *inode, struct file *file)
214 return rt2x00debug_file_release(inode, file); 214 return rt2x00debug_file_release(inode, file);
215} 215}
216 216
217static ssize_t rt2x00debug_read_ring_dump(struct file *file, 217static ssize_t rt2x00debug_read_queue_dump(struct file *file,
218 char __user *buf, 218 char __user *buf,
219 size_t length, 219 size_t length,
220 loff_t *offset) 220 loff_t *offset)
221{ 221{
222 struct rt2x00debug_intf *intf = file->private_data; 222 struct rt2x00debug_intf *intf = file->private_data;
223 struct sk_buff *skb; 223 struct sk_buff *skb;
@@ -248,8 +248,8 @@ exit:
248 return status; 248 return status;
249} 249}
250 250
251static unsigned int rt2x00debug_poll_ring_dump(struct file *file, 251static unsigned int rt2x00debug_poll_queue_dump(struct file *file,
252 poll_table *wait) 252 poll_table *wait)
253{ 253{
254 struct rt2x00debug_intf *intf = file->private_data; 254 struct rt2x00debug_intf *intf = file->private_data;
255 255
@@ -261,12 +261,12 @@ static unsigned int rt2x00debug_poll_ring_dump(struct file *file,
261 return 0; 261 return 0;
262} 262}
263 263
264static const struct file_operations rt2x00debug_fop_ring_dump = { 264static const struct file_operations rt2x00debug_fop_queue_dump = {
265 .owner = THIS_MODULE, 265 .owner = THIS_MODULE,
266 .read = rt2x00debug_read_ring_dump, 266 .read = rt2x00debug_read_queue_dump,
267 .poll = rt2x00debug_poll_ring_dump, 267 .poll = rt2x00debug_poll_queue_dump,
268 .open = rt2x00debug_open_ring_dump, 268 .open = rt2x00debug_open_queue_dump,
269 .release = rt2x00debug_release_ring_dump, 269 .release = rt2x00debug_release_queue_dump,
270}; 270};
271 271
272#define RT2X00DEBUGFS_OPS_READ(__name, __format, __type) \ 272#define RT2X00DEBUGFS_OPS_READ(__name, __format, __type) \
@@ -503,7 +503,7 @@ void rt2x00debug_register(struct rt2x00_dev *rt2x00dev)
503 503
504 intf->frame_dump_entry = 504 intf->frame_dump_entry =
505 debugfs_create_file("dump", S_IRUGO, intf->frame_folder, 505 debugfs_create_file("dump", S_IRUGO, intf->frame_folder,
506 intf, &rt2x00debug_fop_ring_dump); 506 intf, &rt2x00debug_fop_queue_dump);
507 if (IS_ERR(intf->frame_dump_entry)) 507 if (IS_ERR(intf->frame_dump_entry))
508 goto exit; 508 goto exit;
509 509