From: Ivo van Doorn <ivdoorn@gmail.com>
To: "John W. Linville" <linville@tuxdriver.com>
Cc: linux-wireless@vger.kernel.org, rt2400-devel@lists.sourceforge.net
Subject: [PATCH 04/12] rt2x00: Store queue idx and entry idx in data_ring and data_entry
Date: Sun, 6 Jan 2008 23:39:25 +0100 [thread overview]
Message-ID: <200801062339.25255.IvDoorn@gmail.com> (raw)
In-Reply-To: <200801062337.35904.IvDoorn@gmail.com>
Store the queue idx inside structure data_ring
Store the entry idx inside structure data_entry
This saves us a few calls to ARRAY_INDEX() which is now unused.
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
---
drivers/net/wireless/rt2x00/rt2x00.h | 6 ------
drivers/net/wireless/rt2x00/rt2x00debug.c | 8 ++------
drivers/net/wireless/rt2x00/rt2x00dev.c | 4 ++++
drivers/net/wireless/rt2x00/rt2x00ring.h | 12 ++++++++++++
drivers/net/wireless/rt2x00/rt61pci.c | 6 ++++--
5 files changed, 22 insertions(+), 14 deletions(-)
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
index 87c2c05..af0bf4b 100644
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -796,12 +796,6 @@ struct rt2x00_dev {
ring_loop(__entry, (__dev)->tx, ring_end(__dev))
/*
- * Compute an array index from a pointer to an element and the base pointer.
- */
-#define ARRAY_INDEX(__elem, __base) \
- ( ((char *)(__elem) - (char *)(__base)) / sizeof(*(__elem)) )
-
-/*
* Generic RF access.
* The RF is being accessed by word index.
*/
diff --git a/drivers/net/wireless/rt2x00/rt2x00debug.c b/drivers/net/wireless/rt2x00/rt2x00debug.c
index c55bf0e..b44a9f4 100644
--- a/drivers/net/wireless/rt2x00/rt2x00debug.c
+++ b/drivers/net/wireless/rt2x00/rt2x00debug.c
@@ -120,12 +120,8 @@ void rt2x00debug_dump_frame(struct rt2x00_dev *rt2x00dev,
struct sk_buff *skbcopy;
struct rt2x00dump_hdr *dump_hdr;
struct timeval timestamp;
- unsigned int ring_index;
- unsigned int entry_index;
do_gettimeofday(×tamp);
- ring_index = ARRAY_INDEX(desc->ring, rt2x00dev->rx);
- entry_index = ARRAY_INDEX(desc->entry, desc->ring->entry);
if (!test_bit(FRAME_DUMP_FILE_OPEN, &intf->frame_dump_flags))
return;
@@ -151,8 +147,8 @@ void rt2x00debug_dump_frame(struct rt2x00_dev *rt2x00dev,
dump_hdr->chip_rf = cpu_to_le16(rt2x00dev->chip.rf);
dump_hdr->chip_rev = cpu_to_le32(rt2x00dev->chip.rev);
dump_hdr->type = cpu_to_le16(desc->frame_type);
- dump_hdr->ring_index = ring_index;
- dump_hdr->entry_index = entry_index;
+ dump_hdr->ring_index = desc->ring->queue_idx;
+ dump_hdr->entry_index = desc->entry->entry_idx;
dump_hdr->timestamp_sec = cpu_to_le32(timestamp.tv_sec);
dump_hdr->timestamp_usec = cpu_to_le32(timestamp.tv_usec);
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
index a771a09..9b2bd91 100644
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -988,6 +988,7 @@ static int rt2x00lib_alloc_entries(struct data_ring *ring,
entry[i].flags = 0;
entry[i].ring = ring;
entry[i].skb = NULL;
+ entry[i].entry_idx = i;
}
ring->entry = entry;
@@ -1115,6 +1116,7 @@ exit:
static int rt2x00lib_alloc_rings(struct rt2x00_dev *rt2x00dev)
{
struct data_ring *ring;
+ unsigned int index;
/*
* We need the following rings:
@@ -1145,8 +1147,10 @@ static int rt2x00lib_alloc_rings(struct rt2x00_dev *rt2x00dev)
* cw_min: 2^5 = 32.
* cw_max: 2^10 = 1024.
*/
+ index = 0;
ring_for_each(rt2x00dev, ring) {
ring->rt2x00dev = rt2x00dev;
+ ring->queue_idx = index++;
ring->tx_params.aifs = 2;
ring->tx_params.cw_min = 5;
ring->tx_params.cw_max = 10;
diff --git a/drivers/net/wireless/rt2x00/rt2x00ring.h b/drivers/net/wireless/rt2x00/rt2x00ring.h
index 5b32f3e..e9a5648 100644
--- a/drivers/net/wireless/rt2x00/rt2x00ring.h
+++ b/drivers/net/wireless/rt2x00/rt2x00ring.h
@@ -143,6 +143,11 @@ struct data_entry {
*/
void *data_addr;
dma_addr_t data_dma;
+
+ /*
+ * Entry identification number (index).
+ */
+ unsigned int entry_idx;
};
/*
@@ -181,6 +186,13 @@ struct data_ring {
void *data_addr;
/*
+ * Queue identification number:
+ * RX: 0
+ * TX: IEEE80211_TX_*
+ */
+ unsigned int queue_idx;
+
+ /*
* Index variables.
*/
u16 index;
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c
index f5b3378..3bfc5af 100644
--- a/drivers/net/wireless/rt2x00/rt61pci.c
+++ b/drivers/net/wireless/rt2x00/rt61pci.c
@@ -1031,8 +1031,10 @@ static void rt61pci_init_txring(struct rt2x00_dev *rt2x00dev, const int queue)
rt2x00_desc_write(txd, 1, word);
rt2x00_desc_read(txd, 5, &word);
- rt2x00_set_field32(&word, TXD_W5_PID_TYPE, queue);
- rt2x00_set_field32(&word, TXD_W5_PID_SUBTYPE, i);
+ rt2x00_set_field32(&word, TXD_W5_PID_TYPE,
+ ring->queue_idx);
+ rt2x00_set_field32(&word, TXD_W5_PID_SUBTYPE,
+ ring->entry[i].entry_idx);
rt2x00_desc_write(txd, 5, word);
rt2x00_desc_read(txd, 6, &word);
--
1.5.3.7
next prev parent reply other threads:[~2008-01-06 22:39 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-06 22:37 Please pull 'upstream' branch of rt2x00 Ivo van Doorn
2008-01-06 22:38 ` [PATCH 01/12] rt2x00: Fix chipset debugfs file Ivo van Doorn
2008-01-06 22:38 ` [PATCH 02/12] rt2x00: Always call ieee80211_stop_queue() when return NETDEV_TX_BUSY Ivo van Doorn
2008-01-06 22:38 ` [PATCH 03/12] rt2x00: Only set the TBCN flag when the interface is configured to send beacons Ivo van Doorn
2008-01-06 22:39 ` Ivo van Doorn [this message]
2008-01-06 22:40 ` [PATCH 05/12] rt2x00: Move start() and stop() handlers into rt2x00lib.c Ivo van Doorn
2008-01-06 22:40 ` [PATCH 06/12] rt2x00: Put 802.11 data on 4 byte boundary Ivo van Doorn
2008-01-11 0:32 ` Johannes Berg
2008-01-11 19:51 ` Ivo van Doorn
2008-01-06 22:40 ` [PATCH 07/12] rt2x00: Move packet filter flags Ivo van Doorn
2008-01-06 22:41 ` [PATCH 08/12] rt2x00: Cleanup write_tx_desc() arguments Ivo van Doorn
2008-01-06 22:41 ` [PATCH 09/12] rt2x00: Determine MY_BSS from descriptor Ivo van Doorn
2008-01-06 22:41 ` [PATCH 10/12] rt2x00: Move init_txring and init_rxring into rt2x00lib Ivo van Doorn
2008-01-06 22:42 ` [PATCH 11/12] rt2x00: Correctly initialize data and desc pointer Ivo van Doorn
2008-01-06 22:42 ` [PATCH 12/12] rt2x00: Release rt2x00 2.0.14 Ivo van Doorn
2008-01-10 11:52 ` [Rt2400-devel] Please pull 'upstream' branch of rt2x00 Will Dyson
2008-01-10 15:46 ` John W. Linville
2008-01-10 17:29 ` Ivo van Doorn
2008-01-15 0:44 ` Will Dyson
2008-01-10 17:29 ` Ivo van Doorn
2008-01-10 20:32 ` Stefan Lippers-Hollmann
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=200801062339.25255.IvDoorn@gmail.com \
--to=ivdoorn@gmail.com \
--cc=linux-wireless@vger.kernel.org \
--cc=linville@tuxdriver.com \
--cc=rt2400-devel@lists.sourceforge.net \
/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.