diff --git a/scapy/packet.py b/scapy/packet.py
index 6e5b9680b8aa94a600405d995451c17836c334cd..1c530ba43332007d21f12dc0b9083d46fbd61ad6 100644
--- a/scapy/packet.py
+++ b/scapy/packet.py
@@ -345,6 +345,8 @@ class Packet(BasePacket):
         pl = []
         q=""
         for f in self.fields_desc:
+            if isinstance(f, ConditionalField) and not f._evalcond(self):
+                continue
             p = f.addfield(self, p, self.getfieldval(f.name) )
             if type(p) is str:
                 r = p[len(q):]