[ovs-dev] [PATCH] compat: Include confirm_neigh parameter if needed

Gregory Rose gvrose8192 at gmail.com
Tue Jan 7 16:35:57 UTC 2020


On 1/7/2020 1:34 AM, Simon Horman wrote:
> On Mon, Jan 06, 2020 at 01:36:34PM -0800, Greg Rose wrote:
>> A change backported to the Linux 4.14.162 LTS kernel requires
>> a boolean parameter.  Check for the presence of the parameter
>> and adjust the caller in that case.
>>
>> Passes check-kmod test with no regressions.
>>
>> Passes Travis build here:
>> https://travis-ci.org/gvrose8192/ovs-experimental/builds/633461320
>>
>> Signed-off-by: Greg Rose <gvrose8192 at gmail.com>
> Thanks Greg,
>
> I have pushed this to master with a view to quickly resolving
> the build problem there.
>
> I also plan to push the change to to branch-2.10 ... 2.12
> once I've confirmed the problem exists there and testing of those backports
> is complete:
>
>    branch-2.12: https://travis-ci.org/horms2/ovs/builds/633651396
>    branch-2.12 + backport: https://travis-ci.org/horms2/ovs/builds/633674666
>    branch-2.11: https://travis-ci.org/horms2/ovs/builds/633651456
>    branch-2.11 + backport: https://travis-ci.org/horms2/ovs/builds/633676376
>    branch-2.10: https://travis-ci.org/horms2/ovs/builds/633676916
>    branch-2.10 + backport: https://travis-ci.org/horms2/ovs/builds/633677490

Oh good, thanks!

>> ---
>>   acinclude.m4                      | 2 ++
>>   datapath/linux/compat/ip6_gre.c   | 4 ++++
>>   datapath/linux/compat/ip_tunnel.c | 5 +++++
>>   3 files changed, 11 insertions(+)
>>
>> diff --git a/acinclude.m4 b/acinclude.m4
>> index 542637a..18264c4 100644
>> --- a/acinclude.m4
>> +++ b/acinclude.m4
>> @@ -1065,6 +1065,8 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [
>>                     [OVS_DEFINE([HAVE_IP_GRE_CALC_HLEN])])
>>     OVS_GREP_IFELSE([$KSRC/include/linux/rbtree.h], [rb_link_node_rcu],
>>                     [OVS_DEFINE([HAVE_RBTREE_RB_LINK_NODE_RCU])])
>> +  OVS_GREP_IFELSE([$KSRC/include/net/dst_ops.h], [bool confirm_neigh],
>> +                  [OVS_DEFINE([HAVE_DST_OPS_CONFIRM_NEIGH])])
>>   
>>     if cmp -s datapath/linux/kcompat.h.new \
>>               datapath/linux/kcompat.h >/dev/null 2>&1; then
>> diff --git a/datapath/linux/compat/ip6_gre.c b/datapath/linux/compat/ip6_gre.c
>> index afff817..7fd3453 100644
>> --- a/datapath/linux/compat/ip6_gre.c
>> +++ b/datapath/linux/compat/ip6_gre.c
>> @@ -1089,7 +1089,11 @@ static netdev_tx_t ip6erspan_tunnel_xmit(struct sk_buff *skb,
>>   
>>   	/* TooBig packet may have updated dst->dev's mtu */
>>   	if (!t->parms.collect_md && dst && dst_mtu(dst) > dst->dev->mtu)
>> +#ifndef HAVE_DST_OPS_CONFIRM_NEIGH
>>   		dst->ops->update_pmtu(dst, NULL, skb, dst->dev->mtu);
>> +#else
>> +		dst->ops->update_pmtu(dst, NULL, skb, dst->dev->mtu, false);
>> +#endif
> Did you consider using skb_dst_update_pmtu() unconditionally?
> That may be cleaner going forwards.

Yes, but it defaults to true for the boolean parameter to confirm the 
neighbor entry
and I didn't want to change behavior for older kernels.  If you think 
that's not a concern
then I'd be happy to respin the patch using skb_dst_update_pmtu().

- Greg


More information about the dev mailing list