a10fb6ca7fe22228b8ff2d2ff3063993e4b6757c
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / esp8089 / esp_premalloc / esp_mem.h
1 #ifndef _ESP_MEM_H_
2 #define _ESP_MEM_H_
3
4 #include <linux/skbuff.h>
5
6 #define TX_AGGR_BUF_SIZE (4 * PAGE_SIZE)
7 #define RX_AGGR_BUF_SIZE (4 * PAGE_SIZE)
8
9
10 #define SIP_SKB_SIZE_8K (8<<10)           /* 8K * 8 */
11 #define SIP_SKB_SIZE_16K (16<<10)           /* 16K * 4 */
12 #define SIP_SKB_SIZE_32K (32<<10)           /* 32K * 2 */
13 #define SIP_SKB_NUM_8K  8
14 #define SIP_SKB_NUM_16K  4
15 #define SIP_SKB_NUM_32K  2
16 #define SIP_SKB_SPOS_8K  0
17 #define SIP_SKB_SPOS_16K  8
18 #define SIP_SKB_SPOS_32K  12
19
20 #define SIP_SKB_ARR_NUM 14        /* (SIP_SKB_NUM_8k + SIP_SKB_NUM_16k + SIP_SKB_NUM_32k) */
21
22 struct esp_skb_elem {
23         struct sk_buff *skb_p;
24         int skb_size;
25         atomic_t inuse;
26 };
27
28 int esp_pre_alloc_sip_skb_arr(void);
29 void esp_pre_free_sip_skb_arr(void);
30 struct sk_buff *esp_get_sip_skb(int size);
31 void esp_put_sip_skb(struct sk_buff **skb);
32
33 void *esp_pre_alloc_tx_aggr_buf(void);
34 void esp_pre_free_tx_aggr_buf(void);
35 int esp_indi_pre_mem_init(void);
36 void esp_indi_pre_mem_deinit(void);
37
38 #endif /* _ESP_MEM_H_ */