--- net/mac80211/ieee80211.c | 1 + net/mac80211/ieee80211_i.h | 23 +++++++++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) --- wireless-dev.orig/net/mac80211/ieee80211_i.h 2007-07-19 14:59:13.892204414 +0200 +++ wireless-dev/net/mac80211/ieee80211_i.h 2007-07-19 15:36:09.473857384 +0200 @@ -444,7 +444,25 @@ struct ieee80211_sub_if_data { #endif }; -#define IEEE80211_DEV_TO_SUB_IF(dev) netdev_priv(dev) +/* for wiphy privid */ +extern void *mac80211_wiphy_privid; + +#define IEEE80211_DEV_TO_SUB_IF_NW(dev) netdev_priv(dev) + +#define IEEE80211_DEV_TO_SUB_IF(dev) ({ \ + struct ieee80211_sub_if_data *__sdata; \ + \ + __sdata = netdev_priv(dev); \ + \ + if (dev->ieee80211_ptr && dev->ieee80211_ptr->wiphy && \ + dev->ieee80211_ptr->wiphy->privid == mac80211_wiphy_privid&&\ + __sdata->local->mdev == dev) { \ + printk(KERN_DEBUG "IEEE80211_DEV_TO_SUB_IF(mdev) usage\n");\ + dump_stack(); \ + } \ + \ + __sdata; \ + }) enum { IEEE80211_RX_MSG = 1, @@ -916,7 +934,4 @@ void ieee80211_if_del_mgmt(struct ieee80 void ieee80211_regdomain_init(void); void ieee80211_set_default_regdomain(struct ieee80211_hw_mode *mode); -/* for wiphy privid */ -extern void *mac80211_wiphy_privid; - #endif /* IEEE80211_I_H */ --- wireless-dev.orig/net/mac80211/ieee80211.c 2007-07-19 15:21:14.642204414 +0200 +++ wireless-dev/net/mac80211/ieee80211.c 2007-07-19 15:35:50.593857384 +0200 @@ -42,6 +42,7 @@ /* privid for wiphys to determine whether they belong to us or not */ void *mac80211_wiphy_privid = &mac80211_wiphy_privid; +EXPORT_SYMBOL_GPL(mac80211_wiphy_privid); /* See IEEE 802.1H for LLC/SNAP encapsulation/decapsulation */ /* Ethernet-II snap header (RFC1042 for most EtherTypes) */