diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2007-03-28 17:29:08 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-04-26 01:28:26 -0400 |
commit | c45d286e72dd72c0229dc9e2849743ba427fee84 (patch) | |
tree | 1fb22a5e71c89043671380087def5bc419a37886 /include/linux/netdevice.h | |
parent | f85958151900f9d30fa5ff941b0ce71eaa45a7de (diff) |
[NET]: Inline net_device_stats
Network drivers which keep stats allocate their own stats structure
then write a get_stats() function to return them. It would be nice if
this were done by default.
1) Add a new "stats" field to "struct net_device".
2) Add a new feature field to say "this driver uses the internal one"
3) Have a default "get_stats" which returns NULL if that feature not set.
4) Change callers to check result of get_stats call for NULL, not if
->get_stats is set.
This should not break backwards compatibility with older drivers, yet
allow modern drivers to shed some boilerplate code.
Lightly tested: works for a modified lguest network driver.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux/netdevice.h')
-rw-r--r-- | include/linux/netdevice.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 1a528548cd1d..71fc8ff4888b 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -323,6 +323,7 @@ struct net_device | |||
323 | #define NETIF_F_VLAN_CHALLENGED 1024 /* Device cannot handle VLAN packets */ | 323 | #define NETIF_F_VLAN_CHALLENGED 1024 /* Device cannot handle VLAN packets */ |
324 | #define NETIF_F_GSO 2048 /* Enable software GSO. */ | 324 | #define NETIF_F_GSO 2048 /* Enable software GSO. */ |
325 | #define NETIF_F_LLTX 4096 /* LockLess TX */ | 325 | #define NETIF_F_LLTX 4096 /* LockLess TX */ |
326 | #define NETIF_F_INTERNAL_STATS 8192 /* Use stats structure in net_device */ | ||
326 | 327 | ||
327 | /* Segmentation offload features */ | 328 | /* Segmentation offload features */ |
328 | #define NETIF_F_GSO_SHIFT 16 | 329 | #define NETIF_F_GSO_SHIFT 16 |
@@ -347,6 +348,7 @@ struct net_device | |||
347 | 348 | ||
348 | 349 | ||
349 | struct net_device_stats* (*get_stats)(struct net_device *dev); | 350 | struct net_device_stats* (*get_stats)(struct net_device *dev); |
351 | struct net_device_stats stats; | ||
350 | 352 | ||
351 | /* List of functions to handle Wireless Extensions (instead of ioctl). | 353 | /* List of functions to handle Wireless Extensions (instead of ioctl). |
352 | * See <net/iw_handler.h> for details. Jean II */ | 354 | * See <net/iw_handler.h> for details. Jean II */ |