Message ID | 1473095937-27100-2-git-send-email-jiri@resnulli.us |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
On 9/5/16, 10:18 AM, Jiri Pirko wrote: > From: Nogah Frankel <nogahf@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 <nogahf@mellanox.com> > Signed-off-by: Jiri Pirko <jiri@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,
Tue, Sep 06, 2016 at 05:08:25PM CEST, roopa@cumulusnetworks.com wrote: >On 9/5/16, 10:18 AM, Jiri Pirko wrote: >> From: Nogah Frankel <nogahf@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 <nogahf@mellanox.com> >> Signed-off-by: Jiri Pirko <jiri@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. Size is determined by the attribute. >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, >
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. + * * 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,