aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuis R. Rodriguez <lrodriguez@atheros.com>2009-01-22 18:05:53 -0500
committerJohn W. Linville <linville@tuxdriver.com>2009-01-29 16:01:19 -0500
commit9a95371aa26e3cb9fb1340362912000088ff3c3e (patch)
treeaaa8470b9304d344a2c15f30776b3dd1c044183a
parentf976376de0d6a9697fb635369f12ae00251f4566 (diff)
mac80211: allow mac80211 drivers to get to struct ieee80211_hw from wiphy
If a driver is given a wiphy and it wants to get to its private mac80211 driver area it can use wiphy_to_ieee80211_hw() to get first to its ieee80211_hw and then access the private structure via hw->priv. The wiphy_priv() is already being used internally by mac80211 and drivers should not use this. This can be helpful in a drivers reg_notifier(). Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com> Acked-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--include/net/mac80211.h13
-rw-r--r--net/mac80211/util.c9
2 files changed, 22 insertions, 0 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 35643c55827a..c1e8261e899e 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -990,6 +990,19 @@ struct ieee80211_hw {
990}; 990};
991 991
992/** 992/**
993 * wiphy_to_ieee80211_hw - return a mac80211 driver hw struct from a wiphy
994 *
995 * @wiphy: the &struct wiphy which we want to query
996 *
997 * mac80211 drivers can use this to get to their respective
998 * &struct ieee80211_hw. Drivers wishing to get to their own private
999 * structure can then access it via hw->priv. Note that mac802111 drivers should
1000 * not use wiphy_priv() to try to get their private driver structure as this
1001 * is already used internally by mac80211.
1002 */
1003struct ieee80211_hw *wiphy_to_ieee80211_hw(struct wiphy *wiphy);
1004
1005/**
993 * SET_IEEE80211_DEV - set device for 802.11 hardware 1006 * SET_IEEE80211_DEV - set device for 802.11 hardware
994 * 1007 *
995 * @hw: the &struct ieee80211_hw to set the device for 1008 * @hw: the &struct ieee80211_hw to set the device for
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index ede96c4fea2e..fc30f2940e1e 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -41,6 +41,15 @@ const unsigned char rfc1042_header[] __aligned(2) =
41const unsigned char bridge_tunnel_header[] __aligned(2) = 41const unsigned char bridge_tunnel_header[] __aligned(2) =
42 { 0xaa, 0xaa, 0x03, 0x00, 0x00, 0xf8 }; 42 { 0xaa, 0xaa, 0x03, 0x00, 0x00, 0xf8 };
43 43
44struct ieee80211_hw *wiphy_to_ieee80211_hw(struct wiphy *wiphy)
45{
46 struct ieee80211_local *local;
47 BUG_ON(!wiphy);
48
49 local = wiphy_priv(wiphy);
50 return &local->hw;
51}
52EXPORT_SYMBOL(wiphy_to_ieee80211_hw);
44 53
45u8 *ieee80211_get_bssid(struct ieee80211_hdr *hdr, size_t len, 54u8 *ieee80211_get_bssid(struct ieee80211_hdr *hdr, size_t len,
46 enum nl80211_iftype type) 55 enum nl80211_iftype type)