• Tom Barbette's avatar
    Take back changes for the PR for the mainline click for new Netmap integration · bbc1fe55
    Tom Barbette authored
    It supports zero-copy through buffer swapping with extra buffer allocated on startup. This more or less double the throughput.
    The output device also supports a "Full Push" mode, allowing you to build a Click pipeline only with push paths, as the output rings of modern NICs are most of the time enough to absorb transient traffic, allowing to avoid using very slow Queue() elments.
    Netmap Buffers are now organized in pool much like click pool through a completed implementation of Luigi Rizzo's NetmapBufQ. A shared Ring allows multiple thread-local NetmapBufQ to exchange batches of buffers.
    The amount of extra buffers allocated on startup is set using NetmapInfo, which is now a real element. NetmapBufQ and other methods are moved to a library in lib/netmapdevice.cc
    For all those new features, the Netmap integration becomes more different than the other FromDevice/ToDevice methods and this commits moves netmap integration to independent FromNetmapDevice and ToNetmapDevice. This matches the DPDK Integrations. Also, ToNetmapDevice is agnostic, and thereforce could not be kept with ToDevice which is pull-only, or ToDpdkDevice which is push-only.
    DPDK fake buffer destructor is removed to use the same empty_destructor than Netmap, which won't be called as it is known to be empty.
fromdevice.hh 6.87 KB