carl9170 firmware: move wowlan routines into separate files
[carl9170fw.git] / carlfw / include / wl.h
index e1c8bbd014ab17407847c1df3902e43aaa262787..dd5b0a88f3e4c7c376cf798391ac4e6a5e72df66 100644 (file)
@@ -42,17 +42,17 @@ static inline __inline void set_wlan_txq_dma_curr_addr(const unsigned int q, con
        set(AR9170_MAC_REG_DMA_TXQ_CURR_ADDR + (q << 3), v);
 }
 
-static inline __inline struct dma_desc *get_wlan_txq_dma_addr(const unsigned int q)
+static inline __inline volatile struct dma_desc *get_wlan_txq_dma_addr(const unsigned int q)
 {
        return getp(AR9170_MAC_REG_DMA_TXQ_ADDR + (q << 3));
 }
 
-static inline __inline struct dma_desc *get_wlan_txq_addr(const unsigned int q)
+static inline __inline volatile 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 struct dma_desc *get_wlan_txq_last_addr(const unsigned int q)
+static inline __inline volatile struct dma_desc *get_wlan_txq_last_addr(const unsigned int q)
 {
        return getp(AR9170_MAC_REG_DMA_TXQ_LAST_ADDR + (q << 2));
 }
@@ -254,7 +254,18 @@ static inline __inline __hot void read_tsf(uint32_t *tsf)
        tsf[1] = get(AR9170_MAC_REG_TSF_H);
 }
 
+/* This function will only work on uint32_t-aligned pointers! */
+static inline bool compare_ether_address(const void *_d0, const void *_d1)
+{
+       const uint32_t *d0 = _d0;
+       const uint32_t *d1 = _d1;
+
+       /* BUG_ON((unsigned long)d0 & 3 || (unsigned long)d1 & 3)) */
+       return !((d0[0] ^ d1[0]) | (unsigned short)(d0[1] ^ d1[1]));
+}
+
 void wlan_tx(struct dma_desc *desc);
+void wlan_tx_fw(struct carl9170_tx_superdesc *super, fw_desc_callback_t cb);
 void wlan_timer(void);
 void handle_wlan(void);
 
@@ -263,17 +274,8 @@ void wlan_modify_beacon(const unsigned int vif,
                        const unsigned int bcn_addr,
                        const unsigned int bcn_len);
 
-void wlan_tx_complete(struct carl9170_tx_superframe *super,
-                      bool txs);
-
-static inline void wlan_prepare_wol(void)
-{
-       /* set filter policy to: discard everything */
-       fw.wlan.rx_filter = CARL9170_RX_FILTER_EVERYTHING;
-
-       /* reenable rx dma */
-       wlan_trigger(AR9170_DMA_TRIGGER_RXQ);
-}
+void wlan_tx_complete(struct carl9170_tx_superframe *super, bool txs);
+void wlan_prepare_wol(void);
 
 static inline void __check_wlantx(void)
 {