cfg80211: don't export ieee80211_get_channel
This patch makes ieee80211_get_channel a static inline defined in
cfg80211's header file which simply calls __ieee80211_get_channel
to avoid symbol clashes with the ieee80211 code.
The problem was pointed out by David Miller, thanks!
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Cc: David Miller <davem@davemloft.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
diff --git a/include/net/wireless.h b/include/net/wireless.h
index f4b77ab..667b408 100644
--- a/include/net/wireless.h
+++ b/include/net/wireless.h
@@ -304,10 +304,22 @@
*/
extern int ieee80211_frequency_to_channel(int freq);
+/*
+ * Name indirection necessary because the ieee80211 code also has
+ * a function named "ieee80211_get_channel", so if you include
+ * cfg80211's header file you get cfg80211's version, if you try
+ * to include both header files you'll (rightfully!) get a symbol
+ * clash.
+ */
+extern struct ieee80211_channel *__ieee80211_get_channel(struct wiphy *wiphy,
+ int freq);
+
/**
* ieee80211_get_channel - get channel struct from wiphy for specified frequency
*/
-extern struct ieee80211_channel *ieee80211_get_channel(struct wiphy *wiphy,
- int freq);
-
+static inline struct ieee80211_channel *
+ieee80211_get_channel(struct wiphy *wiphy, int freq)
+{
+ return __ieee80211_get_channel(wiphy, freq);
+}
#endif /* __NET_WIRELESS_H */
diff --git a/net/wireless/util.c b/net/wireless/util.c
index f3e623d..f544246 100644
--- a/net/wireless/util.c
+++ b/net/wireless/util.c
@@ -33,8 +33,8 @@
}
EXPORT_SYMBOL(ieee80211_frequency_to_channel);
-struct ieee80211_channel *ieee80211_get_channel(struct wiphy *wiphy,
- int freq)
+struct ieee80211_channel *__ieee80211_get_channel(struct wiphy *wiphy,
+ int freq)
{
enum ieee80211_band band;
struct ieee80211_supported_band *sband;
@@ -54,7 +54,7 @@
return NULL;
}
-EXPORT_SYMBOL(ieee80211_get_channel);
+EXPORT_SYMBOL(__ieee80211_get_channel);
static void set_mandatory_flags_band(struct ieee80211_supported_band *sband,
enum ieee80211_band band)