Skip to content

Commit

Permalink
odp-util: Remove unnecessary TOS ECN bits rewrite for tunnels
Browse files Browse the repository at this point in the history
For tunnels, TOS ECN bits are never wildcard for the reason that they
are always inherited. OVS will create a rewrite action if we add rule
to modify other IP headers. But it also adds an extra ECN rewrite for
the action because of this ECN un-wildcarding.

It seems no error because the ECN bits to be changed are same in this
case. But as rule can't be offloaded to hardware, the unnecssary ECN
rewrite should be removed.

Signed-off-by: Jianbo Liu <jianbol@mellanox.com>
Reviewed-by: Paul Blakey <paulb@mellanox.com>
Reviewed-by: Roi Dayan <roid@mellanox.com>
Signed-off-by: Simon Horman <horms@verge.net.au>
  • Loading branch information
jialiu02 authored and horms committed May 1, 2018
1 parent f75c3f2 commit fd5d8b0
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions lib/odp-util.c
Expand Up @@ -6960,6 +6960,11 @@ commit_set_ipv4_action(const struct flow *flow, struct flow *base_flow,
mask.ipv4_proto = 0; /* Not writeable. */
mask.ipv4_frag = 0; /* Not writable. */

if (flow_tnl_dst_is_set(&base_flow->tunnel) &&
((base_flow->nw_tos ^ flow->nw_tos) & IP_ECN_MASK) == 0) {
mask.ipv4_tos &= ~IP_ECN_MASK;
}

if (commit(OVS_KEY_ATTR_IPV4, use_masked, &key, &base, &mask, sizeof key,
odp_actions)) {
put_ipv4_key(&base, base_flow, false);
Expand Down Expand Up @@ -7010,6 +7015,11 @@ commit_set_ipv6_action(const struct flow *flow, struct flow *base_flow,
mask.ipv6_proto = 0; /* Not writeable. */
mask.ipv6_frag = 0; /* Not writable. */

if (flow_tnl_dst_is_set(&base_flow->tunnel) &&
((base_flow->nw_tos ^ flow->nw_tos) & IP_ECN_MASK) == 0) {
mask.ipv6_tclass &= ~IP_ECN_MASK;
}

if (commit(OVS_KEY_ATTR_IPV6, use_masked, &key, &base, &mask, sizeof key,
odp_actions)) {
put_ipv6_key(&base, base_flow, false);
Expand Down

0 comments on commit fd5d8b0

Please sign in to comment.