1b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt/*
2b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt * Custom OID/ioctl definitions for
3b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt * Broadcom 802.11abg Networking Device Driver
4b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt *
5b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt * Definitions subject to change without notice.
6b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt *
738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Copyright (C) 1999-2013, Broadcom Corporation
86dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt *
96dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * Permission to use, copy, modify, and/or distribute this software for any
106dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * purpose with or without fee is hereby granted, provided that the above
116dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * copyright notice and this permission notice appear in all copies.
126dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt *
136dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
146dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
156dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
166dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
176dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
186dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
196dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt *
2138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *
2238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * $Id: wlioctl.h 386120 2013-02-19 19:25:44Z $
23b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt */
24b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
25b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#ifndef _wlioctl_h_
2638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	_wlioctl_h_
27b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
28b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#include <typedefs.h>
29b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#include <proto/ethernet.h>
30b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#include <proto/bcmeth.h>
31b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#include <proto/bcmevent.h>
32b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#include <proto/802.11.h>
33ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#include <bcmwifi_channels.h>
34ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#include <bcmwifi_rates.h>
35b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
3638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef LINUX_POSTMOGRIFY_REMOVAL
3738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#include <bcm_mpool_pub.h>
38b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#include <bcmcdc.h>
3938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* LINUX_POSTMOGRIFY_REMOVAL */
4038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
4138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/*  LINUX_POSTMOGRIFY_REMOVAL: undefined during compile phase, so its
4238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *  a no-op for most cases. For hybrid and other open source releases,
4338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *  its defined during a second pass and mogrified out for distribution.
4438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
4538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
4638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
4738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef LINUX_POSTMOGRIFY_REMOVAL
48b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
49b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#ifndef INTF_NAME_SIZ
5038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define INTF_NAME_SIZ	16
51b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#endif
52b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
5338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Used to send ioctls over the transport pipe */
54b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct remote_ioctl {
5538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	cdc_ioctl_t 	msg;
5638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint		data_len;
57b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	char            intf_name[INTF_NAME_SIZ];
58b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} rem_ioctl_t;
5938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define REMOTE_SIZE	sizeof(rem_ioctl_t)
6038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
61b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
6238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
6338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 num;
6438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	chanspec_t list[1];
6538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} chanspec_list_t;
6638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
6738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ACTION_FRAME_SIZE 1800
68b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
69b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_action_frame {
7038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr 	da;
7138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 			len;
7238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 			packetId;
7338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8			data[ACTION_FRAME_SIZE];
74b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_action_frame_t;
75b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
76b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_WIFI_ACTION_FRAME_SIZE sizeof(struct wl_action_frame)
77b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
78ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidttypedef struct ssid_info
79ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt{
80ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8		ssid_len;	/* the length of SSID */
81ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8		ssid[32];	/* SSID string */
82ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt} ssid_info_t;
83ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
84b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_af_params {
8538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 			channel;
8638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int32 			dwell_time;
8738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr 	BSSID;
8838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	wl_action_frame_t	action_frame;
89b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_af_params_t;
90b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
91b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_WIFI_AF_PARAMS_SIZE sizeof(struct wl_af_params)
92b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
93ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define MFP_TEST_FLAG_NORMAL	0
94ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define MFP_TEST_FLAG_ANY_KEY	1
95ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidttypedef struct wl_sa_query {
96ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32			flag;
97ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8 			action;
98ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint16 			id;
99ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	struct ether_addr 	da;
100ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt} wl_sa_query_t;
101b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
10238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /*  LINUX_POSTMOGRIFY_REMOVAL */
10338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
10438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* require default structure packing */
105b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define BWL_DEFAULT_PACKING
106b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#include <packed_section_start.h>
107b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
108b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
10938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef LINUX_POSTMOGRIFY_REMOVAL
110ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt/* Legacy structure to help keep backward compatible wl tool and tray app */
111ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
112ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define	LEGACY_WL_BSS_INFO_VERSION	107	/* older version of wl_bss_info struct */
113b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
114ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidttypedef struct wl_bss_info_107 {
115ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32		version;		/* version field */
116ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32		length;			/* byte length of data in this record,
117ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt						 * starting at version and including IEs
118ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt						 */
119ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	struct ether_addr BSSID;
120ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint16		beacon_period;		/* units are Kusec */
121ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint16		capability;		/* Capability information */
122ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8		SSID_len;
123ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8		SSID[32];
124ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	struct {
125ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt		uint	count;			/* # rates in this set */
126ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt		uint8	rates[16];		/* rates in 500kbps units w/hi bit set if basic */
127ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	} rateset;				/* supported rates */
128ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8		channel;		/* Channel no. */
129ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint16		atim_window;		/* units are Kusec */
130ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8		dtim_period;		/* DTIM period */
131ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	int16		RSSI;			/* receive signal strength (in dBm) */
132ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	int8		phy_noise;		/* noise (in dBm) */
133ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32		ie_length;		/* byte length of Information Elements */
134ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	/* variable length Information Elements */
135ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt} wl_bss_info_107_t;
136b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
137ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt/*
138ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt * Per-BSS information structure.
139ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt */
140b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
14138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	LEGACY2_WL_BSS_INFO_VERSION	108		/* old version of wl_bss_info struct */
142b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
14338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* BSS info structure
14438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Applications MUST CHECK ie_offset field and length field to access IEs and
14538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * next bss_info structure in a vector (in wl_scan_results_t)
14638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
147b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_bss_info_108 {
14838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32		version;		/* version field */
14938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32		length;			/* byte length of data in this record,
15038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt						 * starting at version and including IEs
15138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt						 */
152b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	struct ether_addr BSSID;
15338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16		beacon_period;		/* units are Kusec */
15438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16		capability;		/* Capability information */
15538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8		SSID_len;
15638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8		SSID[32];
157b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	struct {
15838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt		uint	count;			/* # rates in this set */
15938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt		uint8	rates[16];		/* rates in 500kbps units w/hi bit set if basic */
16038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	} rateset;				/* supported rates */
16138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	chanspec_t	chanspec;		/* chanspec for bss */
16238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16		atim_window;		/* units are Kusec */
16338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8		dtim_period;		/* DTIM period */
16438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int16		RSSI;			/* receive signal strength (in dBm) */
16538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8		phy_noise;		/* noise (in dBm) */
1666dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
16738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8		n_cap;			/* BSS is 802.11N Capable */
16838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32		nbss_cap;		/* 802.11N BSS Capabilities (based on HT_CAP_*) */
16938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8		ctl_ch;			/* 802.11N BSS control channel number */
17038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32		reserved32[1];		/* Reserved for expansion of BSS properties */
17138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8		flags;			/* flags */
17238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8		reserved[3];		/* Reserved for expansion of BSS properties */
17338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8		basic_mcs[MCSSET_LEN];	/* 802.11N BSS required MCS set */
1746dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
17538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16		ie_offset;		/* offset at which IEs start, from beginning */
17638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32		ie_length;		/* byte length of Information Elements */
17738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* Add new fields here */
17838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* variable length Information Elements */
179b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_bss_info_108_t;
180b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
18138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* LINUX_POSTMOGRIFY_REMOVAL */
182b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
18338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_BSS_INFO_VERSION	109		/* current version of wl_bss_info struct */
184b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
18538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* BSS info structure
18638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Applications MUST CHECK ie_offset field and length field to access IEs and
18738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * next bss_info structure in a vector (in wl_scan_results_t)
18838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
189b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_bss_info {
19038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32		version;		/* version field */
19138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32		length;			/* byte length of data in this record,
19238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt						 * starting at version and including IEs
19338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt						 */
194b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	struct ether_addr BSSID;
19538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16		beacon_period;		/* units are Kusec */
19638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16		capability;		/* Capability information */
19738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8		SSID_len;
19838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8		SSID[32];
199b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	struct {
20038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt		uint	count;			/* # rates in this set */
20138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt		uint8	rates[16];		/* rates in 500kbps units w/hi bit set if basic */
20238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	} rateset;				/* supported rates */
20338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	chanspec_t	chanspec;		/* chanspec for bss */
20438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16		atim_window;		/* units are Kusec */
20538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8		dtim_period;		/* DTIM period */
20638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int16		RSSI;			/* receive signal strength (in dBm) */
20738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8		phy_noise;		/* noise (in dBm) */
20838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
20938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8		n_cap;			/* BSS is 802.11N Capable */
21038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32		nbss_cap;		/* 802.11N+AC BSS Capabilities */
21138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8		ctl_ch;			/* 802.11N BSS control channel number */
212ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8		padding1[3];		/* explicit struct alignment padding */
21338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16		vht_rxmcsmap;		/* VHT rx mcs map (802.11ac VHT_CAP_MCS_MAP_*) */
21438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16		vht_txmcsmap;		/* VHT tx mcs map (802.11ac VHT_CAP_MCS_MAP_*) */
215ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8		flags;			/* flags */
216ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8		vht_cap;		/* BSS is vht capable */
217ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8		reserved[2];		/* Reserved for expansion of BSS properties */
218ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8		basic_mcs[MCSSET_LEN];	/* 802.11N BSS required MCS set */
219ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
220ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint16		ie_offset;		/* offset at which IEs start, from beginning */
221ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32		ie_length;		/* byte length of Information Elements */
222ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	int16		SNR;			/* average SNR of during frame reception */
223ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	/* Add new fields here */
224ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	/* variable length Information Elements */
225b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_bss_info_t;
226b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
227ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt/* bss_info_cap_t flags */
228ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_BSS_FLAGS_FROM_BEACON	0x01	/* bss_info derived from beacon */
229ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_BSS_FLAGS_FROM_CACHE		0x02	/* bss_info collected from cache */
230ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_BSS_FLAGS_RSSI_ONCHANNEL 0x04 /* rssi info was received on channel (vs offchannel) */
231ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
232ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt/* bssinfo flag for nbss_cap */
233ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define VHT_BI_SGI_80MHZ			0x00000100
23438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
23538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef LINUX_POSTMOGRIFY_REMOVAL
23638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
237b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_bsscfg {
23838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	wsec;
23938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	WPA_auth;
24038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	wsec_index;
24138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	associated;
24238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	BSS;
24338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	phytest_on;
24438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr	prev_BSSID;
24538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr	BSSID;
246ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32  targetbss_wpa2_flags;
247ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32 assoc_type;
248ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32 assoc_state;
249b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_bsscfg_t;
250b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
251b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_bss_config {
25238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	atim_window;
25338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	beacon_period;
25438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	chanspec;
255b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_bss_config_t;
256b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
257ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DLOAD_HANDLER_VER			1	/* Downloader version */
258ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DLOAD_FLAG_VER_MASK		0xf000	/* Downloader version mask */
259ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DLOAD_FLAG_VER_SHIFT	12	/* Downloader version shift */
260ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
261ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define DL_CRC_NOT_INUSE 			0x0001
262ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
263ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt/* generic download types & flags */
264ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidtenum {
265ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	DL_TYPE_UCODE = 1,
266ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	DL_TYPE_CLM = 2
267ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt};
268ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
269ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt/* ucode type values */
270ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidtenum {
271ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	UCODE_FW,
272ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	INIT_VALS,
273ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	BS_INIT_VALS
274ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt};
275ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
276ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidtstruct wl_dload_data {
277ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint16 flag;
278ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint16 dload_type;
279ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32 len;
280ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32 crc;
281ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8  data[1];
282ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt};
283ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidttypedef struct wl_dload_data wl_dload_data_t;
284ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
285ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidtstruct wl_ucode_info {
286ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32 ucode_type;
287ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32 num_chunks;
288ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32 chunk_len;
289ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32 chunk_num;
290ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8  data_chunk[1];
291ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt};
292ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidttypedef struct wl_ucode_info wl_ucode_info_t;
293ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
294ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidtstruct wl_clm_dload_info {
295ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32 ds_id;
296ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32 clm_total_len;
297ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32 num_chunks;
298ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32 chunk_len;
299ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32 chunk_offset;
300ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8  data_chunk[1];
301ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt};
302ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidttypedef struct wl_clm_dload_info wl_clm_dload_info_t;
303b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
30438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* LINUX_POSTMOGRIFY_REMOVAL */
30538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
306b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wlc_ssid {
30738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32		SSID_len;
30838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uchar		SSID[DOT11_MAX_SSID_LEN];
309b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wlc_ssid_t;
310b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
31138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef LINUX_POSTMOGRIFY_REMOVAL
312b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
313ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define MAX_PREFERRED_AP_NUM     5
314ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidttypedef struct wlc_fastssidinfo {
315ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32				SSID_channel[MAX_PREFERRED_AP_NUM];
316ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	wlc_ssid_t		SSID_info[MAX_PREFERRED_AP_NUM];
317ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt} wlc_fastssidinfo_t;
318ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
319ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct wnm_url {
320ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8   len;
321ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8   data[1];
322ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt} BWL_POST_PACKED_STRUCT wnm_url_t;
323ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
324ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidttypedef struct chan_scandata {
325ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8		txpower;
326ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8		pad;
327ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	chanspec_t	channel;	/* Channel num, bw, ctrl_sb and band */
328ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32		channel_mintime;
329ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32		channel_maxtime;
330ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt} chan_scandata_t;
331ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
332ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidttypedef enum wl_scan_type {
333ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	EXTDSCAN_FOREGROUND_SCAN,
334ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	EXTDSCAN_BACKGROUND_SCAN,
335ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	EXTDSCAN_FORCEDBACKGROUND_SCAN
336ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt} wl_scan_type_t;
337ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
338ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WLC_EXTDSCAN_MAX_SSID		5
339ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
340ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidttypedef struct wl_extdscan_params {
341ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	int8 		nprobes;		/* 0, passive, otherwise active */
342ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	int8    	split_scan;		/* split scan */
343ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	int8		band;			/* band */
344ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	int8		pad;
345ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	wlc_ssid_t 	ssid[WLC_EXTDSCAN_MAX_SSID]; /* ssid list */
346ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32		tx_rate;		/* in 500ksec units */
347ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	wl_scan_type_t	scan_type;		/* enum */
348ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	int32 		channel_num;
349ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	chan_scandata_t channel_list[1];	/* list of chandata structs */
350ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt} wl_extdscan_params_t;
351ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
352ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_EXTDSCAN_PARAMS_FIXED_SIZE 	(sizeof(wl_extdscan_params_t) - sizeof(chan_scandata_t))
353ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
354b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_BSSTYPE_INFRA 1
355b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_BSSTYPE_INDEP 0
356b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_BSSTYPE_ANY   2
357b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
358ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt/* Bitmask for scan_type */
359ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_SCANFLAGS_PASSIVE	0x01	/* force passive scan */
360ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_SCANFLAGS_RESERVED	0x02	/* Reserved */
361ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_SCANFLAGS_PROHIBITED	0x04	/* allow scanning prohibited channels */
36238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_SCANFLAGS_OFFCHAN	0x08	/* allow scanning/reporting off-channel APs */
36338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_SCANFLAGS_HOTSPOT	0x10	/* automatic ANQP to hotspot APs */
364b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
365ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_SCAN_PARAMS_SSID_MAX 	10
366b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
367b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_scan_params {
36838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	wlc_ssid_t ssid;		/* default: {0, ""} */
36938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr bssid;	/* default: bcast */
37038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 bss_type;			/* default: any,
37138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 * DOT11_BSSTYPE_ANY/INFRASTRUCTURE/INDEPENDENT
37238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 */
37338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 scan_type;		/* flags, 0 use default */
37438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int32 nprobes;			/* -1 use default, number of probes per channel */
37538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int32 active_time;		/* -1 use default, dwell time per channel for
37638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 * active scanning
37738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 */
37838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int32 passive_time;		/* -1 use default, dwell time per channel
37938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 * for passive scanning
38038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 */
38138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int32 home_time;		/* -1 use default, dwell time for the home channel
38238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 * between channel scans
38338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 */
38438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int32 channel_num;		/* count of channels and ssids that follow
38538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 *
38638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 * low half is count of channels in channel_list, 0
38738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 * means default (use all available channels)
38838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 *
38938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 * high half is entries in wlc_ssid_t array that
39038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 * follows channel_list, aligned for int32 (4 bytes)
39138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 * meaning an odd channel count implies a 2-byte pad
39238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 * between end of channel_list and first ssid
39338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 *
39438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 * if ssid count is zero, single ssid in the fixed
39538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 * parameter portion is assumed, otherwise ssid in
39638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 * the fixed portion is ignored
39738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 */
39838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 channel_list[1];		/* list of chanspecs */
399b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_scan_params_t;
400b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
40138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* size of wl_scan_params not including variable length array */
402b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_SCAN_PARAMS_FIXED_SIZE 64
403b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
40438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* masks for channel and ssid count */
405b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_SCAN_PARAMS_COUNT_MASK 0x0000ffff
406b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_SCAN_PARAMS_NSSID_SHIFT 16
407b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
408b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_SCAN_ACTION_START      1
409b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_SCAN_ACTION_CONTINUE   2
410b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_SCAN_ACTION_ABORT      3
411b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
412b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define ISCAN_REQ_VERSION 1
413b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
41438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* incremental scan struct */
415b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_iscan_params {
416b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 version;
417b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 action;
418b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 scan_duration;
419b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	wl_scan_params_t params;
420b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_iscan_params_t;
421b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
42238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* 3 fields + size of wl_scan_params, not including variable length array */
423b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_ISCAN_PARAMS_FIXED_SIZE (OFFSETOF(wl_iscan_params_t, params) + sizeof(wlc_ssid_t))
42438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* LINUX_POSTMOGRIFY_REMOVAL */
425b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
426b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_scan_results {
427b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 buflen;
428b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 version;
429b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 count;
430b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	wl_bss_info_t bss_info[1];
431b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_scan_results_t;
432b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
43338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef LINUX_POSTMOGRIFY_REMOVAL
43438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* size of wl_scan_results not including variable length array */
435b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_SCAN_RESULTS_FIXED_SIZE (sizeof(wl_scan_results_t) - sizeof(wl_bss_info_t))
436b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
43738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* wl_iscan_results status values */
43838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_SCAN_RESULTS_SUCCESS	0
43938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_SCAN_RESULTS_PARTIAL	1
44038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_SCAN_RESULTS_PENDING	2
44138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_SCAN_RESULTS_ABORTED	3
442b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_SCAN_RESULTS_NO_MEM  4
443b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
44438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Used in EXT_STA */
445b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define DNGL_RXCTXT_SIZE	45
446b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
447b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
448b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define ESCAN_REQ_VERSION 1
449b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
450b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_escan_params {
451b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 version;
452b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 action;
453b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 sync_id;
454b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	wl_scan_params_t params;
455b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_escan_params_t;
456b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
457b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_ESCAN_PARAMS_FIXED_SIZE (OFFSETOF(wl_escan_params_t, params) + sizeof(wlc_ssid_t))
458b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
459b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_escan_result {
460b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 buflen;
461b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 version;
462b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 sync_id;
463b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 bss_count;
464b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	wl_bss_info_t bss_info[1];
465b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_escan_result_t;
466b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
467b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_ESCAN_RESULTS_FIXED_SIZE (sizeof(wl_escan_result_t) - sizeof(wl_bss_info_t))
468b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
46938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* incremental scan results struct */
470b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_iscan_results {
471b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 status;
472b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	wl_scan_results_t results;
473b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_iscan_results_t;
474b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
47538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* size of wl_iscan_results not including variable length array */
476b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_ISCAN_RESULTS_FIXED_SIZE \
477b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	(WL_SCAN_RESULTS_FIXED_SIZE + OFFSETOF(wl_iscan_results_t, results))
478b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
479b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_probe_params {
480b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	wlc_ssid_t ssid;
481b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	struct ether_addr bssid;
482b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	struct ether_addr mac;
483b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_probe_params_t;
48438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* LINUX_POSTMOGRIFY_REMOVAL */
485b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
486ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_MAXRATES_IN_SET		16	/* max # of rates in a rateset */
487b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_rateset {
488ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32	count;			/* # rates in this set */
489ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8	rates[WL_MAXRATES_IN_SET];	/* rates in 500kbps units w/hi bit set if basic */
490b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_rateset_t;
491b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
492b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_rateset_args {
493ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32	count;			/* # rates in this set */
494ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8	rates[WL_MAXRATES_IN_SET];	/* rates in 500kbps units w/hi bit set if basic */
495ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8   mcs[MCSSET_LEN];        /* supported mcs index bit map */
49638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 vht_mcs[VHT_CAP_MCS_MAP_NSS_MAX]; /* supported mcs index bit map per nss */
497b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_rateset_args_t;
498b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
49938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* uint32 list */
500b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_uint32_list {
50138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* in - # of elements, out - # of entries */
502b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 count;
50338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* variable length uint32 list */
504b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 element[1];
505b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_uint32_list_t;
506b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
50738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* used for association with a specific BSSID and chanspec list */
508b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_assoc_params {
509ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	struct ether_addr bssid;	/* 00:00:00:00:00:00: broadcast scan */
51038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 bssid_cnt;		/* 0: use chanspec_num, and the single bssid,
51138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 * otherwise count of chanspecs in chanspec_list
51238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 * AND paired bssids following chanspec_list
51338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 */
514ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	int32 chanspec_num;		/* 0: all available channels,
515ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt					 * otherwise count of chanspecs in chanspec_list
516ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt					 */
517ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	chanspec_t chanspec_list[1];	/* list of chanspecs */
518b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_assoc_params_t;
519ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_ASSOC_PARAMS_FIXED_SIZE 	OFFSETOF(wl_assoc_params_t, chanspec_list)
520b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
52138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* used for reassociation/roam to a specific BSSID and channel */
522b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef wl_assoc_params_t wl_reassoc_params_t;
52338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_REASSOC_PARAMS_FIXED_SIZE	WL_ASSOC_PARAMS_FIXED_SIZE
524b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
52538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* used for association to a specific BSSID and channel */
526b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef wl_assoc_params_t wl_join_assoc_params_t;
52738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_JOIN_ASSOC_PARAMS_FIXED_SIZE	WL_ASSOC_PARAMS_FIXED_SIZE
528b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
52938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* used for join with or without a specific bssid and channel list */
530b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_join_params {
531b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	wlc_ssid_t ssid;
53238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	wl_assoc_params_t params;	/* optional field, but it must include the fixed portion
53338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 * of the wl_assoc_params_t struct when it does present.
53438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 */
535b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_join_params_t;
536b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
53738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef  LINUX_POSTMOGRIFY_REMOVAL
538ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_JOIN_PARAMS_FIXED_SIZE 	(OFFSETOF(wl_join_params_t, params) + \
539ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt					 WL_ASSOC_PARAMS_FIXED_SIZE)
54038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* scan params for extended join */
541b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_join_scan_params {
54238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 scan_type;		/* 0 use default, active or passive scan */
54338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int32 nprobes;			/* -1 use default, number of probes per channel */
54438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int32 active_time;		/* -1 use default, dwell time per channel for
54538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 * active scanning
54638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 */
54738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int32 passive_time;		/* -1 use default, dwell time per channel
54838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 * for passive scanning
54938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 */
55038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int32 home_time;		/* -1 use default, dwell time for the home channel
55138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 * between channel scans
55238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 */
553b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_join_scan_params_t;
554b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
55538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* extended join params */
556b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_extjoin_params {
55738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	wlc_ssid_t ssid;		/* {0, ""}: wildcard scan */
558b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	wl_join_scan_params_t scan;
55938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	wl_join_assoc_params_t assoc;	/* optional field, but it must include the fixed portion
56038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 * of the wl_join_assoc_params_t struct when it does
56138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 * present.
56238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 */
563b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_extjoin_params_t;
564ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_EXTJOIN_PARAMS_FIXED_SIZE 	(OFFSETOF(wl_extjoin_params_t, assoc) + \
565ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt					 WL_JOIN_ASSOC_PARAMS_FIXED_SIZE)
566b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
56738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* All builds use the new 11ac ratespec/chanspec */
56838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#undef  D11AC_IOTYPES
56938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define D11AC_IOTYPES
57038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
57138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef D11AC_IOTYPES
57238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
57338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* defines used by the nrate iovar */
57438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NRATE_MCS_INUSE	0x00000080	/* MSC in use,indicates b0-6 holds an mcs */
57538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NRATE_RATE_MASK 0x0000007f	/* rate/mcs value */
57638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NRATE_STF_MASK	0x0000ff00	/* stf mode mask: siso, cdd, stbc, sdm */
57738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NRATE_STF_SHIFT	8			/* stf mode shift */
57838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NRATE_OVERRIDE	0x80000000	/* bit indicates override both rate & mode */
57938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NRATE_OVERRIDE_MCS_ONLY 0x40000000 /* bit indicate to override mcs only */
58038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NRATE_SGI_MASK  0x00800000      /* sgi mode */
58138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NRATE_SGI_SHIFT 23              /* sgi mode */
58238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NRATE_LDPC_CODING 0x00400000    /* bit indicates adv coding in use */
58338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NRATE_LDPC_SHIFT 22             /* ldpc shift */
58438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
58538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NRATE_STF_SISO	0		/* stf mode SISO */
58638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NRATE_STF_CDD	1		/* stf mode CDD */
58738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NRATE_STF_STBC	2		/* stf mode STBC */
58838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NRATE_STF_SDM	3		/* stf mode SDM */
58938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
59038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#else /* D11AC_IOTYPES */
59138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
59238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WL_RSPEC defines for rate information */
59338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RSPEC_RATE_MASK      0x000000FF      /* rate or HT MCS value */
59438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RSPEC_VHT_MCS_MASK   0x0000000F      /* VHT MCS value */
59538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RSPEC_VHT_NSS_MASK   0x000000F0      /* VHT Nss value */
59638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RSPEC_VHT_NSS_SHIFT  4               /* VHT Nss value shift */
59738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RSPEC_TXEXP_MASK     0x00000300
59838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RSPEC_TXEXP_SHIFT    8
59938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RSPEC_BW_MASK        0x00070000      /* bandwidth mask */
60038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RSPEC_BW_SHIFT       16              /* bandwidth shift */
60138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RSPEC_STBC           0x00100000      /* STBC encoding, Nsts = 2 x Nss */
60238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RSPEC_TXBF           0x00200000      /* bit indicates TXBF mode */
60338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RSPEC_LDPC           0x00400000      /* bit indicates adv coding in use */
60438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RSPEC_SGI            0x00800000      /* Short GI mode */
60538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RSPEC_ENCODING_MASK  0x03000000      /* Encoding of Rate/MCS field */
60638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RSPEC_OVERRIDE_RATE  0x40000000      /* bit indicate to override mcs only */
60738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RSPEC_OVERRIDE_MODE  0x80000000      /* bit indicates override both rate & mode */
60838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
60938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WL_RSPEC_ENCODING field defs */
61038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RSPEC_ENCODE_RATE    0x00000000      /* Legacy rate is stored in RSPEC_RATE_MASK */
61138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RSPEC_ENCODE_HT      0x01000000      /* HT MCS is stored in RSPEC_RATE_MASK */
61238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RSPEC_ENCODE_VHT     0x02000000      /* VHT MCS and Nss is stored in RSPEC_RATE_MASK */
61338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
61438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WL_RSPEC_BW field defs */
61538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RSPEC_BW_UNSPECIFIED 0
61638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RSPEC_BW_20MHZ       0x00010000
61738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RSPEC_BW_40MHZ       0x00020000
61838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RSPEC_BW_80MHZ       0x00030000
61938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RSPEC_BW_160MHZ      0x00040000
62038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
62138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Legacy defines for the nrate iovar */
62238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OLD_NRATE_MCS_INUSE         0x00000080 /* MSC in use,indicates b0-6 holds an mcs */
62338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OLD_NRATE_RATE_MASK         0x0000007f /* rate/mcs value */
62438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OLD_NRATE_STF_MASK          0x0000ff00 /* stf mode mask: siso, cdd, stbc, sdm */
62538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OLD_NRATE_STF_SHIFT         8          /* stf mode shift */
62638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OLD_NRATE_OVERRIDE          0x80000000 /* bit indicates override both rate & mode */
62738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OLD_NRATE_OVERRIDE_MCS_ONLY 0x40000000 /* bit indicate to override mcs only */
62838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OLD_NRATE_SGI               0x00800000 /* sgi mode */
62938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OLD_NRATE_LDPC_CODING       0x00400000 /* bit indicates adv coding in use */
63038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
63138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OLD_NRATE_STF_SISO	0		/* stf mode SISO */
63238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OLD_NRATE_STF_CDD	1		/* stf mode CDD */
63338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OLD_NRATE_STF_STBC	2		/* stf mode STBC */
63438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OLD_NRATE_STF_SDM	3		/* stf mode SDM */
63538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
63638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* D11AC_IOTYPES */
63738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
63838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ANTENNA_NUM_1	1		/* total number of antennas to be used */
63938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ANTENNA_NUM_2	2
64038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ANTENNA_NUM_3	3
64138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ANTENNA_NUM_4	4
64238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
64338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ANT_SELCFG_AUTO		0x80	/* bit indicates antenna sel AUTO */
64438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ANT_SELCFG_MASK		0x33	/* antenna configuration mask */
64538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ANT_SELCFG_MAX		4	/* max number of antenna configurations */
64638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ANT_SELCFG_TX_UNICAST	0	/* unicast tx antenna configuration */
64738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ANT_SELCFG_RX_UNICAST	1	/* unicast rx antenna configuration */
64838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ANT_SELCFG_TX_DEF	2	/* default tx antenna configuration */
64938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ANT_SELCFG_RX_DEF	3	/* default rx antenna configuration */
65038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
65138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define MAX_STREAMS_SUPPORTED	4	/* max number of streams supported */
652b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
653b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct {
65438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 ant_config[ANT_SELCFG_MAX];	/* antenna configuration */
65538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 num_antcfg;	/* number of available antenna configurations */
656b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wlc_antselcfg_t;
657b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
65838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define HIGHEST_SINGLE_STREAM_MCS	7 /* MCS values greater than this enable multiple streams */
659b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
66038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define MAX_CCA_CHANNELS 38	/* Max number of 20 Mhz wide channels */
66138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define MAX_CCA_SECS     60	/* CCA keeps this many seconds history */
662b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
66338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define IBSS_MED        15	/* Mediom in-bss congestion percentage */
66438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define IBSS_HI         25	/* Hi in-bss congestion percentage */
665b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define OBSS_MED        12
666b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define OBSS_HI         25
667b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define INTERFER_MED    5
668b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define INTERFER_HI     10
669b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
67038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define  CCA_FLAG_2G_ONLY		0x01	/* Return a channel from 2.4 Ghz band */
67138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define  CCA_FLAG_5G_ONLY		0x02	/* Return a channel from 2.4 Ghz band */
67238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define  CCA_FLAG_IGNORE_DURATION	0x04	/* Ignore dwell time for each channel */
67338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define  CCA_FLAGS_PREFER_1_6_11	0x10
67438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define  CCA_FLAG_IGNORE_INTERFER 	0x20 /* do not exlude channel based on interfer level */
675b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
67638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CCA_ERRNO_BAND 		1	/* After filtering for band pref, no choices left */
67738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CCA_ERRNO_DURATION	2	/* After filtering for duration, no choices left */
67838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CCA_ERRNO_PREF_CHAN	3	/* After filtering for chan pref, no choices left */
67938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CCA_ERRNO_INTERFER	4	/* After filtering for interference, no choices left */
68038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CCA_ERRNO_TOO_FEW	5	/* Only 1 channel was input */
681b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
682b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct {
68338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 duration;	/* millisecs spent sampling this channel */
68438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 congest_ibss;	/* millisecs in our bss (presumably this traffic will */
68538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				/*  move if cur bss moves channels) */
68638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 congest_obss;	/* traffic not in our bss */
68738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 interference;	/* millisecs detecting a non 802.11 interferer. */
68838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 timestamp;	/* second timestamp */
689b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} cca_congest_t;
690b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
691b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct {
69238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	chanspec_t chanspec;	/* Which channel? */
69338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 num_secs;		/* How many secs worth of data */
69438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	cca_congest_t  secs[1];	/* Data */
695b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} cca_congest_channel_req_t;
696b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
69738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* interference source detection and identification mode */
698ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define ITFR_MODE_DISABLE	0	/* disable feature */
699ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define ITFR_MODE_MANUAL_ENABLE	1	/* enable manual detection */
700ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define ITFR_MODE_AUTO_ENABLE	2	/* enable auto detection */
701ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
702ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt/* interference sources */
703ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidtenum interference_source {
704ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	ITFR_NONE = 0,		/* interference */
705ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	ITFR_PHONE,		/* wireless phone */
706ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	ITFR_VIDEO_CAMERA,	/* wireless video camera */
707ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	ITFR_MICROWAVE_OVEN,	/* microwave oven */
708ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	ITFR_BABY_MONITOR,	/* wireless baby monitor */
709ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	ITFR_BLUETOOTH,		/* bluetooth */
710ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	ITFR_VIDEO_CAMERA_OR_BABY_MONITOR,	/* wireless camera or baby monitor */
711ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	ITFR_BLUETOOTH_OR_BABY_MONITOR,	/* bluetooth or baby monitor */
712ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	ITFR_VIDEO_CAMERA_OR_PHONE,	/* video camera or phone */
713ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	ITFR_UNIDENTIFIED	/* interference from unidentified source */
714ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt};
715ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
716ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt/* structure for interference source report */
717ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidttypedef struct {
718ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32 flags;	/* flags.  bit definitions below */
719ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32 source;	/* last detected interference source */
720ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32 timestamp;	/* second timestamp on interferenced flag change */
721ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt} interference_source_rep_t;
722ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
723ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt/* bit definitions for flags in interference source report */
724ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define ITFR_INTERFERENCED	1	/* interference detected */
725ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define ITFR_HOME_CHANNEL	2	/* home channel has interference */
726ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define ITFR_NOISY_ENVIRONMENT	4	/* noisy environemnt so feature stopped */
72738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
72838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* LINUX_POSTMOGRIFY_REMOVAL */
72938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
73038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_CNTRY_BUF_SZ	4		/* Country string is 3 bytes + NUL */
73138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
73238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef LINUX_POSTMOGRIFY_REMOVAL
733b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
734b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_country {
73538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	char country_abbrev[WLC_CNTRY_BUF_SZ];	/* nul-terminated country code used in
73638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt						 * the Country IE
73738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt						 */
73838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int32 rev;				/* revision specifier for ccode
73938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt						 * on set, -1 indicates unspecified.
74038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt						 * on get, rev >= 0
74138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt						 */
74238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	char ccode[WLC_CNTRY_BUF_SZ];		/* nul-terminated built-in country code.
74338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt						 * variable length, but fixed size in
74438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt						 * struct allows simple allocation for
74538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt						 * expected country strings <= 3 chars.
74638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt						 */
747b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_country_t;
748b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
749b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_channels_in_country {
750b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 buflen;
751b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 band;
752b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	char country_abbrev[WLC_CNTRY_BUF_SZ];
753b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 count;
754b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 channel[1];
755b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_channels_in_country_t;
756b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
757b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_country_list {
758b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 buflen;
759b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 band_set;
760b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 band;
761b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 count;
762b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	char country_abbrev[1];
763b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_country_list_t;
764b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
76538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_NUM_RPI_BINS		8
76638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RM_TYPE_BASIC	1
76738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RM_TYPE_CCA		2
76838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RM_TYPE_RPI		3
769b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
77038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RM_FLAG_PARALLEL	(1<<0)
771b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
77238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RM_FLAG_LATE		(1<<1)
77338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RM_FLAG_INCAPABLE	(1<<2)
77438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RM_FLAG_REFUSED	(1<<3)
775b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
776b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_rm_req_elt {
77738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8	type;
77838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8	flags;
77938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	chanspec_t	chanspec;
78038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	token;		/* token for this measurement */
78138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	tsf_h;		/* TSF high 32-bits of Measurement start time */
78238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	tsf_l;		/* TSF low 32-bits */
78338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	dur;		/* TUs */
784b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_rm_req_elt_t;
785b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
786b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_rm_req {
78738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	token;		/* overall measurement set token */
78838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	count;		/* number of measurement requests */
78938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	void	*cb;		/* completion callback function: may be NULL */
79038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	void	*cb_arg;	/* arg to completion callback function */
79138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	wl_rm_req_elt_t	req[1];	/* variable length block of requests */
792b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_rm_req_t;
79338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RM_REQ_FIXED_LEN	OFFSETOF(wl_rm_req_t, req)
794b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
795b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_rm_rep_elt {
79638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8	type;
79738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8	flags;
79838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	chanspec_t	chanspec;
79938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	token;		/* token for this measurement */
80038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	tsf_h;		/* TSF high 32-bits of Measurement start time */
80138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	tsf_l;		/* TSF low 32-bits */
80238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	dur;		/* TUs */
80338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	len;		/* byte length of data block */
80438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8	data[1];	/* variable length data block */
805b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_rm_rep_elt_t;
80638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RM_REP_ELT_FIXED_LEN	24	/* length excluding data block */
807b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
808b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_RPI_REP_BIN_NUM 8
809b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_rm_rpi_rep {
81038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8	rpi[WL_RPI_REP_BIN_NUM];
81138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8	rpi_max[WL_RPI_REP_BIN_NUM];
812b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_rm_rpi_rep_t;
813b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
814b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_rm_rep {
81538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	token;		/* overall measurement set token */
81638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	len;		/* length of measurement report block */
81738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	wl_rm_rep_elt_t	rep[1];	/* variable length block of reports */
818b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_rm_rep_t;
81938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RM_REP_FIXED_LEN	8
820b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
821b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
822b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef enum sup_auth_status {
82338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* Basic supplicant authentication states */
824b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	WLC_SUP_DISCONNECTED = 0,
825b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	WLC_SUP_CONNECTING,
826b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	WLC_SUP_IDREQUIRED,
827b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	WLC_SUP_AUTHENTICATING,
828b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	WLC_SUP_AUTHENTICATED,
829b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	WLC_SUP_KEYXCHANGE,
830b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	WLC_SUP_KEYED,
831b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	WLC_SUP_TIMEOUT,
832b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	WLC_SUP_LAST_BASIC_STATE,
833b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
83438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* Extended supplicant authentication states */
83538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* Waiting to receive handshake msg M1 */
836b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	WLC_SUP_KEYXCHANGE_WAIT_M1 = WLC_SUP_AUTHENTICATED,
83738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* Preparing to send handshake msg M2 */
838b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	WLC_SUP_KEYXCHANGE_PREP_M2 = WLC_SUP_KEYXCHANGE,
83938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* Waiting to receive handshake msg M3 */
840b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	WLC_SUP_KEYXCHANGE_WAIT_M3 = WLC_SUP_LAST_BASIC_STATE,
84138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	WLC_SUP_KEYXCHANGE_PREP_M4,	/* Preparing to send handshake msg M4 */
84238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	WLC_SUP_KEYXCHANGE_WAIT_G1,	/* Waiting to receive handshake msg G1 */
84338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	WLC_SUP_KEYXCHANGE_PREP_G2	/* Preparing to send handshake msg G2 */
844b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} sup_auth_status_t;
84538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* LINUX_POSTMOGRIFY_REMOVAL */
84638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
84738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Enumerate crypto algorithms */
84838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	CRYPTO_ALGO_OFF			0
84938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	CRYPTO_ALGO_WEP1		1
85038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	CRYPTO_ALGO_TKIP		2
85138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	CRYPTO_ALGO_WEP128		3
85238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CRYPTO_ALGO_AES_CCM		4
85338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CRYPTO_ALGO_AES_OCB_MSDU	5
85438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CRYPTO_ALGO_AES_OCB_MPDU	6
85538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#if !defined(BCMEXTCCX)
85638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CRYPTO_ALGO_NALG		7
85738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#else
85838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CRYPTO_ALGO_CKIP		7
85938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CRYPTO_ALGO_CKIP_MMH		8
86038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CRYPTO_ALGO_WEP_MMH		9
86138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CRYPTO_ALGO_NALG		10
86238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif
863ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define CRYPTO_ALGO_PMK			12	/* for 802.1x supp to set PMK before 4-way */
86438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CRYPTO_ALGO_BIP			13  /* 802.11w BIP (aes cmac) */
865b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
86638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WSEC_GEN_MIC_ERROR	0x0001
86738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WSEC_GEN_REPLAY		0x0002
86838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WSEC_GEN_ICV_ERROR	0x0004
869ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WSEC_GEN_MFP_ACT_ERROR	0x0008
870ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WSEC_GEN_MFP_DISASSOC_ERROR	0x0010
871ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WSEC_GEN_MFP_DEAUTH_ERROR	0x0020
872b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
87338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_SOFT_KEY	(1 << 0)	/* Indicates this key is using soft encrypt */
87438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PRIMARY_KEY	(1 << 1)	/* Indicates this key is the primary (ie tx) key */
87538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#if defined(BCMEXTCCX)
87638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_CKIP_KP	(1 << 4)	/* CMIC */
87738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_CKIP_MMH	(1 << 5)	/* CKIP */
87838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#else
87938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_KF_RES_4	(1 << 4)	/* Reserved for backward compat */
88038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_KF_RES_5	(1 << 5)	/* Reserved for backward compat */
88138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif
88238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_IBSS_PEER_GROUP_KEY	(1 << 6)	/* Indicates a group key for a IBSS PEER */
883b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
884b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_wsec_key {
88538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32		index;		/* key index */
88638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32		len;		/* key length */
88738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8		data[DOT11_MAX_KEY_SIZE];	/* key data */
88838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32		pad_1[18];
88938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32		algo;		/* CRYPTO_ALGO_AES_CCM, CRYPTO_ALGO_WEP128, etc */
89038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32		flags;		/* misc flags */
89138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32		pad_2[2];
89238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int		pad_3;
89338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int		iv_initialized;	/* has IV been initialized already? */
89438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int		pad_4;
89538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* Rx IV */
896b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	struct {
89738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt		uint32	hi;		/* upper 32 bits of IV */
89838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt		uint16	lo;		/* lower 16 bits of IV */
899b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	} rxiv;
90038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32		pad_5[2];
90138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr ea;		/* per station */
902b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_wsec_key_t;
903b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
90438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WSEC_MIN_PSK_LEN	8
90538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WSEC_MAX_PSK_LEN	64
906b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
90738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Flag for key material needing passhash'ing */
90838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WSEC_PASSPHRASE		(1<<0)
909b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
91038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* receptacle for WLC_SET_WSEC_PMK parameter */
911b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct {
91238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	ushort	key_len;		/* octets in key material */
91338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	ushort	flags;			/* key handling qualification */
91438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8	key[WSEC_MAX_PSK_LEN];	/* PMK material */
915b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wsec_pmk_t;
916b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
91738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* wireless security bitvec */
91838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WEP_ENABLED		0x0001
91938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TKIP_ENABLED		0x0002
92038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define AES_ENABLED		0x0004
92138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WSEC_SWFLAG		0x0008
92238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define SES_OW_ENABLED		0x0040	/* to go into transition mode without setting wep */
923b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
92438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* wsec macros for operating on the above definitions */
925ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WSEC_WEP_ENABLED(wsec)	((wsec) & WEP_ENABLED)
926ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WSEC_TKIP_ENABLED(wsec)	((wsec) & TKIP_ENABLED)
927ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WSEC_AES_ENABLED(wsec)	((wsec) & AES_ENABLED)
928b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
92938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WSEC_ENABLED(wsec)	((wsec) & (WEP_ENABLED | TKIP_ENABLED | AES_ENABLED))
93038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WSEC_SES_OW_ENABLED(wsec)	((wsec) & SES_OW_ENABLED)
93138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
93238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define MFP_CAPABLE		0x0200
93338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define MFP_REQUIRED	0x0400
93438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define MFP_SHA256		0x0800 /* a special configuration for STA for WIFI test tool */
93538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
93638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WPA authentication mode bitvec */
93738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WPA_AUTH_DISABLED	0x0000	/* Legacy (i.e., non-WPA) */
93838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WPA_AUTH_NONE		0x0001	/* none (IBSS) */
93938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WPA_AUTH_UNSPECIFIED	0x0002	/* over 802.1x */
94038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WPA_AUTH_PSK		0x0004	/* Pre-shared key */
94138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#if defined(BCMEXTCCX)
94238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WPA_AUTH_CCKM		0x0008	/* CCKM */
94338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WPA2_AUTH_CCKM		0x0010	/* CCKM2 */
94438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif
94538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WPA_AUTH_8021X 0x0020 */	/* 802.1x, reserved */
94638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WPA2_AUTH_UNSPECIFIED	0x0040	/* over 802.1x */
94738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WPA2_AUTH_PSK		0x0080	/* Pre-shared key */
94838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define BRCM_AUTH_PSK           0x0100  /* BRCM specific PSK */
94938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define BRCM_AUTH_DPT		0x0200	/* DPT PSK without group keys */
95038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WPA2_AUTH_MFP           0x1000  /* MFP (11w) in contrast to CCX */
95138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WPA2_AUTH_TPK		0x2000 	/* TDLS Peer Key */
95238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WPA2_AUTH_FT		0x4000 	/* Fast Transition. */
95338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WPA_AUTH_PFN_ANY	0xffffffff	/* for PFN, match only ssid */
95438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
95538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* pmkid */
95638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	MAXPMKID		16
957b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
958b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct _pmkid {
95938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr	BSSID;
96038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8			PMKID[WPA2_PMKID_LEN];
961b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} pmkid_t;
962b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
963b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct _pmkid_list {
96438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	npmkid;
96538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	pmkid_t	pmkid[1];
966b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} pmkid_list_t;
967b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
968b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct _pmkid_cand {
96938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr	BSSID;
97038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8			preauth;
971b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} pmkid_cand_t;
972b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
973b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct _pmkid_cand_list {
97438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	npmkid_cand;
97538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	pmkid_cand_t	pmkid_cand[1];
976b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} pmkid_cand_list_t;
977b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
97838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef LINUX_POSTMOGRIFY_REMOVAL
979ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidttypedef struct wl_assoc_info {
980ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32		req_len;
981ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32		resp_len;
982ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32		flags;
983ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	struct dot11_assoc_req req;
984ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	struct ether_addr reassoc_bssid; /* used in reassoc's */
985ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	struct dot11_assoc_resp resp;
986ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt} wl_assoc_info_t;
987b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
988ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt/* flags */
989ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WLC_ASSOC_REQ_IS_REASSOC 0x01 /* assoc req was actually a reassoc */
990b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
991ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidttypedef struct wl_led_info {
992ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32      index;      /* led index */
993ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32      behavior;
994ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8       activehi;
995ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt} wl_led_info_t;
996b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
997ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
998ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt/* srom read/write struct passed through ioctl */
999ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidttypedef struct {
1000ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint	byteoff;	/* byte offset */
1001ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint	nbytes;		/* number of bytes */
1002ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint16	buf[1];
1003ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt} srom_rw_t;
1004ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
1005ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt/* similar cis (srom or otp) struct [iovar: may not be aligned] */
1006ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidttypedef struct {
1007ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32	source;		/* cis source */
1008ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32	byteoff;	/* byte offset */
1009ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32	nbytes;		/* number of bytes */
1010ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	/* data follows here */
1011ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt} cis_rw_t;
1012ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
1013ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WLC_CIS_DEFAULT	0	/* built-in default */
1014ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WLC_CIS_SROM	1	/* source is sprom */
1015ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WLC_CIS_OTP	2	/* source is otp */
1016ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
1017ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt/* R_REG and W_REG struct passed through ioctl */
1018ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidttypedef struct {
1019ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32	byteoff;	/* byte offset of the field in d11regs_t */
1020ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32	val;		/* read/write value of the field */
1021ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32	size;		/* sizeof the field */
1022ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint	band;		/* band (optional) */
1023ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt} rw_reg_t;
1024ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
1025ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt/* Structure used by GET/SET_ATTEN ioctls - it controls power in b/g-band */
1026ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt/* PCL - Power Control Loop */
1027ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt/* current gain setting is replaced by user input */
1028ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_ATTEN_APP_INPUT_PCL_OFF	0	/* turn off PCL, apply supplied input */
1029ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_ATTEN_PCL_ON			1	/* turn on PCL */
1030ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt/* current gain setting is maintained */
1031ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_ATTEN_PCL_OFF		2	/* turn off PCL. */
1032ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
1033ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidttypedef struct {
1034ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint16	auto_ctrl;	/* WL_ATTEN_XX */
1035ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint16	bb;		/* Baseband attenuation */
1036ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint16	radio;		/* Radio attenuation */
1037ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint16	txctl1;		/* Radio TX_CTL1 value */
1038ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt} atten_t;
1039ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
1040ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt/* Per-AC retry parameters */
1041ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidtstruct wme_tx_params_s {
1042ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8  short_retry;
1043ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8  short_fallback;
1044ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8  long_retry;
1045ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8  long_fallback;
1046ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint16 max_rate;  /* In units of 512 Kbps */
1047ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt};
1048ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
1049ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidttypedef struct wme_tx_params_s wme_tx_params_t;
1050ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
1051ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_WME_TX_PARAMS_IO_BYTES (sizeof(wme_tx_params_t) * AC_COUNT)
1052ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
105338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wl_plc_nodelist {
105438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint count;			/* Number of nodes */
105538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct _node {
105638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt		struct ether_addr ea;	/* Node ether address */
105738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt		uint32 node_type;	/* Node type */
105838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt		uint32 cost;		/* PLC affinity */
105938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	} node[1];
106038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_plc_nodelist_t;
106138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
106238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wl_plc_params {
106338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	cmd;			/* Command */
106438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	bool	plc_failover;		/* PLC failover control/status */
106538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct	ether_addr node_ea;	/* Node ether address */
106638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	cost;			/* Link cost or mac cost */
106738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_plc_params_t;
106838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
106938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	PLC_CMD_FAILOVER	1
107038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	PLC_CMD_MAC_COST	2
107138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	PLC_CMD_LINK_COST	3
107238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	PLC_CMD_NODE_LIST	4
107338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
107438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NODE_TYPE_UNKNOWN	0	/* Unknown link */
107538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NODE_TYPE_WIFI_ONLY	1	/* Pure Wireless STA node */
107638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NODE_TYPE_PLC_ONLY	2	/* Pure PLC only node */
107738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NODE_TYPE_WIFI_PLC	3	/* WiFi PLC capable node */
107838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
1079ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt/* defines used by poweridx iovar - it controls power in a-band */
1080ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt/* current gain setting is maintained */
1081ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_PWRIDX_PCL_OFF	-2	/* turn off PCL.  */
1082ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_PWRIDX_PCL_ON	-1	/* turn on PCL */
1083ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_PWRIDX_LOWER_LIMIT	-2	/* lower limit */
1084ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_PWRIDX_UPPER_LIMIT	63	/* upper limit */
1085ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt/* value >= 0 causes
1086ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt *	- input to be set to that value
1087ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt *	- PCL to be off
1088ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt */
1089ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
1090ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt/* Used to get specific link/ac parameters */
1091ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidttypedef struct {
1092ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	int ac;
1093ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint8 val;
1094ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	struct ether_addr ea;
1095ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt} link_val_t;
1096ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
1097ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define BCM_MAC_STATUS_INDICATION	(0x40010200L)
1098ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
1099ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidttypedef struct {
1100ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint16			ver;		/* version of this struct */
1101ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint16			len;		/* length in bytes of this structure */
1102ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint16			cap;		/* sta's advertised capabilities */
1103ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32			flags;		/* flags defined below */
1104ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32			idle;		/* time since data pkt rx'd from sta */
1105ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	struct ether_addr	ea;		/* Station address */
1106ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	wl_rateset_t		rateset;	/* rateset in use */
1107ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32			in;		/* seconds elapsed since associated */
1108ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32			listen_interval_inms; /* Min Listen interval in ms for this STA */
1109ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32			tx_pkts;	/* # of packets transmitted */
1110ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32			tx_failures;	/* # of packets failed */
1111ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32			rx_ucast_pkts;	/* # of unicast packets received */
1112ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32			rx_mcast_pkts;	/* # of multicast packets received */
1113ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32			tx_rate;	/* Rate of last successful tx frame */
1114ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32			rx_rate;	/* Rate of last successful rx frame */
1115ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32			rx_decrypt_succeeds;	/* # of packet decrypted successfully */
1116ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt	uint32			rx_decrypt_failures;	/* # of packet decrypted unsuccessfully */
1117ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt} sta_info_t;
1118ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
1119ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_OLD_STAINFO_SIZE	OFFSETOF(sta_info_t, tx_pkts)
1120ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
1121ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_STA_VER		3
1122ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
1123ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt/* Flags for sta_info_t indicating properties of STA */
1124ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_STA_BRCM		0x1		/* Running a Broadcom driver */
1125ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_STA_WME		0x2		/* WMM association */
1126ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_STA_UNUSED		0x4
1127ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_STA_AUTHE		0x8		/* Authenticated */
1128ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_STA_ASSOC		0x10		/* Associated */
1129ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_STA_AUTHO		0x20		/* Authorized */
1130ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_STA_WDS		0x40		/* Wireless Distribution System */
1131ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_STA_WDS_LINKUP	0x80		/* WDS traffic/probes flowing properly */
1132ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_STA_PS		0x100		/* STA is in power save mode from AP's viewpoint */
1133ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_STA_APSD_BE		0x200		/* APSD delv/trigger for AC_BE is default enabled */
1134ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_STA_APSD_BK		0x400		/* APSD delv/trigger for AC_BK is default enabled */
1135ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_STA_APSD_VI		0x800		/* APSD delv/trigger for AC_VI is default enabled */
1136ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_STA_APSD_VO		0x1000		/* APSD delv/trigger for AC_VO is default enabled */
1137ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_STA_N_CAP		0x2000		/* STA 802.11n capable */
1138ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_STA_SCBSTATS		0x4000		/* Per STA debug stats */
1139ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
1140ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WL_WDS_LINKUP		WL_STA_WDS_LINKUP	/* deprecated */
1141ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
1142ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt/* Values for TX Filter override mode */
1143b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WLC_TXFILTER_OVERRIDE_DISABLED  0
1144b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WLC_TXFILTER_OVERRIDE_ENABLED   1
1145b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
114638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* LINUX_POSTMOGRIFY_REMOVAL */
1147b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
114838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Used to get specific STA parameters */
1149b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct {
115038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	val;
1151b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	struct ether_addr ea;
1152b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} scb_val_t;
1153b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
115438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Used by iovar versions of some ioctls, i.e. WLC_SCB_AUTHORIZE et al */
1155b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct {
1156b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 code;
1157b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	scb_val_t ioctl_args;
1158b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} authops_t;
1159b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
116038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* channel encoding */
1161b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct channel_info {
1162b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	int hw_channel;
1163b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	int target_channel;
1164b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	int scan_channel;
1165b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} channel_info_t;
1166b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
116738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* For ioctls that take a list of MAC addresses */
1168b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidtstruct maclist {
116938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint count;			/* number of MAC addresses */
117038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr ea[1];	/* variable length array of MAC addresses */
1171b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt};
1172b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
117338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef LINUX_POSTMOGRIFY_REMOVAL
117438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* get pkt count struct passed through ioctl */
1175b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct get_pktcnt {
1176b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint rx_good_pkt;
1177b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint rx_bad_pkt;
1178b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint tx_good_pkt;
1179b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint tx_bad_pkt;
118038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint rx_ocast_good_pkt; /* unicast packets destined for others */
1181b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} get_pktcnt_t;
1182b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
118338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* NINTENDO2 */
118438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define LQ_IDX_MIN              0
118538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define LQ_IDX_MAX              1
118638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define LQ_IDX_AVG              2
118738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define LQ_IDX_SUM              2
118838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define LQ_IDX_LAST             3
118938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define LQ_STOP_MONITOR         0
119038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define LQ_START_MONITOR        1
119138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
119238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Get averages RSSI, Rx PHY rate and SNR values */
119338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
119438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int rssi[LQ_IDX_LAST];  /* Array to keep min, max, avg rssi */
119538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int snr[LQ_IDX_LAST];   /* Array to keep min, max, avg snr */
119638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int isvalid;            /* Flag indicating whether above data is valid */
119738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_lq_t; /* Link Quality */
119838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
119938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef enum wl_wakeup_reason_type {
120038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	LCD_ON = 1,
120138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	LCD_OFF,
120238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	DRC1_WAKE,
120338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	DRC2_WAKE,
120438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	REASON_LAST
120538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_wr_type_t;
120638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
120738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
120838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Unique filter id */
120938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	id;
121038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
121138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* stores the reason for the last wake up */
121238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8	reason;
121338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_wr_t;
121438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
121538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Get MAC specific rate histogram command */
121638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
121738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct	ether_addr ea;	/* MAC Address */
121838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8	ac_cat;	/* Access Category */
121938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8	num_pkts;	/* Number of packet entries to be averaged */
122038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_mac_ratehisto_cmd_t;	/* MAC Specific Rate Histogram command */
122138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
122238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Get MAC rate histogram response */
122338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
122438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rate[DOT11_RATE_MAX + 1];	/* Rates */
122538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	mcs[WL_RATESET_SZ_HT_MCS * WL_TX_CHAINS_MAX];	/* MCS counts */
122638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	vht[WL_RATESET_SZ_VHT_MCS][WL_TX_CHAINS_MAX];	/* VHT counts */
122738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	tsf_timer[2][2];	/* Start and End time for 8bytes value */
122838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_mac_ratehisto_res_t;	/* MAC Specific Rate Histogram Response */
122938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
123038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Values for TX Filter override mode */
123138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_TXFILTER_OVERRIDE_DISABLED  0
123238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_TXFILTER_OVERRIDE_ENABLED   1
123338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
1234b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_IOCTL_ACTION_GET				0x0
1235b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_IOCTL_ACTION_SET				0x1
1236b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_IOCTL_ACTION_OVL_IDX_MASK	0x1e
1237b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_IOCTL_ACTION_OVL_RSV			0x20
1238b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_IOCTL_ACTION_OVL				0x40
1239b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_IOCTL_ACTION_MASK			0x7e
1240b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_IOCTL_ACTION_OVL_SHIFT		1
1241b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
124238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* LINUX_POSTMOGRIFY_REMOVAL */
1243b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
124438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Linux network driver ioctl encoding */
1245b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_ioctl {
124638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint cmd;	/* common ioctl definition */
124738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	void *buf;	/* pointer to user buffer */
124838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint len;	/* length of user buffer */
124938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 set;		/* 1=set IOCTL; 0=query IOCTL */
125038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint used;	/* bytes read or written (optional) */
125138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint needed;	/* bytes needed (optional) */
1252b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_ioctl_t;
1253b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
125438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef LINUX_POSTMOGRIFY_REMOVAL
1255b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
125638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* reference to wl_ioctl_t struct used by usermode driver */
125738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ioctl_subtype	set		/* subtype param */
125838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ioctl_pid	used		/* pid param */
125938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ioctl_status	needed		/* status param */
1260b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
126138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/*
126238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Structure for passing hardware and software
126338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * revision info up from the driver.
126438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
1265b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wlc_rev_info {
126638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint		vendorid;	/* PCI vendor id */
126738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint		deviceid;	/* device id of chip */
126838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint		radiorev;	/* radio revision */
126938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint		chiprev;	/* chip revision */
127038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint		corerev;	/* core revision */
127138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint		boardid;	/* board identifier (usu. PCI sub-device id) */
127238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint		boardvendor;	/* board vendor (usu. PCI sub-vendor id) */
127338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint		boardrev;	/* board revision */
127438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint		driverrev;	/* driver version */
127538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint		ucoderev;	/* microcode version */
127638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint		bus;		/* bus type */
127738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint		chipnum;	/* chip number */
127838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint		phytype;	/* phy type */
127938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint		phyrev;		/* phy revision */
128038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint		anarev;		/* anacore rev */
128138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint		chippkg;	/* chip package info */
128238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint		nvramrev;	/* nvram revision number */
1283b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wlc_rev_info_t;
1284b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
128538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_REV_INFO_LEGACY_LENGTH	48
1286b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
1287b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_BRAND_MAX 10
1288b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_instance_info {
1289b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint instance;
1290b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	char brand[WL_BRAND_MAX];
1291b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_instance_info_t;
1292b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
129338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* structure to change size of tx fifo */
1294b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_txfifo_sz {
129538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16	magic;
129638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16	fifo;
129738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16	size;
1298b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_txfifo_sz_t;
129938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* magic pattern used for mismatch driver and wl */
130038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TXFIFO_SZ_MAGIC	0xa5a5
1301b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
130238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Transfer info about an IOVar from the driver */
130338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Max supported IOV name size in bytes, + 1 for nul termination */
1304b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WLC_IOV_NAME_LEN 30
1305b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wlc_iov_trx_s {
1306b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint8 module;
1307b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint8 type;
1308b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	char name[WLC_IOV_NAME_LEN];
1309b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wlc_iov_trx_t;
1310b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
131138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* check this magic number */
131238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_IOCTL_MAGIC		0x14e46c77
1313b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
131438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* bump this number if you change the ioctl interface */
131538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifdef D11AC_IOTYPES
131638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_IOCTL_VERSION	2
131738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_IOCTL_VERSION_LEGACY_IOTYPES	1
131838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#else
131938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_IOCTL_VERSION	1
132038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* D11AC_IOTYPES */
132138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* LINUX_POSTMOGRIFY_REMOVAL */
132238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
132338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WLC_IOCTL_MAXLEN		8192	/* max length ioctl buffer required */
132438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WLC_IOCTL_SMLEN			256	/* "small" length ioctl buffer required */
132538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_IOCTL_MEDLEN		1536    /* "med" length ioctl buffer required */
132638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#if defined(LCNCONF) || defined(LCN40CONF)
132738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SAMPLECOLLECT_MAXLEN	8192	/* Max Sample Collect buffer */
1328b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#else
132938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SAMPLECOLLECT_MAXLEN	10240	/* Max Sample Collect buffer for two cores */
13306dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt#endif
1331b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
133238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* common ioctl definitions */
133338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_MAGIC				0
133438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_VERSION				1
133538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_UP					2
133638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_DOWN				3
133738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_LOOP				4
133838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_LOOP				5
133938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_DUMP				6
134038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_MSGLEVEL			7
134138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_MSGLEVEL			8
134238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_PROMISC				9
134338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_PROMISC				10
1344ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt/* #define WLC_OVERLAY_IOCTL			11 */ /* not supported */
134538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_RATE				12
1346ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WLC_GET_MAX_RATE			13
134738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_INSTANCE			14
134838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_GET_FRAG				15 */ /* no longer supported */
134938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_SET_FRAG				16 */ /* no longer supported */
135038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_GET_RTS				17 */ /* no longer supported */
135138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_SET_RTS				18 */ /* no longer supported */
135238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_INFRA				19
135338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_INFRA				20
135438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_AUTH				21
135538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_AUTH				22
135638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_BSSID				23
135738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_BSSID				24
135838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_SSID				25
135938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_SSID				26
136038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_RESTART				27
1361ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define WLC_TERMINATED             		28
136238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_DUMP_SCB				28 */ /* no longer supported */
136338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_CHANNEL				29
136438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_CHANNEL				30
136538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_SRL				31
136638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_SRL				32
136738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_LRL				33
136838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_LRL				34
136938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_PLCPHDR				35
137038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_PLCPHDR				36
137138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_RADIO				37
137238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_RADIO				38
137338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_PHYTYPE				39
137438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_DUMP_RATE				40
137538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_RATE_PARAMS			41
137638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_FIXRATE				42
137738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_FIXRATE				43
137838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_GET_WEP				42 */ /* no longer supported */
137938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_SET_WEP				43 */ /* no longer supported */
138038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_KEY				44
138138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_KEY				45
138238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_REGULATORY			46
138338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_REGULATORY			47
138438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_PASSIVE_SCAN			48
138538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_PASSIVE_SCAN			49
138638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SCAN				50
138738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SCAN_RESULTS			51
138838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_DISASSOC				52
138938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_REASSOC				53
139038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_ROAM_TRIGGER			54
139138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_ROAM_TRIGGER			55
139238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_ROAM_DELTA			56
139338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_ROAM_DELTA			57
139438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_ROAM_SCAN_PERIOD		58
139538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_ROAM_SCAN_PERIOD		59
139638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_EVM					60	/* diag */
139738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_TXANT				61
139838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_TXANT				62
139938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_ANTDIV				63
140038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_ANTDIV				64
140138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_GET_TXPWR			65 */ /* no longer supported */
140238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_SET_TXPWR			66 */ /* no longer supported */
140338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_CLOSED				67
140438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_CLOSED				68
140538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_MACLIST				69
140638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_MACLIST				70
140738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_RATESET				71
140838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_RATESET				72
140938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_GET_LOCALE			73 */ /* no longer supported */
141038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_LONGTRAIN				74
141138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_BCNPRD				75
141238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_BCNPRD				76
141338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_DTIMPRD				77
141438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_DTIMPRD				78
141538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_SROM				79
141638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_SROM				80
141738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_WEP_RESTRICT			81
141838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_WEP_RESTRICT			82
141938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_COUNTRY				83
142038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_COUNTRY				84
142138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_PM				85
142238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_PM				86
142338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_WAKE				87
142438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_WAKE				88
142538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_GET_D11CNTS			89 */ /* -> "counters" iovar */
142638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_FORCELINK			90	/* ndis only */
142738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_FORCELINK			91	/* ndis only */
142838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_FREQ_ACCURACY			92	/* diag */
142938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_CARRIER_SUPPRESS			93	/* diag */
143038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_PHYREG				94
143138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_PHYREG				95
143238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_RADIOREG			96
143338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_RADIOREG			97
143438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_REVINFO				98
143538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_UCANTDIV			99
143638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_UCANTDIV			100
143738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_R_REG				101
143838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_W_REG				102
143938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_DIAG_LOOPBACK			103	old tray diag */
144038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_RESET_D11CNTS			104 */ /* -> "reset_d11cnts" iovar */
144138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_MACMODE				105
144238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_MACMODE				106
144338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_MONITOR				107
144438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_MONITOR				108
144538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_GMODE				109
144638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_GMODE				110
144738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_LEGACY_ERP			111
144838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_LEGACY_ERP			112
144938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_RX_ANT				113
145038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_CURR_RATESET			114	/* current rateset */
145138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_SCANSUPPRESS			115
145238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_SCANSUPPRESS			116
145338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_AP				117
145438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_AP				118
145538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_EAP_RESTRICT			119
145638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_EAP_RESTRICT			120
145738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SCB_AUTHORIZE			121
145838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SCB_DEAUTHORIZE			122
145938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_WDSLIST				123
146038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_WDSLIST				124
146138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_ATIM				125
146238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_ATIM				126
146338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_RSSI				127
146438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_PHYANTDIV			128
146538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_PHYANTDIV			129
146638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_AP_RX_ONLY				130
146738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_TX_PATH_PWR			131
146838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_TX_PATH_PWR			132
146938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_WSEC				133
147038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_WSEC				134
147138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_PHY_NOISE			135
147238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_BSS_INFO			136
147338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_PKTCNTS				137
147438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_LAZYWDS				138
147538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_LAZYWDS				139
147638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_BANDLIST			140
147738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
147838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef LINUX_POSTMOGRIFY_REMOVAL
147938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_BAND				141
148038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_BAND				142
148138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SCB_DEAUTHENTICATE			143
148238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_SHORTSLOT			144
148338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_SHORTSLOT_OVERRIDE		145
148438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_SHORTSLOT_OVERRIDE		146
148538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_SHORTSLOT_RESTRICT		147
148638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_SHORTSLOT_RESTRICT		148
148738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_GMODE_PROTECTION		149
148838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_GMODE_PROTECTION_OVERRIDE	150
148938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_GMODE_PROTECTION_OVERRIDE	151
149038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_UPGRADE				152
149138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_GET_MRATE			153 */ /* no longer supported */
149238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_SET_MRATE			154 */ /* no longer supported */
149338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_IGNORE_BCNS			155
149438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_IGNORE_BCNS			156
149538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_SCB_TIMEOUT			157
149638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_SCB_TIMEOUT			158
149738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_ASSOCLIST			159
149838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_CLK				160
149938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_CLK				161
150038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_UP				162
150138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_OUT					163
150238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_WPA_AUTH			164
150338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_WPA_AUTH			165
150438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_UCFLAGS				166
150538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_UCFLAGS				167
150638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_PWRIDX				168
150738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_PWRIDX				169
150838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_TSSI				170
150938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_SUP_RATESET_OVERRIDE		171
151038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_SUP_RATESET_OVERRIDE		172
151138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_SET_FAST_TIMER			173 */ /* no longer supported */
151238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_GET_FAST_TIMER			174 */ /* no longer supported */
151338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_SET_SLOW_TIMER			175 */ /* no longer supported */
151438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_GET_SLOW_TIMER			176 */ /* no longer supported */
151538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_DUMP_PHYREGS			177 */ /* no longer supported */
151638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_PROTECTION_CONTROL		178
151738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_PROTECTION_CONTROL		179
151838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* LINUX_POSTMOGRIFY_REMOVAL  */
151938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_PHYLIST				180
152038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef LINUX_POSTMOGRIFY_REMOVAL
152138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_ENCRYPT_STRENGTH			181	/* ndis only */
152238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_DECRYPT_STATUS			182	/* ndis only */
152338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_KEY_SEQ				183
152438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_SCAN_CHANNEL_TIME		184
152538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_SCAN_CHANNEL_TIME		185
152638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_SCAN_UNASSOC_TIME		186
152738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_SCAN_UNASSOC_TIME		187
152838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_SCAN_HOME_TIME			188
152938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_SCAN_HOME_TIME			189
153038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_SCAN_NPROBES			190
153138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_SCAN_NPROBES			191
153238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_PRB_RESP_TIMEOUT		192
153338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_PRB_RESP_TIMEOUT		193
153438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_ATTEN				194
153538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_ATTEN				195
153638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_SHMEM				196	/* diag */
153738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_SHMEM				197	/* diag */
153838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_GET_GMODE_PROTECTION_CTS		198 */ /* no longer supported */
153938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_SET_GMODE_PROTECTION_CTS		199 */ /* no longer supported */
154038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_WSEC_TEST			200
154138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* LINUX_POSTMOGRIFY_REMOVAL */
154238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SCB_DEAUTHENTICATE_FOR_REASON	201
154338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef LINUX_POSTMOGRIFY_REMOVAL
154438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_TKIP_COUNTERMEASURES		202
154538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_PIOMODE				203
154638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_PIOMODE				204
154738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_ASSOC_PREFER			205
154838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_ASSOC_PREFER			206
154938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_ROAM_PREFER			207
155038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_ROAM_PREFER			208
155138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_LED				209
155238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_LED				210
155338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_INTERFERENCE_MODE		211
155438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_INTERFERENCE_MODE		212
155538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_CHANNEL_QA			213
155638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_START_CHANNEL_QA			214
155738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_CHANNEL_SEL			215
155838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_START_CHANNEL_SEL			216
155938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* LINUX_POSTMOGRIFY_REMOVAL */
156038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_VALID_CHANNELS			217
156138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_FAKEFRAG			218
156238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_FAKEFRAG			219
156338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_PWROUT_PERCENTAGE		220
156438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_PWROUT_PERCENTAGE		221
156538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_BAD_FRAME_PREEMPT		222
156638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_BAD_FRAME_PREEMPT		223
156738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_LEAP_LIST			224
156838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_LEAP_LIST			225
156938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_CWMIN				226
157038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_CWMIN				227
157138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_CWMAX				228
157238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_CWMAX				229
157338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_WET				230
157438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_WET				231
157538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_PUB				232
157638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_SET_GLACIAL_TIMER		233 */ /* no longer supported */
157738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_GET_GLACIAL_TIMER		234 */ /* no longer supported */
157838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_KEY_PRIMARY			235
157938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_KEY_PRIMARY			236
158038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
158138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef LINUX_POSTMOGRIFY_REMOVAL
158238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
158338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_DUMP_RADIOREGS			237 */ /* no longer supported */
158438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_ACI_ARGS			238
158538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_ACI_ARGS			239
158638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_UNSET_CALLBACK			240
158738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_CALLBACK			241
158838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_RADAR				242
158938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_RADAR				243
159038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_SPECT_MANAGMENT			244
159138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_SPECT_MANAGMENT			245
159238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_WDS_GET_REMOTE_HWADDR		246	/* handled in wl_linux.c/wl_vx.c */
159338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_WDS_GET_WPA_SUP			247
159438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_CS_SCAN_TIMER			248
159538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_CS_SCAN_TIMER			249
159638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_MEASURE_REQUEST			250
159738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_INIT				251
159838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SEND_QUIET				252
159938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_KEEPALIVE			253
160038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SEND_PWR_CONSTRAINT			254
160138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_UPGRADE_STATUS			255
160238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_CURRENT_PWR				256
160338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_SCAN_PASSIVE_TIME		257
160438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_SCAN_PASSIVE_TIME		258
160538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_LEGACY_LINK_BEHAVIOR		259
160638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_CHANNELS_IN_COUNTRY		260
160738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_COUNTRY_LIST			261
160838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* LINUX_POSTMOGRIFY_REMOVAL */
160938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_VAR				262	/* get value of named variable */
161038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_VAR				263	/* set named variable to value */
161138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef LINUX_POSTMOGRIFY_REMOVAL
161238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_NVRAM_GET				264	/* deprecated */
161338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_NVRAM_SET				265
161438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_NVRAM_DUMP				266
161538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_REBOOT				267
161638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* LINUX_POSTMOGRIFY_REMOVAL */
161738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_WSEC_PMK			268
161838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef LINUX_POSTMOGRIFY_REMOVAL
161938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_AUTH_MODE			269
162038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_AUTH_MODE			270
162138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_WAKEENTRY			271
162238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_WAKEENTRY			272
162338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_NDCONFIG_ITEM			273	/* currently handled in wl_oid.c */
162438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_NVOTPW				274
162538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_OTPW				275
162638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_IOV_BLOCK_GET			276
162738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_IOV_MODULES_GET			277
162838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SOFT_RESET				278
162938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_ALLOW_MODE			279
163038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_ALLOW_MODE			280
163138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_DESIRED_BSSID			281
163238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_DESIRED_BSSID			282
163338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WLC_DISASSOC_MYAP			283
163438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_NBANDS				284	/* for Dongle EXT_STA support */
163538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_BANDSTATES			285	/* for Dongle EXT_STA support */
163638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_WLC_BSS_INFO			286	/* for Dongle EXT_STA support */
163738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_ASSOC_INFO			287	/* for Dongle EXT_STA support */
163838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_OID_PHY				288	/* for Dongle EXT_STA support */
163938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_OID_PHY				289	/* for Dongle EXT_STA support */
164038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_ASSOC_TIME			290	/* for Dongle EXT_STA support */
164138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_DESIRED_SSID			291	/* for Dongle EXT_STA support */
164238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_CHANSPEC			292	/* for Dongle EXT_STA support */
164338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_ASSOC_STATE			293	/* for Dongle EXT_STA support */
164438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_PHY_STATE			294	/* for Dongle EXT_STA support */
164538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_SCAN_PENDING			295	/* for Dongle EXT_STA support */
164638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_SCANREQ_PENDING			296	/* for Dongle EXT_STA support */
164738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_PREV_ROAM_REASON		297	/* for Dongle EXT_STA support */
164838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_PREV_ROAM_REASON		298	/* for Dongle EXT_STA support */
164938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_BANDSTATES_PI			299	/* for Dongle EXT_STA support */
165038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_PHY_STATE			300	/* for Dongle EXT_STA support */
165138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_BSS_WPA_RSN			301	/* for Dongle EXT_STA support */
165238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_BSS_WPA2_RSN			302	/* for Dongle EXT_STA support */
165338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_BSS_BCN_TS			303	/* for Dongle EXT_STA support */
165438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_INT_DISASSOC			304	/* for Dongle EXT_STA support */
165538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_NUM_PEERS			305     /* for Dongle EXT_STA support */
165638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_NUM_BSS				306	/* for Dongle EXT_STA support */
165738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_PHY_SAMPLE_COLLECT			307	/* phy sample collect mode */
165838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_UM_PRIV				308 */	/* Deprecated: usermode driver */
165938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_CMD				309
166038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_LAST				310 */	/* Never used - can be reused */
166138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_INTERFERENCE_OVERRIDE_MODE	311	/* set inter mode override */
166238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_INTERFERENCE_OVERRIDE_MODE	312	/* get inter mode override */
166338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_GET_WAI_RESTRICT			313 */	/* for WAPI, deprecated use iovar instead */
166438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_SET_WAI_RESTRICT			314 */	/* for WAPI, deprecated use iovar instead */
166538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* #define WLC_SET_WAI_REKEY			315 */	/* for WAPI, deprecated use iovar instead */
166638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SET_NAT_CONFIG			316	/* for configuring NAT filter driver */
166738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_NAT_STATE			317
166838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_GET_RSSI_QDB			318 /* qdB portion of the RSSI */
166938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_LAST				319
1670b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
1671b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#ifndef EPICTRL_COOKIE
167238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define EPICTRL_COOKIE		0xABADCEDE
1673b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#endif
1674b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
167538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* vx wlc ioctl's offset */
1676b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define CMN_IOCTL_OFF 0x180
1677b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
167838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/*
167938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * custom OID support
168038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *
168138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 0xFF - implementation specific OID
168238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 0xE4 - first byte of Broadcom PCI vendor ID
168338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 0x14 - second byte of Broadcom PCI vendor ID
168438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 0xXX - the custom OID number
168538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
1686b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
168738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* begin 0x1f values beyond the start of the ET driver range. */
168838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_OID_BASE		0xFFE41420
1689b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
169038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* NDIS overrides */
169138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OID_WL_GETINSTANCE	(WL_OID_BASE + WLC_GET_INSTANCE)
169238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OID_WL_GET_FORCELINK	(WL_OID_BASE + WLC_GET_FORCELINK)
169338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OID_WL_SET_FORCELINK	(WL_OID_BASE + WLC_SET_FORCELINK)
169438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	OID_WL_ENCRYPT_STRENGTH	(WL_OID_BASE + WLC_ENCRYPT_STRENGTH)
169538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OID_WL_DECRYPT_STATUS	(WL_OID_BASE + WLC_DECRYPT_STATUS)
1696b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define OID_LEGACY_LINK_BEHAVIOR (WL_OID_BASE + WLC_LEGACY_LINK_BEHAVIOR)
169738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OID_WL_NDCONFIG_ITEM	(WL_OID_BASE + WLC_NDCONFIG_ITEM)
169838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
169938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* EXT_STA Dongle suuport */
170038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OID_STA_CHANSPEC	(WL_OID_BASE + WLC_GET_CHANSPEC)
170138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OID_STA_NBANDS		(WL_OID_BASE + WLC_GET_NBANDS)
170238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OID_STA_GET_PHY		(WL_OID_BASE + WLC_GET_OID_PHY)
170338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OID_STA_SET_PHY		(WL_OID_BASE + WLC_SET_OID_PHY)
170438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OID_STA_ASSOC_TIME	(WL_OID_BASE + WLC_SET_ASSOC_TIME)
170538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OID_STA_DESIRED_SSID	(WL_OID_BASE + WLC_GET_DESIRED_SSID)
170638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OID_STA_SET_PHY_STATE	(WL_OID_BASE + WLC_SET_PHY_STATE)
170738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OID_STA_SCAN_PENDING	(WL_OID_BASE + WLC_GET_SCAN_PENDING)
1708b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define OID_STA_SCANREQ_PENDING (WL_OID_BASE + WLC_GET_SCANREQ_PENDING)
1709b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define OID_STA_GET_ROAM_REASON (WL_OID_BASE + WLC_GET_PREV_ROAM_REASON)
1710b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define OID_STA_SET_ROAM_REASON (WL_OID_BASE + WLC_SET_PREV_ROAM_REASON)
171138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OID_STA_GET_PHY_STATE	(WL_OID_BASE + WLC_GET_PHY_STATE)
171238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OID_STA_INT_DISASSOC	(WL_OID_BASE + WLC_GET_INT_DISASSOC)
171338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OID_STA_SET_NUM_PEERS	(WL_OID_BASE + WLC_SET_NUM_PEERS)
171438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define OID_STA_GET_NUM_BSS	(WL_OID_BASE + WLC_GET_NUM_BSS)
1715b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
171638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* NAT filter driver support */
1717ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define OID_NAT_SET_CONFIG	(WL_OID_BASE + WLC_SET_NAT_CONFIG)
1718ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt#define OID_NAT_GET_STATE	(WL_OID_BASE + WLC_GET_NAT_STATE)
1719ac2bc7e7aaad957f235992ff74d5f9af34dc5f88Dmitry Shmidt
172038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DECRYPT_STATUS_SUCCESS	1
172138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DECRYPT_STATUS_FAILURE	2
172238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DECRYPT_STATUS_UNKNOWN	3
1723b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
172438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* allows user-mode app to poll the status of USB image upgrade */
172538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_UPGRADE_SUCCESS			0
172638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_UPGRADE_PENDING			1
1727b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
1728b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#ifdef CONFIG_USBRNDIS_RETAIL
172938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* struct passed in for WLC_NDCONFIG_ITEM */
1730b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct {
1731b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	char *name;
1732b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	void *param;
1733b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} ndconfig_item_t;
1734b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#endif
1735b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
1736b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
173738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WLC_GET_AUTH, WLC_SET_AUTH values */
173838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_AUTH_OPEN_SYSTEM		0	/* d11 open authentication */
173938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_AUTH_SHARED_KEY		1	/* d11 shared authentication */
174038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_AUTH_OPEN_SHARED		2	/* try open, then shared if open failed w/rc 13 */
174138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* LINUX_POSTMOGRIFY_REMOVAL */
1742b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
174338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Bit masks for radio disabled status - returned by WL_GET_RADIO */
174438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RADIO_SW_DISABLE		(1<<0)
174538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RADIO_HW_DISABLE		(1<<1)
174638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RADIO_MPC_DISABLE		(1<<2)
174738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RADIO_COUNTRY_DISABLE	(1<<3)	/* some countries don't support any channel */
1748b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
174938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_SPURAVOID_OFF	0
175038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_SPURAVOID_ON1	1
175138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_SPURAVOID_ON2	2
1752b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
1753b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
175438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_4335_SPURAVOID_ON1	1
175538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_4335_SPURAVOID_ON2	2
175638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_4335_SPURAVOID_ON3	3
175738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_4335_SPURAVOID_ON4	4
175838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_4335_SPURAVOID_ON5	5
175938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_4335_SPURAVOID_ON6	6
176038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_4335_SPURAVOID_ON7	7
176138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_4335_SPURAVOID_ON8	8
176238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_4335_SPURAVOID_ON9	9
1763b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
176438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Override bit for WLC_SET_TXPWR.  if set, ignore other level limits */
176538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TXPWR_OVERRIDE	(1U<<31)
1766b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_TXPWR_NEG   (1U<<30)
1767b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
176838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef LINUX_POSTMOGRIFY_REMOVAL
176938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PHY_PAVARS_LEN	32	/* Phy type, Band range, chain, a1[0], b0[0], b1[0] ... */
1770b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
177138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PHY_PAVAR_VER	1	/* pavars version */
177238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PHY_PAVARS2_NUM	3	/* a1, b0, b1 */
1773b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_pavars2 {
177438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 ver;		/* version of this struct */
177538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 len;		/* len of this structure */
177638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 inuse;		/* driver return 1 for a1,b0,b1 in current band range */
177738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 phy_type;	/* phy type */
1778b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 bandrange;
1779b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 chain;
178038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 inpa[WL_PHY_PAVARS2_NUM];	/* phy pavars for one band range */
1781b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_pavars2_t;
1782b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
1783b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_po {
178438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16	phy_type;	/* Phy type */
178538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16	band;
178638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16	cckpo;
178738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	ofdmpo;
178838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16	mcspo[8];
1789b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_po_t;
1790b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
179138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* a large TX Power as an init value to factor out of MIN() calculations,
179238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * keep low enough to fit in an int8, units are .25 dBm
179338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
179438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_TXPWR_MAX		(127)	/* ~32 dBm = 1,500 mW */
179538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
179638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* "diag" iovar argument and error code */
179738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DIAG_INTERRUPT			1	/* d11 loopback interrupt test */
179838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DIAG_LOOPBACK			2	/* d11 loopback data test */
179938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DIAG_MEMORY				3	/* d11 memory test */
180038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DIAG_LED				4	/* LED test */
180138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DIAG_REG				5	/* d11/phy register test */
180238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DIAG_SROM				6	/* srom read/crc test */
180338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DIAG_DMA				7	/* DMA test */
180438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DIAG_LOOPBACK_EXT			8	/* enhenced d11 loopback data test */
180538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
180638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DIAGERR_SUCCESS			0
180738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DIAGERR_FAIL_TO_RUN			1	/* unable to run requested diag */
180838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DIAGERR_NOT_SUPPORTED		2	/* diag requested is not supported */
180938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DIAGERR_INTERRUPT_FAIL		3	/* loopback interrupt test failed */
181038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DIAGERR_LOOPBACK_FAIL		4	/* loopback data test failed */
181138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DIAGERR_SROM_FAIL			5	/* srom read failed */
181238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DIAGERR_SROM_BADCRC			6	/* srom crc failed */
181338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DIAGERR_REG_FAIL			7	/* d11/phy register test failed */
181438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DIAGERR_MEMORY_FAIL			8	/* d11 memory test failed */
181538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DIAGERR_NOMEM			9	/* diag test failed due to no memory */
181638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DIAGERR_DMA_FAIL			10	/* DMA test failed */
181738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
181838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DIAGERR_MEMORY_TIMEOUT		11	/* d11 memory test didn't finish in time */
181938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DIAGERR_MEMORY_BADPATTERN		12	/* d11 memory test result in bad pattern */
182038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
182138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* band types */
182238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WLC_BAND_AUTO		0	/* auto-select */
182338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WLC_BAND_5G		1	/* 5 Ghz */
182438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WLC_BAND_2G		2	/* 2.4 Ghz */
182538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WLC_BAND_ALL		3	/* all bands */
182638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
182738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* band range returned by band_range iovar */
1828b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_CHAN_FREQ_RANGE_2G      0
1829b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_CHAN_FREQ_RANGE_5GL     1
1830b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_CHAN_FREQ_RANGE_5GM     2
1831b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_CHAN_FREQ_RANGE_5GH     3
1832b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
183338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_CHAN_FREQ_RANGE_5GLL_5BAND    4
183438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_CHAN_FREQ_RANGE_5GLH_5BAND    5
183538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_CHAN_FREQ_RANGE_5GML_5BAND    6
183638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_CHAN_FREQ_RANGE_5GMH_5BAND    7
183738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_CHAN_FREQ_RANGE_5GH_5BAND     8
183838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
183938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_CHAN_FREQ_RANGE_5G_BAND0     1
184038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_CHAN_FREQ_RANGE_5G_BAND1     2
184138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_CHAN_FREQ_RANGE_5G_BAND2     3
184238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_CHAN_FREQ_RANGE_5G_BAND3     4
184338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
184438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_CHAN_FREQ_RANGE_5G_4BAND    	5
184538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* LINUX_POSTMOGRIFY_REMOVAL */
184638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
184738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* phy types (returned by WLC_GET_PHYTPE) */
184838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WLC_PHY_TYPE_A		0
184938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WLC_PHY_TYPE_B		1
185038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WLC_PHY_TYPE_G		2
185138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WLC_PHY_TYPE_N		4
185238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WLC_PHY_TYPE_LP		5
185338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WLC_PHY_TYPE_SSN	6
185438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WLC_PHY_TYPE_HT		7
185538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WLC_PHY_TYPE_LCN	8
185638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WLC_PHY_TYPE_LCN40	10
185738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_PHY_TYPE_AC		11
185838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WLC_PHY_TYPE_NULL	0xf
185938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
186038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Values for PM */
186138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define PM_OFF	0
186238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define PM_MAX	1
186338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define PM_FAST 2
186438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define PM_FORCE_OFF 3 		/* use this bit to force PM off even bt is active */
1865b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
186638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef LINUX_POSTMOGRIFY_REMOVAL
186738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* MAC list modes */
186838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_MACMODE_DISABLED	0	/* MAC list disabled */
186938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_MACMODE_DENY	1	/* Deny specified (i.e. allow unspecified) */
187038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_MACMODE_ALLOW	2	/* Allow specified (i.e. deny unspecified) */
1871b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
187238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/*
187338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 54g modes (basic bits may still be overridden)
187438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *
187538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * GMODE_LEGACY_B			Rateset: 1b, 2b, 5.5, 11
187638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *					Preamble: Long
187738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *					Shortslot: Off
187838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * GMODE_AUTO				Rateset: 1b, 2b, 5.5b, 11b, 18, 24, 36, 54
187938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *					Extended Rateset: 6, 9, 12, 48
188038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *					Preamble: Long
188138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *					Shortslot: Auto
188238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * GMODE_ONLY				Rateset: 1b, 2b, 5.5b, 11b, 18, 24b, 36, 54
188338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *					Extended Rateset: 6b, 9, 12b, 48
188438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *					Preamble: Short required
188538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *					Shortslot: Auto
188638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * GMODE_B_DEFERRED			Rateset: 1b, 2b, 5.5b, 11b, 18, 24, 36, 54
188738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *					Extended Rateset: 6, 9, 12, 48
188838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *					Preamble: Long
188938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *					Shortslot: On
189038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * GMODE_PERFORMANCE			Rateset: 1b, 2b, 5.5b, 6b, 9, 11b, 12b, 18, 24b, 36, 48, 54
189138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *					Preamble: Short required
189238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *					Shortslot: On and required
189338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * GMODE_LRS				Rateset: 1b, 2b, 5.5b, 11b
189438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *					Extended Rateset: 6, 9, 12, 18, 24, 36, 48, 54
189538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *					Preamble: Long
189638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *					Shortslot: Auto
189738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
189838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define GMODE_LEGACY_B		0
189938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define GMODE_AUTO		1
190038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define GMODE_ONLY		2
190138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define GMODE_B_DEFERRED	3
190238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define GMODE_PERFORMANCE	4
190338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define GMODE_LRS		5
190438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define GMODE_MAX		6
190538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
190638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* values for PLCPHdr_override */
190738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_PLCP_AUTO	-1
190838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_PLCP_SHORT	0
190938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_PLCP_LONG	1
191038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
191138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* values for g_protection_override and n_protection_override */
191238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_PROTECTION_AUTO		-1
191338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_PROTECTION_OFF		0
191438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_PROTECTION_ON		1
191538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_PROTECTION_MMHDR_ONLY	2
191638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_PROTECTION_CTS_ONLY		3
191738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
191838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* values for g_protection_control and n_protection_control */
191938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_PROTECTION_CTL_OFF		0
192038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_PROTECTION_CTL_LOCAL	1
192138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_PROTECTION_CTL_OVERLAP	2
192238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
192338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* values for n_protection */
192438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_N_PROTECTION_OFF		0
192538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_N_PROTECTION_OPTIONAL	1
192638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_N_PROTECTION_20IN40		2
192738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_N_PROTECTION_MIXEDMODE	3
192838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
192938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* values for n_preamble_type */
193038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_N_PREAMBLE_MIXEDMODE	0
193138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_N_PREAMBLE_GF		1
1932b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WLC_N_PREAMBLE_GF_BRCM          2
1933b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
193438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* values for band specific 40MHz capabilities (deprecated) */
193538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_N_BW_20ALL			0
193638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_N_BW_40ALL			1
193738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_N_BW_20IN2G_40IN5G		2
193838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
193938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_BW_20MHZ_BIT		(1<<0)
194038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_BW_40MHZ_BIT		(1<<1)
194138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_BW_80MHZ_BIT		(1<<2)
194238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
194338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Bandwidth capabilities */
194438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_BW_CAP_20MHZ		(WLC_BW_20MHZ_BIT)
194538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_BW_CAP_40MHZ		(WLC_BW_40MHZ_BIT|WLC_BW_20MHZ_BIT)
194638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_BW_CAP_80MHZ		(WLC_BW_80MHZ_BIT|WLC_BW_40MHZ_BIT|WLC_BW_20MHZ_BIT)
194738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_BW_CAP_UNRESTRICTED		0xFF
194838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
194938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BW_CAP_20MHZ(bw_cap)	(((bw_cap) & WLC_BW_20MHZ_BIT) ? TRUE : FALSE)
195038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BW_CAP_40MHZ(bw_cap)	(((bw_cap) & WLC_BW_40MHZ_BIT) ? TRUE : FALSE)
195138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BW_CAP_80MHZ(bw_cap)	(((bw_cap) & WLC_BW_80MHZ_BIT) ? TRUE : FALSE)
195238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
195338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* values to force tx/rx chain */
195438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_N_TXRX_CHAIN0		0
195538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_N_TXRX_CHAIN1		1
195638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
195738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* bitflags for SGI support (sgi_rx iovar) */
195838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_N_SGI_20			0x01
195938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_N_SGI_40			0x02
196038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_VHT_SGI_80			0x04
196138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
196238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* when sgi_tx==WLC_SGI_ALL, bypass rate selection, enable sgi for all mcs */
196338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SGI_ALL				0x02
196438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
196538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define LISTEN_INTERVAL			10
196638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* interference mitigation options */
196738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	INTERFERE_OVRRIDE_OFF	-1	/* interference override off */
196838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	INTERFERE_NONE	0	/* off */
196938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	NON_WLAN	1	/* foreign/non 802.11 interference, no auto detect */
197038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WLAN_MANUAL	2	/* ACI: no auto detection */
197138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WLAN_AUTO	3	/* ACI: auto detect */
197238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WLAN_AUTO_W_NOISE	4	/* ACI: auto - detect and non 802.11 interference */
197338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define AUTO_ACTIVE	(1 << 7) /* Auto is currently active */
197438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
197538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* AP environment */
197638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define AP_ENV_DETECT_NOT_USED		0 /* We aren't using AP environment detection */
197738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define AP_ENV_DENSE			1 /* "Corporate" or other AP dense environment */
197838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define AP_ENV_SPARSE			2 /* "Home" or other sparse environment */
197938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define AP_ENV_INDETERMINATE		3 /* AP environment hasn't been identified */
1980b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
1981b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_aci_args {
198238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int enter_aci_thresh; /* Trigger level to start detecting ACI */
198338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int exit_aci_thresh; /* Trigger level to exit ACI mode */
198438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int usec_spin; /* microsecs to delay between rssi samples */
198538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int glitch_delay; /* interval between ACI scans when glitch count is consistently high */
198638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 nphy_adcpwr_enter_thresh;	/* ADC power to enter ACI mitigation mode */
198738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 nphy_adcpwr_exit_thresh;	/* ADC power to exit ACI mitigation mode */
198838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 nphy_repeat_ctr;		/* Number of tries per channel to compute power */
198938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 nphy_num_samples;	/* Number of samples to compute power on one channel */
199038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 nphy_undetect_window_sz;	/* num of undetects to exit ACI Mitigation mode */
199138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 nphy_b_energy_lo_aci;	/* low ACI power energy threshold for bphy */
199238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 nphy_b_energy_md_aci;	/* mid ACI power energy threshold for bphy */
199338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 nphy_b_energy_hi_aci;	/* high ACI power energy threshold for bphy */
199438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 nphy_noise_noassoc_glitch_th_up; /* wl interference 4 */
1995b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 nphy_noise_noassoc_glitch_th_dn;
1996b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 nphy_noise_assoc_glitch_th_up;
1997b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 nphy_noise_assoc_glitch_th_dn;
1998b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 nphy_noise_assoc_aci_glitch_th_up;
1999b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 nphy_noise_assoc_aci_glitch_th_dn;
2000b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 nphy_noise_assoc_enter_th;
2001b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 nphy_noise_noassoc_enter_th;
2002b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 nphy_noise_assoc_rx_glitch_badplcp_enter_th;
2003b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 nphy_noise_noassoc_crsidx_incr;
2004b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 nphy_noise_assoc_crsidx_incr;
2005b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 nphy_noise_crsidx_decr;
2006b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_aci_args_t;
2007b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
200838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TRIGGER_NOW				0
200938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TRIGGER_CRS				0x01
201038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TRIGGER_CRSDEASSERT			0x02
201138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TRIGGER_GOODFCS				0x04
201238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TRIGGER_BADFCS				0x08
201338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TRIGGER_BADPLCP				0x10
201438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TRIGGER_CRSGLITCH			0x20
201538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_ACI_ARGS_LEGACY_LENGTH	16	/* bytes of pre NPHY aci args */
201638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_SAMPLECOLLECT_T_VERSION	2	/* version of wl_samplecollect_args_t struct */
2017b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_samplecollect_args {
201838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* version 0 fields */
2019b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint8 coll_us;
2020b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	int cores;
202138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* add'l version 1 fields */
202238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 version;     /* see definition of WL_SAMPLECOLLECT_T_VERSION */
202338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 length;      /* length of entire structure */
202438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 trigger;
2025b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 timeout;
2026b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 mode;
2027b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 pre_dur;
2028b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 post_dur;
2029b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint8 gpio_sel;
2030b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	bool downsamp;
2031b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	bool be_deaf;
203238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	bool agc;		/* loop from init gain and going down */
203338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	bool filter;		/* override high pass corners to lowest */
203438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* add'l version 2 fields */
203538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 trigger_state;
203638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 module_sel1;
203738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 module_sel2;
203838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 nsamps;
203938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int bitStart;
204038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 gpioCapMask;
2041b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_samplecollect_args_t;
2042b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
204338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_SAMPLEDATA_HEADER_TYPE	1
204438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_SAMPLEDATA_HEADER_SIZE	80	/* sample collect header size (bytes) */
204538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_SAMPLEDATA_TYPE		2
204638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_SAMPLEDATA_SEQ		0xff	/* sequence # */
204738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_SAMPLEDATA_MORE_DATA		0x100	/* more data mask */
204838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_SAMPLEDATA_T_VERSION		1	/* version of wl_samplecollect_args_t struct */
204938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* version for unpacked sample data, int16 {(I,Q),Core(0..N)} */
205038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_SAMPLEDATA_T_VERSION_SPEC_AN 2
2051b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
2052b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_sampledata {
205338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 version;	/* structure version */
205438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 size;	/* size of structure */
205538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 tag;	/* Header/Data */
205638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 length;	/* data length */
205738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 flag;	/* bit def */
2058b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_sampledata_t;
2059b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
206038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WL_OTA START */
2061b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
206238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_OTA_ARG_PARSE_BLK_SIZE 	1200
206338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_OTA_TEST_MAX_NUM_RATE	30
206438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_OTA_TEST_MAX_NUM_SEQ		100
2065b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
206638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* OTA Test Status */
206738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidtenum {
206838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	WL_OTA_TEST_IDLE,	/* Default Idle state */
206938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	WL_OTA_TEST_ACTIVE,	/* Test Running */
207038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	WL_OTA_TEST_SUCCESS,	/* Successfully Finished Test */
207138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	WL_OTA_TEST_FAIL	/* Test Failed in the Middle */
207238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt};
207338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* OTA SYNC Status */
207438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidtenum {
207538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	WL_OTA_SYNC_IDLE,	/* Idle state */
207638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	WL_OTA_SYNC_ACTIVE,	/* Waiting for Sync */
207738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	WL_OTA_SYNC_FAIL	/* Sync pkt not recieved */
207838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt};
2079b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
208038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Various error states dut can get stuck during test */
208138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidtenum {
208238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	WL_OTA_SKIP_TEST_CAL_FAIL = 1,		/* Phy calibration failed */
208338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	WL_OTA_SKIP_TEST_SYNCH_FAIL,		/* Sync Packet not recieved */
208438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	WL_OTA_SKIP_TEST_FILE_DWNLD_FAIL,	/* Cmd flow file download failed */
208538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	WL_OTA_SKIP_TEST_NO_TEST_FOUND,	/* No test found in Flow file */
208638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	WL_OTA_SKIP_TEST_WL_NOT_UP,		/* WL UP failed */
208738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	WL_OTA_SKIP_TEST_UNKNOWN_CALL		/* Unintentional scheduling on ota test */
208838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt};
2089b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
209038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Differentiator for ota_tx and ota_rx */
209138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidtenum {
209238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	WL_OTA_TEST_TX,		/* ota_tx */
209338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	WL_OTA_TEST_RX		/* ota_rx */
209438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt};
2095b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
209638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Catch 3 modes of operation: 20Mhz, 40Mhz, 20 in 40 Mhz */
209738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidtenum {
209838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	WL_OTA_TEST_BW_20_IN_40MHZ,	/* 20 in 40 operation */
209938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	WL_OTA_TEST_BW_20MHZ,		/* 20 Mhz operation */
210038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	WL_OTA_TEST_BW_40MHZ		/* full 40Mhz operation */
210138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt};
210238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct ota_rate_info {
210338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 rate_cnt;					/* Total number of rates */
210438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 rate_val_mbps[WL_OTA_TEST_MAX_NUM_RATE];	/* array of rates from 1mbps to 130mbps */
210538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt							/* for legacy rates : ratein mbps * 2 */
210638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt							/* for HT rates : mcs index */
210738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} ota_rate_info_t;
210838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
210938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct ota_power_info {
211038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 pwr_ctrl_on;	/* power control on/off */
211138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 start_pwr;		/* starting power/index */
211238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 delta_pwr;		/* delta power/index */
211338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 end_pwr;		/* end power/index */
211438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} ota_power_info_t;
211538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
211638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct ota_packetengine {
211738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 delay;           /* Inter-packet delay */
211838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				/* for ota_tx, delay is tx ifs in micro seconds */
211938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				/* for ota_rx, delay is wait time in milliseconds */
212038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 nframes;         /* Number of frames */
212138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 length;          /* Packet length */
212238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} ota_packetengine_t;
212338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
212438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Test info vector */
212538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wl_ota_test_args {
212638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 cur_test;			/* test phase */
212738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 chan;			/* channel */
212838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 bw;			/* bandwidth */
212938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	char control_band;		/* control band */
213038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 stf_mode;			/* stf mode */
213138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	ota_rate_info_t rt_info;	/* Rate info */
213238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	ota_packetengine_t pkteng;	/* packeteng info */
213338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 txant;			/* tx antenna */
213438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 rxant;			/* rx antenna */
213538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	ota_power_info_t pwr_info;	/* power sweep info */
213638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 wait_for_sync;		/* wait for sync or not */
213738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_ota_test_args_t;
213838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
213938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wl_ota_test_vector {
214038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	wl_ota_test_args_t test_arg[WL_OTA_TEST_MAX_NUM_SEQ];	/* Test argument struct */
214138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 test_cnt;					/* Total no of test */
214238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	bool file_dwnld_valid;					/* File successfully downloaded */
214338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 sync_timeout;					/* sync packet timeout */
214438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 sync_fail_action;					/* sync fail action */
214538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr sync_mac;				/* macaddress for sync pkt */
214638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr tx_mac;				/* macaddress for tx */
214738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr rx_mac;				/* macaddress for rx */
214838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 loop_test;					/* dbg feature to loop the test */
214938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_ota_test_vector_t;
215038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
215138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
215238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* struct copied back form dongle to host to query the status */
215338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wl_ota_test_status {
215438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int16 cur_test_cnt;		/* test phase */
215538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 skip_test_reason;		/* skip test reasoin */
215638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	wl_ota_test_args_t test_arg;	/* cur test arg details */
215738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 test_cnt;		/* total no of test downloaded */
215838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	bool file_dwnld_valid;		/* file successfully downloaded ? */
215938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 sync_timeout;		/* sync timeout */
216038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 sync_fail_action;		/* sync fail action */
216138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr sync_mac;	/* macaddress for sync pkt */
216238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr tx_mac;	/* tx mac address */
216338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr rx_mac;	/* rx mac address */
216438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8  test_stage;		/* check the test status */
216538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 loop_test;		/* Debug feature to puts test enfine in a loop */
216638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 sync_status;		/* sync status */
216738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_ota_test_status_t;
216838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
216938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WL_OTA END */
217038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
217138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* wl_radar_args_t */
217238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
217338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int npulses; 	/* required number of pulses at n * t_int */
217438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int ncontig; 	/* required number of pulses at t_int */
217538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int min_pw; 	/* minimum pulse width (20 MHz clocks) */
217638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int max_pw; 	/* maximum pulse width (20 MHz clocks) */
217738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 thresh0;	/* Radar detection, thresh 0 */
217838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 thresh1;	/* Radar detection, thresh 1 */
217938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 blank;	/* Radar detection, blank control */
218038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 fmdemodcfg;	/* Radar detection, fmdemod config */
218138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int npulses_lp;  /* Radar detection, minimum long pulses */
218238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int min_pw_lp; /* Minimum pulsewidth for long pulses */
218338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int max_pw_lp; /* Maximum pulsewidth for long pulses */
218438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int min_fm_lp; /* Minimum fm for long pulses */
218538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int max_span_lp;  /* Maximum deltat for long pulses */
218638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int min_deltat; /* Minimum spacing between pulses */
218738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int max_deltat; /* Maximum spacing between pulses */
218838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 autocorr;	/* Radar detection, autocorr on or off */
218938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 st_level_time;	/* Radar detection, start_timing level */
219038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 t2_min; /* minimum clocks needed to remain in state 2 */
219138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 version; /* version */
219238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 fra_pulse_err;	/* sample error margin for detecting French radar pulsed */
219338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int npulses_fra;  /* Radar detection, minimum French pulses set */
219438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int npulses_stg2;  /* Radar detection, minimum staggered-2 pulses set */
219538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int npulses_stg3;  /* Radar detection, minimum staggered-3 pulses set */
219638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 percal_mask;	/* defines which period cal is masked from radar detection */
219738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int quant;	/* quantization resolution to pulse positions */
219838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 min_burst_intv_lp;	/* minimum burst to burst interval for bin3 radar */
219938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 max_burst_intv_lp;	/* maximum burst to burst interval for bin3 radar */
220038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int nskip_rst_lp;	/* number of skipped pulses before resetting lp buffer */
220138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int max_pw_tol;	/* maximum tollerance allowed in detected pulse width for radar detection */
220238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 feature_mask; /* 16-bit mask to specify enabled features */
220338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_radar_args_t;
220438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
220538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RADAR_ARGS_VERSION 2
2206b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
220738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
220838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 version; /* version */
220938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 thresh0_20_lo;	/* Radar detection, thresh 0 (range 5250-5350MHz) for BW 20MHz */
221038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 thresh1_20_lo;	/* Radar detection, thresh 1 (range 5250-5350MHz) for BW 20MHz */
221138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 thresh0_40_lo;	/* Radar detection, thresh 0 (range 5250-5350MHz) for BW 40MHz */
221238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 thresh1_40_lo;	/* Radar detection, thresh 1 (range 5250-5350MHz) for BW 40MHz */
221338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 thresh0_80_lo;	/* Radar detection, thresh 0 (range 5250-5350MHz) for BW 80MHz */
221438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 thresh1_80_lo;	/* Radar detection, thresh 1 (range 5250-5350MHz) for BW 80MHz */
221538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 thresh0_160_lo;	/* Radar detection, thresh 0 (range 5250-5350MHz) for BW 160MHz */
221638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 thresh1_160_lo;	/* Radar detection, thresh 1 (range 5250-5350MHz) for BW 160MHz */
221738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 thresh0_20_hi;	/* Radar detection, thresh 0 (range 5470-5725MHz) for BW 20MHz */
221838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 thresh1_20_hi;	/* Radar detection, thresh 1 (range 5470-5725MHz) for BW 20MHz */
221938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 thresh0_40_hi;	/* Radar detection, thresh 0 (range 5470-5725MHz) for BW 40MHz */
222038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 thresh1_40_hi;	/* Radar detection, thresh 1 (range 5470-5725MHz) for BW 40MHz */
222138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 thresh0_80_hi;	/* Radar detection, thresh 0 (range 5470-5725MHz) for BW 80MHz */
222238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 thresh1_80_hi;	/* Radar detection, thresh 1 (range 5470-5725MHz) for BW 80MHz */
222338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 thresh0_160_hi;	/* Radar detection, thresh 0 (range 5470-5725MHz) for BW 160MHz */
222438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 thresh1_160_hi;	/* Radar detection, thresh 1 (range 5470-5725MHz) for BW 160MHz */
222538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_radar_thr_t;
222638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
222738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RADAR_THR_VERSION	2
222838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_THRESHOLD_LO_BAND	70	/* range from 5250MHz - 5350MHz */
222938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
223038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* radar iovar SET defines */
223138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RADAR_DETECTOR_OFF		0	/* radar detector off */
223238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RADAR_DETECTOR_ON		1	/* radar detector on */
223338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RADAR_SIMULATED		2	/* force radar detector to declare
223438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt						 * detection once
223538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt						 */
223638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RSSI_ANT_VERSION	1	/* current version of wl_rssi_ant_t */
223738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_ANT_RX_MAX		2	/* max 2 receive antennas */
223838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_ANT_HT_RX_MAX	3	/* max 3 receive antennas/cores */
223938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_ANT_IDX_1		0	/* antenna index 1 */
224038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_ANT_IDX_2		1	/* antenna index 2 */
224138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
224238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef WL_RSSI_ANT_MAX
224338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RSSI_ANT_MAX		4	/* max possible rx antennas */
224438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#elif WL_RSSI_ANT_MAX != 4
224538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#error "WL_RSSI_ANT_MAX does not match"
224638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif
2247b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
224838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* RSSI per antenna */
224938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
225038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	version;		/* version field */
225138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	count;			/* number of valid antenna rssi */
225238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 rssi_ant[WL_RSSI_ANT_MAX];	/* rssi per antenna */
225338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_rssi_ant_t;
22546dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
225538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* dfs_status iovar-related defines */
2256b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
225738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* cac - channel availability check,
225838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * ism - in-service monitoring
225938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * csa - channel switching announcement
226038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
2261b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
226238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* cac state values */
226338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DFS_CACSTATE_IDLE		0	/* state for operating in non-radar channel */
226438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_DFS_CACSTATE_PREISM_CAC	1	/* CAC in progress */
226538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DFS_CACSTATE_ISM		2	/* ISM in progress */
226638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DFS_CACSTATE_CSA		3	/* csa */
226738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DFS_CACSTATE_POSTISM_CAC	4	/* ISM CAC */
226838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DFS_CACSTATE_PREISM_OOC	5	/* PREISM OOC */
226938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DFS_CACSTATE_POSTISM_OOC	6	/* POSTISM OOC */
227038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DFS_CACSTATES		7	/* this many states exist */
227138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
227238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* data structure used in 'dfs_status' wl interface, which is used to query dfs status */
227338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
227438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint state;		/* noted by WL_DFS_CACSTATE_XX. */
227538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint duration;		/* time spent in ms in state. */
227638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* as dfs enters ISM state, it removes the operational channel from quiet channel
227738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	 * list and notes the channel in channel_cleared. set to 0 if no channel is cleared
227838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	 */
227938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	chanspec_t chanspec_cleared;
228038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* chanspec cleared used to be a uint, add another to uint16 to maintain size */
228138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 pad;
228238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_dfs_status_t;
228338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
228438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NUM_PWRCTRL_RATES 12
2285b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
228638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
228738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 txpwr_band_max[NUM_PWRCTRL_RATES];	/* User set target */
228838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 txpwr_limit[NUM_PWRCTRL_RATES];		/* reg and local power limit */
228938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 txpwr_local_max;				/* local max according to the AP */
229038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 txpwr_local_constraint;			/* local constraint according to the AP */
229138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 txpwr_chan_reg_max;			/* Regulatory max for this channel */
229238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 txpwr_target[2][NUM_PWRCTRL_RATES];	/* Latest target for 2.4 and 5 Ghz */
229338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 txpwr_est_Pout[2];			/* Latest estimate for 2.4 and 5 Ghz */
229438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 txpwr_opo[NUM_PWRCTRL_RATES];		/* On G phy, OFDM power offset */
229538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 txpwr_bphy_cck_max[NUM_PWRCTRL_RATES];	/* Max CCK power for this band (SROM) */
229638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 txpwr_bphy_ofdm_max;			/* Max OFDM power for this band (SROM) */
229738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 txpwr_aphy_max[NUM_PWRCTRL_RATES];	/* Max power for A band (SROM) */
229838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8  txpwr_antgain[2];				/* Ant gain for each band - from SROM */
229938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 txpwr_est_Pout_gofdm;			/* Pwr estimate for 2.4 OFDM */
230038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} tx_power_legacy_t;
230138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
230238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_RATES_LEGACY    45
230338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_MCS20_FIRST         12
230438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_MCS20_NUM           16
230538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_MCS40_FIRST         28
230638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_MCS40_NUM           17
2307b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
230838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
230938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 flags;
231038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	chanspec_t chanspec;                 /* txpwr report for this channel */
231138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	chanspec_t local_chanspec;           /* channel on which we are associated */
231238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 local_max;                 /* local max according to the AP */
231338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 local_constraint;              /* local constraint according to the AP */
231438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8  antgain[2];                /* Ant gain for each band - from SROM */
231538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 rf_cores;                  /* count of RF Cores being reported */
231638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 est_Pout[4];                           /* Latest tx power out estimate per RF
231738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt							  * chain without adjustment
231838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt							  */
231938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 est_Pout_cck;                          /* Latest CCK tx power out estimate */
232038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 user_limit[WL_TX_POWER_RATES_LEGACY];  /* User limit */
232138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 reg_limit[WL_TX_POWER_RATES_LEGACY];   /* Regulatory power limit */
232238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 board_limit[WL_TX_POWER_RATES_LEGACY]; /* Max power board can support (SROM) */
232338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 target[WL_TX_POWER_RATES_LEGACY];      /* Latest target power */
232438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} tx_power_legacy2_t;
232538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
232638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* TX Power index defines */
232738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_NUM_RATES_CCK			4 /* 1, 2, 5.5, 11 Mbps */
232838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_NUM_RATES_OFDM			8 /* 6, 9, 12, 18, 24, 36, 48, 54 Mbps SISO/CDD */
232938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_NUM_RATES_MCS_1STREAM	8 /* MCS 0-7 1-stream rates - SISO/CDD/STBC/MCS */
233038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_NUM_RATES_EXTRA_VHT		2 /* Additional VHT 11AC rates */
233138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_NUM_RATES_VHT			10
233238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_NUM_RATES_MCS32			1
233338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
233438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_NUM_RATES_CCK       WL_NUM_RATES_CCK
233538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_NUM_RATES_OFDM      WL_NUM_RATES_OFDM
233638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_NUM_RATES_MCS_1_STREAM  WL_NUM_RATES_MCS_1STREAM
233738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_NUM_RATES_MCS_2_STREAM  WL_NUM_RATES_MCS_1STREAM
233838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_NUM_RATES_MCS32     WL_NUM_RATES_MCS32
233938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_CCK_NUM     WL_NUM_RATES_CCK
234038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_OFDM_NUM        WL_NUM_RATES_OFDM
234138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_MCS_1_STREAM_NUM    WL_NUM_RATES_MCS_1STREAM
234238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_MCS_2_STREAM_NUM    WL_NUM_RATES_MCS_1STREAM
234338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_MCS_32_NUM      WL_NUM_RATES_MCS32
234438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
234538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_NUM_2x2_ELEMENTS		4
234638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_NUM_3x3_ELEMENTS		6
234738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
234838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct txppr {
234938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* start of 20MHz tx power limits */
235038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20_1x1dsss[WL_NUM_RATES_CCK];		/* Legacy CCK/DSSS */
235138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20_1x1ofdm[WL_NUM_RATES_OFDM];		/* Legacy OFDM transmission */
235238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20_1x1mcs0[WL_NUM_RATES_MCS_1STREAM];		/* SISO MCS 0-7 */
235338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
235438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20_1x2dsss[WL_NUM_RATES_CCK];		/* Legacy CCK/DSSS */
235538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20_1x2cdd_ofdm[WL_NUM_RATES_OFDM];	/* Legacy OFDM CDD transmission */
235638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20_1x2cdd_mcs0[WL_NUM_RATES_MCS_1STREAM];	/* CDD MCS 0-7 */
235738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20_2x2stbc_mcs0[WL_NUM_RATES_MCS_1STREAM];	/* STBC MCS 0-7 */
235838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20_2x2sdm_mcs8[WL_NUM_RATES_MCS_1STREAM];	/* MCS 8-15 */
235938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
236038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20_1x3dsss[WL_NUM_RATES_CCK];		/* Legacy CCK/DSSS */
236138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20_1x3cdd_ofdm[WL_NUM_RATES_OFDM];	/* Legacy OFDM CDD transmission */
236238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20_1x3cdd_mcs0[WL_NUM_RATES_MCS_1STREAM];	/* 1 Nsts to 3 Tx Chain */
236338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20_2x3stbc_mcs0[WL_NUM_RATES_MCS_1STREAM];	/* STBC MCS 0-7 */
236438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20_2x3sdm_mcs8[WL_NUM_RATES_MCS_1STREAM];	/* 2 Nsts to 3 Tx Chain */
236538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20_3x3sdm_mcs16[WL_NUM_RATES_MCS_1STREAM];	/* 3 Nsts to 3 Tx Chain */
236638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
236738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20_1x1vht[WL_NUM_RATES_EXTRA_VHT];		/* VHT8_9SS1 */
236838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20_1x2cdd_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS1_CDD1 */
236938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20_2x2stbc_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS1_STBC */
237038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20_2x2sdm_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS2 */
237138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20_1x3cdd_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS1_CDD2 */
237238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20_2x3stbc_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS1_STBC_SPEXP1 */
237338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20_2x3sdm_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS2_SPEXP1 */
237438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20_3x3sdm_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS3 */
237538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
237638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* start of 40MHz tx power limits */
237738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40_dummy1x1dsss[WL_NUM_RATES_CCK];	/* Legacy CCK/DSSS */
237838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40_1x1ofdm[WL_NUM_RATES_OFDM];		/* Legacy OFDM transmission */
237938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40_1x1mcs0[WL_NUM_RATES_MCS_1STREAM];		/* SISO MCS 0-7 */
238038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
238138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40_dummy1x2dsss[WL_NUM_RATES_CCK];	/* Legacy CCK/DSSS */
238238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40_1x2cdd_ofdm[WL_NUM_RATES_OFDM];	/* Legacy OFDM CDD transmission */
238338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40_1x2cdd_mcs0[WL_NUM_RATES_MCS_1STREAM];	/* CDD MCS 0-7 */
238438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40_2x2stbc_mcs0[WL_NUM_RATES_MCS_1STREAM];	/* STBC MCS 0-7 */
238538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40_2x2sdm_mcs8[WL_NUM_RATES_MCS_1STREAM];	/* MCS 8-15 */
238638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
238738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40_dummy1x3dsss[WL_NUM_RATES_CCK];	/* Legacy CCK/DSSS */
238838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40_1x3cdd_ofdm[WL_NUM_RATES_OFDM];	/* Legacy OFDM CDD transmission */
238938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40_1x3cdd_mcs0[WL_NUM_RATES_MCS_1STREAM];	/* 1 Nsts to 3 Tx Chain */
239038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40_2x3stbc_mcs0[WL_NUM_RATES_MCS_1STREAM];	/* STBC MCS 0-7 */
239138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40_2x3sdm_mcs8[WL_NUM_RATES_MCS_1STREAM];	/* 2 Nsts to 3 Tx Chain */
239238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40_3x3sdm_mcs16[WL_NUM_RATES_MCS_1STREAM];	/* 3 Nsts to 3 Tx Chain */
239338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
239438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40_1x1vht[WL_NUM_RATES_EXTRA_VHT];		/* VHT8_9SS1 */
239538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40_1x2cdd_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS1_CDD1 */
239638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40_2x2stbc_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS1_STBC */
239738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40_2x2sdm_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS2 */
239838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40_1x3cdd_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS1_CDD2 */
239938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40_2x3stbc_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS1_STBC_SPEXP1 */
240038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40_2x3sdm_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS2_SPEXP1 */
240138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40_3x3sdm_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS3 */
240238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
240338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* start of 20in40MHz tx power limits */
240438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in40_1x1dsss[WL_NUM_RATES_CCK];	/* Legacy CCK/DSSS */
240538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in40_1x1ofdm[WL_NUM_RATES_OFDM];	/* Legacy OFDM transmission */
240638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in40_1x1mcs0[WL_NUM_RATES_MCS_1STREAM];	/* SISO MCS 0-7 */
240738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
240838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in40_1x2dsss[WL_NUM_RATES_CCK];		/* Legacy CCK/DSSS */
240938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in40_1x2cdd_ofdm[WL_NUM_RATES_OFDM];	/* Legacy OFDM CDD transmission */
241038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in40_1x2cdd_mcs0[WL_NUM_RATES_MCS_1STREAM];	/* CDD MCS 0-7 */
241138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in40_2x2stbc_mcs0[WL_NUM_RATES_MCS_1STREAM];	/* STBC MCS 0-7 */
241238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in40_2x2sdm_mcs8[WL_NUM_RATES_MCS_1STREAM];	/* MCS 8-15 */
241338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
241438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in40_1x3dsss[WL_NUM_RATES_CCK];		/* Legacy CCK/DSSS */
241538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in40_1x3cdd_ofdm[WL_NUM_RATES_OFDM];	/* 20 in 40 MHz Legacy OFDM CDD */
241638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in40_1x3cdd_mcs0[WL_NUM_RATES_MCS_1STREAM];	/* 1 Nsts to 3 Tx Chain */
241738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in40_2x3stbc_mcs0[WL_NUM_RATES_MCS_1STREAM];	/* STBC MCS 0-7 */
241838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in40_2x3sdm_mcs8[WL_NUM_RATES_MCS_1STREAM];	/* 2 Nsts to 3 Tx Chain */
241938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in40_3x3sdm_mcs16[WL_NUM_RATES_MCS_1STREAM];	/* 3 Nsts to 3 Tx Chain */
242038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
242138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in40_1x1vht[WL_NUM_RATES_EXTRA_VHT];		/* VHT8_9SS1 */
242238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in40_1x2cdd_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS1_CDD1 */
242338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in40_2x2stbc_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS1_STBC */
242438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in40_2x2sdm_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS2 */
242538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in40_1x3cdd_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS1_CDD2 */
242638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in40_2x3stbc_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS1_STBC_SPEXP1 */
242738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in40_2x3sdm_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS2_SPEXP1 */
242838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in40_3x3sdm_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS3 */
242938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
243038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* start of 80MHz tx power limits */
243138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b80_dummy1x1dsss[WL_NUM_RATES_CCK];		/* Legacy CCK/DSSS */
243238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b80_1x1ofdm[WL_NUM_RATES_OFDM];			/* Legacy OFDM transmission */
243338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b80_1x1mcs0[WL_NUM_RATES_MCS_1STREAM];	/* SISO MCS 0-7 */
243438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
243538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b80_dummy1x2dsss[WL_NUM_RATES_CCK];	/* Legacy CCK/DSSS */
243638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b80_1x2cdd_ofdm[WL_NUM_RATES_OFDM];	/* Legacy OFDM CDD transmission */
243738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b80_1x2cdd_mcs0[WL_NUM_RATES_MCS_1STREAM];	/* CDD MCS 0-7 */
243838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b80_2x2stbc_mcs0[WL_NUM_RATES_MCS_1STREAM];	/* STBC MCS 0-7 */
243938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b80_2x2sdm_mcs8[WL_NUM_RATES_MCS_1STREAM];	/* MCS 8-15 */
244038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
244138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b80_dummy1x3dsss[WL_NUM_RATES_CCK];	/* Legacy CCK/DSSS */
244238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b80_1x3cdd_ofdm[WL_NUM_RATES_OFDM];	/* Legacy OFDM CDD transmission */
244338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b80_1x3cdd_mcs0[WL_NUM_RATES_MCS_1STREAM];	/* 1 Nsts to 3 Tx Chain */
244438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b80_2x3stbc_mcs0[WL_NUM_RATES_MCS_1STREAM];	/* STBC MCS 0-7 */
244538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b80_2x3sdm_mcs8[WL_NUM_RATES_MCS_1STREAM];	/* 2 Nsts to 3 Tx Chain */
244638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b80_3x3sdm_mcs16[WL_NUM_RATES_MCS_1STREAM];	/* 3 Nsts to 3 Tx Chain */
244738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
244838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b80_1x1vht[WL_NUM_RATES_EXTRA_VHT];		/* VHT8_9SS1 */
244938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b80_1x2cdd_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS1_CDD1 */
245038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b80_2x2stbc_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS1_STBC */
245138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b80_2x2sdm_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS2 */
245238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b80_1x3cdd_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS1_CDD2 */
245338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b80_2x3stbc_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS1_STBC_SPEXP1 */
245438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b80_2x3sdm_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS2_SPEXP1 */
245538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b80_3x3sdm_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS3 */
245638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
245738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* start of 20in80MHz tx power limits */
245838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in80_1x1dsss[WL_NUM_RATES_CCK];	/* Legacy CCK/DSSS */
245938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in80_1x1ofdm[WL_NUM_RATES_OFDM];	/* Legacy OFDM transmission */
246038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in80_1x1mcs0[WL_NUM_RATES_MCS_1STREAM];	/* SISO MCS 0-7 */
246138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
246238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in80_1x2dsss[WL_NUM_RATES_CCK];		/* Legacy CCK/DSSS */
246338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in80_1x2cdd_ofdm[WL_NUM_RATES_OFDM];	/* Legacy OFDM CDD transmission */
246438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in80_1x2cdd_mcs0[WL_NUM_RATES_MCS_1STREAM];	/* CDD MCS 0-7 */
246538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in80_2x2stbc_mcs0[WL_NUM_RATES_MCS_1STREAM];	/* STBC MCS 0-7 */
246638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in80_2x2sdm_mcs8[WL_NUM_RATES_MCS_1STREAM];	/* MCS 8-15 */
246738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
246838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in80_1x3dsss[WL_NUM_RATES_CCK];		/* Legacy CCK/DSSS */
246938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in80_1x3cdd_ofdm[WL_NUM_RATES_OFDM];	/* Legacy OFDM CDD transmission */
247038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in80_1x3cdd_mcs0[WL_NUM_RATES_MCS_1STREAM];	/* 1 Nsts to 3 Tx Chain */
247138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in80_2x3stbc_mcs0[WL_NUM_RATES_MCS_1STREAM];	/* STBC MCS 0-7 */
247238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in80_2x3sdm_mcs8[WL_NUM_RATES_MCS_1STREAM];	/* 2 Nsts to 3 Tx Chain */
247338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in80_3x3sdm_mcs16[WL_NUM_RATES_MCS_1STREAM];	/* 3 Nsts to 3 Tx Chain */
247438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
247538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in80_1x1vht[WL_NUM_RATES_EXTRA_VHT];		/* VHT8_9SS1 */
247638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in80_1x2cdd_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS1_CDD1 */
247738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in80_2x2stbc_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS1_STBC */
247838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in80_2x2sdm_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS2 */
247938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in80_1x3cdd_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS1_CDD2 */
248038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in80_2x3stbc_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS1_STBC_SPEXP1 */
248138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in80_2x3sdm_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS2_SPEXP1 */
248238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b20in80_3x3sdm_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS3 */
248338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
248438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* start of 40in80MHz tx power limits */
248538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40in80_dummy1x1dsss[WL_NUM_RATES_CCK];	/* Legacy CCK/DSSS */
248638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40in80_1x1ofdm[WL_NUM_RATES_OFDM];		/* Legacy OFDM transmission */
248738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40in80_1x1mcs0[WL_NUM_RATES_MCS_1STREAM];	/* SISO MCS 0-7 */
248838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
248938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40in80_dummy1x2dsss[WL_NUM_RATES_CCK];	/* Legacy CCK/DSSS */
249038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40in80_1x2cdd_ofdm[WL_NUM_RATES_OFDM];	/* Legacy OFDM CDD transmission */
249138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40in80_1x2cdd_mcs0[WL_NUM_RATES_MCS_1STREAM];	/* CDD MCS 0-7 */
249238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40in80_2x2stbc_mcs0[WL_NUM_RATES_MCS_1STREAM];	/* STBC MCS 0-7 */
249338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40in80_2x2sdm_mcs8[WL_NUM_RATES_MCS_1STREAM];	/* MCS 8-15 */
249438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
249538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40in80_dummy1x3dsss[WL_NUM_RATES_CCK];	/* Legacy CCK/DSSS */
249638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40in80_1x3cdd_ofdm[WL_NUM_RATES_OFDM];	/* MHz Legacy OFDM CDD */
249738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40in80_1x3cdd_mcs0[WL_NUM_RATES_MCS_1STREAM];	/* 1 Nsts to 3 Tx Chain */
249838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40in80_2x3stbc_mcs0[WL_NUM_RATES_MCS_1STREAM];	/* STBC MCS 0-7 */
249938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40in80_2x3sdm_mcs8[WL_NUM_RATES_MCS_1STREAM];	/* 2 Nsts to 3 Tx Chain */
250038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40in80_3x3sdm_mcs16[WL_NUM_RATES_MCS_1STREAM];	/* 3 Nsts to 3 Tx Chain */
250138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
250238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40in80_1x1vht[WL_NUM_RATES_EXTRA_VHT];		/* VHT8_9SS1 */
250338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40in80_1x2cdd_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS1_CDD1 */
250438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40in80_2x2stbc_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS1_STBC */
250538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40in80_2x2sdm_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS2 */
250638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40in80_1x3cdd_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS1_CDD2 */
250738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40in80_2x3stbc_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS1_STBC_SPEXP1 */
250838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40in80_2x3sdm_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS2_SPEXP1 */
250938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 b40in80_3x3sdm_vht[WL_NUM_RATES_EXTRA_VHT];	/* VHT8_9SS3 */
251038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
251138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 mcs32; /* C_CHECK - THIS NEEDS TO BE REMOVED THROUGHOUT THE CODE */
251238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} txppr_t;
251338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
251438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* 20MHz */
251538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_CCK_FIRST					OFFSETOF(txppr_t, b20_1x1dsss)
251638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_OFDM20_FIRST				OFFSETOF(txppr_t, b20_1x1ofdm)
251738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_MCS20_SISO_FIRST			OFFSETOF(txppr_t, b20_1x1mcs0)
251838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20_S1x1_FIRST				OFFSETOF(txppr_t, b20_1x1mcs0)
251938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
252038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_CCK_CDD_S1x2_FIRST			OFFSETOF(txppr_t, b20_1x2dsss)
252138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_OFDM20_CDD_FIRST			OFFSETOF(txppr_t, b20_1x2cdd_ofdm)
252238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_MCS20_CDD_FIRST				OFFSETOF(txppr_t, b20_1x2cdd_mcs0)
252338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20_S1x2_FIRST				OFFSETOF(txppr_t, b20_1x2cdd_mcs0)
252438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_MCS20_STBC_FIRST			OFFSETOF(txppr_t, b20_2x2stbc_mcs0)
252538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_MCS20_SDM_FIRST				OFFSETOF(txppr_t, b20_2x2sdm_mcs8)
252638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20_S2x2_FIRST				OFFSETOF(txppr_t, b20_2x2sdm_mcs8)
252738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
252838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_CCK_CDD_S1x3_FIRST			OFFSETOF(txppr_t, b20_1x3dsss)
252938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_OFDM20_CDD_S1x3_FIRST		OFFSETOF(txppr_t, b20_1x3cdd_ofdm)
253038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20_S1x3_FIRST				OFFSETOF(txppr_t, b20_1x3cdd_mcs0)
253138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20_STBC_S2x3_FIRST			OFFSETOF(txppr_t, b20_2x3stbc_mcs0)
253238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20_S2x3_FIRST				OFFSETOF(txppr_t, b20_2x3sdm_mcs8)
253338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20_S3x3_FIRST				OFFSETOF(txppr_t, b20_3x3sdm_mcs16)
253438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
253538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20_S1X1_VHT					OFFSETOF(txppr_t, b20_1x1vht)
253638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20_S1X2_CDD_VHT				OFFSETOF(txppr_t, b20_1x2cdd_vht)
253738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20_S2X2_STBC_VHT			OFFSETOF(txppr_t, b20_2x2stbc_vht)
253838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20_S2X2_VHT					OFFSETOF(txppr_t, b20_2x2sdm_vht)
253938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20_S1X3_CDD_VHT				OFFSETOF(txppr_t, b20_1x3cdd_vht)
254038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20_S2X3_STBC_VHT			OFFSETOF(txppr_t, b20_2x3stbc_vht)
254138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20_S2X3_VHT					OFFSETOF(txppr_t, b20_2x3sdm_vht)
254238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20_S3X3_VHT					OFFSETOF(txppr_t, b20_3x3sdm_vht)
254338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
254438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* 40MHz */
254538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40_DUMMY_CCK_FIRST			OFFSETOF(txppr_t, b40_dummy1x1dsss)
254638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_OFDM40_FIRST				OFFSETOF(txppr_t, b40_1x1ofdm)
254738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_MCS40_SISO_FIRST			OFFSETOF(txppr_t, b40_1x1mcs0)
254838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40_S1x1_FIRST				OFFSETOF(txppr_t, b40_1x1mcs0)
254938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
255038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40_DUMMY_CCK_CDD_S1x2_FIRST	OFFSETOF(txppr_t, b40_dummy1x2dsss)
255138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_OFDM40_CDD_FIRST			OFFSETOF(txppr_t, b40_1x2cdd_ofdm)
255238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_MCS40_CDD_FIRST				OFFSETOF(txppr_t, b40_1x2cdd_mcs0)
255338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40_S1x2_FIRST				OFFSETOF(txppr_t, b40_1x2cdd_mcs0)
255438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_MCS40_STBC_FIRST			OFFSETOF(txppr_t, b40_2x2stbc_mcs0)
255538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_MCS40_SDM_FIRST				OFFSETOF(txppr_t, b40_2x2sdm_mcs8)
255638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40_S2x2_FIRST				OFFSETOF(txppr_t, b40_2x2sdm_mcs8)
255738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
255838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40_DUMMY_CCK_CDD_S1x3_FIRST	OFFSETOF(txppr_t, b40_dummy1x3dsss)
255938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_OFDM40_CDD_S1x3_FIRST		OFFSETOF(txppr_t, b40_1x3cdd_ofdm)
256038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40_S1x3_FIRST				OFFSETOF(txppr_t, b40_1x3cdd_mcs0)
256138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40_STBC_S2x3_FIRST			OFFSETOF(txppr_t, b40_2x3stbc_mcs0)
256238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40_S2x3_FIRST				OFFSETOF(txppr_t, b40_2x3sdm_mcs8)
256338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40_S3x3_FIRST				OFFSETOF(txppr_t, b40_3x3sdm_mcs16)
256438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
256538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40_S1X1_VHT					OFFSETOF(txppr_t, b40_1x1vht)
256638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40_S1X2_CDD_VHT				OFFSETOF(txppr_t, b40_1x2cdd_vht)
256738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40_S2X2_STBC_VHT			OFFSETOF(txppr_t, b40_2x2stbc_vht)
256838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40_S2X2_VHT					OFFSETOF(txppr_t, b40_2x2sdm_vht)
256938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40_S1X3_CDD_VHT				OFFSETOF(txppr_t, b40_1x3cdd_vht)
257038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40_S2X3_STBC_VHT			OFFSETOF(txppr_t, b40_2x3stbc_vht)
257138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40_S2X3_VHT					OFFSETOF(txppr_t, b40_2x3sdm_vht)
257238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40_S3X3_VHT					OFFSETOF(txppr_t, b40_3x3sdm_vht)
257338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
257438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* 20 in 40MHz */
257538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UL_CCK_FIRST				OFFSETOF(txppr_t, b20in40_1x1dsss)
257638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UL_OFDM_FIRST				OFFSETOF(txppr_t, b20in40_1x1ofdm)
257738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UL_S1x1_FIRST				OFFSETOF(txppr_t, b20in40_1x1mcs0)
257838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
257938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_CCK_20U_CDD_S1x2_FIRST	OFFSETOF(txppr_t, b20in40_1x2dsss)
258038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UL_OFDM_CDD_FIRST		OFFSETOF(txppr_t, b20in40_1x2cdd_ofdm)
258138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UL_S1x2_FIRST			OFFSETOF(txppr_t, b20in40_1x2cdd_mcs0)
258238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UL_STBC_S2x2_FIRST	OFFSETOF(txppr_t, b20in40_2x2stbc_mcs0)
258338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UL_S2x2_FIRST			OFFSETOF(txppr_t, b20in40_2x2sdm_mcs8)
258438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
258538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_CCK_20U_CDD_S1x3_FIRST	OFFSETOF(txppr_t, b20in40_1x3dsss)
258638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UL_OFDM_CDD_S1x3_FIRST OFFSETOF(txppr_t, b20in40_1x3cdd_ofdm)
258738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UL_S1x3_FIRST			OFFSETOF(txppr_t, b20in40_1x3cdd_mcs0)
258838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UL_STBC_S2x3_FIRST	OFFSETOF(txppr_t, b20in40_2x3stbc_mcs0)
258938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UL_S2x3_FIRST			OFFSETOF(txppr_t, b20in40_2x3sdm_mcs8)
259038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UL_S3x3_FIRST			OFFSETOF(txppr_t, b20in40_3x3sdm_mcs16)
259138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
259238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UL_S1X1_VHT			OFFSETOF(txppr_t, b20in40_1x1vht)
259338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UL_S1X2_CDD_VHT		OFFSETOF(txppr_t, b20in40_1x2cdd_vht)
259438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UL_S2X2_STBC_VHT		OFFSETOF(txppr_t, b20in40_2x2stbc_vht)
259538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UL_S2X2_VHT			OFFSETOF(txppr_t, b20in40_2x2sdm_vht)
259638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UL_S1X3_CDD_VHT		OFFSETOF(txppr_t, b20in40_1x3cdd_vht)
259738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UL_S2X3_STBC_VHT		OFFSETOF(txppr_t, b20in40_2x3stbc_vht)
259838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UL_S2X3_VHT			OFFSETOF(txppr_t, b20in40_2x3sdm_vht)
259938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UL_S3X3_VHT			OFFSETOF(txppr_t, b20in40_3x3sdm_vht)
260038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
260138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* 80MHz */
260238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_80_DUMMY_CCK_FIRST		OFFSETOF(txppr_t, b80_dummy1x1dsss)
260338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_OFDM80_FIRST			OFFSETOF(txppr_t, b80_1x1ofdm)
260438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_MCS80_SISO_FIRST		OFFSETOF(txppr_t, b80_1x1mcs0)
260538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_80_S1x1_FIRST			OFFSETOF(txppr_t, b80_1x1mcs0)
260638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
260738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_80_DUMMY_CCK_CDD_S1x2_FIRST	OFFSETOF(txppr_t, b80_dummy1x2dsss)
260838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_OFDM80_CDD_FIRST			OFFSETOF(txppr_t, b80_1x2cdd_ofdm)
260938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_MCS80_CDD_FIRST				OFFSETOF(txppr_t, b80_1x2cdd_mcs0)
261038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_80_S1x2_FIRST				OFFSETOF(txppr_t, b80_1x2cdd_mcs0)
261138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_MCS80_STBC_FIRST			OFFSETOF(txppr_t, b80_2x2stbc_mcs0)
261238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_MCS80_SDM_FIRST				OFFSETOF(txppr_t, b80_2x2sdm_mcs8)
261338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_80_S2x2_FIRST				OFFSETOF(txppr_t, b80_2x2sdm_mcs8)
261438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
261538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_80_DUMMY_CCK_CDD_S1x3_FIRST	OFFSETOF(txppr_t, b80_dummy1x3dsss)
261638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_OFDM80_CDD_S1x3_FIRST		OFFSETOF(txppr_t, b80_1x3cdd_ofdm)
261738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_80_S1x3_FIRST				OFFSETOF(txppr_t, b80_1x3cdd_mcs0)
261838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_80_STBC_S2x3_FIRST			OFFSETOF(txppr_t, b80_2x3stbc_mcs0)
261938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_80_S2x3_FIRST				OFFSETOF(txppr_t, b80_2x3sdm_mcs8)
262038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_80_S3x3_FIRST				OFFSETOF(txppr_t, b80_3x3sdm_mcs16)
262138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
262238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_80_S1X1_VHT					OFFSETOF(txppr_t, b80_1x1vht)
262338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_80_S1X2_CDD_VHT				OFFSETOF(txppr_t, b80_1x2cdd_vht)
262438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_80_S2X2_STBC_VHT			OFFSETOF(txppr_t, b80_2x2stbc_vht)
262538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_80_S2X2_VHT					OFFSETOF(txppr_t, b80_2x2sdm_vht)
262638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_80_S1X3_CDD_VHT				OFFSETOF(txppr_t, b80_1x3cdd_vht)
262738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_80_S2X3_STBC_VHT			OFFSETOF(txppr_t, b80_2x3stbc_vht)
262838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_80_S2X3_VHT					OFFSETOF(txppr_t, b80_2x3sdm_vht)
262938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_80_S3X3_VHT					OFFSETOF(txppr_t, b80_3x3sdm_vht)
263038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
263138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* 20 in 80MHz */
263238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UUL_CCK_FIRST				OFFSETOF(txppr_t, b20in80_1x1dsss)
263338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UUL_OFDM_FIRST			OFFSETOF(txppr_t, b20in80_1x1ofdm)
263438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UUL_S1x1_FIRST			OFFSETOF(txppr_t, b20in80_1x1mcs0)
263538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
263638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_CCK_20UU_CDD_S1x2_FIRST		OFFSETOF(txppr_t, b20in80_1x2dsss)
263738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UUL_OFDM_CDD_FIRST		OFFSETOF(txppr_t, b20in80_1x2cdd_ofdm)
263838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UUL_S1x2_FIRST			OFFSETOF(txppr_t, b20in80_1x2cdd_mcs0)
263938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UUL_STBC_S2x2_FIRST		OFFSETOF(txppr_t, b20in80_2x2stbc_mcs0)
264038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UUL_S2x2_FIRST			OFFSETOF(txppr_t, b20in80_2x2sdm_mcs8)
264138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
264238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_CCK_20UU_CDD_S1x3_FIRST		OFFSETOF(txppr_t, b20in80_1x3dsss)
264338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UUL_OFDM_CDD_S1x3_FIRST	OFFSETOF(txppr_t, b20in80_1x3cdd_ofdm)
264438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UUL_S1x3_FIRST			OFFSETOF(txppr_t, b20in80_1x3cdd_mcs0)
264538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UUL_STBC_S2x3_FIRST		OFFSETOF(txppr_t, b20in80_2x3stbc_mcs0)
264638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UUL_S2x3_FIRST			OFFSETOF(txppr_t, b20in80_2x3sdm_mcs8)
264738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UUL_S3x3_FIRST			OFFSETOF(txppr_t, b20in80_3x3sdm_mcs16)
264838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
264938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UUL_S1X1_VHT			OFFSETOF(txppr_t, b20in80_1x1vht)
265038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UUL_S1X2_CDD_VHT		OFFSETOF(txppr_t, b20in80_1x2cdd_vht)
265138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UUL_S2X2_STBC_VHT		OFFSETOF(txppr_t, b20in80_2x2stbc_vht)
265238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UUL_S2X2_VHT			OFFSETOF(txppr_t, b20in80_2x2sdm_vht)
265338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UUL_S1X3_CDD_VHT		OFFSETOF(txppr_t, b20in80_1x3cdd_vht)
265438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UUL_S2X3_STBC_VHT		OFFSETOF(txppr_t, b20in80_2x3stbc_vht)
265538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UUL_S2X3_VHT			OFFSETOF(txppr_t, b20in80_2x3sdm_vht)
265638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_20UUL_S3X3_VHT			OFFSETOF(txppr_t, b20in80_3x3sdm_vht)
265738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
265838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* 40 in 80MHz */
265938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40UUL_DUMMY_CCK_FIRST		OFFSETOF(txppr_t, b40in80_dummy1x1dsss)
266038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40UUL_OFDM_FIRST			OFFSETOF(txppr_t, b40in80_1x1ofdm)
266138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40UUL_S1x1_FIRST			OFFSETOF(txppr_t, b40in80_1x1mcs0)
266238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
266338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_CCK_40UU_DUMMY_CDD_S1x2_FIRST OFFSETOF(txppr_t, b40in80_dummy1x2dsss)
266438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40UUL_OFDM_CDD_FIRST		OFFSETOF(txppr_t, b40in80_1x2cdd_ofdm)
266538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40UUL_S1x2_FIRST			OFFSETOF(txppr_t, b40in80_1x2cdd_mcs0)
266638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40UUL_STBC_S2x2_FIRST		OFFSETOF(txppr_t, b40in80_2x2stbc_mcs0)
266738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40UUL_S2x2_FIRST			OFFSETOF(txppr_t, b40in80_2x2sdm_mcs8)
266838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
266938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_CCK_40UU_DUMMY_CDD_S1x3_FIRST OFFSETOF(txppr_t, b40in80_dummy1x3dsss)
267038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40UUL_OFDM_CDD_S1x3_FIRST	OFFSETOF(txppr_t, b40in80_1x3cdd_ofdm)
267138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40UUL_S1x3_FIRST			OFFSETOF(txppr_t, b40in80_1x3cdd_mcs0)
267238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40UUL_STBC_S2x3_FIRST		OFFSETOF(txppr_t, b40in80_2x3stbc_mcs0)
267338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40UUL_S2x3_FIRST			OFFSETOF(txppr_t, b40in80_2x3sdm_mcs8)
267438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40UUL_S3x3_FIRST			OFFSETOF(txppr_t, b40in80_3x3sdm_mcs16)
267538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
267638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40UUL_S1X1_VHT			OFFSETOF(txppr_t, b40in80_1x1vht)
267738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40UUL_S1X2_CDD_VHT		OFFSETOF(txppr_t, b40in80_1x2cdd_vht)
267838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40UUL_S2X2_STBC_VHT		OFFSETOF(txppr_t, b40in80_2x2stbc_vht)
267938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40UUL_S2X2_VHT			OFFSETOF(txppr_t, b40in80_2x2sdm_vht)
268038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40UUL_S1X3_CDD_VHT		OFFSETOF(txppr_t, b40in80_1x3cdd_vht)
268138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40UUL_S2X3_STBC_VHT		OFFSETOF(txppr_t, b40in80_2x3stbc_vht)
268238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40UUL_S2X3_VHT			OFFSETOF(txppr_t, b40in80_2x3sdm_vht)
268338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_40UUL_S3X3_VHT			OFFSETOF(txppr_t, b40in80_3x3sdm_vht)
268438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
268538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_MCS_32			OFFSETOF(txppr_t, mcs32) /* C_CHECK remove later */
268638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
268738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_RATES			sizeof(struct txppr)
268838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
268938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* sslpnphy specifics */
269038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_MCS20_SISO_FIRST_SSN	WL_TX_POWER_MCS20_SISO_FIRST
269138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_MCS40_SISO_FIRST_SSN	WL_TX_POWER_MCS40_SISO_FIRST
2692b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
269338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
269438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 ver;				/* version of this struct */
269538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 len;				/* length in bytes of this structure */
269638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 flags;
269738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	chanspec_t chanspec;			/* txpwr report for this channel */
269838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	chanspec_t local_chanspec;		/* channel on which we are associated */
269938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 buflen;				/* ppr buffer length */
270038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8      pprbuf[1];			/* Latest target power buffer */
270138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_txppr_t;
270238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
270338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TXPPR_VERSION	0
270438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TXPPR_LENGTH	(sizeof(wl_txppr_t))
270538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TX_POWER_T_VERSION	44
270638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
270738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Defines used with channel_bandwidth for curpower */
270838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BW_20MHZ 		0
270938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BW_40MHZ 		1
271038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BW_80MHZ 		2
271138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BW_160MHZ 		3
271238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
271338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* tx_power_t.flags bits */
271438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* use for defined PPR_API */
271538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_F_ENABLED	1
271638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_F_HW		2
271738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_F_MIMO		4
271838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_F_SISO		8
271938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_F_HT		0x10
272038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TX_POWER_F_VHT		0x20
2721b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
272238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
272338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 flags;
272438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	chanspec_t chanspec;			/* txpwr report for this channel */
272538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	chanspec_t local_chanspec;		/* channel on which we are associated */
272638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 local_max;			/* local max according to the AP */
272738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 local_constraint;			/* local constraint according to the AP */
272838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8  antgain[2];			/* Ant gain for each band - from SROM */
272938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 rf_cores;				/* count of RF Cores being reported */
273038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 est_Pout[4];			/* Latest tx power out estimate per RF chain */
273138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 est_Pout_act[4]; /* Latest tx power out estimate per RF chain w/o adjustment */
273238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 est_Pout_cck;			/* Latest CCK tx power out estimate */
273338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 tx_power_max[4];		/* Maximum target power among all rates */
273438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint tx_power_max_rate_ind[4];		/* Index of the rate with the max target power */
273538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 user_limit[WL_TX_POWER_RATES];	/* User limit */
273638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 board_limit[WL_TX_POWER_RATES];	/* Max power board can support (SROM) */
273738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 target[WL_TX_POWER_RATES];			/* Latest target power */
273838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 clm_limits[WL_NUMRATES];		/* regulatory limits - 20, 40 or 80MHz */
273938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 clm_limits_subchan1[WL_NUMRATES];	/* regulatory limits - 20in40 or 40in80 */
274038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 clm_limits_subchan2[WL_NUMRATES];	/* regulatory limits - 20in80MHz */
274138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 sar;					/* SAR limit for display by wl executable */
274238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 channel_bandwidth;		/* 20, 40 or 80 MHz bandwidth? */
274338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 version;				/* Version of the data format wlu <--> driver */
274438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 display_core;			/* Displayed curpower core */
274538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 target_offsets[4];		/* Target power offsets for current rate per core */
274638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 last_tx_ratespec;	/* Ratespec for last transmition */
274738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 SARLIMIT[MAX_STREAMS_SUPPORTED];
274838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} tx_power_t;
274938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
275038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct tx_inst_power {
275138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 txpwr_est_Pout[2];			/* Latest estimate for 2.4 and 5 Ghz */
275238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 txpwr_est_Pout_gofdm;			/* Pwr estimate for 2.4 OFDM */
275338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} tx_inst_power_t;
2754b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
2755b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
275638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
275738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 flags;
275838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	chanspec_t chanspec;			/* txpwr report for this channel */
275938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	chanspec_t local_chanspec;		/* channel on which we are associated */
276038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 local_max;			/* local max according to the AP */
276138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 local_constraint;			/* local constraint according to the AP */
276238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8  antgain[2];			/* Ant gain for each band - from SROM */
276338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 rf_cores;				/* count of RF Cores being reported */
276438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 est_Pout[4];			/* Latest tx power out estimate per RF chain */
276538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 est_Pout_act[4];                  /* Latest tx power out estimate per RF chain
276638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt						 * without adjustment
276738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt						 */
276838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 est_Pout_cck;			/* Latest CCK tx power out estimate */
276938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 tx_power_max[4];                  /* Maximum target power among all rates */
277038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint tx_power_max_rate_ind[4];         /* Index of the rate with the max target power */
277138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	txppr_t user_limit;			/* User limit */
277238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	txppr_t reg_limit;			/* Regulatory power limit */
277338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	txppr_t board_limit;			/* Max power board can support (SROM) */
277438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	txppr_t target;				/* Latest target power */
277538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_txpwr_t;
277638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
277738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_NUM_TXCHAIN_MAX	4
277838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wl_txchain_pwr_offsets {
277938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 offset[WL_NUM_TXCHAIN_MAX];	/* quarter dBm signed offset for each chain */
278038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_txchain_pwr_offsets_t;
278138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
278238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* 802.11h measurement types */
278338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_MEASURE_TPC			1
278438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_MEASURE_CHANNEL_BASIC	2
278538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_MEASURE_CHANNEL_CCA		3
278638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_MEASURE_CHANNEL_RPI		4
278738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
278838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* regulatory enforcement levels */
278938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define SPECT_MNGMT_OFF			0		/* both 11h and 11d disabled */
279038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define SPECT_MNGMT_LOOSE_11H		1		/* allow non-11h APs in scan lists */
279138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define SPECT_MNGMT_STRICT_11H		2		/* prune out non-11h APs from scan list */
279238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define SPECT_MNGMT_STRICT_11D		3		/* switch to 802.11D mode */
279338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* SPECT_MNGMT_LOOSE_11H_D - same as SPECT_MNGMT_LOOSE with the exception that Country IE
279438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * adoption is done regardless of capability spectrum_management
279538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
279638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define SPECT_MNGMT_LOOSE_11H_D		4		/* operation defined above */
279738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
279838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_CHAN_VALID_HW	(1 << 0)	/* valid with current HW */
279938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_CHAN_VALID_SW	(1 << 1)	/* valid with current country setting */
280038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_CHAN_BAND_5G		(1 << 2)	/* 5GHz-band channel */
280138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_CHAN_RADAR		(1 << 3)	/* radar sensitive  channel */
280238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_CHAN_INACTIVE	(1 << 4)	/* temporarily inactive due to radar */
280338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_CHAN_PASSIVE		(1 << 5)	/* channel is in passive mode */
280438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_CHAN_RESTRICTED	(1 << 6)	/* restricted use channel */
280538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
280638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* BTC mode used by "btc_mode" iovar */
280738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_BTC_DISABLE		0	/* disable BT coexistence */
280838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BTC_FULLTDM      1	/* full TDM COEX */
280938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BTC_ENABLE       1	/* full TDM COEX to maintain backward compatiblity */
281038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BTC_PREMPT      2    /* full TDM COEX with preemption */
281138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BTC_LITE        3	/* light weight coex for large isolation platform */
281238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BTC_PARALLEL		4   /* BT and WLAN run in parallel with separate antenna  */
281338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BTC_HYBRID		5   /* hybrid coex, only ack is allowed to transmit in BT slot */
281438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BTC_DEFAULT		8	/* set the default mode for the device */
281538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_INF_BTC_DISABLE      0
281638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_INF_BTC_ENABLE       1
281738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_INF_BTC_AUTO         3
281838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
281938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* BTC wire used by "btc_wire" iovar */
282038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_BTC_DEFWIRE		0	/* use default wire setting */
282138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BTC_2WIRE		2	/* use 2-wire BTC */
282238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BTC_3WIRE		3	/* use 3-wire BTC */
282338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BTC_4WIRE		4	/* use 4-wire BTC */
282438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
282538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* BTC flags: BTC configuration that can be set by host */
282638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BTC_FLAG_PREMPT               (1 << 0)
282738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BTC_FLAG_BT_DEF               (1 << 1)
282838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BTC_FLAG_ACTIVE_PROT          (1 << 2)
282938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BTC_FLAG_SIM_RSP              (1 << 3)
283038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BTC_FLAG_PS_PROTECT           (1 << 4)
283138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BTC_FLAG_SIM_TX_LP	         (1 << 5)
283238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BTC_FLAG_ECI                  (1 << 6)
283338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BTC_FLAG_LIGHT                (1 << 7)
283438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BTC_FLAG_PARALLEL             (1 << 8)
283538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
283638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Message levels */
283738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_ERROR_VAL		0x00000001
283838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TRACE_VAL		0x00000002
283938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PRHDRS_VAL		0x00000004
284038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PRPKT_VAL		0x00000008
284138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_INFORM_VAL		0x00000010
284238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TMP_VAL		0x00000020
284338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_OID_VAL		0x00000040
284438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RATE_VAL		0x00000080
284538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_ASSOC_VAL		0x00000100
284638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PRUSR_VAL		0x00000200
284738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PS_VAL		0x00000400
284838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TXPWR_VAL		0x00000800	/* retired in TOT on 6/10/2009 */
284938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PORT_VAL		0x00001000
285038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DUAL_VAL		0x00002000
285138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_WSEC_VAL		0x00004000
285238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_WSEC_DUMP_VAL	0x00008000
285338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_LOG_VAL		0x00010000
285438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_NRSSI_VAL		0x00020000	/* retired in TOT on 6/10/2009 */
285538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_LOFT_VAL		0x00040000	/* retired in TOT on 6/10/2009 */
285638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_REGULATORY_VAL	0x00080000
285738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PHYCAL_VAL		0x00100000	/* retired in TOT on 6/10/2009 */
285838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RADAR_VAL		0x00200000	/* retired in TOT on 6/10/2009 */
285938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_MPC_VAL		0x00400000
286038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_APSTA_VAL		0x00800000
286138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DFS_VAL		0x01000000
286238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BA_VAL		0x02000000	/* retired in TOT on 6/14/2010 */
286338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_ACI_VAL		0x04000000
286438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_MBSS_VAL		0x04000000
286538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_CAC_VAL		0x08000000
286638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_AMSDU_VAL		0x10000000
286738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_AMPDU_VAL		0x20000000
286838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_FFPLD_VAL		0x40000000
286938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
287038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* wl_msg_level is full. For new bits take the next one and AND with
287138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * wl_msg_level2 in wl_dbg.h
287238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
287338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_DPT_VAL 		0x00000001
287438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_SCAN_VAL		0x00000002
287538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_WOWL_VAL		0x00000004
287638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_COEX_VAL		0x00000008
287738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RTDC_VAL		0x00000010
287838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PROTO_VAL		0x00000020
287938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_BTA_VAL		0x00000040
288038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_CHANINT_VAL		0x00000080
288138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_THERMAL_VAL		0x00000100	/* retired in TOT on 6/10/2009 */
288238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_P2P_VAL		0x00000200
288338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_ITFR_VAL		0x00000400
288438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_MCHAN_VAL		0x00000800
288538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TDLS_VAL		0x00001000
288638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_MCNX_VAL		0x00002000
288738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PROT_VAL		0x00004000
288838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PSTA_VAL		0x00008000
288938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TBTT_VAL		0x00010000
289038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_NIC_VAL		0x00020000
289138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PWRSEL_VAL		0x00040000
289238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TRF_MGMT_VAL		0x00080000
289338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_L2FILTER_VAL		0x00100000
289438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TSO_VAL		0x00200000
289538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_MQ_VAL		0x00400000
289638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* These 3 levels are currently not used in trunk but in Aardvark and Phoenix2 with != values */
289738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_LPC_VAL	        0x00800000
289838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TXBF_VAL		0x01000000
289938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_P2PO_VAL		0x02000000
290038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* This level is synchronized with other branches */
290138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_WNM_VAL		0x04000000
290238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* This level is currently not used in trunk but used in Phoenix2 */
290338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_SRSCAN_VAL	0x08000000
290438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
290538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* use top-bit for WL_TIME_STAMP_VAL because this is a modifier
290638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * rather than a message-type of its own
290738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
290838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_TIMESTAMP_VAL        0x80000000
290938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
291038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* max # of leds supported by GPIO (gpio pin# == led index#) */
291138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_LED_NUMGPIO		32	/* gpio 0-31 */
291238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
291338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* led per-pin behaviors */
291438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_LED_OFF		0		/* always off */
291538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_LED_ON		1		/* always on */
291638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_LED_ACTIVITY		2		/* activity */
291738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_LED_RADIO		3		/* radio enabled */
291838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_LED_ARADIO		4		/* 5  Ghz radio enabled */
291938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_LED_BRADIO		5		/* 2.4Ghz radio enabled */
292038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_LED_BGMODE		6		/* on if gmode, off if bmode */
292138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_LED_WI1		7
292238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_LED_WI2		8
292338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_LED_WI3		9
292438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_LED_ASSOC		10		/* associated state indicator */
292538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_LED_INACTIVE		11		/* null behavior (clears default behavior) */
292638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_LED_ASSOCACT		12		/* on when associated; blink fast for activity */
292738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_LED_WI4		13
292838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_LED_WI5		14
292938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_LED_BLINKSLOW	15		/* blink slow */
293038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_LED_BLINKMED		16		/* blink med */
293138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_LED_BLINKFAST	17		/* blink fast */
293238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_LED_BLINKCUSTOM	18		/* blink custom */
293338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_LED_BLINKPERIODIC	19		/* blink periodic (custom 1000ms / off 400ms) */
293438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_LED_ASSOC_WITH_SEC 	20		/* when connected with security */
293538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt						/* keep on for 300 sec */
293638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_LED_START_OFF 	21		/* off upon boot, could be turned on later */
293738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_LED_W6		22		/* off upon boot, could be turned on later */
293838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_LED_WI7		23		/* off upon boot, could be turned on later */
293938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_LED_NUMBEHAVIOR	24
294038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
294138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* led behavior numeric value format */
294238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_LED_BEH_MASK		0x7f		/* behavior mask */
294338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_LED_AL_MASK		0x80		/* activelow (polarity) bit */
294438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
294538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* maximum channels returned by the get valid channels iovar */
294638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_NUMCHANNELS		64
294738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
294838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* max number of chanspecs (used by the iovar to calc. buf space) */
294938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_NUMCHANSPECS 110
295038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
295138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* WDS link local endpoint WPA role */
295238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_WDS_WPA_ROLE_AUTH	0	/* authenticator */
295338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_WDS_WPA_ROLE_SUP	1	/* supplicant */
295438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_WDS_WPA_ROLE_AUTO	255	/* auto, based on mac addr value */
295538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
295638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* number of bytes needed to define a 128-bit mask for MAC event reporting */
295738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_EVENTING_MASK_LEN	16
2958b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
295938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/*
296038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Join preference iovar value is an array of tuples. Each tuple has a one-byte type,
296138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * a one-byte length, and a variable length value.  RSSI type tuple must be present
296238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * in the array.
296338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *
296438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Types are defined in "join preference types" section.
296538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *
296638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Length is the value size in octets. It is reserved for WL_JOIN_PREF_WPA type tuple
296738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * and must be set to zero.
296838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *
296938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Values are defined below.
297038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *
297138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 1. RSSI - 2 octets
297238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * offset 0: reserved
297338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * offset 1: reserved
297438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *
297538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 2. WPA - 2 + 12 * n octets (n is # tuples defined below)
297638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * offset 0: reserved
297738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * offset 1: # of tuples
297838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * offset 2: tuple 1
297938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * offset 14: tuple 2
298038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * ...
298138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * offset 2 + 12 * (n - 1) octets: tuple n
298238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *
298338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * struct wpa_cfg_tuple {
298438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *   uint8 akm[DOT11_OUI_LEN+1];     akm suite
298538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *   uint8 ucipher[DOT11_OUI_LEN+1]; unicast cipher suite
298638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *   uint8 mcipher[DOT11_OUI_LEN+1]; multicast cipher suite
298738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * };
298838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *
298938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * multicast cipher suite can be specified as a specific cipher suite or WL_WPA_ACP_MCS_ANY.
299038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *
299138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 3. BAND - 2 octets
299238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * offset 0: reserved
299338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * offset 1: see "band preference" and "band types"
299438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *
299538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 4. BAND RSSI - 2 octets
299638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * offset 0: band types
299738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * offset 1: +ve RSSI boost value in dB
299838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
2999b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
300038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* join preference types */
300138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_JOIN_PREF_RSSI	1	/* by RSSI */
300238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_JOIN_PREF_WPA	2	/* by akm and ciphers */
300338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_JOIN_PREF_BAND	3	/* by 802.11 band */
300438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_JOIN_PREF_RSSI_DELTA	4	/* by 802.11 band only if RSSI delta condition matches */
300538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_JOIN_PREF_TRANS_PREF	5	/* defined by requesting AP */
3006b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
300738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* band preference */
300838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLJP_BAND_ASSOC_PREF	255	/* use what WLC_SET_ASSOC_PREFER ioctl specifies */
3009b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
301038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* any multicast cipher suite */
301138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_WPA_ACP_MCS_ANY	"\x00\x00\x00\x00"
3012b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
3013b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidtstruct tsinfo_arg {
3014b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint8 octets[3];
3015b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt};
301638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* LINUX_POSTMOGRIFY_REMOVAL */
3017b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
301838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	NFIFO			6	/* # tx/rx fifopairs */
3019b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
302038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_CNT_T_VERSION	8	/* current version of wl_cnt_t struct */
3021b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
3022b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct {
302338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16	version;	/* see definition of WL_CNT_T_VERSION */
302438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16	length;		/* length of entire structure */
302538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
302638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* transmit stat counters */
302738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txframe;	/* tx data frames */
302838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txbyte;		/* tx data bytes */
302938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txretrans;	/* tx mac retransmits */
303038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txerror;	/* tx data errors (derived: sum of others) */
303138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txctl;		/* tx management frames */
303238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txprshort;	/* tx short preamble frames */
303338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txserr;		/* tx status errors */
303438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txnobuf;	/* tx out of buffers errors */
303538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txnoassoc;	/* tx discard because we're not associated */
303638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txrunt;		/* tx runt frames */
303738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txchit;		/* tx header cache hit (fastpath) */
303838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txcmiss;	/* tx header cache miss (slowpath) */
303938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
304038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* transmit chip error counters */
304138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txuflo;		/* tx fifo underflows */
304238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txphyerr;	/* tx phy errors (indicated in tx status) */
304338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txphycrs;
304438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
304538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* receive stat counters */
304638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxframe;	/* rx data frames */
304738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxbyte;		/* rx data bytes */
304838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxerror;	/* rx data errors (derived: sum of others) */
304938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxctl;		/* rx management frames */
305038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxnobuf;	/* rx out of buffers errors */
305138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxnondata;	/* rx non data frames in the data channel errors */
305238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxbadds;	/* rx bad DS errors */
305338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxbadcm;	/* rx bad control or management frames */
305438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxfragerr;	/* rx fragmentation errors */
305538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxrunt;		/* rx runt frames */
305638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxgiant;	/* rx giant frames */
305738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxnoscb;	/* rx no scb error */
305838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxbadproto;	/* rx invalid frames */
305938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxbadsrcmac;	/* rx frames with Invalid Src Mac */
306038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxbadda;	/* rx frames tossed for invalid da */
306138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxfilter;	/* rx frames filtered out */
306238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
306338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* receive chip error counters */
306438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxoflo;		/* rx fifo overflow errors */
306538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxuflo[NFIFO];	/* rx dma descriptor underflow errors */
306638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
306738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	d11cnt_txrts_off;	/* d11cnt txrts value when reset d11cnt */
306838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	d11cnt_rxcrc_off;	/* d11cnt rxcrc value when reset d11cnt */
306938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	d11cnt_txnocts_off;	/* d11cnt txnocts value when reset d11cnt */
307038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
307138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* misc counters */
307238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	dmade;		/* tx/rx dma descriptor errors */
307338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	dmada;		/* tx/rx dma data errors */
307438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	dmape;		/* tx/rx dma descriptor protocol errors */
307538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	reset;		/* reset count */
307638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	tbtt;		/* cnts the TBTT int's */
307738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txdmawar;
307838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	pkt_callback_reg_fail;	/* callbacks register failure */
307938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
308038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* MAC counters: 32-bit version of d11.h's macstat_t */
308138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txallfrm;	/* total number of frames sent, incl. Data, ACK, RTS, CTS,
308238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 * Control Management (includes retransmissions)
308338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 */
308438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txrtsfrm;	/* number of RTS sent out by the MAC */
308538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txctsfrm;	/* number of CTS sent out by the MAC */
308638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txackfrm;	/* number of ACK frames sent out */
308738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txdnlfrm;	/* Not used */
308838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txbcnfrm;	/* beacons transmitted */
308938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txfunfl[8];	/* per-fifo tx underflows */
309038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txtplunfl;	/* Template underflows (mac was too slow to transmit ACK/CTS
309138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 * or BCN)
309238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 */
309338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txphyerror;	/* Transmit phy error, type of error is reported in tx-status for
309438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 * driver enqueued frames
309538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 */
309638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxfrmtoolong;	/* Received frame longer than legal limit (2346 bytes) */
309738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxfrmtooshrt;	/* Received frame did not contain enough bytes for its frame type */
309838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxinvmachdr;	/* Either the protocol version != 0 or frame type not
309938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 * data/control/management
310038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 */
310138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxbadfcs;	/* number of frames for which the CRC check failed in the MAC */
310238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxbadplcp;	/* parity check of the PLCP header failed */
310338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxcrsglitch;	/* PHY was able to correlate the preamble but not the header */
310438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxstrt;		/* Number of received frames with a good PLCP
310538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 * (i.e. passing parity check)
310638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 */
310738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxdfrmucastmbss; /* Number of received DATA frames with good FCS and matching RA */
310838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxmfrmucastmbss; /* number of received mgmt frames with good FCS and matching RA */
310938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxcfrmucast;	/* number of received CNTRL frames with good FCS and matching RA */
311038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxrtsucast;	/* number of unicast RTS addressed to the MAC (good FCS) */
311138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxctsucast;	/* number of unicast CTS addressed to the MAC (good FCS) */
311238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxackucast;	/* number of ucast ACKS received (good FCS) */
311338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxdfrmocast;	/* number of received DATA frames (good FCS and not matching RA) */
311438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxmfrmocast;	/* number of received MGMT frames (good FCS and not matching RA) */
311538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxcfrmocast;	/* number of received CNTRL frame (good FCS and not matching RA) */
311638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxrtsocast;	/* number of received RTS not addressed to the MAC */
311738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxctsocast;	/* number of received CTS not addressed to the MAC */
311838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxdfrmmcast;	/* number of RX Data multicast frames received by the MAC */
311938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxmfrmmcast;	/* number of RX Management multicast frames received by the MAC */
312038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxcfrmmcast;	/* number of RX Control multicast frames received by the MAC
312138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 * (unlikely to see these)
312238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 */
312338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxbeaconmbss;	/* beacons received from member of BSS */
312438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxdfrmucastobss; /* number of unicast frames addressed to the MAC from
312538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				  * other BSS (WDS FRAME)
312638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				  */
312738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxbeaconobss;	/* beacons received from other BSS */
312838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxrsptmout;	/* Number of response timeouts for transmitted frames
312938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 * expecting a response
313038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 */
313138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	bcntxcancl;	/* transmit beacons canceled due to receipt of beacon (IBSS) */
313238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxf0ovfl;	/* Number of receive fifo 0 overflows */
313338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxf1ovfl;	/* Number of receive fifo 1 overflows (obsolete) */
313438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxf2ovfl;	/* Number of receive fifo 2 overflows (obsolete) */
313538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txsfovfl;	/* Number of transmit status fifo overflows (obsolete) */
313638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	pmqovfl;	/* Number of PMQ overflows */
313738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxcgprqfrm;	/* Number of received Probe requests that made it into
313838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 * the PRQ fifo
313938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 */
314038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxcgprsqovfl;	/* Rx Probe Request Que overflow in the AP */
314138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txcgprsfail;	/* Tx Probe Response Fail. AP sent probe response but did
314238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 * not get ACK
314338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 */
314438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txcgprssuc;	/* Tx Probe Response Success (ACK was received) */
314538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	prs_timeout;	/* Number of probe requests that were dropped from the PRQ
314638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 * fifo because a probe response could not be sent out within
314738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 * the time limit defined in M_PRS_MAXTIME
314838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 */
314938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxnack;		/* obsolete */
315038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	frmscons;	/* obsolete */
315138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txnack;		/* obsolete */
315238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txglitch_nack;	/* obsolete */
315338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txburst;	/* obsolete */
315438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
315538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* 802.11 MIB counters, pp. 614 of 802.11 reaff doc. */
315638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txfrag;		/* dot11TransmittedFragmentCount */
315738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txmulti;	/* dot11MulticastTransmittedFrameCount */
315838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txfail;		/* dot11FailedCount */
315938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txretry;	/* dot11RetryCount */
316038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txretrie;	/* dot11MultipleRetryCount */
316138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxdup;		/* dot11FrameduplicateCount */
316238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txrts;		/* dot11RTSSuccessCount */
316338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txnocts;	/* dot11RTSFailureCount */
316438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txnoack;	/* dot11ACKFailureCount */
316538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxfrag;		/* dot11ReceivedFragmentCount */
316638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxmulti;	/* dot11MulticastReceivedFrameCount */
316738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxcrc;		/* dot11FCSErrorCount */
316838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txfrmsnt;	/* dot11TransmittedFrameCount (bogus MIB?) */
316938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxundec;	/* dot11WEPUndecryptableCount */
317038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
317138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* WPA2 counters (see rxundec for DecryptFailureCount) */
317238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	tkipmicfaill;	/* TKIPLocalMICFailures */
317338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	tkipcntrmsr;	/* TKIPCounterMeasuresInvoked */
317438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	tkipreplay;	/* TKIPReplays */
317538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	ccmpfmterr;	/* CCMPFormatErrors */
317638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	ccmpreplay;	/* CCMPReplays */
317738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	ccmpundec;	/* CCMPDecryptErrors */
317838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	fourwayfail;	/* FourWayHandshakeFailures */
317938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	wepundec;	/* dot11WEPUndecryptableCount */
318038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	wepicverr;	/* dot11WEPICVErrorCount */
318138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	decsuccess;	/* DecryptSuccessCount */
318238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	tkipicverr;	/* TKIPICVErrorCount */
318338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	wepexcluded;	/* dot11WEPExcludedCount */
318438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
318538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txchanrej;	/* Tx frames suppressed due to channel rejection */
318638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	psmwds;		/* Count PSM watchdogs */
318738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	phywatchdog;	/* Count Phy watchdogs (triggered by ucode) */
318838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
318938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* MBSS counters, AP only */
319038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	prq_entries_handled;	/* PRQ entries read in */
319138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	prq_undirected_entries;	/*    which were bcast bss & ssid */
319238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	prq_bad_entries;	/*    which could not be translated to info */
319338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	atim_suppress_count;	/* TX suppressions on ATIM fifo */
319438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	bcn_template_not_ready;	/* Template marked in use on send bcn ... */
319538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	bcn_template_not_ready_done; /* ...but "DMA done" interrupt rcvd */
319638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	late_tbtt_dpc;	/* TBTT DPC did not happen in time */
319738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
319838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* per-rate receive stat counters */
319938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx1mbps;	/* packets rx at 1Mbps */
320038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx2mbps;	/* packets rx at 2Mbps */
320138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx5mbps5;	/* packets rx at 5.5Mbps */
320238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx6mbps;	/* packets rx at 6Mbps */
320338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx9mbps;	/* packets rx at 9Mbps */
320438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx11mbps;	/* packets rx at 11Mbps */
320538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx12mbps;	/* packets rx at 12Mbps */
320638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx18mbps;	/* packets rx at 18Mbps */
320738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx24mbps;	/* packets rx at 24Mbps */
320838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx36mbps;	/* packets rx at 36Mbps */
320938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx48mbps;	/* packets rx at 48Mbps */
321038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx54mbps;	/* packets rx at 54Mbps */
321138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx108mbps; 	/* packets rx at 108mbps */
321238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx162mbps;	/* packets rx at 162mbps */
321338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx216mbps;	/* packets rx at 216 mbps */
321438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx270mbps;	/* packets rx at 270 mbps */
321538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx324mbps;	/* packets rx at 324 mbps */
321638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx378mbps;	/* packets rx at 378 mbps */
321738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx432mbps;	/* packets rx at 432 mbps */
321838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx486mbps;	/* packets rx at 486 mbps */
321938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx540mbps;	/* packets rx at 540 mbps */
322038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
322138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* pkteng rx frame stats */
322238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	pktengrxducast; /* unicast frames rxed by the pkteng code */
322338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	pktengrxdmcast; /* multicast frames rxed by the pkteng code */
322438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
322538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rfdisable;	/* count of radio disables */
322638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	bphy_rxcrsglitch;	/* PHY count of bphy glitches */
322738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
322838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txexptime;	/* Tx frames suppressed due to timer expiration */
322938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
323038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txmpdu_sgi;	/* count for sgi transmit */
323138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxmpdu_sgi;	/* count for sgi received */
323238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	txmpdu_stbc;	/* count for stbc transmit */
323338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxmpdu_stbc;	/* count for stbc received */
323438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
323538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	rxundec_mcst;	/* dot11WEPUndecryptableCount */
323638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
323738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* WPA2 counters (see rxundec for DecryptFailureCount) */
323838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	tkipmicfaill_mcst;	/* TKIPLocalMICFailures */
323938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	tkipcntrmsr_mcst;	/* TKIPCounterMeasuresInvoked */
324038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	tkipreplay_mcst;	/* TKIPReplays */
324138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	ccmpfmterr_mcst;	/* CCMPFormatErrors */
324238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	ccmpreplay_mcst;	/* CCMPReplays */
324338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	ccmpundec_mcst;	/* CCMPDecryptErrors */
324438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	fourwayfail_mcst;	/* FourWayHandshakeFailures */
324538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	wepundec_mcst;	/* dot11WEPUndecryptableCount */
324638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	wepicverr_mcst;	/* dot11WEPICVErrorCount */
324738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	decsuccess_mcst;	/* DecryptSuccessCount */
324838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	tkipicverr_mcst;	/* TKIPICVErrorCount */
324938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	wepexcluded_mcst;	/* dot11WEPExcludedCount */
325038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
325138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	dma_hang;	/* count for dma hang */
325238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	reinit;		/* count for reinit */
325338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
325438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  pstatxucast;	/* count of ucast frames xmitted on all psta assoc */
325538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  pstatxnoassoc;	/* count of txnoassoc frames xmitted on all psta assoc */
325638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  pstarxucast;	/* count of ucast frames received on all psta assoc */
325738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  pstarxbcmc;	/* count of bcmc frames received on all psta */
325838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  pstatxbcmc;	/* count of bcmc frames transmitted on all psta */
325938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
326038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  cso_passthrough; /* hw cso required but passthrough */
326138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	chained;	/* number of frames chained */
326238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	chainedsz1;	/* number of chain size 1 frames */
326338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	unchained;	/* number of frames not chained */
326438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	maxchainsz;	/* max chain size so far */
326538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	currchainsz;	/* current chain size */
326638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 	cso_normal;	/* hw cso hdr for normal process */
326738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_cnt_t;
3268b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
326938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef LINUX_POSTMOGRIFY_REMOVAL
327038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
327138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16  version;    /* see definition of WL_CNT_T_VERSION */
327238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16  length;     /* length of entire structure */
327338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
327438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* transmit stat counters */
327538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txframe;    /* tx data frames */
327638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txbyte;     /* tx data bytes */
327738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txretrans;  /* tx mac retransmits */
327838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txerror;    /* tx data errors (derived: sum of others) */
327938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txctl;      /* tx management frames */
328038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txprshort;  /* tx short preamble frames */
328138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txserr;     /* tx status errors */
328238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txnobuf;    /* tx out of buffers errors */
328338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txnoassoc;  /* tx discard because we're not associated */
328438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txrunt;     /* tx runt frames */
328538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txchit;     /* tx header cache hit (fastpath) */
328638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txcmiss;    /* tx header cache miss (slowpath) */
328738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
328838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* transmit chip error counters */
328938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txuflo;     /* tx fifo underflows */
329038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txphyerr;   /* tx phy errors (indicated in tx status) */
329138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txphycrs;
32926dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
329338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* receive stat counters */
329438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxframe;    /* rx data frames */
329538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxbyte;     /* rx data bytes */
329638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxerror;    /* rx data errors (derived: sum of others) */
329738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxctl;      /* rx management frames */
329838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxnobuf;    /* rx out of buffers errors */
329938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxnondata;  /* rx non data frames in the data channel errors */
330038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxbadds;    /* rx bad DS errors */
330138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxbadcm;    /* rx bad control or management frames */
330238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxfragerr;  /* rx fragmentation errors */
330338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxrunt;     /* rx runt frames */
330438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxgiant;    /* rx giant frames */
330538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxnoscb;    /* rx no scb error */
330638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxbadproto; /* rx invalid frames */
330738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxbadsrcmac;    /* rx frames with Invalid Src Mac */
330838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxbadda;    /* rx frames tossed for invalid da */
330938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxfilter;   /* rx frames filtered out */
331038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
331138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* receive chip error counters */
331238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxoflo;     /* rx fifo overflow errors */
331338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxuflo[NFIFO];  /* rx dma descriptor underflow errors */
331438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
331538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  d11cnt_txrts_off;   /* d11cnt txrts value when reset d11cnt */
331638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  d11cnt_rxcrc_off;   /* d11cnt rxcrc value when reset d11cnt */
331738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  d11cnt_txnocts_off; /* d11cnt txnocts value when reset d11cnt */
331838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
331938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* misc counters */
332038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  dmade;      /* tx/rx dma descriptor errors */
332138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  dmada;      /* tx/rx dma data errors */
332238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  dmape;      /* tx/rx dma descriptor protocol errors */
332338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  reset;      /* reset count */
332438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  tbtt;       /* cnts the TBTT int's */
3325b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32  txdmawar;
332638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  pkt_callback_reg_fail;  /* callbacks register failure */
332738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
332838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* MAC counters: 32-bit version of d11.h's macstat_t */
332938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txallfrm;   /* total number of frames sent, incl. Data, ACK, RTS, CTS,
333038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt			     * Control Management (includes retransmissions)
333138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt			     */
333238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txrtsfrm;   /* number of RTS sent out by the MAC */
333338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txctsfrm;   /* number of CTS sent out by the MAC */
333438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txackfrm;   /* number of ACK frames sent out */
333538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txdnlfrm;   /* Not used */
333638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txbcnfrm;   /* beacons transmitted */
333738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txfunfl[8]; /* per-fifo tx underflows */
333838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txtplunfl;  /* Template underflows (mac was too slow to transmit ACK/CTS
333938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt			     * or BCN)
334038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt			     */
334138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txphyerror; /* Transmit phy error, type of error is reported in tx-status for
334238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt			     * driver enqueued frames
334338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt			     */
334438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxfrmtoolong;   /* Received frame longer than legal limit (2346 bytes) */
334538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxfrmtooshrt;   /* Received frame did not contain enough bytes for its frame type */
334638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxinvmachdr;    /* Either the protocol version != 0 or frame type not
334738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 * data/control/management
334838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt			   */
334938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxbadfcs;   /* number of frames for which the CRC check failed in the MAC */
335038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxbadplcp;  /* parity check of the PLCP header failed */
335138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxcrsglitch;    /* PHY was able to correlate the preamble but not the header */
335238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxstrt;     /* Number of received frames with a good PLCP
335338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt			     * (i.e. passing parity check)
335438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt			     */
335538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxdfrmucastmbss; /* Number of received DATA frames with good FCS and matching RA */
335638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxmfrmucastmbss; /* number of received mgmt frames with good FCS and matching RA */
335738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxcfrmucast;    /* number of received CNTRL frames with good FCS and matching RA */
335838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxrtsucast; /* number of unicast RTS addressed to the MAC (good FCS) */
335938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxctsucast; /* number of unicast CTS addressed to the MAC (good FCS) */
336038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxackucast; /* number of ucast ACKS received (good FCS) */
336138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxdfrmocast;    /* number of received DATA frames (good FCS and not matching RA) */
336238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxmfrmocast;    /* number of received MGMT frames (good FCS and not matching RA) */
336338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxcfrmocast;    /* number of received CNTRL frame (good FCS and not matching RA) */
336438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxrtsocast; /* number of received RTS not addressed to the MAC */
336538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxctsocast; /* number of received CTS not addressed to the MAC */
336638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxdfrmmcast;    /* number of RX Data multicast frames received by the MAC */
336738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxmfrmmcast;    /* number of RX Management multicast frames received by the MAC */
336838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxcfrmmcast;    /* number of RX Control multicast frames received by the MAC
336938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 * (unlikely to see these)
337038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 */
337138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxbeaconmbss;   /* beacons received from member of BSS */
337238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxdfrmucastobss; /* number of unicast frames addressed to the MAC from
337338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				  * other BSS (WDS FRAME)
337438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				  */
337538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxbeaconobss;   /* beacons received from other BSS */
337638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxrsptmout; /* Number of response timeouts for transmitted frames
337738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt			     * expecting a response
337838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt			     */
337938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  bcntxcancl; /* transmit beacons canceled due to receipt of beacon (IBSS) */
338038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxf0ovfl;   /* Number of receive fifo 0 overflows */
338138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxf1ovfl;   /* Number of receive fifo 1 overflows (obsolete) */
338238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxf2ovfl;   /* Number of receive fifo 2 overflows (obsolete) */
338338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txsfovfl;   /* Number of transmit status fifo overflows (obsolete) */
338438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  pmqovfl;    /* Number of PMQ overflows */
338538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxcgprqfrm; /* Number of received Probe requests that made it into
338638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt			     * the PRQ fifo
338738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt			     */
338838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxcgprsqovfl;   /* Rx Probe Request Que overflow in the AP */
338938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txcgprsfail;    /* Tx Probe Response Fail. AP sent probe response but did
339038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 * not get ACK
339138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 */
339238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txcgprssuc; /* Tx Probe Response Success (ACK was received) */
339338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  prs_timeout;    /* Number of probe requests that were dropped from the PRQ
339438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 * fifo because a probe response could not be sent out within
339538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 * the time limit defined in M_PRS_MAXTIME
339638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 */
3397b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32  rxnack;
3398b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32  frmscons;
3399b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32  txnack;
340038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txglitch_nack;  /* obsolete */
340138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txburst;    /* obsolete */
340238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
340338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* 802.11 MIB counters, pp. 614 of 802.11 reaff doc. */
340438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txfrag;     /* dot11TransmittedFragmentCount */
340538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txmulti;    /* dot11MulticastTransmittedFrameCount */
340638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txfail;     /* dot11FailedCount */
340738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txretry;    /* dot11RetryCount */
340838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txretrie;   /* dot11MultipleRetryCount */
340938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxdup;      /* dot11FrameduplicateCount */
341038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txrts;      /* dot11RTSSuccessCount */
341138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txnocts;    /* dot11RTSFailureCount */
341238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txnoack;    /* dot11ACKFailureCount */
341338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxfrag;     /* dot11ReceivedFragmentCount */
341438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxmulti;    /* dot11MulticastReceivedFrameCount */
341538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxcrc;      /* dot11FCSErrorCount */
341638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txfrmsnt;   /* dot11TransmittedFrameCount (bogus MIB?) */
341738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxundec;    /* dot11WEPUndecryptableCount */
341838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
341938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* WPA2 counters (see rxundec for DecryptFailureCount) */
342038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  tkipmicfaill;   /* TKIPLocalMICFailures */
342138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  tkipcntrmsr;    /* TKIPCounterMeasuresInvoked */
342238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  tkipreplay; /* TKIPReplays */
342338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  ccmpfmterr; /* CCMPFormatErrors */
342438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  ccmpreplay; /* CCMPReplays */
342538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  ccmpundec;  /* CCMPDecryptErrors */
342638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  fourwayfail;    /* FourWayHandshakeFailures */
342738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  wepundec;   /* dot11WEPUndecryptableCount */
342838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  wepicverr;  /* dot11WEPICVErrorCount */
342938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  decsuccess; /* DecryptSuccessCount */
343038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  tkipicverr; /* TKIPICVErrorCount */
343138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  wepexcluded;    /* dot11WEPExcludedCount */
343238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
343338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxundec_mcst;   /* dot11WEPUndecryptableCount */
343438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
343538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* WPA2 counters (see rxundec for DecryptFailureCount) */
343638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  tkipmicfaill_mcst;  /* TKIPLocalMICFailures */
343738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  tkipcntrmsr_mcst;   /* TKIPCounterMeasuresInvoked */
343838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  tkipreplay_mcst;    /* TKIPReplays */
343938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  ccmpfmterr_mcst;    /* CCMPFormatErrors */
344038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  ccmpreplay_mcst;    /* CCMPReplays */
344138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  ccmpundec_mcst; /* CCMPDecryptErrors */
344238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  fourwayfail_mcst;   /* FourWayHandshakeFailures */
344338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  wepundec_mcst;  /* dot11WEPUndecryptableCount */
344438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  wepicverr_mcst; /* dot11WEPICVErrorCount */
344538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  decsuccess_mcst;    /* DecryptSuccessCount */
344638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  tkipicverr_mcst;    /* TKIPICVErrorCount */
344738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  wepexcluded_mcst;   /* dot11WEPExcludedCount */
344838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
344938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txchanrej;  /* Tx frames suppressed due to channel rejection */
345038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txexptime;  /* Tx frames suppressed due to timer expiration */
345138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  psmwds;     /* Count PSM watchdogs */
345238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  phywatchdog;    /* Count Phy watchdogs (triggered by ucode) */
345338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
345438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* MBSS counters, AP only */
345538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  prq_entries_handled;    /* PRQ entries read in */
345638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  prq_undirected_entries; /*    which were bcast bss & ssid */
345738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  prq_bad_entries;    /*    which could not be translated to info */
345838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  atim_suppress_count;    /* TX suppressions on ATIM fifo */
345938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  bcn_template_not_ready; /* Template marked in use on send bcn ... */
346038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  bcn_template_not_ready_done; /* ...but "DMA done" interrupt rcvd */
346138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  late_tbtt_dpc;  /* TBTT DPC did not happen in time */
346238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
346338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* per-rate receive stat counters */
346438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx1mbps;    /* packets rx at 1Mbps */
346538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx2mbps;    /* packets rx at 2Mbps */
346638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx5mbps5;   /* packets rx at 5.5Mbps */
346738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx6mbps;    /* packets rx at 6Mbps */
346838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx9mbps;    /* packets rx at 9Mbps */
346938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx11mbps;   /* packets rx at 11Mbps */
347038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx12mbps;   /* packets rx at 12Mbps */
347138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx18mbps;   /* packets rx at 18Mbps */
347238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx24mbps;   /* packets rx at 24Mbps */
347338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx36mbps;   /* packets rx at 36Mbps */
347438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx48mbps;   /* packets rx at 48Mbps */
347538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx54mbps;   /* packets rx at 54Mbps */
347638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx108mbps;  /* packets rx at 108mbps */
347738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx162mbps;  /* packets rx at 162mbps */
347838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx216mbps;  /* packets rx at 216 mbps */
347938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx270mbps;  /* packets rx at 270 mbps */
348038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx324mbps;  /* packets rx at 324 mbps */
348138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx378mbps;  /* packets rx at 378 mbps */
348238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx432mbps;  /* packets rx at 432 mbps */
348338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx486mbps;  /* packets rx at 486 mbps */
348438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx540mbps;  /* packets rx at 540 mbps */
348538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
348638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* pkteng rx frame stats */
348738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  pktengrxducast; /* unicast frames rxed by the pkteng code */
348838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  pktengrxdmcast; /* multicast frames rxed by the pkteng code */
348938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
349038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rfdisable;  /* count of radio disables */
349138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  bphy_rxcrsglitch;   /* PHY count of bphy glitches */
349238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
349338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txmpdu_sgi; /* count for sgi transmit */
349438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxmpdu_sgi; /* count for sgi received */
349538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  txmpdu_stbc;    /* count for stbc transmit */
349638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rxmpdu_stbc;    /* count for stbc received */
349738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_cnt_ver_six_t;
349838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
349938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_DELTA_STATS_T_VERSION	1	/* current version of wl_delta_stats_t struct */
3500b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
350138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
350238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 version;     /* see definition of WL_DELTA_STATS_T_VERSION */
350338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 length;      /* length of entire structure */
350438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
350538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* transmit stat counters */
350638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 txframe;     /* tx data frames */
350738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 txbyte;      /* tx data bytes */
350838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 txretrans;   /* tx mac retransmits */
350938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 txfail;      /* tx failures */
351038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
351138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* receive stat counters */
351238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 rxframe;     /* rx data frames */
351338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 rxbyte;      /* rx data bytes */
351438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
351538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* per-rate receive stat counters */
351638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx1mbps;	/* packets rx at 1Mbps */
351738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx2mbps;	/* packets rx at 2Mbps */
351838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx5mbps5;	/* packets rx at 5.5Mbps */
351938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx6mbps;	/* packets rx at 6Mbps */
352038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx9mbps;	/* packets rx at 9Mbps */
352138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx11mbps;	/* packets rx at 11Mbps */
352238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx12mbps;	/* packets rx at 12Mbps */
352338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx18mbps;	/* packets rx at 18Mbps */
352438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx24mbps;	/* packets rx at 24Mbps */
352538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx36mbps;	/* packets rx at 36Mbps */
352638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx48mbps;	/* packets rx at 48Mbps */
352738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx54mbps;	/* packets rx at 54Mbps */
352838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx108mbps; 	/* packets rx at 108mbps */
352938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx162mbps;	/* packets rx at 162mbps */
353038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx216mbps;	/* packets rx at 216 mbps */
353138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx270mbps;	/* packets rx at 270 mbps */
353238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx324mbps;	/* packets rx at 324 mbps */
353338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx378mbps;	/* packets rx at 378 mbps */
353438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx432mbps;	/* packets rx at 432 mbps */
353538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx486mbps;	/* packets rx at 486 mbps */
353638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  rx540mbps;	/* packets rx at 540 mbps */
353738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_delta_stats_t;
353838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* LINUX_POSTMOGRIFY_REMOVAL */
353938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
354038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_WME_CNT_VERSION	1	/* current version of wl_wme_cnt_t */
3541b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
3542b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct {
3543b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 packets;
3544b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 bytes;
3545b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_traffic_stats_t;
3546b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
3547b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct {
354838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16	version;	/* see definition of WL_WME_CNT_VERSION */
354938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16	length;		/* length of entire structure */
3550b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
355138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	wl_traffic_stats_t tx[AC_COUNT];	/* Packets transmitted */
355238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	wl_traffic_stats_t tx_failed[AC_COUNT];	/* Packets dropped or failed to transmit */
355338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	wl_traffic_stats_t rx[AC_COUNT];	/* Packets received */
355438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	wl_traffic_stats_t rx_failed[AC_COUNT];	/* Packets failed to receive */
3555b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
355638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	wl_traffic_stats_t forward[AC_COUNT];	/* Packets forwarded by AP */
3557b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
355838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	wl_traffic_stats_t tx_expired[AC_COUNT];	/* packets dropped due to lifetime expiry */
3559b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
3560b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_wme_cnt_t;
3561b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
356238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef LINUX_POSTMOGRIFY_REMOVAL
3563b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidtstruct wl_msglevel2 {
3564b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 low;
3565b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 high;
3566b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt};
3567b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
356838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wl_mkeep_alive_pkt {
356938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16	version; /* Version for mkeep_alive */
357038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16	length; /* length of fixed parameters in the structure */
357138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	period_msec;
357238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16	len_bytes;
357338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8	keep_alive_id; /* 0 - 3 for N = 4 */
357438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8	data[1];
357538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_mkeep_alive_pkt_t;
357638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
357738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_MKEEP_ALIVE_VERSION		1
357838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_MKEEP_ALIVE_FIXED_LEN	OFFSETOF(wl_mkeep_alive_pkt_t, data)
357938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_MKEEP_ALIVE_PRECISION	500
358038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
358138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifdef WLBA
358238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
358338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_BA_CNT_VERSION  1   /* current version of wlc_ba_cnt_t */
358438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
358538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* block ack related stats */
358638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wlc_ba_cnt {
358738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16  version;    /* WLC_BA_CNT_VERSION */
358838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16  length;     /* length of entire structure */
358938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
359038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* transmit stat counters */
359138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 txpdu;       /* pdus sent */
359238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 txsdu;       /* sdus sent */
359338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 txfc;        /* tx side flow controlled packets */
359438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 txfci;       /* tx side flow control initiated */
359538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 txretrans;   /* retransmitted pdus */
359638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 txbatimer;   /* ba resend due to timer */
359738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 txdrop;      /* dropped packets */
359838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 txaddbareq;  /* addba req sent */
359938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 txaddbaresp; /* addba resp sent */
360038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 txdelba;     /* delba sent */
360138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 txba;        /* ba sent */
360238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 txbar;       /* bar sent */
360338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 txpad[4];    /* future */
360438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
360538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* receive side counters */
360638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 rxpdu;       /* pdus recd */
360738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 rxqed;       /* pdus buffered before sending up */
360838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 rxdup;       /* duplicate pdus */
360938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 rxnobuf;     /* pdus discarded due to no buf */
361038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 rxaddbareq;  /* addba req recd */
361138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 rxaddbaresp; /* addba resp recd */
361238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 rxdelba;     /* delba recd */
361338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 rxba;        /* ba recd */
361438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 rxbar;       /* bar recd */
361538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 rxinvba;     /* invalid ba recd */
361638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 rxbaholes;   /* ba recd with holes */
361738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 rxunexp;     /* unexpected packets */
361838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 rxpad[4];    /* future */
361938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wlc_ba_cnt_t;
362038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* WLBA */
362138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
362238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* structure for per-tid ampdu control */
362338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidtstruct ampdu_tid_control {
362438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 tid;			/* tid */
362538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 enable;			/* enable/disable */
362638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt};
3627b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
362838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* structure for identifying ea/tid for sending addba/delba */
362938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidtstruct ampdu_ea_tid {
363038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr ea;		/* Station address */
363138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 tid;			/* tid */
363238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt};
363338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* structure for identifying retry/tid for retry_limit_tid/rr_retry_limit_tid */
363438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidtstruct ampdu_retry_tid {
363538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 tid;	/* tid */
363638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 retry;	/* retry value */
363738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt};
3638b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
363938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Different discovery modes for dpt */
364038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	DPT_DISCOVERY_MANUAL	0x01	/* manual discovery mode */
364138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	DPT_DISCOVERY_AUTO	0x02	/* auto discovery mode */
364238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	DPT_DISCOVERY_SCAN	0x04	/* scan-based discovery mode */
364338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
364438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* different path selection values */
364538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define DPT_PATHSEL_AUTO	0	/* auto mode for path selection */
364638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define DPT_PATHSEL_DIRECT	1	/* always use direct DPT path */
364738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define DPT_PATHSEL_APPATH	2	/* always use AP path */
364838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
364938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* different ops for deny list */
365038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define DPT_DENY_LIST_ADD 	1	/* add to dpt deny list */
365138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define DPT_DENY_LIST_REMOVE 	2	/* remove from dpt deny list */
365238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
365338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* different ops for manual end point */
365438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define DPT_MANUAL_EP_CREATE	1	/* create manual dpt endpoint */
365538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define DPT_MANUAL_EP_MODIFY	2	/* modify manual dpt endpoint */
365638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define DPT_MANUAL_EP_DELETE	3	/* delete manual dpt endpoint */
365738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
365838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* structure for dpt iovars */
365938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct dpt_iovar {
366038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr ea;		/* Station address */
366138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 mode;			/* mode: depends on iovar */
366238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 pad;			/* future */
366338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} dpt_iovar_t;
366438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
366538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* flags to indicate DPT status */
366638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	DPT_STATUS_ACTIVE	0x01	/* link active (though may be suspended) */
366738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	DPT_STATUS_AES		0x02	/* link secured through AES encryption */
366838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	DPT_STATUS_FAILED	0x04	/* DPT link failed */
366938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
367038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	DPT_FNAME_LEN		48	/* Max length of friendly name */
367138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
367238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct dpt_status {
367338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 status;			/* flags to indicate status */
367438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 fnlen;			/* length of friendly name */
367538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uchar name[DPT_FNAME_LEN];	/* friendly name */
367638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 rssi;			/* RSSI of the link */
367738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	sta_info_t sta;			/* sta info */
367838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} dpt_status_t;
367938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
368038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* structure for dpt list */
368138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct dpt_list {
368238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 num;			/* number of entries in struct */
368338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	dpt_status_t status[1];		/* per station info */
368438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} dpt_list_t;
368538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
368638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* structure for dpt friendly name */
368738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct dpt_fname {
368838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 len;			/* length of friendly name */
368938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uchar name[DPT_FNAME_LEN];	/* friendly name */
369038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} dpt_fname_t;
369138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
369238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define BDD_FNAME_LEN       32  /* Max length of friendly name */
369338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct bdd_fname {
369438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 len;          /* length of friendly name */
369538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uchar name[BDD_FNAME_LEN];  /* friendly name */
369638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} bdd_fname_t;
369738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
369838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* structure for addts arguments */
369938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* For ioctls that take a list of TSPEC */
370038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidtstruct tslist {
370138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int count;			/* number of tspecs */
370238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct tsinfo_arg tsinfo[1];	/* variable length array of tsinfo */
370338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt};
3704b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
370538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifdef WLTDLS
370638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* different ops for manual end point */
370738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TDLS_MANUAL_EP_CREATE		1	/* create manual dpt endpoint */
370838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TDLS_MANUAL_EP_MODIFY		2	/* modify manual dpt endpoint */
370938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TDLS_MANUAL_EP_DELETE		3	/* delete manual dpt endpoint */
371038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TDLS_MANUAL_EP_PM		4	/*  put dpt endpoint in PM mode */
371138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TDLS_MANUAL_EP_WAKE		5	/* wake up dpt endpoint from PM */
371238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TDLS_MANUAL_EP_DISCOVERY	6	/* discover if endpoint is TDLS capable */
371338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TDLS_MANUAL_EP_CHSW		7	/* channel switch */
371438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TDLS_MANUAL_EP_WFD_TPQ	8	/* WiFi-Display Tunneled Probe reQuest */
371538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
371638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* structure for tdls iovars */
371738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct tdls_iovar {
371838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr ea;		/* Station address */
371938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 mode;			/* mode: depends on iovar */
372038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	chanspec_t chanspec;
372138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 pad;			/* future */
372238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} tdls_iovar_t;
372338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
372438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* modes */
372538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TDLS_WFD_IE_TX 			0
372638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TDLS_WFD_IE_RX 			1
372738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TDLS_WFD_PROBE_IE_TX	2
372838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TDLS_WFD_PROBE_IE_RX	3
372938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TDLS_WFD_IE_SIZE 		512
373038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* structure for tdls wfd ie */
373138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct tdls_wfd_ie_iovar {
373238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr ea;		/* Station address */
373338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 mode;
373438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 length;
373538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 data[TDLS_WFD_IE_SIZE];
373638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} tdls_wfd_ie_iovar_t;
373738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* WLTDLS */
373838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
373938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* structure for addts/delts arguments */
374038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct tspec_arg {
374138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 version;			/* see definition of TSPEC_ARG_VERSION */
374238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 length;			/* length of entire structure */
374338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint flag;			/* bit field */
374438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* TSPEC Arguments */
374538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct tsinfo_arg tsinfo;	/* TS Info bit field */
374638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 nom_msdu_size;		/* (Nominal or fixed) MSDU Size (bytes) */
374738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 max_msdu_size;		/* Maximum MSDU Size (bytes) */
374838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint min_srv_interval;		/* Minimum Service Interval (us) */
374938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint max_srv_interval;		/* Maximum Service Interval (us) */
375038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint inactivity_interval;	/* Inactivity Interval (us) */
375138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint suspension_interval;	/* Suspension Interval (us) */
375238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint srv_start_time;		/* Service Start Time (us) */
375338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint min_data_rate;		/* Minimum Data Rate (bps) */
375438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint mean_data_rate;		/* Mean Data Rate (bps) */
375538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint peak_data_rate;		/* Peak Data Rate (bps) */
375638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint max_burst_size;		/* Maximum Burst Size (bytes) */
375738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint delay_bound;		/* Delay Bound (us) */
375838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint min_phy_rate;		/* Minimum PHY Rate (bps) */
375938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 surplus_bw;		/* Surplus Bandwidth Allowance (range 1.0 to 8.0) */
376038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 medium_time;		/* Medium Time (32 us/s periods) */
376138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 dialog_token;		/* dialog token */
376238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} tspec_arg_t;
376338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
376438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* tspec arg for desired station */
376538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef	struct tspec_per_sta_arg {
376638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr ea;
376738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct tspec_arg ts;
376838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} tspec_per_sta_arg_t;
376938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
377038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* structure for max bandwidth for each access category */
377138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef	struct wme_max_bandwidth {
377238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	ac[AC_COUNT];	/* max bandwidth for each access category */
377338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wme_max_bandwidth_t;
377438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
377538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_WME_MBW_PARAMS_IO_BYTES (sizeof(wme_max_bandwidth_t))
377638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
377738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* current version of wl_tspec_arg_t struct */
377838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	TSPEC_ARG_VERSION		2	/* current version of wl_tspec_arg_t struct */
377938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TSPEC_ARG_LENGTH		55	/* argument length from tsinfo to medium_time */
378038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TSPEC_DEFAULT_DIALOG_TOKEN	42	/* default dialog token */
378138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TSPEC_DEFAULT_SBW_FACTOR	0x3000	/* default surplus bw */
378238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
378338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
378438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_WOWL_KEEPALIVE_MAX_PACKET_SIZE  80
378538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_WOWL_MAX_KEEPALIVE	2
378638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
378738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* define for flag */
378838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TSPEC_PENDING		0	/* TSPEC pending */
378938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TSPEC_ACCEPTED		1	/* TSPEC accepted */
379038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TSPEC_REJECTED		2	/* TSPEC rejected */
379138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TSPEC_UNKNOWN		3	/* TSPEC unknown */
379238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TSPEC_STATUS_MASK	7	/* TSPEC status mask */
379338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
379438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
379538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Software feature flag defines used by wlfeatureflag */
379638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifdef WLAFTERBURNER
379738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_SWFL_ABBFL		0x0001 /* Allow Afterburner on systems w/o hardware BFL */
379838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_SWFL_ABENCORE	0x0002 /* Allow AB on non-4318E chips */
379938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* WLAFTERBURNER */
380038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_SWFL_NOHWRADIO	0x0004
380138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_SWFL_FLOWCONTROL	0x0008 /* Enable backpressure to OS stack */
380238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_SWFL_WLBSSSORT	0x0010 /* Per-port supports sorting of BSS */
380338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
380438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_LIFETIME_MAX 0xFFFF /* Max value in ms */
380538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
380638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Packet lifetime configuration per ac */
380738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wl_lifetime {
380838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 ac;	        /* access class */
380938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 lifetime;    /* Packet lifetime value in ms */
381038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_lifetime_t;
381138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
381238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Channel Switch Announcement param */
381338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wl_chan_switch {
381438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 mode;		/* value 0 or 1 */
381538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 count;		/* count # of beacons before switching */
381638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	chanspec_t chspec;	/* chanspec */
381738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 reg;		/* regulatory class */
381838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_chan_switch_t;
381938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
382038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Roaming trigger definitions for WLC_SET_ROAM_TRIGGER.
382138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *
382238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * (-100 < value < 0)   value is used directly as a roaming trigger in dBm
382338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * (0 <= value) value specifies a logical roaming trigger level from
382438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *                      the list below
382538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *
382638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * WLC_GET_ROAM_TRIGGER always returns roaming trigger value in dBm, never
382738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * the logical roam trigger value.
382838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
382938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_ROAM_TRIGGER_DEFAULT	0 /* default roaming trigger */
383038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_ROAM_TRIGGER_BANDWIDTH	1 /* optimize for bandwidth roaming trigger */
383138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_ROAM_TRIGGER_DISTANCE	2 /* optimize for distance roaming trigger */
383238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_ROAM_TRIGGER_AUTO		3 /* auto-detect environment */
383338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_ROAM_TRIGGER_MAX_VALUE	3 /* max. valid value */
3834b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
383538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_ROAM_NEVER_ROAM_TRIGGER	(-100) /* Avoid Roaming by setting a large value */
383638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
383738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Preferred Network Offload (PNO, formerly PFN) defines */
383838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WPA_AUTH_PFN_ANY	0xffffffff	/* for PFN, match only ssid */
3839b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
3840b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidtenum {
3841b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	PFN_LIST_ORDER,
3842b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	PFN_RSSI
3843b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt};
3844b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
3845b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidtenum {
3846b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	DISABLE,
3847b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	ENABLE
3848b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt};
3849b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
3850b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidtenum {
3851b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	OFF_ADAPT,
3852b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	SMART_ADAPT,
385338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	STRICT_ADAPT,
385438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	SLOW_ADAPT
3855b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt};
3856b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
3857b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define SORT_CRITERIA_BIT		0
3858b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define AUTO_NET_SWITCH_BIT		1
385938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ENABLE_BKGRD_SCAN_BIT		2
3860b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define IMMEDIATE_SCAN_BIT		3
3861b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define	AUTO_CONNECT_BIT		4
3862b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define	ENABLE_BD_SCAN_BIT		5
386338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ENABLE_ADAPTSCAN_BIT		6
386438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define IMMEDIATE_EVENT_BIT		8
386538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define SUPPRESS_SSID_BIT		9
386638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ENABLE_NET_OFFLOAD_BIT		10
386738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
386838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define SORT_CRITERIA_MASK		0x0001
386938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define AUTO_NET_SWITCH_MASK		0x0002
387038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ENABLE_BKGRD_SCAN_MASK		0x0004
387138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define IMMEDIATE_SCAN_MASK		0x0008
387238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	AUTO_CONNECT_MASK		0x0010
387338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
387438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ENABLE_BD_SCAN_MASK		0x0020
387538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ENABLE_ADAPTSCAN_MASK	0x00c0
387638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define IMMEDIATE_EVENT_MASK	0x0100
387738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define SUPPRESS_SSID_MASK	0x0200
387838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ENABLE_NET_OFFLOAD_MASK	0x0400
387938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
388038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define PFN_VERSION		2
3881b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define PFN_SCANRESULT_VERSION	1
3882b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define MAX_PFN_LIST_COUNT	16
3883b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
3884b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define PFN_COMPLETE			1
3885b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define PFN_INCOMPLETE			0
3886b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
3887b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define DEFAULT_BESTN			2
3888b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define DEFAULT_MSCAN			0
3889b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define DEFAULT_REPEAT			10
389038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define DEFAULT_EXP			2
3891b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
389238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* PFN network info structure */
3893b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_pfn_subnet_info {
3894b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	struct ether_addr BSSID;
389538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8	channel; /* channel number only */
3896b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint8	SSID_len;
3897b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint8	SSID[32];
3898b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_pfn_subnet_info_t;
3899b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
3900b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_pfn_net_info {
3901b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	wl_pfn_subnet_info_t pfnsubnet;
390238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int16	RSSI; /* receive signal strength (in dBm) */
390338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16	timestamp; /* age in seconds */
3904b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_pfn_net_info_t;
3905b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
3906b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_pfn_scanresults {
3907b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 version;
3908b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 status;
3909b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 count;
3910b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	wl_pfn_net_info_t netinfo[1];
3911b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_pfn_scanresults_t;
3912b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
391338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* PFN data structure */
3914b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_pfn_param {
391538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int32 version;			/* PNO parameters version */
391638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int32 scan_freq;		/* Scan frequency */
391738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int32 lost_network_timeout;	/* Timeout in sec. to declare
391838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					* discovered network as lost
391938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					*/
392038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int16 flags;			/* Bit field to control features
392138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					* of PFN such as sort criteria auto
392238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					* enable switch and background scan
392338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					*/
392438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int16 rssi_margin;		/* Margin to avoid jitter for choosing a
392538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					* PFN based on RSSI sort criteria
392638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					*/
392738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 bestn;			/* number of best networks in each scan */
392838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 mscan;			/* number of scans recorded */
392938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 repeat;			/* Minimum number of scan intervals
393038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					*before scan frequency changes in adaptive scan
393138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					*/
393238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 exp;			/* Exponent of 2 for maximum scan interval */
393338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int32 slow_freq;		/* slow scan period */
3934b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_pfn_param_t;
3935b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
3936b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_pfn_bssid {
393738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr	macaddr;
393838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* Bit4: suppress_lost, Bit3: suppress_found */
393938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16			flags;
3940b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_pfn_bssid_t;
3941b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_PFN_SUPPRESSFOUND_MASK	0x08
3942b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_PFN_SUPPRESSLOST_MASK	0x10
394338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PFN_RSSI_MASK		0xff00
394438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PFN_RSSI_SHIFT		8
3945b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
3946b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_pfn_cfg {
394738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32			reporttype;
394838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int32			channel_num;
394938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16			channel_list[WL_NUMCHANNELS];
3950b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_pfn_cfg_t;
395138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PFN_REPORT_ALLNET    0
395238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PFN_REPORT_SSIDNET   1
395338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PFN_REPORT_BSSIDNET  2
3954b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
3955b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_pfn {
395638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	wlc_ssid_t		ssid;		/* ssid name and its length */
395738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int32			flags;		/* bit2: hidden */
395838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int32			infra;		/* BSS Vs IBSS */
395938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int32			auth;		/* Open Vs Closed */
396038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int32			wpa_auth;	/* WPA type */
396138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int32			wsec;		/* wsec value */
3962b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_pfn_t;
396338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PFN_HIDDEN_BIT	2
396438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define PNO_SCAN_MAX_FW		508*1000	/* max time scan time in msec */
396538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define PNO_SCAN_MAX_FW_SEC	PNO_SCAN_MAX_FW/1000 /* max time scan time in SEC */
396638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define PNO_SCAN_MIN_FW_SEC	10		/* min time scan time in SEC */
396738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PFN_HIDDEN_MASK	0x4
3968b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
396938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* LINUX_POSTMOGRIFY_REMOVAL */
3970b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
397138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Service discovery */
397238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
397338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8	transaction_id;	/* Transaction id */
397438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8	protocol;	/* Service protocol type */
397538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16	query_len;	/* Length of query */
397638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16	response_len;	/* Length of response */
397738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8	qrbuf[1];
397838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_p2po_qr_t;
3979b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
398038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
398138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16			period;			/* extended listen period */
398238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16			interval;		/* extended listen interval */
398338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_p2po_listen_t;
3984b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
398538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* ANQP offload */
3986b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
398738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ANQPO_MAX_QUERY_SIZE		256
398838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
398938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 max_retransmit;		/* -1 use default, max retransmit on no ACK from peer */
399038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 response_timeout;	/* -1 use default, msec to wait for resp after tx packet */
399138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 max_comeback_delay;	/* -1 use default, max comeback delay in resp else fail */
399238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 max_retries;			/* -1 use default, max retries on failure */
399338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 query_len;			/* length of ANQP query */
399438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 query_data[1];		/* ANQP encoded query (max ANQPO_MAX_QUERY_SIZE) */
399538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_anqpo_set_t;
39966dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
399738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
399838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 channel;				/* channel of the peer */
399938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr addr;		/* addr of the peer */
400038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_anqpo_peer_t;
4001b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
400238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ANQPO_MAX_PEER_LIST			64
400338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
400438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 count;				/* number of peers in list */
400538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	wl_anqpo_peer_t peer[1];	/* max ANQPO_MAX_PEER_LIST */
400638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_anqpo_peer_list_t;
400738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
400838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ANQPO_MAX_IGNORE_SSID		64
400938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
401038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	bool is_clear;				/* set to clear list (not used on GET) */
401138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 count;				/* number of SSID in list */
401238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	wlc_ssid_t ssid[1];			/* max ANQPO_MAX_IGNORE_SSID */
401338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_anqpo_ignore_ssid_list_t;
401438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
401538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ANQPO_MAX_IGNORE_BSSID		64
401638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
401738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	bool is_clear;				/* set to clear list (not used on GET) */
401838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 count;				/* number of addr in list */
401938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr bssid[1];	/* max ANQPO_MAX_IGNORE_BSSID */
402038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_anqpo_ignore_bssid_list_t;
402138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
402238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* TCP Checksum Offload defines */
402338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TOE_TX_CSUM_OL		0x00000001
402438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TOE_RX_CSUM_OL		0x00000002
40256dbcf2181152a81ab5f3bc5fa765288341a1b7abDmitry Shmidt
402638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef LINUX_POSTMOGRIFY_REMOVAL
402738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* TCP Checksum Offload error injection for testing */
402838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TOE_ERRTEST_TX_CSUM	0x00000001
402938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TOE_ERRTEST_RX_CSUM	0x00000002
403038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TOE_ERRTEST_RX_CSUM2	0x00000004
403138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
403238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidtstruct toe_ol_stats_t {
403338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* Num of tx packets that don't need to be checksummed */
403438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 tx_summed;
403538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
403638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* Num of tx packets where checksum is filled by offload engine */
4037b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 tx_iph_fill;
4038b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 tx_tcp_fill;
4039b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 tx_udp_fill;
4040b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 tx_icmp_fill;
4041b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
404238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/*  Num of rx packets where toe finds out if checksum is good or bad */
4043b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 rx_iph_good;
4044b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 rx_iph_bad;
4045b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 rx_tcp_good;
4046b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 rx_tcp_bad;
4047b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 rx_udp_good;
4048b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 rx_udp_bad;
4049b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 rx_icmp_good;
4050b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 rx_icmp_bad;
4051b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
405238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* Num of tx packets in which csum error is injected */
4053b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 tx_tcp_errinj;
4054b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 tx_udp_errinj;
4055b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 tx_icmp_errinj;
4056b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
405738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* Num of rx packets in which csum error is injected */
4058b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 rx_tcp_errinj;
4059b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 rx_udp_errinj;
4060b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 rx_icmp_errinj;
4061b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt};
4062b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
406338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* ARP Offload feature flags for arp_ol iovar */
406438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ARP_OL_AGENT		0x00000001
406538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ARP_OL_SNOOP		0x00000002
406638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ARP_OL_HOST_AUTO_REPLY	0x00000004
406738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ARP_OL_PEER_AUTO_REPLY	0x00000008
4068b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
406938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* ARP Offload error injection */
407038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ARP_ERRTEST_REPLY_PEER	0x1
407138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ARP_ERRTEST_REPLY_HOST	0x2
4072b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
407338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ARP_MULTIHOMING_MAX	8	/* Maximum local host IP addresses */
407438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ND_MULTIHOMING_MAX	10	/* Maximum local host IP addresses */
4075b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
407638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Arp offload statistic counts */
4077b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidtstruct arp_ol_stats_t {
407838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  host_ip_entries;	/* Host IP table addresses (more than one if multihomed) */
407938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  host_ip_overflow;	/* Host IP table additions skipped due to overflow */
4080b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
408138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  arp_table_entries;	/* ARP table entries */
408238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  arp_table_overflow;	/* ARP table additions skipped due to overflow */
4083b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
408438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  host_request;		/* ARP requests from host */
408538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  host_reply;		/* ARP replies from host */
408638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  host_service;		/* ARP requests from host serviced by ARP Agent */
4087b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
408838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  peer_request;		/* ARP requests received from network */
408938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  peer_request_drop;	/* ARP requests from network that were dropped */
409038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  peer_reply;		/* ARP replies received from network */
409138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  peer_reply_drop;	/* ARP replies from network that were dropped */
409238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  peer_service;		/* ARP request from host serviced by ARP Agent */
4093b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt};
4094b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
409538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* NS offload statistic counts */
409638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidtstruct nd_ol_stats_t {
409738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  host_ip_entries;    /* Host IP table addresses (more than one if multihomed) */
409838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  host_ip_overflow;   /* Host IP table additions skipped due to overflow */
409938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  peer_request;       /* NS requests received from network */
410038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  peer_request_drop;  /* NS requests from network that were dropped */
410138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  peer_reply_drop;    /* NA replies from network that were dropped */
410238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  peer_service;       /* NS request from host serviced by firmware */
410338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt};
4104b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
410538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/*
410638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Keep-alive packet offloading.
410738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
4108b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
410938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* NAT keep-alive packets format: specifies the re-transmission period, the packet
411038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * length, and packet contents.
411138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
4112b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_keep_alive_pkt {
411338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	period_msec;	/* Retransmission period (0 to disable packet re-transmits) */
411438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16	len_bytes;	/* Size of packet to transmit (0 to disable packet re-transmits) */
411538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8	data[1];	/* Variable length packet to transmit.  Contents should include
411638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 * entire ethernet packet (enet header, IP header, UDP header,
411738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 * and UDP payload) in network byte order.
411838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 */
4119b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_keep_alive_pkt_t;
4120b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
412138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_KEEP_ALIVE_FIXED_LEN		OFFSETOF(wl_keep_alive_pkt_t, data)
4122b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
412338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/*
412438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Dongle pattern matching filter.
412538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
4126b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
412738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Packet filter types. Currently, only pattern matching is supported. */
4128b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef enum wl_pkt_filter_type {
412938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	WL_PKT_FILTER_TYPE_PATTERN_MATCH	/* Pattern matching filter */
4130b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_pkt_filter_type_t;
4131b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4132b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_PKT_FILTER_TYPE wl_pkt_filter_type_t
4133b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
413438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Pattern matching filter. Specifies an offset within received packets to
413538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * start matching, the pattern to match, the size of the pattern, and a bitmask
413638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * that indicates which bits within the pattern should be matched.
413738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
4138b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_pkt_filter_pattern {
413938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	offset;		/* Offset within received packet to start pattern matching.
414038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 * Offset '0' is the first byte of the ethernet header.
414138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				 */
414238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	size_bytes;	/* Size of the pattern.  Bitmask must be the same size. */
414338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8   mask_and_pattern[1]; /* Variable length mask and pattern data.  mask starts
414438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				      * at offset 0.  Pattern immediately follows mask.
414538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt				      */
4146b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_pkt_filter_pattern_t;
4147b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
414838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* IOVAR "pkt_filter_add" parameter. Used to install packet filters. */
4149b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_pkt_filter {
415038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	id;		/* Unique filter id, specified by app. */
415138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	type;		/* Filter type (WL_PKT_FILTER_TYPE_xxx). */
415238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	negate_match;	/* Negate the result of filter matches */
415338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	union {			/* Filter definitions */
415438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt		wl_pkt_filter_pattern_t pattern;	/* Pattern matching filter */
4155b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	} u;
4156b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_pkt_filter_t;
4157b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
415838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PKT_FILTER_FIXED_LEN		  OFFSETOF(wl_pkt_filter_t, u)
415938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PKT_FILTER_PATTERN_FIXED_LEN	  OFFSETOF(wl_pkt_filter_pattern_t, mask_and_pattern)
4160b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
416138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* IOVAR "pkt_filter_enable" parameter. */
4162b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_pkt_filter_enable {
416338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	id;		/* Unique filter id */
416438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	enable;		/* Enable/disable bool */
4165b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_pkt_filter_enable_t;
4166b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
416738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* IOVAR "pkt_filter_list" parameter. Used to retrieve a list of installed filters. */
4168b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_pkt_filter_list {
416938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	num;		/* Number of installed packet filters */
417038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	wl_pkt_filter_t	filter[1];	/* Variable array of packet filters. */
4171b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_pkt_filter_list_t;
4172b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
417338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PKT_FILTER_LIST_FIXED_LEN	  OFFSETOF(wl_pkt_filter_list_t, filter)
4174b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
417538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* IOVAR "pkt_filter_stats" parameter. Used to retrieve debug statistics. */
4176b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_pkt_filter_stats {
417738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	num_pkts_matched;	/* # filter matches for specified filter id */
417838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	num_pkts_forwarded;	/* # packets fwded from dongle to host for all filters */
417938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32	num_pkts_discarded;	/* # packets discarded by dongle for all filters */
4180b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_pkt_filter_stats_t;
4181b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
418238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define RSN_KCK_LENGTH 16
418338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define RSN_KEK_LENGTH 16
418438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define RSN_REPLAY_LEN 8
418538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct _gtkrefresh {
418638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uchar	KCK[RSN_KCK_LENGTH];
418738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uchar	KEK[RSN_KEK_LENGTH];
418838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uchar	ReplayCounter[RSN_REPLAY_LEN];
418938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} gtk_keyinfo_t, *pgtk_keyinfo_t;
4190b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
419138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Sequential Commands ioctl */
4192b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_seq_cmd_ioctl {
419338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 cmd;		/* common ioctl definition */
419438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 len;		/* length of user buffer */
4195b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_seq_cmd_ioctl_t;
4196b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
419738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_SEQ_CMD_ALIGN_BYTES	4
4198b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
419938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* These are the set of get IOCTLs that should be allowed when using
420038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * IOCTL sequence commands. These are issued implicitly by wl.exe each time
420138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * it is invoked. We never want to buffer these, or else wl.exe will stop working.
420238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
4203b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_SEQ_CMDS_GET_IOCTL_FILTER(cmd) \
420438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	(((cmd) == WLC_GET_MAGIC)		|| \
420538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	 ((cmd) == WLC_GET_VERSION)		|| \
420638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	 ((cmd) == WLC_GET_AP)			|| \
4207b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	 ((cmd) == WLC_GET_INSTANCE))
4208b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
420938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/*
421038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Packet engine interface
421138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
4212b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
421338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PKTENG_PER_TX_START			0x01
421438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PKTENG_PER_TX_STOP			0x02
421538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PKTENG_PER_RX_START			0x04
421638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PKTENG_PER_RX_WITH_ACK_START 	0x05
421738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PKTENG_PER_TX_WITH_ACK_START 	0x06
421838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PKTENG_PER_RX_STOP			0x08
421938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PKTENG_PER_MASK			0xff
4220b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
422138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PKTENG_SYNCHRONOUS			0x100	/* synchronous flag */
4222b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
422338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_PKTENG_MAXPKTSZ			16384	/* max pktsz limit for pkteng */
4224b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4225b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_pkteng {
4226b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 flags;
422738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 delay;			/* Inter-packet delay */
422838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 nframes;			/* Number of frames */
422938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 length;			/* Packet length */
423038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8  seqno;			/* Enable/disable sequence no. */
423138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr dest;		/* Destination address */
423238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr src;		/* Source address */
4233b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_pkteng_t;
4234b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
423538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NUM_80211b_RATES	4
423638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NUM_80211ag_RATES	8
423738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NUM_80211n_RATES	32
423838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NUM_80211_RATES		(NUM_80211b_RATES+NUM_80211ag_RATES+NUM_80211n_RATES)
4239b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_pkteng_stats {
424038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 lostfrmcnt;		/* RX PER test: no of frames lost (skip seqno) */
424138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int32 rssi;			/* RSSI */
424238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int32 snr;			/* signal to noise ratio */
4243b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 rxpktcnt[NUM_80211_RATES+1];
424438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 rssi_qdb; /* qdB portion of the computed rssi */
4245b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_pkteng_stats_t;
4246b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4247b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
424838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_WOWL_MAGIC       (1 << 0)    /* Wakeup on Magic packet */
424938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_WOWL_NET         (1 << 1)    /* Wakeup on Netpattern */
425038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_WOWL_DIS         (1 << 2)    /* Wakeup on loss-of-link due to Disassoc/Deauth */
425138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_WOWL_RETR        (1 << 3)    /* Wakeup on retrograde TSF */
425238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_WOWL_BCN         (1 << 4)    /* Wakeup on loss of beacon */
425338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_WOWL_TST         (1 << 5)    /* Wakeup after test */
425438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_WOWL_M1          (1 << 6)    /* Wakeup after PTK refresh */
425538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_WOWL_EAPID       (1 << 7)    /* Wakeup after receipt of EAP-Identity Req */
425638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_WOWL_PME_GPIO    (1 << 8)    /* Wakeind via PME(0) or GPIO(1) */
425738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_WOWL_NEEDTKIP1   (1 << 9)    /* need tkip phase 1 key to be updated by the driver */
425838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_WOWL_GTK_FAILURE (1 << 10)   /* enable wakeup if GTK fails */
425938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_WOWL_EXTMAGPAT   (1 << 11)   /* support extended magic packets */
426038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_WOWL_ARPOFFLOAD  (1 << 12)   /* support ARP/NS/keepalive offloading */
426138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_WOWL_WPA2        (1 << 13)   /* read protocol version for EAPOL frames */
426238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_WOWL_KEYROT      (1 << 14)   /* If the bit is set, use key rotaton */
426338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_WOWL_BCAST       (1 << 15)   /* If the bit is set, frm received was bcast frame */
426438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
426538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define MAGIC_PKT_MINLEN 102    /* Magic pkt min length is 6 * 0xFF + 16 * ETHER_ADDR_LEN */
426638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
426738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WOWL_PATTEN_TYPE_ARP	(1 << 0)	/* ARP offload Pattern */
426838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WOWL_PATTEN_TYPE_NA	(1 << 1)	/* NA offload Pattern */
4269b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4270b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct {
427138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 masksize;		/* Size of the mask in #of bytes */
427238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 offset;			/* Offset to start looking for the packet in # of bytes */
427338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 patternoffset;		/* Offset of start of pattern in the structure */
427438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 patternsize;		/* Size of the pattern itself in #of bytes */
427538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 id;			/* id */
427638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 reasonsize;		/* Size of the wakeup reason code */
427738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 flags;			/* Flags to tell the pattern type and other properties */
427838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* Mask follows the structure above */
427938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* Pattern follows the mask is at 'patternoffset' from the start */
4280b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_wowl_pattern_t;
4281b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4282b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct {
428338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint			count;
428438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	wl_wowl_pattern_t	pattern[1];
4285b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_wowl_pattern_list_t;
4286b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4287b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct {
428838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8	pci_wakeind;	/* Whether PCI PMECSR PMEStatus bit was set */
428938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16	ucode_wakeind;	/* What wakeup-event indication was set by ucode */
4290b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_wowl_wakeind_t;
4291b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4292b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
429338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* per AC rate control related data structure */
4294b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_txrate_class {
429538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8		init_rate;
429638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8		min_rate;
429738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8		max_rate;
4298b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_txrate_class_t;
4299b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4300b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4301b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
430238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Overlap BSS Scan parameters default, minimum, maximum */
430338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_OBSS_SCAN_PASSIVE_DWELL_DEFAULT		20	/* unit TU */
430438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_OBSS_SCAN_PASSIVE_DWELL_MIN			5	/* unit TU */
430538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_OBSS_SCAN_PASSIVE_DWELL_MAX			1000	/* unit TU */
430638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_OBSS_SCAN_ACTIVE_DWELL_DEFAULT		10	/* unit TU */
430738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_OBSS_SCAN_ACTIVE_DWELL_MIN			10	/* unit TU */
430838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_OBSS_SCAN_ACTIVE_DWELL_MAX			1000	/* unit TU */
430938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_OBSS_SCAN_WIDTHSCAN_INTERVAL_DEFAULT	300	/* unit Sec */
431038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_OBSS_SCAN_WIDTHSCAN_INTERVAL_MIN		10	/* unit Sec */
431138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_OBSS_SCAN_WIDTHSCAN_INTERVAL_MAX		900	/* unit Sec */
431238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_OBSS_SCAN_CHANWIDTH_TRANSITION_DLY_DEFAULT	5
431338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_OBSS_SCAN_CHANWIDTH_TRANSITION_DLY_MIN	5
431438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_OBSS_SCAN_CHANWIDTH_TRANSITION_DLY_MAX	100
431538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_OBSS_SCAN_PASSIVE_TOTAL_PER_CHANNEL_DEFAULT	200	/* unit TU */
431638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_OBSS_SCAN_PASSIVE_TOTAL_PER_CHANNEL_MIN	200	/* unit TU */
431738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_OBSS_SCAN_PASSIVE_TOTAL_PER_CHANNEL_MAX	10000	/* unit TU */
431838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_OBSS_SCAN_ACTIVE_TOTAL_PER_CHANNEL_DEFAULT	20	/* unit TU */
431938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_OBSS_SCAN_ACTIVE_TOTAL_PER_CHANNEL_MIN	20	/* unit TU */
432038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_OBSS_SCAN_ACTIVE_TOTAL_PER_CHANNEL_MAX	10000	/* unit TU */
432138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_OBSS_SCAN_ACTIVITY_THRESHOLD_DEFAULT	25	/* unit percent */
432238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_OBSS_SCAN_ACTIVITY_THRESHOLD_MIN		0	/* unit percent */
432338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_OBSS_SCAN_ACTIVITY_THRESHOLD_MAX		100	/* unit percent */
432438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
432538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* structure for Overlap BSS scan arguments */
4326b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_obss_scan_arg {
432738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int16	passive_dwell;
432838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int16	active_dwell;
432938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int16	bss_widthscan_interval;
433038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int16	passive_total;
433138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int16	active_total;
433238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int16	chanwidth_transition_delay;
433338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int16	activity_threshold;
4334b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_obss_scan_arg_t;
4335b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
433638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_OBSS_SCAN_PARAM_LEN	sizeof(wl_obss_scan_arg_t)
433738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_MIN_NUM_OBSS_SCAN_ARG 7	/* minimum number of arguments required for OBSS Scan */
4338b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
433938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_COEX_INFO_MASK		0x07
434038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_COEX_INFO_REQ		0x01
434138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_COEX_40MHZ_INTOLERANT	0x02
434238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WL_COEX_WIDTH20			0x04
4343b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
434438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	WLC_RSSI_INVALID	 0	/* invalid RSSI value */
4345b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4346b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define MAX_RSSI_LEVELS 8
4347b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
434838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* RSSI event notification configuration. */
4349b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_rssi_event {
435038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 rate_limit_msec;		/* # of events posted to application will be limited to
435138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 * one per specified period (0 to disable rate limit).
435238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 */
435338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 num_rssi_levels;		/* Number of entries in rssi_levels[] below */
435438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 rssi_levels[MAX_RSSI_LEVELS];	/* Variable number of RSSI levels. An event
435538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt						 * will be posted each time the RSSI of received
435638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt						 * beacons/packets crosses a level.
435738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt						 */
4358b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_rssi_event_t;
4359b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4360b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_action_obss_coex_req {
4361b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint8 info;
4362b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint8 num;
4363b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint8 ch_list[1];
4364b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_action_obss_coex_req_t;
4365b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4366b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
436738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* IOVar parameter block for small MAC address array with type indicator */
436838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_IOV_MAC_PARAM_LEN  4
436938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
437038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_IOV_PKTQ_LOG_PRECS 16
437138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
437238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
437338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 num_addrs;
437438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	char   addr_type[WL_IOV_MAC_PARAM_LEN];
437538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr ea[WL_IOV_MAC_PARAM_LEN];
437638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_iov_mac_params_t;
437738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
437838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
437938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Parameter block for PKTQ_LOG statistics */
438038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
438138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 requested;      /* packets requested to be stored */
438238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 stored;         /* packets stored */
438338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 saved;          /* packets saved,
438438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	                          because a lowest priority queue has given away one packet
438538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	                       */
438638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 selfsaved;      /* packets saved,
438738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	                          because an older packet from the same queue has been dropped
438838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	                       */
438938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 full_dropped;   /* packets dropped,
439038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	                          because pktq is full with higher precedence packets
439138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	                       */
439238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 dropped;        /* packets dropped because pktq per that precedence is full */
439338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 sacrificed;     /* packets dropped,
439438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	                          in order to save one from a queue of a highest priority
439538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	                       */
439638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 busy;           /* packets droped because of hardware/transmission error */
439738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 retry;          /* packets re-sent because they were not received */
439838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 ps_retry;       /* packets retried again prior to moving power save mode */
439938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 retry_drop;     /* packets finally dropped after retry limit */
440038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 max_avail;      /* the high-water mark of the queue capacity for packets -
440138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	                          goes to zero as queue fills
440238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	                       */
440338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 max_used;       /* the high-water mark of the queue utilisation for packets -
440438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	                          increases with use ('inverse' of max_avail)
440538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	                       */
440638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 queue_capacity; /* the maximum capacity of the queue */
440738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} pktq_log_counters_v01_t;
440838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
440938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
441038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 requested;      /* packets requested to be stored */
441138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 stored;         /* packets stored */
441238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 saved;          /* packets saved,
441338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	                          because a lowest priority queue has given away one packet
441438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	                       */
441538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 selfsaved;      /* packets saved,
441638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	                          because an older packet from the same queue has been dropped
441738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	                       */
441838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 full_dropped;   /* packets dropped,
441938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	                          because pktq is full with higher precedence packets
442038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	                       */
442138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 dropped;        /* packets dropped because pktq per that precedence is full */
442238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 sacrificed;     /* packets dropped,
442338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	                          in order to save one from a queue of a highest priority
442438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	                       */
442538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 busy;           /* packets droped because of hardware/transmission error */
442638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 retry;          /* packets re-sent because they were not received */
442738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 ps_retry;       /* packets retried again prior to moving power save mode */
442838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 retry_drop;     /* packets finally dropped after retry limit */
442938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 max_avail;      /* the high-water mark of the queue capacity for packets -
443038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	                          goes to zero as queue fills
443138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	                       */
443238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 max_used;       /* the high-water mark of the queue utilisation for packets -
443338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	                          increases with use ('inverse' of max_avail)
443438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	                       */
443538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 queue_capacity; /* the maximum capacity of the queue */
443638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 rtsfail;        /* count of rts attempts that failed to receive cts */
443738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 acked;          /* count of packets sent (acked) successfully */
443838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} pktq_log_counters_v02_t;
443938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
444038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define sacrified sacrificed
444138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
444238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
444338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8                num_prec[WL_IOV_MAC_PARAM_LEN];
444438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	pktq_log_counters_v01_t  counters[WL_IOV_MAC_PARAM_LEN][WL_IOV_PKTQ_LOG_PRECS];
444538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	char                 headings[1];
444638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} pktq_log_format_v01_t;
444738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
444838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
444938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8                num_prec[WL_IOV_MAC_PARAM_LEN];
445038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	pktq_log_counters_v02_t  counters[WL_IOV_MAC_PARAM_LEN][WL_IOV_PKTQ_LOG_PRECS];
445138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32               throughput[WL_IOV_MAC_PARAM_LEN][WL_IOV_PKTQ_LOG_PRECS];
445238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32               time_delta;
445338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	char                 headings[1];
445438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} pktq_log_format_v02_t;
4455b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4456b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
445738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
445838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32               version;
445938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	wl_iov_mac_params_t  params;
446038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	union {
446138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt		pktq_log_format_v01_t v01;
446238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt		pktq_log_format_v02_t v02;
446338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	} pktq_log;
446438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_iov_pktq_log_t;
4465b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4466b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
446738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* **** EXTLOG **** */
446838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define EXTLOG_CUR_VER		0x0100
4469b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
447038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define MAX_ARGSTR_LEN		18 /* At least big enough for storing ETHER_ADDR_STR_LEN */
4471b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
447238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* log modules (bitmap) */
447338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define LOG_MODULE_COMMON	0x0001
447438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define LOG_MODULE_ASSOC	0x0002
447538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define LOG_MODULE_EVENT	0x0004
447638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define LOG_MODULE_MAX		3			/* Update when adding module */
4477b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
447838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* log levels */
447938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_LOG_LEVEL_DISABLE	0
448038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_LOG_LEVEL_ERR	1
448138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_LOG_LEVEL_WARN	2
448238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_LOG_LEVEL_INFO	3
448338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_LOG_LEVEL_MAX	WL_LOG_LEVEL_INFO	/* Update when adding level */
4484b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
448538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* flag */
448638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define LOG_FLAG_EVENT		1
4487b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
448838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* log arg_type */
448938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define LOG_ARGTYPE_NULL	0
449038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define LOG_ARGTYPE_STR		1	/* %s */
449138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define LOG_ARGTYPE_INT		2	/* %d */
449238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define LOG_ARGTYPE_INT_STR	3	/* %d...%s */
449338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define LOG_ARGTYPE_STR_INT	4	/* %s...%d */
4494b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4495b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wlc_extlog_cfg {
4496b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	int max_number;
449738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 module;	/* bitmap */
4498b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint8 level;
4499b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint8 flag;
4500b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 version;
4501b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wlc_extlog_cfg_t;
4502b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4503b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct log_record {
4504b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 time;
4505b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 module;
4506b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 id;
4507b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint8 level;
4508b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint8 sub_unit;
4509b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint8 seq_num;
4510b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	int32 arg;
4511b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	char str[MAX_ARGSTR_LEN];
4512b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} log_record_t;
4513b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4514b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wlc_extlog_req {
4515b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 from_last;
4516b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 num;
4517b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wlc_extlog_req_t;
4518b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4519b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wlc_extlog_results {
4520b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 version;
4521b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 record_len;
4522b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 num;
4523b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	log_record_t logs[1];
4524b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wlc_extlog_results_t;
4525b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4526b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct log_idstr {
452738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16	id;
452838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16	flag;
452938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8	arg_type;
453038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	const char	*fmt_str;
4531b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} log_idstr_t;
4532b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
453338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define FMTSTRF_USER		1
4534b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
453538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* flat ID definitions
453638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * New definitions HAVE TO BE ADDED at the end of the table. Otherwise, it will
453738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * affect backward compatibility with pre-existing apps
453838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
4539b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef enum {
4540b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_DRIVER_UP_ID = 0,
4541b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_DRIVER_DOWN_ID = 1,
4542b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_SUSPEND_MAC_FAIL_ID = 2,
4543b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_NO_PROGRESS_ID = 3,
4544b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_RFDISABLE_ID = 4,
4545b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_REG_PRINT_ID = 5,
4546b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_EXPTIME_ID = 6,
4547b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_JOIN_START_ID = 7,
4548b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_JOIN_COMPLETE_ID = 8,
4549b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_NO_NETWORKS_ID = 9,
4550b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_SECURITY_MISMATCH_ID = 10,
4551b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_RATE_MISMATCH_ID = 11,
4552b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_AP_PRUNED_ID = 12,
4553b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_KEY_INSERTED_ID = 13,
4554b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_DEAUTH_ID = 14,
4555b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_DISASSOC_ID = 15,
4556b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_LINK_UP_ID = 16,
4557b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_LINK_DOWN_ID = 17,
4558b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_RADIO_HW_OFF_ID = 18,
4559b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_RADIO_HW_ON_ID = 19,
4560b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_EVENT_DESC_ID = 20,
4561b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_PNP_SET_POWER_ID = 21,
4562b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_RADIO_SW_OFF_ID = 22,
4563b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_RADIO_SW_ON_ID = 23,
4564b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_PWD_MISMATCH_ID = 24,
4565b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_FATAL_ERROR_ID = 25,
4566b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_AUTH_FAIL_ID = 26,
4567b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_ASSOC_FAIL_ID = 27,
4568b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_IBSS_FAIL_ID = 28,
4569b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_EXTAP_FAIL_ID = 29,
4570b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	FMTSTR_MAX_ID
4571b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} log_fmtstr_id_t;
4572b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4573b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#ifdef DONGLEOVERLAYS
4574b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct {
457538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 flags_idx;	/* lower 8 bits: overlay index; upper 24 bits: flags */
457638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 offset;		/* offset into overlay region to write code */
457738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 len;			/* overlay code len */
457838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* overlay code follows this struct */
4579b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_ioctl_overlay_t;
4580b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4581b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define OVERLAY_IDX_MASK		0x000000ff
4582b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define OVERLAY_IDX_SHIFT		0
4583b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define OVERLAY_FLAGS_MASK		0xffffff00
4584b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define OVERLAY_FLAGS_SHIFT		8
458538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* overlay written to device memory immediately after loading the base image */
4586b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define OVERLAY_FLAG_POSTLOAD	0x100
458738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* defer overlay download until the device responds w/WLC_E_OVL_DOWNLOAD event */
4588b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define OVERLAY_FLAG_DEFER_DL	0x200
458938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* overlay downloaded prior to the host going to sleep */
4590b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define OVERLAY_FLAG_PRESLEEP	0x400
4591b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4592b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define OVERLAY_DOWNLOAD_CHUNKSIZE	1024
459338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* DONGLEOVERLAYS */
4594b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
459538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* LINUX_POSTMOGRIFY_REMOVAL */
4596b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
459738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* no default structure packing */
4598b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#include <packed_section_end.h>
4599b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
460038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* require strict packing */
4601b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#include <packed_section_start.h>
4602b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
460338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef LINUX_POSTMOGRIFY_REMOVAL
4604b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
460538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Structures and constants used for "vndr_ie" IOVar interface */
460638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define VNDR_IE_CMD_LEN		4	/* length of the set command string:
460738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 * "add", "del" (+ NUL)
460838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt					 */
4609b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
461038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* 802.11 Mgmt Packet flags */
461138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define VNDR_IE_BEACON_FLAG	0x1
461238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define VNDR_IE_PRBRSP_FLAG	0x2
461338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define VNDR_IE_ASSOCRSP_FLAG	0x4
461438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define VNDR_IE_AUTHRSP_FLAG	0x8
461538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define VNDR_IE_PRBREQ_FLAG	0x10
461638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define VNDR_IE_ASSOCREQ_FLAG	0x20
461738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define VNDR_IE_IWAPID_FLAG	0x40 /* vendor IE in IW advertisement protocol ID field */
461838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define VNDR_IE_CUSTOM_FLAG	0x100 /* allow custom IE id */
461938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
462038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#if defined(WLP2P)
462138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* P2P Action Frames flags (spec ordered) */
462238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define VNDR_IE_GONREQ_FLAG     0x001000
462338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define VNDR_IE_GONRSP_FLAG     0x002000
462438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define VNDR_IE_GONCFM_FLAG     0x004000
462538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define VNDR_IE_INVREQ_FLAG     0x008000
462638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define VNDR_IE_INVRSP_FLAG     0x010000
462738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define VNDR_IE_DISREQ_FLAG     0x020000
462838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define VNDR_IE_DISRSP_FLAG     0x040000
462938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define VNDR_IE_PRDREQ_FLAG     0x080000
463038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define VNDR_IE_PRDRSP_FLAG     0x100000
463138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
463238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define VNDR_IE_P2PAF_SHIFT	12
463338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* WLP2P */
463438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
463538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define VNDR_IE_INFO_HDR_LEN	(sizeof(uint32))
4636b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4637b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct {
463838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 pktflag;			/* bitmask indicating which packet(s) contain this IE */
463938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	vndr_ie_t vndr_ie_data;		/* vendor IE data */
4640b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT vndr_ie_info_t;
4641b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4642b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct {
464338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int iecount;			/* number of entries in the vndr_ie_list[] array */
464438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	vndr_ie_info_t vndr_ie_list[1];	/* variable size list of vndr_ie_info_t structs */
4645b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT vndr_ie_buf_t;
4646b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4647b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct {
464838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	char cmd[VNDR_IE_CMD_LEN];	/* vndr_ie IOVar set command : "add", "del" + NUL */
464938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	vndr_ie_buf_t vndr_ie_buffer;	/* buffer containing Vendor IE list information */
4650b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT vndr_ie_setbuf_t;
4651b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
465238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* tag_ID/length/value_buffer tuple */
465338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct {
465438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8	id;
465538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8	len;
465638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8	data[1];
465738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT tlv_t;
465838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
465938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct {
466038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 pktflag;			/* bitmask indicating which packet(s) contain this IE */
466138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	tlv_t ie_data;		/* IE data */
466238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT ie_info_t;
466338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
466438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct {
466538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int iecount;			/* number of entries in the ie_list[] array */
466638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	ie_info_t ie_list[1];	/* variable size list of ie_info_t structs */
466738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT ie_buf_t;
466838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
466938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct {
467038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	char cmd[VNDR_IE_CMD_LEN];	/* ie IOVar set command : "add" + NUL */
467138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	ie_buf_t ie_buffer;	/* buffer containing IE list information */
467238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT ie_setbuf_t;
4673b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
467438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct {
467538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 pktflag;		/* bitmask indicating which packet(s) contain this IE */
467638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 id;		/* IE type */
467738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT ie_getbuf_t;
4678b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
467938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* structures used to define format of wps ie data from probe requests */
468038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* passed up to applications via iovar "prbreq_wpsie" */
4681b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct sta_prbreq_wps_ie_hdr {
4682b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	struct ether_addr staAddr;
4683b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 ieLen;
4684b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT sta_prbreq_wps_ie_hdr_t;
4685b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4686b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct sta_prbreq_wps_ie_data {
4687b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	sta_prbreq_wps_ie_hdr_t hdr;
4688b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint8 ieData[1];
4689b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT sta_prbreq_wps_ie_data_t;
4690b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4691b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct sta_prbreq_wps_ie_list {
4692b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 totLen;
4693b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint8 ieDataList[1];
4694b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT sta_prbreq_wps_ie_list_t;
4695b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4696b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4697b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#ifdef WLMEDIA_TXFAILEVENT
4698b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct {
469938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	char   dest[ETHER_ADDR_LEN]; /* destination MAC */
470038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8  prio;            /* Packet Priority */
470138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8  flags;           /* Flags           */
470238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 tsf_l;           /* TSF timer low   */
470338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 tsf_h;           /* TSF timer high  */
470438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 rates;           /* Main Rates      */
470538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 txstatus;        /* TX Status       */
4706b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} BWL_POST_PACKED_STRUCT txfailinfo_t;
470738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* WLMEDIA_TXFAILEVENT */
4708b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
470938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef BWL_PRE_PACKED_STRUCT struct {
471038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 flags;
471138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	chanspec_t chanspec;			/* txpwr report for this channel */
471238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	chanspec_t local_chanspec;		/* channel on which we are associated */
471338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 local_max;			/* local max according to the AP */
471438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 local_constraint;			/* local constraint according to the AP */
471538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8  antgain[2];			/* Ant gain for each band - from SROM */
471638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 rf_cores;				/* count of RF Cores being reported */
471738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 est_Pout[4];			/* Latest tx power out estimate per RF chain */
471838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 est_Pout_act[4]; /* Latest tx power out estimate per RF chain w/o adjustment */
471938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 est_Pout_cck;			/* Latest CCK tx power out estimate */
472038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 tx_power_max[4];		/* Maximum target power among all rates */
472138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint tx_power_max_rate_ind[4];		/* Index of the rate with the max target power */
472238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 clm_limits[WL_NUMRATES];		/* regulatory limits - 20, 40 or 80MHz */
472338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 clm_limits_subchan1[WL_NUMRATES];	/* regulatory limits - 20in40 or 40in80 */
472438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 clm_limits_subchan2[WL_NUMRATES];	/* regulatory limits - 20in80MHz */
472538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 sar;					/* SAR limit for display by wl executable */
472638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 channel_bandwidth;		/* 20, 40 or 80 MHz bandwidth? */
472738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 version;				/* Version of the data format wlu <--> driver */
472838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 display_core;			/* Displayed curpower core */
472938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 target_offsets[4];		/* Target power offsets for current rate per core */
473038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 last_tx_ratespec;	/* Ratespec for last transmition */
473138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint   user_target;		/* user limit */
473238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 board_limit_len;		/* length of board limit buffer */
473338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 target_len;		/* length of target power buffer */
473438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 SARLIMIT[MAX_STREAMS_SUPPORTED];
473538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8  pprdata[1];		/* ppr serialization buffer */
473638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} BWL_POST_PACKED_STRUCT tx_pwr_rpt_t;
473738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
473838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* LINUX_POSTMOGRIFY_REMOVAL */
473938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
474038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* no strict structure packing */
4741b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#include <packed_section_end.h>
4742b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
474338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef LINUX_POSTMOGRIFY_REMOVAL
474438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Global ASSERT Logging */
474538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define ASSERTLOG_CUR_VER	0x0100
474638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define MAX_ASSRTSTR_LEN	64
4747b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4748b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct assert_record {
4749b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 time;
4750b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint8 seq_num;
4751b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	char str[MAX_ASSRTSTR_LEN];
4752b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} assert_record_t;
4753b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4754b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct assertlog_results {
4755b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 version;
4756b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint16 record_len;
4757b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 num;
4758b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	assert_record_t logs[1];
4759b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} assertlog_results_t;
4760b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
476138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define LOGRRC_FIX_LEN	8
4762b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define IOBUF_ALLOWED_NUM_OF_LOGREC(type, len) ((len - LOGRRC_FIX_LEN)/sizeof(type))
4763b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4764b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
476538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* channel interference measurement (chanim) related defines */
476638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
476738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* chanim mode */
476838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CHANIM_DISABLE	0	/* disabled */
476938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CHANIM_DETECT	1	/* detection only */
477038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CHANIM_EXT		2 	/* external state machine */
477138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CHANIM_ACT		3	/* full internal state machine, detect + act */
477238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CHANIM_MODE_MAX 4
477338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
477438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* define for apcs reason code */
477538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define APCS_INIT		0
477638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define APCS_IOCTL		1
477738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define APCS_CHANIM		2
477838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define APCS_CSTIMER	3
477938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define APCS_BTA		4
478038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define APCS_TXDLY		5
478138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define APCS_NONACSD	6
478238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
478338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* number of ACS record entries */
478438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CHANIM_ACS_RECORD			10
478538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
478638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* CHANIM */
478738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CCASTATS_TXDUR  0
478838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CCASTATS_INBSS  1
478938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CCASTATS_OBSS   2
479038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CCASTATS_NOCTG  3
479138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CCASTATS_NOPKT  4
479238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CCASTATS_DOZE   5
479338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CCASTATS_TXOP	6
479438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CCASTATS_GDTXDUR        7
479538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CCASTATS_BDTXDUR        8
479638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CCASTATS_MAX    9
479738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
479838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* chanim acs record */
4799b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct {
4800b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	bool valid;
4801b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint8 trigger;
4802b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	chanspec_t selected_chspc;
480338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 bgnoise;
4804b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 glitch_cnt;
4805b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint8 ccastats;
4806b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint timestamp;
4807b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} chanim_acs_record_t;
4808b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4809b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct {
4810b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	chanim_acs_record_t acs_record[CHANIM_ACS_RECORD];
4811b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint8 count;
4812b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint timestamp;
4813b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_acs_record_t;
4814b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
481538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct chanim_stats {
481638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 glitchcnt;               /* normalized as per second count */
481738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 badplcp;                 /* normalized as per second count */
481838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 ccastats[CCASTATS_MAX]; 	/* normalized as 0-255 */
481938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 bgnoise;					/* background noise level (in dBm) */
482038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	chanspec_t chanspec;
482138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 timestamp;
482238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} chanim_stats_t;
4823b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
482438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_CHANIM_STATS_VERSION 1
482538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_CHANIM_COUNT_ALL	0xff
482638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_CHANIM_COUNT_ONE	0x1
4827b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
482838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
482938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 buflen;
483038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 version;
483138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 count;
483238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	chanim_stats_t stats[1];
483338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_chanim_stats_t;
4834b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
483538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_CHANIM_STATS_FIXED_LEN OFFSETOF(wl_chanim_stats_t, stats)
483638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
483738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Noise measurement metrics. */
483838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NOISE_MEASURE_KNOISE	0x1
483938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
484038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* scb probe parameter */
484138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
484238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 scb_timeout;
484338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 scb_activity_time;
484438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 scb_max_probe;
484538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_scb_probe_t;
484638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
484738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* ap tpc modes */
484838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	AP_TPC_OFF		0
484938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	AP_TPC_BSS_PWR		1	/* BSS power control */
485038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define AP_TPC_AP_PWR		2	/* AP power control */
485138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	AP_TPC_AP_BSS_PWR	3	/* Both AP and BSS power control */
485238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define AP_TPC_MAX_LINK_MARGIN	127
485338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
485438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* ap tpc modes */
485538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	AP_TPC_OFF		0
485638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	AP_TPC_BSS_PWR		1	/* BSS power control */
485738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define AP_TPC_AP_PWR		2	/* AP power control */
485838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	AP_TPC_AP_BSS_PWR	3	/* Both AP and BSS power control */
485938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define AP_TPC_MAX_LINK_MARGIN	127
486038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
486138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* structure/defines for selective mgmt frame (smf) stats support */
486238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
486338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define SMFS_VERSION 1
486438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* selected mgmt frame (smf) stats element */
4865b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_smfs_elem {
4866b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 count;
486738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 code;  /* SC or RC code */
4868b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_smfs_elem_t;
4869b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4870b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_smf_stats {
4871b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 version;
487238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 length;	/* reserved for future usage */
4873b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint8 type;
4874b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint8 codetype;
4875b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 ignored_cnt;
4876b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 malformed_cnt;
487738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 count_total; /* count included the interested group */
4878b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	wl_smfs_elem_t elem[1];
4879b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_smf_stats_t;
4880b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4881b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_SMFSTATS_FIXED_LEN OFFSETOF(wl_smf_stats_t, elem);
4882b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4883b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidtenum {
4884b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	SMFS_CODETYPE_SC,
4885b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	SMFS_CODETYPE_RC
4886b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt};
4887b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
488838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* reuse two number in the sc/rc space */
488938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	SMFS_CODE_MALFORMED 0xFFFE
489038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define SMFS_CODE_IGNORED 	0xFFFD
4891b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4892b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef enum smfs_type {
4893b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	SMFS_TYPE_AUTH,
4894b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	SMFS_TYPE_ASSOC,
4895b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	SMFS_TYPE_REASSOC,
4896b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	SMFS_TYPE_DISASSOC_TX,
4897b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	SMFS_TYPE_DISASSOC_RX,
4898b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	SMFS_TYPE_DEAUTH_TX,
4899b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	SMFS_TYPE_DEAUTH_RX,
4900b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	SMFS_TYPE_MAX
4901b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} smfs_type_t;
4902b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4903b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#ifdef PHYMON
4904b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4905b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define PHYMON_VERSION 1
4906b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4907b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_phycal_core_state {
490838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* Tx IQ/LO calibration coeffs */
4909b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	int16 tx_iqlocal_a;
4910b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	int16 tx_iqlocal_b;
4911b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	int8 tx_iqlocal_ci;
4912b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	int8 tx_iqlocal_cq;
4913b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	int8 tx_iqlocal_di;
4914b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	int8 tx_iqlocal_dq;
4915b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	int8 tx_iqlocal_ei;
4916b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	int8 tx_iqlocal_eq;
4917b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	int8 tx_iqlocal_fi;
4918b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	int8 tx_iqlocal_fq;
4919b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
492038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* Rx IQ calibration coeffs */
4921b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	int16 rx_iqcal_a;
4922b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	int16 rx_iqcal_b;
4923b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
492438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 tx_iqlocal_pwridx; /* Tx Power Index for Tx IQ/LO calibration */
492538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 papd_epsilon_table[64]; /* PAPD epsilon table */
492638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int16 papd_epsilon_offset; /* PAPD epsilon offset */
492738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 curr_tx_pwrindex; /* Tx power index */
492838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 idle_tssi; /* Idle TSSI */
492938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 est_tx_pwr; /* Estimated Tx Power (dB) */
493038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 est_rx_pwr; /* Estimated Rx Power (dB) from RSSI */
493138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 rx_gaininfo; /* Rx gain applied on last Rx pkt */
493238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 init_gaincode; /* initgain required for ACI */
4933b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	int8 estirr_tx;
4934b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	int8 estirr_rx;
4935b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4936b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_phycal_core_state_t;
4937b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4938b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_phycal_state {
4939b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	int version;
494038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 num_phy_cores; /* number of cores */
494138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int8 curr_temperature; /* on-chip temperature sensor reading */
494238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	chanspec_t chspec; /* channspec for this state */
494338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	bool aci_state; /* ACI state: ON/OFF */
494438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 crsminpower; /* crsminpower required for ACI */
494538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 crsminpowerl; /* crsminpowerl required for ACI */
494638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 crsminpoweru; /* crsminpoweru required for ACI */
4947b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	wl_phycal_core_state_t phycal_core[1];
4948b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_phycal_state_t;
4949b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
4950b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define WL_PHYCAL_STAT_FIXED_LEN OFFSETOF(wl_phycal_state_t, phycal_core)
495138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* PHYMON */
4952b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
495338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* discovery state */
4954b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_p2p_disc_st {
495538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 state;	/* see state */
495638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	chanspec_t chspec;	/* valid in listen state */
495738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 dwell;	/* valid in listen state, in ms */
4958b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_p2p_disc_st_t;
4959b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
496038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* state */
496138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_P2P_DISC_ST_SCAN	0
496238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_P2P_DISC_ST_LISTEN	1
496338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_P2P_DISC_ST_SEARCH	2
4964b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
496538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* scan request */
4966b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_p2p_scan {
496738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 type;		/* 'S' for WLC_SCAN, 'E' for "escan" */
4968b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint8 reserved[3];
496938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* scan or escan parms... */
4970b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_p2p_scan_t;
4971b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
497238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* i/f request */
4973b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_p2p_if {
4974b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	struct ether_addr addr;
497538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 type;	/* see i/f type */
497638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	chanspec_t chspec;	/* for p2p_ifadd GO */
4977b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_p2p_if_t;
4978b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
497938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* i/f type */
498038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_P2P_IF_CLIENT	0
498138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_P2P_IF_GO		1
498238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_P2P_IF_DYNBCN_GO	2
498338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_P2P_IF_DEV		3
4984b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
498538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* i/f query */
4986b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_p2p_ifq {
4987b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint bsscfgidx;
4988b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	char ifname[BCM_MSG_IFNAME_MAX];
4989b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_p2p_ifq_t;
4990b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
499138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* OppPS & CTWindow */
4992b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_p2p_ops {
499338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 ops;	/* 0: disable 1: enable */
499438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 ctw;	/* >= 10 */
4995b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_p2p_ops_t;
4996b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
499738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* absence and presence request */
4998b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_p2p_sched_desc {
4999b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 start;
5000b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 interval;
5001b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 duration;
500238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 count;	/* see count */
5003b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_p2p_sched_desc_t;
5004b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
500538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* count */
500638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_P2P_SCHED_RSVD	0
500738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_P2P_SCHED_REPEAT	255	/* anything > 255 will be treated as 255 */
5008b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
5009b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct wl_p2p_sched {
501038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 type;	/* see schedule type */
501138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 action;	/* see schedule action */
501238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 option;	/* see schedule option */
5013b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	wl_p2p_sched_desc_t desc[1];
5014b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} wl_p2p_sched_t;
501538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_P2P_SCHED_FIXED_LEN		3
501638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
501738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* schedule type */
501838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_P2P_SCHED_TYPE_ABS		0	/* Scheduled Absence */
501938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_P2P_SCHED_TYPE_REQ_ABS	1	/* Requested Absence */
502038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
502138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* schedule action during absence periods (for WL_P2P_SCHED_ABS type) */
502238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_P2P_SCHED_ACTION_NONE	0	/* no action */
502338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_P2P_SCHED_ACTION_DOZE	1	/* doze */
502438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* schedule option - WL_P2P_SCHED_TYPE_REQ_ABS */
502538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_P2P_SCHED_ACTION_GOOFF	2	/* turn off GO beacon/prbrsp functions */
502638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* schedule option - WL_P2P_SCHED_TYPE_XXX */
502738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_P2P_SCHED_ACTION_RESET	255	/* reset */
502838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
502938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* schedule option - WL_P2P_SCHED_TYPE_ABS */
503038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_P2P_SCHED_OPTION_NORMAL	0	/* normal start/interval/duration/count */
503138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_P2P_SCHED_OPTION_BCNPCT	1	/* percentage of beacon interval */
503238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* schedule option - WL_P2P_SCHED_TYPE_REQ_ABS */
503338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_P2P_SCHED_OPTION_TSFOFS	2	/* normal start/internal/duration/count with
503438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt						 * start being an offset of the 'current' TSF
503538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt						 */
5036b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
503738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* feature flags */
503838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_P2P_FEAT_GO_CSA	(1 << 0)	/* GO moves with the STA using CSA method */
503938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_P2P_FEAT_GO_NOLEGACY	(1 << 1)	/* GO does not probe respond to non-p2p probe
504038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt						 * requests
504138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt						 */
504238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_P2P_FEAT_RESTRICT_DEV_RESP (1 << 2)	/* Restrict p2p dev interface from responding */
5043b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
504438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifdef WLNIC
504538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* nic_cnx iovar */
504638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wl_nic_cnx {
504738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 opcode;
504838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr addr;
504938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* the following are valid for WL_NIC_CNX_CONN */
505038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 SSID_len;
505138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 SSID[32];
505238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr abssid;
505338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 beacon_interval;
505438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 sync_threshold;
505538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 beacon_wait_time;
505638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_nic_cnx_t;
505738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
505838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* opcode */
505938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_NIC_CNX_ADD	0	/* add NIC connection */
506038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_NIC_CNX_DEL	1	/* delete NIC connection */
506138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_NIC_CNX_IDX	2	/* query NIC connection index */
506238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_NIC_CNX_CONN	3	/* join/create network */
506338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_NIC_CNX_DIS	4	/* disconnect from network */
506438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
506538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* nic_cfg iovar */
506638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wl_nic_cfg {
506738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 version;
506838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 beacon_mode;
506938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 diluted_beacon_period;
507038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 beacon_probability;
507138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 num_awake_window_params;
507238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct {
507338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt		uint8 channel_number;
507438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt		uint8 awake_window_length;
507538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt		uint8 repeat_EQC;
507638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	} awake_window_params[3];
507738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 scan_length;
507838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 scan_interval;
507938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 scan_probability;
508038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 ASID;
508138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 channel_usage_mode;
508238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 CWmin_af;
508338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 NIC_priority;
508438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 NIC_data_ind;
508538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 allowed_wakeup_delay;
508638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_nic_cfg_t;
508738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
508838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* version */
508938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_NIC_CFG_VER	1
509038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
509138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* beacon_mode */
509238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_NIC_BCN_NORM		0
509338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_NIC_BCN_DILUTED	1
509438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
509538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* channel_usage_mode */
509638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_NIC_CHAN_STATIC	0
509738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_NIC_CHAN_CYCLE	1
509838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
509938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* nic_cfg iovar */
510038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wl_nic_frm {
510138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 type;
510238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr da;
510338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 body[1];
510438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_nic_frm_t;
5105b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
510638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* type */
510738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_NIC_FRM_ACTION	2
5108b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
510938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* i/f query */
511038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wl_nic_ifq {
511138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint bsscfgidx;
511238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	char ifname[BCM_MSG_IFNAME_MAX];
511338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_nic_ifq_t;
511438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
511538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* data mode */
511638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* nic_dm iovar */
511738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wl_nic_dm {
511838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 enab;
511938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 rsvd;
512038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* the following fields are valid when enabling... */
512138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	chanspec_t chspec;
512238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 DATA_priority;
512338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 NIC_priority;
512438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_nic_dm_t;
512538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
512638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* immediate scan request */
512738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wl_nic_isq {
512838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 scan_length;
512938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_nic_isq_t;
513038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* WLNIC */
513138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
513238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* RFAWARE def */
513338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define BCM_ACTION_RFAWARE		0x77
5134b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt#define BCM_ACTION_RFAWARE_DCS  0x01
5135b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
513638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* DCS reason code define */
513738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define BCM_DCS_IOVAR		0x1
513838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define BCM_DCS_UNKNOWN		0xFF
5139b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
514038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wl_bcmdcs_data {
514138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint reason;
514238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	chanspec_t chspec;
514338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_bcmdcs_data_t;
5144b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
514538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* n-mode support capability */
514638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* 2x2 includes both 1x1 & 2x2 devices
514738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * reserved #define 2 for future when we want to separate 1x1 & 2x2 and
514838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * control it independently
514938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
515038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_11N_2x2			1
515138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_11N_3x3			3
515238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_11N_4x4			4
515338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
515438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* define 11n feature disable flags */
515538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLFEATURE_DISABLE_11N		0x00000001
515638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLFEATURE_DISABLE_11N_STBC_TX	0x00000002
515738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLFEATURE_DISABLE_11N_STBC_RX	0x00000004
515838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLFEATURE_DISABLE_11N_SGI_TX	0x00000008
515938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLFEATURE_DISABLE_11N_SGI_RX	0x00000010
516038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLFEATURE_DISABLE_11N_AMPDU_TX	0x00000020
516138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLFEATURE_DISABLE_11N_AMPDU_RX	0x00000040
516238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLFEATURE_DISABLE_11N_GF	0x00000080
516338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
516438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Proxy STA modes */
516538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define PSTA_MODE_DISABLED		0
516638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define PSTA_MODE_PROXY			1
516738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define PSTA_MODE_REPEATER		2
516838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
516938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
517038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* NAT configuration */
5171b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct {
517238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 ipaddr;		/* interface ip address */
517338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 ipaddr_mask;	/* interface ip address mask */
517438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 ipaddr_gateway;	/* gateway ip address */
517538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 mac_gateway[6];	/* gateway mac address */
517638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 ipaddr_dns;	/* DNS server ip address, valid only for public if */
517738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 mac_dns[6];	/* DNS server mac address,  valid only for public if */
517838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 GUID[38];		/* interface GUID */
517938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} nat_if_info_t;
5180b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
5181b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct {
518238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint op;		/* operation code */
518338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	bool pub_if;		/* set for public if, clear for private if */
518438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	nat_if_info_t if_info;	/* interface info */
518538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} nat_cfg_t;
5186b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
518738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* op code in nat_cfg */
518838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NAT_OP_ENABLE		1	/* enable NAT on given interface */
518938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NAT_OP_DISABLE		2	/* disable NAT on given interface */
519038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NAT_OP_DISABLE_ALL	3	/* disable NAT on all interfaces */
5191b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
519238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* NAT state */
519338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NAT_STATE_ENABLED	1	/* NAT is enabled */
519438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NAT_STATE_DISABLED	2	/* NAT is disabled */
5195b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
519638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
519738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int state;	/* NAT state returned */
519838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} nat_state_t;
5199b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
520038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifdef PROP_TXSTATUS
520138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Bit definitions for tlv iovar */
520238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/*
520338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * enable RSSI signals:
520438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * WLFC_CTL_TYPE_RSSI
520538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
520638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLFC_FLAGS_RSSI_SIGNALS		0x0001
5207b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
520838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* enable (if/mac_open, if/mac_close,, mac_add, mac_del) signals:
520938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *
521038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * WLFC_CTL_TYPE_MAC_OPEN
521138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * WLFC_CTL_TYPE_MAC_CLOSE
521238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *
521338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * WLFC_CTL_TYPE_INTERFACE_OPEN
521438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * WLFC_CTL_TYPE_INTERFACE_CLOSE
521538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *
521638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * WLFC_CTL_TYPE_MACDESC_ADD
521738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * WLFC_CTL_TYPE_MACDESC_DEL
521838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt *
521938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
522038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLFC_FLAGS_XONXOFF_SIGNALS	0x0002
5221b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
522238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* enable (status, fifo_credit, mac_credit) signals
522338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * WLFC_CTL_TYPE_MAC_REQUEST_CREDIT
522438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * WLFC_CTL_TYPE_TXSTATUS
522538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * WLFC_CTL_TYPE_FIFO_CREDITBACK
522638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
522738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLFC_FLAGS_CREDIT_STATUS_SIGNALS	0x0004
5228b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
522938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLFC_FLAGS_HOST_PROPTXSTATUS_ACTIVE	0x0008
523038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLFC_FLAGS_PSQ_GENERATIONFSM_ENABLE	0x0010
523138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLFC_FLAGS_PSQ_ZERO_BUFFER_ENABLE	0x0020
523238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLFC_FLAGS_HOST_RXRERODER_ACTIVE	0x0040
523338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* PROP_TXSTATUS */
5234b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
523538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define BTA_STATE_LOG_SZ	64
5236b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
523738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* BTAMP Statemachine states */
5238b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidtenum {
5239b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	HCIReset = 1,
5240b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	HCIReadLocalAMPInfo,
5241b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	HCIReadLocalAMPASSOC,
5242b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	HCIWriteRemoteAMPASSOC,
5243b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	HCICreatePhysicalLink,
5244b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	HCIAcceptPhysicalLinkRequest,
5245b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	HCIDisconnectPhysicalLink,
5246b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	HCICreateLogicalLink,
5247b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	HCIAcceptLogicalLink,
5248b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	HCIDisconnectLogicalLink,
5249b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	HCILogicalLinkCancel,
5250b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	HCIAmpStateChange,
5251b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	HCIWriteLogicalLinkAcceptTimeout
5252b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt};
5253b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
5254b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidttypedef struct flush_txfifo {
5255b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 txfifobmp;
5256b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	uint32 hwtxfifoflush;
5257b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	struct ether_addr ea;
5258b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt} flush_txfifo_t;
5259b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
526038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CHANNEL_5G_LOW_START	36	/* 5G low (36..48) CDD enable/disable bit mask */
526138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CHANNEL_5G_MID_START	52	/* 5G mid (52..64) CDD enable/disable bit mask */
526238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CHANNEL_5G_HIGH_START	100	/* 5G high (100..140) CDD enable/disable bit mask */
526338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CHANNEL_5G_UPPER_START	149	/* 5G upper (149..161) CDD enable/disable bit mask */
5264b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
5265b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidtenum {
5266b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	SPATIAL_MODE_2G_IDX = 0,
5267b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	SPATIAL_MODE_5G_LOW_IDX,
5268b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	SPATIAL_MODE_5G_MID_IDX,
5269b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	SPATIAL_MODE_5G_HIGH_IDX,
5270b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	SPATIAL_MODE_5G_UPPER_IDX,
5271b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt	SPATIAL_MODE_MAX_IDX
5272b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt};
5273b6825ab724b9d671db9f26faae035f2d5ade04b6Dmitry Shmidt
527438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_TXCORE_MAX	4	/* max number of txcore supports */
527538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_SUBBAND_MAX	4	/* max number of sub-band supports */
527638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
527738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8	band2g[WLC_TXCORE_MAX];
527838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8	band5g[WLC_SUBBAND_MAX][WLC_TXCORE_MAX];
527938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} sar_limit_t;
528038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
528138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* IOVAR "mempool" parameter. Used to retrieve a list of memory pool statistics. */
528238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wl_mempool_stats {
528338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int	num;		/* Number of memory pools */
528438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	bcm_mp_stats_t s[1];	/* Variable array of memory pool stats. */
528538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_mempool_stats_t;
528638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
528738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
528838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* D0 Coalescing */
528938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define IPV4_ARP_FILTER		0x0001
529038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define IPV4_NETBT_FILTER	0x0002
529138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define IPV4_LLMNR_FILTER	0x0004
529238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define IPV4_SSDP_FILTER	0x0008
529338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define IPV4_WSD_FILTER		0x0010
529438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define IPV6_NETBT_FILTER	0x0200
529538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define IPV6_LLMNR_FILTER	0x0400
529638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define IPV6_SSDP_FILTER	0x0800
529738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define IPV6_WSD_FILTER		0x1000
529838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
529938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Network Offload Engine */
530038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define NWOE_OL_ENABLE		0x00000001
530138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
530238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct {
530338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 ipaddr;
530438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 ipaddr_netmask;
530538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 ipaddr_gateway;
530638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} nwoe_ifconfig_t;
530738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
530838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/*
530938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Traffic management structures/defines.
531038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */
531138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
531238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Traffic management bandwidth parameters */
531338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TRF_MGMT_MAX_PRIORITIES                 3
531438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
531538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TRF_MGMT_FLAG_ADD_DSCP                  0x0001  /* Add DSCP to IP TOS field */
531638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TRF_MGMT_FLAG_DISABLE_SHAPING           0x0002  /* Don't shape traffic */
531738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TRF_MGMT_FLAG_MANAGE_LOCAL_TRAFFIC      0x0008  /* Manage traffic over our local subnet */
531838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TRF_MGMT_FLAG_FILTER_ON_MACADDR         0x0010  /* filter on MAC address */
531938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TRF_MGMT_FLAG_NO_RX                     0x0020  /* do not apply fiters to rx packets */
532038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
532138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TRF_FILTER_MAC_ADDR              0x0001 /* L2 filter use dst mac address for filtering */
532238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TRF_FILTER_IP_ADDR               0x0002 /* L3 filter use ip ddress for filtering */
532338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TRF_FILTER_L4                    0x0004 /* L4 filter use tcp/udp for filtering */
532438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define TRF_FILTER_FAVORED               0x0010 /* Tag the packet FAVORED */
532538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
532638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Traffic management priority classes */
532738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef enum trf_mgmt_priority_class {
532838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	trf_mgmt_priority_low           = 0,        /* Maps to 802.1p BK */
532938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	trf_mgmt_priority_medium        = 1,        /* Maps to 802.1p BE */
533038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	trf_mgmt_priority_high          = 2,        /* Maps to 802.1p VI */
533138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	trf_mgmt_priority_nochange	= 3,	    /* do not update the priority */
533238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	trf_mgmt_priority_invalid       = (trf_mgmt_priority_nochange + 1)
533338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} trf_mgmt_priority_class_t;
533438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
533538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Traffic management configuration parameters */
533638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct trf_mgmt_config {
533738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  trf_mgmt_enabled;                           /* 0 - disabled, 1 - enabled */
533838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  flags;                                      /* See TRF_MGMT_FLAG_xxx defines */
533938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  host_ip_addr;                               /* My IP address to determine subnet */
534038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  host_subnet_mask;                           /* My subnet mask */
534138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  downlink_bandwidth;                         /* In units of kbps */
534238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  uplink_bandwidth;                           /* In units of kbps */
534338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  min_tx_bandwidth[TRF_MGMT_MAX_PRIORITIES];  /* Minimum guaranteed tx bandwidth */
534438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  min_rx_bandwidth[TRF_MGMT_MAX_PRIORITIES];  /* Minimum guaranteed rx bandwidth */
534538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} trf_mgmt_config_t;
534638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
534738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Traffic management filter */
534838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct trf_mgmt_filter {
534938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr           dst_ether_addr;         /* His L2 address */
535038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32                      dst_ip_addr;            /* His IP address */
535138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16                      dst_port;               /* His L4 port */
535238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16                      src_port;               /* My L4 port */
535338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16                      prot;                   /* L4 protocol (only TCP or UDP) */
535438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16                      flags;                  /* TBD. For now, this must be zero. */
535538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	trf_mgmt_priority_class_t   priority;               /* Priority for filtered packets */
535638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} trf_mgmt_filter_t;
535738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
535838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Traffic management filter list (variable length) */
535938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct trf_mgmt_filter_list     {
536038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32              num_filters;
536138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	trf_mgmt_filter_t   filter[1];
536238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} trf_mgmt_filter_list_t;
536338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
536438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Traffic management global info used for all queues */
536538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct trf_mgmt_global_info {
536638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  maximum_bytes_per_second;
536738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  maximum_bytes_per_sampling_period;
536838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  total_bytes_consumed_per_second;
536938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  total_bytes_consumed_per_sampling_period;
537038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  total_unused_bytes_per_sampling_period;
537138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} trf_mgmt_global_info_t;
537238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
537338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Traffic management shaping info per priority queue */
537438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct trf_mgmt_shaping_info {
537538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  gauranteed_bandwidth_percentage;
537638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  guaranteed_bytes_per_second;
537738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  guaranteed_bytes_per_sampling_period;
537838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  num_bytes_produced_per_second;
537938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  num_bytes_consumed_per_second;
538038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  num_queued_packets;                         /* Number of packets in queue */
538138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  num_queued_bytes;                           /* Number of bytes in queue */
538238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} trf_mgmt_shaping_info_t;
538338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
538438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Traffic management shaping info array */
538538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct trf_mgmt_shaping_info_array {
538638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	trf_mgmt_global_info_t   tx_global_shaping_info;
538738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	trf_mgmt_shaping_info_t  tx_queue_shaping_info[TRF_MGMT_MAX_PRIORITIES];
538838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	trf_mgmt_global_info_t   rx_global_shaping_info;
538938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	trf_mgmt_shaping_info_t  rx_queue_shaping_info[TRF_MGMT_MAX_PRIORITIES];
539038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} trf_mgmt_shaping_info_array_t;
539138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
539238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
539338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Traffic management statistical counters */
539438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct trf_mgmt_stats {
539538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  num_processed_packets;      /* Number of packets processed */
539638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  num_processed_bytes;        /* Number of bytes processed */
539738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32  num_discarded_packets;      /* Number of packets discarded from queue */
539838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} trf_mgmt_stats_t;
539938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
540038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* Traffic management statisics array */
540138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct trf_mgmt_stats_array     {
540238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	trf_mgmt_stats_t  tx_queue_stats[TRF_MGMT_MAX_PRIORITIES];
540338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	trf_mgmt_stats_t  rx_queue_stats[TRF_MGMT_MAX_PRIORITIES];
540438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} trf_mgmt_stats_array_t;
540538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
540638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct powersel_params {
540738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	/* LPC Params exposed via IOVAR */
540838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int32		tp_ratio_thresh;  /* Throughput ratio threshold */
540938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8		rate_stab_thresh; /* Thresh for rate stability based on nupd */
541038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8		pwr_stab_thresh; /* Number of successes before power step down */
541138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8		pwr_sel_exp_time; /* Time lapse for expiry of database */
541238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} powersel_params_t;
541338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
541438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* tx pkt delay statistics */
541538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define	SCB_RETRY_SHORT_DEF	7	/* Default Short retry Limit */
541638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLPKTDLY_HIST_NBINS	16	/* number of bins used in the Delay histogram */
541738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
541838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* structure to store per-AC delay statistics */
541938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct scb_delay_stats {
542038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 txmpdu_lost;	/* number of MPDUs lost */
542138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 txmpdu_cnt[SCB_RETRY_SHORT_DEF]; /* retry times histogram */
542238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 delay_sum[SCB_RETRY_SHORT_DEF]; /* cumulative packet latency */
542338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 delay_min;	/* minimum packet latency observed */
542438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 delay_max;	/* maximum packet latency observed */
542538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 delay_avg;	/* packet latency average */
542638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 delay_hist[WLPKTDLY_HIST_NBINS];	/* delay histogram */
542738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} scb_delay_stats_t;
542838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
542938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* structure for txdelay event */
543038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct txdelay_event {
543138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8	status;
543238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int		rssi;
543338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	chanim_stats_t		chanim_stats;
543438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	scb_delay_stats_t	delay_stats[AC_COUNT];
543538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} txdelay_event_t;
543638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
543738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* structure for txdelay parameters */
543838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct txdelay_params {
543938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16	ratio;	/* Avg Txdelay Delta */
544038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8	cnt;	/* Sample cnt */
544138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8	period;	/* Sample period */
544238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8	tune;	/* Debug */
544338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} txdelay_params_t;
544438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
544538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RELMCAST_MAX_CLIENT 			32
544638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RELMCAST_FLAG_INBLACKLIST	1
544738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RELMCAST_FLAG_ACTIVEACKER	2
544838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RELMCAST_FLAG_RELMCAST		4
544938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
545038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WL_RELMCAST_VER					1
545138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
545238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wl_relmcast_client {
545338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 flag;
545438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int16 rssi;
545538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr addr;
545638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_relmcast_client_t;
545738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
545838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wl_relmcast_st {
545938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 ver;
546038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 num;
546138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	wl_relmcast_client_t clients[WL_RELMCAST_MAX_CLIENT];
546238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_relmcast_status_t;
546338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
546438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* LINUX_POSTMOGRIFY_REMOVAL */
546538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
546638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* fbt_cap: FBT assoc / reassoc modes. */
546738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define WLC_FBT_CAP_DRV_4WAY_AND_REASSOC  1 /* Driver 4-way handshake & reassoc (WLFBT). */
546838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
546938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct bcnreq {
547038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 bcn_mode;
547138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int dur;
547238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	int channel;
547338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr da;
547438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 random_int;
547538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	wlc_ssid_t ssid;
547638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 reps;
547738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} bcnreq_t;
547838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
547938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct rrmreq {
548038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr da;
548138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 reg;
548238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 chan;
548338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 random_int;
548438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 dur;
548538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 reps;
548638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} rrmreq_t;
548738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
548838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct framereq {
548938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr da;
549038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 reg;
549138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 chan;
549238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 random_int;
549338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 dur;
549438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr ta;
549538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 reps;
549638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} framereq_t;
549738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
549838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct statreq {
549938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr da;
550038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	struct ether_addr peer;
550138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 random_int;
550238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 dur;
550338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 group_id;
550438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 reps;
550538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} statreq_t;
550638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
550738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wl_el_set_params_s {
550838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 set;	/* Set number */
550938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint32 size;	/* Size to make/expand */
551038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_el_set_params_t;
551138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
551238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct wl_el_tag_params_s {
551338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint16 tag;
551438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 set;
551538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt	uint8 flags;
551638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} wl_el_tag_params_t;
551738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt
551838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* _wlioctl_h_ */
5519