Merge branch 'for-linus' of git://git.kernel.dk/linux-block
[pandora-kernel.git] / drivers / staging / brcm80211 / brcmfmac / dhd.h
index a726b49..82bf04d 100644 (file)
  * Common types *
  */
 
-#ifndef _dhd_h_
-#define _dhd_h_
-
-#include <linux/sched.h>
-#include <linux/init.h>
-#include <linux/kernel.h>
-#include <linux/slab.h>
-#include <linux/skbuff.h>
-#include <linux/netdevice.h>
-#include <linux/etherdevice.h>
-#include <linux/random.h>
-#include <linux/spinlock.h>
-#include <linux/ethtool.h>
-#include <linux/suspend.h>
-#include <asm/uaccess.h>
-#include <asm/unaligned.h>
-/* The kernel threading is sdio-specific */
-
-#include <wlioctl.h>
-
-/* Forward decls */
-struct dhd_bus;
-struct dhd_prot;
-struct dhd_info;
+#ifndef _BRCMF_H_
+#define _BRCMF_H_
+
+#define BRCMF_VERSION_STR              "4.218.248.5"
+
+#define        BRCMF_C_IOCTL_SMLEN     256     /* "small" ioctl buffer required */
+#define BRCMF_C_IOCTL_MEDLEN   1536    /* "med" ioctl buffer required */
+#define        BRCMF_C_IOCTL_MAXLEN    8192
+
+#define BRCMF_C_UP                             2
+#define BRCMF_C_SET_PROMISC                    10
+#define BRCMF_C_GET_RATE                       12
+#define BRCMF_C_GET_INFRA                      19
+#define BRCMF_C_SET_INFRA                      20
+#define BRCMF_C_GET_AUTH                       21
+#define BRCMF_C_SET_AUTH                       22
+#define BRCMF_C_GET_BSSID                      23
+#define BRCMF_C_GET_SSID                       25
+#define BRCMF_C_SET_SSID                       26
+#define BRCMF_C_GET_CHANNEL                    29
+#define BRCMF_C_GET_SRL                                31
+#define BRCMF_C_GET_LRL                                33
+#define BRCMF_C_GET_RADIO                      37
+#define BRCMF_C_SET_RADIO                      38
+#define BRCMF_C_GET_PHYTYPE                    39
+#define BRCMF_C_SET_KEY                                45
+#define BRCMF_C_SET_PASSIVE_SCAN               49
+#define BRCMF_C_SCAN                           50
+#define BRCMF_C_SCAN_RESULTS                   51
+#define BRCMF_C_DISASSOC                       52
+#define BRCMF_C_REASSOC                                53
+#define BRCMF_C_SET_ROAM_TRIGGER               55
+#define BRCMF_C_SET_ROAM_DELTA                 57
+#define BRCMF_C_GET_DTIMPRD                    77
+#define BRCMF_C_SET_COUNTRY                    84
+#define BRCMF_C_GET_PM                         85
+#define BRCMF_C_SET_PM                         86
+#define BRCMF_C_GET_AP                         117
+#define BRCMF_C_SET_AP                         118
+#define BRCMF_C_GET_RSSI                       127
+#define BRCMF_C_GET_WSEC                       133
+#define BRCMF_C_SET_WSEC                       134
+#define BRCMF_C_GET_PHY_NOISE                  135
+#define BRCMF_C_GET_BSS_INFO                   136
+#define BRCMF_C_SET_SCAN_CHANNEL_TIME          185
+#define BRCMF_C_SET_SCAN_UNASSOC_TIME          187
+#define BRCMF_C_SCB_DEAUTHENTICATE_FOR_REASON  201
+#define BRCMF_C_GET_VALID_CHANNELS             217
+#define BRCMF_C_GET_KEY_PRIMARY                        235
+#define BRCMF_C_SET_KEY_PRIMARY                        236
+#define BRCMF_C_SET_SCAN_PASSIVE_TIME          258
+#define BRCMF_C_GET_VAR                                262
+#define BRCMF_C_SET_VAR                                263
+
+/* phy types (returned by WLC_GET_PHYTPE) */
+#define        WLC_PHY_TYPE_A          0
+#define        WLC_PHY_TYPE_B          1
+#define        WLC_PHY_TYPE_G          2
+#define        WLC_PHY_TYPE_N          4
+#define        WLC_PHY_TYPE_LP         5
+#define        WLC_PHY_TYPE_SSN        6
+#define        WLC_PHY_TYPE_HT         7
+#define        WLC_PHY_TYPE_LCN        8
+#define        WLC_PHY_TYPE_NULL       0xf
+
+#define BRCMF_PKT_FILTER_FIXED_LEN     offsetof(struct brcmf_pkt_filter, u)
+#define BRCMF_PKT_FILTER_PATTERN_FIXED_LEN     \
+       offsetof(struct brcmf_pkt_filter_pattern, mask_and_pattern)
+
+#define BRCMF_EVENTING_MASK_LEN        16
+
+#define TOE_TX_CSUM_OL         0x00000001
+#define TOE_RX_CSUM_OL         0x00000002
+
+/* maximum channels returned by the get valid channels iovar */
+#define WL_NUMCHANNELS         64
+
+#define        BRCMF_BSS_INFO_VERSION  108 /* current ver of brcmf_bss_info struct */
+
+/* size of brcmf_scan_params not including variable length array */
+#define BRCMF_SCAN_PARAMS_FIXED_SIZE 64
+
+/* masks for channel and ssid count */
+#define BRCMF_SCAN_PARAMS_COUNT_MASK 0x0000ffff
+#define BRCMF_SCAN_PARAMS_NSSID_SHIFT 16
+
+#define BRCMF_SCAN_ACTION_START      1
+#define BRCMF_SCAN_ACTION_CONTINUE   2
+#define WL_SCAN_ACTION_ABORT      3
+
+#define BRCMF_ISCAN_REQ_VERSION 1
+
+/* brcmf_iscan_results status values */
+#define BRCMF_SCAN_RESULTS_SUCCESS     0
+#define BRCMF_SCAN_RESULTS_PARTIAL     1
+#define BRCMF_SCAN_RESULTS_PENDING     2
+#define BRCMF_SCAN_RESULTS_ABORTED     3
+#define BRCMF_SCAN_RESULTS_NO_MEM      4
+
+#define WL_SOFT_KEY    (1 << 0)        /* Indicates this key is using soft encrypt */
+#define BRCMF_PRIMARY_KEY      (1 << 1)        /* primary (ie tx) key */
+#define WL_KF_RES_4    (1 << 4)        /* Reserved for backward compat */
+#define WL_KF_RES_5    (1 << 5)        /* Reserved for backward compat */
+#define WL_IBSS_PEER_GROUP_KEY (1 << 6)        /* Indicates a group key for a IBSS PEER */
+
+/* For supporting multiple interfaces */
+#define BRCMF_MAX_IFS  16
+#define BRCMF_DEL_IF   -0xe
+#define BRCMF_BAD_IF   -0xf
+
+#define DOT11_BSSTYPE_ANY                      2
+#define DOT11_MAX_DEFAULT_KEYS 4
+
+#define BRCMF_EVENT_MSG_LINK           0x01
+#define BRCMF_EVENT_MSG_FLUSHTXQ       0x02
+#define BRCMF_EVENT_MSG_GROUP          0x04
+
+struct brcmf_event_msg {
+       u16 version;
+       u16 flags;
+       u32 event_type;
+       u32 status;
+       u32 reason;
+       u32 auth_type;
+       u32 datalen;
+       u8 addr[ETH_ALEN];
+       char ifname[IFNAMSIZ];
+} __packed;
+
+struct brcm_ethhdr {
+       u16 subtype;
+       u16 length;
+       u8 version;
+       u8 oui[3];
+       u16 usr_subtype;
+} __packed;
+
+struct brcmf_event {
+       struct ethhdr eth;
+       struct brcm_ethhdr hdr;
+       struct brcmf_event_msg msg;
+} __packed;
+
+struct dngl_stats {
+       unsigned long rx_packets;       /* total packets received */
+       unsigned long tx_packets;       /* total packets transmitted */
+       unsigned long rx_bytes; /* total bytes received */
+       unsigned long tx_bytes; /* total bytes transmitted */
+       unsigned long rx_errors;        /* bad packets received */
+       unsigned long tx_errors;        /* packet transmit problems */
+       unsigned long rx_dropped;       /* packets dropped by dongle */
+       unsigned long tx_dropped;       /* packets dropped by dongle */
+       unsigned long multicast;        /* multicast packets received */
+};
+
+#define BRCMF_E_SET_SSID                       0
+#define BRCMF_E_JOIN                           1
+#define BRCMF_E_START                          2
+#define BRCMF_E_AUTH                           3
+#define BRCMF_E_AUTH_IND                       4
+#define BRCMF_E_DEAUTH                         5
+#define BRCMF_E_DEAUTH_IND                     6
+#define BRCMF_E_ASSOC                          7
+#define BRCMF_E_ASSOC_IND                      8
+#define BRCMF_E_REASSOC                                9
+#define BRCMF_E_REASSOC_IND                    10
+#define BRCMF_E_DISASSOC                       11
+#define BRCMF_E_DISASSOC_IND                   12
+#define BRCMF_E_QUIET_START                    13
+#define BRCMF_E_QUIET_END                      14
+#define BRCMF_E_BEACON_RX                      15
+#define BRCMF_E_LINK                           16
+#define BRCMF_E_MIC_ERROR                      17
+#define BRCMF_E_NDIS_LINK                      18
+#define BRCMF_E_ROAM                           19
+#define BRCMF_E_TXFAIL                         20
+#define BRCMF_E_PMKID_CACHE                    21
+#define BRCMF_E_RETROGRADE_TSF                 22
+#define BRCMF_E_PRUNE                          23
+#define BRCMF_E_AUTOAUTH                       24
+#define BRCMF_E_EAPOL_MSG                      25
+#define BRCMF_E_SCAN_COMPLETE                  26
+#define BRCMF_E_ADDTS_IND                      27
+#define BRCMF_E_DELTS_IND                      28
+#define BRCMF_E_BCNSENT_IND                    29
+#define BRCMF_E_BCNRX_MSG                      30
+#define BRCMF_E_BCNLOST_MSG                    31
+#define BRCMF_E_ROAM_PREP                      32
+#define BRCMF_E_PFN_NET_FOUND                  33
+#define BRCMF_E_PFN_NET_LOST                   34
+#define BRCMF_E_RESET_COMPLETE                 35
+#define BRCMF_E_JOIN_START                     36
+#define BRCMF_E_ROAM_START                     37
+#define BRCMF_E_ASSOC_START                    38
+#define BRCMF_E_IBSS_ASSOC                     39
+#define BRCMF_E_RADIO                          40
+#define BRCMF_E_PSM_WATCHDOG                   41
+#define BRCMF_E_PROBREQ_MSG                    44
+#define BRCMF_E_SCAN_CONFIRM_IND               45
+#define BRCMF_E_PSK_SUP                                46
+#define BRCMF_E_COUNTRY_CODE_CHANGED           47
+#define        BRCMF_E_EXCEEDED_MEDIUM_TIME            48
+#define BRCMF_E_ICV_ERROR                      49
+#define BRCMF_E_UNICAST_DECODE_ERROR           50
+#define BRCMF_E_MULTICAST_DECODE_ERROR         51
+#define BRCMF_E_TRACE                          52
+#define BRCMF_E_IF                             54
+#define BRCMF_E_RSSI                           56
+#define BRCMF_E_PFN_SCAN_COMPLETE              57
+#define BRCMF_E_EXTLOG_MSG                     58
+#define BRCMF_E_ACTION_FRAME                   59
+#define BRCMF_E_ACTION_FRAME_COMPLETE          60
+#define BRCMF_E_PRE_ASSOC_IND                  61
+#define BRCMF_E_PRE_REASSOC_IND                        62
+#define BRCMF_E_CHANNEL_ADOPTED                        63
+#define BRCMF_E_AP_STARTED                     64
+#define BRCMF_E_DFS_AP_STOP                    65
+#define BRCMF_E_DFS_AP_RESUME                  66
+#define BRCMF_E_RESERVED1                      67
+#define BRCMF_E_RESERVED2                      68
+#define BRCMF_E_ESCAN_RESULT                   69
+#define BRCMF_E_ACTION_FRAME_OFF_CHAN_COMPLETE 70
+#define BRCMF_E_DCS_REQUEST                    73
+
+#define BRCMF_E_FIFO_CREDIT_MAP                        74
+
+#define BRCMF_E_LAST                           75
+
+#define BRCMF_E_STATUS_SUCCESS                 0
+#define BRCMF_E_STATUS_FAIL                    1
+#define BRCMF_E_STATUS_TIMEOUT                 2
+#define BRCMF_E_STATUS_NO_NETWORKS             3
+#define BRCMF_E_STATUS_ABORT                   4
+#define BRCMF_E_STATUS_NO_ACK                  5
+#define BRCMF_E_STATUS_UNSOLICITED             6
+#define BRCMF_E_STATUS_ATTEMPT                 7
+#define BRCMF_E_STATUS_PARTIAL                 8
+#define BRCMF_E_STATUS_NEWSCAN                 9
+#define BRCMF_E_STATUS_NEWASSOC                        10
+#define BRCMF_E_STATUS_11HQUIET                        11
+#define BRCMF_E_STATUS_SUPPRESS                        12
+#define BRCMF_E_STATUS_NOCHANS                 13
+#define BRCMF_E_STATUS_CS_ABORT                        15
+#define BRCMF_E_STATUS_ERROR                   16
+
+#define BRCMF_E_REASON_INITIAL_ASSOC           0
+#define BRCMF_E_REASON_LOW_RSSI                        1
+#define BRCMF_E_REASON_DEAUTH                  2
+#define BRCMF_E_REASON_DISASSOC                        3
+#define BRCMF_E_REASON_BCNS_LOST               4
+#define BRCMF_E_REASON_MINTXRATE               9
+#define BRCMF_E_REASON_TXFAIL                  10
+
+#define BRCMF_E_REASON_FAST_ROAM_FAILED                5
+#define BRCMF_E_REASON_DIRECTED_ROAM           6
+#define BRCMF_E_REASON_TSPEC_REJECTED          7
+#define BRCMF_E_REASON_BETTER_AP               8
+
+#define BRCMF_E_PRUNE_ENCR_MISMATCH            1
+#define BRCMF_E_PRUNE_BCAST_BSSID              2
+#define BRCMF_E_PRUNE_MAC_DENY                 3
+#define BRCMF_E_PRUNE_MAC_NA                   4
+#define BRCMF_E_PRUNE_REG_PASSV                        5
+#define BRCMF_E_PRUNE_SPCT_MGMT                        6
+#define BRCMF_E_PRUNE_RADAR                    7
+#define BRCMF_E_RSN_MISMATCH                   8
+#define BRCMF_E_PRUNE_NO_COMMON_RATES          9
+#define BRCMF_E_PRUNE_BASIC_RATES              10
+#define BRCMF_E_PRUNE_CIPHER_NA                        12
+#define BRCMF_E_PRUNE_KNOWN_STA                        13
+#define BRCMF_E_PRUNE_WDS_PEER                 15
+#define BRCMF_E_PRUNE_QBSS_LOAD                        16
+#define BRCMF_E_PRUNE_HOME_AP                  17
+
+#define BRCMF_E_SUP_OTHER                      0
+#define BRCMF_E_SUP_DECRYPT_KEY_DATA           1
+#define BRCMF_E_SUP_BAD_UCAST_WEP128           2
+#define BRCMF_E_SUP_BAD_UCAST_WEP40            3
+#define BRCMF_E_SUP_UNSUP_KEY_LEN              4
+#define BRCMF_E_SUP_PW_KEY_CIPHER              5
+#define BRCMF_E_SUP_MSG3_TOO_MANY_IE           6
+#define BRCMF_E_SUP_MSG3_IE_MISMATCH           7
+#define BRCMF_E_SUP_NO_INSTALL_FLAG            8
+#define BRCMF_E_SUP_MSG3_NO_GTK                        9
+#define BRCMF_E_SUP_GRP_KEY_CIPHER             10
+#define BRCMF_E_SUP_GRP_MSG1_NO_GTK            11
+#define BRCMF_E_SUP_GTK_DECRYPT_FAIL           12
+#define BRCMF_E_SUP_SEND_FAIL                  13
+#define BRCMF_E_SUP_DEAUTH                     14
+
+#define BRCMF_E_IF_ADD                         1
+#define BRCMF_E_IF_DEL                         2
+#define BRCMF_E_IF_CHANGE                      3
+
+#define BRCMF_E_IF_ROLE_STA                    0
+#define BRCMF_E_IF_ROLE_AP                     1
+#define BRCMF_E_IF_ROLE_WDS                    2
+
+#define BRCMF_E_LINK_BCN_LOSS                  1
+#define BRCMF_E_LINK_DISASSOC                  2
+#define BRCMF_E_LINK_ASSOC_REC                 3
+#define BRCMF_E_LINK_BSSCFG_DIS                        4
 
 /* The level of bus communication with the dongle */
