In dp_netdev_input() we nevered fully covered the case where handler queues are not there. With this change we increment the stat counter and free the packet.
Signed-off-by: Daniele Di Proietto <ddiproie...@vmware.com> --- I can move this logic into dp_netdev_output_userspace(), if you guys think that's more appropriate. --- lib/dpif-netdev.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index 4dcc268..e814645 100644 --- a/lib/dpif-netdev.c +++ b/lib/dpif-netdev.c @@ -2094,12 +2094,20 @@ dp_netdev_input(struct dp_netdev *dp, struct dpif_packet **packets, int cnt, packet_batch_init(&batch, netdev_flow, packets[i], md, &key.flow); } - } else if (dp->handler_queues) { + } else { + /* Packet's flow not in datapath */ dp_netdev_count_packet(dp, DP_STAT_MISS, 1); - dp_netdev_output_userspace(dp, &buf, 1, - miniflow_hash_5tuple(&key.flow, 0) - % dp->n_handlers, - DPIF_UC_MISS, &key.flow, NULL); + + if (dp->handler_queues) { + /* Upcall */ + dp_netdev_output_userspace(dp, &buf, 1, + miniflow_hash_5tuple(&key.flow, 0) + % dp->n_handlers, + DPIF_UC_MISS, &key.flow, NULL); + } else { + /* No upcall queue. Freeing the packet */ + dpif_packet_delete(packets[i]); + } } } -- 2.0.0 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev