projects
/
carl9170fw.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
wireless: 60g protocol constants
[carl9170fw.git]
/
carlfw
/
include
/
dma.h
diff --git
a/carlfw/include/dma.h
b/carlfw/include/dma.h
index 70417360854bcab334b47fc08d0d6c14f96fc508..8f3a9df63e0dd65baac0496f72e3f8755a17b5ac 100644
(file)
--- a/
carlfw/include/dma.h
+++ b/
carlfw/include/dma.h
@@
-46,8
+46,8
@@
struct dma_desc {
struct dma_desc *nextAddr; /* Next TD address */
} __packed __aligned(4);
struct dma_desc *nextAddr; /* Next TD address */
} __packed __aligned(4);
-/* Up, Dn, 5x Tx, retry, Rx, [USB Int], (CAB),
(BA)
*/
-#define AR9170_TERMINATOR_NUMBER_B
9
+/* Up, Dn, 5x Tx, retry, Rx, [USB Int], (CAB),
FW
*/
+#define AR9170_TERMINATOR_NUMBER_B
10
#define AR9170_TERMINATOR_NUMBER_INT 1
#define AR9170_TERMINATOR_NUMBER_INT 1
@@
-57,15
+57,9
@@
struct dma_desc {
#define AR9170_TERMINATOR_NUMBER_CAB 0
#endif /* CONFIG_CARL9170FW_CAB_QUEUE */
#define AR9170_TERMINATOR_NUMBER_CAB 0
#endif /* CONFIG_CARL9170FW_CAB_QUEUE */
-#ifdef CONFIG_CARL9170FW_HANDLE_BACK_REQ
-#define AR9170_TERMINATOR_NUMBER_BA 1
-#else
-#define AR9170_TERMINATOR_NUMBER_BA 0
-#endif /* CONFIG_CARL9170FW_HANDLE_BACK_REQ */
#define AR9170_TERMINATOR_NUMBER (AR9170_TERMINATOR_NUMBER_B + \
AR9170_TERMINATOR_NUMBER_INT + \
#define AR9170_TERMINATOR_NUMBER (AR9170_TERMINATOR_NUMBER_B + \
AR9170_TERMINATOR_NUMBER_INT + \
- AR9170_TERMINATOR_NUMBER_CAB + \
- AR9170_TERMINATOR_NUMBER_BA)
+ AR9170_TERMINATOR_NUMBER_CAB)
#define AR9170_BLOCK_SIZE (256 + 64)
#define AR9170_BLOCK_SIZE (256 + 64)
@@
-81,19
+75,32
@@
struct carl9170_tx_ba_superframe {
struct ar9170_tx_ba_frame f;
} __packed;
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
struct carl9170_sram_reserved {
#define CARL9170_BA_BUFFER_LEN (__roundup(sizeof(struct carl9170_tx_ba_superframe), 16))
#define CARL9170_RSP_BUFFER_LEN AR9170_BLOCK_SIZE
struct carl9170_sram_reserved {
-#ifdef CONFIG_CARL9170FW_HANDLE_BACK_REQ
union {
uint32_t buf[CARL9170_BA_BUFFER_LEN / sizeof(uint32_t)];
struct carl9170_tx_ba_superframe ba;
} ba;
union {
uint32_t buf[CARL9170_BA_BUFFER_LEN / sizeof(uint32_t)];
struct carl9170_tx_ba_superframe ba;
} ba;
-#endif /* CONFIG_CARL9170FW_HANDLE_BACK_REQ */
+
union {
uint32_t buf[CARL9170_MAX_CMD_LEN / sizeof(uint32_t)];
struct carl9170_cmd cmd;
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 {
} cmd;
union {
@@
-130,6
+137,7
@@
struct carl9170_sram_reserved {
* | BA buffer (128 bytes)
* +--
* | CMD buffer (128 bytes)
* | BA buffer (128 bytes)
* +--
* | CMD buffer (128 bytes)
+ * | - used as NULLFRAME buffer (128 bytes) for WOL
* +--
* | RSP buffer (320 bytes)
* +--
* +--
* | RSP buffer (320 bytes)
* +--
@@
-215,7
+223,6
@@
struct dma_desc *dma_unlink_head(struct dma_queue *queue);
void dma_init_descriptors(void);
void dma_reclaim(struct dma_queue *q, struct dma_desc *desc);
void dma_put(struct dma_queue *q, struct dma_desc *desc);
void dma_init_descriptors(void);
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);
static inline __inline bool is_terminator(struct dma_queue *q, struct dma_desc *desc)
{
static inline __inline bool is_terminator(struct dma_queue *q, struct dma_desc *desc)
{
@@
-275,6
+282,10
@@
static inline __inline struct dma_desc *dma_dequeue_not_bits(struct dma_queue *q
(desc->status & AR9170_OWN_BITS) == bits); \
desc = (queue)->head)
(desc->status & AR9170_OWN_BITS) == bits); \
desc = (queue)->head)
+#define __for_each_desc_continue(desc, queue) \
+ for (; desc != (queue)->terminator; \
+ desc = (desc)->lastAddr->nextAddr)
+
#define __for_each_desc(desc, queue) \
for (desc = (queue)->head; \
desc != (queue)->terminator; \
#define __for_each_desc(desc, queue) \
for (desc = (queue)->head; \
desc != (queue)->terminator; \
@@
-311,6
+322,15
@@
static inline __inline void dma_rearm(struct dma_desc *desc)
AR9170_OWN_BITS_HW);
}
AR9170_OWN_BITS_HW);
}
+static inline __inline void dma_fix_downqueue(struct dma_desc *desc)
+{
+ desc->status = AR9170_OWN_BITS_HW;
+ desc->ctrl = 0;
+ desc->dataSize = 0;
+ desc->totalLen = AR9170_BLOCK_SIZE;
+ desc->lastAddr = desc;
+}
+
static inline void __check_desc(void)
{
struct ar9170_dma_memory mem;
static inline void __check_desc(void)
{
struct ar9170_dma_memory mem;
@@
-319,12
+339,11
@@
static inline void __check_desc(void)
BUILD_BUG_ON(sizeof(mem) > AR9170_SRAM_SIZE);
BUILD_BUG_ON(sizeof(mem) > AR9170_SRAM_SIZE);
-#ifdef CONFIG_CARL9170FW_HANDLE_BACK_REQ
BUILD_BUG_ON(offsetof(struct carl9170_sram_reserved, ba.buf) & (BLOCK_ALIGNMENT - 1));
BUILD_BUG_ON(offsetof(struct carl9170_sram_reserved, ba.buf) & (BLOCK_ALIGNMENT - 1));
-#endif /* CONFIG_CARL9170FW_HANDLE_BACK_REQ */
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(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 */
}
#endif /* __CARL9170FW_DMA_H */