net:wireless:Support eswin usb wifi ECR6600U
[platform/kernel/linux-starfive.git] / drivers / net / wireless / eswin / eswin_port / eswin_utils.h
1 /**
2  ******************************************************************************
3  *
4  * @file eswin_utils.h
5  *
6  * @brief File containing the definition of tx/rx info and debug descriptors.
7  *
8  * Copyright (C) ESWIN 2015-2020
9  *
10  ******************************************************************************
11  */
12
13 #ifndef _ESWIN_UTILS_H_
14 #define _ESWIN_UTILS_H_
15
16 #if defined(CONFIG_ECRNX_ESWIN_SDIO)
17 // for param in sdio irq flag
18 #define FLAG_MSG_TYPE_MASK       0x0f
19
20 // queue in sdio irq flag
21 #define FLAG_TXDESC_QUEUE_SHIFT  5
22 #define FLAG_TXDESC_QUEUE_MASK   0xe0
23 #define FLAG_TXDESC_USER_SHIFT   4
24 #define FLAG_TXDESC_USER_MASK    0x10
25
26 // tag in tx payload param
27 //#define FLAG_TXPAYLOAD_PARAM_SHIFT 6
28 //#define FLAG_TXPAYLOAD_PARAM_MASK  0xffc0   //10 bits
29 #define TX_DESC_TAG_LEN            492  //SLAVE fhost_tx_desc_tag_len
30
31 #elif defined(CONFIG_ECRNX_ESWIN_USB)
32 // for param in sdio irq flag
33 #define FLAG_MSG_TYPE_MASK       0x00ff
34
35 // queue in sdio irq flag
36 #define FLAG_TXDESC_USER_SHIFT   8
37 #define FLAG_TXDESC_USER_MASK    0x0f00
38 #define FLAG_TXDESC_QUEUE_SHIFT  12
39 #define FLAG_TXDESC_QUEUE_MASK   0xf000
40 #endif
41
42 typedef enum {
43     TX_FLAG_INVALID,
44     TX_FLAG_MSG_E,
45     TX_FLAG_MSG_SCAN_IE,
46     TX_FLAG_MSG_SCANU_IE,
47     TX_FLAG_MSG_BEACON_IE,
48     TX_FLAG_MSG_PROBE_IE,
49     TX_FLAG_MSG_SOFTAP_IE,
50     TX_FLAG_TX_DESC,
51     TX_FLAG_MSG_DEBUGFS_IE,
52     TX_FLAG_IWPRIV_IE,
53 #ifdef CONFIG_ECRNX_WIFO_CAIL
54         TX_FLAG_AMT_IWPRIV_IE,  //10
55 #endif
56
57     TX_FLAG_MAX,
58 }host_tx_flag_e;
59
60 typedef enum {
61     DBG_TYPE_D,      //debug msg type
62     DBG_TYPE_I,      //info msg type
63     DBG_TYPE_W,      //warning msg type
64     DBG_TYPE_E,      //error msg type
65     DBG_TYPE_O,      //this type means always output
66     DBG_TYPE_MAX
67 }dbg_print_type_e;
68
69 typedef struct {
70     uint8_t direct; // slave log director, 0 is print by uart, 1 is send to host
71     dbg_print_type_e dbg_level; //slave debug level
72 }dbg_req_t;
73
74 typedef struct {
75     uint32_t  hostid;
76     uint32_t  tag;
77 }data_req_msg_t;
78
79 typedef struct {
80 #ifdef CONFIG_ECRNX_ESWIN_SDIO
81     uint32_t resvd; /* for sdio */
82     uint32_t rlen;  /* for sdio */
83 #endif
84     uint32_t frm_type;
85 }dispatch_hdr_t;
86
87 /**
88  * struct pulse_elem - elements in pulse queue
89  * @ts: time stamp in usecs
90  */
91 struct agg_elem {
92     struct list_head head;
93     struct sk_buff* skb;
94     /// Traffic Index
95     uint8_t tid;
96     uint16_t real_offset; /* dma address align 4, real data - real_offset  */
97     u32 sn;
98     /*bitmaps of agg frame to upaold*/
99     uint64_t agg_upload_idx;
100     /*bitmaps of agg frame upaold status, 0 is forward, 1 is delete*/
101     uint64_t agg_upload_status;
102 };
103
104 /**
105  * struct pulse_elem - elements in pulse queue
106  * @ts: time stamp in usecs
107  */
108 struct defrag_elem {
109     struct list_head head;
110     struct sk_buff* skb;
111     /// Traffic Index
112     uint8_t tid;
113     uint16_t real_offset; /* dma address align 4, real data - real_offset  */
114     u32 sn;
115 };
116
117 void ecrnx_frame_send(struct ecrnx_hw *ecrnx_hw, struct txdesc_api *tx_desc,
118                           struct sk_buff *skb, int hw_queue, int user);
119 void ecrnx_msg_send(struct ecrnx_cmd *cmd, uint16_t len);
120 int host_send(void *buff, int len, int flag);
121 const struct ecrnx_element *cfg80211_find_ecrnx_elem(u8 eid, const u8 *ies, int len);
122
123 #endif