61 lines
1.4 KiB
C
61 lines
1.4 KiB
C
|
/*
|
||
|
* 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);
|