提交 df2b35b6 编写于 作者: J Johannes Berg 提交者: John W. Linville

wext: allow returning NULL stats

Currently, wext drivers cannot return NULL for stats even though
that would make the ioctl return -EOPNOTSUPP because that would
mean they are no longer listed in /proc/net/wireless. This patch
changes the wext core's behaviour to list them if they have any
wireless_handlers, but only show their stats when available, so
that drivers can start returning NULL if stats are currently not
available, reducing confusion for e.g. IBSS.
Signed-off-by: NJohannes Berg <johannes@sipsolutions.net>
Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
上级 c0acf38e
...@@ -610,6 +610,11 @@ static void wireless_seq_printf_stats(struct seq_file *seq, ...@@ -610,6 +610,11 @@ static void wireless_seq_printf_stats(struct seq_file *seq,
{ {
/* Get stats from the driver */ /* Get stats from the driver */
struct iw_statistics *stats = get_wireless_stats(dev); struct iw_statistics *stats = get_wireless_stats(dev);
static struct iw_statistics nullstats = {};
/* show device if it's wireless regardless of current stats */
if (!stats && dev->wireless_handlers)
stats = &nullstats;
if (stats) { if (stats) {
seq_printf(seq, "%6s: %04x %3d%c %3d%c %3d%c %6d %6d %6d " seq_printf(seq, "%6s: %04x %3d%c %3d%c %3d%c %6d %6d %6d "
...@@ -628,7 +633,9 @@ static void wireless_seq_printf_stats(struct seq_file *seq, ...@@ -628,7 +633,9 @@ static void wireless_seq_printf_stats(struct seq_file *seq,
stats->discard.nwid, stats->discard.code, stats->discard.nwid, stats->discard.code,
stats->discard.fragment, stats->discard.retries, stats->discard.fragment, stats->discard.retries,
stats->discard.misc, stats->miss.beacon); stats->discard.misc, stats->miss.beacon);
stats->qual.updated &= ~IW_QUAL_ALL_UPDATED;
if (stats != &nullstats)
stats->qual.updated &= ~IW_QUAL_ALL_UPDATED;
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册