X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=carlfw%2Finclude%2Fdma.h;h=7ecdfb94db2a018a2f4c48a59d7386ce3fd96e78;hb=5d61afe9cc7019ce23856396488846950e656245;hp=07d06d607f9bc2fea7429fede6e6799ac94fdd50;hpb=cdced53c2ede33a9fe9004db4d93cfc984ad4243;p=carl9170fw.git diff --git a/carlfw/include/dma.h b/carlfw/include/dma.h index 07d06d6..7ecdfb9 100644 --- a/carlfw/include/dma.h +++ b/carlfw/include/dma.h @@ -51,11 +51,7 @@ struct dma_desc { #define AR9170_TERMINATOR_NUMBER_INT 1 -#ifdef CONFIG_CARL9170FW_CAB_QUEUE #define AR9170_TERMINATOR_NUMBER_CAB CARL9170_INTF_NUM -#else -#define AR9170_TERMINATOR_NUMBER_CAB 0 -#endif /* CONFIG_CARL9170FW_CAB_QUEUE */ #define AR9170_TERMINATOR_NUMBER (AR9170_TERMINATOR_NUMBER_B + \ AR9170_TERMINATOR_NUMBER_INT + \ @@ -75,6 +71,16 @@ struct carl9170_tx_ba_superframe { struct ar9170_tx_ba_frame f; } __packed; +struct ar9170_tx_null_frame { + struct ar9170_tx_hwdesc hdr; + struct ieee80211_hdr null; +} __packed; + +struct carl9170_tx_null_superframe { + struct carl9170_tx_superdesc s; + struct ar9170_tx_null_frame f; +} __packed; + #define CARL9170_BA_BUFFER_LEN (__roundup(sizeof(struct carl9170_tx_ba_superframe), 16)) #define CARL9170_RSP_BUFFER_LEN AR9170_BLOCK_SIZE @@ -87,6 +93,10 @@ struct carl9170_sram_reserved { union { uint32_t buf[CARL9170_MAX_CMD_LEN / sizeof(uint32_t)]; struct carl9170_cmd cmd; + +#ifdef CONFIG_CARL9170FW_WOL + struct carl9170_tx_null_superframe null; +#endif /* CONFIG_CARL9170FW_WOL */ } cmd; union { @@ -123,6 +133,7 @@ struct carl9170_sram_reserved { * | BA buffer (128 bytes) * +-- * | CMD buffer (128 bytes) + * | - used as NULLFRAME buffer (128 bytes) for WOL * +-- * | RSP buffer (320 bytes) * +-- @@ -268,7 +279,7 @@ static inline __inline struct dma_desc *dma_dequeue_not_bits(struct dma_queue *q desc = (queue)->head) #define __for_each_desc_continue(desc, queue) \ - for (;desc != (queue)->terminator; \ + for (; desc != (queue)->terminator; \ desc = (desc)->lastAddr->nextAddr) #define __for_each_desc(desc, queue) \ @@ -328,6 +339,7 @@ static inline void __check_desc(void) BUILD_BUG_ON(offsetof(struct carl9170_sram_reserved, cmd.buf) & (BLOCK_ALIGNMENT - 1)); BUILD_BUG_ON(offsetof(struct carl9170_sram_reserved, rsp.buf) & (BLOCK_ALIGNMENT - 1)); BUILD_BUG_ON(offsetof(struct carl9170_sram_reserved, bcn.buf) & (BLOCK_ALIGNMENT - 1)); + BUILD_BUG_ON(sizeof(struct carl9170_tx_null_superframe) > CARL9170_MAX_CMD_LEN); } #endif /* __CARL9170FW_DMA_H */