]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/staging/brcm80211/sys/wlc_mac80211.h
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / drivers / staging / brcm80211 / sys / wlc_mac80211.h
index 6a77591234b74f8b2aad944a4f9b864bfbf9f4ca..5df996b7891153a72960d62efb0c2114016ddc8b 100644 (file)
 #ifndef _wlc_h_
 #define _wlc_h_
 
-#include <wlc_types.h>
-
-#include <wl_dbg.h>
 #include <wlioctl.h>
-#include <wlc_event.h>
 #include <wlc_phy_hal.h>
 #include <wlc_channel.h>
-#ifdef WLC_SPLIT
-#include <bcm_rpc.h>
-#endif
-
 #include <wlc_bsscfg.h>
-
 #include <wlc_scb.h>
 
 #define MA_WINDOW_SZ           8       /* moving average window size */
@@ -220,15 +211,11 @@ extern const u8 prio2fifo[];
  * (some platforms return all 0).
  * If clocks are present, call the sb routine which will figure out if the device is removed.
  */
-#ifdef WLC_HIGH_ONLY
-#define DEVICEREMOVED(wlc)     (!wlc->device_present)
-#else
 #define DEVICEREMOVED(wlc)      \
        ((wlc->hw->clk) ?   \
        ((R_REG(wlc->hw->osh, &wlc->hw->regs->maccontrol) & \
        (MCTL_PSM_JMP_0 | MCTL_IHR_EN)) != MCTL_IHR_EN) : \
        (si_deviceremoved(wlc->hw->sih)))
-#endif                         /* WLC_HIGH_ONLY */
 
 #define WLCWLUNIT(wlc)         ((wlc)->pub->unit)
 
