Merge branch 'staging-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh...
[pandora-kernel.git] / drivers / staging / brcm80211 / brcmsmac / mac80211_if.c
 
 #define __UNDEF_NO_VERSION__
 
-#include <linux/kernel.h>
 #include <linux/etherdevice.h>
-#include <linux/types.h>
-#include <linux/pci_ids.h>
-#include <linux/module.h>
 #include <linux/pci.h>
 #include <linux/sched.h>
 #include <linux/firmware.h>
 #include <linux/interrupt.h>
 #include <net/mac80211.h>
-
-#include <proto/802.11.h>
-#include <bcmdefs.h>
-#include <bcmwifi.h>
-#include <bcmutils.h>
-#include <bcmnvram.h>
-#include <pcicfg.h>
-#include <wlioctl.h>
-#include <sbhnddma.h>
-
-#include "phy/wlc_phy_int.h"
+#include <defs.h>
+#include "nicpci.h"
+#include "phy/phy_int.h"
 #include "d11.h"
-#include "wlc_types.h"
-#include "wlc_cfg.h"
-#include "phy/phy_version.h"
-#include "wlc_key.h"
-#include "wlc_channel.h"
-#include "wlc_scb.h"
-#include "wlc_pub.h"
-#include "wl_dbg.h"
-#include "wl_export.h"
-#include "wl_ucode.h"
-#include "wl_mac80211.h"
+#include "channel.h"
+#include "scb.h"
+#include "pub.h"
+#include "ucode_loader.h"
+#include "mac80211_if.h"
 
 #define N_TX_QUEUES    4 /* #tx queues on mac80211<->driver interface */
 
-static void wl_timer(unsigned long data);
-static void _wl_timer(struct wl_timer *t);
+#define LOCK(wl)       spin_lock_bh(&(wl)->lock)
+#define UNLOCK(wl)     spin_unlock_bh(&(wl)->lock)
+
+/* locking from inside brcms_isr */
+#define ISR_LOCK(wl, flags)\
+       do {\
+               spin_lock(&(wl)->isr_lock);\
+               (void)(flags); } \
+       while (0)
+
+#define ISR_UNLOCK(wl, flags)\
+       do {\
+               spin_unlock(&(wl)->isr_lock);\
+               (void)(flags); } \
+       while (0)
+
+/* locking under LOCK() to synchronize with brcms_isr */
+#define INT_LOCK(wl, flags)    spin_lock_irqsave(&(wl)->isr_lock, flags)
+#define INT_UNLOCK(wl, flags)  spin_unlock_irqrestore(&(wl)->isr_lock, flags)
+
+static void brcms_timer(unsigned long data);
+static void _brcms_timer(struct brcms_timer *t);
 
 
 static int ieee_hw_init(struct ieee80211_hw *hw);
@@ -70,22 +72,20 @@ static int wl_linux_watchdog(void *ctx);
        FIF_OTHER_BSS | \
        FIF_BCN_PRBRESP_PROMISC)
 
-static int wl_found;
+static int n_adapters_found;
 
-#define WL_DEV_IF(dev)         ((struct wl_if *)netdev_priv(dev))
-#define        WL_INFO(dev)            ((struct wl_info *)(WL_DEV_IF(dev)->wl))
-static int wl_request_fw(struct wl_info *wl, struct pci_dev *pdev);
-static void wl_release_fw(struct wl_info *wl);
+static int brcms_request_fw(struct brcms_info *wl, struct pci_dev *pdev);
+static void brcms_release_fw(struct brcms_info *wl);
 
 /* local prototypes */
-static void wl_dpc(unsigned long data);
-static irqreturn_t wl_isr(int irq, void *dev_id);
+static void brcms_dpc(unsigned long data);
+static irqreturn_t brcms_isr(int irq, void *dev_id);
 
