On 8/9/2018 11:03 AM, Yifeng Sun wrote:
There is a difference regarding how skb_tunnel_info is stored in skb
between ovs and upstream kernel. In ovs's compatible gre module,
skb_tunnel_info is stored in skb->cb while in upstream kernel, it is
referenced by skb->_skb_refdst.

The upstream netdev code should be okay.

To fix this issue, my guess is that either we comply to the kernel's way
by using skb->_skb_refdst to store skb_tunnel_info, or we don't use
IPCB at all.

Ah, I see...

We must comply with the kernel method for any given kernel.  We can't be sure that we'll only handle
or own packets.

Can't this be fixed by a compatibility layer #define in acinclude.m4 so that kernels that store it in
skb->cb vs. kernels that store it in skb->__skb_refdst will both work?

Thanks,

- Greg


Thanks,
Yifeng



On Thu, Aug 9, 2018 at 10:28 AM, Gregory Rose <[email protected] <mailto:[email protected]>> wrote:


    On 8/8/2018 6:50 PM, William Tu wrote:

        thanks for the fix.

        On Wed, Aug 8, 2018 at 11:32 AM, Yifeng Sun
        <[email protected] <mailto:[email protected]>> wrote:

            In compatable gre module, skb->cb is used as ovs_gso_cb.
            This bug clears the 16-23 bit in the address of
            ovs_gso_cb.tun_dst.

        can you explain more about ovs_gso_cb?

            Signed-off-by: Yifeng Sun <[email protected]
            <mailto:[email protected]>>
            ---
              datapath/linux/compat/ip6_gre.c | 1 -
              1 file changed, 1 deletion(-)

            diff --git a/datapath/linux/compat/ip6_gre.c
            b/datapath/linux/compat/ip6_
            gre.c
            index 54a76ab..16c1f72 100644
            --- a/datapath/linux/compat/ip6_gre.c
            +++ b/datapath/linux/compat/ip6_gre.c
            @@ -1146,7 +1146,6 @@ static netdev_tx_t
            ip6erspan_tunnel_xmit(struct
            sk_buff *skb,
                             goto tx_err;

                     t->parms.o_flags &= ~TUNNEL_KEY;
            -       IPCB(skb)->flags = 0;

        The upstream linux kernel has the above code.
        Do we need to fix the upstream kernel then backport?


    That would be the normal work flow.

    Yifeng,

    Can you please post a patch with this fix to netdev?  Taking
    William's comments into account as well.

    Good catch and thanks for the fix!

    - Greg


        Thanks,
        William
        _______________________________________________
        dev mailing list
        [email protected] <mailto:[email protected]>
        https://mail.openvswitch.org/mailman/listinfo/ovs-dev
        <https://mail.openvswitch.org/mailman/listinfo/ovs-dev>




_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to