Commit 434c14ef authored by Roland Vossen's avatar Roland Vossen Committed by Greg Kroah-Hartman

staging: brcm80211: emptied wlioctl.h

Code cleanup. Broadcom specific ioctl functionality is not necessary
in the Linux world. Deleted unused defines and structs from wlioctl.h.
Moved softmac specific items from wlioctl.h to softmac header files,
same for fullmac items. Moved shared fullmac/softmac definitions to other
header files.
Signed-off-by: default avatarRoland Vossen <rvossen@broadcom.com>
Reviewed-by: default avatarArend van Spriel <arend@broadcom.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 6a9a25ee
This diff is collapsed.
...@@ -24,7 +24,6 @@ ...@@ -24,7 +24,6 @@
#include <dhd_proto.h> #include <dhd_proto.h>
#include <dhd_dbg.h> #include <dhd_dbg.h>
#include <msgtrace.h> #include <msgtrace.h>
#include <wlioctl.h>
int dhd_msg_level; int dhd_msg_level;
char fw_path[MOD_PARAM_PATHLEN]; char fw_path[MOD_PARAM_PATHLEN];
......
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
#include <dngl_stats.h> #include <dngl_stats.h>
#include <dhd.h> #include <dhd.h>
#include <wlioctl.h>
#include <wl_iw.h> #include <wl_iw.h>
#define WL_ERROR(fmt, args...) printk(fmt, ##args) #define WL_ERROR(fmt, args...) printk(fmt, ##args)
......
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
#define _dhd_proto_h_ #define _dhd_proto_h_
#include <dhdioctl.h> #include <dhdioctl.h>
#include <wlioctl.h>
#ifndef IOCTL_RESP_TIMEOUT #ifndef IOCTL_RESP_TIMEOUT
#define IOCTL_RESP_TIMEOUT 2000 /* In milli second */ #define IOCTL_RESP_TIMEOUT 2000 /* In milli second */
......
...@@ -17,84 +17,4 @@ ...@@ -17,84 +17,4 @@
#ifndef _dhdioctl_h_ #ifndef _dhdioctl_h_
#define _dhdioctl_h_ #define _dhdioctl_h_
/* Linux network driver ioctl encoding */
typedef struct dhd_ioctl {
uint cmd; /* common ioctl definition */
void *buf; /* pointer to user buffer */
uint len; /* length of user buffer */
bool set; /* get or set request (optional) */
uint used; /* bytes read or written (optional) */
uint needed; /* bytes needed (optional) */
uint driver; /* to identify target driver */
} dhd_ioctl_t;
/* per-driver magic numbers */
#define DHD_IOCTL_MAGIC 0x00444944
/* bump this number if you change the ioctl interface */
#define DHD_IOCTL_VERSION 1
#define DHD_IOCTL_MAXLEN 8192 /* max length ioctl buffer required */
#define DHD_IOCTL_SMLEN 256 /* "small" length ioctl buffer required */
/* common ioctl definitions */
#define DHD_GET_MAGIC 0
#define DHD_GET_VERSION 1
#define DHD_GET_VAR 2
#define DHD_SET_VAR 3
/* message levels */
#define DHD_ERROR_VAL 0x0001
#define DHD_TRACE_VAL 0x0002
#define DHD_INFO_VAL 0x0004
#define DHD_DATA_VAL 0x0008
#define DHD_CTL_VAL 0x0010
#define DHD_TIMER_VAL 0x0020
#define DHD_HDRS_VAL 0x0040
#define DHD_BYTES_VAL 0x0080
#define DHD_INTR_VAL 0x0100
#define DHD_LOG_VAL 0x0200
#define DHD_GLOM_VAL 0x0400
#define DHD_EVENT_VAL 0x0800
#define DHD_BTA_VAL 0x1000
#define DHD_ISCAN_VAL 0x2000
#ifdef SDTEST
/* For pktgen iovar */
typedef struct dhd_pktgen {
uint version; /* To allow structure change tracking */
uint freq; /* Max ticks between tx/rx attempts */
uint count; /* Test packets to send/rcv each attempt */
uint print; /* Print counts every <print> attempts */
uint total; /* Total packets (or bursts) */
uint minlen; /* Minimum length of packets to send */
uint maxlen; /* Maximum length of packets to send */
uint numsent; /* Count of test packets sent */
uint numrcvd; /* Count of test packets received */
uint numfail; /* Count of test send failures */
uint mode; /* Test mode (type of test packets) */
uint stop; /* Stop after this many tx failures */
} dhd_pktgen_t;
/* Version in case structure changes */
#define DHD_PKTGEN_VERSION 2
/* Type of test packets to use */
#define DHD_PKTGEN_ECHO 1 /* Send echo requests */
#define DHD_PKTGEN_SEND 2 /* Send discard packets */
#define DHD_PKTGEN_RXBURST 3 /* Request dongle send N packets */
#define DHD_PKTGEN_RECV 4 /* Continuous rx from continuous
tx dongle */
#endif /* SDTEST */
/* Enter idle immediately (no timeout) */
#define DHD_IDLE_IMMEDIATE (-1)
/* Values for idleclock iovar: other values are the sd_divisor to use
when idle */
#define DHD_IDLE_ACTIVE 0 /* Do not request any SD clock change
when idle */
#define DHD_IDLE_STOP (-1) /* Request SD clock be stopped
(and use SD1 mode) */
#endif /* _dhdioctl_h_ */ #endif /* _dhdioctl_h_ */
...@@ -24,7 +24,6 @@ ...@@ -24,7 +24,6 @@
#include <dngl_stats.h> #include <dngl_stats.h>
#include <dhd.h> #include <dhd.h>
#include <dhdioctl.h> #include <dhdioctl.h>
#include <wlioctl.h>
#include <linux/kthread.h> #include <linux/kthread.h>
#include <linux/netdevice.h> #include <linux/netdevice.h>
......
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
#include <linux/wireless.h> #include <linux/wireless.h>
#include <linux/wireless.h> #include <linux/wireless.h>
#include <net/cfg80211.h> #include <net/cfg80211.h>
#include <wlioctl.h>
struct wl_conf; struct wl_conf;
struct wl_iface; struct wl_iface;
......
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
#include <linux/semaphore.h> #include <linux/semaphore.h>
#include <bcmdefs.h> #include <bcmdefs.h>
#include <linux/netdevice.h> #include <linux/netdevice.h>
#include <wlioctl.h>
#include <bcmutils.h> #include <bcmutils.h>
...@@ -30,7 +29,6 @@ ...@@ -30,7 +29,6 @@
#include <dhdioctl.h> #include <dhdioctl.h>
#include <linux/ieee80211.h> #include <linux/ieee80211.h>
typedef const struct si_pub si_t; typedef const struct si_pub si_t;
#include <wlioctl.h>
#include <dngl_stats.h> #include <dngl_stats.h>
#include <dhd.h> #include <dhd.h>
...@@ -115,6 +113,24 @@ typedef struct iscan_info { ...@@ -115,6 +113,24 @@ typedef struct iscan_info {
} iscan_info_t; } iscan_info_t;
iscan_info_t *g_iscan; iscan_info_t *g_iscan;
typedef enum sup_auth_status {
WLC_SUP_DISCONNECTED = 0,
WLC_SUP_CONNECTING,
WLC_SUP_IDREQUIRED,
WLC_SUP_AUTHENTICATING,
WLC_SUP_AUTHENTICATED,
WLC_SUP_KEYXCHANGE,
WLC_SUP_KEYED,
WLC_SUP_TIMEOUT,
WLC_SUP_LAST_BASIC_STATE,
WLC_SUP_KEYXCHANGE_WAIT_M1 = WLC_SUP_AUTHENTICATED,
WLC_SUP_KEYXCHANGE_PREP_M2 = WLC_SUP_KEYXCHANGE,
WLC_SUP_KEYXCHANGE_WAIT_M3 = WLC_SUP_LAST_BASIC_STATE,
WLC_SUP_KEYXCHANGE_PREP_M4,
WLC_SUP_KEYXCHANGE_WAIT_G1,
WLC_SUP_KEYXCHANGE_PREP_G2
} sup_auth_status_t;
static const u8 ether_bcast[ETH_ALEN] = {255, 255, 255, 255, 255, 255}; static const u8 ether_bcast[ETH_ALEN] = {255, 255, 255, 255, 255, 255};
/* Global ASSERT type flag */ /* Global ASSERT type flag */
......
...@@ -19,8 +19,6 @@ ...@@ -19,8 +19,6 @@
#include <linux/wireless.h> #include <linux/wireless.h>
#include <wlioctl.h>
#define WL_SCAN_PARAMS_SSID_MAX 10 #define WL_SCAN_PARAMS_SSID_MAX 10
#define GET_SSID "SSID=" #define GET_SSID "SSID="
#define GET_CHANNEL "CH=" #define GET_CHANNEL "CH="
......
...@@ -17,8 +17,6 @@ ...@@ -17,8 +17,6 @@
#ifndef _bcmsrom_tbl_h_ #ifndef _bcmsrom_tbl_h_
#define _bcmsrom_tbl_h_ #define _bcmsrom_tbl_h_
#include "wlioctl.h"
typedef struct { typedef struct {
const char *name; const char *name;
u32 revmask; u32 revmask;
......
...@@ -17,14 +17,9 @@ ...@@ -17,14 +17,9 @@
#ifndef _D11_H #ifndef _D11_H
#define _D11_H #define _D11_H
#include <linux/ieee80211.h>
#include <sbconfig.h> #include <sbconfig.h>
#ifndef WL_RSSI_ANT_MAX
#define WL_RSSI_ANT_MAX 4 /* max possible rx antennas */
#elif WL_RSSI_ANT_MAX != 4
#error "WL_RSSI_ANT_MAX does not match"
#endif
/* cpp contortions to concatenate w/arg prescan */ /* cpp contortions to concatenate w/arg prescan */
#ifndef PAD #ifndef PAD
#define _PADLINE(line) pad ## line #define _PADLINE(line) pad ## line
...@@ -56,6 +51,12 @@ ...@@ -56,6 +51,12 @@
#define TX_DATA_FIFO TX_AC_BE_FIFO #define TX_DATA_FIFO TX_AC_BE_FIFO
#define TX_CTL_FIFO TX_AC_VO_FIFO #define TX_CTL_FIFO TX_AC_VO_FIFO
#ifndef WL_RSSI_ANT_MAX
#define WL_RSSI_ANT_MAX 4 /* max possible rx antennas */
#elif WL_RSSI_ANT_MAX != 4
#error "WL_RSSI_ANT_MAX does not match"
#endif
typedef volatile struct { typedef volatile struct {
u32 intstatus; u32 intstatus;
u32 intmask; u32 intmask;
......
...@@ -14,14 +14,18 @@ ...@@ -14,14 +14,18 @@
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/ */
/*
* wlc_phy_hal.h: functionality exported from the phy to higher layers
*/
#ifndef _wlc_phy_h_ #ifndef _wlc_phy_h_
#define _wlc_phy_h_ #define _wlc_phy_h_
#include <wlioctl.h>
#include <aiutils.h> #include <aiutils.h>
#include <d11.h> #include <d11.h>
#include <wlc_phy_shim.h> #include <wlc_phy_shim.h>
#include <net/mac80211.h> /* struct wiphy */ #include <net/mac80211.h> /* struct wiphy */
#include "bcmwifi.h" /* chanspec_t */
#define IDCODE_VER_MASK 0x0000000f #define IDCODE_VER_MASK 0x0000000f
#define IDCODE_VER_SHIFT 0 #define IDCODE_VER_SHIFT 0
...@@ -87,12 +91,20 @@ ...@@ -87,12 +91,20 @@
#define WLC_TXPWR_DB_FACTOR 4 #define WLC_TXPWR_DB_FACTOR 4
/* a large TX Power as an init value to factor out of min() calculations,
* keep low enough to fit in an s8, units are .25 dBm
*/
#define WLC_TXPWR_MAX (127) /* ~32 dBm = 1,500 mW */
#define WLC_NUM_RATES_CCK 4 #define WLC_NUM_RATES_CCK 4
#define WLC_NUM_RATES_OFDM 8 #define WLC_NUM_RATES_OFDM 8
#define WLC_NUM_RATES_MCS_1_STREAM 8 #define WLC_NUM_RATES_MCS_1_STREAM 8
#define WLC_NUM_RATES_MCS_2_STREAM 8 #define WLC_NUM_RATES_MCS_2_STREAM 8
#define WLC_NUM_RATES_MCS_3_STREAM 8 #define WLC_NUM_RATES_MCS_3_STREAM 8
#define WLC_NUM_RATES_MCS_4_STREAM 8 #define WLC_NUM_RATES_MCS_4_STREAM 8
#define WLC_RSSI_INVALID 0 /* invalid RSSI value */
typedef struct txpwr_limits { typedef struct txpwr_limits {
u8 cck[WLC_NUM_RATES_CCK]; u8 cck[WLC_NUM_RATES_CCK];
u8 ofdm[WLC_NUM_RATES_OFDM]; u8 ofdm[WLC_NUM_RATES_OFDM];
...@@ -114,6 +126,32 @@ typedef struct txpwr_limits { ...@@ -114,6 +126,32 @@ typedef struct txpwr_limits {
u8 mcs32; u8 mcs32;
} txpwr_limits_t; } txpwr_limits_t;
typedef struct {
u32 flags;
chanspec_t chanspec; /* txpwr report for this channel */
chanspec_t local_chanspec; /* channel on which we are associated */
u8 local_max; /* local max according to the AP */
u8 local_constraint; /* local constraint according to the AP */
s8 antgain[2]; /* Ant gain for each band - from SROM */
u8 rf_cores; /* count of RF Cores being reported */
u8 est_Pout[4]; /* Latest tx power out estimate per RF chain */
u8 est_Pout_act[4]; /* Latest tx power out estimate per RF chain
* without adjustment
*/
u8 est_Pout_cck; /* Latest CCK tx power out estimate */
u8 tx_power_max[4]; /* Maximum target power among all rates */
u8 tx_power_max_rate_ind[4]; /* Index of the rate with the max target power */
u8 user_limit[WL_TX_POWER_RATES]; /* User limit */
u8 reg_limit[WL_TX_POWER_RATES]; /* Regulatory power limit */
u8 board_limit[WL_TX_POWER_RATES]; /* Max power board can support (SROM) */
u8 target[WL_TX_POWER_RATES]; /* Latest target power */
} tx_power_t;
typedef struct tx_inst_power {
u8 txpwr_est_Pout[2]; /* Latest estimate for 2.4 and 5 Ghz */
u8 txpwr_est_Pout_gofdm; /* Pwr estimate for 2.4 OFDM */
} tx_inst_power_t;
typedef struct { typedef struct {
u8 vec[MAXCHANNEL / NBBY]; u8 vec[MAXCHANNEL / NBBY];
} chanvec_t; } chanvec_t;
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
#include <linux/device.h> /* dev_err() */ #include <linux/device.h> /* dev_err() */
/* wl_msg_level is a bit vector with defs in wlioctl.h */ /* wl_msg_level is a bit vector with defs in bcmdefs.h */
extern u32 wl_msg_level; extern u32 wl_msg_level;
#define BCMMSG(dev, fmt, args...) \ #define BCMMSG(dev, fmt, args...) \
......
...@@ -32,7 +32,6 @@ ...@@ -32,7 +32,6 @@
#include <bcmutils.h> #include <bcmutils.h>
#include <bcmnvram.h> #include <bcmnvram.h>
#include <pcicfg.h> #include <pcicfg.h>
#include <wlioctl.h>
#include <sbhnddma.h> #include <sbhnddma.h>
#include "phy/wlc_phy_int.h" #include "phy/wlc_phy_int.h"
......
...@@ -17,6 +17,10 @@ ...@@ -17,6 +17,10 @@
#ifndef _wl_mac80211_h_ #ifndef _wl_mac80211_h_
#define _wl_mac80211_h_ #define _wl_mac80211_h_
/* softmac ioctl definitions */
#define WLC_SET_SHORTSLOT_OVERRIDE 146
/* BMAC Note: High-only driver is no longer working in softirq context as it needs to block and /* BMAC Note: High-only driver is no longer working in softirq context as it needs to block and
* sleep so perimeter lock has to be a semaphore instead of spinlock. This requires timers to be * sleep so perimeter lock has to be a semaphore instead of spinlock. This requires timers to be
* submitted to workqueue instead of being on kernel timer * submitted to workqueue instead of being on kernel timer
......
...@@ -19,7 +19,6 @@ ...@@ -19,7 +19,6 @@
#include <bcmdefs.h> #include <bcmdefs.h>
#include <bcmutils.h> #include <bcmutils.h>
#include <aiutils.h> #include <aiutils.h>
#include <wlioctl.h>
#include <sbhnddma.h> #include <sbhnddma.h>
#include "d11.h" #include "d11.h"
......
...@@ -19,7 +19,6 @@ ...@@ -19,7 +19,6 @@
#include <bcmdefs.h> #include <bcmdefs.h>
#include <bcmutils.h> #include <bcmutils.h>
#include <aiutils.h> #include <aiutils.h>
#include <wlioctl.h>
#include <sbhnddma.h> #include <sbhnddma.h>
#include <hnddma.h> #include <hnddma.h>
#include <d11.h> #include <d11.h>
......
...@@ -26,7 +26,6 @@ ...@@ -26,7 +26,6 @@
#include <aiutils.h> #include <aiutils.h>
#include <bcmdevs.h> #include <bcmdevs.h>
#include <sbhnddma.h> #include <sbhnddma.h>
#include <wlioctl.h>
#include "d11.h" #include "d11.h"
#include "wlc_rate.h" #include "wlc_rate.h"
...@@ -39,9 +38,15 @@ ...@@ -39,9 +38,15 @@
#include "wlc_channel.h" #include "wlc_channel.h"
#include "wlc_main.h" #include "wlc_main.h"
#include "wl_export.h" #include "wl_export.h"
#include "wlc_phy_shim.h"
#include "wlc_antsel.h" #include "wlc_antsel.h"
#define ANT_SELCFG_AUTO 0x80 /* bit indicates antenna sel AUTO */
#define ANT_SELCFG_MASK 0x33 /* antenna configuration mask */
#define ANT_SELCFG_TX_UNICAST 0 /* unicast tx antenna configuration */
#define ANT_SELCFG_RX_UNICAST 1 /* unicast rx antenna configuration */
#define ANT_SELCFG_TX_DEF 2 /* default tx antenna configuration */
#define ANT_SELCFG_RX_DEF 3 /* default rx antenna configuration */
/* useful macros */ /* useful macros */
#define WLC_ANTSEL_11N_0(ant) ((((ant) & ANT_SELCFG_MASK) >> 4) & 0xf) #define WLC_ANTSEL_11N_0(ant) ((((ant) & ANT_SELCFG_MASK) >> 4) & 0xf)
#define WLC_ANTSEL_11N_1(ant) (((ant) & ANT_SELCFG_MASK) & 0xf) #define WLC_ANTSEL_11N_1(ant) (((ant) & ANT_SELCFG_MASK) & 0xf)
......
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
#include <bcmotp.h> #include <bcmotp.h>
#include <bcmutils.h> #include <bcmutils.h>
#include <bcmnvram.h> #include <bcmnvram.h>
#include <wlioctl.h>
#include <sbconfig.h> #include <sbconfig.h>
#include <sbchipc.h> #include <sbchipc.h>
#include <pcicfg.h> #include <pcicfg.h>
...@@ -45,7 +44,6 @@ ...@@ -45,7 +44,6 @@
#include "wlc_scb.h" #include "wlc_scb.h"
#include "wlc_pub.h" #include "wlc_pub.h"
#include "wlc_key.h" #include "wlc_key.h"
#include "wlc_phy_shim.h"
#include "phy/wlc_phy_hal.h" #include "phy/wlc_phy_hal.h"
#include "wlc_channel.h" #include "wlc_channel.h"
#include "wlc_main.h" #include "wlc_main.h"
......
...@@ -24,7 +24,6 @@ ...@@ -24,7 +24,6 @@
#include <bcmnvram.h> #include <bcmnvram.h>
#include <aiutils.h> #include <aiutils.h>
#include <sbhnddma.h> #include <sbhnddma.h>
#include <wlioctl.h>
#include "wlc_types.h" #include "wlc_types.h"
#include "d11.h" #include "d11.h"
......
...@@ -17,6 +17,8 @@ ...@@ -17,6 +17,8 @@
#ifndef _wlc_key_h_ #ifndef _wlc_key_h_
#define _wlc_key_h_ #define _wlc_key_h_
#include <linux/if_ether.h> /* for ETH_ALEN */
struct scb; struct scb;
struct wlc_info; struct wlc_info;
struct wlc_bsscfg; struct wlc_bsscfg;
......
...@@ -27,7 +27,6 @@ ...@@ -27,7 +27,6 @@
#include <aiutils.h> #include <aiutils.h>
#include <pcicfg.h> #include <pcicfg.h>
#include <bcmsrom.h> #include <bcmsrom.h>
#include <wlioctl.h>
#include <sbhnddma.h> #include <sbhnddma.h>
#include <hnddma.h> #include <hnddma.h>
...@@ -45,14 +44,12 @@ ...@@ -45,14 +44,12 @@
#include "wlc_main.h" #include "wlc_main.h"
#include "wlc_bmac.h" #include "wlc_bmac.h"
#include "wlc_phy_hal.h" #include "wlc_phy_hal.h"
#include "wlc_phy_shim.h"
#include "wlc_antsel.h" #include "wlc_antsel.h"
#include "wlc_stf.h" #include "wlc_stf.h"
#include "wlc_ampdu.h" #include "wlc_ampdu.h"
#include "wl_export.h" #include "wl_export.h"
#include "wlc_alloc.h" #include "wlc_alloc.h"
#include "wl_dbg.h" #include "wl_dbg.h"
#include "wl_mac80211.h" #include "wl_mac80211.h"
/* /*
...@@ -93,6 +90,30 @@ ...@@ -93,6 +90,30 @@
#define TBTT_ALIGN_LEEWAY_US 100 /* min leeway before first TBTT in us */ #define TBTT_ALIGN_LEEWAY_US 100 /* min leeway before first TBTT in us */
/* Software feature flag defines used by wlfeatureflag */
#define WL_SWFL_NOHWRADIO 0x0004
#define WL_SWFL_FLOWCONTROL 0x0008 /* Enable backpressure to OS stack */
#define WL_SWFL_WLBSSSORT 0x0010 /* Per-port supports sorting of BSS */
/* n-mode support capability */
/* 2x2 includes both 1x1 & 2x2 devices
* reserved #define 2 for future when we want to separate 1x1 & 2x2 and
* control it independently
*/
#define WL_11N_2x2 1
#define WL_11N_3x3 3
#define WL_11N_4x4 4
/* define 11n feature disable flags */
#define WLFEATURE_DISABLE_11N 0x00000001
#define WLFEATURE_DISABLE_11N_STBC_TX 0x00000002
#define WLFEATURE_DISABLE_11N_STBC_RX 0x00000004
#define WLFEATURE_DISABLE_11N_SGI_TX 0x00000008
#define WLFEATURE_DISABLE_11N_SGI_RX 0x00000010
#define WLFEATURE_DISABLE_11N_AMPDU_TX 0x00000020
#define WLFEATURE_DISABLE_11N_AMPDU_RX 0x00000040
#define WLFEATURE_DISABLE_11N_GF 0x00000080
/* /*
* driver maintains internal 'tick'(wlc->pub->now) which increments in 1s OS timer(soft * driver maintains internal 'tick'(wlc->pub->now) which increments in 1s OS timer(soft
* watchdog) it is not a wall clock and won't increment when driver is in "down" state * watchdog) it is not a wall clock and won't increment when driver is in "down" state
...@@ -2428,7 +2449,6 @@ _wlc_ioctl(struct wlc_info *wlc, int cmd, void *arg, int len, ...@@ -2428,7 +2449,6 @@ _wlc_ioctl(struct wlc_info *wlc, int cmd, void *arg, int len,
struct scb *nextscb; struct scb *nextscb;
bool ta_ok; bool ta_ok;
uint band; uint band;
rw_reg_t *r;
struct wlc_bsscfg *bsscfg; struct wlc_bsscfg *bsscfg;
wlc_bss_info_t *current_bss; wlc_bss_info_t *current_bss;
...@@ -2440,7 +2460,6 @@ _wlc_ioctl(struct wlc_info *wlc, int cmd, void *arg, int len, ...@@ -2440,7 +2460,6 @@ _wlc_ioctl(struct wlc_info *wlc, int cmd, void *arg, int len,
nextscb = NULL; nextscb = NULL;
ta_ok = false; ta_ok = false;
band = 0; band = 0;
r = NULL;
/* If the device is turned off, then it's not "removed" */ /* If the device is turned off, then it's not "removed" */
if (!wlc->pub->hw_off && DEVICEREMOVED(wlc)) { if (!wlc->pub->hw_off && DEVICEREMOVED(wlc)) {
......
...@@ -290,7 +290,7 @@ struct wlcband { ...@@ -290,7 +290,7 @@ struct wlcband {
wlc_phy_t *pi; /* pointer to phy specific information */ wlc_phy_t *pi; /* pointer to phy specific information */
bool abgphy_encore; bool abgphy_encore;
u8 gmode; /* currently active gmode (see wlioctl.h) */ u8 gmode; /* currently active gmode */
struct scb *hwrs_scb; /* permanent scb for hw rateset */ struct scb *hwrs_scb; /* permanent scb for hw rateset */
......
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
#include <bcmutils.h> #include <bcmutils.h>
#include <bcmwifi.h> #include <bcmwifi.h>
#include <aiutils.h> #include <aiutils.h>
#include <wlioctl.h>
#include <sbconfig.h> #include <sbconfig.h>
#include <sbchipc.h> #include <sbchipc.h>
#include <pcicfg.h> #include <pcicfg.h>
......
...@@ -14,6 +14,10 @@ ...@@ -14,6 +14,10 @@
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/ */
/*
* wlc_phy_shim.h: stuff defined in wlc_phy_shim.c and included only by the phy
*/
#ifndef _wlc_phy_shim_h_ #ifndef _wlc_phy_shim_h_
#define _wlc_phy_shim_h_ #define _wlc_phy_shim_h_
...@@ -51,6 +55,57 @@ ...@@ -51,6 +55,57 @@
#define ANT_RX_DIV_ENABLE 3 /* APHY bbConfig Enable RX Diversity */ #define ANT_RX_DIV_ENABLE 3 /* APHY bbConfig Enable RX Diversity */
#define ANT_RX_DIV_DEF ANT_RX_DIV_START_0 /* default antdiv setting */ #define ANT_RX_DIV_DEF ANT_RX_DIV_START_0 /* default antdiv setting */
#define WL_ANT_RX_MAX 2 /* max 2 receive antennas */
#define WL_ANT_HT_RX_MAX 3 /* max 3 receive antennas/cores */
#define WL_ANT_IDX_1 0 /* antenna index 1 */
#define WL_ANT_IDX_2 1 /* antenna index 2 */
/* values for n_preamble_type */
#define WLC_N_PREAMBLE_MIXEDMODE 0
#define WLC_N_PREAMBLE_GF 1
#define WLC_N_PREAMBLE_GF_BRCM 2
#define WL_TX_POWER_RATES_LEGACY 45
#define WL_TX_POWER_MCS20_FIRST 12
#define WL_TX_POWER_MCS20_NUM 16
#define WL_TX_POWER_MCS40_FIRST 28
#define WL_TX_POWER_MCS40_NUM 17
#define WL_TX_POWER_RATES 101
#define WL_TX_POWER_CCK_FIRST 0
#define WL_TX_POWER_CCK_NUM 4
#define WL_TX_POWER_OFDM_FIRST 4 /* Index for first 20MHz OFDM SISO rate */
#define WL_TX_POWER_OFDM20_CDD_FIRST 12 /* Index for first 20MHz OFDM CDD rate */
#define WL_TX_POWER_OFDM40_SISO_FIRST 52 /* Index for first 40MHz OFDM SISO rate */
#define WL_TX_POWER_OFDM40_CDD_FIRST 60 /* Index for first 40MHz OFDM CDD rate */
#define WL_TX_POWER_OFDM_NUM 8
#define WL_TX_POWER_MCS20_SISO_FIRST 20 /* Index for first 20MHz MCS SISO rate */
#define WL_TX_POWER_MCS20_CDD_FIRST 28 /* Index for first 20MHz MCS CDD rate */
#define WL_TX_POWER_MCS20_STBC_FIRST 36 /* Index for first 20MHz MCS STBC rate */
#define WL_TX_POWER_MCS20_SDM_FIRST 44 /* Index for first 20MHz MCS SDM rate */
#define WL_TX_POWER_MCS40_SISO_FIRST 68 /* Index for first 40MHz MCS SISO rate */
#define WL_TX_POWER_MCS40_CDD_FIRST 76 /* Index for first 40MHz MCS CDD rate */
#define WL_TX_POWER_MCS40_STBC_FIRST 84 /* Index for first 40MHz MCS STBC rate */
#define WL_TX_POWER_MCS40_SDM_FIRST 92 /* Index for first 40MHz MCS SDM rate */
#define WL_TX_POWER_MCS_1_STREAM_NUM 8
#define WL_TX_POWER_MCS_2_STREAM_NUM 8
#define WL_TX_POWER_MCS_32 100 /* Index for 40MHz rate MCS 32 */
#define WL_TX_POWER_MCS_32_NUM 1
/* sslpnphy specifics */
#define WL_TX_POWER_MCS20_SISO_FIRST_SSN 12 /* Index for first 20MHz MCS SISO rate */
/* tx_power_t.flags bits */
#define WL_TX_POWER_F_ENABLED 1
#define WL_TX_POWER_F_HW 2
#define WL_TX_POWER_F_MIMO 4
#define WL_TX_POWER_F_SISO 8
/* values to force tx/rx chain */
#define WLC_N_TXRX_CHAIN0 0
#define WLC_N_TXRX_CHAIN1 1
/* Forward declarations */ /* Forward declarations */
struct wlc_hw_info; struct wlc_hw_info;
typedef struct wlc_phy_shim_info wlc_phy_shim_info_t; typedef struct wlc_phy_shim_info wlc_phy_shim_info_t;
......
...@@ -17,6 +17,9 @@ ...@@ -17,6 +17,9 @@
#ifndef _wlc_pub_h_ #ifndef _wlc_pub_h_
#define _wlc_pub_h_ #define _wlc_pub_h_
#include "proto/802.11.h" /* for MCSSET_LEN */
#include "bcmwifi.h" /* for chanspec_t */
#define WLC_NUMRATES 16 /* max # of rates in a rateset */ #define WLC_NUMRATES 16 /* max # of rates in a rateset */
#define MAXMULTILIST 32 /* max # multicast addresses */ #define MAXMULTILIST 32 /* max # multicast addresses */
#define D11_PHY_HDR_LEN 6 /* Phy header length - 6 bytes */ #define D11_PHY_HDR_LEN 6 /* Phy header length - 6 bytes */
...@@ -96,6 +99,12 @@ ...@@ -96,6 +99,12 @@
#define AIDMAPSZ (roundup(MAXSCB, NBBY)/NBBY) /* aid bitmap size in bytes */ #define AIDMAPSZ (roundup(MAXSCB, NBBY)/NBBY) /* aid bitmap size in bytes */
#endif /* AIDMAPSZ */ #endif /* AIDMAPSZ */
#define MAX_STREAMS_SUPPORTED 4 /* max number of streams supported */
#define WL_SPURAVOID_OFF 0
#define WL_SPURAVOID_ON1 1
#define WL_SPURAVOID_ON2 2
struct ieee80211_tx_queue_params; struct ieee80211_tx_queue_params;
typedef struct wlc_tunables { typedef struct wlc_tunables {
...@@ -151,7 +160,7 @@ struct rsn_parms { ...@@ -151,7 +160,7 @@ struct rsn_parms {
IEEE80211_HT_CAP_SUP_WIDTH_20_40 | IEEE80211_HT_CAP_GRN_FLD |\ IEEE80211_HT_CAP_SUP_WIDTH_20_40 | IEEE80211_HT_CAP_GRN_FLD |\
IEEE80211_HT_CAP_MAX_AMSDU | IEEE80211_HT_CAP_DSSSCCK40) IEEE80211_HT_CAP_MAX_AMSDU | IEEE80211_HT_CAP_DSSSCCK40)
/* wlc internal bss_info, wl external one is in wlioctl.h */ /* wlc internal bss_info */
typedef struct wlc_bss_info { typedef struct wlc_bss_info {
u8 BSSID[ETH_ALEN]; /* network BSSID */ u8 BSSID[ETH_ALEN]; /* network BSSID */
u16 flags; /* flags for internal attributes */ u16 flags; /* flags for internal attributes */
...@@ -489,6 +498,98 @@ extern const u8 wme_fifo2ac[]; ...@@ -489,6 +498,98 @@ extern const u8 wme_fifo2ac[];
#define WLC_PROT_N_PAM_OVR 15 /* n preamble override */ #define WLC_PROT_N_PAM_OVR 15 /* n preamble override */
#define WLC_PROT_N_OBSS 16 /* non-HT OBSS present */ #define WLC_PROT_N_OBSS 16 /* non-HT OBSS present */
/*
* 54g modes (basic bits may still be overridden)
*
* GMODE_LEGACY_B Rateset: 1b, 2b, 5.5, 11
* Preamble: Long
* Shortslot: Off
* GMODE_AUTO Rateset: 1b, 2b, 5.5b, 11b, 18, 24, 36, 54
* Extended Rateset: 6, 9, 12, 48
* Preamble: Long
* Shortslot: Auto
* GMODE_ONLY Rateset: 1b, 2b, 5.5b, 11b, 18, 24b, 36, 54
* Extended Rateset: 6b, 9, 12b, 48
* Preamble: Short required
* Shortslot: Auto
* GMODE_B_DEFERRED Rateset: 1b, 2b, 5.5b, 11b, 18, 24, 36, 54
* Extended Rateset: 6, 9, 12, 48
* Preamble: Long
* Shortslot: On
* GMODE_PERFORMANCE Rateset: 1b, 2b, 5.5b, 6b, 9, 11b, 12b, 18, 24b, 36, 48, 54
* Preamble: Short required
* Shortslot: On and required
* GMODE_LRS Rateset: 1b, 2b, 5.5b, 11b
* Extended Rateset: 6, 9, 12, 18, 24, 36, 48, 54
* Preamble: Long
* Shortslot: Auto
*/
#define GMODE_LEGACY_B 0
#define GMODE_AUTO 1
#define GMODE_ONLY 2
#define GMODE_B_DEFERRED 3
#define GMODE_PERFORMANCE 4
#define GMODE_LRS 5
#define GMODE_MAX 6
/* values for PLCPHdr_override */
#define WLC_PLCP_AUTO -1
#define WLC_PLCP_SHORT 0
#define WLC_PLCP_LONG 1
/* values for g_protection_override and n_protection_override */
#define WLC_PROTECTION_AUTO -1
#define WLC_PROTECTION_OFF 0
#define WLC_PROTECTION_ON 1
#define WLC_PROTECTION_MMHDR_ONLY 2
#define WLC_PROTECTION_CTS_ONLY 3
/* values for g_protection_control and n_protection_control */
#define WLC_PROTECTION_CTL_OFF 0
#define WLC_PROTECTION_CTL_LOCAL 1
#define WLC_PROTECTION_CTL_OVERLAP 2
/* values for n_protection */
#define WLC_N_PROTECTION_OFF 0
#define WLC_N_PROTECTION_OPTIONAL 1
#define WLC_N_PROTECTION_20IN40 2
#define WLC_N_PROTECTION_MIXEDMODE 3
/* values for band specific 40MHz capabilities */
#define WLC_N_BW_20ALL 0
#define WLC_N_BW_40ALL 1
#define WLC_N_BW_20IN2G_40IN5G 2
/* bitflags for SGI support (sgi_rx iovar) */
#define WLC_N_SGI_20 0x01
#define WLC_N_SGI_40 0x02
/* defines used by the nrate iovar */
#define NRATE_MCS_INUSE 0x00000080 /* MSC in use,indicates b0-6 holds an mcs */
#define NRATE_RATE_MASK 0x0000007f /* rate/mcs value */
#define NRATE_STF_MASK 0x0000ff00 /* stf mode mask: siso, cdd, stbc, sdm */
#define NRATE_STF_SHIFT 8 /* stf mode shift */
#define NRATE_OVERRIDE 0x80000000 /* bit indicates override both rate & mode */
#define NRATE_OVERRIDE_MCS_ONLY 0x40000000 /* bit indicate to override mcs only */
#define NRATE_SGI_MASK 0x00800000 /* sgi mode */
#define NRATE_SGI_SHIFT 23 /* sgi mode */
#define NRATE_LDPC_CODING 0x00400000 /* bit indicates adv coding in use */
#define NRATE_LDPC_SHIFT 22 /* ldpc shift */
#define NRATE_STF_SISO 0 /* stf mode SISO */
#define NRATE_STF_CDD 1 /* stf mode CDD */
#define NRATE_STF_STBC 2 /* stf mode STBC */
#define NRATE_STF_SDM 3 /* stf mode SDM */
#define ANT_SELCFG_MAX 4 /* max number of antenna configurations */
#define HIGHEST_SINGLE_STREAM_MCS 7 /* MCS values greater than this enable multiple streams */
typedef struct {
u8 ant_config[ANT_SELCFG_MAX]; /* antenna configuration */
u8 num_antcfg; /* number of available antenna configurations */
} wlc_antselcfg_t;
/* common functions for every port */ /* common functions for every port */
extern void *wlc_attach(struct wl_info *wl, u16 vendor, u16 device, uint unit, extern void *wlc_attach(struct wl_info *wl, u16 vendor, u16 device, uint unit,
bool piomode, void *regsva, uint bustype, void *btparam, bool piomode, void *regsva, uint bustype, void *btparam,
......
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
#include <bcmdefs.h> #include <bcmdefs.h>
#include <bcmutils.h> #include <bcmutils.h>
#include <aiutils.h> #include <aiutils.h>
#include <wlioctl.h>
#include <sbhnddma.h> #include <sbhnddma.h>
#include "wlc_types.h" #include "wlc_types.h"
......
...@@ -17,6 +17,8 @@ ...@@ -17,6 +17,8 @@
#ifndef _wlc_scb_h_ #ifndef _wlc_scb_h_
#define _wlc_scb_h_ #define _wlc_scb_h_
#include <linux/if_ether.h> /* for ETH_ALEN */
#define AMPDU_TX_BA_MAX_WSIZE 64 /* max Tx ba window size (in pdu) */ #define AMPDU_TX_BA_MAX_WSIZE 64 /* max Tx ba window size (in pdu) */
/* structure to store per-tid state for the ampdu initiator */ /* structure to store per-tid state for the ampdu initiator */
typedef struct scb_ampdu_tid_ini { typedef struct scb_ampdu_tid_ini {
......
...@@ -22,7 +22,6 @@ ...@@ -22,7 +22,6 @@
#include <bcmdefs.h> #include <bcmdefs.h>
#include <bcmutils.h> #include <bcmutils.h>
#include <aiutils.h> #include <aiutils.h>
#include <wlioctl.h>
#include <bcmwifi.h> #include <bcmwifi.h>
#include <bcmnvram.h> #include <bcmnvram.h>
#include <sbhnddma.h> #include <sbhnddma.h>
......
...@@ -147,4 +147,56 @@ typedef struct { ...@@ -147,4 +147,56 @@ typedef struct {
struct wl_info; struct wl_info;
struct wlc_bsscfg; struct wlc_bsscfg;
#define WL_NUMRATES 16 /* max # of rates in a rateset */
typedef struct wl_rateset {
u32 count; /* # rates in this set */
u8 rates[WL_NUMRATES]; /* rates in 500kbps units w/hi bit set if basic */
} wl_rateset_t;
#define WLC_CNTRY_BUF_SZ 4 /* Country string is 3 bytes + NUL */
#define WLC_SET_CHANNEL 30
#define WLC_SET_SRL 32
#define WLC_SET_LRL 34
#define WLC_SET_RATESET 72
#define WLC_SET_BCNPRD 76
#define WLC_GET_CURR_RATESET 114 /* current rateset */
#define WLC_GET_PHYLIST 180
/* Bit masks for radio disabled status - returned by WL_GET_RADIO */
#define WL_RADIO_SW_DISABLE (1<<0)
#define WL_RADIO_HW_DISABLE (1<<1)
#define WL_RADIO_MPC_DISABLE (1<<2)
#define WL_RADIO_COUNTRY_DISABLE (1<<3) /* some countries don't support any channel */
/* Override bit for WLC_SET_TXPWR. if set, ignore other level limits */
#define WL_TXPWR_OVERRIDE (1U<<31)
/* band types */
#define WLC_BAND_AUTO 0 /* auto-select */
#define WLC_BAND_5G 1 /* 5 Ghz */
#define WLC_BAND_2G 2 /* 2.4 Ghz */
#define WLC_BAND_ALL 3 /* all bands */
/* Values for PM */
#define PM_OFF 0
#define PM_MAX 1
/* Message levels */
#define WL_ERROR_VAL 0x00000001
#define WL_TRACE_VAL 0x00000002
#define NFIFO 6 /* # tx/rx fifopairs */
#define PM_OFF 0
#define PM_MAX 1
#define PM_FAST 2
/* band range returned by band_range iovar */
#define WL_CHAN_FREQ_RANGE_2G 0
#define WL_CHAN_FREQ_RANGE_5GL 1
#define WL_CHAN_FREQ_RANGE_5GM 2
#define WL_CHAN_FREQ_RANGE_5GH 3
#endif /* _bcmdefs_h_ */ #endif /* _bcmdefs_h_ */
...@@ -17,6 +17,9 @@ ...@@ -17,6 +17,9 @@
#ifndef _bcmwifi_h_ #ifndef _bcmwifi_h_
#define _bcmwifi_h_ #define _bcmwifi_h_
#include <linux/if_ether.h> /* for ETH_ALEN */
#include <linux/ieee80211.h> /* for WLAN_PMKID_LEN */
/* A chanspec holds the channel number, band, bandwidth and control sideband */ /* A chanspec holds the channel number, band, bandwidth and control sideband */
typedef u16 chanspec_t; typedef u16 chanspec_t;
...@@ -164,4 +167,59 @@ extern u8 bcm_chspec_ctlchan(chanspec_t chspec); ...@@ -164,4 +167,59 @@ extern u8 bcm_chspec_ctlchan(chanspec_t chspec);
*/ */
extern int bcm_mhz2channel(uint freq, uint start_factor); extern int bcm_mhz2channel(uint freq, uint start_factor);
/* Enumerate crypto algorithms */
#define CRYPTO_ALGO_OFF 0
#define CRYPTO_ALGO_WEP1 1
#define CRYPTO_ALGO_TKIP 2
#define CRYPTO_ALGO_WEP128 3
#define CRYPTO_ALGO_AES_CCM 4
#define CRYPTO_ALGO_AES_RESERVED1 5
#define CRYPTO_ALGO_AES_RESERVED2 6
#define CRYPTO_ALGO_NALG 7
/* wireless security bitvec */
#define WEP_ENABLED 0x0001
#define TKIP_ENABLED 0x0002
#define AES_ENABLED 0x0004
#define WSEC_SWFLAG 0x0008
#define SES_OW_ENABLED 0x0040 /* to go into transition mode without setting wep */
/* WPA authentication mode bitvec */
#define WPA_AUTH_DISABLED 0x0000 /* Legacy (i.e., non-WPA) */
#define WPA_AUTH_NONE 0x0001 /* none (IBSS) */
#define WPA_AUTH_UNSPECIFIED 0x0002 /* over 802.1x */
#define WPA_AUTH_PSK 0x0004 /* Pre-shared key */
#define WPA_AUTH_RESERVED1 0x0008
#define WPA_AUTH_RESERVED2 0x0010
/* #define WPA_AUTH_8021X 0x0020 *//* 802.1x, reserved */
#define WPA2_AUTH_RESERVED1 0x0020
#define WPA2_AUTH_UNSPECIFIED 0x0040 /* over 802.1x */
#define WPA2_AUTH_PSK 0x0080 /* Pre-shared key */
#define WPA2_AUTH_RESERVED3 0x0200
#define WPA2_AUTH_RESERVED4 0x0400
#define WPA2_AUTH_RESERVED5 0x0800
/* pmkid */
#define MAXPMKID 16
typedef struct _pmkid {
u8 BSSID[ETH_ALEN];
u8 PMKID[WLAN_PMKID_LEN];
} pmkid_t;
typedef struct _pmkid_list {
u32 npmkid;
pmkid_t pmkid[1];
} pmkid_list_t;
typedef struct _pmkid_cand {
u8 BSSID[ETH_ALEN];
u8 preauth;
} pmkid_cand_t;
typedef struct _pmkid_cand_list {
u32 npmkid_cand;
pmkid_cand_t pmkid_cand[1];
} pmkid_cand_list_t;
#endif /* _bcmwifi_h_ */ #endif /* _bcmwifi_h_ */
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment