On 9/5/16, 10:18 AM, Jiri Pirko wrote: > From: Nogah Frankel <nog...@mellanox.com> > > Add a new ndo to return statistics for offloaded operation. > Since there can be many different offloaded operation with many > stats types, the ndo gets an attribute id by which it knows which > stats are wanted. The ndo also gets a void pointer to be cast according > to the attribute id. > > Signed-off-by: Nogah Frankel <nog...@mellanox.com> > Signed-off-by: Jiri Pirko <j...@mellanox.com> > --- > include/linux/netdevice.h | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h > index 67bb978..2d2c09b 100644 > --- a/include/linux/netdevice.h > +++ b/include/linux/netdevice.h > @@ -924,6 +924,14 @@ struct netdev_xdp { > * 3. Update dev->stats asynchronously and atomically, and define > * neither operation. > * > + * bool (*ndo_has_offload_stats)(int attr_id) > + * Return true if this device supports offload stats of this attr_id. > + * > + * int (*ndo_get_offload_stats)(int attr_id, const struct net_device *dev, > + * void *attr_data) > + * Get statistics for offload operations by attr_id. Write it into the > + * attr_data pointer. > + *
this could have been a single ndo_get_offload_stats like the others. and possibly new ndo_get_offload_stats_size. Ideally the driver could do the nest. But, this can be changed if needed in the future. > * int (*ndo_vlan_rx_add_vid)(struct net_device *dev, __be16 proto, u16 vid); > * If device supports VLAN filtering this function is called when a > * VLAN id is registered. > @@ -1155,6 +1163,10 @@ struct net_device_ops { > > struct rtnl_link_stats64* (*ndo_get_stats64)(struct net_device *dev, > struct rtnl_link_stats64 > *storage); > + bool (*ndo_has_offload_stats)(int attr_id); > + int (*ndo_get_offload_stats)(int attr_id, > + const struct > net_device *dev, > + void *attr_data); > struct net_device_stats* (*ndo_get_stats)(struct net_device *dev); > > int (*ndo_vlan_rx_add_vid)(struct net_device *dev,