mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-06 10:57:46 +00:00
mwl8k: move responsibility for initialising wiphy bands to GET_HW_SPEC
So that we can make 2.4 GHz and 5 GHz band registration conditional on the capability bitmask returned by the firmware. Signed-off-by: Lennert Buytenhek <buytenh@marvell.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
777ad375d5
commit
1349ad2f06
1 changed files with 24 additions and 11 deletions
|
@ -1557,6 +1557,28 @@ static int mwl8k_post_cmd(struct ieee80211_hw *hw, struct mwl8k_cmd_pkt *cmd)
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Setup code shared between STA and AP firmware images.
|
||||||
|
*/
|
||||||
|
static void mwl8k_setup_2ghz_band(struct ieee80211_hw *hw)
|
||||||
|
{
|
||||||
|
struct mwl8k_priv *priv = hw->priv;
|
||||||
|
|
||||||
|
BUILD_BUG_ON(sizeof(priv->channels_24) != sizeof(mwl8k_channels_24));
|
||||||
|
memcpy(priv->channels_24, mwl8k_channels_24, sizeof(mwl8k_channels_24));
|
||||||
|
|
||||||
|
BUILD_BUG_ON(sizeof(priv->rates_24) != sizeof(mwl8k_rates_24));
|
||||||
|
memcpy(priv->rates_24, mwl8k_rates_24, sizeof(mwl8k_rates_24));
|
||||||
|
|
||||||
|
priv->band_24.band = IEEE80211_BAND_2GHZ;
|
||||||
|
priv->band_24.channels = priv->channels_24;
|
||||||
|
priv->band_24.n_channels = ARRAY_SIZE(mwl8k_channels_24);
|
||||||
|
priv->band_24.bitrates = priv->rates_24;
|
||||||
|
priv->band_24.n_bitrates = ARRAY_SIZE(mwl8k_rates_24);
|
||||||
|
|
||||||
|
hw->wiphy->bands[IEEE80211_BAND_2GHZ] = &priv->band_24;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* CMD_GET_HW_SPEC (STA version).
|
* CMD_GET_HW_SPEC (STA version).
|
||||||
*/
|
*/
|
||||||
|
@ -1671,6 +1693,7 @@ static int mwl8k_cmd_get_hw_spec_sta(struct ieee80211_hw *hw)
|
||||||
priv->num_mcaddrs = le16_to_cpu(cmd->num_mcaddrs);
|
priv->num_mcaddrs = le16_to_cpu(cmd->num_mcaddrs);
|
||||||
priv->fw_rev = le32_to_cpu(cmd->fw_rev);
|
priv->fw_rev = le32_to_cpu(cmd->fw_rev);
|
||||||
priv->hw_rev = cmd->hw_rev;
|
priv->hw_rev = cmd->hw_rev;
|
||||||
|
mwl8k_setup_2ghz_band(hw);
|
||||||
if (cmd->caps & cpu_to_le32(MWL8K_CAP_MIMO))
|
if (cmd->caps & cpu_to_le32(MWL8K_CAP_MIMO))
|
||||||
mwl8k_set_ht_caps(hw, le32_to_cpu(cmd->caps));
|
mwl8k_set_ht_caps(hw, le32_to_cpu(cmd->caps));
|
||||||
}
|
}
|
||||||
|
@ -1726,6 +1749,7 @@ static int mwl8k_cmd_get_hw_spec_ap(struct ieee80211_hw *hw)
|
||||||
priv->num_mcaddrs = le16_to_cpu(cmd->num_mcaddrs);
|
priv->num_mcaddrs = le16_to_cpu(cmd->num_mcaddrs);
|
||||||
priv->fw_rev = le32_to_cpu(cmd->fw_rev);
|
priv->fw_rev = le32_to_cpu(cmd->fw_rev);
|
||||||
priv->hw_rev = cmd->hw_rev;
|
priv->hw_rev = cmd->hw_rev;
|
||||||
|
mwl8k_setup_2ghz_band(hw);
|
||||||
|
|
||||||
off = le32_to_cpu(cmd->wcbbase0) & 0xffff;
|
off = le32_to_cpu(cmd->wcbbase0) & 0xffff;
|
||||||
iowrite32(cpu_to_le32(priv->txq[0].txd_dma), priv->sram + off);
|
iowrite32(cpu_to_le32(priv->txq[0].txd_dma), priv->sram + off);
|
||||||
|
@ -3853,17 +3877,6 @@ static int __devinit mwl8k_probe(struct pci_dev *pdev,
|
||||||
priv->pending_tx_pkts = 0;
|
priv->pending_tx_pkts = 0;
|
||||||
|
|
||||||
|
|
||||||
memcpy(priv->channels_24, mwl8k_channels_24, sizeof(mwl8k_channels_24));
|
|
||||||
priv->band_24.band = IEEE80211_BAND_2GHZ;
|
|
||||||
priv->band_24.channels = priv->channels_24;
|
|
||||||
priv->band_24.n_channels = ARRAY_SIZE(mwl8k_channels_24);
|
|
||||||
priv->band_24.bitrates = priv->rates_24;
|
|
||||||
priv->band_24.n_bitrates = ARRAY_SIZE(mwl8k_rates_24);
|
|
||||||
hw->wiphy->bands[IEEE80211_BAND_2GHZ] = &priv->band_24;
|
|
||||||
|
|
||||||
BUILD_BUG_ON(sizeof(priv->rates_24) != sizeof(mwl8k_rates_24));
|
|
||||||
memcpy(priv->rates_24, mwl8k_rates_24, sizeof(mwl8k_rates_24));
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Extra headroom is the size of the required DMA header
|
* Extra headroom is the size of the required DMA header
|
||||||
* minus the size of the smallest 802.11 frame (CTS frame).
|
* minus the size of the smallest 802.11 frame (CTS frame).
|
||||||
|
|
Loading…
Reference in a new issue