dpif-netdev: Account for and free lost packets.
authorDaniele Di Proietto <diproiettod@vmware.com>
Fri, 27 Mar 2015 16:29:50 +0000 (16:29 +0000)
committerEthan Jackson <ethan@nicira.com>
Mon, 30 Mar 2015 20:17:41 +0000 (13:17 -0700)
Packets for which an upcall has failed (lost packets) must be deleted.
We also need to count them as MISS and LOST.

Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com>
Acked-by: Ethan Jackson <ethan@nicira.com>
lib/dpif-netdev.c

index f01fecb..6b61db4 100644 (file)
@@ -2941,6 +2941,8 @@ fast_path_processing(struct dp_netdev_pmd_thread *pmd,
                                      &ufid, DPIF_UC_MISS, NULL, &actions,
                                      &put_actions);
             if (OVS_UNLIKELY(error && error != ENOSPC)) {
+                dp_packet_delete(packets[i]);
+                dp_netdev_count_packet(pmd, DP_STAT_LOST, 1);
                 continue;
             }
 
@@ -2984,6 +2986,7 @@ fast_path_processing(struct dp_netdev_pmd_thread *pmd,
             }
         }
 
+        dp_netdev_count_packet(pmd, DP_STAT_MISS, dropped_cnt);
         dp_netdev_count_packet(pmd, DP_STAT_LOST, dropped_cnt);
     }