}
 
 static void nsim_dev_psample_md_prepare(const struct nsim_dev_psample *psample,
-                                       struct psample_metadata *md)
+                                       struct psample_metadata *md,
+                                       unsigned int len)
 {
-       md->trunc_size = psample->trunc_size;
+       md->trunc_size = psample->trunc_size ? psample->trunc_size : len;
        md->in_ifindex = psample->in_ifindex;
        md->out_ifindex = psample->out_ifindex;
 
        if (!skb)
                goto out;
 
-       nsim_dev_psample_md_prepare(psample, &md);
+       nsim_dev_psample_md_prepare(psample, &md, skb->len);
        psample_sample_packet(psample->group, skb, psample->rate, &md);
        consume_skb(skb);