From 4b30557bc5842e52092ceb27dc80efd4719509ca Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Wed, 19 Dec 2007 02:03:37 +0100 Subject: [PATCH] --- yaml --- r: 78613 b: refs/heads/master c: 7bbdd2d987971f9d123a2db89ed921bf02e34f9a h: refs/heads/master i: 78611: d1f796b33ec789f679485ecafebcf55ee445fa0e v: v3 --- [refs] | 2 +- trunk/net/mac80211/cfg.c | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index a6b026b395ba..3696f7f1c862 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: fd5b74dcb88cfc109d6576b22deaef6f47f82c12 +refs/heads/master: 7bbdd2d987971f9d123a2db89ed921bf02e34f9a diff --git a/trunk/net/mac80211/cfg.c b/trunk/net/mac80211/cfg.c index 4c1ce353c662..11156b381ec3 100644 --- a/trunk/net/mac80211/cfg.c +++ b/trunk/net/mac80211/cfg.c @@ -269,6 +269,31 @@ static int ieee80211_config_default_key(struct wiphy *wiphy, return 0; } +static int ieee80211_get_station(struct wiphy *wiphy, struct net_device *dev, + u8 *mac, struct station_stats *stats) +{ + struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr); + struct sta_info *sta; + + sta = sta_info_get(local, mac); + if (!sta) + return -ENOENT; + + /* XXX: verify sta->dev == dev */ + + stats->filled = STATION_STAT_INACTIVE_TIME | + STATION_STAT_RX_BYTES | + STATION_STAT_TX_BYTES; + + stats->inactive_time = jiffies_to_msecs(jiffies - sta->last_rx); + stats->rx_bytes = sta->rx_bytes; + stats->tx_bytes = sta->tx_bytes; + + sta_info_put(sta); + + return 0; +} + struct cfg80211_ops mac80211_config_ops = { .add_virtual_intf = ieee80211_add_iface, .del_virtual_intf = ieee80211_del_iface, @@ -277,4 +302,5 @@ struct cfg80211_ops mac80211_config_ops = { .del_key = ieee80211_del_key, .get_key = ieee80211_get_key, .set_default_key = ieee80211_config_default_key, + .get_station = ieee80211_get_station, };