X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=carlfw%2Finclude%2Fwl.h;h=9064dcb2c6af35e28691f1f147e27a86be293aec;hb=35cac8dcfa9d01fff0c929f0e2b9cc38fc919589;hp=86a7abfea818d2e47aeae75e230375d0072f2dd0;hpb=0c5091c6bc2a036c1eb3272db0768ecb84559671;p=carl9170fw.git diff --git a/carlfw/include/wl.h b/carlfw/include/wl.h index 86a7abf..9064dcb 100644 --- a/carlfw/include/wl.h +++ b/carlfw/include/wl.h @@ -6,7 +6,7 @@ * Copyright (c) 2000-2005 ZyDAS Technology Corporation * Copyright (c) 2007-2009 Atheros Communications, Inc. * Copyright 2009 Johannes Berg - * Copyright 2009, 2010 Christian Lamparter + * Copyright 2009-2011 Christian Lamparter * * 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 @@ -42,32 +42,25 @@ 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 void _wlan_trigger(const uint32_t queue_bit) +static inline __inline volatile 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 *) @@ -259,21 +257,31 @@ static inline __inline __hot void read_tsf(uint32_t *tsf) void wlan_tx(struct dma_desc *desc); void wlan_timer(void); void handle_wlan(void); -void wlan_tx_stuck(const struct carl9170_cmd *cmd, struct carl9170_rsp *rsp); 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); + +void wlan_tx_complete(struct carl9170_tx_superframe *super, + bool txs); + +void wlan_prepare_wol(void); static inline void __check_wlantx(void) { + BUILD_BUG_ON(CARL9170_TX_SUPERDESC_LEN & 3); BUILD_BUG_ON(sizeof(struct carl9170_tx_superdesc) != CARL9170_TX_SUPERDESC_LEN); + BUILD_BUG_ON(sizeof(struct _carl9170_tx_superdesc) != CARL9170_TX_SUPERDESC_LEN); + BUILD_BUG_ON(sizeof(struct _carl9170_tx_superframe) != CARL9170_TX_SUPERFRAME_LEN); BUILD_BUG_ON((offsetof(struct carl9170_tx_superframe, f) & 3) != 0); + BUILD_BUG_ON(offsetof(struct _carl9170_tx_superframe, f) != + (offsetof(struct _carl9170_tx_superframe, f))); BUILD_BUG_ON(sizeof(struct ar9170_tx_hwdesc) != AR9170_TX_HWDESC_LEN); - BUILD_BUG_ON(sizeof(struct ar9170_rx_head) != 12); - BUILD_BUG_ON(sizeof(struct ar9170_rx_phystatus) != 20); - BUILD_BUG_ON(sizeof(struct ar9170_rx_macstatus) != 4); + BUILD_BUG_ON(sizeof(struct _ar9170_tx_hwdesc) != AR9170_TX_HWDESC_LEN); + BUILD_BUG_ON(sizeof(struct ar9170_rx_head) != AR9170_RX_HEAD_LEN); + BUILD_BUG_ON(sizeof(struct ar9170_rx_phystatus) != AR9170_RX_PHYSTATUS_LEN); + BUILD_BUG_ON(sizeof(struct ar9170_rx_macstatus) != AR9170_RX_MACSTATUS_LEN); } #endif /* __CARL9170FW_WLAN_H */