X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=carlfw%2Finclude%2Fwl.h;h=dd5b0a88f3e4c7c376cf798391ac4e6a5e72df66;hb=42f3ffb244e5cabba181fe6c59042caa61b650cb;hp=e1c8bbd014ab17407847c1df3902e43aaa262787;hpb=bf38ae52cd2ec91f5abeadc00c4e17fc647c2bc0;p=carl9170fw.git diff --git a/carlfw/include/wl.h b/carlfw/include/wl.h index e1c8bbd..dd5b0a8 100644 --- a/carlfw/include/wl.h +++ b/carlfw/include/wl.h @@ -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) {