mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-20 21:51:05 +00:00
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
4 changed files with 69 additions and 43 deletions
|
@ -5,6 +5,8 @@
|
||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
#include <linux/nl80211.h>
|
#include <linux/nl80211.h>
|
||||||
#include <net/genetlink.h>
|
#include <net/genetlink.h>
|
||||||
|
/* remove once we remove the wext stuff */
|
||||||
|
#include <net/iw_handler.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 802.11 configuration in-kernel interface
|
* 802.11 configuration in-kernel interface
|
||||||
|
@ -524,4 +526,9 @@ struct cfg80211_ops {
|
||||||
enum nl80211_sec_chan_offset);
|
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 */
|
#endif /* __NET_CFG80211_H */
|
||||||
|
|
|
@ -135,48 +135,6 @@ static int ieee80211_ioctl_siwgenie(struct net_device *dev,
|
||||||
return -EOPNOTSUPP;
|
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,
|
static int ieee80211_ioctl_giwrange(struct net_device *dev,
|
||||||
struct iw_request_info *info,
|
struct iw_request_info *info,
|
||||||
struct iw_point *data, char *extra)
|
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[] =
|
static const iw_handler ieee80211_handler[] =
|
||||||
{
|
{
|
||||||
(iw_handler) NULL, /* SIOCSIWCOMMIT */
|
(iw_handler) NULL, /* SIOCSIWCOMMIT */
|
||||||
(iw_handler) ieee80211_ioctl_giwname, /* SIOCGIWNAME */
|
(iw_handler) cfg80211_wext_giwname, /* SIOCGIWNAME */
|
||||||
(iw_handler) NULL, /* SIOCSIWNWID */
|
(iw_handler) NULL, /* SIOCSIWNWID */
|
||||||
(iw_handler) NULL, /* SIOCGIWNWID */
|
(iw_handler) NULL, /* SIOCGIWNWID */
|
||||||
(iw_handler) ieee80211_ioctl_siwfreq, /* SIOCSIWFREQ */
|
(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
|
obj-$(CONFIG_LIB80211_CRYPT_TKIP) += lib80211_crypt_tkip.o
|
||||||
|
|
||||||
cfg80211-y += core.o sysfs.o radiotap.o util.o reg.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
|
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…
Add table
Add a link
Reference in a new issue