On 2017年01月10日 07:12, Michael S. Tsirkin wrote:
On Mon, Jan 09, 2017 at 10:39:55AM +0800, Jason Wang wrote:
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
I don't think it's better, it's mostly that
1. there's a hardware limit so it does not change much
2. default is enabled and no one bothers changing
I don't see how will tuntap.txt help if we want to change it
in the future.
Ok, so I will limit it to NAPI_POLL_WEIGHT if user gives a value that is
greater than that.
Thanks
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html