15b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/*
25b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * Copyright (c) 2010 Broadcom Corporation
35b435de0d786869c95d1962121af0d7df2542009Arend van Spriel *
45b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * Permission to use, copy, modify, and/or distribute this software for any
55b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * purpose with or without fee is hereby granted, provided that the above
65b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * copyright notice and this permission notice appear in all copies.
75b435de0d786869c95d1962121af0d7df2542009Arend van Spriel *
85b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
95b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
105b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
115b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
125b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
135b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
145b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
155b435de0d786869c95d1962121af0d7df2542009Arend van Spriel */
165b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
175b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/****************
185b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * Common types *
195b435de0d786869c95d1962121af0d7df2542009Arend van Spriel */
205b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
215b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#ifndef _BRCMF_H_
225b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define _BRCMF_H_
235b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
245b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_VERSION_STR		"4.218.248.5"
255b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
265b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/*******************************************************************************
275b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * IO codes that are interpreted by dongle firmware
285b435de0d786869c95d1962121af0d7df2542009Arend van Spriel ******************************************************************************/
295b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_UP				2
305b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_SET_PROMISC			10
315b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_GET_RATE			12
325b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_GET_INFRA			19
335b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_SET_INFRA			20
345b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_GET_AUTH			21
355b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_SET_AUTH			22
365b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_GET_BSSID			23
375b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_GET_SSID			25
385b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_SET_SSID			26
395b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_GET_CHANNEL			29
405b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_GET_SRL				31
415b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_GET_LRL				33
425b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_GET_RADIO			37
435b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_SET_RADIO			38
445b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_GET_PHYTYPE			39
455b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_SET_KEY				45
465b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_SET_PASSIVE_SCAN		49
475b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_SCAN				50
485b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_SCAN_RESULTS			51
495b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_DISASSOC			52
505b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_REASSOC				53
515b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_SET_ROAM_TRIGGER		55
525b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_SET_ROAM_DELTA			57
535b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_GET_DTIMPRD			77
545b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_SET_COUNTRY			84
555b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_GET_PM				85
565b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_SET_PM				86
575b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_GET_AP				117
585b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_SET_AP				118
595b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_GET_RSSI			127
605b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_GET_WSEC			133
615b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_SET_WSEC			134
625b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_GET_PHY_NOISE			135
635b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_GET_BSS_INFO			136
645b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_SET_SCAN_CHANNEL_TIME		185
655b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_SET_SCAN_UNASSOC_TIME		187
665b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_SCB_DEAUTHENTICATE_FOR_REASON	201
675b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_GET_VALID_CHANNELS		217
685b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_GET_KEY_PRIMARY			235
695b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_SET_KEY_PRIMARY			236
705b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_SET_SCAN_PASSIVE_TIME		258
715b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_GET_VAR				262
725b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_C_SET_VAR				263
735b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
745b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* phy types (returned by WLC_GET_PHYTPE) */
755b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define	WLC_PHY_TYPE_A		0
765b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define	WLC_PHY_TYPE_B		1
775b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define	WLC_PHY_TYPE_G		2
785b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define	WLC_PHY_TYPE_N		4
795b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define	WLC_PHY_TYPE_LP		5
805b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define	WLC_PHY_TYPE_SSN	6
815b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define	WLC_PHY_TYPE_HT		7
825b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define	WLC_PHY_TYPE_LCN	8
835b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define	WLC_PHY_TYPE_NULL	0xf
845b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
855b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_EVENTING_MASK_LEN	16
865b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
875b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TOE_TX_CSUM_OL		0x00000001
885b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define TOE_RX_CSUM_OL		0x00000002
895b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
90e40aed0638ac84d63a2ff33502e215ac81010a89Franky Lin#define	BRCMF_BSS_INFO_VERSION	109 /* curr ver of brcmf_bss_info_le struct */
915b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
925b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* size of brcmf_scan_params not including variable length array */
935b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_SCAN_PARAMS_FIXED_SIZE 64
945b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
955b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* masks for channel and ssid count */
965b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_SCAN_PARAMS_COUNT_MASK 0x0000ffff
975b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_SCAN_PARAMS_NSSID_SHIFT 16
985b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
995b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_SCAN_ACTION_START      1
1005b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_SCAN_ACTION_CONTINUE   2
1015b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define WL_SCAN_ACTION_ABORT      3
1025b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
1035b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_ISCAN_REQ_VERSION 1
1045b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
1055b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* brcmf_iscan_results status values */
1065b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_SCAN_RESULTS_SUCCESS	0
1075b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_SCAN_RESULTS_PARTIAL	1
1085b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_SCAN_RESULTS_PENDING	2
1095b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_SCAN_RESULTS_ABORTED	3
1105b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_SCAN_RESULTS_NO_MEM	4
1115b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
1125b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* Indicates this key is using soft encrypt */
1135b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define WL_SOFT_KEY	(1 << 0)
1145b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* primary (ie tx) key */
1155b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_PRIMARY_KEY	(1 << 1)
1165b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* Reserved for backward compat */
1175b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define WL_KF_RES_4	(1 << 4)
1185b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* Reserved for backward compat */
1195b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define WL_KF_RES_5	(1 << 5)
1205b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* Indicates a group key for a IBSS PEER */
1215b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define WL_IBSS_PEER_GROUP_KEY	(1 << 6)
1225b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
1235b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* For supporting multiple interfaces */
1245b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_MAX_IFS	16
1255b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
1265b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define DOT11_BSSTYPE_ANY			2
1275b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define DOT11_MAX_DEFAULT_KEYS	4
1285b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
1295b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_EVENT_MSG_LINK		0x01
1305b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_EVENT_MSG_FLUSHTXQ	0x02
1315b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_EVENT_MSG_GROUP		0x04
1325b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
1335b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct brcmf_event_msg {
1345b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__be16 version;
1355b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__be16 flags;
1365b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__be32 event_type;
1375b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__be32 status;
1385b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__be32 reason;
1395b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__be32 auth_type;
1405b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__be32 datalen;
1415b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 addr[ETH_ALEN];
1425b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	char ifname[IFNAMSIZ];
1435b435de0d786869c95d1962121af0d7df2542009Arend van Spriel} __packed;
1445b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
1455b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct brcm_ethhdr {
1465b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u16 subtype;
1475b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u16 length;
1485b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 version;
1495b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 oui[3];
1505b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u16 usr_subtype;
1515b435de0d786869c95d1962121af0d7df2542009Arend van Spriel} __packed;
1525b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
1535b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct brcmf_event {
1545b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	struct ethhdr eth;
1555b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	struct brcm_ethhdr hdr;
1565b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	struct brcmf_event_msg msg;
1575b435de0d786869c95d1962121af0d7df2542009Arend van Spriel} __packed;
1585b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
1595b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* event codes sent by the dongle to this driver */
1605b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_SET_SSID			0
1615b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_JOIN				1
1625b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_START				2
1635b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_AUTH				3
1645b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_AUTH_IND			4
1655b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_DEAUTH				5
1665b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_DEAUTH_IND			6
1675b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_ASSOC				7
1685b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_ASSOC_IND			8
1695b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_REASSOC				9
1705b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_REASSOC_IND			10
1715b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_DISASSOC			11
1725b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_DISASSOC_IND			12
1735b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_QUIET_START			13
1745b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_QUIET_END			14
1755b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_BEACON_RX			15
1765b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_LINK				16
1775b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_MIC_ERROR			17
1785b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_NDIS_LINK			18
1795b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_ROAM				19
1805b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_TXFAIL				20
1815b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_PMKID_CACHE			21
1825b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_RETROGRADE_TSF			22
1835b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_PRUNE				23
1845b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_AUTOAUTH			24
1855b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_EAPOL_MSG			25
1865b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_SCAN_COMPLETE			26
1875b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_ADDTS_IND			27
1885b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_DELTS_IND			28
1895b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_BCNSENT_IND			29
1905b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_BCNRX_MSG			30
1915b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_BCNLOST_MSG			31
1925b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_ROAM_PREP			32
1935b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_PFN_NET_FOUND			33
1945b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_PFN_NET_LOST			34
1955b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_RESET_COMPLETE			35
1965b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_JOIN_START			36
1975b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_ROAM_START			37
1985b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_ASSOC_START			38
1995b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_IBSS_ASSOC			39
2005b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_RADIO				40
2015b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_PSM_WATCHDOG			41
2025b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_PROBREQ_MSG			44
2035b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_SCAN_CONFIRM_IND		45
2045b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_PSK_SUP				46
2055b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_COUNTRY_CODE_CHANGED		47
2065b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define	BRCMF_E_EXCEEDED_MEDIUM_TIME		48
2075b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_ICV_ERROR			49
2085b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_UNICAST_DECODE_ERROR		50
2095b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_MULTICAST_DECODE_ERROR		51
2105b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_TRACE				52
2115b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_IF				54
2125b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_RSSI				56
2135b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_PFN_SCAN_COMPLETE		57
2145b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_EXTLOG_MSG			58
2155b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_ACTION_FRAME			59
2165b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_ACTION_FRAME_COMPLETE		60
2175b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_PRE_ASSOC_IND			61
2185b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_PRE_REASSOC_IND			62
2195b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_CHANNEL_ADOPTED			63
2205b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_AP_STARTED			64
2215b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_DFS_AP_STOP			65
2225b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_DFS_AP_RESUME			66
2235b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_RESERVED1			67
2245b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_RESERVED2			68
2255b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_ESCAN_RESULT			69
2265b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_ACTION_FRAME_OFF_CHAN_COMPLETE	70
2275b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_DCS_REQUEST			73
2285b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
2295b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_FIFO_CREDIT_MAP			74
2305b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
2315b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_LAST				75
2325b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
2335b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_STATUS_SUCCESS			0
2345b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_STATUS_FAIL			1
2355b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_STATUS_TIMEOUT			2
2365b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_STATUS_NO_NETWORKS		3
2375b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_STATUS_ABORT			4
2385b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_STATUS_NO_ACK			5
2395b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_STATUS_UNSOLICITED		6
2405b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_STATUS_ATTEMPT			7
2415b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_STATUS_PARTIAL			8
2425b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_STATUS_NEWSCAN			9
2435b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_STATUS_NEWASSOC			10
2445b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_STATUS_11HQUIET			11
2455b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_STATUS_SUPPRESS			12
2465b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_STATUS_NOCHANS			13
2475b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_STATUS_CS_ABORT			15
2485b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_STATUS_ERROR			16
2495b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
2505b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_REASON_INITIAL_ASSOC		0
2515b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_REASON_LOW_RSSI			1
2525b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_REASON_DEAUTH			2
2535b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_REASON_DISASSOC			3
2545b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_REASON_BCNS_LOST		4
2555b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_REASON_MINTXRATE		9
2565b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_REASON_TXFAIL			10
2575b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
2585b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_REASON_FAST_ROAM_FAILED		5
2595b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_REASON_DIRECTED_ROAM		6
2605b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_REASON_TSPEC_REJECTED		7
2615b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_REASON_BETTER_AP		8
2625b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
2635b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_PRUNE_ENCR_MISMATCH		1
2645b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_PRUNE_BCAST_BSSID		2
2655b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_PRUNE_MAC_DENY			3
2665b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_PRUNE_MAC_NA			4
2675b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_PRUNE_REG_PASSV			5
2685b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_PRUNE_SPCT_MGMT			6
2695b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_PRUNE_RADAR			7
2705b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_RSN_MISMATCH			8
2715b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_PRUNE_NO_COMMON_RATES		9
2725b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_PRUNE_BASIC_RATES		10
2735b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_PRUNE_CIPHER_NA			12
2745b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_PRUNE_KNOWN_STA			13
2755b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_PRUNE_WDS_PEER			15
2765b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_PRUNE_QBSS_LOAD			16
2775b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_PRUNE_HOME_AP			17
2785b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
2795b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_SUP_OTHER			0
2805b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_SUP_DECRYPT_KEY_DATA		1
2815b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_SUP_BAD_UCAST_WEP128		2
2825b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_SUP_BAD_UCAST_WEP40		3
2835b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_SUP_UNSUP_KEY_LEN		4
2845b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_SUP_PW_KEY_CIPHER		5
2855b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_SUP_MSG3_TOO_MANY_IE		6
2865b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_SUP_MSG3_IE_MISMATCH		7
2875b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_SUP_NO_INSTALL_FLAG		8
2885b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_SUP_MSG3_NO_GTK			9
2895b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_SUP_GRP_KEY_CIPHER		10
2905b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_SUP_GRP_MSG1_NO_GTK		11
2915b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_SUP_GTK_DECRYPT_FAIL		12
2925b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_SUP_SEND_FAIL			13
2935b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_SUP_DEAUTH			14
2945b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
2955b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_IF_ADD				1
2965b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_IF_DEL				2
2975b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_IF_CHANGE			3
2985b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
2995b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_IF_ROLE_STA			0
3005b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_IF_ROLE_AP			1
3015b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_IF_ROLE_WDS			2
3025b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
3035b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_LINK_BCN_LOSS			1
3045b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_LINK_DISASSOC			2
3055b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_LINK_ASSOC_REC			3
3065b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_E_LINK_BSSCFG_DIS			4
3075b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
3085b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* Pattern matching filter. Specifies an offset within received packets to
3095b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * start matching, the pattern to match, the size of the pattern, and a bitmask
3105b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * that indicates which bits within the pattern should be matched.
3115b435de0d786869c95d1962121af0d7df2542009Arend van Spriel */
312f7264adb9a0ec492c3f6ee2a476a9ad9027317f9Arend van Sprielstruct brcmf_pkt_filter_pattern_le {
3135b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	/*
3145b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	 * Offset within received packet to start pattern matching.
3155b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	 * Offset '0' is the first byte of the ethernet header.
3165b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	 */
317f7264adb9a0ec492c3f6ee2a476a9ad9027317f9Arend van Spriel	__le32 offset;
3185b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	/* Size of the pattern.  Bitmask must be the same size.*/
319f7264adb9a0ec492c3f6ee2a476a9ad9027317f9Arend van Spriel	__le32 size_bytes;
3205b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	/*
3215b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	 * Variable length mask and pattern data. mask starts at offset 0.
3225b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	 * Pattern immediately follows mask.
3235b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	 */
3245b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 mask_and_pattern[1];
3255b435de0d786869c95d1962121af0d7df2542009Arend van Spriel};
3265b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
3275b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* IOVAR "pkt_filter_add" parameter. Used to install packet filters. */
328f7264adb9a0ec492c3f6ee2a476a9ad9027317f9Arend van Sprielstruct brcmf_pkt_filter_le {
329f7264adb9a0ec492c3f6ee2a476a9ad9027317f9Arend van Spriel	__le32 id;		/* Unique filter id, specified by app. */
330f7264adb9a0ec492c3f6ee2a476a9ad9027317f9Arend van Spriel	__le32 type;		/* Filter type (WL_PKT_FILTER_TYPE_xxx). */
331f7264adb9a0ec492c3f6ee2a476a9ad9027317f9Arend van Spriel	__le32 negate_match;	/* Negate the result of filter matches */
3325b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	union {			/* Filter definitions */
333f7264adb9a0ec492c3f6ee2a476a9ad9027317f9Arend van Spriel		struct brcmf_pkt_filter_pattern_le pattern; /* Filter pattern */
3345b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	} u;
3355b435de0d786869c95d1962121af0d7df2542009Arend van Spriel};
3365b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
3375b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* IOVAR "pkt_filter_enable" parameter. */
338f7264adb9a0ec492c3f6ee2a476a9ad9027317f9Arend van Sprielstruct brcmf_pkt_filter_enable_le {
339f7264adb9a0ec492c3f6ee2a476a9ad9027317f9Arend van Spriel	__le32 id;		/* Unique filter id */
340f7264adb9a0ec492c3f6ee2a476a9ad9027317f9Arend van Spriel	__le32 enable;		/* Enable/disable bool */
3415b435de0d786869c95d1962121af0d7df2542009Arend van Spriel};
3425b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
3435b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* BSS info structure
3445b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * Applications MUST CHECK ie_offset field and length field to access IEs and
3455b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * next bss_info structure in a vector (in struct brcmf_scan_results)
3465b435de0d786869c95d1962121af0d7df2542009Arend van Spriel */
347d34bf64fd32abfe8141c7206ca6da92832b4fe94Roland Vossenstruct brcmf_bss_info_le {
3485b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 version;		/* version field */
3495b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 length;		/* byte length of data in this record,
3505b435de0d786869c95d1962121af0d7df2542009Arend van Spriel				 * starting at version and including IEs
3515b435de0d786869c95d1962121af0d7df2542009Arend van Spriel				 */
3525b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 BSSID[ETH_ALEN];
3535b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le16 beacon_period;	/* units are Kusec */
3545b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le16 capability;	/* Capability information */
3555b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 SSID_len;
3565b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 SSID[32];
3575b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	struct {
3585b435de0d786869c95d1962121af0d7df2542009Arend van Spriel		__le32 count;   /* # rates in this set */
3595b435de0d786869c95d1962121af0d7df2542009Arend van Spriel		u8 rates[16]; /* rates in 500kbps units w/hi bit set if basic */
3605b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	} rateset;		/* supported rates */
3615b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le16 chanspec;	/* chanspec for bss */
3625b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le16 atim_window;	/* units are Kusec */
3635b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 dtim_period;	/* DTIM period */
3645b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le16 RSSI;		/* receive signal strength (in dBm) */
3655b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	s8 phy_noise;		/* noise (in dBm) */
3665b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
3675b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 n_cap;		/* BSS is 802.11N Capable */
3685b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	/* 802.11N BSS Capabilities (based on HT_CAP_*): */
3695b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 nbss_cap;
3705b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 ctl_ch;		/* 802.11N BSS control channel number */
3715b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 reserved32[1];	/* Reserved for expansion of BSS properties */
3725b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 flags;		/* flags */
3735b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 reserved[3];	/* Reserved for expansion of BSS properties */
3745b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 basic_mcs[MCSSET_LEN];	/* 802.11N BSS required MCS set */
3755b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
3765b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le16 ie_offset;	/* offset at which IEs start, from beginning */
3775b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 ie_length;	/* byte length of Information Elements */
3785b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le16 SNR;		/* average SNR of during frame reception */
3795b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	/* Add new fields here */
3805b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	/* variable length Information Elements */
3815b435de0d786869c95d1962121af0d7df2542009Arend van Spriel};
3825b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
3835b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct brcm_rateset_le {
3845b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	/* # rates in this set */
3855b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 count;
3865b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	/* rates in 500kbps units w/hi bit set if basic */
3875b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 rates[WL_NUMRATES];
3885b435de0d786869c95d1962121af0d7df2542009Arend van Spriel};
3895b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
3905b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct brcmf_ssid {
3915b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u32 SSID_len;
3925b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	unsigned char SSID[32];
3935b435de0d786869c95d1962121af0d7df2542009Arend van Spriel};
3945b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
3955b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct brcmf_ssid_le {
3965b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 SSID_len;
3975b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	unsigned char SSID[32];
3985b435de0d786869c95d1962121af0d7df2542009Arend van Spriel};
3995b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
4005b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct brcmf_scan_params_le {
4015b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	struct brcmf_ssid_le ssid_le;	/* default: {0, ""} */
4025b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 bssid[ETH_ALEN];	/* default: bcast */
4035b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	s8 bss_type;		/* default: any,
4045b435de0d786869c95d1962121af0d7df2542009Arend van Spriel				 * DOT11_BSSTYPE_ANY/INFRASTRUCTURE/INDEPENDENT
4055b435de0d786869c95d1962121af0d7df2542009Arend van Spriel				 */
4065b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 scan_type;	/* flags, 0 use default */
4075b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 nprobes;	  /* -1 use default, number of probes per channel */
4085b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 active_time;	/* -1 use default, dwell time per channel for
4095b435de0d786869c95d1962121af0d7df2542009Arend van Spriel				 * active scanning
4105b435de0d786869c95d1962121af0d7df2542009Arend van Spriel				 */
4115b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 passive_time;	/* -1 use default, dwell time per channel
4125b435de0d786869c95d1962121af0d7df2542009Arend van Spriel				 * for passive scanning
4135b435de0d786869c95d1962121af0d7df2542009Arend van Spriel				 */
4145b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 home_time;	/* -1 use default, dwell time for the
4155b435de0d786869c95d1962121af0d7df2542009Arend van Spriel				 * home channel between channel scans
4165b435de0d786869c95d1962121af0d7df2542009Arend van Spriel				 */
4175b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 channel_num;	/* count of channels and ssids that follow
4185b435de0d786869c95d1962121af0d7df2542009Arend van Spriel				 *
4195b435de0d786869c95d1962121af0d7df2542009Arend van Spriel				 * low half is count of channels in
4205b435de0d786869c95d1962121af0d7df2542009Arend van Spriel				 * channel_list, 0 means default (use all
4215b435de0d786869c95d1962121af0d7df2542009Arend van Spriel				 * available channels)
4225b435de0d786869c95d1962121af0d7df2542009Arend van Spriel				 *
4235b435de0d786869c95d1962121af0d7df2542009Arend van Spriel				 * high half is entries in struct brcmf_ssid
4245b435de0d786869c95d1962121af0d7df2542009Arend van Spriel				 * array that follows channel_list, aligned for
4255b435de0d786869c95d1962121af0d7df2542009Arend van Spriel				 * s32 (4 bytes) meaning an odd channel count
4265b435de0d786869c95d1962121af0d7df2542009Arend van Spriel				 * implies a 2-byte pad between end of
4275b435de0d786869c95d1962121af0d7df2542009Arend van Spriel				 * channel_list and first ssid
4285b435de0d786869c95d1962121af0d7df2542009Arend van Spriel				 *
4295b435de0d786869c95d1962121af0d7df2542009Arend van Spriel				 * if ssid count is zero, single ssid in the
4305b435de0d786869c95d1962121af0d7df2542009Arend van Spriel				 * fixed parameter portion is assumed, otherwise
4315b435de0d786869c95d1962121af0d7df2542009Arend van Spriel				 * ssid in the fixed portion is ignored
4325b435de0d786869c95d1962121af0d7df2542009Arend van Spriel				 */
4335b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le16 channel_list[1];	/* list of chanspecs */
4345b435de0d786869c95d1962121af0d7df2542009Arend van Spriel};
4355b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
4365b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* incremental scan struct */
4375b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct brcmf_iscan_params_le {
4385b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 version;
4395b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le16 action;
4405b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le16 scan_duration;
4415b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	struct brcmf_scan_params_le params_le;
4425b435de0d786869c95d1962121af0d7df2542009Arend van Spriel};
4435b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
4445b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct brcmf_scan_results {
4455b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u32 buflen;
4465b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u32 version;
4475b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u32 count;
4480527781eb00550226d638b9be23d246c7ba796f6Roland Vossen	struct brcmf_bss_info_le bss_info_le[];
4495b435de0d786869c95d1962121af0d7df2542009Arend van Spriel};
4505b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
4515b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct brcmf_scan_results_le {
4525b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 buflen;
4535b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 version;
4545b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 count;
4555b435de0d786869c95d1962121af0d7df2542009Arend van Spriel};
4565b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
4575b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* used for association with a specific BSSID and chanspec list */
4585b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct brcmf_assoc_params_le {
4595b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	/* 00:00:00:00:00:00: broadcast scan */
4605b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 bssid[ETH_ALEN];
4615b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	/* 0: all available channels, otherwise count of chanspecs in
4625b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	 * chanspec_list */
4635b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 chanspec_num;
4645b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	/* list of chanspecs */
4655b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le16 chanspec_list[1];
4665b435de0d786869c95d1962121af0d7df2542009Arend van Spriel};
4675b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
4685b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* used for join with or without a specific bssid and channel list */
4695b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct brcmf_join_params {
4705b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	struct brcmf_ssid_le ssid_le;
4715b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	struct brcmf_assoc_params_le params_le;
4725b435de0d786869c95d1962121af0d7df2542009Arend van Spriel};
4735b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
4745b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* incremental scan results struct */
4755b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct brcmf_iscan_results {
4765b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	union {
4775b435de0d786869c95d1962121af0d7df2542009Arend van Spriel		u32 status;
4785b435de0d786869c95d1962121af0d7df2542009Arend van Spriel		__le32 status_le;
4795b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	};
4805b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	union {
4815b435de0d786869c95d1962121af0d7df2542009Arend van Spriel		struct brcmf_scan_results results;
4825b435de0d786869c95d1962121af0d7df2542009Arend van Spriel		struct brcmf_scan_results_le results_le;
4835b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	};
4845b435de0d786869c95d1962121af0d7df2542009Arend van Spriel};
4855b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
4865b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* size of brcmf_iscan_results not including variable length array */
4875b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_ISCAN_RESULTS_FIXED_SIZE \
4880527781eb00550226d638b9be23d246c7ba796f6Roland Vossen	(sizeof(struct brcmf_scan_results) + \
4895b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	 offsetof(struct brcmf_iscan_results, results))
4905b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
4915b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct brcmf_wsec_key {
4925b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u32 index;		/* key index */
4935b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u32 len;		/* key length */
4945b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 data[WLAN_MAX_KEY_LEN];	/* key data */
4955b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u32 pad_1[18];
4965b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u32 algo;	/* CRYPTO_ALGO_AES_CCM, CRYPTO_ALGO_WEP128, etc */
4975b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u32 flags;	/* misc flags */
4985b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u32 pad_2[3];
4995b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u32 iv_initialized;	/* has IV been initialized already? */
5005b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u32 pad_3;
5015b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	/* Rx IV */
5025b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	struct {
5035b435de0d786869c95d1962121af0d7df2542009Arend van Spriel		u32 hi;	/* upper 32 bits of IV */
5045b435de0d786869c95d1962121af0d7df2542009Arend van Spriel		u16 lo;	/* lower 16 bits of IV */
5055b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	} rxiv;
5065b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u32 pad_4[2];
5075b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 ea[ETH_ALEN];	/* per station */
5085b435de0d786869c95d1962121af0d7df2542009Arend van Spriel};
5095b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
5105b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/*
5115b435de0d786869c95d1962121af0d7df2542009Arend van Spriel * dongle requires same struct as above but with fields in little endian order
5125b435de0d786869c95d1962121af0d7df2542009Arend van Spriel */
5135b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct brcmf_wsec_key_le {
5145b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 index;		/* key index */
5155b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 len;		/* key length */
5165b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 data[WLAN_MAX_KEY_LEN];	/* key data */
5175b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 pad_1[18];
5185b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 algo;	/* CRYPTO_ALGO_AES_CCM, CRYPTO_ALGO_WEP128, etc */
5195b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 flags;	/* misc flags */
5205b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 pad_2[3];
5215b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 iv_initialized;	/* has IV been initialized already? */
5225b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 pad_3;
5235b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	/* Rx IV */
5245b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	struct {
5255b435de0d786869c95d1962121af0d7df2542009Arend van Spriel		__le32 hi;	/* upper 32 bits of IV */
5265b435de0d786869c95d1962121af0d7df2542009Arend van Spriel		__le16 lo;	/* lower 16 bits of IV */
5275b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	} rxiv;
5285b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 pad_4[2];
5295b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 ea[ETH_ALEN];	/* per station */
5305b435de0d786869c95d1962121af0d7df2542009Arend van Spriel};
5315b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
5325b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* Used to get specific STA parameters */
5335b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct brcmf_scb_val_le {
5345b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 val;
5355b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 ea[ETH_ALEN];
5365b435de0d786869c95d1962121af0d7df2542009Arend van Spriel};
5375b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
5385b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* channel encoding */
5395b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct brcmf_channel_info_le {
5405b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 hw_channel;
5415b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 target_channel;
5425b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	__le32 scan_channel;
5435b435de0d786869c95d1962121af0d7df2542009Arend van Spriel};
5445b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
5455b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* Bus independent dongle command */
5465b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct brcmf_dcmd {
5475b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	uint cmd;		/* common dongle cmd definition */
5485b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	void *buf;		/* pointer to user buffer */
5495b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	uint len;		/* length of user buffer */
5505b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 set;			/* get or set request (optional) */
5515b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	uint used;		/* bytes read or written (optional) */
5525b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	uint needed;		/* bytes needed (optional) */
5535b435de0d786869c95d1962121af0d7df2542009Arend van Spriel};
5545b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
5555b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* Forward decls for struct brcmf_pub (see below) */
5565b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct brcmf_proto;	/* device communication protocol info */
5575b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct brcmf_cfg80211_dev; /* cfg80211 device info */
5585b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
5595b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* Common structure for module and instance linkage */
5605b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct brcmf_pub {
5615b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	/* Linkage ponters */
5628d169aa00d0356f915e84dbdf6c9be381cce34a4Franky Lin	struct brcmf_bus *bus_if;
5635b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	struct brcmf_proto *prot;
5645b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	struct brcmf_cfg80211_dev *config;
565532cdd3b99b7a89fdc128c2b58abea780f3bbb4dFranky Lin	struct device *dev;		/* fullmac dongle device pointer */
5665b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
5675b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	/* Internal brcmf items */
5685b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	uint hdrlen;		/* Total BRCMF header length (proto + bus) */
5695b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	uint rxsz;		/* Rx buffer size bus module should use */
5705b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 wme_dp;		/* wme discard priority */
5715b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
5725b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	/* Dongle media info */
5735b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	bool iswl;		/* Dongle-resident driver is wl */
5745b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	unsigned long drv_version;	/* Version of dongle-resident driver */
5755b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 mac[ETH_ALEN];		/* MAC address obtained from dongle */
5765b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
5775b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	/* Additional stats for the bus level */
5785b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
5795b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	/* Multicast data packets sent to dongle */
5805b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	unsigned long tx_multicast;
5815b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	/* Packets flushed due to unscheduled sendup thread */
5825b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	unsigned long rx_flushed;
5835b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	/* Number of times dpc scheduled by watchdog timer */
5845b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	unsigned long wd_dpc_sched;
5855b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
5865b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	/* Number of flow control pkts recvd */
5875b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	unsigned long fc_packets;
5885b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
5895b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	/* Last error return */
5905b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	int bcmerror;
5915b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
5925b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	/* Last error from dongle */
5935b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	int dongle_error;
5945b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
5955b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	/* Suspend disable flag  flag */
5965b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	int suspend_disable_flag;	/* "1" to disable all extra powersaving
5975b435de0d786869c95d1962121af0d7df2542009Arend van Spriel					 during suspend */
5985b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	int in_suspend;		/* flag set to 1 when early suspend called */
5995b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	int dtim_skip;		/* dtim skip , default 0 means wake each dtim */
6005b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
6015b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	/* Pkt filter defination */
6025b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	char *pktfilter[100];
6035b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	int pktfilter_count;
6045b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
6055b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 country_code[BRCM_CNTRY_BUF_SZ];
6065b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	char eventmask[BRCMF_EVENTING_MASK_LEN];
607d08b6a3759818eed78057a8bafebc630dbe9a9baFranky Lin
608d08b6a3759818eed78057a8bafebc630dbe9a9baFranky Lin	struct brcmf_if *iflist[BRCMF_MAX_IFS];
609d08b6a3759818eed78057a8bafebc630dbe9a9baFranky Lin
610d08b6a3759818eed78057a8bafebc630dbe9a9baFranky Lin	struct mutex proto_block;
611d08b6a3759818eed78057a8bafebc630dbe9a9baFranky Lin
612d08b6a3759818eed78057a8bafebc630dbe9a9baFranky Lin	struct work_struct setmacaddr_work;
613d08b6a3759818eed78057a8bafebc630dbe9a9baFranky Lin	struct work_struct multicast_work;
614d08b6a3759818eed78057a8bafebc630dbe9a9baFranky Lin	u8 macvalue[ETH_ALEN];
615d08b6a3759818eed78057a8bafebc630dbe9a9baFranky Lin	atomic_t pend_8021x_cnt;
6165b435de0d786869c95d1962121af0d7df2542009Arend van Spriel};
6175b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
6185b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct brcmf_if_event {
6195b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 ifidx;
6205b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 action;
6215b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 flags;
6225b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	u8 bssidx;
6235b435de0d786869c95d1962121af0d7df2542009Arend van Spriel};
6245b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
6255b435de0d786869c95d1962121af0d7df2542009Arend van Sprielstruct bcmevent_name {
6265b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	uint event;
6275b435de0d786869c95d1962121af0d7df2542009Arend van Spriel	const char *name;
6285b435de0d786869c95d1962121af0d7df2542009Arend van Spriel};
6295b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
6305b435de0d786869c95d1962121af0d7df2542009Arend van Sprielextern const struct bcmevent_name bcmevent_names[];
6315b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
63253a2277d2ad411b440d2f102ced7bebef42c2fd7Alwin Beukersextern uint brcmf_c_mkiovar(char *name, char *data, uint datalen,
63353a2277d2ad411b440d2f102ced7bebef42c2fd7Alwin Beukers			  char *buf, uint len);
63453a2277d2ad411b440d2f102ced7bebef42c2fd7Alwin Beukers
6355b435de0d786869c95d1962121af0d7df2542009Arend van Sprielextern int brcmf_net_attach(struct brcmf_pub *drvr, int idx);
6365b435de0d786869c95d1962121af0d7df2542009Arend van Sprielextern int brcmf_netdev_wait_pend8021x(struct net_device *ndev);
6375b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
6385b435de0d786869c95d1962121af0d7df2542009Arend van Sprielextern s32 brcmf_exec_dcmd(struct net_device *dev, u32 cmd, void *arg, u32 len);
6395b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
6405b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* Return pointer to interface name */
6415b435de0d786869c95d1962121af0d7df2542009Arend van Sprielextern char *brcmf_ifname(struct brcmf_pub *drvr, int idx);
6425b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
6435b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* Query dongle */
6445b435de0d786869c95d1962121af0d7df2542009Arend van Sprielextern int brcmf_proto_cdc_query_dcmd(struct brcmf_pub *drvr, int ifidx,
6455b435de0d786869c95d1962121af0d7df2542009Arend van Spriel				       uint cmd, void *buf, uint len);
6465b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
6478ae746543c8370fd04c28aaf8f185c1687b0e694Joe Perches#ifdef DEBUG
648af5349581c01780824d3229fc958354c1f7e9c91Arend van Sprielextern int brcmf_write_to_file(struct brcmf_pub *drvr, const u8 *buf, int size);
6498ae746543c8370fd04c28aaf8f185c1687b0e694Joe Perches#endif				/* DEBUG */
6505b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
651d08b6a3759818eed78057a8bafebc630dbe9a9baFranky Linextern int brcmf_ifname2idx(struct brcmf_pub *drvr, char *name);
652d08b6a3759818eed78057a8bafebc630dbe9a9baFranky Linextern int brcmf_c_host_event(struct brcmf_pub *drvr, int *idx,
6535b435de0d786869c95d1962121af0d7df2542009Arend van Spriel			      void *pktdata, struct brcmf_event_msg *,
6545b435de0d786869c95d1962121af0d7df2542009Arend van Spriel			      void **data_ptr);
6555b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
656d08b6a3759818eed78057a8bafebc630dbe9a9baFranky Linextern void brcmf_del_if(struct brcmf_pub *drvr, int ifidx);
6575b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
6585b435de0d786869c95d1962121af0d7df2542009Arend van Spriel/* Send packet to dongle via data channel */
6595b435de0d786869c95d1962121af0d7df2542009Arend van Sprielextern int brcmf_sendpkt(struct brcmf_pub *drvr, int ifidx,\
6605b435de0d786869c95d1962121af0d7df2542009Arend van Spriel			 struct sk_buff *pkt);
6615b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
6625b435de0d786869c95d1962121af0d7df2542009Arend van Sprielextern void brcmf_c_pktfilter_offload_set(struct brcmf_pub *drvr, char *arg);
6635b435de0d786869c95d1962121af0d7df2542009Arend van Sprielextern void brcmf_c_pktfilter_offload_enable(struct brcmf_pub *drvr, char *arg,
6645b435de0d786869c95d1962121af0d7df2542009Arend van Spriel					     int enable, int master_mode);
6655b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
6665b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define	BRCMF_DCMD_SMLEN	256	/* "small" cmd buffer required */
6675b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define BRCMF_DCMD_MEDLEN	1536	/* "med" cmd buffer required */
6685b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#define	BRCMF_DCMD_MAXLEN	8192	/* max length cmd buffer required */
6695b435de0d786869c95d1962121af0d7df2542009Arend van Spriel
6705b435de0d786869c95d1962121af0d7df2542009Arend van Spriel#endif				/* _BRCMF_H_ */
671