diff options
| author | Gertjan van Wingerde <gwingerde@gmail.com> | 2011-03-03 19:46:09 +0100 | 
|---|---|---|
| committer | John W. Linville <linville@tuxdriver.com> | 2011-03-04 14:06:49 -0500 | 
| commit | e74df4a7562da56a7e4dbf41ff167b2f44e84a50 (patch) | |
| tree | a845c66206b7a7cb3425ae1b6c39608aaaeafabb /drivers/net/wireless/rt2x00/rt2x00queue.c | |
| parent | 3736fe5808577f9d3a31a565ef4e78ceae250c98 (diff) | |
| download | olio-linux-3.10-e74df4a7562da56a7e4dbf41ff167b2f44e84a50.tar.xz olio-linux-3.10-e74df4a7562da56a7e4dbf41ff167b2f44e84a50.zip  | |
rt2x00: Don't treat ATIM queue as second beacon queue.
Current code for the atim queue is strange, as it is considered in the
rt2x00_dev structure as a second beacon queue.
Normalize this by letting the atim queue have its own struct data_queue
pointer in the rt2x00_dev structure.
Signed-off-by: Gertjan van Wingerde <gwingerde@gmail.com>
Acked-by: Helmut Schaa <helmut.schaa@googlemail.com>
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/rt2x00queue.c')
| -rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00queue.c | 19 | 
1 files changed, 8 insertions, 11 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c index f06b5c79749..fcaacc6dc0f 100644 --- a/drivers/net/wireless/rt2x00/rt2x00queue.c +++ b/drivers/net/wireless/rt2x00/rt2x00queue.c @@ -708,21 +708,17 @@ EXPORT_SYMBOL_GPL(rt2x00queue_for_each_entry);  struct data_queue *rt2x00queue_get_queue(struct rt2x00_dev *rt2x00dev,  					 const enum data_queue_qid queue)  { -	int atim = test_bit(DRIVER_REQUIRE_ATIM_QUEUE, &rt2x00dev->flags); -  	if (queue == QID_RX)  		return rt2x00dev->rx;  	if (queue < rt2x00dev->ops->tx_queues && rt2x00dev->tx)  		return &rt2x00dev->tx[queue]; -	if (!rt2x00dev->bcn) -		return NULL; -  	if (queue == QID_BEACON) -		return &rt2x00dev->bcn[0]; -	else if (queue == QID_ATIM && atim) -		return &rt2x00dev->bcn[1]; +		return rt2x00dev->bcn; + +	if (queue == QID_ATIM) +		return rt2x00dev->atim;  	return NULL;  } @@ -1103,7 +1099,7 @@ int rt2x00queue_initialize(struct rt2x00_dev *rt2x00dev)  		goto exit;  	if (test_bit(DRIVER_REQUIRE_ATIM_QUEUE, &rt2x00dev->flags)) { -		status = rt2x00queue_alloc_entries(&rt2x00dev->bcn[1], +		status = rt2x00queue_alloc_entries(rt2x00dev->atim,  						   rt2x00dev->ops->atim);  		if (status)  			goto exit; @@ -1177,6 +1173,7 @@ int rt2x00queue_allocate(struct rt2x00_dev *rt2x00dev)  	rt2x00dev->rx = queue;  	rt2x00dev->tx = &queue[1];  	rt2x00dev->bcn = &queue[1 + rt2x00dev->ops->tx_queues]; +	rt2x00dev->atim = req_atim ? &queue[2 + rt2x00dev->ops->tx_queues] : NULL;  	/*  	 * Initialize queue parameters. @@ -1193,9 +1190,9 @@ int rt2x00queue_allocate(struct rt2x00_dev *rt2x00dev)  	tx_queue_for_each(rt2x00dev, queue)  		rt2x00queue_init(rt2x00dev, queue, qid++); -	rt2x00queue_init(rt2x00dev, &rt2x00dev->bcn[0], QID_BEACON); +	rt2x00queue_init(rt2x00dev, rt2x00dev->bcn, QID_BEACON);  	if (req_atim) -		rt2x00queue_init(rt2x00dev, &rt2x00dev->bcn[1], QID_ATIM); +		rt2x00queue_init(rt2x00dev, rt2x00dev->atim, QID_ATIM);  	return 0;  }  |