diff options
author | Lennert Buytenhek <buytenh@wantstofly.org> | 2010-01-12 07:48:17 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-01-12 14:21:13 -0500 |
commit | 1349ad2f06f86f41415cf7ffa9e068fd4f89be87 (patch) | |
tree | 271309496e4b73f3f2503a4af4704562f4d7acae /drivers/net/wireless/mwl8k.c | |
parent | 777ad375d5960e0d2a945a34032b182eb2952d45 (diff) |
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>
Diffstat (limited to 'drivers/net/wireless/mwl8k.c')
-rw-r--r-- | drivers/net/wireless/mwl8k.c | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/drivers/net/wireless/mwl8k.c b/drivers/net/wireless/mwl8k.c index 37cbfbf21567..a17111f40266 100644 --- a/drivers/net/wireless/mwl8k.c +++ b/drivers/net/wireless/mwl8k.c | |||
@@ -1558,6 +1558,28 @@ static int mwl8k_post_cmd(struct ieee80211_hw *hw, struct mwl8k_cmd_pkt *cmd) | |||
1558 | } | 1558 | } |
1559 | 1559 | ||
1560 | /* | 1560 | /* |
1561 | * Setup code shared between STA and AP firmware images. | ||
1562 | */ | ||
1563 | static void mwl8k_setup_2ghz_band(struct ieee80211_hw *hw) | ||
1564 | { | ||
1565 | struct mwl8k_priv *priv = hw->priv; | ||
1566 | |||
1567 | BUILD_BUG_ON(sizeof(priv->channels_24) != sizeof(mwl8k_channels_24)); | ||
1568 | memcpy(priv->channels_24, mwl8k_channels_24, sizeof(mwl8k_channels_24)); | ||
1569 | |||
1570 | BUILD_BUG_ON(sizeof(priv->rates_24) != sizeof(mwl8k_rates_24)); | ||
1571 | memcpy(priv->rates_24, mwl8k_rates_24, sizeof(mwl8k_rates_24)); | ||
1572 | |||
1573 | priv->band_24.band = IEEE80211_BAND_2GHZ; | ||
1574 | priv->band_24.channels = priv->channels_24; | ||
1575 | priv->band_24.n_channels = ARRAY_SIZE(mwl8k_channels_24); | ||
1576 | priv->band_24.bitrates = priv->rates_24; | ||
1577 | priv->band_24.n_bitrates = ARRAY_SIZE(mwl8k_rates_24); | ||
1578 | |||
1579 | hw->wiphy->bands[IEEE80211_BAND_2GHZ] = &priv->band_24; | ||
1580 | } | ||
1581 | |||
1582 | /* | ||
1561 | * CMD_GET_HW_SPEC (STA version). | 1583 | * CMD_GET_HW_SPEC (STA version). |
1562 | */ | 1584 | */ |
1563 | struct mwl8k_cmd_get_hw_spec_sta { | 1585 | struct mwl8k_cmd_get_hw_spec_sta { |
@@ -1671,6 +1693,7 @@ static int mwl8k_cmd_get_hw_spec_sta(struct ieee80211_hw *hw) | |||
1671 | priv->num_mcaddrs = le16_to_cpu(cmd->num_mcaddrs); | 1693 | priv->num_mcaddrs = le16_to_cpu(cmd->num_mcaddrs); |
1672 | priv->fw_rev = le32_to_cpu(cmd->fw_rev); | 1694 | priv->fw_rev = le32_to_cpu(cmd->fw_rev); |
1673 | priv->hw_rev = cmd->hw_rev; | 1695 | priv->hw_rev = cmd->hw_rev; |
1696 | mwl8k_setup_2ghz_band(hw); | ||
1674 | if (cmd->caps & cpu_to_le32(MWL8K_CAP_MIMO)) | 1697 | if (cmd->caps & cpu_to_le32(MWL8K_CAP_MIMO)) |
1675 | mwl8k_set_ht_caps(hw, le32_to_cpu(cmd->caps)); | 1698 | mwl8k_set_ht_caps(hw, le32_to_cpu(cmd->caps)); |
1676 | } | 1699 | } |
@@ -1726,6 +1749,7 @@ static int mwl8k_cmd_get_hw_spec_ap(struct ieee80211_hw *hw) | |||
1726 | priv->num_mcaddrs = le16_to_cpu(cmd->num_mcaddrs); | 1749 | priv->num_mcaddrs = le16_to_cpu(cmd->num_mcaddrs); |
1727 | priv->fw_rev = le32_to_cpu(cmd->fw_rev); | 1750 | priv->fw_rev = le32_to_cpu(cmd->fw_rev); |
1728 | priv->hw_rev = cmd->hw_rev; | 1751 | priv->hw_rev = cmd->hw_rev; |
1752 | mwl8k_setup_2ghz_band(hw); | ||
1729 | 1753 | ||
1730 | off = le32_to_cpu(cmd->wcbbase0) & 0xffff; | 1754 | off = le32_to_cpu(cmd->wcbbase0) & 0xffff; |
1731 | iowrite32(cpu_to_le32(priv->txq[0].txd_dma), priv->sram + off); | 1755 | 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, | |||
3853 | priv->pending_tx_pkts = 0; | 3877 | priv->pending_tx_pkts = 0; |
3854 | 3878 | ||
3855 | 3879 | ||
3856 | memcpy(priv->channels_24, mwl8k_channels_24, sizeof(mwl8k_channels_24)); | ||
3857 | priv->band_24.band = IEEE80211_BAND_2GHZ; | ||
3858 | priv->band_24.channels = priv->channels_24; | ||
3859 | priv->band_24.n_channels = ARRAY_SIZE(mwl8k_channels_24); | ||
3860 | priv->band_24.bitrates = priv->rates_24; | ||
3861 | priv->band_24.n_bitrates = ARRAY_SIZE(mwl8k_rates_24); | ||
3862 | hw->wiphy->bands[IEEE80211_BAND_2GHZ] = &priv->band_24; | ||
3863 | |||
3864 | BUILD_BUG_ON(sizeof(priv->rates_24) != sizeof(mwl8k_rates_24)); | ||
3865 | memcpy(priv->rates_24, mwl8k_rates_24, sizeof(mwl8k_rates_24)); | ||
3866 | |||
3867 | /* | 3880 | /* |
3868 | * Extra headroom is the size of the required DMA header | 3881 | * Extra headroom is the size of the required DMA header |
3869 | * minus the size of the smallest 802.11 frame (CTS frame). | 3882 | * minus the size of the smallest 802.11 frame (CTS frame). |