diff options
| author | Zhu Yi <yi.zhu@intel.com> | 2007-02-14 03:04:24 -0500 |
|---|---|---|
| committer | Jeff Garzik <jeff@garzik.org> | 2007-04-28 11:00:54 -0400 |
| commit | 375dd24428cfe900f4ed95d301fe604f8e0d459b (patch) | |
| tree | cd2e17d66154e308199ae9f78a082426edb4fc55 /drivers/net/wireless/ipw2200.c | |
| parent | b9099ff63c75216d6ca10bce5a1abcd9293c27e6 (diff) | |
[PATCH] ipw2200: add channels sysfs entry
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>
Diffstat (limited to 'drivers/net/wireless/ipw2200.c')
| -rw-r--r-- | drivers/net/wireless/ipw2200.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/drivers/net/wireless/ipw2200.c b/drivers/net/wireless/ipw2200.c index 4839a45098c..2069908a306 100644 --- a/drivers/net/wireless/ipw2200.c +++ b/drivers/net/wireless/ipw2200.c | |||
| @@ -1847,6 +1847,52 @@ static ssize_t store_net_stats(struct device *d, struct device_attribute *attr, | |||
| 1847 | static DEVICE_ATTR(net_stats, S_IWUSR | S_IRUGO, | 1847 | static DEVICE_ATTR(net_stats, S_IWUSR | S_IRUGO, |
| 1848 | show_net_stats, store_net_stats); | 1848 | show_net_stats, store_net_stats); |
| 1849 | 1849 | ||
| 1850 | static ssize_t show_channels(struct device *d, | ||
| 1851 | struct device_attribute *attr, | ||
| 1852 | char *buf) | ||
| 1853 | { | ||
| 1854 | struct ipw_priv *priv = dev_get_drvdata(d); | ||
| 1855 | const struct ieee80211_geo *geo = ipw_get_geo(priv->ieee); | ||
| 1856 | int len = 0, i; | ||
| 1857 | |||
| 1858 | len = sprintf(&buf[len], | ||
| 1859 | "Displaying %d channels in 2.4Ghz band " | ||
| 1860 | "(802.11bg):\n", geo->bg_channels); | ||
| 1861 | |||
| 1862 | for (i = 0; i < geo->bg_channels; i++) { | ||
| 1863 | len += sprintf(&buf[len], "%d: BSS%s%s, %s, Band %s.\n", | ||
| 1864 | geo->bg[i].channel, | ||
| 1865 | geo->bg[i].flags & IEEE80211_CH_RADAR_DETECT ? | ||
| 1866 | " (radar spectrum)" : "", | ||
| 1867 | ((geo->bg[i].flags & IEEE80211_CH_NO_IBSS) || | ||
| 1868 | (geo->bg[i].flags & IEEE80211_CH_RADAR_DETECT)) | ||
| 1869 | ? "" : ", IBSS", | ||
| 1870 | geo->bg[i].flags & IEEE80211_CH_PASSIVE_ONLY ? | ||
| 1871 | "passive only" : "active/passive", | ||
| 1872 | geo->bg[i].flags & IEEE80211_CH_B_ONLY ? | ||
| 1873 | "B" : "B/G"); | ||
| 1874 | } | ||
| 1875 | |||
| 1876 | len += sprintf(&buf[len], | ||
| 1877 | "Displaying %d channels in 5.2Ghz band " | ||
| 1878 | "(802.11a):\n", geo->a_channels); | ||
| 1879 | for (i = 0; i < geo->a_channels; i++) { | ||
| 1880 | len += sprintf(&buf[len], "%d: BSS%s%s, %s.\n", | ||
| 1881 | geo->a[i].channel, | ||
| 1882 | geo->a[i].flags & IEEE80211_CH_RADAR_DETECT ? | ||
| 1883 | " (radar spectrum)" : "", | ||
| 1884 | ((geo->a[i].flags & IEEE80211_CH_NO_IBSS) || | ||
| 1885 | (geo->a[i].flags & IEEE80211_CH_RADAR_DETECT)) | ||
| 1886 | ? "" : ", IBSS", | ||
| 1887 | geo->a[i].flags & IEEE80211_CH_PASSIVE_ONLY ? | ||
| 1888 | "passive only" : "active/passive"); | ||
| 1889 | } | ||
| 1890 | |||
| 1891 | return len; | ||
| 1892 | } | ||
| 1893 | |||
| 1894 | static DEVICE_ATTR(channels, S_IRUSR, show_channels, NULL); | ||
| 1895 | |||
| 1850 | static void notify_wx_assoc_event(struct ipw_priv *priv) | 1896 | static void notify_wx_assoc_event(struct ipw_priv *priv) |
| 1851 | { | 1897 | { |
| 1852 | union iwreq_data wrqu; | 1898 | union iwreq_data wrqu; |
| @@ -11383,6 +11429,7 @@ static struct attribute *ipw_sysfs_entries[] = { | |||
| 11383 | &dev_attr_led.attr, | 11429 | &dev_attr_led.attr, |
| 11384 | &dev_attr_speed_scan.attr, | 11430 | &dev_attr_speed_scan.attr, |
| 11385 | &dev_attr_net_stats.attr, | 11431 | &dev_attr_net_stats.attr, |
| 11432 | &dev_attr_channels.attr, | ||
| 11386 | #ifdef CONFIG_IPW2200_PROMISCUOUS | 11433 | #ifdef CONFIG_IPW2200_PROMISCUOUS |
| 11387 | &dev_attr_rtap_iface.attr, | 11434 | &dev_attr_rtap_iface.attr, |
| 11388 | &dev_attr_rtap_filter.attr, | 11435 | &dev_attr_rtap_filter.attr, |
