X-Git-Url: https://jxself.org/git/?p=carl9170fw.git;a=blobdiff_plain;f=carlfw%2Finclude%2Fwl.h;h=9064dcb2c6af35e28691f1f147e27a86be293aec;hp=7428d1a28760901d293c9c06f6a49a7d7ecb9db7;hb=35cac8dcfa9d01fff0c929f0e2b9cc38fc919589;hpb=985f1f6849ec65147405763e9bb6c0e55ffcb789 diff --git a/carlfw/include/wl.h b/carlfw/include/wl.h index 7428d1a..9064dcb 100644 --- a/carlfw/include/wl.h +++ b/carlfw/include/wl.h @@ -42,16 +42,21 @@ 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 volatile struct dma_desc *get_wlan_txq_last_addr(const unsigned int q) +{ + return getp(AR9170_MAC_REG_DMA_TXQ_LAST_ADDR + (q << 2)); +} + static inline __inline void wlan_trigger(const uint32_t queue_bit) { set(AR9170_MAC_REG_DMA_TRIGGER, queue_bit); @@ -210,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 *) @@ -253,14 +263,10 @@ 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) {