old mode 100644new mode 100755.. | .. |
---|
121 | 121 | * @idx: Index of the last pushed skb.(Use to find the next free entry quicker) |
---|
122 | 122 | * |
---|
123 | 123 | * Note: contrary to softmac version, dma_addr are stored inside skb->cb. |
---|
124 | | - * (cf &struct rwnx_skb_cb) |
---|
125 | 124 | */ |
---|
126 | 125 | struct rwnx_ipc_rxbuf_elems { |
---|
127 | 126 | struct sk_buff *skb[RWNX_RXBUFF_MAX]; |
---|
128 | 127 | int idx; |
---|
129 | 128 | }; |
---|
130 | 129 | |
---|
131 | | -/** |
---|
132 | | - * struct rwnx_skb_cb - Control Buffer structure for RX buffer |
---|
133 | | - * |
---|
134 | | - * @dma_addr: DMA address of the data buffer |
---|
135 | | - * @pattern: Known pattern (used to check pointer on skb) |
---|
136 | | - * @idx: Index in &struct rwnx_hw.rxbuff_table that contains address of this |
---|
137 | | - * buffer |
---|
138 | | - */ |
---|
139 | | -struct rwnx_skb_cb { |
---|
140 | | - dma_addr_t dma_addr; |
---|
141 | | - uint32_t pattern; |
---|
142 | | - uint32_t idx; |
---|
143 | | -}; |
---|
144 | | - |
---|
145 | | -#define RWNX_RXBUFF_DMA_ADDR_SET(skbuff, addr) \ |
---|
146 | | - (((struct rwnx_skb_cb *)(skbuff->cb))->dma_addr = addr) |
---|
147 | | -#define RWNX_RXBUFF_DMA_ADDR_GET(skbuff) \ |
---|
148 | | - (((struct rwnx_skb_cb *)(skbuff->cb))->dma_addr) |
---|
149 | | - |
---|
150 | | -#define RWNX_RXBUFF_PATTERN_SET(skbuff, pat) \ |
---|
151 | | - (((struct rwnx_skb_cb *)(skbuff->cb))->pattern = pat) |
---|
152 | | -#define RWNX_RXBUFF_PATTERN_GET(skbuff) \ |
---|
153 | | - (((struct rwnx_skb_cb *)(skbuff->cb))->pattern) |
---|
154 | | - |
---|
155 | | -#define RWNX_RXBUFF_IDX_SET(skbuff, val) \ |
---|
156 | | - (((struct rwnx_skb_cb *)(skbuff->cb))->idx = val) |
---|
157 | | -#define RWNX_RXBUFF_IDX_GET(skbuff) \ |
---|
158 | | - (((struct rwnx_skb_cb *)(skbuff->cb))->idx) |
---|
159 | | - |
---|
160 | | -#define RWNX_RXBUFF_VALID_IDX(idx) ((idx) < RWNX_RXBUFF_MAX) |
---|
161 | | - |
---|
162 | | -/* Used to ensure that hostid set to fw is never 0 */ |
---|
163 | | -#define RWNX_RXBUFF_IDX_TO_HOSTID(idx) ((idx) + 1) |
---|
164 | | -#define RWNX_RXBUFF_HOSTID_TO_IDX(hostid) ((hostid) - 1) |
---|
165 | | - |
---|
166 | 130 | #endif /* CONFIG_RWNX_FULLMAC */ |
---|
167 | | - |
---|
168 | | - |
---|
169 | | -#ifdef CONFIG_RWNX_FULLMAC |
---|
170 | | -int rwnx_ipc_rxbuf_elem_allocs(struct rwnx_hw *rwnx_hw); |
---|
171 | | -void rwnx_ipc_rxbuf_elem_pull(struct rwnx_hw *rwnx_hw, struct sk_buff *skb); |
---|
172 | | -void rwnx_ipc_rxbuf_elem_sync(struct rwnx_hw *rwnx_hw, struct sk_buff *skb, |
---|
173 | | - int len); |
---|
174 | | -void rwnx_ipc_rxdesc_elem_repush(struct rwnx_hw *rwnx_hw, |
---|
175 | | - struct rwnx_ipc_elem *elem); |
---|
176 | | -void rwnx_ipc_rxbuf_elem_repush(struct rwnx_hw *rwnx_hw, |
---|
177 | | - struct sk_buff *skb); |
---|
178 | | -#endif /* CONFIG_RWNX_FULLMAC */ |
---|
179 | | - |
---|
180 | | -void rwnx_ipc_msg_push(struct rwnx_hw *rwnx_hw, void *msg_buf, uint16_t len); |
---|
181 | | -void rwnx_ipc_txdesc_push(struct rwnx_hw *rwnx_hw, void *tx_desc, |
---|
182 | | - void *hostid, int hw_queue, int user); |
---|
183 | | - |
---|
184 | | -void *rwnx_ipc_fw_trace_desc_get(struct rwnx_hw *rwnx_hw); |
---|
185 | | - |
---|
186 | | -int rwnx_ipc_rxbuf_init(struct rwnx_hw *rwnx_hw, uint32_t rx_bufsz); |
---|
187 | | -int rwnx_ipc_init(struct rwnx_hw *rwnx_hw, u8 *shared_ram); |
---|
188 | | -void rwnx_ipc_deinit(struct rwnx_hw *rwnx_hw); |
---|
189 | | -void rwnx_ipc_start(struct rwnx_hw *rwnx_hw); |
---|
190 | | -void rwnx_ipc_stop(struct rwnx_hw *rwnx_hw); |
---|
191 | | -void rwnx_ipc_tx_drain(struct rwnx_hw *rwnx_hw); |
---|
192 | | -bool rwnx_ipc_tx_pending(struct rwnx_hw *rwnx_hw); |
---|
193 | | - |
---|
194 | | -struct ipc_host_env_tag; |
---|
195 | | -int rwnx_ipc_elem_var_allocs(struct rwnx_hw *rwnx_hw, |
---|
196 | | - struct rwnx_ipc_elem_var *elem, size_t elem_size, |
---|
197 | | - enum dma_data_direction dir, |
---|
198 | | - void *buf, const void *init, |
---|
199 | | - void (*push)(struct ipc_host_env_tag *, uint32_t)); |
---|
200 | | -void rwnx_ipc_elem_var_deallocs(struct rwnx_hw *rwnx_hw, |
---|
201 | | - struct rwnx_ipc_elem_var *elem); |
---|
202 | | -int rwnx_ipc_unsup_rx_vec_elem_allocs(struct rwnx_hw *rwnx_hw, |
---|
203 | | - struct rwnx_ipc_skb_elem *elem); |
---|
204 | | - |
---|
205 | | -void rwnx_error_ind(struct rwnx_hw *rwnx_hw); |
---|
206 | | -void rwnx_umh_done(struct rwnx_hw *rwnx_hw); |
---|
207 | | - |
---|
208 | | -void rwnx_ipc_sta_buffer_init(struct rwnx_hw *rwnx_hw, int sta_idx); |
---|
209 | | -void rwnx_ipc_sta_buffer(struct rwnx_hw *rwnx_hw, struct rwnx_sta *sta, int tid, int size); |
---|
210 | 131 | #endif /* _RWNX_IPC_UTILS_H_ */ |
---|