cfg80211: handle SIOCGIWNAME
This patch moves the SIOCGIWNAME handling from mac80211 to cfg80211. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
f650470a8f
commit
fee52678db
|
@ -5,6 +5,8 @@
|
|||
#include <linux/skbuff.h>
|
||||
#include <linux/nl80211.h>
|
||||
#include <net/genetlink.h>
|
||||
/* remove once we remove the wext stuff */
|
||||
#include <net/iw_handler.h>
|
||||
|
||||
/*
|
||||
* 802.11 configuration in-kernel interface
|
||||
|
@ -524,4 +526,9 @@ struct cfg80211_ops {
|
|||
enum nl80211_sec_chan_offset);
|
||||
};
|
||||
|
||||
/* temporary wext handlers */
|
||||
int cfg80211_wext_giwname(struct net_device *dev,
|
||||
struct iw_request_info *info,
|
||||
char *name, char *extra);
|
||||
|
||||
#endif /* __NET_CFG80211_H */
|
||||
|
|
|
@ -135,48 +135,6 @@ static int ieee80211_ioctl_siwgenie(struct net_device *dev,
|
|||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
static int ieee80211_ioctl_giwname(struct net_device *dev,
|
||||
struct iw_request_info *info,
|
||||
char *name, char *extra)
|
||||
{
|
||||
struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr);
|
||||
struct ieee80211_supported_band *sband;
|
||||
u8 is_ht = 0, is_a = 0, is_b = 0, is_g = 0;
|
||||
|
||||
|
||||
sband = local->hw.wiphy->bands[IEEE80211_BAND_5GHZ];
|
||||
if (sband) {
|
||||
is_a = 1;
|
||||
is_ht |= sband->ht_cap.ht_supported;
|
||||
}
|
||||
|
||||
sband = local->hw.wiphy->bands[IEEE80211_BAND_2GHZ];
|
||||
if (sband) {
|
||||
int i;
|
||||
/* Check for mandatory rates */
|
||||
for (i = 0; i < sband->n_bitrates; i++) {
|
||||
if (sband->bitrates[i].bitrate == 10)
|
||||
is_b = 1;
|
||||
if (sband->bitrates[i].bitrate == 60)
|
||||
is_g = 1;
|
||||
}
|
||||
is_ht |= sband->ht_cap.ht_supported;
|
||||
}
|
||||
|
||||
strcpy(name, "IEEE 802.11");
|
||||
if (is_a)
|
||||
strcat(name, "a");
|
||||
if (is_b)
|
||||
strcat(name, "b");
|
||||
if (is_g)
|
||||
strcat(name, "g");
|
||||
if (is_ht)
|
||||
strcat(name, "n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int ieee80211_ioctl_giwrange(struct net_device *dev,
|
||||
struct iw_request_info *info,
|
||||
struct iw_point *data, char *extra)
|
||||
|
@ -1146,7 +1104,7 @@ static int ieee80211_ioctl_siwencodeext(struct net_device *dev,
|
|||
static const iw_handler ieee80211_handler[] =
|
||||
{
|
||||
(iw_handler) NULL, /* SIOCSIWCOMMIT */
|
||||
(iw_handler) ieee80211_ioctl_giwname, /* SIOCGIWNAME */
|
||||
(iw_handler) cfg80211_wext_giwname, /* SIOCGIWNAME */
|
||||
(iw_handler) NULL, /* SIOCSIWNWID */
|
||||
(iw_handler) NULL, /* SIOCGIWNWID */
|
||||
(iw_handler) ieee80211_ioctl_siwfreq, /* SIOCSIWFREQ */
|
||||
|
|
|
@ -6,4 +6,5 @@ obj-$(CONFIG_LIB80211_CRYPT_CCMP) += lib80211_crypt_ccmp.o
|
|||
obj-$(CONFIG_LIB80211_CRYPT_TKIP) += lib80211_crypt_tkip.o
|
||||
|
||||
cfg80211-y += core.o sysfs.o radiotap.o util.o reg.o
|
||||
cfg80211-$(CONFIG_WIRELESS_EXT) += wext-compat.o
|
||||
cfg80211-$(CONFIG_NL80211) += nl80211.o
|
||||
|
|
60
net/wireless/wext-compat.c
Normal file
60
net/wireless/wext-compat.c
Normal file
|
@ -0,0 +1,60 @@
|
|||
/*
|
||||
* cfg80211 - wext compat code
|
||||
*
|
||||
* This is temporary code until all wireless functionality is migrated
|
||||
* into cfg80211, when that happens all the exports here go away and
|
||||
* we directly assign the wireless handlers of wireless interfaces.
|
||||
*
|
||||
* Copyright 2008 Johannes Berg <johannes@sipsolutions.net>
|
||||
*/
|
||||
|
||||
#include <linux/wireless.h>
|
||||
#include <linux/nl80211.h>
|
||||
#include <net/iw_handler.h>
|
||||
#include <net/wireless.h>
|
||||
#include <net/cfg80211.h>
|
||||
#include "core.h"
|
||||
|
||||
int cfg80211_wext_giwname(struct net_device *dev,
|
||||
struct iw_request_info *info,
|
||||
char *name, char *extra)
|
||||
{
|
||||
struct wireless_dev *wdev = dev->ieee80211_ptr;
|
||||
struct ieee80211_supported_band *sband;
|
||||
bool is_ht = false, is_a = false, is_b = false, is_g = false;
|
||||
|
||||
if (!wdev)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
sband = wdev->wiphy->bands[IEEE80211_BAND_5GHZ];
|
||||
if (sband) {
|
||||
is_a = true;
|
||||
is_ht |= sband->ht_cap.ht_supported;
|
||||
}
|
||||
|
||||
sband = wdev->wiphy->bands[IEEE80211_BAND_2GHZ];
|
||||
if (sband) {
|
||||
int i;
|
||||
/* Check for mandatory rates */
|
||||
for (i = 0; i < sband->n_bitrates; i++) {
|
||||
if (sband->bitrates[i].bitrate == 10)
|
||||
is_b = true;
|
||||
if (sband->bitrates[i].bitrate == 60)
|
||||
is_g = true;
|
||||
}
|
||||
is_ht |= sband->ht_cap.ht_supported;
|
||||
}
|
||||
|
||||
strcpy(name, "IEEE 802.11");
|
||||
if (is_a)
|
||||
strcat(name, "a");
|
||||
if (is_b)
|
||||
strcat(name, "b");
|
||||
if (is_g)
|
||||
strcat(name, "g");
|
||||
if (is_ht)
|
||||
strcat(name, "n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(cfg80211_wext_giwname);
|
Loading…
Reference in a new issue