diff options
author | Aaron Conole <aconole@redhat.com> | 2022-04-29 13:40:33 -0400 |
---|---|---|
committer | Ilya Maximets <i.maximets@ovn.org> | 2022-05-25 21:22:14 +0200 |
commit | 74b415cf181fb404fd4eb604f486d7feeadcdba6 (patch) | |
tree | ad7b0222f8576e10b4ca9b16c78f3c1ca17bef48 | |
parent | f04952ce07a192a30b8c1787c3a0915024f728be (diff) | |
download | openvswitch-74b415cf181fb404fd4eb604f486d7feeadcdba6.tar.gz |
Revert "odp-util: Always report ODP_FIT_TOO_LITTLE for IGMP."
This reverts commit c645550bb249 ("odp-util: Always report
ODP_FIT_TOO_LITTLE for IGMP.")
Always forcing a slow path action can result in some over-broad
flows which swallow all traffic and force them to userspace, as reported
in the thread at
https://mail.openvswitch.org/pipermail/ovs-dev/2021-September/387706.html
and at
https://mail.openvswitch.org/pipermail/ovs-dev/2021-September/387689.html
Revert the ODP_FIT_TOO_LITTLE return for IGMP specifically.
Additionally, remove the userspace wc mask to prevent revalidator from
cycling flows.
Fixes: c645550bb249 ("odp-util: Always report ODP_FIT_TOO_LITTLE for IGMP.")
Signed-off-by: Aaron Conole <aconole@redhat.com>
Acked-by: Eelco Chaudron <echaudro@redhat.com>
Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
-rw-r--r-- | lib/odp-util.c | 5 | ||||
-rw-r--r-- | ofproto/ofproto-dpif-xlate.c | 1 |
2 files changed, 0 insertions, 6 deletions
diff --git a/lib/odp-util.c b/lib/odp-util.c index 102003fc8..4983ab114 100644 --- a/lib/odp-util.c +++ b/lib/odp-util.c @@ -7124,11 +7124,6 @@ parse_l2_5_onward(const struct nlattr *attrs[OVS_KEY_ATTR_MAX + 1], } } } - } else if (src_flow->nw_proto == IPPROTO_IGMP - && src_flow->dl_type == htons(ETH_TYPE_IP)) { - /* OVS userspace parses the IGMP type, code, and group, but its - * datapaths do not, so there is always missing information. */ - return ODP_FIT_TOO_LITTLE; } if (is_mask && expected_bit != OVS_KEY_ATTR_UNSPEC) { if ((flow->tp_src || flow->tp_dst) && flow->nw_proto != 0xff) { diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c index 6a6b28876..92b0a6079 100644 --- a/ofproto/ofproto-dpif-xlate.c +++ b/ofproto/ofproto-dpif-xlate.c @@ -3072,7 +3072,6 @@ xlate_normal(struct xlate_ctx *ctx) */ ctx->xout->slow |= SLOW_ACTION; - memset(&wc->masks.tp_src, 0xff, sizeof wc->masks.tp_src); if (mcast_snooping_is_membership(flow->tp_src) || mcast_snooping_is_query(flow->tp_src)) { if (ctx->xin->allow_side_effects && ctx->xin->packet) { |