diff options
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 0000000..868ca86 --- /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, + }; |