staging: brcm80211: remove include file sbhndpio.h
[firefly-linux-kernel-4.4.55.git] / drivers / staging / brcm80211 / brcmsmac / wlc_stf.c
index 10c9f447cdf0010c7f416308dbd0c486c44c0a0e..25fbcdac4f77853fc7ccf22dead47b961f448bcc 100644 (file)
 
 #include <linux/kernel.h>
 #include <linux/module.h>
-#include <wlc_cfg.h>
+
+#include <proto/802.11.h>
+
 #include <bcmdefs.h>
 #include <osl.h>
 #include <bcmutils.h>
 #include <siutils.h>
-#include <bcmendian.h>
-#include <proto/802.11.h>
 #include <wlioctl.h>
 #include <bcmwifi.h>
-#include <sbhndpio.h>
 #include <sbhnddma.h>
-#include <d11.h>
-#include <wlc_rate.h>
-#include <wlc_pub.h>
-#include <wlc_key.h>
-#include <wlc_channel.h>
-#include <wlc_bsscfg.h>
-#include <wlc_event.h>
-#include <wlc_mac80211.h>
-#include <wlc_scb.h>
-#include <wl_export.h>
-#include <wlc_bmac.h>
-#include <wlc_stf.h>
-#include <wl_dbg.h>
+
+#include "wlc_types.h"
+#include "d11.h"
+#include "wl_dbg.h"
+#include "wlc_cfg.h"
+#include "wlc_rate.h"
+#include "wlc_scb.h"
+#include "wlc_pub.h"
+#include "wlc_key.h"
+#include "phy/wlc_phy_hal.h"
+#include "wlc_channel.h"
+#include "wlc_bsscfg.h"
+#include "wlc_mac80211.h"
+#include "wl_export.h"
+#include "wlc_bmac.h"
+#include "wlc_stf.h"
+
+#define MIN_SPATIAL_EXPANSION  0
+#define MAX_SPATIAL_EXPANSION  1
 
 #define WLC_STF_SS_STBC_RX(wlc) (WLCISNPHY(wlc->band) && \
        NREV_GT(wlc->band->phyrev, 3) && NREV_LE(wlc->band->phyrev, 6))
 
-static s8 wlc_stf_stbc_rx_get(struct wlc_info *wlc);
 static bool wlc_stf_stbc_tx_set(struct wlc_info *wlc, s32 int_val);
 static int wlc_stf_txcore_set(struct wlc_info *wlc, u8 Nsts, u8 val);
 static int wlc_stf_spatial_policy_set(struct wlc_info *wlc, int val);
@@ -151,12 +155,6 @@ wlc_stf_ss_algo_channel_get(struct wlc_info *wlc, u16 *ss_algo_channel,
                setbit(ss_algo_channel, PHY_TXC1_MODE_STBC);
 }
 
-static s8 wlc_stf_stbc_rx_get(struct wlc_info *wlc)
-{
-       return (wlc->ht_cap.cap_info & HT_CAP_RX_STBC_MASK)
-               >> HT_CAP_RX_STBC_SHIFT;
-}
-
 static bool wlc_stf_stbc_tx_set(struct wlc_info *wlc, s32 int_val)
 {
        if ((int_val != AUTO) && (int_val != OFF) && (int_val != ON)) {
@@ -310,69 +308,6 @@ int wlc_stf_txchain_set(struct wlc_info *wlc, s32 int_val, bool force)
        return BCME_OK;
 }
 
-int wlc_stf_rxchain_set(struct wlc_info *wlc, s32 int_val)
-{
-       u8 rxchain_cnt;
-       u8 rxchain = (u8) int_val;
-       u8 mimops_mode;
-       u8 old_rxchain, old_rxchain_cnt;
-
-       if (wlc->stf->rxchain == rxchain)
-               return BCME_OK;
-
-       if ((rxchain & ~wlc->stf->hw_rxchain)
-           || !(rxchain & wlc->stf->hw_rxchain))
-               return BCME_RANGE;
-
-       rxchain_cnt = (u8) WLC_BITSCNT(rxchain);
-       if (WLC_STF_SS_STBC_RX(wlc)) {
-               if ((rxchain_cnt == 1)
-                   && (wlc_stf_stbc_rx_get(wlc) != HT_CAP_RX_STBC_NO))
-                       return BCME_RANGE;
-       }
-
-       if (APSTA_ENAB(wlc->pub) && (wlc->pub->associated))
-               return BCME_ASSOCIATED;
-
-       old_rxchain = wlc->stf->rxchain;
-       old_rxchain_cnt = wlc->stf->rxstreams;
-
-       wlc->stf->rxchain = rxchain;
-       wlc->stf->rxstreams = rxchain_cnt;
-
-       if (rxchain_cnt != old_rxchain_cnt) {
-               mimops_mode =
-                   (rxchain_cnt == 1) ? HT_CAP_MIMO_PS_ON : HT_CAP_MIMO_PS_OFF;
-               wlc->mimops_PM = mimops_mode;
-               if (AP_ENAB(wlc->pub)) {
-                       wlc_phy_stf_chain_set(wlc->band->pi, wlc->stf->txchain,
-                                             wlc->stf->rxchain);
-                       wlc_ht_mimops_cap_update(wlc, mimops_mode);
-                       if (wlc->pub->associated)
-                               wlc_mimops_action_ht_send(wlc, wlc->cfg,
-                                                         mimops_mode);
-                       return BCME_OK;
-               }
-               if (wlc->pub->associated) {
-                       if (mimops_mode == HT_CAP_MIMO_PS_OFF) {
-                               /* if mimops is off, turn on the Rx chain first */
-                               wlc_phy_stf_chain_set(wlc->band->pi,
-                                                     wlc->stf->txchain,
-                                                     wlc->stf->rxchain);
-                               wlc_ht_mimops_cap_update(wlc, mimops_mode);
-                       }
-               } else {
-                       wlc_phy_stf_chain_set(wlc->band->pi, wlc->stf->txchain,
-                                             wlc->stf->rxchain);
-                       wlc_ht_mimops_cap_update(wlc, mimops_mode);
-               }
-       } else if (old_rxchain != rxchain)
-               wlc_phy_stf_chain_set(wlc->band->pi, wlc->stf->txchain,
-                                     wlc->stf->rxchain);
-
-       return BCME_OK;
-}
-
 /* update wlc->stf->ss_opmode which represents the operational stf_ss mode we're using */
 int wlc_stf_ss_update(struct wlc_info *wlc, struct wlcband *band)
 {
@@ -559,7 +494,7 @@ void wlc_stf_phy_chain_calc(struct wlc_info *wlc)
        wlc->stf->rxstreams = (u8) WLC_BITSCNT(wlc->stf->hw_rxchain);
 
        /* initialize the txcore table */
-       bcopy(txcore_default, wlc->stf->txcore, sizeof(wlc->stf->txcore));
+       memcpy(wlc->stf->txcore, txcore_default, sizeof(wlc->stf->txcore));
 
        /* default spatial_policy */
        wlc->stf->spatial_policy = MIN_SPATIAL_EXPANSION;