aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00/rt2800lib.c
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2013-08-22 14:53:21 -0400
committerJohn W. Linville <linville@tuxdriver.com>2013-08-26 14:09:01 -0400
commit21c6af6b69b609b7934caaccda1b4535dceb402c (patch)
treebd66f3e66a86478d2940c205196d424139cd56d9 /drivers/net/wireless/rt2x00/rt2800lib.c
parent20c7d42a5005938ea6734ee0463f2031d843878f (diff)
rt2x00: rt2800lib: add rt2800_hw_beacon_base helper
The HW_BEACON_BASE() macro returns the base address of a given beacon, however the returned values are not usable on all chipsets. On devices which have selectable shared memory parts, some beacon may be located in the high part of the shared memory. Instead of extending the already complicated macro, add a new helper function and use that to get the base address of a given beacon. The actual patch contains no functional changes, the helper function will be extended in a further patch to handle different chipsets' requirements. Signed-off-by: Gabor Juhos <juhosg@openwrt.org> Acked-by: Helmut Schaa <helmut.schaa@googlemail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2800lib.c')
-rw-r--r--drivers/net/wireless/rt2x00/rt2800lib.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
index aa6b6b022547..38606e2f8a52 100644
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -940,6 +940,12 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi)
940} 940}
941EXPORT_SYMBOL_GPL(rt2800_txdone_entry); 941EXPORT_SYMBOL_GPL(rt2800_txdone_entry);
942 942
943static unsigned int rt2800_hw_beacon_base(struct rt2x00_dev *rt2x00dev,
944 unsigned int index)
945{
946 return HW_BEACON_BASE(index);
947}
948
943void rt2800_write_beacon(struct queue_entry *entry, struct txentry_desc *txdesc) 949void rt2800_write_beacon(struct queue_entry *entry, struct txentry_desc *txdesc)
944{ 950{
945 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev; 951 struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev;
@@ -992,7 +998,8 @@ void rt2800_write_beacon(struct queue_entry *entry, struct txentry_desc *txdesc)
992 return; 998 return;
993 } 999 }
994 1000
995 beacon_base = HW_BEACON_BASE(entry->entry_idx); 1001 beacon_base = rt2800_hw_beacon_base(rt2x00dev, entry->entry_idx);
1002
996 rt2800_register_multiwrite(rt2x00dev, beacon_base, entry->skb->data, 1003 rt2800_register_multiwrite(rt2x00dev, beacon_base, entry->skb->data,
997 entry->skb->len + padding_len); 1004 entry->skb->len + padding_len);
998 1005
@@ -1017,7 +1024,7 @@ static inline void rt2800_clear_beacon_register(struct rt2x00_dev *rt2x00dev,
1017 const int txwi_desc_size = rt2x00dev->bcn->winfo_size; 1024 const int txwi_desc_size = rt2x00dev->bcn->winfo_size;
1018 unsigned int beacon_base; 1025 unsigned int beacon_base;
1019 1026
1020 beacon_base = HW_BEACON_BASE(index); 1027 beacon_base = rt2800_hw_beacon_base(rt2x00dev, index);
1021 1028
1022 /* 1029 /*
1023 * For the Beacon base registers we only need to clear 1030 * For the Beacon base registers we only need to clear