[ovs-dev] [PATCH 5/8] datapath: Add support for kernel 4.4

pravin shelar pshelar at ovn.org
Mon Jul 18 21:43:37 UTC 2016


On Mon, Jul 18, 2016 at 11:28 AM, Jesse Gross <jesse at kernel.org> wrote:
> On Mon, Jul 18, 2016 at 4:24 AM, Pravin B Shelar <pshelar at ovn.org> wrote:
>> Most of changes are related to ip-fragment API and genetlink
>> API changes.
>>
>> Signed-off-by: Pravin B Shelar <pshelar at ovn.org>
>
> I'm getting some sparse warnings with this patch. Not all of them are
> new but I wasn't able to run it before due to my local kernel version.
>
> /home/jgross/openvswitch/datapath/linux/actions.c:822:37: warning:
> symbol 'err' shadows an earlier one
> /home/jgross/openvswitch/datapath/linux/actions.c:798:18: originally
> declared here
>
I fixed it.

> /home/jgross/openvswitch/datapath/linux/ip_tunnels_core.c:268:6:
> warning: symbol 'rpl_ip6tunnel_xmit' was not declared. Should it be
> static?
>
Fixed.
> /home/jgross/openvswitch/datapath/linux/vxlan.c:1905:45: warning:
> incorrect type in assignment (different base types)
> /home/jgross/openvswitch/datapath/linux/vxlan.c:1905:45:    expected
> restricted __be16 [usertype] dst_port
> /home/jgross/openvswitch/datapath/linux/vxlan.c:1905:45:    got int
> /home/jgross/openvswitch/datapath/linux/vxlan.c:1933:58: warning:
> incorrect type in argument 7 (different base types)
> /home/jgross/openvswitch/datapath/linux/vxlan.c:1933:58:    expected
> unsigned int [unsigned] [usertype] vni
> /home/jgross/openvswitch/datapath/linux/vxlan.c:1933:58:    got
> restricted __be32 [usertype] remote_vni
>
This is upstream issue, I will have to send patch upstream to fix it.
anyways OVS is not affected by this, so I will keep it as it is for
now.

>> diff --git a/datapath/linux/compat/include/net/genetlink.h b/datapath/linux/compat/include/net/genetlink.h
>> index c8ee81a..4b42cf7 100644
>> --- a/datapath/linux/compat/include/net/genetlink.h
>> +++ b/datapath/linux/compat/include/net/genetlink.h
> [...]
>> +#ifdef HAVE_GENL_NOTIFY_TAKES_NET
>> +#define genl_notify rpl_genl_notify
>> +void rpl_genl_notify(struct genl_family *family, struct sk_buff *skb,
>> +                    struct genl_info *info , u32 group, gfp_t flags);
>>  #endif
>
> The conditions where this is declared don't seem to match those in the
> .c file. Here it is if HAVE_GENL_NOTIFY_TAKES_NET but in the .c file
> there is a code path where !HAVE_GENL_NOTIFY_TAKES_NET (and passes in
> the family despite !HAVE_GENL_NOTIFY_TAKES_FAMILY.

ok, I simplified genl_notify() implementation.



More information about the dev mailing list