summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/mwifiex/decl.h
blob: 4e1f115d3ec370813a4b050be9800611ac2996c5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
/*
 * Marvell Wireless LAN device driver: generic data structures and APIs
 *
 * Copyright (C) 2011, Marvell International Ltd.
 *
 * This software file (the "File") is distributed by Marvell International
 * Ltd. under the terms of the GNU General Public License Version 2, June 1991
 * (the "License").  You may use, redistribute and/or modify this File in
 * accordance with the terms and conditions of the License, a copy of which
 * is available by writing to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the
 * worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
 *
 * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
 * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
 * this warranty disclaimer.
 */

#ifndef _MWIFIEX_DECL_H_
#define _MWIFIEX_DECL_H_

#undef pr_fmt
#define pr_fmt(fmt)	KBUILD_MODNAME ": " fmt

#include <linux/wait.h>
#include <linux/timer.h>
#include <linux/ieee80211.h>


#define MWIFIEX_MAX_BSS_NUM         (1)

#define MWIFIEX_MIN_DATA_HEADER_LEN 32	/* (sizeof(mwifiex_txpd)) */

#define MWIFIEX_MAX_TX_BASTREAM_SUPPORTED	2
#define MWIFIEX_MAX_RX_BASTREAM_SUPPORTED	16

#define MWIFIEX_AMPDU_DEF_TXWINSIZE        32
#define MWIFIEX_AMPDU_DEF_RXWINSIZE        16
#define MWIFIEX_DEFAULT_BLOCK_ACK_TIMEOUT  0xffff

#define MWIFIEX_RATE_INDEX_HRDSSS0 0
#define MWIFIEX_RATE_INDEX_HRDSSS3 3
#define MWIFIEX_RATE_INDEX_OFDM0   4
#define MWIFIEX_RATE_INDEX_OFDM7   11
#define MWIFIEX_RATE_INDEX_MCS0    12

#define MWIFIEX_RATE_BITMAP_OFDM0  16
#define MWIFIEX_RATE_BITMAP_OFDM7  23
#define MWIFIEX_RATE_BITMAP_MCS0   32
#define MWIFIEX_RATE_BITMAP_MCS127 159

#define MWIFIEX_RX_DATA_BUF_SIZE     (4 * 1024)
#define MWIFIEX_RX_CMD_BUF_SIZE      (2 * 1024)

#define MWIFIEX_RTS_MIN_VALUE              (0)
#define MWIFIEX_RTS_MAX_VALUE              (2347)
#define MWIFIEX_FRAG_MIN_VALUE             (256)
#define MWIFIEX_FRAG_MAX_VALUE             (2346)

#define MWIFIEX_SDIO_BLOCK_SIZE            256

#define MWIFIEX_BUF_FLAG_REQUEUED_PKT      BIT(0)

enum mwifiex_error_code {
	MWIFIEX_ERROR_NO_ERROR = 0,
	MWIFIEX_ERROR_FW_NOT_READY = 0x00000001,
	MWIFIEX_ERROR_FW_BUSY,
	MWIFIEX_ERROR_FW_CMDRESP,
	MWIFIEX_ERROR_PKT_SIZE_INVALID = 0x80000001,
	MWIFIEX_ERROR_PKT_TIMEOUT,
	MWIFIEX_ERROR_CMD_INVALID,
	MWIFIEX_ERROR_CMD_TIMEOUT,
	MWIFIEX_ERROR_CMD_DNLD_FAIL,
	MWIFIEX_ERROR_CMD_CANCEL,
	MWIFIEX_ERROR_CMD_RESP_FAIL,
	MWIFIEX_ERROR_ASSOC_FAIL,
	MWIFIEX_ERROR_EVENT_UNKNOWN,
	MWIFIEX_ERROR_INVALID_PARAMETER,
};

enum mwifiex_bss_type {
	MWIFIEX_BSS_TYPE_STA = 0,
	MWIFIEX_BSS_TYPE_UAP = 1,
	MWIFIEX_BSS_TYPE_ANY = 0xff,
};

enum mwifiex_bss_role {
	MWIFIEX_BSS_ROLE_STA = 0,
	MWIFIEX_BSS_ROLE_UAP = 1,
	MWIFIEX_BSS_ROLE_ANY = 0xff,
};

#define BSS_ROLE_BIT_MASK    BIT(0)

#define GET_BSS_ROLE(priv)   ((priv)->bss_role & BSS_ROLE_BIT_MASK)

enum mwifiex_data_frame_type {
	MWIFIEX_DATA_FRAME_TYPE_ETH_II = 0,
	MWIFIEX_DATA_FRAME_TYPE_802_11,
};

struct mwifiex_fw_image {
	u8 *helper_buf;
	u32 helper_len;
	u8 *fw_buf;
	u32 fw_len;
};

struct mwifiex_802_11_ssid {
	u32 ssid_len;
	u8 ssid[IEEE80211_MAX_SSID_LEN];
};

struct mwifiex_wait_queue {
	u32 bss_index;
	wait_queue_head_t *wait;
	u16 *condition;
	u32 start_time;
	int status;
	u32 enabled;
};

struct mwifiex_rxinfo {
	u8 bss_index;
	struct sk_buff *parent;
	u8 use_count;
};

struct mwifiex_txinfo {
	u32 status_code;
	u8 flags;
	u8 bss_index;
};

struct mwifiex_bss_attr {
	u32 bss_type;
	u32 frame_type;
	u32 active;
	u32 bss_priority;
	u32 bss_num;
};

enum mwifiex_cmd_result_e {
	MWIFIEX_CMD_RESULT_SUCCESS = 0,
	MWIFIEX_CMD_RESULT_FAILURE = 1,
	MWIFIEX_CMD_RESULT_TIMEOUT = 2,
	MWIFIEX_CMD_RESULT_INVALID_DATA = 3
} __packed;

enum mwifiex_wmm_ac_e {
	WMM_AC_BK,
	WMM_AC_BE,
	WMM_AC_VI,
	WMM_AC_VO
} __packed;

enum mwifiex_wmm_queue_config_action_e {
	MWIFIEX_WMM_QUEUE_CONFIG_ACTION_GET = 0,
	MWIFIEX_WMM_QUEUE_CONFIG_ACTION_SET = 1,
	MWIFIEX_WMM_QUEUE_CONFIG_ACTION_DEFAULT = 2,
	MWIFIEX_WMM_QUEUE_CONFIG_ACTION_MAX
} __packed;

enum mwifiex_wmm_queue_stats_action_e {
	MWIFIEX_WMM_STATS_ACTION_START = 0,
	MWIFIEX_WMM_STATS_ACTION_STOP = 1,
	MWIFIEX_WMM_STATS_ACTION_GET_CLR = 2,
	MWIFIEX_WMM_STATS_ACTION_SET_CFG = 3,	/* Not currently used */
	MWIFIEX_WMM_STATS_ACTION_GET_CFG = 4,	/* Not currently used */
	MWIFIEX_WMM_STATS_ACTION_MAX
} __packed;

struct mwifiex_device {
	struct mwifiex_bss_attr bss_attr[MWIFIEX_MAX_BSS_NUM];
};
#endif /* !_MWIFIEX_DECL_H_ */