On Fri, Nov 20, 2020 at 02:39:38PM +0100, Andrew Lunn wrote:
On Fri, Nov 20, 2020 at 08:23:22AM +0100, Michal Kubecek wrote:I played with spatch a bit and it with the spatch and patch below, I got
On Fri, Nov 20, 2020 at 10:59:59AM +0800, tanhuazhong wrote:coccinella might be useful here.
On 2020/11/20 6:02, Michal Kubecek wrote:If it were just this one case, adding an extra op would be perfectly
We could use a similar approach as struct ethtool_link_ksettings, e.g.If changing the ops arguments, each driver who implement
struct kernel_ethtool_coalesce {
struct ethtool_coalesce base;
/* new members which are not part of UAPI */
}
get_coalesce() and set_coalesce() would get pointer to struct
kernel_ethtool_coalesce and ioctl code would be modified to only touch
the base (legacy?) part.
> While already changing the ops arguments, we could also add extack
pointer, either as a separate argument or as struct member (I slightly
prefer the former).
set_coalesce/get_coalesce of ethtool_ops need to be updated. Is it
acceptable adding two new ops to get/set ext_coalesce info (like
ecc31c60240b ("ethtool: Add link extended state") does)? Maybe i can send V2
in this way, and then could you help to see which one is more suitable?
fine. But from long term point of view, we should expect extending also
other existing ethtool requests and going this way for all of them would
essentially double the number of callbacks in struct ethtool_ops.
only three build failures (with allmodconfig) that would need to be
addressed manually - these drivers call the set_coalesce() callback on
device initialization.
I also tried to make the structure argument const in ->set_coalesce()
but that was more tricky as adjusting other functions that the structure
is passed to required either running the spatch three times or repeating
the same two rules three times in the spatch (or perhaps there is
a cleaner way but I'm missing relevant knowledge of coccinelle). Then
there was one more problem in i40e driver which modifies the structure
before passing it on to its helpers. It could be worked around but I'm
not sure if constifying the argument is worth these extra complications.
Michal