Skip to content

Commit

Permalink
ath5k: use regulatory infrastructure
Browse files Browse the repository at this point in the history
Make ath5k select the ath module and add in the hooks to make the
eeprom regulatory hint and reg notifier take effect.

Changes to attach.c
Changes-licensed-under: ISC

Changes to base.c
Changes-licensed-under: 3-Clause-BSD

Signed-off-by: Bob Copeland <me@bobcopeland.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Bob Copeland authored and John W. Linville committed Apr 22, 2009
1 parent e3bb249 commit f769c36
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 2 deletions.
1 change: 1 addition & 0 deletions drivers/net/wireless/ath5k/Kconfig
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
config ATH5K
tristate "Atheros 5xxx wireless cards support"
depends on PCI && MAC80211 && WLAN_80211 && EXPERIMENTAL
select ATH_COMMON
select MAC80211_LEDS
select LEDS_CLASS
select NEW_LEDS
Expand Down
5 changes: 3 additions & 2 deletions drivers/net/wireless/ath5k/ath5k.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@
#include <linux/types.h>
#include <net/mac80211.h>

#include "../ath/regd.h"

/* RX/TX descriptor hw structs
* TODO: Driver part should only see sw structs */
#include "desc.h"
Expand Down Expand Up @@ -1039,8 +1041,6 @@ struct ath5k_hw {
bool ah_5ghz;
bool ah_2ghz;

#define ah_regdomain ah_capabilities.cap_regdomain.reg_current
#define ah_regdomain_hw ah_capabilities.cap_regdomain.reg_hw
#define ah_modes ah_capabilities.cap_mode
#define ah_ee_version ah_capabilities.cap_eeprom.ee_version

Expand All @@ -1065,6 +1065,7 @@ struct ath5k_hw {
u32 ah_gpio[AR5K_MAX_GPIO];
int ah_gpio_npins;

struct ath_regulatory ah_regulatory;
struct ath5k_capabilities ah_capabilities;

struct ath5k_txq_info ah_txq[AR5K_NUM_TX_QUEUES];
Expand Down
20 changes: 20 additions & 0 deletions drivers/net/wireless/ath5k/base.c
Original file line number Diff line number Diff line change
Expand Up @@ -709,6 +709,15 @@ ath5k_pci_resume(struct pci_dev *pdev)
* Driver Initialization *
\***********************/

static int ath5k_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request)
{
struct ieee80211_hw *hw = wiphy_to_ieee80211_hw(wiphy);
struct ath5k_softc *sc = hw->priv;
struct ath_regulatory *reg = &sc->ah->ah_regulatory;

return ath_reg_notifier_apply(wiphy, request, reg);
}

static int
ath5k_attach(struct pci_dev *pdev, struct ieee80211_hw *hw)
{
Expand Down Expand Up @@ -797,12 +806,23 @@ ath5k_attach(struct pci_dev *pdev, struct ieee80211_hw *hw)
memset(sc->bssidmask, 0xff, ETH_ALEN);
ath5k_hw_set_bssid_mask(sc->ah, sc->bssidmask);

ah->ah_regulatory.current_rd =
ah->ah_capabilities.cap_eeprom.ee_regdomain;
ret = ath_regd_init(&ah->ah_regulatory, hw->wiphy, ath5k_reg_notifier);
if (ret) {
ATH5K_ERR(sc, "can't initialize regulatory system\n");
goto err_queues;
}

ret = ieee80211_register_hw(hw);
if (ret) {
ATH5K_ERR(sc, "can't register ieee80211 hw\n");
goto err_queues;
}

if (!ath_is_world_regd(&sc->ah->ah_regulatory))
regulatory_hint(hw->wiphy, sc->ah->ah_regulatory.alpha2);

ath5k_init_leds(sc);

return 0;
Expand Down

0 comments on commit f769c36

Please sign in to comment.