-enum dhd_bus_state {
-       DHD_BUS_DOWN,           /* Not ready for frame transfers */
-       DHD_BUS_LOAD,           /* Download access only (CPU reset) */
-       DHD_BUS_DATA            /* Ready for frame transfers */
+enum brcmf_bus_state {
+       BRCMF_BUS_DOWN,         /* Not ready for frame transfers */
+       BRCMF_BUS_LOAD,         /* Download access only (CPU reset) */
+       BRCMF_BUS_DATA          /* Ready for frame transfers */
+};
+
+/* Pattern matching filter. Specifies an offset within received packets to
+ * start matching, the pattern to match, the size of the pattern, and a bitmask
+ * that indicates which bits within the pattern should be matched.
+ */
+struct brcmf_pkt_filter_pattern {
+       u32 offset;             /* Offset within received packet to start pattern matching.
+                                * Offset '0' is the first byte of the ethernet header.
+                                */
+       u32 size_bytes; /* Size of the pattern.  Bitmask must be the same size. */
+       u8 mask_and_pattern[1]; /* Variable length mask and pattern data.  mask starts
+                                        * at offset 0.  Pattern immediately follows mask.
+                                        */
+};
+
+/* IOVAR "pkt_filter_add" parameter. Used to install packet filters. */
+struct brcmf_pkt_filter {
+       u32 id;         /* Unique filter id, specified by app. */
+       u32 type;               /* Filter type (WL_PKT_FILTER_TYPE_xxx). */
+       u32 negate_match;       /* Negate the result of filter matches */
+       union {                 /* Filter definitions */
+               struct brcmf_pkt_filter_pattern pattern; /* Filter pattern */
+       } u;
+};
+
+/* IOVAR "pkt_filter_enable" parameter. */
+struct brcmf_pkt_filter_enable {
+       u32 id;         /* Unique filter id */
+       u32 enable;             /* Enable/disable bool */
+};
+
+/* BSS info structure
+ * Applications MUST CHECK ie_offset field and length field to access IEs and
+ * next bss_info structure in a vector (in struct brcmf_scan_results)
+ */
+struct brcmf_bss_info {
+       u32 version;            /* version field */
+       u32 length;             /* byte length of data in this record,
+                                * starting at version and including IEs
+                                */
+       u8 BSSID[ETH_ALEN];
+       u16 beacon_period;      /* units are Kusec */
+       u16 capability; /* Capability information */
+       u8 SSID_len;
+       u8 SSID[32];
+       struct {
+               uint count;     /* # rates in this set */
+               u8 rates[16];   /* rates in 500kbps units w/hi bit set if basic */
+       } rateset;              /* supported rates */
+       chanspec_t chanspec;    /* chanspec for bss */
+       u16 atim_window;        /* units are Kusec */
+       u8 dtim_period; /* DTIM period */
+       s16 RSSI;               /* receive signal strength (in dBm) */
+       s8 phy_noise;           /* noise (in dBm) */
+
+       u8 n_cap;               /* BSS is 802.11N Capable */
+       u32 nbss_cap;   /* 802.11N BSS Capabilities (based on HT_CAP_*) */
+       u8 ctl_ch;              /* 802.11N BSS control channel number */
+       u32 reserved32[1];      /* Reserved for expansion of BSS properties */
+       u8 flags;               /* flags */
+       u8 reserved[3]; /* Reserved for expansion of BSS properties */
+       u8 basic_mcs[MCSSET_LEN];       /* 802.11N BSS required MCS set */
+
+       u16 ie_offset;  /* offset at which IEs start, from beginning */
+       u32 ie_length;  /* byte length of Information Elements */
+       s16 SNR;                /* average SNR of during frame reception */
+       /* Add new fields here */
+       /* variable length Information Elements */
+};
+
+struct brcmf_ssid {
+       u32 SSID_len;
+       unsigned char SSID[32];
+};
+
+struct brcmf_scan_params {
+       struct brcmf_ssid ssid; /* default: {0, ""} */
+       u8 bssid[ETH_ALEN];     /* default: bcast */
+       s8 bss_type;            /* default: any,
+                                * DOT11_BSSTYPE_ANY/INFRASTRUCTURE/INDEPENDENT
+                                */
+       u8 scan_type;   /* flags, 0 use default */
+       s32 nprobes;            /* -1 use default, number of probes per channel */
+       s32 active_time;        /* -1 use default, dwell time per channel for
+                                * active scanning
+                                */
+       s32 passive_time;       /* -1 use default, dwell time per channel
+                                * for passive scanning
+                                */
+       s32 home_time;  /* -1 use default, dwell time for the home channel
+                                * between channel scans
+                                */
+       s32 channel_num;        /* count of channels and ssids that follow
+                                *
+                                * low half is count of channels in
+                                * channel_list, 0 means default (use all
+                                * available channels)
+                                *
+                                * high half is entries in struct brcmf_ssid
+                                * array that follows channel_list, aligned for
+                                * s32 (4 bytes) meaning an odd channel count
+                                * implies a 2-byte pad between end of
+                                * channel_list and first ssid
+                                *
+                                * if ssid count is zero, single ssid in the
+                                * fixed parameter portion is assumed, otherwise
+                                * ssid in the fixed portion is ignored
+                                */
+       u16 channel_list[1];    /* list of chanspecs */
+};
+
+/* incremental scan struct */
+struct brcmf_iscan_params {
+       u32 version;
+       u16 action;
+       u16 scan_duration;
+       struct brcmf_scan_params params;
+};
+
+/* 3 fields + size of brcmf_scan_params, not including variable length array */
+#define BRCMF_ISCAN_PARAMS_FIXED_SIZE \
+       (offsetof(struct brcmf_iscan_params, params) + \
+        sizeof(struct brcmf_ssid))
+
+struct brcmf_scan_results {
+       u32 buflen;
+       u32 version;
+       u32 count;
+       struct brcmf_bss_info bss_info[1];
+};
+
+/* used for association with a specific BSSID and chanspec list */
+struct brcmf_assoc_params {
+       u8 bssid[ETH_ALEN];     /* 00:00:00:00:00:00: broadcast scan */
+       s32 chanspec_num;       /* 0: all available channels,
+                                * otherwise count of chanspecs in chanspec_list
+                                */
+       chanspec_t chanspec_list[1];    /* list of chanspecs */
+};
+#define BRCMF_ASSOC_PARAMS_FIXED_SIZE \
+       (sizeof(struct brcmf_assoc_params) - sizeof(chanspec_t))
+
+/* used for join with or without a specific bssid and channel list */
+struct brcmf_join_params {
+       struct brcmf_ssid ssid;
+       struct brcmf_assoc_params params;
+};
+
+/* size of brcmf_scan_results not including variable length array */
+#define BRCMF_SCAN_RESULTS_FIXED_SIZE \
+       (sizeof(struct brcmf_scan_results) - sizeof(struct brcmf_bss_info))
+
+/* incremental scan results struct */
+struct brcmf_iscan_results {
+       u32 status;
+       struct brcmf_scan_results results;
+};
+
+/* size of brcmf_iscan_results not including variable length array */
+#define BRCMF_ISCAN_RESULTS_FIXED_SIZE \
+       (BRCMF_SCAN_RESULTS_FIXED_SIZE + \
+        offsetof(struct brcmf_iscan_results, results))
+
+struct brcmf_wsec_key {
+       u32 index;              /* key index */
+       u32 len;                /* key length */
+       u8 data[WLAN_MAX_KEY_LEN];      /* key data */
+       u32 pad_1[18];
+       u32 algo;               /* CRYPTO_ALGO_AES_CCM, CRYPTO_ALGO_WEP128, etc */
+       u32 flags;              /* misc flags */
+       u32 pad_2[2];
+       int pad_3;
+       int iv_initialized;     /* has IV been initialized already? */
+       int pad_4;
+       /* Rx IV */
+       struct {
+               u32 hi; /* upper 32 bits of IV */
+               u16 lo; /* lower 16 bits of IV */
+       } rxiv;
+       u32 pad_5[2];
+       u8 ea[ETH_ALEN];        /* per station */
+};
+
+/* Used to get specific STA parameters */
+struct brcmf_scb_val {
+       u32 val;
+       u8 ea[ETH_ALEN];
+};
+
+/* channel encoding */
+struct brcmf_channel_info {
+       int hw_channel;
+       int target_channel;
+       int scan_channel;
 };
 
+/* Linux network driver ioctl encoding */
+struct brcmf_ioctl {
+       uint cmd;               /* common ioctl definition */
+       void *buf;              /* pointer to user buffer */
+       uint len;               /* length of user buffer */
+       u8 set;         /* get or set request (optional) */
+       uint used;              /* bytes read or written (optional) */
+       uint needed;            /* bytes needed (optional) */
+};
+
+/* Forward decls for struct brcmf_pub (see below) */
+struct brcmf_bus;              /* device bus info */
+struct brcmf_proto;    /* device communication protocol info */
+struct brcmf_info;     /* device driver info */
+
 /* Common structure for module and instance linkage */
-typedef struct dhd_pub {
+struct brcmf_pub {
        /* Linkage ponters */
-       struct dhd_bus *bus;    /* Bus module handle */
-       struct dhd_prot *prot;  /* Protocol module handle */
-       struct dhd_info *info;  /* Info module handle */
+       struct brcmf_bus *bus;
+       struct brcmf_proto *prot;
+       struct brcmf_info *info;
 
-       /* Internal dhd items */
+       /* Internal brcmf items */
        bool up;                /* Driver up/down (to OS) */
        bool txoff;             /* Transmit flow-controlled */
        bool dongle_reset;      /* true = DEVRESET put dongle into reset */
-       enum dhd_bus_state busstate;
-       uint hdrlen;            /* Total DHD header length (proto + bus) */
+       enum brcmf_bus_state busstate;
+       uint hdrlen;            /* Total BRCMF header length (proto + bus) */
        uint maxctl;            /* Max size rxctl request from proto to bus */
        uint rxsz;              /* Rx buffer size bus module should use */
        u8 wme_dp;              /* wme discard priority */
@@ -71,7 +559,7 @@ typedef struct dhd_pub {
        bool iswl;              /* Dongle-resident driver is wl */
        unsigned long drv_version;      /* Version of dongle-resident driver */
        u8 mac[ETH_ALEN];                       /* MAC address obtained from dongle */
-       dngl_stats_t dstats;            /* Stats for dongle-based data */
+       struct dngl_stats dstats;       /* Stats for dongle-based data */
 
        /* Additional stats for the bus level */
        unsigned long tx_packets;       /* Data packets sent to dongle */
@@ -88,7 +576,7 @@ typedef struct dhd_pub {
        unsigned long rx_dropped;       /* Packets dropped locally (no memory) */
        unsigned long rx_flushed;       /* Packets flushed due to
                                unscheduled sendup thread */
-       unsigned long wd_dpc_sched;     /* Number of times dhd dpc scheduled by
+       unsigned long wd_dpc_sched;     /* Number of times dpc scheduled by
                                         watchdog timer */
 
        unsigned long rx_readahead_cnt; /* Number of packets where header read-ahead
@@ -108,40 +596,51 @@ typedef struct dhd_pub {
        int suspend_disable_flag;       /* "1" to disable all extra powersaving
                                         during suspend */
        int in_suspend;         /* flag set to 1 when early suspend called */
-#ifdef PNO_SUPPORT
-       int pno_enable;         /* pno status : "1" is pno enable */
-#endif                         /* PNO_SUPPORT */
        int dtim_skip;          /* dtim skip , default 0 means wake each dtim */
 
        /* Pkt filter defination */
        char *pktfilter[100];
        int pktfilter_count;
 
-       u8 country_code[WLC_CNTRY_BUF_SZ];
-       char eventmask[WL_EVENTING_MASK_LEN];
+       u8 country_code[BRCM_CNTRY_BUF_SZ];
+       char eventmask[BRCMF_EVENTING_MASK_LEN];
+
+};
+
+struct brcmf_if_event {
+       u8 ifidx;
+       u8 action;
+       u8 flags;
+       u8 bssidx;
+};
+
+struct brcmf_timeout {
+       u32 limit;              /* Expiration time (usec) */
+       u32 increment;  /* Current expiration increment (usec) */
+       u32 elapsed;            /* Current elapsed time (usec) */
+       u32 tick;               /* O/S tick time (usec) */
+};
 
-} dhd_pub_t;
+struct bcmevent_name {
+       uint event;
+       const char *name;
+};
 
 #if defined(CONFIG_PM_SLEEP)
-extern atomic_t dhd_mmc_suspend;
-#define DHD_PM_RESUME_WAIT_INIT(a) DECLARE_WAIT_QUEUE_HEAD(a);
-#define _DHD_PM_RESUME_WAIT(a, b) do { \
+extern atomic_t brcmf_mmc_suspend;
+#define BRCMF_PM_RESUME_WAIT_INIT(a) DECLARE_WAIT_QUEUE_HEAD(a);
+#define _BRCMF_PM_RESUME_WAIT(a, b) do { \
                int retry = 0; \
-               while (atomic_read(&dhd_mmc_suspend) && retry++ != b) { \
+               while (atomic_read(&brcmf_mmc_suspend) && retry++ != b) { \
                        wait_event_timeout(a, false, HZ/100); \
                } \
        }       while (0)
-#define DHD_PM_RESUME_WAIT(a)  _DHD_PM_RESUME_WAIT(a, 30)
-#define DHD_PM_RESUME_WAIT_FOREVER(a)  _DHD_PM_RESUME_WAIT(a, ~0)
-#define DHD_PM_RESUME_RETURN_ERROR(a)  \
-       do { if (atomic_read(&dhd_mmc_suspend)) return a; } while (0)
-#define DHD_PM_RESUME_RETURN   do { \
-       if (atomic_read(&dhd_mmc_suspend)) \
-               return; \
-       } while (0)
+#define BRCMF_PM_RESUME_WAIT(a)        _BRCMF_PM_RESUME_WAIT(a, 30)
+#define BRCMF_PM_RESUME_RETURN_ERROR(a)        \
+       do { if (atomic_read(&brcmf_mmc_suspend)) return a; } while (0)
 
-#define DHD_SPINWAIT_SLEEP_INIT(a) DECLARE_WAIT_QUEUE_HEAD(a);
-#define SPINWAIT_SLEEP(a, exp, us) do { \
+#define BRCMF_SPINWAIT_SLEEP_INIT(a) DECLARE_WAIT_QUEUE_HEAD(a);
+#define BRCMF_SPINWAIT_SLEEP(a, exp, us) do { \
                uint countdown = (us) + 9999; \
                while ((exp) && (countdown >= 10000)) { \
                        wait_event_timeout(a, false, HZ/100); \
@@ -151,14 +650,12 @@ extern atomic_t dhd_mmc_suspend;
 
 #else
 
-#define DHD_PM_RESUME_WAIT_INIT(a)
-#define DHD_PM_RESUME_WAIT(a)
-#define DHD_PM_RESUME_WAIT_FOREVER(a)
-#define DHD_PM_RESUME_RETURN_ERROR(a)
-#define DHD_PM_RESUME_RETURN
+#define BRCMF_PM_RESUME_WAIT_INIT(a)
+#define BRCMF_PM_RESUME_WAIT(a)
+#define BRCMF_PM_RESUME_RETURN_ERROR(a)
 
-#define DHD_SPINWAIT_SLEEP_INIT(a)
-#define SPINWAIT_SLEEP(a, exp, us)  do { \
+#define BRCMF_SPINWAIT_SLEEP_INIT(a)
+#define BRCMF_SPINWAIT_SLEEP(a, exp, us)  do { \
                uint countdown = (us) + 9; \
                while ((exp) && (countdown >= 10)) { \
                        udelay(10);  \
@@ -167,29 +664,82 @@ extern atomic_t dhd_mmc_suspend;
        } while (0)
 
 #endif /* defined(CONFIG_PM_SLEEP) */
-#define DHD_IF_VIF     0x01    /* Virtual IF (Hidden from user) */
 
-static inline void MUTEX_LOCK_INIT(dhd_pub_t *dhdp)
+/*
+ * Insmod parameters for debug/test
+ */
+
+/* Use interrupts */
+extern uint brcmf_intr;
+
+/* Use polling */
+extern uint brcmf_poll;
+
+/* ARP offload agent mode */
+extern uint brcmf_arp_mode;
+
+/* ARP offload enable */
+extern uint brcmf_arp_enable;
+
+/* Pkt filte enable control */
+extern uint brcmf_pkt_filter_enable;
+
+/*  Pkt filter init setup */
+extern uint brcmf_pkt_filter_init;
+
+/* Pkt filter mode control */
+extern uint brcmf_master_mode;
+
+/* Roaming mode control */
+extern uint brcmf_roam;
+
+/* Roaming mode control */
+extern uint brcmf_radio_up;
+
+/* Initial idletime ticks (may be -1 for immediate idle, 0 for no idle) */
+extern int brcmf_idletime;
+#define BRCMF_IDLETIME_TICKS 1
+
+/* SDIO Drive Strength */
+extern uint brcmf_sdiod_drive_strength;
+
+/* Override to force tx queueing all the time */
+extern uint brcmf_force_tx_queueing;
+
+#ifdef SDTEST
+/* Echo packet generator (SDIO), pkts/s */
+extern uint brcmf_pktgen;
+
+/* Echo packet len (0 => sawtooth, max 1800) */
+extern uint brcmf_pktgen_len;
+#define BRCMF_MAX_PKTGEN_LEN 1800
+#endif
+
+extern const struct bcmevent_name bcmevent_names[];
+extern const int bcmevent_names_size;
+
+
+static inline void MUTEX_LOCK_INIT(struct brcmf_pub *drvr)
 {
 }
 
-static inline void MUTEX_LOCK(dhd_pub_t *dhdp)
+static inline void MUTEX_LOCK(struct brcmf_pub *drvr)
 {
 }
 
-static inline void MUTEX_UNLOCK(dhd_pub_t *dhdp)
+static inline void MUTEX_UNLOCK(struct brcmf_pub *drvr)
 {
 }
 
-static inline void MUTEX_LOCK_SOFTAP_SET_INIT(dhd_pub_t *dhdp)
+static inline void MUTEX_LOCK_SOFTAP_SET_INIT(struct brcmf_pub *drvr)
 {
 }
 
-static inline void MUTEX_LOCK_SOFTAP_SET(dhd_pub_t *dhdp)
+static inline void MUTEX_LOCK_SOFTAP_SET(struct brcmf_pub *drvr)
 {
 }
 
-static inline void MUTEX_UNLOCK_SOFTAP_SET(dhd_pub_t *dhdp)
+static inline void MUTEX_UNLOCK_SOFTAP_SET(struct brcmf_pub *drvr)
 {
 }
 
@@ -205,210 +755,150 @@ static inline void MUTEX_UNLOCK_WL_SCAN_SET(void)
 {
 }
 
-typedef struct dhd_if_event {
-       u8 ifidx;
-       u8 action;
-       u8 flags;
-       u8 bssidx;
-} dhd_if_event_t;
-
-/*
- * Exported from dhd OS modules (dhd_linux/dhd_ndis)
- */
-
 /* Indication from bus module regarding presence/insertion of dongle.
- * Return dhd_pub_t pointer, used as handle to OS module in later calls.
+ * Return struct brcmf_pub pointer, used as handle to OS module in later calls.
  * Returned structure should have bus and prot pointers filled in.
  * bus_hdrlen specifies required headroom for bus module header.
  */
-extern dhd_pub_t *dhd_attach(struct dhd_bus *bus,
-                               uint bus_hdrlen);
-extern int dhd_net_attach(dhd_pub_t *dhdp, int idx);
+extern struct brcmf_pub *brcmf_attach(struct brcmf_bus *bus,
+                                     uint bus_hdrlen);
+extern int brcmf_net_attach(struct brcmf_pub *drvr, int idx);
+extern int brcmf_netdev_wait_pend8021x(struct net_device *dev);
 
 /* Indication from bus module regarding removal/absence of dongle */
-extern void dhd_detach(dhd_pub_t *dhdp);
+extern void brcmf_detach(struct brcmf_pub *drvr);
 
 /* Indication from bus module to change flow-control state */
-extern void dhd_txflowcontrol(dhd_pub_t *dhdp, int ifidx, bool on);
+extern void brcmf_txflowcontrol(struct brcmf_pub *drvr, int ifidx, bool on);
 
-extern bool dhd_prec_enq(dhd_pub_t *dhdp, struct pktq *q,
+extern bool brcmf_c_prec_enq(struct brcmf_pub *drvr, struct pktq *q,
                         struct sk_buff *pkt, int prec);
 
 /* Receive frame for delivery to OS.  Callee disposes of rxp. */
-extern void dhd_rx_frame(dhd_pub_t *dhdp, int ifidx,
+extern void brcmf_rx_frame(struct brcmf_pub *drvr, int ifidx,
                         struct sk_buff *rxp, int numpkt);
 
 /* Return pointer to interface name */
-extern char *dhd_ifname(dhd_pub_t *dhdp, int idx);
-
-/* Request scheduling of the bus dpc */
-extern void dhd_sched_dpc(dhd_pub_t *dhdp);
+extern char *brcmf_ifname(struct brcmf_pub *drvr, int idx);
 
 /* Notify tx completion */
-extern void dhd_txcomplete(dhd_pub_t *dhdp, struct sk_buff *txp, bool success);
+extern void brcmf_txcomplete(struct brcmf_pub *drvr, struct sk_buff *txp,
+                            bool success);
 
 /* Query ioctl */
-extern int dhdcdc_query_ioctl(dhd_pub_t *dhd, int ifidx, uint cmd, void *buf,
-                             uint len);
+extern int brcmf_proto_cdc_query_ioctl(struct brcmf_pub *drvr, int ifidx,
+                                      uint cmd, void *buf, uint len);
 
 /* OS independent layer functions */
-extern int dhd_os_proto_block(dhd_pub_t *pub);
-extern int dhd_os_proto_unblock(dhd_pub_t *pub);
-extern int dhd_os_ioctl_resp_wait(dhd_pub_t *pub, uint *condition,
+extern int brcmf_os_proto_block(struct brcmf_pub *drvr);
+extern int brcmf_os_proto_unblock(struct brcmf_pub *drvr);
+extern int brcmf_os_ioctl_resp_wait(struct brcmf_pub *drvr, uint *condition,
                                  bool *pending);
-extern int dhd_os_ioctl_resp_wake(dhd_pub_t *pub);
-extern unsigned int dhd_os_get_ioctl_resp_timeout(void);
-extern void dhd_os_set_ioctl_resp_timeout(unsigned int timeout_msec);
-extern void *dhd_os_open_image(char *filename);
-extern int dhd_os_get_image_block(char *buf, int len, void *image);
-extern void dhd_os_close_image(void *image);
-extern void dhd_os_wd_timer(void *bus, uint wdtick);
-extern void dhd_os_sdlock(dhd_pub_t *pub);
-extern void dhd_os_sdunlock(dhd_pub_t *pub);
-extern void dhd_os_sdlock_txq(dhd_pub_t *pub);
-extern void dhd_os_sdunlock_txq(dhd_pub_t *pub);
-extern void dhd_os_sdlock_rxq(dhd_pub_t *pub);
-extern void dhd_os_sdunlock_rxq(dhd_pub_t *pub);
-extern void dhd_os_sdlock_sndup_rxq(dhd_pub_t *pub);
-extern void dhd_customer_gpio_wlan_ctrl(int onoff);
-extern int dhd_custom_get_mac_address(unsigned char *buf);
-extern void dhd_os_sdunlock_sndup_rxq(dhd_pub_t *pub);
-extern void dhd_os_sdlock_eventq(dhd_pub_t *pub);
-extern void dhd_os_sdunlock_eventq(dhd_pub_t *pub);
-#ifdef DHD_DEBUG
-extern int write_to_file(dhd_pub_t *dhd, u8 *buf, int size);
-#endif                         /* DHD_DEBUG */
-#if defined(OOB_INTR_ONLY)
-extern int dhd_customer_oob_irq_map(unsigned long *irq_flags_ptr);
-#endif                         /* defined(OOB_INTR_ONLY) */
-extern void dhd_os_sdtxlock(dhd_pub_t *pub);
-extern void dhd_os_sdtxunlock(dhd_pub_t *pub);
-
-int setScheduler(struct task_struct *p, int policy, struct sched_param *param);
-
-typedef struct {
-       u32 limit;              /* Expiration time (usec) */
-       u32 increment;  /* Current expiration increment (usec) */
-       u32 elapsed;            /* Current elapsed time (usec) */
-       u32 tick;               /* O/S tick time (usec) */
-} dhd_timeout_t;
+extern int brcmf_os_ioctl_resp_wake(struct brcmf_pub *drvr);
+extern unsigned int brcmf_os_get_ioctl_resp_timeout(void);
+extern void brcmf_os_set_ioctl_resp_timeout(unsigned int timeout_msec);
+#ifdef BCMDBG
+extern int brcmf_write_to_file(struct brcmf_pub *drvr, u8 *buf, int size);
+#endif                         /* BCMDBG */
 
-extern void dhd_timeout_start(dhd_timeout_t *tmo, uint usec);
-extern int dhd_timeout_expired(dhd_timeout_t *tmo);
+extern void brcmf_timeout_start(struct brcmf_timeout *tmo, uint usec);
+extern int brcmf_timeout_expired(struct brcmf_timeout *tmo);
 
-extern int dhd_ifname2idx(struct dhd_info *dhd, char *name);
-extern u8 *dhd_bssidx2bssid(dhd_pub_t *dhd, int idx);
-extern int wl_host_event(struct dhd_info *dhd, int *idx, void *pktdata,
-                        wl_event_msg_t *, void **data_ptr);
+extern int brcmf_ifname2idx(struct brcmf_info *drvr_priv, char *name);
+extern int brcmf_c_host_event(struct brcmf_info *drvr_priv, int *idx,
+                             void *pktdata, struct brcmf_event_msg *,
+                             void **data_ptr);
 
-extern void dhd_common_init(void);
+extern void brcmf_c_init(void);
 
-extern int dhd_add_if(struct dhd_info *dhd, int ifidx, void *handle,
+extern int brcmf_add_if(struct brcmf_info *drvr_priv, int ifidx, void *handle,
                      char *name, u8 *mac_addr, u32 flags, u8 bssidx);
-extern void dhd_del_if(struct dhd_info *dhd, int ifidx);
-
-extern void dhd_vif_add(struct dhd_info *dhd, int ifidx, char *name);
-extern void dhd_vif_del(struct dhd_info *dhd, int ifidx);
-
-extern void dhd_event(struct dhd_info *dhd, char *evpkt, int evlen, int ifidx);
-extern void dhd_vif_sendup(struct dhd_info *dhd, int ifidx, unsigned char * cp,
-                          int len);
+extern void brcmf_del_if(struct brcmf_info *drvr_priv, int ifidx);
 
 /* Send packet to dongle via data channel */
-extern int dhd_sendpkt(dhd_pub_t *dhdp, int ifidx, struct sk_buff *pkt);
-
-/* Send event to host */
-extern void dhd_sendup_event(dhd_pub_t *dhdp, wl_event_msg_t *event,
-                            void *data);
-extern int dhd_bus_devreset(dhd_pub_t *dhdp, u8 flag);
-extern uint dhd_bus_status(dhd_pub_t *dhdp);
-extern int dhd_bus_start(dhd_pub_t *dhdp);
-
-enum cust_gpio_modes {
-       WLAN_RESET_ON,
-       WLAN_RESET_OFF,
-       WLAN_POWER_ON,
-       WLAN_POWER_OFF
+extern int brcmf_sendpkt(struct brcmf_pub *drvr, int ifidx,\
+                        struct sk_buff *pkt);
+
+extern int brcmf_bus_devreset(struct brcmf_pub *drvr, u8 flag);
+extern int brcmf_bus_start(struct brcmf_pub *drvr);
+
+extern void brcmf_c_pktfilter_offload_set(struct brcmf_pub *drvr, char *arg);
+extern void brcmf_c_pktfilter_offload_enable(struct brcmf_pub *drvr, char *arg,
+                                            int enable, int master_mode);
+
+/* Linux network driver ioctl encoding */
+struct brcmf_c_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 */
 };
-/*
- * Insmod parameters for debug/test
- */
-
-/* Watchdog timer interval */
-extern uint dhd_watchdog_ms;
-
-#if defined(DHD_DEBUG)
-/* Console output poll interval */
-extern uint dhd_console_ms;
-#endif                         /* defined(DHD_DEBUG) */
-
-/* Use interrupts */
-extern uint dhd_intr;
-
-/* Use polling */
-extern uint dhd_poll;
-
-/* ARP offload agent mode */
-extern uint dhd_arp_mode;
-
-/* ARP offload enable */
-extern uint dhd_arp_enable;
-
-/* Pkt filte enable control */
-extern uint dhd_pkt_filter_enable;
-
-/*  Pkt filter init setup */
-extern uint dhd_pkt_filter_init;
-
-/* Pkt filter mode control */
-extern uint dhd_master_mode;
 
-/* Roaming mode control */
-extern uint dhd_roam;
-
-/* Roaming mode control */
-extern uint dhd_radio_up;
-
-/* Initial idletime ticks (may be -1 for immediate idle, 0 for no idle) */
-extern int dhd_idletime;
-#define DHD_IDLETIME_TICKS 1
-
-/* SDIO Drive Strength */
-extern uint dhd_sdiod_drive_strength;
-
-/* Override to force tx queueing all the time */
-extern uint dhd_force_tx_queueing;
+/* per-driver magic numbers */
+#define BRCMF_IOCTL_MAGIC              0x00444944
+
+/* bump this number if you change the ioctl interface */
+#define BRCMF_IOCTL_VERSION    1
+#define        BRCMF_IOCTL_MAXLEN      8192    /* max length ioctl buffer required */
+
+/* common ioctl definitions */
+#define BRCMF_GET_MAGIC                                0
+#define BRCMF_GET_VERSION                              1
+#define BRCMF_GET_VAR                          2
+#define BRCMF_SET_VAR                          3
+
+/* message levels */
+#define BRCMF_ERROR_VAL        0x0001
+#define BRCMF_TRACE_VAL        0x0002
+#define BRCMF_INFO_VAL 0x0004
+#define BRCMF_DATA_VAL 0x0008
+#define BRCMF_CTL_VAL  0x0010
+#define BRCMF_TIMER_VAL        0x0020
+#define BRCMF_HDRS_VAL 0x0040
+#define BRCMF_BYTES_VAL        0x0080
+#define BRCMF_INTR_VAL 0x0100
+#define BRCMF_GLOM_VAL 0x0400
+#define BRCMF_EVENT_VAL        0x0800
+#define BRCMF_BTA_VAL  0x1000
+#define BRCMF_ISCAN_VAL 0x2000
 
 #ifdef SDTEST
-/* Echo packet generator (SDIO), pkts/s */
-extern uint dhd_pktgen;
-
-/* Echo packet len (0 => sawtooth, max 1800) */
-extern uint dhd_pktgen_len;
-#define MAX_PKTGEN_LEN 1800
-#endif
-
-/* optionally set by a module_param_string() */
-#define MOD_PARAM_PATHLEN      2048
-extern char fw_path[MOD_PARAM_PATHLEN];
-extern char nv_path[MOD_PARAM_PATHLEN];
+/* For pktgen iovar */
+struct brcmf_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 */
+};
 
-/* For supporting multiple interfaces */
-#define DHD_MAX_IFS    16
-#define DHD_DEL_IF     -0xe
-#define DHD_BAD_IF     -0xf
+/* Version in case structure changes */
+#define BRCMF_PKTGEN_VERSION   2
 
-extern void dhd_wait_for_event(dhd_pub_t *dhd, bool * lockvar);
-extern void dhd_wait_event_wakeup(dhd_pub_t *dhd);
+/* Type of test packets to use */
+#define BRCMF_PKTGEN_ECHO      1       /* Send echo requests */
+#define BRCMF_PKTGEN_SEND      2       /* Send discard packets */
+#define BRCMF_PKTGEN_RXBURST   3       /* Request dongle send N packets */
+#define BRCMF_PKTGEN_RECV              4       /* Continuous rx from continuous
+                                        tx dongle */
+#endif                         /* SDTEST */
 
-extern u32 g_assert_type;
+/* Enter idle immediately (no timeout) */
+#define BRCMF_IDLE_IMMEDIATE   (-1)
 
-#ifdef BCMDBG
-#define ASSERT(exp) \
-         do { if (!(exp)) osl_assert(#exp, __FILE__, __LINE__); } while (0)
-extern void osl_assert(char *exp, char *file, int line);
-#else
-#define ASSERT(exp)    do {} while (0)
-#endif  /* defined(BCMDBG) */
+/* Values for idleclock iovar: other values are the sd_divisor to use
+        when idle */
+#define BRCMF_IDLE_ACTIVE      0       /* Do not request any SD clock change
+                                when idle */
 
-#endif                         /* _dhd_h_ */
+#endif                         /* _BRCMF_H_ */