From b7d81fb4471c3fb3ede9f235ba0faff9b984e5b9 Mon Sep 17 00:00:00 2001 From: Open vSwitch CI Date: Apr 06 2022 20:16:03 +0000 Subject: Import openvswitch2.13-2.13.0-173 from Fast DataPath --- diff --git a/SOURCES/openvswitch-2.13.0.patch b/SOURCES/openvswitch-2.13.0.patch index bd33308..da3233c 100644 --- a/SOURCES/openvswitch-2.13.0.patch +++ b/SOURCES/openvswitch-2.13.0.patch @@ -84629,7 +84629,7 @@ index f8c46bbaad..b42d314b65 100644 static int diff --git a/lib/netdev-offload-tc.c b/lib/netdev-offload-tc.c -index 550e440b3a..6c89c70aba 100644 +index 550e440b3a..474f54c52e 100644 --- a/lib/netdev-offload-tc.c +++ b/lib/netdev-offload-tc.c @@ -48,6 +48,7 @@ static struct hmap ufid_to_tc = HMAP_INITIALIZER(&ufid_to_tc); @@ -84756,7 +84756,7 @@ index 550e440b3a..6c89c70aba 100644 return 0; } -@@ -1352,6 +1359,66 @@ flower_match_to_tun_opt(struct tc_flower *flower, const struct flow_tnl *tnl, +@@ -1352,6 +1359,72 @@ flower_match_to_tun_opt(struct tc_flower *flower, const struct flow_tnl *tnl, flower->mask.tunnel.metadata.present.len = tnl->metadata.present.len; } @@ -84799,6 +84799,12 @@ index 550e440b3a..6c89c70aba 100644 + flower->key.ct_state &= ~(TCA_FLOWER_KEY_CT_FLAGS_NEW); + flower->mask.ct_state &= ~(TCA_FLOWER_KEY_CT_FLAGS_NEW); + } ++ ++ if (flower->key.ct_state && ++ !(flower->key.ct_state & TCA_FLOWER_KEY_CT_FLAGS_TRACKED)) { ++ flower->key.ct_state |= TCA_FLOWER_KEY_CT_FLAGS_TRACKED; ++ flower->mask.ct_state |= TCA_FLOWER_KEY_CT_FLAGS_TRACKED; ++ } + } + + if (mask->ct_zone) { @@ -84823,7 +84829,7 @@ index 550e440b3a..6c89c70aba 100644 static int netdev_tc_flow_put(struct netdev *netdev, struct match *match, struct nlattr *actions, size_t actions_len, -@@ -1572,53 +1639,7 @@ netdev_tc_flow_put(struct netdev *netdev, struct match *match, +@@ -1572,53 +1645,7 @@ netdev_tc_flow_put(struct netdev *netdev, struct match *match, } } @@ -84878,7 +84884,7 @@ index 550e440b3a..6c89c70aba 100644 /* ignore exact match on skb_mark of 0. */ if (mask->pkt_mark == UINT32_MAX && !key->pkt_mark) { -@@ -1644,7 +1665,25 @@ netdev_tc_flow_put(struct netdev *netdev, struct match *match, +@@ -1644,7 +1671,25 @@ netdev_tc_flow_put(struct netdev *netdev, struct match *match, VLOG_DBG_RL(&rl, "Can't find netdev for output port %d", port); return ENODEV; } @@ -84904,7 +84910,7 @@ index 550e440b3a..6c89c70aba 100644 action->out.ingress = is_internal_port(netdev_get_type(outdev)); action->type = TC_ACT_OUTPUT; flower.action_count++; -@@ -1699,6 +1738,10 @@ netdev_tc_flow_put(struct netdev *netdev, struct match *match, +@@ -1699,6 +1744,10 @@ netdev_tc_flow_put(struct netdev *netdev, struct match *match, const struct nlattr *ct = nl_attr_get(nla); const size_t ct_len = nl_attr_get_size(nla); @@ -84915,7 +84921,7 @@ index 550e440b3a..6c89c70aba 100644 err = parse_put_flow_ct_action(&flower, action, ct, ct_len); if (err) { return err; -@@ -1727,7 +1770,7 @@ netdev_tc_flow_put(struct netdev *netdev, struct match *match, +@@ -1727,7 +1776,7 @@ netdev_tc_flow_put(struct netdev *netdev, struct match *match, if (get_ufid_tc_mapping(ufid, &id) == 0) { VLOG_DBG_RL(&rl, "updating old handle: %d prio: %d", id.handle, id.prio); @@ -84924,7 +84930,7 @@ index 550e440b3a..6c89c70aba 100644 } prio = get_prio_for_tc_flower(&flower); -@@ -1810,9 +1853,7 @@ netdev_tc_flow_del(struct netdev *netdev OVS_UNUSED, +@@ -1810,9 +1859,7 @@ netdev_tc_flow_del(struct netdev *netdev OVS_UNUSED, if (stats) { memset(stats, 0, sizeof *stats); if (!tc_get_flower(&id, &flower)) { @@ -84935,7 +84941,7 @@ index 550e440b3a..6c89c70aba 100644 } } -@@ -1837,6 +1878,7 @@ probe_multi_mask_per_prio(int ifindex) +@@ -1837,6 +1884,7 @@ probe_multi_mask_per_prio(int ifindex) memset(&flower, 0, sizeof flower); @@ -84943,7 +84949,7 @@ index 550e440b3a..6c89c70aba 100644 flower.key.eth_type = htons(ETH_P_IP); flower.mask.eth_type = OVS_BE16_MAX; memset(&flower.key.dst_mac, 0x11, sizeof flower.key.dst_mac); -@@ -1868,6 +1910,96 @@ out: +@@ -1868,6 +1916,96 @@ out: tc_add_del_qdisc(ifindex, false, block_id, TC_INGRESS); } @@ -85040,7 +85046,7 @@ index 550e440b3a..6c89c70aba 100644 static void probe_tc_block_support(int ifindex) { -@@ -1884,6 +2016,7 @@ probe_tc_block_support(int ifindex) +@@ -1884,6 +2022,7 @@ probe_tc_block_support(int ifindex) memset(&flower, 0, sizeof flower); @@ -85048,7 +85054,7 @@ index 550e440b3a..6c89c70aba 100644 flower.key.eth_type = htons(ETH_P_IP); flower.mask.eth_type = OVS_BE16_MAX; memset(&flower.key.dst_mac, 0x11, sizeof flower.key.dst_mac); -@@ -1907,6 +2040,7 @@ netdev_tc_init_flow_api(struct netdev *netdev) +@@ -1907,6 +2046,7 @@ netdev_tc_init_flow_api(struct netdev *netdev) static struct ovsthread_once block_once = OVSTHREAD_ONCE_INITIALIZER; enum tc_qdisc_hook hook = get_tc_qdisc_hook(netdev); uint32_t block_id = 0; @@ -85056,7 +85062,7 @@ index 550e440b3a..6c89c70aba 100644 int ifindex; int error; -@@ -1917,20 +2051,30 @@ netdev_tc_init_flow_api(struct netdev *netdev) +@@ -1917,20 +2057,30 @@ netdev_tc_init_flow_api(struct netdev *netdev) return -ifindex; } diff --git a/SPECS/openvswitch2.13.spec b/SPECS/openvswitch2.13.spec index e680a2c..1b39335 100644 --- a/SPECS/openvswitch2.13.spec +++ b/SPECS/openvswitch2.13.spec @@ -59,7 +59,7 @@ Summary: Open vSwitch Group: System Environment/Daemons daemon/database/utilities URL: http://www.openvswitch.org/ Version: 2.13.0 -Release: 172%{?commit0:.%{date}git%{shortcommit0}}%{?commit1:dpdk%{shortcommit1}}%{?dist} +Release: 173%{?commit0:.%{date}git%{shortcommit0}}%{?commit1:dpdk%{shortcommit1}}%{?dist} # Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the # lib/sflow*.[ch] files are SISSL @@ -715,6 +715,12 @@ exit 0 %endif %changelog +* Wed Apr 06 2022 Open vSwitch CI - 2.13.0-173 +- Merging upstream branch-2.13 [RH git: 25feb85087] + Commit list: + 3f6beb3d50 netdev-offload-tc: Check for ct_state flag combinations that are not offloadable. + + * Tue Apr 05 2022 Open vSwitch CI - 2.13.0-172 - Merging upstream branch-2.13 [RH git: c9fd039a8d] Commit list: