Commit 7bbdd2d9 authored by Johannes Berg's avatar Johannes Berg Committed by David S. Miller

mac80211: implement station stats retrieval

This implements the required cfg80211 callback in mac80211
to allow userspace to get station statistics.
Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent fd5b74dc
...@@ -269,6 +269,31 @@ static int ieee80211_config_default_key(struct wiphy *wiphy, ...@@ -269,6 +269,31 @@ static int ieee80211_config_default_key(struct wiphy *wiphy,
return 0; 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 = { struct cfg80211_ops mac80211_config_ops = {
.add_virtual_intf = ieee80211_add_iface, .add_virtual_intf = ieee80211_add_iface,
.del_virtual_intf = ieee80211_del_iface, .del_virtual_intf = ieee80211_del_iface,
...@@ -277,4 +302,5 @@ struct cfg80211_ops mac80211_config_ops = { ...@@ -277,4 +302,5 @@ struct cfg80211_ops mac80211_config_ops = {
.del_key = ieee80211_del_key, .del_key = ieee80211_del_key,
.get_key = ieee80211_get_key, .get_key = ieee80211_get_key,
.set_default_key = ieee80211_config_default_key, .set_default_key = ieee80211_config_default_key,
.get_station = ieee80211_get_station,
}; };
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment