On Thu, 2009-01-15 at 16:12 -0800, Luis R. Rodriguez wrote: > 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@xxxxxxxxxxx> Acked-by: Johannes Berg <johannes@xxxxxxxxxxxxxxxx> > --- > include/net/mac80211.h | 13 +++++++++++++ > net/mac80211/util.c | 9 +++++++++ > 2 files changed, 22 insertions(+), 0 deletions(-) > > diff --git a/include/net/mac80211.h b/include/net/mac80211.h > index 9a5869e..b29c41b 100644 > --- a/include/net/mac80211.h > +++ b/include/net/mac80211.h > @@ -965,6 +965,19 @@ struct ieee80211_hw { > }; > > /** > + * wiphy_to_ieee80211_hw - return a mac80211 driver hw struct from a wiphy > + * > + * @wiphy: the &struct wiphy which we want to query > + * > + * mac80211 drivers can use this to get to their respective > + * &struct ieee80211_hw. Drivers wishing to get to their own private > + * structure can then access it via hw->priv. Note that mac802111 drivers should > + * not use wiphy_priv() to try to get their private driver structure as this > + * is already used internally by mac80211. > + */ > +struct ieee80211_hw *wiphy_to_ieee80211_hw(struct wiphy *wiphy); > + > +/** > * SET_IEEE80211_DEV - set device for 802.11 hardware > * > * @hw: the &struct ieee80211_hw to set the device for > diff --git a/net/mac80211/util.c b/net/mac80211/util.c > index 963e047..9016c8d 100644 > --- a/net/mac80211/util.c > +++ b/net/mac80211/util.c > @@ -41,6 +41,15 @@ const unsigned char rfc1042_header[] __aligned(2) = > const unsigned char bridge_tunnel_header[] __aligned(2) = > { 0xaa, 0xaa, 0x03, 0x00, 0x00, 0xf8 }; > > +struct ieee80211_hw *wiphy_to_ieee80211_hw(struct wiphy *wiphy) > +{ > + struct ieee80211_local *local; > + BUG_ON(!wiphy); > + > + local = wiphy_priv(wiphy); > + return &local->hw; > +} > +EXPORT_SYMBOL(wiphy_to_ieee80211_hw); > > u8 *ieee80211_get_bssid(struct ieee80211_hdr *hdr, size_t len, > enum nl80211_iftype type)
Attachment:
signature.asc
Description: This is a digitally signed message part