diff options
author | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2007-11-16 03:10:56 +0000 |
---|---|---|
committer | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2007-11-16 03:10:56 +0000 |
commit | 5fe95d1b660bed238f8f53d6c7360f44b5ce9824 (patch) | |
tree | f75dc7eaabf7bd7baacc8cc8440484d88d3666e2 /package/mac80211/patches/025-mac80211-get-sta.patch | |
parent | a4d094be2ac657698039b16163822b8ccd32f0d9 (diff) |
fix up hostapd for mac80211
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@9554 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/mac80211/patches/025-mac80211-get-sta.patch')
-rw-r--r-- | package/mac80211/patches/025-mac80211-get-sta.patch | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/package/mac80211/patches/025-mac80211-get-sta.patch b/package/mac80211/patches/025-mac80211-get-sta.patch new file mode 100644 index 000000000..868ca86fa --- /dev/null +++ b/package/mac80211/patches/025-mac80211-get-sta.patch @@ -0,0 +1,51 @@ +Subject: mac80211: implement station stats retrieval + +This implements the required cfg80211 callback in mac80211 +to allow userspace to get station statistics. + +Signed-off-by: Johannes Berg <johannes@sipsolutions.net> + +--- + net/mac80211/cfg.c | 26 ++++++++++++++++++++++++++ + 1 file changed, 26 insertions(+) + +--- everything.orig/net/mac80211/cfg.c 2007-11-08 17:15:51.801523493 +0100 ++++ everything/net/mac80211/cfg.c 2007-11-08 17:17:01.921529351 +0100 +@@ -617,6 +617,31 @@ static int ieee80211_change_station(stru + 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, +@@ -631,4 +656,5 @@ struct cfg80211_ops mac80211_config_ops + .add_station = ieee80211_add_station, + .del_station = ieee80211_del_station, + .change_station = ieee80211_change_station, ++ .get_station = ieee80211_get_station, + }; |