aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Leffler <sam@FreeBSD.org>2006-03-27 05:22:35 +0000
committerSam Leffler <sam@FreeBSD.org>2006-03-27 05:22:35 +0000
commit42568791f970b1b4869d0ea61cc05acbb56dc751 (patch)
treed979537f67ed874a76e9927dd8b65f339fe458b5
parent7c8dcf2deff15733768b00a1fd2dccbcbdc83606 (diff)
downloadsrc-42568791f970b1b4869d0ea61cc05acbb56dc751.tar.gz
src-42568791f970b1b4869d0ea61cc05acbb56dc751.zip
implement set(IEEE80211_IOC_STA_STATS) for hostapd; for
now just make it clear station statistics (could read a stat block and assign to caller can do partial changes) Reviewed by: avatar (previous version) MFC after: 1 week
Notes
Notes: svn path=/head/; revision=157172
-rw-r--r--sys/net80211/ieee80211_ioctl.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/sys/net80211/ieee80211_ioctl.c b/sys/net80211/ieee80211_ioctl.c
index 363b19420040..412114823f4d 100644
--- a/sys/net80211/ieee80211_ioctl.c
+++ b/sys/net80211/ieee80211_ioctl.c
@@ -2005,6 +2005,31 @@ found:
}
static int
+ieee80211_ioctl_setstastats(struct ieee80211com *ic, struct ieee80211req *ireq)
+{
+ struct ieee80211_node *ni;
+ u_int8_t macaddr[IEEE80211_ADDR_LEN];
+ int error;
+
+ /*
+ * NB: we could copyin ieee80211req_sta_stats so apps
+ * could make selective changes but that's overkill;
+ * just clear all stats for now.
+ */
+ if (ireq->i_len < IEEE80211_ADDR_LEN)
+ return EINVAL;
+ error = copyin(ireq->i_data, macaddr, IEEE80211_ADDR_LEN);
+ if (error != 0)
+ return error;
+ ni = ieee80211_find_node(&ic->ic_sta, macaddr);
+ if (ni == NULL)
+ return EINVAL; /* XXX */
+ memset(&ni->ni_stats, 0, sizeof(ni->ni_stats));
+ ieee80211_free_node(ni);
+ return 0;
+}
+
+static int
ieee80211_ioctl_setstatxpow(struct ieee80211com *ic, struct ieee80211req *ireq)
{
struct ieee80211_node *ni;
@@ -2498,6 +2523,9 @@ ieee80211_ioctl_set80211(struct ieee80211com *ic, u_long cmd, struct ieee80211re
case IEEE80211_IOC_MACCMD:
error = ieee80211_ioctl_setmaccmd(ic, ireq);
break;
+ case IEEE80211_IOC_STA_STATS:
+ error = ieee80211_ioctl_setstastats(ic, ireq);
+ break;
case IEEE80211_IOC_STA_TXPOW:
error = ieee80211_ioctl_setstatxpow(ic, ireq);
break;