]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - drivers/net/wireless/brcm80211/brcmfmac/dhd.h
brcm80211: fmac: change function rx_frame parameter
[mirror_ubuntu-artful-kernel.git] / drivers / net / wireless / brcm80211 / brcmfmac / dhd.h
index a557971044bc2ee6a57c48fa74013b5850dd4913..027083e4fe02d4533d5f25aa01e5f94dc36c364b 100644 (file)
@@ -87,7 +87,7 @@
 #define TOE_TX_CSUM_OL         0x00000001
 #define TOE_RX_CSUM_OL         0x00000002
 
-#define        BRCMF_BSS_INFO_VERSION  108 /* curr ver of brcmf_bss_info_le 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
@@ -574,26 +574,27 @@ struct brcmf_dcmd {
 struct brcmf_bus {
        u8 type;                /* bus type */
        void *bus_priv;         /* pointer to bus private structure */
+       void *drvr;             /* pointer to driver pub structure brcmf_pub */
+       enum brcmf_bus_state state;
 };
 
 /* Forward decls for struct brcmf_pub (see below) */
 struct brcmf_sdio;             /* 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_sdio *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 */
@@ -662,6 +663,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 {
@@ -687,66 +696,63 @@ extern uint brcmf_c_mkiovar(char *name, char *data, uint datalen,
  * bus_hdrlen specifies required headroom for bus module header.
  */
 extern struct brcmf_pub *brcmf_attach(struct brcmf_sdio *bus,
-                                     uint bus_hdrlen);
+                                     uint bus_hdrlen, struct device *dev);
 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);
+extern void brcmf_detach(struct device *dev);
 
 /* Indication from bus module to change flow-control state */
-extern void brcmf_txflowcontrol(struct brcmf_pub *drvr, int ifidx, bool on);
+extern void brcmf_txflowcontrol(struct device *dev, int ifidx, bool on);
 
-extern bool brcmf_c_prec_enq(struct brcmf_pub *drvr, struct pktq *q,
+extern bool brcmf_c_prec_enq(struct device *dev, 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,
+extern void brcmf_rx_frame(struct device *dev, int ifidx,
                           struct sk_buff_head *rxlist);
-static inline void brcmf_rx_packet(struct brcmf_pub *drvr, int ifidx,
+static inline void brcmf_rx_packet(struct device *dev, int ifidx,
                                   struct sk_buff *pkt)
 {
        struct sk_buff_head q;
 
        skb_queue_head_init(&q);
        skb_queue_tail(&q, pkt);
-       brcmf_rx_frame(drvr, ifidx, &q);
+       brcmf_rx_frame(dev, ifidx, &q);
 }
 
 /* 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,
+extern void brcmf_txcomplete(struct device *dev, 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 int brcmf_add_if(struct brcmf_info *drvr_priv, int ifidx,
+extern int brcmf_add_if(struct device *dev, int ifidx,
                        char *name, u8 *mac_addr);
-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 int brcmf_bus_start(struct device *dev);
 
 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,