You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
1.5 KiB

openvswitch: provide in-tree kmod builds Open vSwitch 2.10 introduces meters support to the kernel datapath. In upstream Linux, the feature is only available since 4.15 This is mainly for make the newly introduced meter features in linux kernel datapath more easily available root@OpenWrt:/# ovs-ofctl -OOpenFlow13 meter-features br0 OFPST_METER_FEATURES reply (OF1.3) (xid=0x2): max_meter:4294967295 max_bands:1 max_color:0 band_types: drop capabilities: kbps pktps burst stats root@OpenWrt:/# Size comparison between in-tree and upstreamed modules are attached 2800 Sep 5 08:47 ipkg-mips_24kc/kmod-openvswitch-geneve-intree/lib/modules/4.14.67/vport-geneve.ko 2736 Sep 5 08:47 ipkg-mips_24kc/kmod-openvswitch-geneve/lib/modules/4.14.67/vport-geneve.ko 2596 Sep 5 08:47 ipkg-mips_24kc/kmod-openvswitch-gre-intree/lib/modules/4.14.67/vport-gre.ko 2536 Sep 5 08:47 ipkg-mips_24kc/kmod-openvswitch-gre/lib/modules/4.14.67/vport-gre.ko 288320 Sep 5 08:47 ipkg-mips_24kc/kmod-openvswitch-intree/lib/modules/4.14.67/openvswitch.ko 118984 Sep 5 08:47 ipkg-mips_24kc/kmod-openvswitch/lib/modules/4.14.67/openvswitch.ko 2792 Sep 5 08:47 ipkg-mips_24kc/kmod-openvswitch-lisp-intree/lib/modules/4.14.67/vport-lisp.ko 2788 Sep 5 08:47 ipkg-mips_24kc/kmod-openvswitch-stt-intree/lib/modules/4.14.67/vport-stt.ko 3668 Sep 5 08:47 ipkg-mips_24kc/kmod-openvswitch-vxlan-intree/lib/modules/4.14.67/vport-vxlan.ko 3400 Sep 5 08:47 ipkg-mips_24kc/kmod-openvswitch-vxlan/lib/modules/4.14.67/vport-vxlan.ko Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
6 years ago
  1. From 9f4775d9a2541e8128ea99f3b02925cc1ee05374 Mon Sep 17 00:00:00 2001
  2. From: Helmut Schaa <helmut.schaa@googlemail.com>
  3. Date: Wed, 8 Jan 2014 13:48:49 +0100
  4. Subject: [PATCH 101/107] netdev-linux: Let interface flag survive internal
  5. port setup
  6. Due to a race condition when bringing up an internal port on Linux
  7. some interface flags (e.g. IFF_MULTICAST) are falsely reset. This
  8. happens because netlink events may be processed after the according
  9. netdev has been brought up (which sets interface flags).
  10. Fix this by reading the interface flags just before updating them
  11. if they have not been updated by from the kernel yet.
  12. Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
  13. ---
  14. lib/netdev-linux.c | 8 +++++++-
  15. 1 file changed, 7 insertions(+), 1 deletion(-)
  16. diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c
  17. index 5ada9a21f..bb8275cfa 100644
  18. --- a/lib/netdev-linux.c
  19. +++ b/lib/netdev-linux.c
  20. @@ -3118,7 +3118,13 @@ update_flags(struct netdev_linux *netdev, enum netdev_flags off,
  21. unsigned int old_flags, new_flags;
  22. int error = 0;
  23. - old_flags = netdev->ifi_flags;
  24. + if (!(netdev->cache_valid & VALID_DRVINFO)) {
  25. + /* Most likely the debvice flags are not in sync yet, fetch them now */
  26. + get_flags(&netdev->up, &old_flags);
  27. + } else {
  28. + old_flags = netdev->ifi_flags;
  29. + }
  30. +
  31. *old_flagsp = iff_to_nd_flags(old_flags);
  32. new_flags = (old_flags & ~nd_to_iff_flags(off)) | nd_to_iff_flags(on);
  33. if (new_flags != old_flags) {