Skip to content

Commit

Permalink
[PATCH] ipw2200: add channels sysfs entry
Browse files Browse the repository at this point in the history
Add 'channels' sysfs entry for ipw2200. The entry exports channels
information for the user space.

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Zhu Yi authored and Jeff Garzik committed Apr 28, 2007
1 parent b9099ff commit 375dd24
Showing 1 changed file with 47 additions and 0 deletions.
47 changes: 47 additions & 0 deletions drivers/net/wireless/ipw2200.c
Original file line number Diff line number Diff line change
Expand Up @@ -1847,6 +1847,52 @@ static ssize_t store_net_stats(struct device *d, struct device_attribute *attr,
static DEVICE_ATTR(net_stats, S_IWUSR | S_IRUGO,
show_net_stats, store_net_stats);

static ssize_t show_channels(struct device *d,
struct device_attribute *attr,
char *buf)
{
struct ipw_priv *priv = dev_get_drvdata(d);
const struct ieee80211_geo *geo = ipw_get_geo(priv->ieee);
int len = 0, i;

len = sprintf(&buf[len],
"Displaying %d channels in 2.4Ghz band "
"(802.11bg):\n", geo->bg_channels);

for (i = 0; i < geo->bg_channels; i++) {
len += sprintf(&buf[len], "%d: BSS%s%s, %s, Band %s.\n",
geo->bg[i].channel,
geo->bg[i].flags & IEEE80211_CH_RADAR_DETECT ?
" (radar spectrum)" : "",
((geo->bg[i].flags & IEEE80211_CH_NO_IBSS) ||
(geo->bg[i].flags & IEEE80211_CH_RADAR_DETECT))
? "" : ", IBSS",
geo->bg[i].flags & IEEE80211_CH_PASSIVE_ONLY ?
"passive only" : "active/passive",
geo->bg[i].flags & IEEE80211_CH_B_ONLY ?
"B" : "B/G");
}

len += sprintf(&buf[len],
"Displaying %d channels in 5.2Ghz band "
"(802.11a):\n", geo->a_channels);
for (i = 0; i < geo->a_channels; i++) {
len += sprintf(&buf[len], "%d: BSS%s%s, %s.\n",
geo->a[i].channel,
geo->a[i].flags & IEEE80211_CH_RADAR_DETECT ?
" (radar spectrum)" : "",
((geo->a[i].flags & IEEE80211_CH_NO_IBSS) ||
(geo->a[i].flags & IEEE80211_CH_RADAR_DETECT))
? "" : ", IBSS",
geo->a[i].flags & IEEE80211_CH_PASSIVE_ONLY ?
"passive only" : "active/passive");
}

return len;
}

static DEVICE_ATTR(channels, S_IRUSR, show_channels, NULL);

static void notify_wx_assoc_event(struct ipw_priv *priv)
{
union iwreq_data wrqu;
Expand Down Expand Up @@ -11383,6 +11429,7 @@ static struct attribute *ipw_sysfs_entries[] = {
&dev_attr_led.attr,
&dev_attr_speed_scan.attr,
&dev_attr_net_stats.attr,
&dev_attr_channels.attr,
#ifdef CONFIG_IPW2200_PROMISCUOUS
&dev_attr_rtap_iface.attr,
&dev_attr_rtap_filter.attr,
Expand Down

0 comments on commit 375dd24

Please sign in to comment.