datapath: Avoid __copy_to/from_user(), __get/put_user() functions.
[openvswitch] / lib / netdev-provider.h
index 18ec1ab6e380c5a7e0c30d75ccaadbba9781edaf..eb62cc18b8f24135f365db6f2785c7cb71f513d8 100644 (file)
@@ -252,7 +252,10 @@ struct netdev_class {
      * specified by POSIX for if_nametoindex() and by SNMP for ifIndex.  An
      * ifindex value should be unique within a host and remain stable at least
      * until reboot.  SNMP says an ifindex "ranges between 1 and the value of
-     * ifNumber" but many systems do not follow this rule anyhow. */
+     * ifNumber" but many systems do not follow this rule anyhow.
+     *
+     * This function may be set to null if it would always return -EOPNOTSUPP.
+     */
     int (*get_ifindex)(const struct netdev *netdev);
 
     /* Sets 'carrier' to true if carrier is active (link light is on) on
@@ -266,9 +269,20 @@ struct netdev_class {
      * (UINT64_MAX). */
     int (*get_stats)(const struct netdev *netdev, struct netdev_stats *);
 
+    /* Sets the device stats for 'netdev' to 'stats'.
+     *
+     * Most network devices won't support this feature and will set this
+     * function pointer to NULL, which is equivalent to returning EOPNOTSUPP.
+     *
+     * Some network devices might only allow setting their stats to 0. */
+    int (*set_stats)(struct netdev *netdev, const struct netdev_stats *);
+
     /* Stores the features supported by 'netdev' into each of '*current',
      * '*advertised', '*supported', and '*peer'.  Each value is a bitmap of
-     * "enum ofp_port_features" bits, in host byte order. */
+     * "enum ofp_port_features" bits, in host byte order.
+     *
+     * This function may be set to null if it would always return EOPNOTSUPP.
+     */
     int (*get_features)(struct netdev *netdev,
                         uint32_t *current, uint32_t *advertised,
                         uint32_t *supported, uint32_t *peer);