From: Justin Pettit Date: Tue, 25 Jun 2013 23:40:50 +0000 (-0700) Subject: tunnel: Only un-wildcard the ECN bits for IP traffic. X-Git-Tag: sliver-openvswitch-1.10.90-3~6^2~49 X-Git-Url: http://git.onelab.eu/?p=sliver-openvswitch.git;a=commitdiff_plain;h=abcd4402fec44a473a19cc790a9a3f00444a123f tunnel: Only un-wildcard the ECN bits for IP traffic. With tunnels carrying IP packets, ECN bits are always inherited by the encapsulating tunnel. However, it doesn't make sense to unwildcard the inner packet's TOS fields if the packet is not IP. Found by inspection. Signed-off-by: Justin Pettit --- diff --git a/ofproto/tunnel.c b/ofproto/tunnel.c index dedfca892..1a39aeac3 100644 --- a/ofproto/tunnel.c +++ b/ofproto/tunnel.c @@ -253,11 +253,14 @@ tnl_port_send(const struct tnl_port *tnl_port, struct flow *flow, wc->masks.nw_tos = 0xff; flow->tunnel.ip_tos = flow->nw_tos & IP_DSCP_MASK; } else { - /* ECN fields are always inherited. */ - wc->masks.nw_tos |= IP_ECN_MASK; flow->tunnel.ip_tos = cfg->tos; } + /* ECN fields are always inherited. */ + if (is_ip_any(flow)) { + wc->masks.nw_tos |= IP_ECN_MASK; + } + if ((flow->nw_tos & IP_ECN_MASK) == IP_ECN_CE) { flow->tunnel.ip_tos |= IP_ECN_ECT_0; } else {