dpif-netdev: Handle ECN bits when updating IP checksum.
authorJean Tourrilhes <jt@hpl.hp.com>
Thu, 9 Dec 2010 06:05:07 +0000 (22:05 -0800)
committerJesse Gross <jesse@nicira.com>
Thu, 9 Dec 2010 06:05:07 +0000 (22:05 -0800)
When recalculating the checksum after a set ToS action, we were
not taking into account the ECN bits copied from the original header.

lib/dpif-netdev.c

index eddd18bef0a4da88123724073017d77eb309c6bd..3fa681c9dba97ff10502e11024aaa36d1fccb13c 100644 (file)
@@ -1089,7 +1089,7 @@ dp_netdev_set_nw_tos(struct ofpbuf *packet, struct flow *key,
         uint8_t new = a->nw_tos | (nh->ip_tos & IP_ECN_MASK);
 
         nh->ip_csum = recalc_csum16(nh->ip_csum, htons((uint16_t)*field),
-                htons((uint16_t)a->nw_tos));
+                htons((uint16_t) new));
         *field = new;
     }
 }