I would recommend to check if packet type is IPv4 before processing IPv4 header for DF flag. This patch can break logic and go to unknown state when mbuf will contain IPv6 packet. I believe that in case of IPv6 pkt the loop should be skipped to next mbuf, if exists.
Best regards, Jan