On 2017年01月07日 03:47, Michael S. Tsirkin wrote:
+static int tun_get_coalesce(struct net_device *dev,
+                           struct ethtool_coalesce *ec)
+{
+       struct tun_struct *tun = netdev_priv(dev);
+
+       ec->rx_max_coalesced_frames = tun->rx_batched;
+
+       return 0;
+}
+
+static int tun_set_coalesce(struct net_device *dev,
+                           struct ethtool_coalesce *ec)
+{
+       struct tun_struct *tun = netdev_priv(dev);
+
+       if (ec->rx_max_coalesced_frames > NAPI_POLL_WEIGHT)
+               return -EINVAL;
So what should userspace do? Keep trying until it succeeds?
I think it's better to just use NAPI_POLL_WEIGHT instead and DTRT here.


Well, looking at how set_coalesce is implemented in other drivers, -EINVAL is usually used when user give a value that exceeds the limitation. For tuntap, what missed here is probably just a documentation for coalescing in tuntap.txt. (Or extend ethtool to return the max value). This seems much better than silently reduce the value to the limitation.

Thanks

Reply via email to