mirror of
https://github.com/openvswitch/ovs
synced 2025-08-30 22:05:19 +00:00
odp-util: Remove unnecessary TOS ECN bits rewrite for tunnels
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 <simon.horman@netronome.com>
This commit is contained in:
@@ -6962,6 +6962,11 @@ commit_set_ipv4_action(const struct flow *flow, struct flow *base_flow,
|
|||||||
mask.ipv4_proto = 0; /* Not writeable. */
|
mask.ipv4_proto = 0; /* Not writeable. */
|
||||||
mask.ipv4_frag = 0; /* Not writable. */
|
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,
|
if (commit(OVS_KEY_ATTR_IPV4, use_masked, &key, &base, &mask, sizeof key,
|
||||||
odp_actions)) {
|
odp_actions)) {
|
||||||
put_ipv4_key(&base, base_flow, false);
|
put_ipv4_key(&base, base_flow, false);
|
||||||
@@ -7012,6 +7017,11 @@ commit_set_ipv6_action(const struct flow *flow, struct flow *base_flow,
|
|||||||
mask.ipv6_proto = 0; /* Not writeable. */
|
mask.ipv6_proto = 0; /* Not writeable. */
|
||||||
mask.ipv6_frag = 0; /* Not writable. */
|
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,
|
if (commit(OVS_KEY_ATTR_IPV6, use_masked, &key, &base, &mask, sizeof key,
|
||||||
odp_actions)) {
|
odp_actions)) {
|
||||||
put_ipv6_key(&base, base_flow, false);
|
put_ipv6_key(&base, base_flow, false);
|
||||||
|
Reference in New Issue
Block a user