diff options
-rw-r--r-- | include/net/gen_stats.h | 3 | ||||
-rw-r--r-- | net/core/gen_stats.c | 11 |
2 files changed, 9 insertions, 5 deletions
diff --git a/include/net/gen_stats.h b/include/net/gen_stats.h index 9a9bea508d1be..0b95cf031d6e0 100644 --- a/include/net/gen_stats.h +++ b/include/net/gen_stats.h @@ -15,7 +15,8 @@ struct gnet_dump /* Backward compatability */ int compat_tc_stats; int compat_xstats; - struct rtattr * xstats; + void * xstats; + int xstats_len; struct tc_stats tc_stats; }; diff --git a/net/core/gen_stats.c b/net/core/gen_stats.c index ebb86fbd23ab6..92eaceb064d81 100644 --- a/net/core/gen_stats.c +++ b/net/core/gen_stats.c @@ -177,8 +177,11 @@ gnet_stats_copy_queue(struct gnet_dump *d, struct gnet_stats_queue *q) int gnet_stats_copy_app(struct gnet_dump *d, void *st, int len) { - if (d->compat_xstats) - d->xstats = (struct rtattr *) d->skb->tail; + if (d->compat_xstats) { + d->xstats = st; + d->xstats_len = len; + } + return gnet_stats_copy(d, TCA_STATS_APP, st, len); } @@ -206,8 +209,8 @@ gnet_stats_finish_copy(struct gnet_dump *d) return -1; if (d->compat_xstats && d->xstats) { - if (gnet_stats_copy(d, d->compat_xstats, RTA_DATA(d->xstats), - RTA_PAYLOAD(d->xstats)) < 0) + if (gnet_stats_copy(d, d->compat_xstats, d->xstats, + d->xstats_len) < 0) return -1; } |