diff options
Diffstat (limited to 'drivers/net/wireless/brcm80211/brcmfmac/dhd.h')
| -rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/dhd.h | 140 | 
1 files changed, 17 insertions, 123 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd.h b/drivers/net/wireless/brcm80211/brcmfmac/dhd.h index 4645766b407..e58ea40a75b 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/dhd.h +++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd.h @@ -87,7 +87,7 @@  #define TOE_TX_CSUM_OL		0x00000001  #define TOE_RX_CSUM_OL		0x00000002 -#define	BRCMF_BSS_INFO_VERSION	108 /* current ver of brcmf_bss_info struct */ +#define	BRCMF_BSS_INFO_VERSION	109 /* curr ver of brcmf_bss_info_le struct */  /* size of brcmf_scan_params not including variable length array */  #define BRCMF_SCAN_PARAMS_FIXED_SIZE 64 @@ -122,8 +122,6 @@  /* 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 @@ -158,18 +156,6 @@ struct brcmf_event {  	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 */ -}; -  /* event codes sent by the dongle to this driver */  #define BRCMF_E_SET_SSID			0  #define BRCMF_E_JOIN				1 @@ -319,13 +305,6 @@ struct dngl_stats {  #define BRCMF_E_LINK_ASSOC_REC			3  #define BRCMF_E_LINK_BSSCFG_DIS			4 -/* The level of bus communication with the dongle */ -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. @@ -365,7 +344,7 @@ struct brcmf_pkt_filter_enable_le {   * 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 { +struct brcmf_bss_info_le {  	__le32 version;		/* version field */  	__le32 length;		/* byte length of data in this record,  				 * starting at version and including IEs @@ -466,14 +445,13 @@ struct brcmf_scan_results {  	u32 buflen;  	u32 version;  	u32 count; -	struct brcmf_bss_info bss_info[1]; +	struct brcmf_bss_info_le bss_info_le[];  };  struct brcmf_scan_results_le {  	__le32 buflen;  	__le32 version;  	__le32 count; -	struct brcmf_bss_info bss_info[1];  };  /* used for association with a specific BSSID and chanspec list */ @@ -493,10 +471,6 @@ struct brcmf_join_params {  	struct brcmf_assoc_params_le params_le;  }; -/* 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 {  	union { @@ -511,7 +485,7 @@ struct brcmf_iscan_results {  /* size of brcmf_iscan_results not including variable length array */  #define BRCMF_ISCAN_RESULTS_FIXED_SIZE \ -	(BRCMF_SCAN_RESULTS_FIXED_SIZE + \ +	(sizeof(struct brcmf_scan_results) + \  	 offsetof(struct brcmf_iscan_results, results))  struct brcmf_wsec_key { @@ -579,25 +553,19 @@ struct brcmf_dcmd {  };  /* 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 */  struct brcmf_cfg80211_dev; /* cfg80211 device info */  /* Common structure for module and instance linkage */  struct brcmf_pub {  	/* Linkage ponters */ -	struct brcmf_bus *bus; +	struct brcmf_bus *bus_if;  	struct brcmf_proto *prot; -	struct brcmf_info *info;  	struct brcmf_cfg80211_dev *config; +	struct device *dev;		/* fullmac dongle device pointer */  	/* Internal brcmf items */ -	bool up;		/* Driver up/down (to OS) */ -	bool txoff;		/* Transmit flow-controlled */ -	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 */ @@ -605,48 +573,21 @@ struct brcmf_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 */ -	struct dngl_stats dstats;	/* Stats for dongle-based data */  	/* Additional stats for the bus level */ -	/* Data packets sent to dongle */ -	unsigned long tx_packets;  	/* Multicast data packets sent to dongle */  	unsigned long tx_multicast; -	/* Errors in sending data to dongle */ -	unsigned long tx_errors; -	/* Control packets sent to dongle */ -	unsigned long tx_ctlpkts; -	/* Errors sending control frames to dongle */ -	unsigned long tx_ctlerrs; -	/* Packets sent up the network interface */ -	unsigned long rx_packets; -	/* Multicast packets sent up the network interface */ -	unsigned long rx_multicast; -	/* Errors processing rx data packets */ -	unsigned long rx_errors; -	/* Control frames processed from dongle */ -	unsigned long rx_ctlpkts; - -	/* Errors in processing rx control frames */ -	unsigned long rx_ctlerrs; -	/* Packets dropped locally (no memory) */ -	unsigned long rx_dropped;  	/* Packets flushed due to unscheduled sendup thread */  	unsigned long rx_flushed;  	/* Number of times dpc scheduled by watchdog timer */  	unsigned long wd_dpc_sched; -	/* Number of packets where header read-ahead was used. */ -	unsigned long rx_readahead_cnt; -	/* Number of tx packets we had to realloc for headroom */ -	unsigned long tx_realloc;  	/* Number of flow control pkts recvd */  	unsigned long fc_packets;  	/* Last error return */  	int bcmerror; -	uint tickcnt;  	/* Last error from dongle */  	int dongle_error; @@ -664,6 +605,14 @@ struct brcmf_pub {  	u8 country_code[BRCM_CNTRY_BUF_SZ];  	char eventmask[BRCMF_EVENTING_MASK_LEN]; +	struct brcmf_if *iflist[BRCMF_MAX_IFS]; + +	struct mutex proto_block; + +	struct work_struct setmacaddr_work; +	struct work_struct multicast_work; +	u8 macvalue[ETH_ALEN]; +	atomic_t pend_8021x_cnt;  };  struct brcmf_if_event { @@ -683,67 +632,33 @@ extern const struct bcmevent_name bcmevent_names[];  extern uint brcmf_c_mkiovar(char *name, char *data, uint datalen,  			  char *buf, uint len); -/* Indication from bus module regarding presence/insertion of dongle. - * 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 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 *ndev);  extern s32 brcmf_exec_dcmd(struct net_device *dev, u32 cmd, void *arg, u32 len); -/* Indication from bus module regarding removal/absence of dongle */ -extern void brcmf_detach(struct brcmf_pub *drvr); - -/* Indication from bus module to change flow-control state */ -extern void brcmf_txflowcontrol(struct brcmf_pub *drvr, int ifidx, bool on); - -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 brcmf_rx_frame(struct brcmf_pub *drvr, int ifidx, -			 struct sk_buff *rxp, int numpkt); -  /* Return pointer to interface name */  extern char *brcmf_ifname(struct brcmf_pub *drvr, int idx); -/* Notify tx completion */ -extern void brcmf_txcomplete(struct brcmf_pub *drvr, struct sk_buff *txp, -			     bool success); -  /* Query dongle */  extern int brcmf_proto_cdc_query_dcmd(struct brcmf_pub *drvr, int ifidx,  				       uint cmd, void *buf, uint len); -/* OS independent layer functions */ -extern int brcmf_os_proto_block(struct brcmf_pub *drvr); -extern int brcmf_os_proto_unblock(struct brcmf_pub *drvr);  #ifdef BCMDBG  extern int brcmf_write_to_file(struct brcmf_pub *drvr, const u8 *buf, int size);  #endif				/* BCMDBG */ -extern int brcmf_ifname2idx(struct brcmf_info *drvr_priv, char *name); -extern int brcmf_c_host_event(struct brcmf_info *drvr_priv, int *idx, +extern int brcmf_ifname2idx(struct brcmf_pub *drvr, char *name); +extern int brcmf_c_host_event(struct brcmf_pub *drvr, int *idx,  			      void *pktdata, struct brcmf_event_msg *,  			      void **data_ptr); -extern void brcmf_c_init(void); - -extern int brcmf_add_if(struct brcmf_info *drvr_priv, int ifidx, -			struct net_device *ndev, char *name, u8 *mac_addr, -			u32 flags, u8 bssidx); -extern void brcmf_del_if(struct brcmf_info *drvr_priv, int ifidx); +extern void brcmf_del_if(struct brcmf_pub *drvr, int ifidx);  /* Send packet to dongle via data channel */  extern int brcmf_sendpkt(struct brcmf_pub *drvr, int ifidx,\  			 struct sk_buff *pkt); -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); @@ -752,25 +667,4 @@ extern void brcmf_c_pktfilter_offload_enable(struct brcmf_pub *drvr, char *arg,  #define BRCMF_DCMD_MEDLEN	1536	/* "med" cmd buffer required */  #define	BRCMF_DCMD_MAXLEN	8192	/* max length cmd buffer required */ -/* 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 - -/* Enter idle immediately (no timeout) */ -#define BRCMF_IDLE_IMMEDIATE	(-1) -#define BRCMF_IDLE_ACTIVE	0	/* Do not request any SD clock change -				 when idle */ -#define BRCMF_IDLE_INTERVAL	1 -  #endif				/* _BRCMF_H_ */  |