[dpdk-dev] [RFC v4] /net: memory interface (memif)
Ferruh Yigit
ferruh.yigit at intel.com
Wed Feb 27 18:04:44 CET 2019
On 2/20/2019 11:52 AM, Jakub Grajciar wrote:
> Memory interface (memif), provides high performance
> packet transfer over shared memory.
>
> Signed-off-by: Jakub Grajciar <jgrajcia at cisco.com>
> ---
> MAINTAINERS | 6 +
> config/common_base | 5 +
> config/common_linuxapp | 1 +
> doc/guides/nics/features/memif.ini | 14 +
> doc/guides/nics/index.rst | 1 +
> doc/guides/nics/memif.rst | 194 ++++
> drivers/net/Makefile | 1 +
> drivers/net/memif/Makefile | 28 +
> drivers/net/memif/memif.h | 178 +++
> drivers/net/memif/memif_socket.c | 1092 ++++++++++++++++++
> drivers/net/memif/memif_socket.h | 104 ++
> drivers/net/memif/meson.build | 13 +
> drivers/net/memif/rte_eth_memif.c | 1124 +++++++++++++++++++
> drivers/net/memif/rte_eth_memif.h | 203 ++++
> drivers/net/memif/rte_pmd_memif_version.map | 4 +
> drivers/net/meson.build | 1 +
> mk/rte.app.mk | 1 +
Can you please update release notes to document new PMD.
<...>
>
> requires patch: http://patchwork.dpdk.org/patch/49009/
Thanks for highlighting this dependency, can you please elaborate the relation
with interrupt and memif PMD?
<...>
> +Example: testpmd and testpmd
> +----------------------------
> +In this example we run two instances of testpmd application and transmit packets over memif.
> +
> +First create master interface::
> +
> + #./testpmd -l 0-1 --proc-type=primary --file-prefix=pmd1 --vdev=net_memif,role=master -- -i
> +
> +Now create slave interace (master must be already running so the slave will connect)::
s/interace/interface/
> +
> + #./testpmd -l 2-3 --proc-type=primary --file-prefix=pmd2 --vdev=net_memif -- -i
> +
> +Set forwarding mode in one of the instances to 'rx only' and the other to 'tx only'::
> +
> + testpmd> set fwd rxonly
> + testpmd> start
> +
> + testpmd> set fwd txonly
> + testpmd> start
Is shared mem used as a ring, with single producer, single consumer? Is there a
way to use memif PMD for both sending and receiving packets.
It is possible to create two ring PMDs in a single testpmd application, and loop
packets between them continuously via tx_first param [1], can same be done via
memif?
[1]
./build/app/testpmd -w 0:0.0 --vdev net_ring0 --vdev net_ring1 -- -i
testpmd> start tx_first
testpmd> show port stats all
######################## NIC statistics for port 0 ########################
RX-packets: 1365649088 RX-missed: 0 RX-bytes: 0
RX-errors: 0
RX-nombuf: 0
TX-packets: 1365649120 TX-errors: 0 TX-bytes: 0
.....
<...>
> +
> +CFLAGS += -O3
> +CFLAGS += $(WERROR_FLAGS)
> +CFLAGS += -DALLOW_EXPERIMENTAL_API
> +LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
Is rte_ring library used?
<...>
> @@ -0,0 +1,4 @@
> +EXPERIMENTAL {
> +
> + local: *;
> +};
Please use the version name instead of "EXPERIMENTAL" which is for experimental
APIs.
More information about the dev
mailing list