carl9170 firmware: initial WoWLAN support
[carl9170fw.git] / carlfw / include / wl.h
index 8c06f6a12ca0673bcd8a016bfd15723df125bb98..7152de0eff8515ab29567bb89cd3e623f116d4d2 100644 (file)
@@ -6,7 +6,7 @@
  * Copyright (c) 2000-2005 ZyDAS Technology Corporation
  * Copyright (c) 2007-2009 Atheros Communications, Inc.
  * Copyright   2009    Johannes Berg <johannes@sipsolutions.net>
- * Copyright 2009, 2010 Christian Lamparter <chunkeey@googlemail.com>
+ * Copyright 2009-2011 Christian Lamparter <chunkeey@googlemail.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -52,22 +52,15 @@ static inline __inline struct dma_desc *get_wlan_txq_addr(const unsigned int q)
        return getp(AR9170_MAC_REG_DMA_TXQ_CURR_ADDR + (q << 3));
 }
 
-static inline __inline void _wlan_trigger(const uint32_t queue_bit)
+static inline __inline struct dma_desc *get_wlan_txq_last_addr(const unsigned int q)
 {
-       set(AR9170_MAC_REG_DMA_TRIGGER, queue_bit);
+       return getp(AR9170_MAC_REG_DMA_TXQ_LAST_ADDR + (q << 2));
 }
 
-#ifdef CONFIG_CARL9170FW_DELAYED_TX
 static inline __inline void wlan_trigger(const uint32_t queue_bit)
 {
-       fw.wlan.tx_trigger |= queue_bit;
-}
-#else
-static inline __inline void wlan_trigger(const uint32_t queue_bit)
-{
-       _wlan_trigger(queue_bit);
+       set(AR9170_MAC_REG_DMA_TRIGGER, queue_bit);
 }
-#endif /* CONFIG_CARL9170FW_DELAYED_TX */
 
 static inline __inline uint8_t ar9170_get_rx_macstatus_status(struct dma_desc *desc)
 {
@@ -222,6 +215,11 @@ static inline __inline struct carl9170_tx_superframe *get_super(struct dma_desc
                            f);
 }
 
+static inline __inline struct carl9170_tx_superframe *__get_super(struct dma_desc *desc)
+{
+       return DESC_PAYLOAD(desc);
+}
+
 static inline __inline void hide_super(struct dma_desc *desc)
 {
        desc->dataAddr = (uint8_t *)
@@ -261,18 +259,14 @@ void wlan_timer(void);
 void handle_wlan(void);
 
 void wlan_cab_flush_queue(const unsigned int vif);
-void wlan_cab_modify_dtim_beacon(const unsigned int vif,
-                                const unsigned int bcn_addr,
-                                const unsigned int bcn_len);
+void wlan_modify_beacon(const unsigned int vif,
+                       const unsigned int bcn_addr,
+                       const unsigned int bcn_len);
 
-static inline void wlan_prepare_wol(void)
-{
-       /* set filter policy to: discard everything */
-       fw.wlan.rx_filter = CARL9170_RX_FILTER_EVERYTHING;
+void wlan_tx_complete(struct carl9170_tx_superframe *super,
+                      bool txs);
 
-       /* reenable rx dma */
-       wlan_trigger(AR9170_DMA_TRIGGER_RXQ);
-}
+void wlan_prepare_wol(void);
 
 static inline void __check_wlantx(void)
 {