11 Aug, 2016

1 commit

  • The creation of a tunnel vport (geneve, gre, vxlan) brings up a
    corresponding netdev, a multi-step operation which can fail.

    For example, changing a vxlan vport's netdev state to 'up' binds the
    vport's socket to a UDP port - if the binding fails (e.g. due to the
    port being in use), the error is currently ignored giving the
    appearance that the tunnel vport creation completed successfully.

    Signed-off-by: Martynas Pumputis
    Acked-by: Pravin B Shelar
    Signed-off-by: David S. Miller

    Martynas Pumputis
     

18 Mar, 2016

1 commit


15 Feb, 2016

1 commit


11 Jan, 2016

1 commit

  • commit 6b001e682e90 ("openvswitch: Use Geneve device.")

    The commit above introduced 'port_no' as the name for the member of
    struct geneve_port. The correct name should be 'dst_port' as described
    in the kernel doc. Let's fix that member name and all the pertinent
    instances so that both doc and code would be consistent.

    Signed-off-by: Jean Sacren
    Acked-by: Thomas Graf
    Signed-off-by: David S. Miller

    Jean Sacren
     

03 Dec, 2015

1 commit

  • After 614732eaa12d, no refcount is maintained for the vport-vxlan module.
    This allows the userspace to remove such module while vport-vxlan
    devices still exist, which leads to later oops.

    v1 -> v2:
    - move vport 'owner' initialization in ovs_vport_ops_register()
    and make such function a macro

    Fixes: 614732eaa12d ("openvswitch: Use regular VXLAN net_device device")
    Signed-off-by: Paolo Abeni
    Signed-off-by: David S. Miller

    Paolo Abeni
     

24 Oct, 2015

1 commit

  • Conflicts:
    net/ipv6/xfrm6_output.c
    net/openvswitch/flow_netlink.c
    net/openvswitch/vport-gre.c
    net/openvswitch/vport-vxlan.c
    net/openvswitch/vport.c
    net/openvswitch/vport.h

    The openvswitch conflicts were overlapping changes. One was
    the egress tunnel info fix in 'net' and the other was the
    vport ->send() op simplification in 'net-next'.

    The xfrm6_output.c conflicts was also a simplification
    overlapping a bug fix.

    Signed-off-by: David S. Miller

    David S. Miller
     

23 Oct, 2015

1 commit

  • While transitioning to netdev based vport we broke OVS
    feature which allows user to retrieve tunnel packet egress
    information for lwtunnel devices. Following patch fixes it
    by introducing ndo operation to get the tunnel egress info.
    Same ndo operation can be used for lwtunnel devices and compat
    ovs-tnl-vport devices. So after adding such device operation
    we can remove similar operation from ovs-vport.

    Fixes: 614732eaa12d ("openvswitch: Use regular VXLAN net_device device").
    Signed-off-by: Pravin B Shelar
    Signed-off-by: David S. Miller

    Pravin B Shelar
     

22 Oct, 2015

1 commit


01 Sep, 2015

1 commit

  • Currently tun-info options pointer is used in few cases to
    pass options around. But tunnel options can be accessed using
    ip_tunnel_info_opts() API without using the pointer. Following
    patch removes the redundant pointer and consistently make use
    of API.

    Signed-off-by: Pravin B Shelar
    Acked-by: Thomas Graf
    Reviewed-by: Jesse Gross
    Signed-off-by: David S. Miller

    Pravin B Shelar
     

30 Aug, 2015

1 commit


28 Aug, 2015

1 commit

  • With help of tunnel metadata mode OVS can directly use
    Geneve devices to implement Geneve tunnels.
    This patch removes all of the OVS specific Geneve code
    and make OVS use a Geneve net_device. Basic geneve vport
    is still there to handle compatibility with current
    userspace application.

    Signed-off-by: Pravin B Shelar
    Reviewed-by: Jesse Gross
    Acked-by: Thomas Graf
    Signed-off-by: David S. Miller

    Pravin B Shelar
     

21 Aug, 2015

2 commits


22 Jul, 2015

1 commit

  • Rename the tunnel metadata data structures currently internal to
    OVS and make them generic for use by all IP tunnels.

    Both structures are kernel internal and will stay that way. Their
    members are exposed to user space through individual Netlink
    attributes by OVS. It will therefore be possible to extend/modify
    these structures without affecting user ABI.

    Signed-off-by: Thomas Graf
    Signed-off-by: David S. Miller

    Thomas Graf
     

14 May, 2015

1 commit


29 Jan, 2015

1 commit

  • Currently, it isn't possible to request checksums on the outer UDP
    header of tunnels - the TUNNEL_CSUM flag is ignored. This adds
    support for requesting that UDP checksums be computed on transmit
    and properly reported if they are present on receive.

    Signed-off-by: Jesse Gross
    Signed-off-by: David S. Miller

    Jesse Gross
     

15 Jan, 2015

