[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20201120152548.GN1853236@lunn.ch>
Date: Fri, 20 Nov 2020 16:25:48 +0100
From: Andrew Lunn <andrew@...n.ch>
To: Huazhong Tan <tanhuazhong@...wei.com>
Cc: davem@...emloft.net, netdev@...r.kernel.org,
linux-kernel@...r.kernel.org, linuxarm@...wei.com, kuba@...nel.org,
mkubecek@...e.cz
Subject: Re: [RFC V2 net-next 1/2] ethtool: add support for controling the
type of adaptive coalescing
> @@ -310,6 +334,13 @@ int ethnl_set_coalesce(struct sk_buff *skb, struct genl_info *info)
> ret = dev->ethtool_ops->set_coalesce(dev, &coalesce);
> if (ret < 0)
> goto out_ops;
> +
> + if (ops->set_ext_coalesce) {
> + ret = ops->set_ext_coalesce(dev, &ext_coalesce);
> + if (ret < 0)
> + goto out_ops;
> + }
> +
The problem here is, if ops->set_ext_coalesce() fails, you need to
undo what dev->ethtool_ops->set_coalesce() did. From the users
perspective, this should be atomic. It does everything, or it does
nothing and returns an error code.
And that is not easy given this structure of two op calls.
Andrew
Powered by blists - more mailing lists