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