2 commits

  • Introduces support for the group policy extension to the VXLAN virtual
    port. The extension is disabled by default and only enabled if the user
    has provided the respective configuration.

    ovs-vsctl add-port br0 vxlan0 -- \
    set Interface vxlan0 type=vxlan options:exts=gbp

    The configuration interface to enable the extension is based on a new
    attribute OVS_VXLAN_EXT_GBP nested inside OVS_TUNNEL_ATTR_EXTENSION
    which can carry additional extensions as needed in the future.

    The group policy metadata is stored as binary blob (struct ovs_vxlan_opts)
    internally just like Geneve options but transported as nested Netlink
    attributes to user space.

    Renames the existing TUNNEL_OPTIONS_PRESENT to TUNNEL_GENEVE_OPT with the
    binary value kept intact, a new flag TUNNEL_VXLAN_OPT is introduced.

    The attributes OVS_TUNNEL_KEY_ATTR_VXLAN_OPTS and existing
    OVS_TUNNEL_KEY_ATTR_GENEVE_OPTS are implemented mutually exclusive.

    Signed-off-by: Thomas Graf
    Signed-off-by: David S. Miller

    Thomas Graf
     
  • Introduce ovs_tunnel_route_lookup to consolidate route lookup
    shared by vxlan, gre, and geneve ports.

    Signed-off-by: Fan Du
    Signed-off-by: David S. Miller

    Fan Du
     

14 Jan, 2015

1 commit


24 Dec, 2014

1 commit

  • Today vport-send has complex error handling because it involves
    freeing skb and updating stats depending on return value from
    vport send implementation.
    This can be simplified by delegating responsibility of freeing
    skb to the vport implementation for all cases. So that
    vport-send needs just update stats.

    Fixes: 91b7514cdf ("openvswitch: Unify vport error stats
    handling")
    Signed-off-by: Pravin B Shelar
    Signed-off-by: David S. Miller

    Pravin B Shelar
     

10 Nov, 2014

2 commits

  • Help produce better optimized code.

    Signed-off-by: Thomas Graf
    Signed-off-by: Pravin B Shelar

    Thomas Graf
     
  • OVS vswitch has extended IPFIX exporter to export tunnel headers
    to improve network visibility.
    To export this information userspace needs to know egress tunnel
    for given packet. By extending packet attributes datapath can
    export egress tunnel info for given packet. So that userspace
    can ask for egress tunnel info in userspace action. This
    information is used to build IPFIX data for given flow.

    Signed-off-by: Wenyu Zhang
    Acked-by: Romain Lenglet
    Acked-by: Ben Pfaff
    Signed-off-by: Pravin B Shelar

    Wenyu Zhang
     

29 Oct, 2014

1 commit

  • The internal and netdev vport remain part of openvswitch.ko. Encap
    vports including vxlan, gre, and geneve can be built as separate
    modules and are loaded on demand. Modules can be unloaded after use.
    Datapath ports keep a reference to the vport module during their
    lifetime.

    Allows to remove the error prone maintenance of the global list
    vport_ops_list.

    Signed-off-by: Thomas Graf
    Signed-off-by: David S. Miller

    Thomas Graf
     

16 Oct, 2014

1 commit


07 Oct, 2014

1 commit

  • Fix a sparse warning introduced by commit:
    f5796684069e0c71c65bce6a6d4766114aec1396 (openvswitch: Add support for
    Geneve tunneling.) caught by kbuild test robot:

    reproduce:
    # apt-get install sparse
    # git checkout f5796684069e0c71c65bce6a6d4766114aec1396
    # make ARCH=x86_64 allmodconfig
    # make C=1 CF=-D__CHECK_ENDIAN__
    #
    #
    # sparse warnings: (new ones prefixed by >>)
    #
    # >> net/openvswitch/vport-geneve.c:109:15: sparse: incorrect type in assignment (different base types)
    # net/openvswitch/vport-geneve.c:109:15: expected restricted __be16 [usertype] sport
    # net/openvswitch/vport-geneve.c:109:15: got int
    # >> net/openvswitch/vport-geneve.c:110:56: sparse: incorrect type in argument 3 (different base types)
    # net/openvswitch/vport-geneve.c:110:56: expected unsigned short [unsigned] [usertype] value
    # net/openvswitch/vport-geneve.c:110:56: got restricted __be16 [usertype] sport

    Reported-by: kbuild test robot
    Signed-off-by: Andy Zhou
    Signed-off-by: David S. Miller

    Andy Zhou
     

06 Oct, 2014

1 commit

  • The Openvswitch implementation is completely agnostic to the options
    that are in use and can handle newly defined options without
    further work. It does this by simply matching on a byte array
    of options and allowing userspace to setup flows on this array.

    Signed-off-by: Jesse Gross
    Singed-off-by: Ansis Atteka
    Signed-off-by: Andy Zhou
    Acked-by: Thomas Graf
    Acked-by: Pravin B Shelar
    Signed-off-by: David S. Miller

    Jesse Gross