net: restore gnet_stats_basic to previous definition
authorEric Dumazet <eric.dumazet@gmail.com>
Sun, 16 Aug 2009 09:36:49 +0000 (09:36 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 18 Aug 2009 04:33:49 +0000 (21:33 -0700)
commitc1a8f1f1c8e01eab5862c8db39b49ace814e6c66
tree0679f709f70d9a91850888636a28adb79940c402
parentc6ba973b8fa97422aab4204f7d79f1d413cde925
net: restore gnet_stats_basic to previous definition

In 5e140dfc1fe87eae27846f193086724806b33c7d "net: reorder struct Qdisc
for better SMP performance" the definition of struct gnet_stats_basic
changed incompatibly, as copies of this struct are shipped to
userland via netlink.

Restoring old behavior is not welcome, for performance reason.

Fix is to use a private structure for kernel, and
teach gnet_stats_copy_basic() to convert from kernel to user land,
using legacy structure (struct gnet_stats_basic)

Based on a report and initial patch from Michael Spang.

Reported-by: Michael Spang <mspang@csclub.uwaterloo.ca>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
13 files changed:
include/linux/gen_stats.h
include/net/act_api.h
include/net/gen_stats.h
include/net/netfilter/xt_rateest.h
include/net/sch_generic.h
net/core/gen_estimator.c
net/core/gen_stats.c
net/netfilter/xt_RATEEST.c
net/sched/sch_atm.c
net/sched/sch_cbq.c
net/sched/sch_drr.c
net/sched/sch_hfsc.c
net/sched/sch_htb.c