summaryrefslogtreecommitdiffstats
path: root/package/d80211/src/ieee80211_sysfs_sta.c
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2007-05-26 16:35:32 +0000
committerFelix Fietkau <nbd@openwrt.org>2007-05-26 16:35:32 +0000
commit0016ac20053ff8675fb038f82a7803ba1bcb162d (patch)
tree37904d2ef3fd56ce27f30690fd82ffaeda84edab /package/d80211/src/ieee80211_sysfs_sta.c
parentec69f770037648285896608c2788d8f14c6cc0ae (diff)
downloadmaster-31e0f0ae-0016ac20053ff8675fb038f82a7803ba1bcb162d.tar.gz
master-31e0f0ae-0016ac20053ff8675fb038f82a7803ba1bcb162d.tar.bz2
master-31e0f0ae-0016ac20053ff8675fb038f82a7803ba1bcb162d.zip
nuke the old d80211 backport - will be replaced soon
SVN-Revision: 7340
Diffstat (limited to 'package/d80211/src/ieee80211_sysfs_sta.c')
-rw-r--r--package/d80211/src/ieee80211_sysfs_sta.c437
1 files changed, 0 insertions, 437 deletions
diff --git a/package/d80211/src/ieee80211_sysfs_sta.c b/package/d80211/src/ieee80211_sysfs_sta.c
deleted file mode 100644
index 738daf5af7..0000000000
--- a/package/d80211/src/ieee80211_sysfs_sta.c
+++ /dev/null
@@ -1,437 +0,0 @@
-/*
- * Copyright 2003-2005, Devicescape Software, Inc.
- * Copyright (c) 2006 Jiri Benc <jbenc@suse.cz>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <linux/kobject.h>
-#include <linux/sysfs.h>
-#include "ieee80211_i.h"
-#include "ieee80211_key.h"
-#include "sta_info.h"
-
-static ssize_t sta_sysfs_show(struct kobject *, struct attribute *, char *);
-static ssize_t key_sysfs_show(struct kobject *, struct attribute *, char *);
-
-static struct sysfs_ops sta_ktype_ops = {
- .show = sta_sysfs_show,
-};
-
-static struct sysfs_ops key_ktype_ops = {
- .show = key_sysfs_show,
-};
-
-/* sta attributtes */
-
-#define STA_SHOW(name, field, format_string) \
-static ssize_t show_sta_##name(const struct sta_info *sta, char *buf) \
-{ \
- return sprintf(buf, format_string, sta->field); \
-}
-#define STA_SHOW_D(name, field) STA_SHOW(name, field, "%d\n")
-#define STA_SHOW_U(name, field) STA_SHOW(name, field, "%u\n")
-#define STA_SHOW_LU(name, field) STA_SHOW(name, field, "%lu\n")
-#define STA_SHOW_S(name, field) STA_SHOW(name, field, "%s\n")
-
-#define STA_SHOW_RATE(name, field) \
-static ssize_t show_sta_##name(const struct sta_info *sta, char *buf) \
-{ \
- struct ieee80211_local *local = sta->dev->ieee80211_ptr; \
- return sprintf(buf, "%d\n", \
- (sta->field >= 0 && \
- sta->field < local->num_curr_rates) ? \
- local->curr_rates[sta->field].rate : -1); \
-}
-
-#define __STA_ATTR(name) \
-static struct sta_attribute sta_attr_##name = \
- __ATTR(name, S_IRUGO, show_sta_##name, NULL)
-
-#define STA_ATTR(name, field, format) \
- STA_SHOW_##format(name, field) \
- __STA_ATTR(name)
-
-STA_ATTR(aid, aid, D);
-STA_ATTR(key_idx_compression, key_idx_compression, D);
-STA_ATTR(dev, dev->name, S);
-STA_ATTR(vlan_id, vlan_id, D);
-STA_ATTR(rx_packets, rx_packets, LU);
-STA_ATTR(tx_packets, tx_packets, LU);
-STA_ATTR(rx_bytes, rx_bytes, LU);
-STA_ATTR(tx_bytes, tx_bytes, LU);
-STA_ATTR(rx_duplicates, num_duplicates, LU);
-STA_ATTR(rx_fragments, rx_fragments, LU);
-STA_ATTR(rx_dropped, rx_dropped, LU);
-STA_ATTR(tx_fragments, tx_fragments, LU);
-STA_ATTR(tx_filtered, tx_filtered_count, LU);
-STA_ATTR(txrate, txrate, RATE);
-STA_ATTR(last_txrate, last_txrate, RATE);
-STA_ATTR(tx_retry_failed, tx_retry_failed, LU);
-STA_ATTR(tx_retry_count, tx_retry_count, LU);
-STA_ATTR(last_rssi, last_rssi, D);
-STA_ATTR(last_signal, last_signal, D);
-STA_ATTR(last_noise, last_noise, D);
-STA_ATTR(channel_use, channel_use, D);
-STA_ATTR(wep_weak_iv_count, wep_weak_iv_count, D);
-
-static ssize_t show_sta_flags(const struct sta_info *sta, char *buf)
-{
- return sprintf(buf, "%s%s%s%s%s%s%s%s%s",
- sta->flags & WLAN_STA_AUTH ? "AUTH\n" : "",
- sta->flags & WLAN_STA_ASSOC ? "ASSOC\n" : "",
- sta->flags & WLAN_STA_PS ? "PS\n" : "",
- sta->flags & WLAN_STA_TIM ? "TIM\n" : "",
- sta->flags & WLAN_STA_PERM ? "PERM\n" : "",
- sta->flags & WLAN_STA_AUTHORIZED ? "AUTHORIZED\n" : "",
- sta->flags & WLAN_STA_SHORT_PREAMBLE ?
- "SHORT PREAMBLE\n" : "",
- sta->flags & WLAN_STA_WME ? "WME\n" : "",
- sta->flags & WLAN_STA_WDS ? "WDS\n" : "");
-}
-__STA_ATTR(flags);
-
-static ssize_t show_sta_num_ps_buf_frames(const struct sta_info *sta, char *buf)
-{
- return sprintf(buf, "%u\n", skb_queue_len(&sta->ps_tx_buf));
-}
-__STA_ATTR(num_ps_buf_frames);
-
-static ssize_t show_sta_last_ack_rssi(const struct sta_info *sta, char *buf)
-{
- return sprintf(buf, "%d %d %d\n", sta->last_ack_rssi[0],
- sta->last_ack_rssi[1], sta->last_ack_rssi[2]);
-}
-__STA_ATTR(last_ack_rssi);
-
-static ssize_t show_sta_last_ack_ms(const struct sta_info *sta, char *buf)
-{
- return sprintf(buf, "%d\n", sta->last_ack ?
- jiffies_to_msecs(jiffies - sta->last_ack) : -1);
-}
-__STA_ATTR(last_ack_ms);
-
-static ssize_t show_sta_inactive_ms(const struct sta_info *sta, char *buf)
-{
- return sprintf(buf, "%d\n", jiffies_to_msecs(jiffies - sta->last_rx));
-}
-__STA_ATTR(inactive_ms);
-
-static ssize_t show_sta_last_seq_ctrl(const struct sta_info *sta, char *buf)
-{
- int i;
- char *p = buf;
-
- for (i = 0; i < NUM_RX_DATA_QUEUES; i++)
- p += sprintf(p, "%x ", sta->last_seq_ctrl[i]);
- p += sprintf(p, "\n");
- return (p - buf);
-}
-__STA_ATTR(last_seq_ctrl);
-
-#ifdef CONFIG_D80211_DEBUG_COUNTERS
-static ssize_t show_sta_wme_rx_queue(const struct sta_info *sta, char *buf)
-{
- int i;
- char *p = buf;
-
- for (i = 0; i < NUM_RX_DATA_QUEUES; i++)
- p += sprintf(p, "%u ", sta->wme_rx_queue[i]);
- p += sprintf(p, "\n");
- return (p - buf);
-}
-__STA_ATTR(wme_rx_queue);
-
-static ssize_t show_sta_wme_tx_queue(const struct sta_info *sta, char *buf)
-{
- int i;
- char *p = buf;
-
- for (i = 0; i < NUM_RX_DATA_QUEUES; i++)
- p += sprintf(p, "%u ", sta->wme_tx_queue[i]);
- p += sprintf(p, "\n");
- return (p - buf);
-}
-__STA_ATTR(wme_tx_queue);
-#endif
-
-static struct attribute *sta_ktype_attrs[] = {
- &sta_attr_aid.attr,
- &sta_attr_key_idx_compression.attr,
- &sta_attr_dev.attr,
- &sta_attr_vlan_id.attr,
- &sta_attr_rx_packets.attr,
- &sta_attr_tx_packets.attr,
- &sta_attr_rx_bytes.attr,
- &sta_attr_tx_bytes.attr,
- &sta_attr_rx_duplicates.attr,
- &sta_attr_rx_fragments.attr,
- &sta_attr_rx_dropped.attr,
- &sta_attr_tx_fragments.attr,
- &sta_attr_tx_filtered.attr,
- &sta_attr_txrate.attr,
- &sta_attr_last_txrate.attr,
- &sta_attr_tx_retry_failed.attr,
- &sta_attr_tx_retry_count.attr,
- &sta_attr_last_rssi.attr,
- &sta_attr_last_signal.attr,
- &sta_attr_last_noise.attr,
- &sta_attr_channel_use.attr,
- &sta_attr_wep_weak_iv_count.attr,
-
- &sta_attr_flags.attr,
- &sta_attr_num_ps_buf_frames.attr,
- &sta_attr_last_ack_rssi.attr,
- &sta_attr_last_ack_ms.attr,
- &sta_attr_inactive_ms.attr,
- &sta_attr_last_seq_ctrl.attr,
-#ifdef CONFIG_D80211_DEBUG_COUNTERS
- &sta_attr_wme_rx_queue.attr,
- &sta_attr_wme_tx_queue.attr,
-#endif
- NULL
-};
-
-/* keys attributtes */
-
-struct key_attribute {
- struct attribute attr;
- ssize_t (*show)(const struct ieee80211_key *, char *buf);
- ssize_t (*store)(struct ieee80211_key *, const char *buf,
- size_t count);
-};
-
-#define KEY_SHOW(name, field, format_string) \
-static ssize_t show_key_##name(const struct ieee80211_key *key, char *buf)\
-{ \
- return sprintf(buf, format_string, key->field); \
-}
-#define KEY_SHOW_D(name, field) KEY_SHOW(name, field, "%d\n")
-
-#define __KEY_ATTR(name) \
-static struct key_attribute key_attr_##name = \
- __ATTR(name, S_IRUSR, show_key_##name, NULL)
-
-#define KEY_ATTR(name, field, format) \
- KEY_SHOW_##format(name, field) \
- __KEY_ATTR(name)
-
-KEY_ATTR(length, keylen, D);
-KEY_ATTR(sw_encrypt, force_sw_encrypt, D);
-KEY_ATTR(index, keyidx, D);
-KEY_ATTR(hw_index, hw_key_idx, D);
-KEY_ATTR(tx_rx_count, tx_rx_count, D);
-
-static ssize_t show_key_algorithm(const struct ieee80211_key *key, char *buf)
-{
- char *alg;
-
- switch (key->alg) {
- case ALG_WEP:
- alg = "WEP";
- break;
- case ALG_TKIP:
- alg = "TKIP";
- break;
- case ALG_CCMP:
- alg = "CCMP";
- break;
- default:
- return 0;
- }
- return sprintf(buf, "%s\n", alg);
-}
-__KEY_ATTR(algorithm);
-
-static ssize_t show_key_tx_spec(const struct ieee80211_key *key, char *buf)
-{
- const u8 *tpn;
-
- switch (key->alg) {
- case ALG_WEP:
- return sprintf(buf, "\n");
- case ALG_TKIP:
- return sprintf(buf, "%08x %04x\n", key->u.tkip.iv32,
- key->u.tkip.iv16);
- case ALG_CCMP:
- tpn = key->u.ccmp.tx_pn;
- return sprintf(buf, "%02x%02x%02x%02x%02x%02x\n", tpn[0],
- tpn[1], tpn[2], tpn[3], tpn[4], tpn[5]);
- default:
- return 0;
- }
-}
-__KEY_ATTR(tx_spec);
-
-static ssize_t show_key_rx_spec(const struct ieee80211_key *key, char *buf)
-{
- int i;
- const u8 *rpn;
- char *p = buf;
-
- switch (key->alg) {
- case ALG_WEP:
- return sprintf(buf, "\n");
- case ALG_TKIP:
- for (i = 0; i < NUM_RX_DATA_QUEUES; i++)
- p += sprintf(p, "%08x %04x\n",
- key->u.tkip.iv32_rx[i],
- key->u.tkip.iv16_rx[i]);
- return (p - buf);
- case ALG_CCMP:
- for (i = 0; i < NUM_RX_DATA_QUEUES; i++) {
- rpn = key->u.ccmp.rx_pn[i];
- p += sprintf(p, "%02x%02x%02x%02x%02x%02x\n", rpn[0],
- rpn[1], rpn[2], rpn[3], rpn[4], rpn[5]);
- }
- return (p - buf);
- default:
- return 0;
- }
-}
-__KEY_ATTR(rx_spec);
-
-static ssize_t show_key_replays(const struct ieee80211_key *key, char *buf)
-{
- if (key->alg != ALG_CCMP)
- return 0;
- return sprintf(buf, "%u\n", key->u.ccmp.replays);
-}
-__KEY_ATTR(replays);
-
-static ssize_t show_key_key(const struct ieee80211_key *key, char *buf)
-{
- int i;
- char *p = buf;
-
- for (i = 0; i < key->keylen; i++)
- p += sprintf(p, "%02x", key->key[i]);
- p += sprintf(p, "\n");
- return (p - buf);
-}
-__KEY_ATTR(key);
-
-static struct attribute *key_ktype_attrs[] = {
- &key_attr_length.attr,
- &key_attr_sw_encrypt.attr,
- &key_attr_index.attr,
- &key_attr_hw_index.attr,
- &key_attr_tx_rx_count.attr,
- &key_attr_algorithm.attr,
- &key_attr_tx_spec.attr,
- &key_attr_rx_spec.attr,
- &key_attr_replays.attr,
- &key_attr_key.attr,
- NULL
-};
-
-/* structures and functions */
-
-static struct kobj_type sta_ktype = {
- .release = sta_info_release,
- .sysfs_ops = &sta_ktype_ops,
- .default_attrs = sta_ktype_attrs,
-};
-
-static struct kobj_type key_ktype = {
- .release = ieee80211_key_release,
- .sysfs_ops = &key_ktype_ops,
- .default_attrs = key_ktype_attrs,
-};
-
-static ssize_t sta_sysfs_show(struct kobject *kobj, struct attribute *attr,
- char *buf)
-{
- struct sta_attribute *sta_attr;
- struct sta_info *sta;
-
- sta_attr = container_of(attr, struct sta_attribute, attr);
- sta = container_of(kobj, struct sta_info, kobj);
- return sta_attr->show(sta, buf);
-}
-
-static ssize_t key_sysfs_show(struct kobject *kobj, struct attribute *attr,
- char *buf)
-{
- struct key_attribute *key_attr;
- struct ieee80211_key *key;
-
- key_attr = container_of(attr, struct key_attribute, attr);
- key = container_of(kobj, struct ieee80211_key, kobj);
- return key_attr->show(key, buf);
-}
-
-int ieee80211_sta_kset_sysfs_register(struct ieee80211_local *local)
-{
- int res;
-
- res = kobject_set_name(&local->sta_kset.kobj, "sta");
- if (res)
- return res;
- local->sta_kset.kobj.parent = &local->class_dev.kobj;
- local->sta_kset.ktype = &sta_ktype;
- return kset_register(&local->sta_kset);
-}
-
-void ieee80211_sta_kset_sysfs_unregister(struct ieee80211_local *local)
-{
- kset_unregister(&local->sta_kset);
-}
-
-int ieee80211_key_kset_sysfs_register(struct ieee80211_sub_if_data *sdata)
-{
- int res;
-
- res = kobject_set_name(&sdata->key_kset.kobj, "keys");
- if (res)
- return res;
- sdata->key_kset.kobj.parent = &sdata->dev->class_dev.kobj;
- sdata->key_kset.ktype = &key_ktype;
- return kset_register(&sdata->key_kset);
-}
-
-void ieee80211_key_kset_sysfs_unregister(struct ieee80211_sub_if_data *sdata)
-{
- kset_unregister(&sdata->key_kset);
-}
-
-int ieee80211_sta_sysfs_add(struct sta_info *sta)
-{
- return kobject_add(&sta->kobj);
-}
-
-void ieee80211_sta_sysfs_remove(struct sta_info *sta)
-{
- kobject_del(&sta->kobj);
-}
-
-void ieee80211_key_sysfs_set_kset(struct ieee80211_key *key, struct kset *kset)
-{
- key->kobj.kset = kset;
- if (!kset)
- key->kobj.ktype = &key_ktype;
-}
-
-int ieee80211_key_sysfs_add(struct ieee80211_key *key)
-{
- return kobject_add(&key->kobj);
-}
-
-void ieee80211_key_sysfs_remove(struct ieee80211_key *key)
-{
- if (key)
- kobject_del(&key->kobj);
-}
-
-int ieee80211_key_sysfs_add_default(struct ieee80211_sub_if_data *sdata)
-{
- return sysfs_create_link(&sdata->key_kset.kobj,
- &sdata->default_key->kobj, "default");
-}
-
-void ieee80211_key_sysfs_remove_default(struct ieee80211_sub_if_data *sdata)
-{
- sysfs_remove_link(&sdata->key_kset.kobj, "default");
-}