diff options
author | Ivo van Doorn <ivdoorn@gmail.com> | 2010-08-23 13:53:39 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-08-25 14:34:54 -0400 |
commit | 933314582ee5db00123683cf4c4d713ec9add306 (patch) | |
tree | 6d0be156f19ad0f4b78da5577f56995beb43a15a /drivers/net/wireless/rt2x00/rt61pci.c | |
parent | 18c121d7558a550e8e48956fbd389759a850ab53 (diff) |
rt2x00: Simplify arguments to rt2x00 driver callback functions
write_tx_desc shouldn't pass a rt2x00dev and skb pointer,
instead it should use the same format as other TX frame
callback functions, which is passing the data_entry pointer
which contains all the information which is needed to work
on a TX frame.
Most callers of the kick_tx_queue and kill_tx_queue already
have the data_queue pointer, so rather then sending the QID
with the given function, when the driver requests a new
pointer to the data_queue, it is more efficient to just
send the data_queue pointer directly.
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt61pci.c')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt61pci.c | 39 |
1 files changed, 19 insertions, 20 deletions
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c index cff503faac6..ae4698e1872 100644 --- a/drivers/net/wireless/rt2x00/rt61pci.c +++ b/drivers/net/wireless/rt2x00/rt61pci.c | |||
@@ -1766,12 +1766,11 @@ static int rt61pci_set_device_state(struct rt2x00_dev *rt2x00dev, | |||
1766 | /* | 1766 | /* |
1767 | * TX descriptor initialization | 1767 | * TX descriptor initialization |
1768 | */ | 1768 | */ |
1769 | static void rt61pci_write_tx_desc(struct rt2x00_dev *rt2x00dev, | 1769 | static void rt61pci_write_tx_desc(struct queue_entry *entry, |
1770 | struct sk_buff *skb, | ||
1771 | struct txentry_desc *txdesc) | 1770 | struct txentry_desc *txdesc) |
1772 | { | 1771 | { |
1773 | struct skb_frame_desc *skbdesc = get_skb_frame_desc(skb); | 1772 | struct skb_frame_desc *skbdesc = get_skb_frame_desc(entry->skb); |
1774 | struct queue_entry_priv_pci *entry_priv = skbdesc->entry->priv_data; | 1773 | struct queue_entry_priv_pci *entry_priv = entry->priv_data; |
1775 | __le32 *txd = entry_priv->desc; | 1774 | __le32 *txd = entry_priv->desc; |
1776 | u32 word; | 1775 | u32 word; |
1777 | 1776 | ||
@@ -1802,11 +1801,11 @@ static void rt61pci_write_tx_desc(struct rt2x00_dev *rt2x00dev, | |||
1802 | } | 1801 | } |
1803 | 1802 | ||
1804 | rt2x00_desc_read(txd, 5, &word); | 1803 | rt2x00_desc_read(txd, 5, &word); |
1805 | rt2x00_set_field32(&word, TXD_W5_PID_TYPE, skbdesc->entry->queue->qid); | 1804 | rt2x00_set_field32(&word, TXD_W5_PID_TYPE, entry->queue->qid); |
1806 | rt2x00_set_field32(&word, TXD_W5_PID_SUBTYPE, | 1805 | rt2x00_set_field32(&word, TXD_W5_PID_SUBTYPE, |
1807 | skbdesc->entry->entry_idx); | 1806 | skbdesc->entry->entry_idx); |
1808 | rt2x00_set_field32(&word, TXD_W5_TX_POWER, | 1807 | rt2x00_set_field32(&word, TXD_W5_TX_POWER, |
1809 | TXPOWER_TO_DEV(rt2x00dev->tx_power)); | 1808 | TXPOWER_TO_DEV(entry->queue->rt2x00dev->tx_power)); |
1810 | rt2x00_set_field32(&word, TXD_W5_WAITING_DMA_DONE_INT, 1); | 1809 | rt2x00_set_field32(&word, TXD_W5_WAITING_DMA_DONE_INT, 1); |
1811 | rt2x00_desc_write(txd, 5, word); | 1810 | rt2x00_desc_write(txd, 5, word); |
1812 | 1811 | ||
@@ -1882,7 +1881,7 @@ static void rt61pci_write_beacon(struct queue_entry *entry, | |||
1882 | /* | 1881 | /* |
1883 | * Write the TX descriptor for the beacon. | 1882 | * Write the TX descriptor for the beacon. |
1884 | */ | 1883 | */ |
1885 | rt61pci_write_tx_desc(rt2x00dev, entry->skb, txdesc); | 1884 | rt61pci_write_tx_desc(entry, txdesc); |
1886 | 1885 | ||
1887 | /* | 1886 | /* |
1888 | * Dump beacon to userspace through debugfs. | 1887 | * Dump beacon to userspace through debugfs. |
@@ -1918,34 +1917,34 @@ static void rt61pci_write_beacon(struct queue_entry *entry, | |||
1918 | entry->skb = NULL; | 1917 | entry->skb = NULL; |
1919 | } | 1918 | } |
1920 | 1919 | ||
1921 | static void rt61pci_kick_tx_queue(struct rt2x00_dev *rt2x00dev, | 1920 | static void rt61pci_kick_tx_queue(struct data_queue *queue) |
1922 | const enum data_queue_qid queue) | ||
1923 | { | 1921 | { |
1922 | struct rt2x00_dev *rt2x00dev = queue->rt2x00dev; | ||
1924 | u32 reg; | 1923 | u32 reg; |
1925 | 1924 | ||
1926 | rt2x00pci_register_read(rt2x00dev, TX_CNTL_CSR, ®); | 1925 | rt2x00pci_register_read(rt2x00dev, TX_CNTL_CSR, ®); |
1927 | rt2x00_set_field32(®, TX_CNTL_CSR_KICK_TX_AC0, (queue == QID_AC_BE)); | 1926 | rt2x00_set_field32(®, TX_CNTL_CSR_KICK_TX_AC0, (queue->qid == QID_AC_BE)); |
1928 | rt2x00_set_field32(®, TX_CNTL_CSR_KICK_TX_AC1, (queue == QID_AC_BK)); | 1927 | rt2x00_set_field32(®, TX_CNTL_CSR_KICK_TX_AC1, (queue->qid == QID_AC_BK)); |
1929 | rt2x00_set_field32(®, TX_CNTL_CSR_KICK_TX_AC2, (queue == QID_AC_VI)); | 1928 | rt2x00_set_field32(®, TX_CNTL_CSR_KICK_TX_AC2, (queue->qid == QID_AC_VI)); |
1930 | rt2x00_set_field32(®, TX_CNTL_CSR_KICK_TX_AC3, (queue == QID_AC_VO)); | 1929 | rt2x00_set_field32(®, TX_CNTL_CSR_KICK_TX_AC3, (queue->qid == QID_AC_VO)); |
1931 | rt2x00pci_register_write(rt2x00dev, TX_CNTL_CSR, reg); | 1930 | rt2x00pci_register_write(rt2x00dev, TX_CNTL_CSR, reg); |
1932 | } | 1931 | } |
1933 | 1932 | ||
1934 | static void rt61pci_kill_tx_queue(struct rt2x00_dev *rt2x00dev, | 1933 | static void rt61pci_kill_tx_queue(struct data_queue *queue) |
1935 | const enum data_queue_qid qid) | ||
1936 | { | 1934 | { |
1935 | struct rt2x00_dev *rt2x00dev = queue->rt2x00dev; | ||
1937 | u32 reg; | 1936 | u32 reg; |
1938 | 1937 | ||
1939 | if (qid == QID_BEACON) { | 1938 | if (queue->qid == QID_BEACON) { |
1940 | rt2x00pci_register_write(rt2x00dev, TXRX_CSR9, 0); | 1939 | rt2x00pci_register_write(rt2x00dev, TXRX_CSR9, 0); |
1941 | return; | 1940 | return; |
1942 | } | 1941 | } |
1943 | 1942 | ||
1944 | rt2x00pci_register_read(rt2x00dev, TX_CNTL_CSR, ®); | 1943 | rt2x00pci_register_read(rt2x00dev, TX_CNTL_CSR, ®); |
1945 | rt2x00_set_field32(®, TX_CNTL_CSR_ABORT_TX_AC0, (qid == QID_AC_BE)); | 1944 | rt2x00_set_field32(®, TX_CNTL_CSR_ABORT_TX_AC0, (queue->qid == QID_AC_BE)); |
1946 | rt2x00_set_field32(®, TX_CNTL_CSR_ABORT_TX_AC1, (qid == QID_AC_BK)); | 1945 | rt2x00_set_field32(®, TX_CNTL_CSR_ABORT_TX_AC1, (queue->qid == QID_AC_BK)); |
1947 | rt2x00_set_field32(®, TX_CNTL_CSR_ABORT_TX_AC2, (qid == QID_AC_VI)); | 1946 | rt2x00_set_field32(®, TX_CNTL_CSR_ABORT_TX_AC2, (queue->qid == QID_AC_VI)); |
1948 | rt2x00_set_field32(®, TX_CNTL_CSR_ABORT_TX_AC3, (qid == QID_AC_VO)); | 1947 | rt2x00_set_field32(®, TX_CNTL_CSR_ABORT_TX_AC3, (queue->qid == QID_AC_VO)); |
1949 | rt2x00pci_register_write(rt2x00dev, TX_CNTL_CSR, reg); | 1948 | rt2x00pci_register_write(rt2x00dev, TX_CNTL_CSR, reg); |
1950 | } | 1949 | } |
1951 | 1950 | ||