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. -- MST _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization