void *dataAddr;
} __packed;
struct dma_desc *nextAddr; /* Next TD address */
-} __packed;
+} __packed __aligned(4);
/* (Up, Dn, 5x Tx, Rx), USB Int, (5x delayed Tx + retry), CAB, BA */
#define AR9170_TERMINATOR_NUMBER_B 8
#endif /* CONFIG_CARL9170FW_DELAYED_TX */
#ifdef CONFIG_CARL9170FW_CAB_QUEUE
-#define AR9170_TERMINATOR_NUMBER_CAB 1
+#define AR9170_TERMINATOR_NUMBER_CAB CARL9170_INTF_NUM
#else
#define AR9170_TERMINATOR_NUMBER_CAB 0
#endif /* CONFIG_CARL9170FW_CAB_QUEUE */
* 0x18000
*/
-#define AR9170_SRAM_SIZE 0x18000
#define CARL9170_SRAM_RESERVED (sizeof(struct carl9170_sram_reserved))
#define AR9170_FRAME_MEMORY_SIZE (AR9170_SRAM_SIZE - CARL9170_SRAM_RESERVED)
struct ar9170_dma_memory {
struct dma_desc terminator[AR9170_TERMINATOR_NUMBER];
struct dma_desc block[AR9170_BLOCK_NUMBER];
- struct ar9170_data_block data[AR9170_BLOCK_NUMBER] __attribute__((aligned(BLOCK_ALIGNMENT)));
- struct carl9170_sram_reserved reserved __attribute__((aligned(BLOCK_ALIGNMENT)));
+ struct ar9170_data_block data[AR9170_BLOCK_NUMBER] __aligned(BLOCK_ALIGNMENT);
+ struct carl9170_sram_reserved reserved __aligned(BLOCK_ALIGNMENT);
};
extern struct ar9170_dma_memory dma_mem;
void dma_reclaim(struct dma_queue *q, struct dma_desc *desc);
void dma_put(struct dma_queue *q, struct dma_desc *desc);
void dma_queue_reclaim(struct dma_queue *dst, struct dma_queue *src);
-void queue_dump(void);
-void wlan_txq_hangfix(const unsigned int queue);
+
+static inline __inline bool is_terminator(struct dma_queue *q, struct dma_desc *desc)
+{
+ return q->terminator == desc;
+}
static inline __inline bool queue_empty(struct dma_queue *q)
{