Hi, My name is Alessandro Rosetti, and I'm currently adding netmap support to ovs, following an approach similar to DPDK.
I've created a new netdev: netdev_netmap that uses the pmd infrastructure. The prototype I have seems to work fine (I still need to tune performance, test optional features, and test more complex topologies.) I have a question about the lifetime of dp_packets. Is there any guarantee that the dp_packets allocated in a receive callback (e.g. netdev_netmap_rxq_recv) are consumed by OVS (e.g. dropped, cloned, or sent to other ports) **before** a subsequent call to the receive callback (on the same port)? Or is it possible for dp_packets to be stored somewhere (e.g. in an OVS internal queue) and live across subsequent invocations of the receive callback that allocated them? I need to know if this is the case to check that my current prototype is safe. I use per-port pre-allocation of dp_packets, for maximum performance. I've seen that DPDK uses its internal allocator to allocate and deallocate dp_packets, but netmap does not expose one. Each packet received with netmap is created as a new type dp_packet: DPBUF_NETMAP. The data points to a netmap buffer (preallocated by the kernel). When I receive data (netdev_netmap_rxq_recv) I reuse the dp_packets, updating the internal pointer and a couple of additional informations stored inside the dp_packet. When I have to send data I use zero copy if dp_packet is DPBUF_NETMAP and copy if it's not. Thanks for the help! Alessandro. _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