@@ -315,22 +302,20 @@ typedef struct wlc_stf {
 /*
  * core state (mac)
  */
-typedef struct wlccore {
-#ifdef WLC_LOW
+struct wlccore {
        uint coreidx;           /* # sb enumerated core */
 
        /* fifo */
        uint *txavail[NFIFO];   /* # tx descriptors available */
        s16 txpktpend[NFIFO];   /* tx admission control */
-#endif                         /* WLC_LOW */
 
        macstat_t *macstat_snapshot;    /* mac hw prev read values */
-} wlccore_t;
+};
 
 /*
  * band state (phy+ana+radio)
  */
-typedef struct wlcband {
+struct wlcband {
        int bandtype;           /* WLC_BAND_2G, WLC_BAND_5G */
        uint bandunit;          /* bandstate[] index */
 
@@ -359,13 +344,13 @@ typedef struct wlcband {
        u16 CWmin;              /* The minimum size of contention window, in unit of aSlotTime */
        u16 CWmax;              /* The maximum size of contention window, in unit of aSlotTime */
        u16 bcntsfoff;  /* beacon tsf offset */
-} wlcband_t;
+};
 
 /* generic function callback takes just one arg */
 typedef void (*cb_fn_t) (void *);
 
 /* tx completion callback takes 3 args */
-typedef void (*pkcb_fn_t) (wlc_info_t *wlc, uint txstatus, void *arg);
+typedef void (*pkcb_fn_t) (struct wlc_info *wlc, uint txstatus, void *arg);
 
 typedef struct pkt_cb {
        pkcb_fn_t fn;           /* function to call when tx frame completes */
@@ -398,14 +383,14 @@ typedef struct dumpcb_s {
 
 /* virtual interface */
 struct wlc_if {
-       wlc_if_t *next;
+       struct wlc_if *next;
        u8 type;                /* WLC_IFTYPE_BSS or WLC_IFTYPE_WDS */
        u8 index;               /* assigned in wl_add_if(), index of the wlif if any,
                                 * not necessarily corresponding to bsscfg._idx or
                                 * AID2PVBMAP(scb).
                                 */
        u8 flags;               /* flags for the interface */
-       wl_if_t *wlif;          /* pointer to wlif */
+       struct wl_if *wlif;             /* pointer to wlif */
        struct wlc_txq_info *qi;        /* pointer to associated tx queue */
        union {
                struct scb *scb;        /* pointer to scb if WLC_IFTYPE_WDS */
@@ -416,7 +401,6 @@ struct wlc_if {
 /* flags for the interface */
 #define WLC_IF_LINKED          0x02    /* this interface is linked to a wl_if */
 
-#ifdef WLC_LOW
 typedef struct wlc_hwband {
        int bandtype;           /* WLC_BAND_2G, WLC_BAND_5G */
        uint bandunit;          /* bandstate[] index */
@@ -433,20 +417,15 @@ typedef struct wlc_hwband {
        wlc_phy_t *pi;          /* pointer to phy specific information */
        bool abgphy_encore;
 } wlc_hwband_t;
-#endif                         /* WLC_LOW */
 
 struct wlc_hw_info {
-#ifdef WLC_SPLIT
-       rpc_info_t *rpc;        /* Handle to RPC module */
-#endif
-       osl_t *osh;             /* pointer to os handle */
+       struct osl_info *osh;           /* pointer to os handle */
        bool _piomode;          /* true if pio mode */
-       wlc_info_t *wlc;
+       struct wlc_info *wlc;
 
        /* fifo */
-       hnddma_t *di[NFIFO];    /* hnddma handles, per fifo */
+       struct hnddma_pub *di[NFIFO];   /* hnddma handles, per fifo */
 
-#ifdef WLC_LOW
        uint unit;              /* device instance number */
 
        /* version info */
@@ -497,31 +476,21 @@ struct wlc_hw_info {
        bool forcefastclk;      /* true if the h/w is forcing the use of fast clk */
        bool clk;               /* core is out of reset and has clock */
        bool sbclk;             /* sb has clock */
-       bmac_pmq_t *bmac_pmq;   /*  bmac PM states derived from ucode PMQ */
+       struct bmac_pmq *bmac_pmq; /*  bmac PM states derived from ucode PMQ */
        bool phyclk;            /* phy is out of reset and has clock */
        bool dma_lpbk;          /* core is in DMA loopback */
 
-#ifdef BCMSDIO
-       void *sdh;
-#endif
        bool ucode_loaded;      /* true after ucode downloaded */
 
-#ifdef WLC_LOW_ONLY
-       struct wl_timer *wdtimer;       /* timer for watchdog routine */
-       struct ether_addr orig_etheraddr;       /* original hw ethernet address */
-       u16 rpc_dngl_agg;       /* rpc agg control for dongle */
-       u32 mem_required_def;   /* memory required to replenish RX DMA ring */
-       u32 mem_required_lower; /* memory required with lower RX bound */
-       u32 mem_required_least; /* minimum memory requirement to handle RX */
-
-#endif                         /* WLC_LOW_ONLY */
 
        u8 hw_stf_ss_opmode;    /* STF single stream operation mode */
        u8 antsel_type; /* Type of boardlevel mimo antenna switch-logic
                                 * 0 = N/A, 1 = 2x4 board, 2 = 2x3 CB2 board
                                 */
-       u32 antsel_avail;       /* put antsel_info_t here if more info is needed */
-#endif                         /* WLC_LOW */
+       u32 antsel_avail;       /*
+                                * put struct antsel_info here if more info is
+                                * needed
+                                */
 };
 
 /* TX Queue information
@@ -541,15 +510,12 @@ typedef struct wlc_txq_info {
  * Principal common (os-independent) software data structure.
  */
 struct wlc_info {
-       wlc_pub_t *pub;         /* pointer to wlc public state */
-       osl_t *osh;             /* pointer to os handle */
+       struct wlc_pub *pub;            /* pointer to wlc public state */
+       struct osl_info *osh;           /* pointer to os handle */
        struct wl_info *wl;     /* pointer to os-specific private state */
        d11regs_t *regs;        /* pointer to device registers */
 
-       wlc_hw_info_t *hw;      /* HW related state used primarily by BMAC */
-#ifdef WLC_SPLIT
-       rpc_info_t *rpc;        /* Handle to RPC module */
-#endif
+       struct wlc_hw_info *hw; /* HW related state used primarily by BMAC */
 
        /* clock */
        int clkreq_override;    /* setting for clkreq for PCIE : Auto, 0, 1 */
@@ -566,10 +532,11 @@ struct wlc_info {
        bool clk;               /* core is out of reset and has clock */
 
        /* multiband */
-       wlccore_t *core;        /* pointer to active io core */
-       wlcband_t *band;        /* pointer to active per-band state */
-       wlccore_t *corestate;   /* per-core state (one per hw core) */
-       wlcband_t *bandstate[MAXBANDS]; /* per-band state (one per phy/radio) */
+       struct wlccore *core;   /* pointer to active io core */
+       struct wlcband *band;   /* pointer to active per-band state */
+       struct wlccore *corestate;      /* per-core state (one per hw core) */
+       /* per-band state (one per phy/radio): */
+       struct wlcband *bandstate[MAXBANDS];
 
        bool war16165;          /* PCI slow clock 16165 war flag */
 
@@ -584,15 +551,9 @@ struct wlc_info {
        s8 txpwr_local_max;     /* regulatory local txpwr max */
        u8 txpwr_local_constraint;      /* local power contraint in dB */
 
-#ifdef WLC_HIGH_ONLY
-       rpctx_info_t *rpctx;    /* RPC TX module */
-       bool reset_bmac_pending;        /* bmac reset is in progressing */
-       u32 rpc_agg;            /* host agg: bit 16-31, bmac agg: bit 0-15 */
-       u32 rpc_msglevel;       /* host rpc: bit 16-31, bmac rpc: bit 0-15 */
-#endif
 
-       ampdu_info_t *ampdu;    /* ampdu module handler */
-       antsel_info_t *asi;     /* antsel module handler */
+       struct ampdu_info *ampdu;       /* ampdu module handler */
+       struct antsel_info *asi;        /* antsel module handler */
        wlc_cm_info_t *cmi;     /* channel manager module handler */
 
        void *btparam;          /* bus type specific cookie */
@@ -792,8 +753,6 @@ struct wlc_info {
        ac_bitmap_t apsd_trigger_ac;    /* Permissible Acess Category in which APSD Null
                                         * Trigger frames can be send
                                         */
-       wlc_ap_info_t *ap;
-
        u8 htphy_membership;    /* HT PHY membership */
 
        bool _regulatory_domain;        /* 802.11d enabled? */
@@ -811,7 +770,7 @@ struct wlc_info {
 
        u16 next_bsscfg_ID;
 
-       wlc_if_t *wlcif_list;   /* linked list of wlc_if structs */
+       struct wlc_if *wlcif_list;      /* linked list of wlc_if structs */
        wlc_txq_info_t *active_queue;   /* txq for the currently active transmit context */
        u32 mpc_dur;            /* total time (ms) in mpc mode except for the
                                 * portion since radio is turned off last time
@@ -825,8 +784,8 @@ struct wlc_info {
 
 /* antsel module specific state */
 struct antsel_info {
-       wlc_info_t *wlc;        /* pointer to main wlc structure */
-       wlc_pub_t *pub;         /* pointer to public fn */
+       struct wlc_info *wlc;   /* pointer to main wlc structure */
+       struct wlc_pub *pub;            /* pointer to public fn */
        u8 antsel_type; /* Type of boardlevel mimo antenna switch-logic
                                 * 0 = N/A, 1 = 2x4 board, 2 = 2x3 CB2 board
                                 */
@@ -842,23 +801,9 @@ struct antsel_info {
 #define IS_MBAND_UNLOCKED(wlc) \
        ((NBANDS(wlc) > 1) && !(wlc)->bandlocked)
 
-#ifdef WLC_LOW
 #define WLC_BAND_PI_RADIO_CHANSPEC wlc_phy_chanspec_get(wlc->band->pi)
-#else
-#define WLC_BAND_PI_RADIO_CHANSPEC (wlc->chanspec)
-#endif
 
 /* sum the individual fifo tx pending packet counts */
-#if defined(WLC_HIGH_ONLY)
-#define TXPKTPENDTOT(wlc)              (wlc_rpctx_txpktpend((wlc)->rpctx, 0, true))
-#define TXPKTPENDGET(wlc, fifo)                (wlc_rpctx_txpktpend((wlc)->rpctx, (fifo), false))
-#define TXPKTPENDINC(wlc, fifo, val)   (wlc_rpctx_txpktpendinc((wlc)->rpctx, (fifo), (val)))
-#define TXPKTPENDDEC(wlc, fifo, val)   (wlc_rpctx_txpktpenddec((wlc)->rpctx, (fifo), (val)))
-#define TXPKTPENDCLR(wlc, fifo)                (wlc_rpctx_txpktpendclr((wlc)->rpctx, (fifo)))
-#define TXAVAIL(wlc, fifo)             (wlc_rpctx_txavail((wlc)->rpctx, (fifo)))
-#define GETNEXTTXP(wlc, _queue)                (wlc_rpctx_getnexttxp((wlc)->rpctx, (_queue)))
-
-#else
 #define        TXPKTPENDTOT(wlc) ((wlc)->core->txpktpend[0] + (wlc)->core->txpktpend[1] + \
        (wlc)->core->txpktpend[2] + (wlc)->core->txpktpend[3])
 #define TXPKTPENDGET(wlc, fifo)                ((wlc)->core->txpktpend[(fifo)])
@@ -868,48 +813,49 @@ struct antsel_info {
 #define TXAVAIL(wlc, fifo)             (*(wlc)->core->txavail[(fifo)])
 #define GETNEXTTXP(wlc, _queue)                                                                \
                dma_getnexttxp((wlc)->hw->di[(_queue)], HNDDMA_RANGE_TRANSMITTED)
-#endif                         /* WLC_HIGH_ONLY */
 
 #define WLC_IS_MATCH_SSID(wlc, ssid1, ssid2, len1, len2) \
-       ((len1 == len2) && !bcmp(ssid1, ssid2, len1))
-
-/* API shared by both WLC_HIGH and WLC_LOW driver */
-extern void wlc_high_dpc(wlc_info_t *wlc, u32 macintstatus);
-extern void wlc_fatal_error(wlc_info_t *wlc);
-extern void wlc_bmac_rpc_watchdog(wlc_info_t *wlc);
-extern void wlc_recv(wlc_info_t *wlc, void *p);
-extern bool wlc_dotxstatus(wlc_info_t *wlc, tx_status_t *txs, u32 frm_tx2);
-extern void wlc_txfifo(wlc_info_t *wlc, uint fifo, void *p, bool commit,
-                      s8 txpktpend);
-extern void wlc_txfifo_complete(wlc_info_t *wlc, uint fifo, s8 txpktpend);
-extern void wlc_info_init(wlc_info_t *wlc, int unit);
+       ((len1 == len2) && !memcmp(ssid1, ssid2, len1))
+
+extern void wlc_high_dpc(struct wlc_info *wlc, u32 macintstatus);
+extern void wlc_fatal_error(struct wlc_info *wlc);
+extern void wlc_bmac_rpc_watchdog(struct wlc_info *wlc);
+extern void wlc_recv(struct wlc_info *wlc, struct sk_buff *p);
+extern bool wlc_dotxstatus(struct wlc_info *wlc, tx_status_t *txs, u32 frm_tx2);
+extern void wlc_txfifo(struct wlc_info *wlc, uint fifo, struct sk_buff *p,
+                      bool commit, s8 txpktpend);
+extern void wlc_txfifo_complete(struct wlc_info *wlc, uint fifo, s8 txpktpend);
+extern void wlc_txq_enq(void *ctx, struct scb *scb, struct sk_buff *sdu,
+                       uint prec);
+extern void wlc_info_init(struct wlc_info *wlc, int unit);
 extern void wlc_print_txstatus(tx_status_t *txs);
-extern int wlc_xmtfifo_sz_get(wlc_info_t *wlc, uint fifo, uint *blocks);
-extern void wlc_write_template_ram(wlc_info_t *wlc, int offset, int len,
+extern int wlc_xmtfifo_sz_get(struct wlc_info *wlc, uint fifo, uint *blocks);
+extern void wlc_write_template_ram(struct wlc_info *wlc, int offset, int len,
                                   void *buf);
-extern void wlc_write_hw_bcntemplates(wlc_info_t *wlc, void *bcn, int len,
+extern void wlc_write_hw_bcntemplates(struct wlc_info *wlc, void *bcn, int len,
                                      bool both);
 #if defined(BCMDBG)
-extern void wlc_get_rcmta(wlc_info_t *wlc, int idx, struct ether_addr *addr);
+extern void wlc_get_rcmta(struct wlc_info *wlc, int idx,
+                         struct ether_addr *addr);
 #endif
-extern void wlc_set_rcmta(wlc_info_t *wlc, int idx,
+extern void wlc_set_rcmta(struct wlc_info *wlc, int idx,
                          const struct ether_addr *addr);
-extern void wlc_set_addrmatch(wlc_info_t *wlc, int match_reg_offset,
+extern void wlc_set_addrmatch(struct wlc_info *wlc, int match_reg_offset,
                              const struct ether_addr *addr);
-extern void wlc_read_tsf(wlc_info_t *wlc, u32 *tsf_l_ptr,
+extern void wlc_read_tsf(struct wlc_info *wlc, u32 *tsf_l_ptr,
                         u32 *tsf_h_ptr);
-extern void wlc_set_cwmin(wlc_info_t *wlc, u16 newmin);
-extern void wlc_set_cwmax(wlc_info_t *wlc, u16 newmax);
-extern void wlc_fifoerrors(wlc_info_t *wlc);
-extern void wlc_pllreq(wlc_info_t *wlc, bool set, mbool req_bit);
-extern void wlc_reset_bmac_done(wlc_info_t *wlc);
-extern void wlc_protection_upd(wlc_info_t *wlc, uint idx, int val);
-extern void wlc_hwtimer_gptimer_set(wlc_info_t *wlc, uint us);
-extern void wlc_hwtimer_gptimer_abort(wlc_info_t *wlc);
+extern void wlc_set_cwmin(struct wlc_info *wlc, u16 newmin);
+extern void wlc_set_cwmax(struct wlc_info *wlc, u16 newmax);
+extern void wlc_fifoerrors(struct wlc_info *wlc);
+extern void wlc_pllreq(struct wlc_info *wlc, bool set, mbool req_bit);
+extern void wlc_reset_bmac_done(struct wlc_info *wlc);
+extern void wlc_protection_upd(struct wlc_info *wlc, uint idx, int val);
+extern void wlc_hwtimer_gptimer_set(struct wlc_info *wlc, uint us);
+extern void wlc_hwtimer_gptimer_abort(struct wlc_info *wlc);
 
 #if defined(BCMDBG)
 extern void wlc_print_rxh(d11rxhdr_t *rxh);
-extern void wlc_print_hdrs(wlc_info_t *wlc, const char *prefix, u8 *frame,
+extern void wlc_print_hdrs(struct wlc_info *wlc, const char *prefix, u8 *frame,
                           d11txh_t *txh, d11rxhdr_t *rxh, uint len);
 extern void wlc_print_txdesc(d11txh_t *txh);
 #endif
@@ -917,124 +863,126 @@ extern void wlc_print_txdesc(d11txh_t *txh);
 extern void wlc_print_dot11_mac_hdr(u8 *buf, int len);
 #endif
 
-#ifdef WLC_LOW
-extern void wlc_setxband(wlc_hw_info_t *wlc_hw, uint bandunit);
-extern void wlc_coredisable(wlc_hw_info_t *wlc_hw);
-#endif
+extern void wlc_setxband(struct wlc_hw_info *wlc_hw, uint bandunit);
+extern void wlc_coredisable(struct wlc_hw_info *wlc_hw);
 
-extern bool wlc_valid_rate(wlc_info_t *wlc, ratespec_t rate, int band,
+extern bool wlc_valid_rate(struct wlc_info *wlc, ratespec_t rate, int band,
                           bool verbose);
-extern void wlc_ap_upd(wlc_info_t *wlc);
+extern void wlc_ap_upd(struct wlc_info *wlc);
 
 /* helper functions */
-extern void wlc_shm_ssid_upd(wlc_info_t *wlc, wlc_bsscfg_t *cfg);
-extern int wlc_set_gmode(wlc_info_t *wlc, u8 gmode, bool config);
+extern void wlc_shm_ssid_upd(struct wlc_info *wlc, wlc_bsscfg_t *cfg);
+extern int wlc_set_gmode(struct wlc_info *wlc, u8 gmode, bool config);
 
-extern void wlc_mac_bcn_promisc_change(wlc_info_t *wlc, bool promisc);
-extern void wlc_mac_bcn_promisc(wlc_info_t *wlc);
-extern void wlc_mac_promisc(wlc_info_t *wlc);
-extern void wlc_txflowcontrol(wlc_info_t *wlc, wlc_txq_info_t *qi, bool on,
+extern void wlc_mac_bcn_promisc_change(struct wlc_info *wlc, bool promisc);
+extern void wlc_mac_bcn_promisc(struct wlc_info *wlc);
+extern void wlc_mac_promisc(struct wlc_info *wlc);
+extern void wlc_txflowcontrol(struct wlc_info *wlc, wlc_txq_info_t *qi, bool on,
                              int prio);
-extern void wlc_txflowcontrol_override(wlc_info_t *wlc, wlc_txq_info_t *qi,
+extern void wlc_txflowcontrol_override(struct wlc_info *wlc, wlc_txq_info_t *qi,
                                       bool on, uint override);
-extern bool wlc_txflowcontrol_prio_isset(wlc_info_t *wlc, wlc_txq_info_t *qi,
-                                        int prio);
-extern void wlc_send_q(wlc_info_t *wlc, wlc_txq_info_t *qi);
-extern int wlc_prep_pdu(wlc_info_t *wlc, void *pdu, uint *fifo);
+extern bool wlc_txflowcontrol_prio_isset(struct wlc_info *wlc,
+                                        wlc_txq_info_t *qi, int prio);
+extern void wlc_send_q(struct wlc_info *wlc, wlc_txq_info_t *qi);
+extern int wlc_prep_pdu(struct wlc_info *wlc, struct sk_buff *pdu, uint *fifo);
 
-extern u16 wlc_calc_lsig_len(wlc_info_t *wlc, ratespec_t ratespec,
+extern u16 wlc_calc_lsig_len(struct wlc_info *wlc, ratespec_t ratespec,
                                uint mac_len);
-extern ratespec_t wlc_rspec_to_rts_rspec(wlc_info_t *wlc, ratespec_t rspec,
+extern ratespec_t wlc_rspec_to_rts_rspec(struct wlc_info *wlc, ratespec_t rspec,
                                         bool use_rspec, u16 mimo_ctlchbw);
-extern u16 wlc_compute_rtscts_dur(wlc_info_t *wlc, bool cts_only,
+extern u16 wlc_compute_rtscts_dur(struct wlc_info *wlc, bool cts_only,
                                     ratespec_t rts_rate, ratespec_t frame_rate,
                                     u8 rts_preamble_type,
                                     u8 frame_preamble_type, uint frame_len,
                                     bool ba);
 
-extern void wlc_tbtt(wlc_info_t *wlc, d11regs_t *regs);
+extern void wlc_tbtt(struct wlc_info *wlc, d11regs_t *regs);
 
 #if defined(BCMDBG)
-extern void wlc_dump_ie(wlc_info_t *wlc, bcm_tlv_t *ie, struct bcmstrbuf *b);
+extern void wlc_dump_ie(struct wlc_info *wlc, bcm_tlv_t *ie,
+                       struct bcmstrbuf *b);
 #endif
 
-extern bool wlc_ps_check(wlc_info_t *wlc);
-extern void wlc_reprate_init(wlc_info_t *wlc);
+extern bool wlc_ps_check(struct wlc_info *wlc);
+extern void wlc_reprate_init(struct wlc_info *wlc);
 extern void wlc_bsscfg_reprate_init(wlc_bsscfg_t *bsscfg);
 extern void wlc_uint64_sub(u32 *a_high, u32 *a_low, u32 b_high,
                           u32 b_low);
 extern u32 wlc_calc_tbtt_offset(u32 bi, u32 tsf_h, u32 tsf_l);
 
 /* Shared memory access */
-extern void wlc_write_shm(wlc_info_t *wlc, uint offset, u16 v);
-extern u16 wlc_read_shm(wlc_info_t *wlc, uint offset);
-extern void wlc_set_shm(wlc_info_t *wlc, uint offset, u16 v, int len);
-extern void wlc_copyto_shm(wlc_info_t *wlc, uint offset, const void *buf,
+extern void wlc_write_shm(struct wlc_info *wlc, uint offset, u16 v);
+extern u16 wlc_read_shm(struct wlc_info *wlc, uint offset);
+extern void wlc_set_shm(struct wlc_info *wlc, uint offset, u16 v, int len);
+extern void wlc_copyto_shm(struct wlc_info *wlc, uint offset, const void *buf,
                           int len);
-extern void wlc_copyfrom_shm(wlc_info_t *wlc, uint offset, void *buf, int len);
+extern void wlc_copyfrom_shm(struct wlc_info *wlc, uint offset, void *buf,
+                            int len);
 
-extern void wlc_update_beacon(wlc_info_t *wlc);
-extern void wlc_bss_update_beacon(wlc_info_t *wlc, struct wlc_bsscfg *bsscfg);
+extern void wlc_update_beacon(struct wlc_info *wlc);
+extern void wlc_bss_update_beacon(struct wlc_info *wlc,
+                                 struct wlc_bsscfg *bsscfg);
 
-extern void wlc_update_probe_resp(wlc_info_t *wlc, bool suspend);
-extern void wlc_bss_update_probe_resp(wlc_info_t *wlc, wlc_bsscfg_t *cfg,
+extern void wlc_update_probe_resp(struct wlc_info *wlc, bool suspend);
+extern void wlc_bss_update_probe_resp(struct wlc_info *wlc, wlc_bsscfg_t *cfg,
                                      bool suspend);
 
-extern bool wlc_ismpc(wlc_info_t *wlc);
-extern bool wlc_is_non_delay_mpc(wlc_info_t *wlc);
-extern void wlc_radio_mpc_upd(wlc_info_t *wlc);
-extern bool wlc_prec_enq(wlc_info_t *wlc, struct pktq *q, void *pkt, int prec);
-extern bool wlc_prec_enq_head(wlc_info_t *wlc, struct pktq *q, void *pkt,
-                             int prec, bool head);
-extern u16 wlc_phytxctl1_calc(wlc_info_t *wlc, ratespec_t rspec);
-extern void wlc_compute_plcp(wlc_info_t *wlc, ratespec_t rate, uint length,
+extern bool wlc_ismpc(struct wlc_info *wlc);
+extern bool wlc_is_non_delay_mpc(struct wlc_info *wlc);
+extern void wlc_radio_mpc_upd(struct wlc_info *wlc);
+extern bool wlc_prec_enq(struct wlc_info *wlc, struct pktq *q, void *pkt,
+                        int prec);
+extern bool wlc_prec_enq_head(struct wlc_info *wlc, struct pktq *q,
+                             struct sk_buff *pkt, int prec, bool head);
+extern u16 wlc_phytxctl1_calc(struct wlc_info *wlc, ratespec_t rspec);
+extern void wlc_compute_plcp(struct wlc_info *wlc, ratespec_t rate, uint length,
                             u8 *plcp);
-extern uint wlc_calc_frame_time(wlc_info_t *wlc, ratespec_t ratespec,
+extern uint wlc_calc_frame_time(struct wlc_info *wlc, ratespec_t ratespec,
                                u8 preamble_type, uint mac_len);
 
-extern void wlc_set_chanspec(wlc_info_t *wlc, chanspec_t chanspec);
+extern void wlc_set_chanspec(struct wlc_info *wlc, chanspec_t chanspec);
 
-extern bool wlc_timers_init(wlc_info_t *wlc, int unit);
+extern bool wlc_timers_init(struct wlc_info *wlc, int unit);
 
 extern const bcm_iovar_t wlc_iovars[];
 
 extern int wlc_doiovar(void *hdl, const bcm_iovar_t *vi, u32 actionid,
                       const char *name, void *params, uint p_len, void *arg,
-                      int len, int val_size, wlc_if_t *wlcif);
+                      int len, int val_size, struct wlc_if *wlcif);
 
 #if defined(BCMDBG)
-extern void wlc_print_ies(wlc_info_t *wlc, u8 *ies, uint ies_len);
+extern void wlc_print_ies(struct wlc_info *wlc, u8 *ies, uint ies_len);
 #endif
 
-extern int wlc_set_nmode(wlc_info_t *wlc, s32 nmode);
-extern void wlc_ht_mimops_cap_update(wlc_info_t *wlc, u8 mimops_mode);
-extern void wlc_mimops_action_ht_send(wlc_info_t *wlc, wlc_bsscfg_t *bsscfg,
-                                     u8 mimops_mode);
+extern int wlc_set_nmode(struct wlc_info *wlc, s32 nmode);
+extern void wlc_ht_mimops_cap_update(struct wlc_info *wlc, u8 mimops_mode);
+extern void wlc_mimops_action_ht_send(struct wlc_info *wlc,
+                                     wlc_bsscfg_t *bsscfg, u8 mimops_mode);
 
-extern void wlc_switch_shortslot(wlc_info_t *wlc, bool shortslot);
+extern void wlc_switch_shortslot(struct wlc_info *wlc, bool shortslot);
 extern void wlc_set_bssid(wlc_bsscfg_t *cfg);
 extern void wlc_edcf_setparams(wlc_bsscfg_t *cfg, bool suspend);
-extern void wlc_wme_setparams(wlc_info_t *wlc, u16 aci, void *arg,
-                             bool suspend);
 
-extern void wlc_set_ratetable(wlc_info_t *wlc);
+extern void wlc_set_ratetable(struct wlc_info *wlc);
 extern int wlc_set_mac(wlc_bsscfg_t *cfg);
-extern void wlc_beacon_phytxctl_txant_upd(wlc_info_t *wlc,
+extern void wlc_beacon_phytxctl_txant_upd(struct wlc_info *wlc,
                                          ratespec_t bcn_rate);
-extern void wlc_mod_prb_rsp_rate_table(wlc_info_t *wlc, uint frame_len);
-extern ratespec_t wlc_lowest_basic_rspec(wlc_info_t *wlc, wlc_rateset_t *rs);
-extern u16 wlc_compute_bcntsfoff(wlc_info_t *wlc, ratespec_t rspec,
+extern void wlc_mod_prb_rsp_rate_table(struct wlc_info *wlc, uint frame_len);
+extern ratespec_t wlc_lowest_basic_rspec(struct wlc_info *wlc,
+                                        wlc_rateset_t *rs);
+extern u16 wlc_compute_bcntsfoff(struct wlc_info *wlc, ratespec_t rspec,
                                    bool short_preamble, bool phydelay);
-extern void wlc_radio_disable(wlc_info_t *wlc);
-extern void wlc_bcn_li_upd(wlc_info_t *wlc);
-
-extern int wlc_get_revision_info(wlc_info_t *wlc, void *buf, uint len);
-extern void wlc_out(wlc_info_t *wlc);
-extern void wlc_set_home_chanspec(wlc_info_t *wlc, chanspec_t chanspec);
-extern void wlc_watchdog_upd(wlc_info_t *wlc, bool tbtt);
-extern bool wlc_ps_allowed(wlc_info_t *wlc);
-extern bool wlc_stay_awake(wlc_info_t *wlc);
-extern void wlc_wme_initparams_sta(wlc_info_t *wlc, wme_param_ie_t *pe);
-
-extern void wlc_bss_list_free(wlc_info_t *wlc, wlc_bss_list_t *bss_list);
+extern void wlc_radio_disable(struct wlc_info *wlc);
+extern void wlc_bcn_li_upd(struct wlc_info *wlc);
+
+extern int wlc_get_revision_info(struct wlc_info *wlc, void *buf, uint len);
+extern void wlc_out(struct wlc_info *wlc);
+extern void wlc_set_home_chanspec(struct wlc_info *wlc, chanspec_t chanspec);
+extern void wlc_watchdog_upd(struct wlc_info *wlc, bool tbtt);
+extern bool wlc_ps_allowed(struct wlc_info *wlc);
+extern bool wlc_stay_awake(struct wlc_info *wlc);
+extern void wlc_wme_initparams_sta(struct wlc_info *wlc, wme_param_ie_t *pe);
+
+extern void wlc_bss_list_free(struct wlc_info *wlc, wlc_bss_list_t *bss_list);
+extern void wlc_ht_mimops_cap_update(struct wlc_info *wlc, u8 mimops_mode);
 #endif                         /* _wlc_h_ */