-static int __devinit wl_pci_probe(struct pci_dev *pdev,
+static int __devinit brcms_pci_probe(struct pci_dev *pdev,
                                  const struct pci_device_id *ent);
-static void wl_remove(struct pci_dev *pdev);
-static void wl_free(struct wl_info *wl);
-static void wl_set_basic_rate(struct wl_rateset *rs, u16 rate, bool is_br);
+static void brcms_remove(struct pci_dev *pdev);
+static void brcms_free(struct brcms_info *wl);
+static void brcms_set_basic_rate(struct wl_rateset *rs, u16 rate, bool is_br);
 
 MODULE_AUTHOR("Broadcom Corporation");
 MODULE_DESCRIPTION("Broadcom 802.11n wireless LAN driver.");
@@ -93,14 +93,16 @@ MODULE_SUPPORTED_DEVICE("Broadcom 802.11n WLAN cards");
 MODULE_LICENSE("Dual BSD/GPL");
 
 /* recognized PCI IDs */
-static struct pci_device_id wl_id_table[] = {
+static DEFINE_PCI_DEVICE_TABLE(brcms_pci_id_table) = {
        {PCI_VENDOR_ID_BROADCOM, 0x4357, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},      /* 43225 2G */
        {PCI_VENDOR_ID_BROADCOM, 0x4353, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},      /* 43224 DUAL */
        {PCI_VENDOR_ID_BROADCOM, 0x4727, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},      /* 4313 DUAL */
+       /* 43224 Ven */
+       {PCI_VENDOR_ID_BROADCOM, 0x0576, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
        {0}
 };
 
-MODULE_DEVICE_TABLE(pci, wl_id_table);
+MODULE_DEVICE_TABLE(pci, brcms_pci_id_table);
 
 #ifdef BCMDBG
 static int msglevel = 0xdeadbeef;
@@ -113,88 +115,89 @@ module_param(phymsglevel, int, 0);
 #define WL_TO_HW(wl)     (wl->pub->ieee_hw)
 
 /* MAC80211 callback functions */
-static int wl_ops_start(struct ieee80211_hw *hw);
-static void wl_ops_stop(struct ieee80211_hw *hw);
-static int wl_ops_add_interface(struct ieee80211_hw *hw,
+static int brcms_ops_start(struct ieee80211_hw *hw);
+static void brcms_ops_stop(struct ieee80211_hw *hw);
+static int brcms_ops_add_interface(struct ieee80211_hw *hw,
                                struct ieee80211_vif *vif);
-static void wl_ops_remove_interface(struct ieee80211_hw *hw,
+static void brcms_ops_remove_interface(struct ieee80211_hw *hw,
                                    struct ieee80211_vif *vif);
-static int wl_ops_config(struct ieee80211_hw *hw, u32 changed);
-static void wl_ops_bss_info_changed(struct ieee80211_hw *hw,
+static int brcms_ops_config(struct ieee80211_hw *hw, u32 changed);
+static void brcms_ops_bss_info_changed(struct ieee80211_hw *hw,
                                    struct ieee80211_vif *vif,
                                    struct ieee80211_bss_conf *info,
                                    u32 changed);
-static void wl_ops_configure_filter(struct ieee80211_hw *hw,
+static void brcms_ops_configure_filter(struct ieee80211_hw *hw,
                                    unsigned int changed_flags,
                                    unsigned int *total_flags, u64 multicast);
-static int wl_ops_set_tim(struct ieee80211_hw *hw, struct ieee80211_sta *sta,
+static int brcms_ops_set_tim(struct ieee80211_hw *hw, struct ieee80211_sta *sta,
                          bool set);
-static void wl_ops_sw_scan_start(struct ieee80211_hw *hw);
-static void wl_ops_sw_scan_complete(struct ieee80211_hw *hw);
-static void wl_ops_set_tsf(struct ieee80211_hw *hw, u64 tsf);
-static int wl_ops_get_stats(struct ieee80211_hw *hw,
+static void brcms_ops_sw_scan_start(struct ieee80211_hw *hw);
+static void brcms_ops_sw_scan_complete(struct ieee80211_hw *hw);
+static void brcms_ops_set_tsf(struct ieee80211_hw *hw, u64 tsf);
+static int brcms_ops_get_stats(struct ieee80211_hw *hw,
                            struct ieee80211_low_level_stats *stats);
-static void wl_ops_sta_notify(struct ieee80211_hw *hw,
+static void brcms_ops_sta_notify(struct ieee80211_hw *hw,
                              struct ieee80211_vif *vif,
                              enum sta_notify_cmd cmd,
                              struct ieee80211_sta *sta);
-static int wl_ops_conf_tx(struct ieee80211_hw *hw, u16 queue,
+static int brcms_ops_conf_tx(struct ieee80211_hw *hw, u16 queue,
                          const struct ieee80211_tx_queue_params *params);
-static u64 wl_ops_get_tsf(struct ieee80211_hw *hw);
-static int wl_ops_sta_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
+static u64 brcms_ops_get_tsf(struct ieee80211_hw *hw);
+static int brcms_ops_sta_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
                      struct ieee80211_sta *sta);
-static int wl_ops_sta_remove(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
-                        struct ieee80211_sta *sta);
-static int wl_ops_ampdu_action(struct ieee80211_hw *hw,
+static int brcms_ops_sta_remove(struct ieee80211_hw *hw,
+                               struct ieee80211_vif *vif,
+                               struct ieee80211_sta *sta);
+static int brcms_ops_ampdu_action(struct ieee80211_hw *hw,
                               struct ieee80211_vif *vif,
                               enum ieee80211_ampdu_mlme_action action,
                               struct ieee80211_sta *sta, u16 tid, u16 *ssn,
                               u8 buf_size);
-static void wl_ops_rfkill_poll(struct ieee80211_hw *hw);
-static void wl_ops_flush(struct ieee80211_hw *hw, bool drop);
+static void brcms_ops_rfkill_poll(struct ieee80211_hw *hw);
+static void brcms_ops_flush(struct ieee80211_hw *hw, bool drop);
 
-static void wl_ops_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
+static void brcms_ops_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
 {
-       struct wl_info *wl = hw->priv;
+       struct brcms_info *wl = hw->priv;
 
-       WL_LOCK(wl);
+       LOCK(wl);
        if (!wl->pub->up) {
                wiphy_err(wl->wiphy, "ops->tx called while down\n");
                kfree_skb(skb);
                goto done;
        }
-       wlc_sendpkt_mac80211(wl->wlc, skb, hw);
+       brcms_c_sendpkt_mac80211(wl->wlc, skb, hw);
  done:
-       WL_UNLOCK(wl);
+       UNLOCK(wl);
 }
 
-static int wl_ops_start(struct ieee80211_hw *hw)
+static int brcms_ops_start(struct ieee80211_hw *hw)
 {
-       struct wl_info *wl = hw->priv;
+       struct brcms_info *wl = hw->priv;
        bool blocked;
        /*
          struct ieee80211_channel *curchan = hw->conf.channel;
        */
 
        ieee80211_wake_queues(hw);
-       WL_LOCK(wl);
-       blocked = wl_rfkill_set_hw_state(wl);
-       WL_UNLOCK(wl);
+       LOCK(wl);
+       blocked = brcms_rfkill_set_hw_state(wl);
+       UNLOCK(wl);
        if (!blocked)
                wiphy_rfkill_stop_polling(wl->pub->ieee_hw->wiphy);
 
        return 0;
 }
 
-static void wl_ops_stop(struct ieee80211_hw *hw)
+static void brcms_ops_stop(struct ieee80211_hw *hw)
 {
        ieee80211_stop_queues(hw);
 }
 
 static int
-wl_ops_add_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
+brcms_ops_add_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
 {
-       struct wl_info *wl;
+       struct brcms_info *wl;
        int err;
 
        /* Just STA for now */
@@ -209,28 +212,28 @@ wl_ops_add_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
        }
 
        wl = HW_TO_WL(hw);
-       WL_LOCK(wl);
-       err = wl_up(wl);
-       WL_UNLOCK(wl);
+       LOCK(wl);
+       err = brcms_up(wl);
+       UNLOCK(wl);
 
        if (err != 0) {
-               wiphy_err(hw->wiphy, "%s: wl_up() returned %d\n", __func__,
+               wiphy_err(hw->wiphy, "%s: brcms_up() returned %d\n", __func__,
                          err);
        }
        return err;
 }
 
 static void
-wl_ops_remove_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
+brcms_ops_remove_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
 {
-       struct wl_info *wl;
+       struct brcms_info *wl;
 
        wl = HW_TO_WL(hw);
 
        /* put driver in down state */
-       WL_LOCK(wl);
-       wl_down(wl);
-       WL_UNLOCK(wl);
+       LOCK(wl);
+       brcms_down(wl);
+       UNLOCK(wl);
 }
 
 /*
@@ -240,13 +243,13 @@ static int
 ieee_set_channel(struct ieee80211_hw *hw, struct ieee80211_channel *chan,
                 enum nl80211_channel_type type)
 {
-       struct wl_info *wl = HW_TO_WL(hw);
+       struct brcms_info *wl = HW_TO_WL(hw);
        int err = 0;
 
        switch (type) {
        case NL80211_CHAN_HT20:
        case NL80211_CHAN_NO_HT:
-               err = wlc_set(wl->wlc, WLC_SET_CHANNEL, chan->hw_value);
+               err = brcms_c_set(wl->wlc, BRCM_SET_CHANNEL, chan->hw_value);
                break;
        case NL80211_CHAN_HT40MINUS:
        case NL80211_CHAN_HT40PLUS:
@@ -261,24 +264,24 @@ ieee_set_channel(struct ieee80211_hw *hw, struct ieee80211_channel *chan,
        return err;
 }
 
-static int wl_ops_config(struct ieee80211_hw *hw, u32 changed)
+static int brcms_ops_config(struct ieee80211_hw *hw, u32 changed)
 {
        struct ieee80211_conf *conf = &hw->conf;
-       struct wl_info *wl = HW_TO_WL(hw);
+       struct brcms_info *wl = HW_TO_WL(hw);
        int err = 0;
        int new_int;
        struct wiphy *wiphy = hw->wiphy;
 
-       WL_LOCK(wl);
+       LOCK(wl);
        if (changed & IEEE80211_CONF_CHANGE_LISTEN_INTERVAL) {
-               if (wlc_iovar_setint
-                   (wl->wlc, "bcn_li_bcn", conf->listen_interval)) {
+               if (brcms_c_set_par(wl->wlc, IOV_BCN_LI_BCN,
+                                   conf->listen_interval) < 0) {
                        wiphy_err(wiphy, "%s: Error setting listen_interval\n",
                                  __func__);
                        err = -EIO;
                        goto config_out;
                }
-               wlc_iovar_getint(wl->wlc, "bcn_li_bcn", &new_int);
+               brcms_c_get_par(wl->wlc, IOV_BCN_LI_BCN, &new_int);
        }
        if (changed & IEEE80211_CONF_CHANGE_MONITOR)
                wiphy_err(wiphy, "%s: change monitor mode: %s (implement)\n",
@@ -290,14 +293,14 @@ static int wl_ops_config(struct ieee80211_hw *hw, u32 changed)
                          "true" : "false");
 
        if (changed & IEEE80211_CONF_CHANGE_POWER) {
-               if (wlc_iovar_setint
-                   (wl->wlc, "qtxpower", conf->power_level * 4)) {
+               if (brcms_c_set_par(wl->wlc, IOV_QTXPOWER,
+                                   conf->power_level * 4) < 0) {
                        wiphy_err(wiphy, "%s: Error setting power_level\n",
                                  __func__);
                        err = -EIO;
                        goto config_out;
                }
-               wlc_iovar_getint(wl->wlc, "qtxpower", &new_int);
+               brcms_c_get_par(wl->wlc, IOV_QTXPOWER, &new_int);
                if (new_int != (conf->power_level * 4))
                        wiphy_err(wiphy, "%s: Power level req != actual, %d %d"
                                  "\n", __func__, conf->power_level * 4,
@@ -307,15 +310,15 @@ static int wl_ops_config(struct ieee80211_hw *hw, u32 changed)
                err = ieee_set_channel(hw, conf->channel, conf->channel_type);
        }
        if (changed & IEEE80211_CONF_CHANGE_RETRY_LIMITS) {
-               if (wlc_set
-                   (wl->wlc, WLC_SET_SRL,
+               if (brcms_c_set
+                   (wl->wlc, BRCM_SET_SRL,
                     conf->short_frame_max_tx_count) < 0) {
                        wiphy_err(wiphy, "%s: Error setting srl\n", __func__);
                        err = -EIO;
                        goto config_out;
                }
-               if (wlc_set(wl->wlc, WLC_SET_LRL, conf->long_frame_max_tx_count)
-                   < 0) {
+               if (brcms_c_set(wl->wlc, BRCM_SET_LRL,
+                               conf->long_frame_max_tx_count) < 0) {
                        wiphy_err(wiphy, "%s: Error setting lrl\n", __func__);
                        err = -EIO;
                        goto config_out;
@@ -323,16 +326,16 @@ static int wl_ops_config(struct ieee80211_hw *hw, u32 changed)
        }
 
  config_out:
-       WL_UNLOCK(wl);
+       UNLOCK(wl);
        return err;
 }
 
 static void
-wl_ops_bss_info_changed(struct ieee80211_hw *hw,
+brcms_ops_bss_info_changed(struct ieee80211_hw *hw,
                        struct ieee80211_vif *vif,
                        struct ieee80211_bss_conf *info, u32 changed)
 {
-       struct wl_info *wl = HW_TO_WL(hw);
+       struct brcms_info *wl = HW_TO_WL(hw);
        struct wiphy *wiphy = hw->wiphy;
        int val;
 
@@ -342,9 +345,9 @@ wl_ops_bss_info_changed(struct ieee80211_hw *hw,
                 */
                wiphy_err(wiphy, "%s: %s: %sassociated\n", KBUILD_MODNAME,
                          __func__, info->assoc ? "" : "dis");
-               WL_LOCK(wl);
-               wlc_associate_upd(wl->wlc, info->assoc);
-               WL_UNLOCK(wl);
+               LOCK(wl);
+               brcms_c_associate_upd(wl->wlc, info->assoc);
+               UNLOCK(wl);
        }
        if (changed & BSS_CHANGED_ERP_SLOT) {
                /* slot timing changed */
@@ -352,23 +355,23 @@ wl_ops_bss_info_changed(struct ieee80211_hw *hw,
                        val = 1;
                else
                        val = 0;
-               WL_LOCK(wl);
-               wlc_set(wl->wlc, WLC_SET_SHORTSLOT_OVERRIDE, val);
-               WL_UNLOCK(wl);
+               LOCK(wl);
+               brcms_c_set(wl->wlc, BRCMS_SET_SHORTSLOT_OVERRIDE, val);
+               UNLOCK(wl);
        }
 
        if (changed & BSS_CHANGED_HT) {
                /* 802.11n parameters changed */
                u16 mode = info->ht_operation_mode;
 
-               WL_LOCK(wl);
-               wlc_protection_upd(wl->wlc, WLC_PROT_N_CFG,
+               LOCK(wl);
+               brcms_c_protection_upd(wl->wlc, BRCMS_PROT_N_CFG,
                        mode & IEEE80211_HT_OP_MODE_PROTECTION);
-               wlc_protection_upd(wl->wlc, WLC_PROT_N_NONGF,
+               brcms_c_protection_upd(wl->wlc, BRCMS_PROT_N_NONGF,
                        mode & IEEE80211_HT_OP_MODE_NON_GF_STA_PRSNT);
-               wlc_protection_upd(wl->wlc, WLC_PROT_N_OBSS,
+               brcms_c_protection_upd(wl->wlc, BRCMS_PROT_N_OBSS,
                        mode & IEEE80211_HT_OP_MODE_NON_HT_STA_PRSNT);
-               WL_UNLOCK(wl);
+               UNLOCK(wl);
        }
        if (changed & BSS_CHANGED_BASIC_RATES) {
                struct ieee80211_supported_band *bi;
@@ -378,43 +381,43 @@ wl_ops_bss_info_changed(struct ieee80211_hw *hw,
                int error;
 
                /* retrieve the current rates */
-               WL_LOCK(wl);
-               error = wlc_ioctl(wl->wlc, WLC_GET_CURR_RATESET,
+               LOCK(wl);
+               error = brcms_c_ioctl(wl->wlc, BRCM_GET_CURR_RATESET,
                                  &rs, sizeof(rs), NULL);
-               WL_UNLOCK(wl);
+               UNLOCK(wl);
                if (error) {
                        wiphy_err(wiphy, "%s: retrieve rateset failed: %d\n",
                                  __func__, error);
                        return;
                }
                br_mask = info->basic_rates;
-               bi = hw->wiphy->bands[wlc_get_curband(wl->wlc)];
+               bi = hw->wiphy->bands[brcms_c_get_curband(wl->wlc)];
                for (i = 0; i < bi->n_bitrates; i++) {
                        /* convert to internal rate value */
                        rate = (bi->bitrates[i].bitrate << 1) / 10;
 
                        /* set/clear basic rate flag */
-                       wl_set_basic_rate(&rs, rate, br_mask & 1);
+                       brcms_set_basic_rate(&rs, rate, br_mask & 1);
                        br_mask >>= 1;
                }
 
                /* update the rate set */
-               WL_LOCK(wl);
-               wlc_ioctl(wl->wlc, WLC_SET_RATESET, &rs, sizeof(rs), NULL);
-               WL_UNLOCK(wl);
+               LOCK(wl);
+               brcms_c_ioctl(wl->wlc, BRCM_SET_RATESET, &rs, sizeof(rs), NULL);
+               UNLOCK(wl);
        }
        if (changed & BSS_CHANGED_BEACON_INT) {
                /* Beacon interval changed */
-               WL_LOCK(wl);
-               wlc_set(wl->wlc, WLC_SET_BCNPRD, info->beacon_int);
-               WL_UNLOCK(wl);
+               LOCK(wl);
+               brcms_c_set(wl->wlc, BRCM_SET_BCNPRD, info->beacon_int);
+               UNLOCK(wl);
        }
        if (changed & BSS_CHANGED_BSSID) {
                /* BSSID changed, for whatever reason (IBSS and managed mode) */
-               WL_LOCK(wl);
-               wlc_set_addrmatch(wl->wlc, RCM_BSSID_OFFSET,
+               LOCK(wl);
+               brcms_c_set_addrmatch(wl->wlc, RCM_BSSID_OFFSET,
                                  info->bssid);
-               WL_UNLOCK(wl);
+               UNLOCK(wl);
        }
        if (changed & BSS_CHANGED_BEACON) {
                /* Beacon data changed, retrieve new beacon (beaconing modes) */
@@ -450,20 +453,15 @@ wl_ops_bss_info_changed(struct ieee80211_hw *hw,
                wiphy_err(wiphy, "%s: qos enabled: %s (implement)\n", __func__,
                          info->qos ? "true" : "false");
        }
-       if (changed & BSS_CHANGED_IDLE) {
-               /* Idle changed for this BSS/interface */
-               wiphy_err(wiphy, "%s: BSS idle: %s (implement)\n", __func__,
-                         info->idle ? "true" : "false");
-       }
        return;
 }
 
 static void
-wl_ops_configure_filter(struct ieee80211_hw *hw,
+brcms_ops_configure_filter(struct ieee80211_hw *hw,
                        unsigned int changed_flags,
                        unsigned int *total_flags, u64 multicast)
 {
-       struct wl_info *wl = hw->priv;
+       struct brcms_info *wl = hw->priv;
        struct wiphy *wiphy = hw->wiphy;
 
        changed_flags &= MAC_FILTERS;
@@ -481,68 +479,68 @@ wl_ops_configure_filter(struct ieee80211_hw *hw,
        if (changed_flags & FIF_OTHER_BSS)
                wiphy_err(wiphy, "FIF_OTHER_BSS\n");
        if (changed_flags & FIF_BCN_PRBRESP_PROMISC) {
-               WL_LOCK(wl);
+               LOCK(wl);
                if (*total_flags & FIF_BCN_PRBRESP_PROMISC) {
                        wl->pub->mac80211_state |= MAC80211_PROMISC_BCNS;
-                       wlc_mac_bcn_promisc_change(wl->wlc, 1);
+                       brcms_c_mac_bcn_promisc_change(wl->wlc, 1);
                } else {
-                       wlc_mac_bcn_promisc_change(wl->wlc, 0);
+                       brcms_c_mac_bcn_promisc_change(wl->wlc, 0);
                        wl->pub->mac80211_state &= ~MAC80211_PROMISC_BCNS;
                }
-               WL_UNLOCK(wl);
+               UNLOCK(wl);
        }
        return;
 }
 
 static int
-wl_ops_set_tim(struct ieee80211_hw *hw, struct ieee80211_sta *sta, bool set)
+brcms_ops_set_tim(struct ieee80211_hw *hw, struct ieee80211_sta *sta, bool set)
 {
        return 0;
 }
 
-static void wl_ops_sw_scan_start(struct ieee80211_hw *hw)
+static void brcms_ops_sw_scan_start(struct ieee80211_hw *hw)
 {
-       struct wl_info *wl = hw->priv;
-       WL_LOCK(wl);
-       wlc_scan_start(wl->wlc);
-       WL_UNLOCK(wl);
+       struct brcms_info *wl = hw->priv;
+       LOCK(wl);
+       brcms_c_scan_start(wl->wlc);
+       UNLOCK(wl);
        return;
 }
 
-static void wl_ops_sw_scan_complete(struct ieee80211_hw *hw)
+static void brcms_ops_sw_scan_complete(struct ieee80211_hw *hw)
 {
-       struct wl_info *wl = hw->priv;
-       WL_LOCK(wl);
-       wlc_scan_stop(wl->wlc);
-       WL_UNLOCK(wl);
+       struct brcms_info *wl = hw->priv;
+       LOCK(wl);
+       brcms_c_scan_stop(wl->wlc);
+       UNLOCK(wl);
        return;
 }
 
-static void wl_ops_set_tsf(struct ieee80211_hw *hw, u64 tsf)
+static void brcms_ops_set_tsf(struct ieee80211_hw *hw, u64 tsf)
 {
        wiphy_err(hw->wiphy, "%s: Enter\n", __func__);
        return;
 }
 
 static int
-wl_ops_get_stats(struct ieee80211_hw *hw,
+brcms_ops_get_stats(struct ieee80211_hw *hw,
                 struct ieee80211_low_level_stats *stats)
 {
-       struct wl_info *wl = hw->priv;
+       struct brcms_info *wl = hw->priv;
        struct wl_cnt *cnt;
 
-       WL_LOCK(wl);
+       LOCK(wl);
        cnt = wl->pub->_cnt;
        stats->dot11ACKFailureCount = 0;
        stats->dot11RTSFailureCount = 0;
        stats->dot11FCSErrorCount = 0;
        stats->dot11RTSSuccessCount = 0;
-       WL_UNLOCK(wl);
+       UNLOCK(wl);
        return 0;
 }
 
 static void
-wl_ops_sta_notify(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
+brcms_ops_sta_notify(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
                  enum sta_notify_cmd cmd, struct ieee80211_sta *sta)
 {
        switch (cmd) {
@@ -555,32 +553,32 @@ wl_ops_sta_notify(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 }
 
 static int
-wl_ops_conf_tx(struct ieee80211_hw *hw, u16 queue,
+brcms_ops_conf_tx(struct ieee80211_hw *hw, u16 queue,
               const struct ieee80211_tx_queue_params *params)
 {
-       struct wl_info *wl = hw->priv;
+       struct brcms_info *wl = hw->priv;
 
-       WL_LOCK(wl);
-       wlc_wme_setparams(wl->wlc, queue, params, true);
-       WL_UNLOCK(wl);
+       LOCK(wl);
+       brcms_c_wme_setparams(wl->wlc, queue, params, true);
+       UNLOCK(wl);
 
        return 0;
 }
 
-static u64 wl_ops_get_tsf(struct ieee80211_hw *hw)
+static u64 brcms_ops_get_tsf(struct ieee80211_hw *hw)
 {
        wiphy_err(hw->wiphy, "%s: Enter\n", __func__);
        return 0;
 }
 
 static int
-wl_ops_sta_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
+brcms_ops_sta_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
               struct ieee80211_sta *sta)
 {
        struct scb *scb;
 
        int i;
-       struct wl_info *wl = hw->priv;
+       struct brcms_info *wl = hw->priv;
 
        /* Init the scb */
        scb = (struct scb *)sta->drv_priv;
@@ -594,7 +592,7 @@ wl_ops_sta_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
        wl->pub->global_ampdu = &(scb->scb_ampdu);
        wl->pub->global_ampdu->scb = scb;
        wl->pub->global_ampdu->max_pdu = 16;
-       bcm_pktq_init(&scb->scb_ampdu.txq, AMPDU_MAX_SCB_TID,
+       brcmu_pktq_init(&scb->scb_ampdu.txq, AMPDU_MAX_SCB_TID,
                  AMPDU_MAX_SCB_TID * PKTQ_LEN_DEFAULT);
 
        sta->ht_cap.ht_supported = true;
@@ -609,21 +607,21 @@ wl_ops_sta_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 }
 
 static int
-wl_ops_sta_remove(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
+brcms_ops_sta_remove(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
                  struct ieee80211_sta *sta)
 {
        return 0;
 }
 
 static int
-wl_ops_ampdu_action(struct ieee80211_hw *hw,
+brcms_ops_ampdu_action(struct ieee80211_hw *hw,
                    struct ieee80211_vif *vif,
                    enum ieee80211_ampdu_mlme_action action,
                    struct ieee80211_sta *sta, u16 tid, u16 *ssn,
                    u8 buf_size)
 {
        struct scb *scb = (struct scb *)sta->drv_priv;
-       struct wl_info *wl = hw->priv;
+       struct brcms_info *wl = hw->priv;
        int status;
 
        if (WARN_ON(scb->magic != SCB_MAGIC))
@@ -634,27 +632,37 @@ wl_ops_ampdu_action(struct ieee80211_hw *hw,
        case IEEE80211_AMPDU_RX_STOP:
                break;
        case IEEE80211_AMPDU_TX_START:
-               WL_LOCK(wl);
-               status = wlc_aggregatable(wl->wlc, tid);
-               WL_UNLOCK(wl);
+               LOCK(wl);
+               status = brcms_c_aggregatable(wl->wlc, tid);
+               UNLOCK(wl);
                if (!status) {
                        wiphy_err(wl->wiphy, "START: tid %d is not agg\'able\n",
                                  tid);
                        return -EINVAL;
                }
-               /* XXX: Use the starting sequence number provided ... */
+               /* Future improvement: Use the starting sequence number provided ... */
                *ssn = 0;
                ieee80211_start_tx_ba_cb_irqsafe(vif, sta->addr, tid);
                break;
 
        case IEEE80211_AMPDU_TX_STOP:
-               WL_LOCK(wl);
-               wlc_ampdu_flush(wl->wlc, sta, tid);
-               WL_UNLOCK(wl);
+               LOCK(wl);
+               brcms_c_ampdu_flush(wl->wlc, sta, tid);
+               UNLOCK(wl);
                ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid);
                break;
        case IEEE80211_AMPDU_TX_OPERATIONAL:
-               /* Not sure what to do here */
+               /*
+                * BA window size from ADDBA response ('buf_size') defines how
+                * many outstanding MPDUs are allowed for the BA stream by
+                * recipient and traffic class. 'ampdu_factor' gives maximum
+                * AMPDU size.
+                */
+               LOCK(wl);
+               brcms_c_ampdu_tx_operational(wl->wlc, tid, buf_size,
+                       (1 << (IEEE80211_HT_MAX_AMPDU_FACTOR +
+                        sta->ht_cap.ampdu_factor)) - 1);
+               UNLOCK(wl);
                /* Power save wakeup */
                break;
        default:
@@ -665,58 +673,58 @@ wl_ops_ampdu_action(struct ieee80211_hw *hw,
        return 0;
 }
 
-static void wl_ops_rfkill_poll(struct ieee80211_hw *hw)
+static void brcms_ops_rfkill_poll(struct ieee80211_hw *hw)
 {
-       struct wl_info *wl = HW_TO_WL(hw);
+       struct brcms_info *wl = HW_TO_WL(hw);
        bool blocked;
 
-       WL_LOCK(wl);
-       blocked = wlc_check_radio_disabled(wl->wlc);
-       WL_UNLOCK(wl);
+       LOCK(wl);
+       blocked = brcms_c_check_radio_disabled(wl->wlc);
+       UNLOCK(wl);
 
        wiphy_rfkill_set_hw_state(wl->pub->ieee_hw->wiphy, blocked);
 }
 
-static void wl_ops_flush(struct ieee80211_hw *hw, bool drop)
+static void brcms_ops_flush(struct ieee80211_hw *hw, bool drop)
 {
-       struct wl_info *wl = HW_TO_WL(hw);
+       struct brcms_info *wl = HW_TO_WL(hw);
 
        no_printk("%s: drop = %s\n", __func__, drop ? "true" : "false");
 
        /* wait for packet queue and dma fifos to run empty */
-       WL_LOCK(wl);
-       wlc_wait_for_tx_completion(wl->wlc, drop);
-       WL_UNLOCK(wl);
+       LOCK(wl);
+       brcms_c_wait_for_tx_completion(wl->wlc, drop);
+       UNLOCK(wl);
 }
 
-static const struct ieee80211_ops wl_ops = {
-       .tx = wl_ops_tx,
-       .start = wl_ops_start,
-       .stop = wl_ops_stop,
-       .add_interface = wl_ops_add_interface,
-       .remove_interface = wl_ops_remove_interface,
-       .config = wl_ops_config,
-       .bss_info_changed = wl_ops_bss_info_changed,
-       .configure_filter = wl_ops_configure_filter,
-       .set_tim = wl_ops_set_tim,
-       .sw_scan_start = wl_ops_sw_scan_start,
-       .sw_scan_complete = wl_ops_sw_scan_complete,
-       .set_tsf = wl_ops_set_tsf,
-       .get_stats = wl_ops_get_stats,
-       .sta_notify = wl_ops_sta_notify,
-       .conf_tx = wl_ops_conf_tx,
-       .get_tsf = wl_ops_get_tsf,
-       .sta_add = wl_ops_sta_add,
-       .sta_remove = wl_ops_sta_remove,
-       .ampdu_action = wl_ops_ampdu_action,
-       .rfkill_poll = wl_ops_rfkill_poll,
-       .flush = wl_ops_flush,
+static const struct ieee80211_ops brcms_ops = {
+       .tx = brcms_ops_tx,
+       .start = brcms_ops_start,
+       .stop = brcms_ops_stop,
+       .add_interface = brcms_ops_add_interface,
+       .remove_interface = brcms_ops_remove_interface,
+       .config = brcms_ops_config,
+       .bss_info_changed = brcms_ops_bss_info_changed,
+       .configure_filter = brcms_ops_configure_filter,
+       .set_tim = brcms_ops_set_tim,
+       .sw_scan_start = brcms_ops_sw_scan_start,
+       .sw_scan_complete = brcms_ops_sw_scan_complete,
+       .set_tsf = brcms_ops_set_tsf,
+       .get_stats = brcms_ops_get_stats,
+       .sta_notify = brcms_ops_sta_notify,
+       .conf_tx = brcms_ops_conf_tx,
+       .get_tsf = brcms_ops_get_tsf,
+       .sta_add = brcms_ops_sta_add,
+       .sta_remove = brcms_ops_sta_remove,
+       .ampdu_action = brcms_ops_ampdu_action,
+       .rfkill_poll = brcms_ops_rfkill_poll,
+       .flush = brcms_ops_flush,
 };
 
 /*
- * is called in wl_pci_probe() context, therefore no locking required.
+ * is called in brcms_pci_probe() context, therefore no locking required.
  */
-static int wl_set_hint(struct wl_info *wl, char *abbrev)
+static int brcms_set_hint(struct brcms_info *wl, char *abbrev)
 {
        return regulatory_hint(wl->pub->ieee_hw->wiphy, abbrev);
 }
@@ -727,25 +735,25 @@ static int wl_set_hint(struct wl_info *wl, char *abbrev)
  * Attach to the WL device identified by vendor and device parameters.
  * regs is a host accessible memory address pointing to WL device registers.
  *
- * wl_attach is not defined as static because in the case where no bus
+ * brcms_attach is not defined as static because in the case where no bus
  * is defined, wl_attach will never be called, and thus, gcc will issue
  * a warning that this function is defined but not used if we declare
  * it as static.
  *
  *
- * is called in wl_pci_probe() context, therefore no locking required.
+ * is called in brcms_pci_probe() context, therefore no locking required.
  */
-static struct wl_info *wl_attach(u16 vendor, u16 device, unsigned long regs,
+static struct brcms_info *brcms_attach(u16 vendor, u16 device,
+                                      unsigned long regs,
                            uint bustype, void *btparam, uint irq)
 {
-       struct wl_info *wl = NULL;
+       struct brcms_info *wl = NULL;
        int unit, err;
-
        unsigned long base_addr;
        struct ieee80211_hw *hw;
        u8 perm[ETH_ALEN];
 
-       unit = wl_found;
+       unit = n_adapters_found;
        err = 0;
 
        if (unit < 0) {
@@ -763,15 +771,13 @@ static struct wl_info *wl_attach(u16 vendor, u16 device, unsigned long regs,
        atomic_set(&wl->callbacks, 0);
 
        /* setup the bottom half handler */
-       tasklet_init(&wl->tasklet, wl_dpc, (unsigned long) wl);
+       tasklet_init(&wl->tasklet, brcms_dpc, (unsigned long) wl);
 
 
 
        base_addr = regs;
 
-       if (bustype == PCI_BUS) {
-               wl->piomode = false;
-       } else if (bustype == RPC_BUS) {
+       if (bustype == PCI_BUS || bustype == RPC_BUS) {
                /* Do nothing */
        } else {
                bustype = PCI_BUS;
@@ -788,42 +794,41 @@ static struct wl_info *wl_attach(u16 vendor, u16 device, unsigned long regs,
        spin_lock_init(&wl->isr_lock);
 
        /* prepare ucode */
-       if (wl_request_fw(wl, (struct pci_dev *)btparam) < 0) {
+       if (brcms_request_fw(wl, (struct pci_dev *)btparam) < 0) {
                wiphy_err(wl->wiphy, "%s: Failed to find firmware usually in "
                          "%s\n", KBUILD_MODNAME, "/lib/firmware/brcm");
-               wl_release_fw(wl);
-               wl_remove((struct pci_dev *)btparam);
+               brcms_release_fw(wl);
+               brcms_remove((struct pci_dev *)btparam);
                return NULL;
        }
 
        /* common load-time initialization */
-       wl->wlc = wlc_attach((void *)wl, vendor, device, unit, wl->piomode,
+       wl->wlc = brcms_c_attach((void *)wl, vendor, device, unit, false,
                             wl->regsva, wl->bcm_bustype, btparam, &err);
-       wl_release_fw(wl);
+       brcms_release_fw(wl);
        if (!wl->wlc) {
-               wiphy_err(wl->wiphy, "%s: wlc_attach() failed with code %d\n",
+               wiphy_err(wl->wiphy, "%s: attach() failed with code %d\n",
                          KBUILD_MODNAME, err);
                goto fail;
        }
-       wl->pub = wlc_pub(wl->wlc);
+       wl->pub = brcms_c_pub(wl->wlc);
 
        wl->pub->ieee_hw = hw;
 
-       if (wlc_iovar_setint(wl->wlc, "mpc", 0)) {
+       if (brcms_c_set_par(wl->wlc, IOV_MPC, 0) < 0) {
                wiphy_err(wl->wiphy, "wl%d: Error setting MPC variable to 0\n",
                          unit);
        }
 
        /* register our interrupt handler */
-       if (request_irq(irq, wl_isr, IRQF_SHARED, KBUILD_MODNAME, wl)) {
+       if (request_irq(irq, brcms_isr, IRQF_SHARED, KBUILD_MODNAME, wl)) {
                wiphy_err(wl->wiphy, "wl%d: request_irq() failed\n", unit);
                goto fail;
        }
        wl->irq = irq;
 
        /* register module */
-       wlc_module_register(wl->pub, NULL, "linux", wl, NULL, wl_linux_watchdog,
-                           NULL);
+       brcms_c_module_register(wl->pub, "linux", wl, wl_linux_watchdog, NULL);
 
        if (ieee_hw_init(hw)) {
                wiphy_err(wl->wiphy, "wl%d: %s: ieee_hw_init failed!\n", unit,
@@ -843,19 +848,19 @@ static struct wl_info *wl_attach(u16 vendor, u16 device, unsigned long regs,
        }
 
        if (wl->pub->srom_ccode[0])
-               err = wl_set_hint(wl, wl->pub->srom_ccode);
+               err = brcms_set_hint(wl, wl->pub->srom_ccode);
        else
-               err = wl_set_hint(wl, "US");
+               err = brcms_set_hint(wl, "US");
        if (err) {
                wiphy_err(wl->wiphy, "%s: regulatory_hint failed, status %d\n",
                          __func__, err);
        }
 
-       wl_found++;
+       n_adapters_found++;
        return wl;
 
 fail:
-       wl_free(wl);
+       brcms_free(wl);
        return NULL;
 }
 
@@ -870,7 +875,7 @@ fail:
        .max_power = 19, \
 }
 
-static struct ieee80211_channel wl_2ghz_chantable[] = {
+static struct ieee80211_channel brcms_2ghz_chantable[] = {
        CHAN2GHZ(1, 2412, IEEE80211_CHAN_NO_HT40MINUS),
        CHAN2GHZ(2, 2417, IEEE80211_CHAN_NO_HT40MINUS),
        CHAN2GHZ(3, 2422, IEEE80211_CHAN_NO_HT40MINUS),
@@ -902,7 +907,7 @@ static struct ieee80211_channel wl_2ghz_chantable[] = {
        .max_power = 21, \
 }
 
-static struct ieee80211_channel wl_5ghz_nphy_chantable[] = {
+static struct ieee80211_channel brcms_5ghz_nphy_chantable[] = {
        /* UNII-1 */
        CHAN5GHZ(36, IEEE80211_CHAN_NO_HT40MINUS),
        CHAN5GHZ(40, IEEE80211_CHAN_NO_HT40PLUS),
@@ -970,7 +975,7 @@ static struct ieee80211_channel wl_5ghz_nphy_chantable[] = {
        .hw_value = (rate100m / 5), \
 }
 
-static struct ieee80211_rate wl_legacy_ratetable[] = {
+static struct ieee80211_rate legacy_ratetable[] = {
        RATE(10, 0),
        RATE(20, IEEE80211_RATE_SHORT_PREAMBLE),
        RATE(55, IEEE80211_RATE_SHORT_PREAMBLE),
@@ -985,12 +990,12 @@ static struct ieee80211_rate wl_legacy_ratetable[] = {
        RATE(540, 0),
 };
 
-static struct ieee80211_supported_band wl_band_2GHz_nphy = {
+static struct ieee80211_supported_band brcms_band_2GHz_nphy = {
        .band = IEEE80211_BAND_2GHZ,
-       .channels = wl_2ghz_chantable,
-       .n_channels = ARRAY_SIZE(wl_2ghz_chantable),
-       .bitrates = wl_legacy_ratetable,
-       .n_bitrates = ARRAY_SIZE(wl_legacy_ratetable),
+       .channels = brcms_2ghz_chantable,
+       .n_channels = ARRAY_SIZE(brcms_2ghz_chantable),
+       .bitrates = legacy_ratetable,
+       .n_bitrates = ARRAY_SIZE(legacy_ratetable),
        .ht_cap = {
                   /* from include/linux/ieee80211.h */
                   .cap = IEEE80211_HT_CAP_GRN_FLD |
@@ -1007,12 +1012,12 @@ static struct ieee80211_supported_band wl_band_2GHz_nphy = {
                   }
 };
 
-static struct ieee80211_supported_band wl_band_5GHz_nphy = {
+static struct ieee80211_supported_band brcms_band_5GHz_nphy = {
        .band = IEEE80211_BAND_5GHZ,
-       .channels = wl_5ghz_nphy_chantable,
-       .n_channels = ARRAY_SIZE(wl_5ghz_nphy_chantable),
-       .bitrates = wl_legacy_ratetable + 4,
-       .n_bitrates = ARRAY_SIZE(wl_legacy_ratetable) - 4,
+       .channels = brcms_5ghz_nphy_chantable,
+       .n_channels = ARRAY_SIZE(brcms_5ghz_nphy_chantable),
+       .bitrates = legacy_ratetable + 4,
+       .n_bitrates = ARRAY_SIZE(legacy_ratetable) - 4,
        .ht_cap = {
                   /* use IEEE80211_HT_CAP_* from include/linux/ieee80211.h */
                   .cap = IEEE80211_HT_CAP_GRN_FLD | IEEE80211_HT_CAP_SGI_20 | IEEE80211_HT_CAP_SGI_40 | IEEE80211_HT_CAP_40MHZ_INTOLERANT,     /* No 40 mhz yet */
@@ -1028,11 +1033,11 @@ static struct ieee80211_supported_band wl_band_5GHz_nphy = {
 };
 
 /*
- * is called in wl_pci_probe() context, therefore no locking required.
+ * is called in brcms_pci_probe() context, therefore no locking required.
  */
 static int ieee_hw_rate_init(struct ieee80211_hw *hw)
 {
-       struct wl_info *wl = HW_TO_WL(hw);
+       struct brcms_info *wl = HW_TO_WL(hw);
        int has_5g;
        char phy_list[4];
 
@@ -1041,17 +1046,16 @@ static int ieee_hw_rate_init(struct ieee80211_hw *hw)
        hw->wiphy->bands[IEEE80211_BAND_2GHZ] = NULL;
        hw->wiphy->bands[IEEE80211_BAND_5GHZ] = NULL;
 
-       if (wlc_get(wl->wlc, WLC_GET_PHYLIST, (int *)&phy_list) < 0) {
+       if (brcms_c_get(wl->wlc, BRCM_GET_PHYLIST, (int *)&phy_list) < 0)
                wiphy_err(hw->wiphy, "Phy list failed\n");
-       }
 
        if (phy_list[0] == 'n' || phy_list[0] == 'c') {
                if (phy_list[0] == 'c') {
                        /* Single stream */
-                       wl_band_2GHz_nphy.ht_cap.mcs.rx_mask[1] = 0;
-                       wl_band_2GHz_nphy.ht_cap.mcs.rx_highest = 72;
+                       brcms_band_2GHz_nphy.ht_cap.mcs.rx_mask[1] = 0;
+                       brcms_band_2GHz_nphy.ht_cap.mcs.rx_highest = 72;
                }
-               hw->wiphy->bands[IEEE80211_BAND_2GHZ] = &wl_band_2GHz_nphy;
+               hw->wiphy->bands[IEEE80211_BAND_2GHZ] = &brcms_band_2GHz_nphy;
        } else {
                return -EPERM;
        }
@@ -1061,7 +1065,7 @@ static int ieee_hw_rate_init(struct ieee80211_hw *hw)
                has_5g++;
                if (phy_list[0] == 'n' || phy_list[0] == 'c') {
                        hw->wiphy->bands[IEEE80211_BAND_5GHZ] =
-                           &wl_band_5GHz_nphy;
+                           &brcms_band_5GHz_nphy;
                } else {
                        return -EPERM;
                }
@@ -1070,7 +1074,7 @@ static int ieee_hw_rate_init(struct ieee80211_hw *hw)
 }
 
 /*
- * is called in wl_pci_probe() context, therefore no locking required.
+ * is called in brcms_pci_probe() context, therefore no locking required.
  */
 static int ieee_hw_init(struct ieee80211_hw *hw)
 {
@@ -1079,13 +1083,8 @@ static int ieee_hw_init(struct ieee80211_hw *hw)
            | IEEE80211_HW_REPORTS_TX_ACK_STATUS
            | IEEE80211_HW_AMPDU_AGGREGATION;
 
-       hw->extra_tx_headroom = wlc_get_header_len();
+       hw->extra_tx_headroom = brcms_c_get_header_len();
        hw->queues = N_TX_QUEUES;
-       /* FIXME: this doesn't seem to be used properly in minstrel_ht.
-        * mac80211/status.c:ieee80211_tx_status() checks this value,
-        * but mac80211/rc80211_minstrel_ht.c:minstrel_ht_get_rate()
-        * appears to always set 3 rates
-        */
        hw->max_rates = 2;      /* Primary rate and 1 fallback rate */
 
        hw->channel_change_time = 7 * 1000;     /* channel change time is dependent on chip and band  */
@@ -1101,15 +1100,15 @@ static int ieee_hw_init(struct ieee80211_hw *hw)
  * determines if a device is a WL device, and if so, attaches it.
  *
  * This function determines if a device pointed to by pdev is a WL device,
- * and if so, performs a wl_attach() on it.
+ * and if so, performs a brcms_attach() on it.
  *
  * Perimeter lock is initialized in the course of this function.
  */
 static int __devinit
-wl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
+brcms_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 {
        int rc;
-       struct wl_info *wl;
+       struct brcms_info *wl;
        struct ieee80211_hw *hw;
        u32 val;
 
@@ -1118,7 +1117,8 @@ wl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
               PCI_FUNC(pdev->devfn), pdev->irq);
 
        if ((pdev->vendor != PCI_VENDOR_ID_BROADCOM) ||
-           (((pdev->device & 0xff00) != 0x4300) &&
+           ((pdev->device != 0x0576) &&
+            ((pdev->device & 0xff00) != 0x4300) &&
             ((pdev->device & 0xff00) != 0x4700) &&
             ((pdev->device < 43000) || (pdev->device > 43999))))
                return -ENODEV;
@@ -1136,7 +1136,7 @@ wl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        if ((val & 0x0000ff00) != 0)
                pci_write_config_dword(pdev, 0x40, val & 0xffff00ff);
 
-       hw = ieee80211_alloc_hw(sizeof(struct wl_info), &wl_ops);
+       hw = ieee80211_alloc_hw(sizeof(struct brcms_info), &brcms_ops);
        if (!hw) {
                pr_err("%s: ieee80211_alloc_hw failed\n", __func__);
                return -ENOMEM;
@@ -1148,43 +1148,44 @@ wl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 
        memset(hw->priv, 0, sizeof(*wl));
 
-       wl = wl_attach(pdev->vendor, pdev->device, pci_resource_start(pdev, 0),
-                      PCI_BUS, pdev, pdev->irq);
+       wl = brcms_attach(pdev->vendor, pdev->device,
+                         pci_resource_start(pdev, 0), PCI_BUS, pdev,
+                         pdev->irq);
 
        if (!wl) {
-               pr_err("%s: %s: wl_attach failed!\n", KBUILD_MODNAME,
+               pr_err("%s: %s: brcms_attach failed!\n", KBUILD_MODNAME,
                       __func__);
                return -ENODEV;
        }
        return 0;
 }
 
-static int wl_suspend(struct pci_dev *pdev, pm_message_t state)
+static int brcms_suspend(struct pci_dev *pdev, pm_message_t state)
 {
-       struct wl_info *wl;
+       struct brcms_info *wl;
        struct ieee80211_hw *hw;
 
        hw = pci_get_drvdata(pdev);
        wl = HW_TO_WL(hw);
        if (!wl) {
                wiphy_err(wl->wiphy,
-                         "wl_suspend: pci_get_drvdata failed\n");
+                         "brcms_suspend: pci_get_drvdata failed\n");
                return -ENODEV;
        }
 
        /* only need to flag hw is down for proper resume */
-       WL_LOCK(wl);
+       LOCK(wl);
        wl->pub->hw_up = false;
-       WL_UNLOCK(wl);
+       UNLOCK(wl);
 
        pci_save_state(pdev);
        pci_disable_device(pdev);
        return pci_set_power_state(pdev, PCI_D3hot);
 }
 
-static int wl_resume(struct pci_dev *pdev)
+static int brcms_resume(struct pci_dev *pdev)
 {
-       struct wl_info *wl;
+       struct brcms_info *wl;
        struct ieee80211_hw *hw;
        int err = 0;
        u32 val;
@@ -1193,7 +1194,7 @@ static int wl_resume(struct pci_dev *pdev)
        wl = HW_TO_WL(hw);
        if (!wl) {
                wiphy_err(wl->wiphy,
-                         "wl: wl_resume: pci_get_drvdata failed\n");
+                         "wl: brcms_resume: pci_get_drvdata failed\n");
                return -ENODEV;
        }
 
@@ -1215,97 +1216,80 @@ static int wl_resume(struct pci_dev *pdev)
 
        /*
        *  done. driver will be put in up state
-       *  in wl_ops_add_interface() call.
+       *  in brcms_ops_add_interface() call.
        */
        return err;
 }
 
 /*
-* called from both kernel as from wl_*()
+* called from both kernel as from this kernel module.
 * precondition: perimeter lock is not acquired.
 */
-static void wl_remove(struct pci_dev *pdev)
+static void brcms_remove(struct pci_dev *pdev)
 {
-       struct wl_info *wl;
+       struct brcms_info *wl;
        struct ieee80211_hw *hw;
        int status;
 
        hw = pci_get_drvdata(pdev);
        wl = HW_TO_WL(hw);
        if (!wl) {
-               pr_err("wl: wl_remove: pci_get_drvdata failed\n");
+               pr_err("wl: brcms_remove: pci_get_drvdata failed\n");
                return;
        }
 
-       WL_LOCK(wl);
-       status = wlc_chipmatch(pdev->vendor, pdev->device);
-       WL_UNLOCK(wl);
+       LOCK(wl);
+       status = brcms_c_chipmatch(pdev->vendor, pdev->device);
+       UNLOCK(wl);
        if (!status) {
-               wiphy_err(wl->wiphy, "wl: wl_remove: wlc_chipmatch failed\n");
+               wiphy_err(wl->wiphy, "wl: brcms_remove: chipmatch "
+                                    "failed\n");
                return;
        }
        if (wl->wlc) {
                wiphy_rfkill_set_hw_state(wl->pub->ieee_hw->wiphy, false);
                wiphy_rfkill_stop_polling(wl->pub->ieee_hw->wiphy);
                ieee80211_unregister_hw(hw);
-               WL_LOCK(wl);
-               wl_down(wl);
-               WL_UNLOCK(wl);
+               LOCK(wl);
+               brcms_down(wl);
+               UNLOCK(wl);
        }
        pci_disable_device(pdev);
 
-       wl_free(wl);
+       brcms_free(wl);
 
        pci_set_drvdata(pdev, NULL);
        ieee80211_free_hw(hw);
 }
 
-static struct pci_driver wl_pci_driver = {
+static struct pci_driver brcms_pci_driver = {
        .name     = KBUILD_MODNAME,
-       .probe    = wl_pci_probe,
-       .suspend  = wl_suspend,
-       .resume   = wl_resume,
-       .remove   = __devexit_p(wl_remove),
-       .id_table = wl_id_table,
+       .probe    = brcms_pci_probe,
+       .suspend  = brcms_suspend,
+       .resume   = brcms_resume,
+       .remove   = __devexit_p(brcms_remove),
+       .id_table = brcms_pci_id_table,
 };
 
 /**
  * This is the main entry point for the WL driver.
  *
  * This function determines if a device pointed to by pdev is a WL device,
- * and if so, performs a wl_attach() on it.
+ * and if so, performs a brcms_attach() on it.
  *
  */
-static int __init wl_module_init(void)
+static int __init brcms_module_init(void)
 {
        int error = -ENODEV;
 
 #ifdef BCMDBG
        if (msglevel != 0xdeadbeef)
-               wl_msg_level = msglevel;
-       else {
-               char *var = getvar(NULL, "wl_msglevel");
-               if (var) {
-                       unsigned long value;
-
-                       (void)strict_strtoul(var, 0, &value);
-                       wl_msg_level = value;
-               }
-       }
+               brcm_msg_level = msglevel;
        if (phymsglevel != 0xdeadbeef)
                phyhal_msg_level = phymsglevel;
-       else {
-               char *var = getvar(NULL, "phy_msglevel");
-               if (var) {
-                       unsigned long value;
-
-                       (void)strict_strtoul(var, 0, &value);
-                       phyhal_msg_level = value;
-               }
-       }
 #endif                         /* BCMDBG */
 
-       error = pci_register_driver(&wl_pci_driver);
+       error = pci_register_driver(&brcms_pci_driver);
        if (!error)
                return 0;
 
@@ -1321,14 +1305,14 @@ static int __init wl_module_init(void)
  * system.
  *
  */
-static void __exit wl_module_exit(void)
+static void __exit brcms_module_exit(void)
 {
-       pci_unregister_driver(&wl_pci_driver);
+       pci_unregister_driver(&brcms_pci_driver);
 
 }
 
-module_init(wl_module_init);
-module_exit(wl_module_exit);
+module_init(brcms_module_init);
+module_exit(brcms_module_exit);
 
 /**
  * This function frees the WL per-device resources.
@@ -1339,13 +1323,13 @@ module_exit(wl_module_exit);
  * precondition: can both be called locked and unlocked
  *
  */
-static void wl_free(struct wl_info *wl)
+static void brcms_free(struct brcms_info *wl)
 {
-       struct wl_timer *t, *next;
+       struct brcms_timer *t, *next;
 
        /* free ucode data */
        if (wl->fw.fw_cnt)
-               wl_ucode_data_free();
+               brcms_ucode_data_free();
        if (wl->irq)
                free_irq(wl->irq, wl);
 
@@ -1353,12 +1337,12 @@ static void wl_free(struct wl_info *wl)
        tasklet_kill(&wl->tasklet);
 
        if (wl->pub) {
-               wlc_module_unregister(wl->pub, "linux", wl);
+               brcms_c_module_unregister(wl->pub, "linux", wl);
        }
 
        /* free common resources */
        if (wl->wlc) {
-               wlc_detach(wl->wlc);
+               brcms_c_detach(wl->wlc);
                wl->wlc = NULL;
                wl->pub = NULL;
        }
@@ -1390,7 +1374,7 @@ static void wl_free(struct wl_info *wl)
 }
 
 /* flags the given rate in rateset as requested */
-static void wl_set_basic_rate(struct wl_rateset *rs, u16 rate, bool is_br)
+static void brcms_set_basic_rate(struct wl_rateset *rs, u16 rate, bool is_br)
 {
        u32 i;
 
@@ -1399,9 +1383,9 @@ static void wl_set_basic_rate(struct wl_rateset *rs, u16 rate, bool is_br)
                        continue;
 
                if (is_br)
-                       rs->rates[i] |= WLC_RATE_FLAG;
+                       rs->rates[i] |= BRCMS_RATE_FLAG;
                else
-                       rs->rates[i] &= WLC_RATE_MASK;
+                       rs->rates[i] &= BRCMS_RATE_MASK;
                return;
        }
 }
@@ -1409,8 +1393,8 @@ static void wl_set_basic_rate(struct wl_rateset *rs, u16 rate, bool is_br)
 /*
  * precondition: perimeter lock has been acquired
  */
-void wl_txflowcontrol(struct wl_info *wl, struct wl_if *wlif, bool state,
-                     int prio)
+void brcms_txflowcontrol(struct brcms_info *wl, struct brcms_if *wlif,
+                        bool state, int prio)
 {
        wiphy_err(wl->wiphy, "Shouldn't be here %s\n", __func__);
 }
@@ -1418,21 +1402,21 @@ void wl_txflowcontrol(struct wl_info *wl, struct wl_if *wlif, bool state,
 /*
  * precondition: perimeter lock has been acquired
  */
-void wl_init(struct wl_info *wl)
+void brcms_init(struct brcms_info *wl)
 {
        BCMMSG(WL_TO_HW(wl)->wiphy, "wl%d\n", wl->pub->unit);
-       wl_reset(wl);
+       brcms_reset(wl);
 
-       wlc_init(wl->wlc);
+       brcms_c_init(wl->wlc);
 }
 
 /*
  * precondition: perimeter lock has been acquired
  */
-uint wl_reset(struct wl_info *wl)
+uint brcms_reset(struct brcms_info *wl)
 {
        BCMMSG(WL_TO_HW(wl)->wiphy, "wl%d\n", wl->pub->unit);
-       wlc_reset(wl->wlc);
+       brcms_c_reset(wl->wlc);
 
        /* dpc will not be rescheduled */
        wl->resched = 0;
@@ -1444,54 +1428,54 @@ uint wl_reset(struct wl_info *wl)
  * These are interrupt on/off entry points. Disable interrupts
  * during interrupt state transition.
  */
-void wl_intrson(struct wl_info *wl)
+void brcms_intrson(struct brcms_info *wl)
 {
        unsigned long flags;
 
        INT_LOCK(wl, flags);
-       wlc_intrson(wl->wlc);
+       brcms_c_intrson(wl->wlc);
        INT_UNLOCK(wl, flags);
 }
 
 /*
  * precondition: perimeter lock has been acquired
  */
-bool wl_alloc_dma_resources(struct wl_info *wl, uint addrwidth)
+bool wl_alloc_dma_resources(struct brcms_info *wl, uint addrwidth)
 {
        return true;
 }
 
-u32 wl_intrsoff(struct wl_info *wl)
+u32 brcms_intrsoff(struct brcms_info *wl)
 {
        unsigned long flags;
        u32 status;
 
        INT_LOCK(wl, flags);
-       status = wlc_intrsoff(wl->wlc);
+       status = brcms_c_intrsoff(wl->wlc);
        INT_UNLOCK(wl, flags);
        return status;
 }
 
-void wl_intrsrestore(struct wl_info *wl, u32 macintmask)
+void brcms_intrsrestore(struct brcms_info *wl, u32 macintmask)
 {
        unsigned long flags;
 
        INT_LOCK(wl, flags);
-       wlc_intrsrestore(wl->wlc, macintmask);
+       brcms_c_intrsrestore(wl->wlc, macintmask);
        INT_UNLOCK(wl, flags);
 }
 
 /*
  * precondition: perimeter lock has been acquired
  */
-int wl_up(struct wl_info *wl)
+int brcms_up(struct brcms_info *wl)
 {
        int error = 0;
 
        if (wl->pub->up)
                return 0;
 
-       error = wlc_up(wl->wlc);
+       error = brcms_c_up(wl->wlc);
 
        return error;
 }
@@ -1499,37 +1483,37 @@ int wl_up(struct wl_info *wl)
 /*
  * precondition: perimeter lock has been acquired
  */
-void wl_down(struct wl_info *wl)
+void brcms_down(struct brcms_info *wl)
 {
        uint callbacks, ret_val = 0;
 
        /* call common down function */
-       ret_val = wlc_down(wl->wlc);
+       ret_val = brcms_c_down(wl->wlc);
        callbacks = atomic_read(&wl->callbacks) - ret_val;
 
        /* wait for down callbacks to complete */
-       WL_UNLOCK(wl);
+       UNLOCK(wl);
 
        /* For HIGH_only driver, it's important to actually schedule other work,
         * not just spin wait since everything runs at schedule level
         */
        SPINWAIT((atomic_read(&wl->callbacks) > callbacks), 100 * 1000);
 
-       WL_LOCK(wl);
+       LOCK(wl);
 }
 
-static irqreturn_t wl_isr(int irq, void *dev_id)
+static irqreturn_t brcms_isr(int irq, void *dev_id)
 {
-       struct wl_info *wl;
+       struct brcms_info *wl;
        bool ours, wantdpc;
        unsigned long flags;
 
-       wl = (struct wl_info *) dev_id;
+       wl = (struct brcms_info *) dev_id;
 
-       WL_ISRLOCK(wl, flags);
+       ISR_LOCK(wl, flags);
 
        /* call common first level interrupt handler */
-       ours = wlc_isr(wl->wlc, &wantdpc);
+       ours = brcms_c_isr(wl->wlc, &wantdpc);
        if (ours) {
                /* if more to do... */
                if (wantdpc) {
@@ -1540,18 +1524,18 @@ static irqreturn_t wl_isr(int irq, void *dev_id)
                }
        }
 
-       WL_ISRUNLOCK(wl, flags);
+       ISR_UNLOCK(wl, flags);
 
        return IRQ_RETVAL(ours);
 }
 
-static void wl_dpc(unsigned long data)
+static void brcms_dpc(unsigned long data)
 {
-       struct wl_info *wl;
+       struct brcms_info *wl;
 
-       wl = (struct wl_info *) data;
+       wl = (struct brcms_info *) data;
 
-       WL_LOCK(wl);
+       LOCK(wl);
 
        /* call the common second level interrupt handler */
        if (wl->pub->up) {
@@ -1559,14 +1543,14 @@ static void wl_dpc(unsigned long data)
                        unsigned long flags;
 
                        INT_LOCK(wl, flags);
-                       wlc_intrsupd(wl->wlc);
+                       brcms_c_intrsupd(wl->wlc);
                        INT_UNLOCK(wl, flags);
                }
 
-               wl->resched = wlc_dpc(wl->wlc, true);
+               wl->resched = brcms_c_dpc(wl->wlc, true);
        }
 
-       /* wlc_dpc() may bring the driver down */
+       /* brcms_c_dpc() may bring the driver down */
        if (!wl->pub->up)
                goto done;
 
@@ -1575,27 +1559,27 @@ static void wl_dpc(unsigned long data)
                tasklet_schedule(&wl->tasklet);
        else {
                /* re-enable interrupts */
-               wl_intrson(wl);
+               brcms_intrson(wl);
        }
 
  done:
-       WL_UNLOCK(wl);
+       UNLOCK(wl);
 }
 
 /*
  * is called by the kernel from software irq context
  */
-static void wl_timer(unsigned long data)
+static void brcms_timer(unsigned long data)
 {
-       _wl_timer((struct wl_timer *) data);
+       _brcms_timer((struct brcms_timer *) data);
 }
 
 /*
 * precondition: perimeter lock is not acquired
  */
-static void _wl_timer(struct wl_timer *t)
+static void _brcms_timer(struct brcms_timer *t)
 {
-       WL_LOCK(t->wl);
+       LOCK(t->wl);
 
        if (t->set) {
                if (t->periodic) {
@@ -1611,7 +1595,7 @@ static void _wl_timer(struct wl_timer *t)
 
        atomic_dec(&t->wl->callbacks);
 
-       WL_UNLOCK(t->wl);
+       UNLOCK(t->wl);
 }
 
 /*
@@ -1620,21 +1604,22 @@ static void _wl_timer(struct wl_timer *t)
  *
  * precondition: perimeter lock has been acquired
  */
-struct wl_timer *wl_init_timer(struct wl_info *wl, void (*fn) (void *arg),
-                              void *arg, const char *name)
+struct brcms_timer *brcms_init_timer(struct brcms_info *wl,
+                                    void (*fn) (void *arg),
+                                    void *arg, const char *name)
 {
-       struct wl_timer *t;
+       struct brcms_timer *t;
 
-       t = kzalloc(sizeof(struct wl_timer), GFP_ATOMIC);
+       t = kzalloc(sizeof(struct brcms_timer), GFP_ATOMIC);
        if (!t) {
-               wiphy_err(wl->wiphy, "wl%d: wl_init_timer: out of memory\n",
+               wiphy_err(wl->wiphy, "wl%d: brcms_init_timer: out of memory\n",
                          wl->pub->unit);
                return 0;
        }
 
        init_timer(&t->timer);
        t->timer.data = (unsigned long) t;
-       t->timer.function = wl_timer;
+       t->timer.function = brcms_timer;
        t->wl = wl;
        t->fn = fn;
        t->arg = arg;
@@ -1655,7 +1640,8 @@ struct wl_timer *wl_init_timer(struct wl_info *wl, void (*fn) (void *arg),
  *
  * precondition: perimeter lock has been acquired
  */
-void wl_add_timer(struct wl_info *wl, struct wl_timer *t, uint ms, int periodic)
+void brcms_add_timer(struct brcms_info *wl, struct brcms_timer *t, uint ms,
+                    int periodic)
 {
 #ifdef BCMDBG
        if (t->set) {
@@ -1677,7 +1663,7 @@ void wl_add_timer(struct wl_info *wl, struct wl_timer *t, uint ms, int periodic)
  *
  * precondition: perimeter lock has been acquired
  */
-bool wl_del_timer(struct wl_info *wl, struct wl_timer *t)
+bool brcms_del_timer(struct brcms_info *wl, struct brcms_timer *t)
 {
        if (t->set) {
                t->set = false;
@@ -1693,12 +1679,12 @@ bool wl_del_timer(struct wl_info *wl, struct wl_timer *t)
 /*
  * precondition: perimeter lock has been acquired
  */
-void wl_free_timer(struct wl_info *wl, struct wl_timer *t)
+void brcms_free_timer(struct brcms_info *wl, struct brcms_timer *t)
 {
-       struct wl_timer *tmp;
+       struct brcms_timer *tmp;
 
        /* delete the timer in case it is active */
-       wl_del_timer(wl, t);
+       brcms_del_timer(wl, t);
 
        if (wl->timers == t) {
                wl->timers = wl->timers->next;
@@ -1735,13 +1721,13 @@ static int wl_linux_watchdog(void *ctx)
        return 0;
 }
 
-struct wl_fw_hdr {
+struct firmware_hdr {
        u32 offset;
        u32 len;
        u32 idx;
 };
 
-char *wl_firmwares[WL_MAX_FW] = {
+char *brcms_firmwares[MAX_FW_IMAGES] = {
        "brcm/bcm43xx",
        NULL
 };
@@ -1749,13 +1735,13 @@ char *wl_firmwares[WL_MAX_FW] = {
 /*
  * precondition: perimeter lock has been acquired
  */
-int wl_ucode_init_buf(struct wl_info *wl, void **pbuf, u32 idx)
+int brcms_ucode_init_buf(struct brcms_info *wl, void **pbuf, u32 idx)
 {
        int i, entry;
        const u8 *pdata;
-       struct wl_fw_hdr *hdr;
+       struct firmware_hdr *hdr;
        for (i = 0; i < wl->fw.fw_cnt; i++) {
-               hdr = (struct wl_fw_hdr *)wl->fw.fw_hdr[i]->data;
+               hdr = (struct firmware_hdr *)wl->fw.fw_hdr[i]->data;
                for (entry = 0; entry < wl->fw.hdr_num_entries[i];
                     entry++, hdr++) {
                        if (hdr->idx == idx) {
@@ -1779,16 +1765,16 @@ fail:
 }
 
 /*
- * Precondition: Since this function is called in wl_pci_probe() context,
+ * Precondition: Since this function is called in brcms_pci_probe() context,
  * no locking is required.
  */
-int wl_ucode_init_uint(struct wl_info *wl, u32 *data, u32 idx)
+int brcms_ucode_init_uint(struct brcms_info *wl, u32 *data, u32 idx)
 {
        int i, entry;
        const u8 *pdata;
-       struct wl_fw_hdr *hdr;
+       struct firmware_hdr *hdr;
        for (i = 0; i < wl->fw.fw_cnt; i++) {
-               hdr = (struct wl_fw_hdr *)wl->fw.fw_hdr[i]->data;
+               hdr = (struct firmware_hdr *)wl->fw.fw_hdr[i]->data;
                for (entry = 0; entry < wl->fw.hdr_num_entries[i];
                     entry++, hdr++) {
                        if (hdr->idx == idx) {
@@ -1808,21 +1794,21 @@ int wl_ucode_init_uint(struct wl_info *wl, u32 *data, u32 idx)
 }
 
 /*
- * Precondition: Since this function is called in wl_pci_probe() context,
+ * Precondition: Since this function is called in brcms_pci_probe() context,
  * no locking is required.
  */
-static int wl_request_fw(struct wl_info *wl, struct pci_dev *pdev)
+static int brcms_request_fw(struct brcms_info *wl, struct pci_dev *pdev)
 {
        int status;
        struct device *device = &pdev->dev;
        char fw_name[100];
        int i;
 
-       memset((void *)&wl->fw, 0, sizeof(struct wl_firmware));
-       for (i = 0; i < WL_MAX_FW; i++) {
-               if (wl_firmwares[i] == NULL)
+       memset((void *)&wl->fw, 0, sizeof(struct brcms_firmware));
+       for (i = 0; i < MAX_FW_IMAGES; i++) {
+               if (brcms_firmwares[i] == NULL)
                        break;
-               sprintf(fw_name, "%s-%d.fw", wl_firmwares[i],
+               sprintf(fw_name, "%s-%d.fw", brcms_firmwares[i],
                        UCODE_LOADER_API_VER);
                status = request_firmware(&wl->fw.fw_bin[i], fw_name, device);
                if (status) {
@@ -1830,7 +1816,7 @@ static int wl_request_fw(struct wl_info *wl, struct pci_dev *pdev)
                                  KBUILD_MODNAME, fw_name);
                        return status;
                }
-               sprintf(fw_name, "%s_hdr-%d.fw", wl_firmwares[i],
+               sprintf(fw_name, "%s_hdr-%d.fw", brcms_firmwares[i],
                        UCODE_LOADER_API_VER);
                status = request_firmware(&wl->fw.fw_hdr[i], fw_name, device);
                if (status) {
@@ -1839,28 +1825,28 @@ static int wl_request_fw(struct wl_info *wl, struct pci_dev *pdev)
                        return status;
                }
                wl->fw.hdr_num_entries[i] =
-                   wl->fw.fw_hdr[i]->size / (sizeof(struct wl_fw_hdr));
+                   wl->fw.fw_hdr[i]->size / (sizeof(struct firmware_hdr));
        }
        wl->fw.fw_cnt = i;
-       return wl_ucode_data_init(wl);
+       return brcms_ucode_data_init(wl);
 }
 
 /*
  * precondition: can both be called locked and unlocked
  */
-void wl_ucode_free_buf(void *p)
+void brcms_ucode_free_buf(void *p)
 {
        kfree(p);
 }
 
 /*
- * Precondition: Since this function is called in wl_pci_probe() context,
+ * Precondition: Since this function is called in brcms_pci_probe() context,
  * no locking is required.
  */
-static void wl_release_fw(struct wl_info *wl)
+static void brcms_release_fw(struct brcms_info *wl)
 {
        int i;
-       for (i = 0; i < WL_MAX_FW; i++) {
+       for (i = 0; i < MAX_FW_IMAGES; i++) {
                release_firmware(wl->fw.fw_bin[i]);
                release_firmware(wl->fw.fw_hdr[i]);
        }
@@ -1870,18 +1856,18 @@ static void wl_release_fw(struct wl_info *wl)
 /*
  * checks validity of all firmware images loaded from user space
  *
- * Precondition: Since this function is called in wl_pci_probe() context,
+ * Precondition: Since this function is called in brcms_pci_probe() context,
  * no locking is required.
  */
-int wl_check_firmwares(struct wl_info *wl)
+int brcms_check_firmwares(struct brcms_info *wl)
 {
        int i;
        int entry;
        int rc = 0;
        const struct firmware *fw;
        const struct firmware *fw_hdr;
-       struct wl_fw_hdr *ucode_hdr;
-       for (i = 0; i < WL_MAX_FW && rc == 0; i++) {
+       struct firmware_hdr *ucode_hdr;
+       for (i = 0; i < MAX_FW_IMAGES && rc == 0; i++) {
                fw =  wl->fw.fw_bin[i];
                fw_hdr = wl->fw.fw_hdr[i];
                if (fw == NULL && fw_hdr == NULL) {
@@ -1890,10 +1876,10 @@ int wl_check_firmwares(struct wl_info *wl)
                        wiphy_err(wl->wiphy, "%s: invalid bin/hdr fw\n",
                                  __func__);
                        rc = -EBADF;
-               } else if (fw_hdr->size % sizeof(struct wl_fw_hdr)) {
+               } else if (fw_hdr->size % sizeof(struct firmware_hdr)) {
                        wiphy_err(wl->wiphy, "%s: non integral fw hdr file "
                                "size %zu/%zu\n", __func__, fw_hdr->size,
-                               sizeof(struct wl_fw_hdr));
+                               sizeof(struct firmware_hdr));
                        rc = -EBADF;
                } else if (fw->size < MIN_FW_SIZE || fw->size > MAX_FW_SIZE) {
                        wiphy_err(wl->wiphy, "%s: out of bounds fw file size "
@@ -1901,7 +1887,7 @@ int wl_check_firmwares(struct wl_info *wl)
                        rc = -EBADF;
                } else {
                        /* check if ucode section overruns firmware image */
-                       ucode_hdr = (struct wl_fw_hdr *)fw_hdr->data;
+                       ucode_hdr = (struct firmware_hdr *)fw_hdr->data;
                        for (entry = 0; entry < wl->fw.hdr_num_entries[i] &&
                             !rc; entry++, ucode_hdr++) {
                                if (ucode_hdr->offset + ucode_hdr->len >
@@ -1925,24 +1911,24 @@ int wl_check_firmwares(struct wl_info *wl)
 /*
  * precondition: perimeter lock has been acquired
  */
-bool wl_rfkill_set_hw_state(struct wl_info *wl)
+bool brcms_rfkill_set_hw_state(struct brcms_info *wl)
 {
-       bool blocked = wlc_check_radio_disabled(wl->wlc);
+       bool blocked = brcms_c_check_radio_disabled(wl->wlc);
 
-       WL_UNLOCK(wl);
+       UNLOCK(wl);
        wiphy_rfkill_set_hw_state(wl->pub->ieee_hw->wiphy, blocked);
        if (blocked)
                wiphy_rfkill_start_polling(wl->pub->ieee_hw->wiphy);
-       WL_LOCK(wl);
+       LOCK(wl);
        return blocked;
 }
 
 /*
  * precondition: perimeter lock has been acquired
  */
-void wl_msleep(struct wl_info *wl, uint ms)
+void brcms_msleep(struct brcms_info *wl, uint ms)
 {
-       WL_UNLOCK(wl);
+       UNLOCK(wl);
        msleep(ms);
-       WL_LOCK(wl);
+       LOCK(wl);
 }